Sha256: 94a723f1fdc6ec0fcf79e6ce6ca3e282b7032cd78cd97d67af7ad1ca24742497

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

module Decidim
  module ReportingProposals
    # Exposes the proposal resource so users can view and create them.
    module NeedsProposalExtraValidationsSnippets
      extend ActiveSupport::Concern

      included do
        helper_method :snippets
      end

      def snippets
        @snippets ||= Decidim::Snippets.new

        unless @snippets.any?(:reporting_proposals_js_validations)
          @snippets.add(:reporting_proposals_js_validations, rules_tag)
          @snippets.add(:foot, @snippets.for(:reporting_proposals_js_validations))
        end
        @snippets
      end

      def rules_tag
        content_tag(:script, "Decidim.ProposalRules = #{rules.to_json};".html_safe)
      end

      # caps rules are not explicitly used in the JS validations
      def rules
        model = Decidim::Proposals::Proposal.new(title: "title", body: "body")
        etiquette_validator = EtiquetteValidator.new(attributes: [:title, :body])
        etiquette_validator.validate(model)
        {
          genericError: I18n.t("decidim.forms.errors.error"),
          title: {
            caps: {
              enabled: model.errors.details[:title].to_s.include?(":must_start_with_caps"),
              error: I18n.t("errors.messages.must_start_with_caps")
            }
          },
          body: {
            caps: {
              enabled: model.errors.details[:body].to_s.include?(":must_start_with_caps"),
              error: I18n.t("errors.messages.must_start_with_caps")
            }
          }
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-reporting_proposals-0.6.0 app/controllers/concerns/decidim/reporting_proposals/needs_proposal_extra_validations_snippets.rb