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" })) %>
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| %>
<% 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