diff --git a/app/components/document_doctrine_index_component.rb b/app/components/document_doctrine_index_component.rb index d5a8693..94bb04a 100644 --- a/app/components/document_doctrine_index_component.rb +++ b/app/components/document_doctrine_index_component.rb @@ -1,9 +1,10 @@ class DocumentDoctrineIndexComponent < BaseComponent with_collection_parameter :doctrine - attr_reader :doctrine + attr_reader :doctrine, :opts - def initialize(doctrine:, current_user:) + def initialize(doctrine:, current_user:, opts: {}) @doctrine = doctrine + @opts = opts end delegate :id, to: :doctrine diff --git a/app/components/sidenav_component/sidenav_component.html.erb b/app/components/sidenav_component/sidenav_component.html.erb index 9d6ce0f..f70c7e2 100644 --- a/app/components/sidenav_component/sidenav_component.html.erb +++ b/app/components/sidenav_component/sidenav_component.html.erb @@ -20,7 +20,7 @@ - <%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { main_sub_menu: "mainDoctrinesSubMenu", second_sub_menu: "secondDoctrinesSubMenu", third_sub_menu: "thirdDoctrinesSubMenu", fourth_sub_menu: "fourthDoctrinesSubMenu", fifth_sub_menu: "fifthDoctrinesSubMenu" })) %> + <%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { is_doctrines_index: true, main_sub_menu: "mainDoctrinesSubMenu", second_sub_menu: "secondDoctrinesSubMenu", third_sub_menu: "thirdDoctrinesSubMenu", fourth_sub_menu: "fourthDoctrinesSubMenu", fifth_sub_menu: "fifthDoctrinesSubMenu" })) %>
<%= link_to "Desicions", decisions_path, class: "accordion-link text-decoration-none text-dark" %>
diff --git a/app/components/subjects_sidenav_sub_menu_component.rb b/app/components/subjects_sidenav_sub_menu_component.rb index 264876c..ccde43a 100644 --- a/app/components/subjects_sidenav_sub_menu_component.rb +++ b/app/components/subjects_sidenav_sub_menu_component.rb @@ -4,4 +4,8 @@ class SubjectsSidenavSubMenuComponent < BaseComponent def initialize(current_user:, opts:) @opts = opts end + + def doctrines_search_url(subject_id) + doctrines_path(subject_ids: [subject_id]) + end end diff --git a/app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb b/app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb index a17ccd5..e9fc748 100644 --- a/app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb +++ b/app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb @@ -64,7 +64,7 @@ <% sub3.children.each do |sub4| %>
- <%= link_to sub4.name, search_documents_path(subject_ids: sub4.id), class: "accordion-link text-decoration-none text-dark" %> + <%= link_to sub4.name, doctrines_path(subject_ids: [sub4.id]), class: "accordion-link text-decoration-none text-dark" %>
<% end if sub3.children.present? %> diff --git a/app/controllers/doctrines_controller.rb b/app/controllers/doctrines_controller.rb new file mode 100644 index 0000000..7dceeba --- /dev/null +++ b/app/controllers/doctrines_controller.rb @@ -0,0 +1,29 @@ +class DoctrinesController < ApplicationController + load_and_authorize_resource :doctrine, class: "Doctrine" + + def index + @search = search_doctrines(search_params) + @doctrines = @search.results + + respond_to do |format| + format.html + end + end + + def show; end + + private + def search_doctrines(args) + Doctrine.search do + if args[:subject_ids].present? + with(:subject_ids).any_of(args[:subject_ids].map(&:to_i)) + end + + paginate page: args[:page] || 1, per_page: args[:per_page] || 100 + end + end + + def search_params + params.permit(subject_ids: []) + end +end \ No newline at end of file diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb index 181ced2..eb61399 100644 --- a/app/controllers/documents_controller.rb +++ b/app/controllers/documents_controller.rb @@ -17,7 +17,7 @@ class DocumentsController < ApplicationController @doctrines = @document.doctrines where = { enabled: true, state: "published" } - @cited_in_documents = @document.class.citing_docs_of(document, where) + @cited_in_documents = @document.class.citing_docs_of(@document, where) # @cross_ref_documents = @document.class.cited_docs_of(document, where) end diff --git a/app/models/doctrine.rb b/app/models/doctrine.rb index 3b7a7c0..9aab78c 100644 --- a/app/models/doctrine.rb +++ b/app/models/doctrine.rb @@ -40,4 +40,11 @@ class Doctrine < ApplicationRecord subject_ids end + + searchable do + integer :document_id + integer :subject_ids, multiple: true + + text :content + end end diff --git a/app/views/doctrines/index.html.erb b/app/views/doctrines/index.html.erb new file mode 100644 index 0000000..7cd73ed --- /dev/null +++ b/app/views/doctrines/index.html.erb @@ -0,0 +1,3 @@ +
+ <%= render(DocumentDoctrineIndexComponent.with_collection(@doctrines, current_user: current_user, opts: { is_index: true })) %> +
diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb index d8f7083..dbb3fc3 100644 --- a/app/views/documents/show.html.erb +++ b/app/views/documents/show.html.erb @@ -53,7 +53,9 @@
- Full Text +
+ <%= raw @document.content.html_safe%> +
diff --git a/config/routes.rb b/config/routes.rb index f419e0e..9e4e5c4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ Rails.application.routes.draw do root to: "home#index" - resources :doctrines, only: [] do + resources :doctrines, only: %i[index] do scope module: :doctrine do resources :annotations, only: %i[create update destroy] end