Sha256: e89f92c281cd5822c1ba74ecc20ab1faae90f5b6ca20bb40303f1aaf934cefe9
Contents?: true
Size: 1.62 KB
Versions: 5
Compression:
Stored size: 1.62 KB
Contents
module Scrivito class WidgetTag < Struct.new(:view, :widget, :placement_modification, :template_name) include TagRenderer def tag_name :div end def content view.render(template: template_path, locals: {widget: widget}) rescue ActionView::MissingTemplate %{Missing Ruby model class for "#{widget.obj_class_name}"} if view.scrivito_user end def options options = {} if inplace_editing_allowed? options['private-widget-id'] = widget.id options['widget-obj-class'] = widget.obj_class_name options['private-widget-description-for-editor'] = widget.description_for_editor if has_widget_details_view?(widget) options['private-widget-has-details-view'] = true end comparison = editing_context.comparison options['private-widget-modification'] = if comparison.revision == widget.revision if placement_modification unless widget.in_revision(Workspace.current.revision) Modification::DELETED end end else comparison.modification(widget) end options['private-widget-placement-modification'] = placement_modification end options end private def template_path widget.public_send("to_#{template_name}_view_path") end def has_widget_details_view?(widget) view.lookup_context.find(widget.to_details_view_path).present? rescue ActionView::MissingTemplate false end def inplace_editing_allowed? editing_context.authenticated_editor? end def editing_context EditingContextMiddleware.from_request(view.request) end end end
Version data entries
5 entries across 5 versions & 1 rubygems