Sha256: 32e8bc98a67d884e9b6a55ae6dddca58d767f1359d0413e5d1c93dd18b9f3fa9

Contents?: true

Size: 1.74 KB

Versions: 12

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true

module Decidim
  module TermCustomizer
    module Admin
      class TranslationSetSubjectForm < Decidim::Form
        attribute :subject_manifest, String
        attribute :subject_id, Integer
        attribute :component_model, Array[TermCustomizer::Admin::TranslationSetSubjectComponentForm]

        def map_model(model)
          component = model if model.is_a?(Decidim::Component)
          subject = if component
                      model.participatory_space
                    else
                      model
                    end

          self.subject_manifest = Decidim.participatory_space_manifests.find do |m|
            m.model_class_name == subject.class.name
          end.try(:name)
          self.subject_id = subject.id

          return unless component

          self.component_model = [
            TermCustomizer::Admin::TranslationSetSubjectComponentForm.from_params(
              subject_id: subject.id,
              component_id: component.id
            )
          ]
        end

        def subject
          return unless manifest

          @subject ||= manifest.model_class_name.constantize.find_by(id: subject_id)
        end

        def component
          return unless component_form
          return unless subject
          return unless subject.respond_to?(:components)

          subject.components.find_by(id: component_form.component_id)
        end

        def manifest
          @manifest ||= Decidim.participatory_space_manifests.find do |m|
            m.name == subject_manifest.to_sym
          end
        end

        def component_form
          @component_form ||= component_model.find do |cm|
            cm.subject_id == subject_id
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
decidim-term_customizer-0.23.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.22.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.21.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.20.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.19.1 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.19.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.18.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.17.1 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.17.0 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.16.6 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.16.5 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
decidim-term_customizer-0.16.3 app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb