Sha256: 217ebad011fb81aa5d81117787d013f1c30c5286f754d64215b5874d7e601b77

Contents?: true

Size: 1.66 KB

Versions: 17

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module Decidim
  # A presenter to render attributes for resources
  class ResourcePresenter < SimpleDelegator
    include Decidim::TranslatableAttributes
    include Decidim::SanitizeHelper

    def title(resource_title, links, html_escape, all_locales, extras: true)
      handle_locales(resource_title, all_locales) do |content|
        content = decidim_html_escape(content) if html_escape

        renderer = Decidim::ContentRenderers::HashtagRenderer.new(content)
        renderer.render(links:, extras:).html_safe
      end
    end

    def handle_locales(content, all_locales, &block)
      if all_locales
        content.each_with_object({}) do |(key, value), parsed_content|
          parsed_content[key] = if key == "machine_translations"
                                  handle_locales(value, all_locales, &block)
                                else
                                  block.call(value)
                                end
        end
      else
        yield(translated_attribute(content))
      end
    end

    # Prepares the HTML content for the editors with the correct tags included
    # to identify the hashtags and mentions.
    def editor_locales(data, all_locales, extras: true)
      handle_locales(data, all_locales) do |content|
        [
          Decidim::ContentRenderers::HashtagRenderer,
          Decidim::ContentRenderers::UserRenderer,
          Decidim::ContentRenderers::UserGroupRenderer
        ].each do |renderer_class|
          renderer = renderer_class.new(content)
          content = renderer.render(links: false, editor: true, extras:).html_safe
        end

        content
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 app/presenters/decidim/resource_presenter.rb
decidim-core-0.30.0.rc1 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.2 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.5 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.1 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.4 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.0 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.3 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.0.rc4 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.0.rc3 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.0.rc2 app/presenters/decidim/resource_presenter.rb
decidim-core-0.29.0.rc1 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.2 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.1 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.0 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.0.rc5 app/presenters/decidim/resource_presenter.rb
decidim-core-0.28.0.rc4 app/presenters/decidim/resource_presenter.rb