Class: DcRotatorRenderer
- Inherits:
-
Object
- Object
- DcRotatorRenderer
- Defined in:
- app/renderers/dc_rotator_renderer.rb
Overview
Renderer for rotator web element
Instance Method Summary collapse
-
#default ⇒ Object
Default rotator renderer method.
-
#initialize(parent, opts = {}) ⇒ DcRotatorRenderer
constructor
A new instance of DcRotatorRenderer.
-
#link_for_rotator_settings ⇒ Object
Create code for rotator settings link.
-
#one_element(doc) ⇒ Object
Prepares code for displaying single element.
- #render_css ⇒ Object
- #render_html ⇒ Object
-
#rotator_4display ⇒ Object
Render rotator for display.
-
#rotator_4edit ⇒ Object
Render rotator for edit.
-
#rotator_documents ⇒ Object
Fetch documents displayed by rorator.
Constructor Details
#initialize(parent, opts = {}) ⇒ DcRotatorRenderer
Returns a new instance of DcRotatorRenderer.
32 33 34 35 36 37 38 |
# File 'app/renderers/dc_rotator_renderer.rb', line 32 def initialize( parent, opts={} ) @parent = parent @opts = opts @opts[:element] ||= 'rotator' @parts_css = '' self end |
Instance Method Details
#default ⇒ Object
Default rotator renderer method.
123 124 125 126 127 128 129 130 131 132 133 |
# File 'app/renderers/dc_rotator_renderer.rb', line 123 def default clas = @opts.dig(:settings, @opts[:element], 'class') clas = "#{clas} #{@opts[:div_class]}" if @opts[:div_class] html = clas.blank? ? '' : "<div class=\"#{clas}\">" html << if @opts[:edit_mode] > 1 rotator_4edit else rotator_4display end html << (clas.blank? ? '' : '</div>') end |
#link_for_rotator_settings ⇒ Object
Create code for rotator settings link
96 97 98 99 100 101 102 103 104 105 106 |
# File 'app/renderers/dc_rotator_renderer.rb', line 96 def link_for_rotator_settings table = @opts[:table] || @parent.page.class.to_s id = (table == 'dc_site') ? @parent.site.id : @parent.page.id %( #{@parent.dc_link_for_edit(table: 'dc_memory', title: 'helpers.dc_rotator.settings', form_name: 'dc_rotator_settings', icon: 'cog lg', id: id, location: table, action: 'new', element: @opts[:element] )} #{@parent.dc_link_for_create(table: 'dc_rotator', title: 'helpers.dc_rotator.create')} ) end |
#one_element(doc) ⇒ Object
Prepares code for displaying single element
59 60 61 62 63 64 65 66 67 68 |
# File 'app/renderers/dc_rotator_renderer.rb', line 59 def one_element(doc) html = if doc.picture.empty? %(<div class="orbit-text">#{doc.text.html_safe}</div>) else %(<div class="orbit-pic-with-text" style="position: relative;"><img class="orbit-image" src="#{doc.picture}" alt="#{doc.description}">) + (doc.text_over ? "<div style=\"#{doc.css_over}\">#{doc.text}</div>" : '') + '</div>' end.html_safe html = @parent.link_to(html, doc.link, target: doc.target) unless doc.link.empty? html end |
#render_css ⇒ Object
146 147 148 |
# File 'app/renderers/dc_rotator_renderer.rb', line 146 def render_css @parts_css end |
#render_html ⇒ Object
138 139 140 141 |
# File 'app/renderers/dc_rotator_renderer.rb', line 138 def render_html method = @opts[:method] || 'default' respond_to?(method) ? send(method) : "Error rotator: Method #{method} doesn't exist!" end |
#rotator_4display ⇒ Object
Render rotator for display.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'app/renderers/dc_rotator_renderer.rb', line 73 def rotator_4display delay = @opts.dig(:settings, @opts[:element], 'delay') || 2000 html = %( <div class="orbit" role="region" aria-label="" data-orbit data-timer-delay="#{delay}"> <div class="orbit-wrapper"> <ul class="orbit-container">) nav = '<nav class="orbit-bullets">' n, is_active = 0, 'is-active' rotator_documents.each do |doc| html << %(<li class="#{is_active} orbit-slide"> <figure class="orbit-figure">) html << "#{one_element(doc)}</figure> </li>" nav << %(<button class="#{is_active}" data-slide="#{n}"><span class="show-for-sr">Slide #{n+1} details.</span></button>) is_active = '' n+=1 end "#{html}</ul>#{nav}</nav></div></div>" end |
#rotator_4edit ⇒ Object
Render rotator for edit.
111 112 113 114 115 116 117 118 |
# File 'app/renderers/dc_rotator_renderer.rb', line 111 def rotator_4edit html = %(<div class="orbit">#{link_for_rotator_settings}) rotator_documents.each do |doc| html << "<div>#{@parent.dc_link_for_edit(table: 'dc_rotator', id: doc.id, title: 'helpers.dc_rotator.edit')}" html << "#{one_element(doc)}</div>" end "#{html}</div>" end |
#rotator_documents ⇒ Object
Fetch documents displayed by rorator
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/renderers/dc_rotator_renderer.rb', line 43 def rotator_documents kats = @opts.dig(:settings, @opts[:element], 'kats') query = if kats DcRotator.where(:kats.in => kats, active: true) else DcRotator.where(active: true) end query = query.and({"$or" => [{:valid_from => nil}, {:valid_from.lt => Time.now}]}, {"$or" => [{:valid_until => nil}, {:valid_until.gt => Time.now}]}) query.order_by(order: 1).limit(10) end |