Class: Decidim::Comments::CommentsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- Decidim::Comments::CommentsController
- Includes:
- ResourceHelper, SkipTimeoutable
- Defined in:
- app/controllers/decidim/comments/comments_controller.rb
Overview
Controller that manages the comments for a commentable object.
Instance Method Summary collapse
Methods inherited from ApplicationController
Instance Method Details
#create ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/controllers/decidim/comments/comments_controller.rb', line 73 def create :create, :comment, commentable: commentable form = Decidim::Comments::CommentForm.from_params( params.merge(commentable: commentable) ).with_context( current_organization: current_organization, current_component: current_component ) Decidim::Comments::CreateComment.call(form, current_user) 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
99 100 101 102 103 |
# File 'app/controllers/decidim/comments/comments_controller.rb', line 99 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
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'app/controllers/decidim/comments/comments_controller.rb', line 105 def destroy set_comment @commentable = @comment.commentable :destroy, :comment, 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 'app/controllers/decidim/comments/comments_controller.rb', line 18 def index :read, :comment, commentable: 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 |
# File 'app/controllers/decidim/comments/comments_controller.rb', line 48 def update set_comment :update, :comment, comment: comment form = Decidim::Comments::CommentForm.from_params( params.merge(commentable: comment.commentable) ).with_context( current_organization: current_organization ) Decidim::Comments::UpdateComment.call(comment, current_user, 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 |