Module: ScrivitoHelper
- Includes:
- Scrivito::ControllerHelper
- Defined in:
- app/helpers/scrivito_helper.rb
Overview
This module provides several helper methods for rendering the CMS contents and enabling the in-place editing.
Details Dialog Size collapse
-
#scrivito_large_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to
large. -
#scrivito_medium_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to
medium(default). -
#scrivito_small_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to
small.
Instance Method Summary collapse
-
#scrivito_body_tags ⇒ Object
Renders all tags needed in the HTML body.
-
#scrivito_details_for(title = nil, &block) ⇒ Object
Attribute group helper generates HTML for page details dialog and widget details dialog.
-
#scrivito_field(obj, field_name) ⇒ Object
Renders a field from the CMS.
-
#scrivito_head_tags ⇒ Object
Renders all tags needed in the HTML head.
-
#scrivito_image_tag(obj, field_name_or_tag_options = nil, tag_or_editing_options = {}, editing_options = {}) ⇒ String
Calculates an HTML image tag of an image stored in the CMS for inplace editing.
-
#scrivito_tag(tag_name, obj_or_widget, field_name, html_options = {}, editing_options = {}, &block) ⇒ String
Renders a field within the given HTML tag.
-
#scrivito_tag_list(tag_name, obj, field_name, options = {}) {|list, child| ... } ⇒ String
The rendered html tag.
-
#scrivito_thumbnail(title, icon = :scrivito, &block) ⇒ Object
Thumbnail helper generates HTML for the page class selection dialog and the widget class selection dialog.
-
#scrivito_value(value) ⇒ Object
Renders an attribute value of a CMS model.
Methods included from Scrivito::ControllerHelper
#scrivito_in_editable_view?, #scrivito_path, #scrivito_url, #scrivito_user
Instance Method Details
#scrivito_body_tags ⇒ Object
Renders all tags needed in the HTML body.
364 365 366 |
# File 'app/helpers/scrivito_helper.rb', line 364 def Scrivito::LayoutTags.new(self).page_config(@obj) end |
#scrivito_details_for(title = nil, &block) ⇒ Object
Attribute group helper generates HTML for page details dialog and widget details dialog. The generated HTML has appropriate DOM structure and CSS classes, which are compatible with the CSS of the SDK. By using this helper you ensure, that the look of your attribute groups fits into the SDK’s design.
294 295 296 297 298 299 300 301 302 303 |
# File 'app/helpers/scrivito_helper.rb', line 294 def scrivito_details_for(title = nil, &block) content_tag(:div, class: 'scrivito_content_group') do capture do if title concat content_tag(:h3, title) end yield end end end |
#scrivito_field(obj, field_name) ⇒ Object
Content rendered using this method will not be editable in the Scrivito UI. If you want in-place editing, then please use #scrivito_tag instead.
Renders a field from the CMS.
219 220 221 |
# File 'app/helpers/scrivito_helper.rb', line 219 def scrivito_field(obj, field_name) scrivito_value(obj[field_name]) end |
#scrivito_head_tags ⇒ Object
Renders all tags needed in the HTML head.
352 353 354 355 356 357 358 |
# File 'app/helpers/scrivito_helper.rb', line 352 def = Scrivito::LayoutTags.new(self) capture do concat .editing_auth_warning concat . end end |
#scrivito_image_tag(obj, field_name_or_tag_options = nil, tag_or_editing_options = {}, editing_options = {}) ⇒ String
If you do not specify an HTML alt attribute, the helper method will use Obj#alt_description of the target object.
Calculates an HTML image tag of an image stored in the CMS for inplace editing.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'app/helpers/scrivito_helper.rb', line 153 def scrivito_image_tag(obj, =nil, = {}, = {}) field_name, , = if .is_a?(Hash) [nil, , ] else [, , ] end if field_name.blank? if obj.binary? field_name = :blob else raise Scrivito::ScrivitoError, "when omitting `field_name' you have to pass a binary obj" end end = Scrivito::ImageTag.new(self).(obj, field_name, .with_indifferent_access, .with_indifferent_access) scrivito_tag('img', obj, field_name, ) end |
#scrivito_large_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to large.
318 319 320 |
# File 'app/helpers/scrivito_helper.rb', line 318 def scrivito_large_dialog(&block) Scrivito::DialogSizeHelper.render_dialog_with_size(self, 'large', &block) end |
#scrivito_medium_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to medium (default).
330 331 332 |
# File 'app/helpers/scrivito_helper.rb', line 330 def scrivito_medium_dialog(&block) Scrivito::DialogSizeHelper.render_dialog_with_size(self, 'medium', &block) end |
#scrivito_small_dialog(&block) ⇒ String
Set the size of the page and widget details dialog to small.
342 343 344 |
# File 'app/helpers/scrivito_helper.rb', line 342 def scrivito_small_dialog(&block) Scrivito::DialogSizeHelper.render_dialog_with_size(self, 'small', &block) end |
#scrivito_tag(tag_name, obj_or_widget, field_name, html_options = {}, editing_options = {}, &block) ⇒ String
If the param field_name is of type widget, then tag_name must be a block tag, like div or h1. An inline tag like p or span could result in broken HTML output, since the widgets are rendered within block tags.
Renders a field within the given HTML tag.
This method also renders additional attributes, which are needed for in-place editing. These attributes are only rendered when appropriate, i.e. not for a regular visitor.
The helper is similar to (and internally uses) api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag. You can add additional HTML attributes by passing them in html_options.
63 64 65 66 67 68 69 |
# File 'app/helpers/scrivito_helper.rb', line 63 def scrivito_tag(tag_name, , field_name, = {}, = {}, &block) Scrivito::CmsFieldTag.new(self, tag_name, , .merge( widget_template_name: || :show, field_name: field_name.to_s )).render(, &block) end |
#scrivito_tag_list(tag_name, obj, field_name, options = {}) {|list, child| ... } ⇒ String
Returns The rendered html tag.
102 103 104 |
# File 'app/helpers/scrivito_helper.rb', line 102 def scrivito_tag_list(tag_name, obj, field_name, = {}, &block) Scrivito::ChildListTag.new(tag_name, obj, field_name.to_s, self).render(, &block) end |
#scrivito_thumbnail(title, icon = :scrivito, &block) ⇒ Object
Thumbnail helper generates HTML for the page class selection dialog and the widget class selection dialog. The generated HTML has appropriate DOM structure and CSS classes, which are compatible with the CSS of the SDK. By using this helper you ensure, that the look of your thumbnails fits into the SDK’s design.
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'app/helpers/scrivito_helper.rb', line 253 def scrivito_thumbnail(title, icon = :scrivito, &block) if icon.is_a?(Symbol) icon_code = { content: '', headline: '', image: '', scrivito: '', text: '', }.fetch(icon, '') icon = content_tag(:i, icon_code.html_safe, class: 'scrivito_icon') end content_tag(:div, class: 'scrivito_editing_widget_preview') do capture do concat content_tag(:div, icon, class: 'scrivito_editing_widget_visualization') concat content_tag(:div, title, class: 'scrivito_editing_widget_title') concat content_tag(:div, class: 'scrivito_editing_widget_description', &block) end end end |
#scrivito_value(value) ⇒ Object
Content rendered using this method will not be editable in the Scrivito UI. If you want In-Place-Editing, use #scrivito_tag instead.
Renders an attribute value of a CMS model.
scrivito_value(@obj.title)
Renders the value, taking its type into account.
-
An HtmlString will be exported by converting its links
-
A Time will be exported in an international form: Year-Month-Day Hour:Minutes
-
A non-HTML String will be quoted
-
other values will be rendered unchanged
192 193 194 195 196 197 198 199 200 201 202 |
# File 'app/helpers/scrivito_helper.rb', line 192 def scrivito_value(value) case value when Scrivito::HtmlString Scrivito::CmsRouting.new(request, main_app, scrivito_engine).convert_links(value).html_safe when String then h(value) when Time then h(l(value)) when Scrivito::BasicWidget render(template: value.to_show_view_path, locals: {widget: value}) else value end end |