Class: Cms::ContentType
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Cms::ContentType
- Includes:
- EngineHelper
- Defined in:
- app/models/cms/content_type.rb
Instance Attribute Summary collapse
-
#group_name ⇒ Object
Returns the value of attribute group_name.
Class Method Summary collapse
-
.find_by_key(key) ⇒ Object
Given a ‘key’ like ‘html_blocks’ or ‘portlet’.
- .list ⇒ Object
Instance Method Summary collapse
-
#columns_for_index ⇒ Object
Allows models to show additional columns when being shown in a list.
-
#content_block_type ⇒ Object
Used in ERB for pathing.
-
#content_block_type_for_list ⇒ Object
This is used for situations where you want different to use a type for the list page This is true for portlets, where you don’t want to list all portlets of a given type, You want to list all portlets.
- #display_name ⇒ Object
- #display_name_plural ⇒ Object
-
#form ⇒ Object
Returns the partial used to render the form fields for a given block.
-
#key ⇒ Object
Returns URL friendly ‘key’ which is used to identify this.
- #model_class ⇒ Object
-
#model_class_form_name ⇒ Object
Cms::HtmlBlock -> html_block ThingBlock -> thing_block.
- #path_subject ⇒ Object
-
#route_name ⇒ Object
deprecated
Deprecated.
Should be removed eventually
- #set_content_type_group ⇒ Object
- #target_class ⇒ Object
Methods included from EngineHelper
decorate, #engine_exists?, #engine_name, #main_app_model?, module_name, #path_elements
Instance Attribute Details
#group_name ⇒ Object
Returns the value of attribute group_name.
6 7 8 |
# File 'app/models/cms/content_type.rb', line 6 def group_name @group_name end |
Class Method Details
.find_by_key(key) ⇒ Object
- Given a ‘key’ like ‘html_blocks’ or ‘portlet’. Looks first for a class in the Cms
-
namespace, then again without it.
Raises exception if nothing was found.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/models/cms/content_type.rb', line 25 def self.find_by_key(key) class_name = key.tableize.classify content_type = find(:first, :conditions => ["name like ?", "%#{class_name}"]) if content_type.nil? if class_name.constantize.ancestors.include?(Cms::Portlet) content_type = Cms::ContentType.new(:name => class_name) content_type.content_type_group = Cms::ContentTypeGroup.find_by_name('Core') content_type.freeze content_type else raise "Not a Portlet" end else content_type end rescue Exception if class_name.starts_with? "Cms::" return self.find_by_key(class_name.gsub(/Cms::/, "")) end raise "Couldn't find ContentType of class '#{class_name}'" end |
.list ⇒ Object
18 19 20 |
# File 'app/models/cms/content_type.rb', line 18 def self.list all.map { |f| f.name.underscore.to_sym } end |
Instance Method Details
#columns_for_index ⇒ Object
Allows models to show additional columns when being shown in a list.
98 99 100 101 102 103 104 105 106 107 |
# File 'app/models/cms/content_type.rb', line 98 def columns_for_index if model_class.respond_to?(:columns_for_index) model_class.columns_for_index.map do |column| column.respond_to?(:humanize) ? {:label => column.humanize, :method => column} : column end else [{:label => "Name", :method => :name, :order => "name"}, {:label => "Updated On", :method => :updated_on_string, :order => "updated_at"}] end end |
#content_block_type ⇒ Object
Used in ERB for pathing
110 111 112 |
# File 'app/models/cms/content_type.rb', line 110 def content_block_type name.demodulize.pluralize.underscore end |
#content_block_type_for_list ⇒ Object
This is used for situations where you want different to use a type for the list page This is true for portlets, where you don’t want to list all portlets of a given type, You want to list all portlets
117 118 119 120 121 122 123 |
# File 'app/models/cms/content_type.rb', line 117 def content_block_type_for_list if model_class.respond_to?(:content_block_type_for_list) model_class.content_block_type_for_list else content_block_type end end |
#display_name ⇒ Object
61 62 63 |
# File 'app/models/cms/content_type.rb', line 61 def display_name model_class.respond_to?(:display_name) ? model_class.display_name : Cms::Behaviors::Connecting.default_naming_for(model_class) end |
#display_name_plural ⇒ Object
65 66 67 |
# File 'app/models/cms/content_type.rb', line 65 def display_name_plural model_class.respond_to?(:display_name_plural) ? model_class.display_name_plural : display_name.pluralize end |
#form ⇒ Object
Returns the partial used to render the form fields for a given block.
53 54 55 56 57 58 59 |
# File 'app/models/cms/content_type.rb', line 53 def form f = model_class.respond_to?(:form) ? model_class.form : "#{name.underscore.pluralize}/form" if main_app_model? f = "cms/#{f}" end f end |
#key ⇒ Object
Returns URL friendly ‘key’ which is used to identify this
48 49 50 |
# File 'app/models/cms/content_type.rb', line 48 def key model_class_form_name end |
#model_class ⇒ Object
69 70 71 |
# File 'app/models/cms/content_type.rb', line 69 def model_class name.constantize end |
#model_class_form_name ⇒ Object
Cms::HtmlBlock -> html_block ThingBlock -> thing_block
93 94 95 |
# File 'app/models/cms/content_type.rb', line 93 def model_class_form_name model_class.model_name.element end |
#path_subject ⇒ Object
87 88 89 |
# File 'app/models/cms/content_type.rb', line 87 def path_subject model_class end |
#route_name ⇒ Object
Should be removed eventually
74 75 76 77 78 79 80 |
# File 'app/models/cms/content_type.rb', line 74 def route_name if model_class.name.starts_with?("Cms") model_class_form_name else "main_app.cms_#{model_class_form_name}" end end |
#set_content_type_group ⇒ Object
125 126 127 128 129 130 |
# File 'app/models/cms/content_type.rb', line 125 def set_content_type_group if group_name group = Cms::ContentTypeGroup.first(:conditions => {:name => group_name}) self.content_type_group = group || build_content_type_group(:name => group_name) end end |
#target_class ⇒ Object
83 84 85 |
# File 'app/models/cms/content_type.rb', line 83 def target_class model_class end |