Class: RivetCms::ContentManagerController

Inherits:
ApplicationController show all
Includes:
InertiaProps
Defined in:
app/controllers/rivet_cms/content_manager_controller.rb

Instance Method Summary collapse

Instance Method Details

#indexObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/controllers/rivet_cms/content_manager_controller.rb', line 7

def index
  content_types = Current.organization.content_types.order(:name)
  documents = Document.where(organization: Current.organization).in_visible_types.order(updated_at: :desc)
  if params[:type].present?
    documents = documents.joins(:content_type).where(rivet_cms_content_types: { slug: params[:type] })
  end
  documents = documents.search(params[:q]) if params[:q].present?
  page = documents.includes(:draft_revision, :content_type).page(params[:page]).per(25)
  visible = permitted_documents(page)
  titles = document_titles(visible)

  render inertia: "ContentManager/Index", props: {
    content_types: permitted(content_types, :read, :content).map { |content_type| content_type_ref_props(content_type) },
    documents: visible.map { |document|
      document_list_props(document, titles).merge(
        content_type_name: document.content_type.name,
        content_type_slug: document.content_type.slug
      )
    },
    q: params[:q].presence,
    type: params[:type].presence,
    pagination: { page: page.current_page, total_pages: page.total_pages }
  }
end