diff --git a/app/controllers/api/v1/accounts/articles_controller.rb b/app/controllers/api/v1/accounts/articles_controller.rb index f1689d918..cc0976375 100644 --- a/app/controllers/api/v1/accounts/articles_controller.rb +++ b/app/controllers/api/v1/accounts/articles_controller.rb @@ -1,14 +1,19 @@ class Api::V1::Accounts::ArticlesController < Api::V1::Accounts::BaseController before_action :portal before_action :check_authorization - before_action :fetch_article, except: [:index, :create, :attach_file] + before_action :fetch_article, except: [:index, :create, :attach_file, :reorder] before_action :set_current_page, only: [:index] def index @portal_articles = @portal.articles @all_articles = @portal_articles.search(list_params) @articles_count = @all_articles.count - @articles = @all_articles.order_by_updated_at.page(@current_page) + + @articles = if list_params[:category_slug].present? + @all_articles.order_by_position.page(@current_page).per(50) + else + @all_articles.order_by_updated_at.page(@current_page) + end end def create @@ -43,6 +48,11 @@ class Api::V1::Accounts::ArticlesController < Api::V1::Accounts::BaseController render json: { file_url: url_for(file_blob) } end + def reorder + Article.update_positions(params[:positions_hash]) + head :ok + end + private def fetch_article diff --git a/app/javascript/dashboard/api/helpCenter/articles.js b/app/javascript/dashboard/api/helpCenter/articles.js index bcbb4dc5b..5423b1de2 100644 --- a/app/javascript/dashboard/api/helpCenter/articles.js +++ b/app/javascript/dashboard/api/helpCenter/articles.js @@ -60,6 +60,13 @@ class ArticlesAPI extends PortalsAPI { } ); } + + reorderArticles({ portalSlug, reorderedGroup, categorySlug }) { + return axios.post(`${this.url}/${portalSlug}/articles/reorder`, { + positions_hash: reorderedGroup, + category_slug: categorySlug, + }); + } } export default new ArticlesAPI(); diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleItem.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleItem.vue index 00dba9eb8..e6851bb60 100644 --- a/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleItem.vue +++ b/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleItem.vue @@ -1,21 +1,20 @@ diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleTable.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleTable.vue index 515570195..11e916844 100644 --- a/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleTable.vue +++ b/app/javascript/dashboard/routes/dashboard/helpcenter/components/ArticleTable.vue @@ -1,32 +1,48 @@