Class: Pageflow::PageType
- Inherits:
-
Object
- Object
- Pageflow::PageType
- Defined in:
- lib/pageflow/page_type.rb
Overview
Base class for defining page types.
Direct Known Subclasses
Defined Under Namespace
Modules: Engine
Class Method Summary collapse
-
.name(name = nil) ⇒ Object
Helper method to define the name of a subclassed page type.
Instance Method Summary collapse
-
#file_types ⇒ Object
File types to enable when this page type is registered..
-
#json_seed_template ⇒ Object
View path of a template containing additional json to pass to the editor.
-
#name ⇒ Object
Override to return a string in snake_case.
-
#revision_components ⇒ Object
ActiveRecord models to be copied together with a revision.
-
#template_path ⇒ Object
View path to the html template.
-
#thumbnail_candidates ⇒ Object
A list of hashes used to determine a thumbnail for a page.
-
#translation_key ⇒ Object
Name to display in editor.
-
#view_helpers ⇒ Object
Rails helper modules to make available in the html template.
Class Method Details
.name(name = nil) ⇒ Object
Helper method to define the name of a subclassed page type.
133 134 135 136 137 138 |
# File 'lib/pageflow/page_type.rb', line 133 def self.name(name = nil) return super() unless name define_method :name do name end end |
Instance Method Details
#file_types ⇒ Object
File types to enable when this page type is registered..
71 72 73 |
# File 'lib/pageflow/page_type.rb', line 71 def file_types [] end |
#json_seed_template ⇒ Object
View path of a template containing additional json to pass to the editor. The data is available in the javascript definition of the page type’s configuration editor. By default nothing is added.
In particular this can be used to make configuration options of page type engines available to the editor.
Example:
class RainbowPageType < Pageflow::PageType
name 'rainbow'
def json_seed_template
'pageflow/rainbow/page_type.json.jbuilder'
end
end
# page_types/pageflow/rainbow/page_type.json.jbuilder
json.colors ['red', 'blue', 'yellow']
# page_types/pageflow/rainbow/editor.js
pageflow.ConfigurationEditorView.register('rainbow', {
configure: function() {
var colors = this..pageType.colors;
// ...
}
});
129 130 |
# File 'lib/pageflow/page_type.rb', line 129 def json_seed_template end |
#name ⇒ Object
Override to return a string in snake_case.
15 16 17 |
# File 'lib/pageflow/page_type.rb', line 15 def name raise(NotImplementedError, 'PageType subclass needs to define a name.') end |
#revision_components ⇒ Object
ActiveRecord models to be copied together with a revision.
This allows authors of PageTypes to attach models to the Pageflow revision mechanism.
Example:
class Rainbow < ActiveRecord::Base
include Pageflow::RevisionComponent
[...]
end
class RainbowPageType < Pageflow::PageType
name 'rainbow'
def revision_components
[Rainbow]
end
end
65 66 67 |
# File 'lib/pageflow/page_type.rb', line 65 def revision_components [] end |
#template_path ⇒ Object
View path to the html template.
5 6 7 |
# File 'lib/pageflow/page_type.rb', line 5 def template_path File.join('pageflow', name, 'page') end |
#thumbnail_candidates ⇒ Object
A list of hashes used to determine a thumbnail for a page. Each hash in the list must contain two keys: ‘attribute` and `file_collection`.
For each item, the given attribute is fetched from the page configuration and used to find a file from the given collection. ‘file_collection` must equal the collection_name of a registered FileType. The first file found is used as thumbnail.
93 94 95 96 97 98 |
# File 'lib/pageflow/page_type.rb', line 93 def thumbnail_candidates [ {attribute: 'thumbnail_image_id', file_collection: 'image_files'}, {attribute: 'background_image_id', file_collection: 'image_files'} ] end |
#translation_key ⇒ Object
Name to display in editor.
10 11 12 |
# File 'lib/pageflow/page_type.rb', line 10 def translation_key "pageflow.#{name}.page_type_name" end |
#view_helpers ⇒ Object
Rails helper modules to make available in the html template.
Example:
module RainbowsHelper
def rainbow
tag(:rainbow)
end
end
class RainbowPageType < Pageflow::PageType
name 'rainbow'
def view_helpers
[RainbowsHelper]
end
end
# page_types/pageflow/rainbow/page.html.erb
<%= rainbow %>
40 41 42 |
# File 'lib/pageflow/page_type.rb', line 40 def view_helpers [] end |