Class: Decidim::Proposals::Admin::ProposalBaseForm
- Inherits:
-
Form
- Object
- AttributeObject::Form
- Form
- Decidim::Proposals::Admin::ProposalBaseForm
- Includes:
- ApplicationHelper, AttachmentAttributes, TranslatableAttributes
- Defined in:
- decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb
Overview
A form object to be used when admin users want to create a proposal.
Direct Known Subclasses
Constant Summary
Constants included from AttributeObject::TypeMap
AttributeObject::TypeMap::Boolean, AttributeObject::TypeMap::Decimal
Instance Attribute Summary
Attributes inherited from AttributeObject::Form
Instance Method Summary collapse
- #author ⇒ Object
-
#category ⇒ Object
Finds the Category from the category_id.
- #component_automatic_hashtags ⇒ Object
- #component_suggested_hashtags ⇒ Object
- #extra_hashtags ⇒ Object
- #geocoded? ⇒ Boolean
- #geocoding_enabled? ⇒ Boolean
- #has_address? ⇒ Boolean
- #map_model(model) ⇒ Object
-
#meeting_as_author ⇒ Object
Return the meeting as author.
-
#meetings ⇒ Object
Finds the Meetings of the current participatory space.
-
#scope ⇒ Object
Finds the Scope from the given decidim_scope_id, uses participatory space scope if missing.
-
#scope_id ⇒ Object
Scope identifier.
- #suggested_hashtag_checked?(hashtag) ⇒ Boolean
- #suggested_hashtags ⇒ Object
Methods included from TranslatableAttributes
Methods inherited from AttributeObject::Form
ensure_hash, from_model, from_params, hash_from, infer_model_name, mimic, mimicked_model_name, model_name, #persisted?, #to_key, #to_model, #to_param, #valid?, #with_context
Methods included from AttributeObject::Model
#[], #[]=, #attributes, #attributes_with_values, #initialize, #to_h
Instance Method Details
#author ⇒ Object
93 94 95 96 97 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 93 def return current_organization unless created_in_meeting? end |
#category ⇒ Object
Finds the Category from the category_id.
Returns a Decidim::Category
52 53 54 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 52 def category @category ||= categories.find_by(id: category_id) end |
#component_automatic_hashtags ⇒ Object
112 113 114 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 112 def @component_automatic_hashtags ||= ordered_hashtag_list(current_component.current_settings.) end |
#component_suggested_hashtags ⇒ Object
116 117 118 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 116 def @component_suggested_hashtags ||= ordered_hashtag_list(current_component.current_settings.) end |
#extra_hashtags ⇒ Object
99 100 101 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 99 def @extra_hashtags ||= ( + ).uniq end |
#geocoded? ⇒ Boolean
78 79 80 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 78 def geocoded? latitude.present? && longitude.present? end |
#geocoding_enabled? ⇒ Boolean
70 71 72 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 70 def geocoding_enabled? Decidim::Map.available?(:geocoding) && current_component.settings.geocoding_enabled? end |
#has_address? ⇒ Boolean
74 75 76 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 74 def has_address? geocoding_enabled? && address.present? end |
#map_model(model) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 37 def map_model(model) body = translated_attribute(model.body) @suggested_hashtags = Decidim::ContentRenderers::HashtagRenderer.new(body)..map(&:name).map(&:downcase) return unless model.categorization self.category_id = model.categorization.decidim_category_id self.scope_id = model.decidim_scope_id end |
#meeting_as_author ⇒ Object
Return the meeting as author
89 90 91 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 89 def @meeting_as_author ||= meetings.find_by(id: meeting_id) end |
#meetings ⇒ Object
Finds the Meetings of the current participatory space
83 84 85 86 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 83 def meetings @meetings ||= Decidim.find_resource_manifest(:meetings).try(:resource_scope, current_component) &.published&.order(title: :asc) end |
#scope ⇒ Object
Finds the Scope from the given decidim_scope_id, uses participatory space scope if missing.
Returns a Decidim::Scope
59 60 61 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 59 def scope @scope ||= @attributes["scope_id"].value ? current_component.scopes.find_by(id: @attributes["scope_id"].value) : current_component.scope end |
#scope_id ⇒ Object
Scope identifier
Returns the scope identifier related to the proposal
66 67 68 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 66 def scope_id super || scope&.id end |
#suggested_hashtag_checked?(hashtag) ⇒ Boolean
108 109 110 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 108 def suggested_hashtag_checked?(hashtag) .member?(hashtag) end |
#suggested_hashtags ⇒ Object
103 104 105 106 |
# File 'decidim-proposals/app/forms/decidim/proposals/admin/proposal_base_form.rb', line 103 def = super.map(&:downcase).to_set .select { |hashtag| .member?(hashtag.downcase) } end |