Sha256: 965bde555baa9eccfa5e8f4b9f392dc72828ed73d4a8627aac50f649341318d2

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module Decidim
  module ResourceLocatorPresenterOverride
    extend ActiveSupport::Concern

    included do
      # Generates and admin url only if the manifest has the property :admin_route_name defined
      # this allows to distinct from resources that can be administrated from those that are not
      def admin_url(options = {})
        admin_member_route("url", options.merge(host: root_resource.organization.host))
      end

      private

      def admin_member_route(route_type, options)
        return if manifest_for(target).admin_route_name.blank?

        options.merge!(options_for_polymorphic)
        admin_route_proxy.send("#{admin_member_route_name}_#{route_type}", target, options)
      end

      def admin_member_route_name
        if polymorphic?
          admin_polymorphic_member_route_name
        else
          manifest_for(target).admin_route_name
        end
      end

      def admin_polymorphic_member_route_name
        return unless polymorphic?

        resource.map { |record| manifest_for(record).admin_route_name }.join("_")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-reporting_proposals-0.5.2 app/presenters/concerns/decidim/resource_locator_presenter_override.rb
decidim-reporting_proposals-0.5.1 app/presenters/concerns/decidim/resource_locator_presenter_override.rb
decidim-reporting_proposals-0.5.0 app/presenters/concerns/decidim/resource_locator_presenter_override.rb
decidim-reporting_proposals-0.4.2 app/presenters/concerns/decidim/resource_locator_presenter_override.rb