Class: Decidim::Component
- Inherits:
 - 
      ApplicationRecord
      
        
- Object
 - ActiveRecord::Base
 - ApplicationRecord
 - Decidim::Component
 
 
- Includes:
 - HasSettings, Loggable, Publicable, ScopableComponent, ShareableWithToken, Traceable
 
- Defined in:
 - app/models/decidim/component.rb
 
Overview
A Component represents a self-contained group of functionalities usually defined via a ComponentManifest. It is meant to be able to provide a single component that spans over several steps.
Class Method Summary collapse
Instance Method Summary collapse
- #can_participate_in_space?(user) ⇒ Boolean
 - 
  
    
      #form_class  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: The Form Class for this component.
 - 
  
    
      #manifest  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Finds the manifest this component is associated to.
 - 
  
    
      #manifest=(manifest)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Assigns a manifest to this component.
 - 
  
    
      #mounted_admin_engine  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: The name of the admin engine the component is mounted to.
 - 
  
    
      #mounted_engine  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: The name of the engine the component is mounted to.
 - 
  
    
      #mounted_params  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: The hash of contextual params when the component is mounted.
 - 
  
    
      #primary_stat  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Returns the value of the registered primary stat.
 - 
  
    
      #resource_description  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Returns an empty description.
 - 
  
    
      #resource_title  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Returns the component’s name as resource title.
 - 
  
    
      #shareable_url(share_token)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Public URL for component with given share token as query parameter.
 - 
  
    
      #siblings  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Other components with the same manifest and same participatory space as this one.
 
Methods included from Publicable
#previously_published?, #publish!, #published?, #unpublish!
Methods included from HasSettings
#current_settings, #default_step_settings, #default_step_settings=, #settings, #settings=, #step_settings, #step_settings=
Class Method Details
.log_presenter_class_for(_log) ⇒ Object
      24 25 26  | 
    
      # File 'app/models/decidim/component.rb', line 24 def self.log_presenter_class_for(_log) Decidim::AdminLog::ComponentPresenter end  | 
  
Instance Method Details
#can_participate_in_space?(user) ⇒ Boolean
      88 89 90 91 92 93  | 
    
      # File 'app/models/decidim/component.rb', line 88 def can_participate_in_space?(user) return true unless participatory_space.try(:private_space?) return false unless user participatory_space.can_participate?(user) end  | 
  
#form_class ⇒ Object
Public: The Form Class for this component.
Returns a ComponentForm.
      71 72 73  | 
    
      # File 'app/models/decidim/component.rb', line 71 def form_class manifest.component_form_class end  | 
  
#manifest ⇒ Object
Public: Finds the manifest this component is associated to.
Returns a ComponentManifest.
      36 37 38  | 
    
      # File 'app/models/decidim/component.rb', line 36 def manifest Decidim.find_component_manifest(manifest_name) end  | 
  
#manifest=(manifest) ⇒ Object
Public: Assigns a manifest to this component.
manifest - The ComponentManifest for this Component.
Returns nothing.
      45 46 47  | 
    
      # File 'app/models/decidim/component.rb', line 45 def manifest=(manifest) self.manifest_name = manifest.name end  | 
  
#mounted_admin_engine ⇒ Object
Public: The name of the admin engine the component is mounted to.
      55 56 57  | 
    
      # File 'app/models/decidim/component.rb', line 55 def mounted_admin_engine "decidim_admin_#{participatory_space_name}_#{manifest_name}" end  | 
  
#mounted_engine ⇒ Object
Public: The name of the engine the component is mounted to.
      50 51 52  | 
    
      # File 'app/models/decidim/component.rb', line 50 def mounted_engine "decidim_#{participatory_space_name}_#{manifest_name}" end  | 
  
#mounted_params ⇒ Object
Public: The hash of contextual params when the component is mounted.
      60 61 62 63 64 65 66  | 
    
      # File 'app/models/decidim/component.rb', line 60 def mounted_params { :host => organization.host, :component_id => id, "#{participatory_space.underscored_name}_slug".to_sym => participatory_space.slug } end  | 
  
#primary_stat ⇒ Object
Public: Returns the value of the registered primary stat.
      76 77 78  | 
    
      # File 'app/models/decidim/component.rb', line 76 def primary_stat @primary_stat ||= manifest.stats.filter(primary: true).with_context([self]).map { |name, value| [name, value] }.first&.last end  | 
  
#resource_description ⇒ Object
Public: Returns an empty description
      86  | 
    
      # File 'app/models/decidim/component.rb', line 86 def resource_description; end  | 
  
#resource_title ⇒ Object
Public: Returns the component’s name as resource title
      81 82 83  | 
    
      # File 'app/models/decidim/component.rb', line 81 def resource_title name end  | 
  
#shareable_url(share_token) ⇒ Object
Public: Public URL for component with given share token as query parameter
      96 97 98  | 
    
      # File 'app/models/decidim/component.rb', line 96 def shareable_url(share_token) EngineRouter.main_proxy(self).root_path(self, share_token: share_token.token) end  | 
  
#siblings ⇒ Object
Other components with the same manifest and same participatory space as this one.
      29 30 31  | 
    
      # File 'app/models/decidim/component.rb', line 29 def siblings @siblings ||= participatory_space.components.where.not(id:).where(manifest_name:) end  |