Class: Decidim::Comments::CommentsController
- Inherits:
-
ApplicationController
- Object
- DecidimController
- ApplicationController
- ApplicationController
- Decidim::Comments::CommentsController
- Includes:
- ResourceHelper, SkipTimeoutable
- Defined in:
- decidim-comments/app/controllers/decidim/comments/comments_controller.rb
Overview
Controller that manages the comments for a commentable object.
Instance Method Summary collapse
Methods included from ResourceHelper
#linked_classes_filter_values_for, #linked_classes_for, #resource_locator
Methods inherited from ApplicationController
Methods inherited from ApplicationController
Methods included from UserBlockedChecker
#check_user_block_status, #check_user_not_blocked
Methods included from NeedsSnippets
Methods included from Headers::HttpCachingDisabler
Methods included from HasStoredPath
#skip_store_location?, #store_current_location
Methods included from TranslatableAttributes
Methods included from RegistersPermissions
Methods included from NeedsOrganization
enhance_controller, extended, included
Instance Method Details
#create ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'decidim-comments/app/controllers/decidim/comments/comments_controller.rb', line 75 def create (:create, :comment, commentable:) form = Decidim::Comments::CommentForm.from_params( params.merge(commentable:) ).with_context( current_organization:, current_component:, current_user: ) Decidim::Comments::CreateComment.call(form) do on(:ok) do |comment| handle_success(comment) respond_to do |format| format.js { render :create } end end on(:invalid) do @error = t("create.error", scope: "decidim.comments.comments") respond_to do |format| format.js { render :error } end end end end |
#current_component ⇒ Object
102 103 104 105 106 |
# File 'decidim-comments/app/controllers/decidim/comments/comments_controller.rb', line 102 def current_component return commentable.component if commentable.respond_to?(:component) return commentable.participatory_space if commentable.respond_to?(:participatory_space) return commentable if Decidim.participatory_space_manifests.find { |manifest| manifest.model_class_name == commentable.class.name } end |
#destroy ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'decidim-comments/app/controllers/decidim/comments/comments_controller.rb', line 108 def destroy set_comment @commentable = @comment.commentable (:destroy, :comment, comment:) Decidim::Comments::DeleteComment.call(comment, current_user) do on(:ok) do @comments_count = @comment.root_commentable.comments_count respond_to do |format| format.js { render :delete } end end on(:invalid) do respond_to do |format| format.js { render :deletion_error } end end end end |
#index ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'decidim-comments/app/controllers/decidim/comments/comments_controller.rb', line 18 def index (:read, :comment, commentable:) @comments = SortedComments.for( commentable, order_by: order, after: params.fetch(:after, 0).to_i ) @comments = @comments.reject do |comment| next if comment.depth < 1 next if !comment.deleted? && !comment.hidden? comment.commentable.descendants.where(decidim_commentable_type: "Decidim::Comments::Comment").not_hidden.not_deleted.blank? end @comments_count = commentable.comments_count respond_to do |format| format.js do if reload? render :reload else render :index end end # This makes sure bots are not causing unnecessary log entries. format.html { redirect_to commentable_path } end end |
#update ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'decidim-comments/app/controllers/decidim/comments/comments_controller.rb', line 48 def update set_comment set_commentable (:update, :comment, comment:) form = Decidim::Comments::CommentForm.from_params( params.merge(commentable: comment.commentable) ).with_context( current_user:, current_organization: ) Decidim::Comments::UpdateComment.call(comment, form) do on(:ok) do respond_to do |format| format.js { render :update } end end on(:invalid) do respond_to do |format| format.js { render :update_error } end end end end |