Sha256: 49981457c7445c35e63d219060f7ed37e74725249e8589fb35903bcda62026b5

Contents?: true

Size: 1.82 KB

Versions: 10

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true
module Decidim
  module Comments
    # A helper to expose the comments component for a commentable
    module CommentsHelper
      # Render commentable comments inside the `expanded` template content.
      #
      # resource - A commentable resource
      def comments_for(resource)
        return unless resource.commentable?
        content_for :expanded do
          inline_comments_for(resource)
        end
      end

      # Creates a Comments component which is rendered using `ReactDOM`
      #
      # resource - A commentable resource
      #
      # Returns a div which contain a RectComponent
      def inline_comments_for(resource)
        return unless resource.commentable?
        commentable_type = resource.commentable_type
        commentable_id = resource.id.to_s
        node_id = "comments-for-#{commentable_type.demodulize}-#{commentable_id}"
        react_comments_component(node_id, commentableType: commentable_type,
                                          commentableId: commentable_id,
                                          locale: I18n.locale)
      end

      # Private: Render Comments component using inline javascript
      #
      # node_id - The id of the DOMElement to render the React component
      # props   - A hash corresponding to Comments component props
      def react_comments_component(node_id, props)
        content_tag("div", "", id: node_id) +
          javascript_include_tag("decidim/comments/comments") +
          javascript_tag(%{
            window.DecidimComments.renderCommentsComponent(
              '#{node_id}',
              {
                commentableType: "#{props[:commentableType]}",
                commentableId: "#{props[:commentableId]}",
                locale: "#{props[:locale]}"
              }
            );
          })
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
decidim-comments-0.1.0 lib/decidim/comments/comments_helper.rb
decidim-0.1.0 decidim-comments/lib/decidim/comments/comments_helper.rb
decidim-comments-0.0.8.1 lib/decidim/comments/comments_helper.rb
decidim-0.0.8.1 decidim-comments/lib/decidim/comments/comments_helper.rb
decidim-comments-0.0.7 lib/decidim/comments/comments_helper.rb
decidim-0.0.7 decidim-comments/lib/decidim/comments/comments_helper.rb
decidim-comments-0.0.6 lib/decidim/comments/comments_helper.rb
decidim-0.0.6 decidim-comments/lib/decidim/comments/comments_helper.rb
decidim-comments-0.0.5 lib/decidim/comments/comments_helper.rb
decidim-0.0.5 decidim-comments/lib/decidim/comments/comments_helper.rb