Sha256: 233642e9aa87d5418cebf5a6bb7a4a39dd11c0bb3c89c3bb0991443027ebbb1c

Contents?: true

Size: 1.47 KB

Versions: 8

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

module Decidim
  module Debates
    # This class holds a Form to create/update debates from Decidim's public views.
    class DebateForm < Decidim::Form
      include TranslatableAttributes

      attribute :title, String
      attribute :description, String
      attribute :category_id, Integer
      attribute :user_group_id, Integer
      attribute :debate, Debate

      validates :title, presence: true
      validates :description, presence: true
      validates :category, presence: true, if: ->(form) { form.category_id.present? }
      validate :editable_by_user

      def map_model(debate)
        super
        self.debate = debate

        # Debates can be translated in different languages from the admin but
        # the public form doesn't allow it. When a user creates a debate the
        # user locale is taken as the text locale.
        self.title = debate.title.values.first
        self.description = debate.description.values.first
        self.user_group_id = debate.decidim_user_group_id

        if debate.category.present?
          self.category_id = debate.category.id
          @category = debate.category
        end
      end

      def category
        @category ||= current_component.categories.find_by(id: category_id)
      end

      private

      def editable_by_user
        return unless debate.respond_to?(:editable_by?)

        errors.add(:debate, :invalid) unless debate.editable_by?(current_user)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-debates-0.23.6 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.5 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.4 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.3 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.2 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.1 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.1.rc1 app/forms/decidim/debates/debate_form.rb
decidim-debates-0.23.0 app/forms/decidim/debates/debate_form.rb