Module Sadmin::EventsHelper
In: app/helpers/sadmin/events_helper.rb

Methods

Public Instance methods

Indica si el usuairo puede crear sólo un tipo de eventos.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 245
245:   def can_create_only_one_type_of_event?
246:     current_user.all_permission_by_module["events"].length == 1
247:   end

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 208
208:   def event_agenda_check_form_url
209:     url_params = if params[:action].eql?('index') 
210:       {:action => 'calendar'}
211:     else
212:       {:action => params[:action]}
213:     end
214:     url_params[:day] = params[:day]
215:     url_params.merge(:year => @year || Time.now.year, :month => @month || Time.now.month)
216:   end

Indica si el evento evt puede cambiar de agenda.

Si el usuario conectado tiene permiso para cambiar una agenda privada, puede cambiar la agenda de los eventos de las agendas a las que tiene acceso.

Los eventos compartidos pueden cambiar de agenda si el usuairo conectado tiene permiso para modificar alguna agenda privada.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 235
235:   def event_can_change_schedule?(evt)
236:     res = if evt.schedule_id
237:       !current_user.editable_schedules.blank? && current_user.can_change_schedule?(evt.schedule_id)
238:     else
239:       evt.is_private? && !current_user.changable_schedules.blank?
240:     end
241:     res
242:   end

 Devuelve un texto que indica si el evento está confirmado o no.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 142
142:   def event_confirmed_short_info(evt)
143:     txt = []
144:     
145:     if !evt.confirmed?
146:       txt << content_tag(:span, t('sadmin.events.pendiente_confirmar'), :class => "unpublished_notice")
147:     else
148:       txt << content_tag(:span, t('sadmin.events.si_confirmado'), :class => "published_notice")      
149:     end
150: 
151:     txt    
152:   end

Devuelve la información sobre si OpenIrekia cubre el evento y qué tipo de cobertura se dará.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 200
200:   def event_coverage_info(evt)
201:     cov = []
202:     cov.push(t('documents.fotos')) if evt. irekia_coverage_photo?
203:     cov.push(t('documents.video')) if evt. irekia_coverage_video?
204:     cov.push(t('documents.audio')) if evt. irekia_coverage_audio?
205:     cov.join(", ")
206:   end

Devuelve los datos del evento que salen en una celda del calendario.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 49
49:   def event_data4table_cell(evt, d, pos)
50:     content_tag(:div, content_tag(:span, 
51:                                   link_to(event_link_text(evt, d), event_link_url(evt),  
52:                                           :day => d.mday , :month => d.month, :pos => pos, :class => "event_title" )),
53:                                   :class => "one_event_link #{event_div_class_name(evt)} #{evt.state}" )
54:   end

Devuelve las fechas del evento como enlaces a la lista de eventos del día.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 182
182:   def event_dates_with_links(evt)
183:     start_date = evt.starts_at.to_date
184:     end_date = evt.ends_at.to_date
185:     
186:     txt = one_datetime_with_link(evt.starts_at)    
187:     
188:     if evt.starts_at.to_date.eql?(evt.ends_at.to_date)
189:       # Same day, different hours
190:       txt = txt + " - #{evt.ends_at.strftime('%H:%M')}" if evt.ends_at.strftime('%H%M') != "0000"
191:     else
192:       # Different dates
193:       txt = txt + " -- " +one_datetime_with_link(evt.ends_at)
194:     end
195: 
196:     txt    
197:   end

DOM clases para el div con los datos del evento.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 25
25:   def event_div_class_name(evt)
26:     cn = []
27:     cn.push("agencia_event") if evt.show_in_agencia
28:     cn.push("irekia_event") if evt.show_in_irekia
29:     cn.push("private_event") if evt.is_private?
30:     cn.push("deleted") if evt.deleted?
31:     if evt.respond_to?('schedule')
32:       cn.push("schedule")
33:       cn.push(evt.schedule.dom_element_class)
34:     end
35:     
36:     cn.join(' ')
37:   end

Prepara un json string por cada evento

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 250
250:   def event_json_for_sf(evt)
251:     title = "#{evt.title.gsub(/'/,"\"")}, #{evt.pretty_hours}"
252:     "'title':'#{title}', 'stream_flow_id':'#{evt.stream_flow_id}', 'streaming_for':'#{evt.streaming_for}'"
253:   end

Texto para el enlace a la página del evento.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 14
14:   def event_link_text(evt, d)
15:     txt = ""
16:     if d.to_date.eql?(evt.starts_at.to_date)
17:       txt += content_tag(:span, I18n.localize(evt.starts_at, :format => :hour), :class => "event_hour") unless evt.starts_at.hour.eql?(0)
18:     end
19: 
20:     dept_no = evt.organization.internal_id.nil? ? "--" : "#{evt.organization.internal_id}:"
21:     txt += content_tag(:span, dept_no+h(evt.title[0,10])+(evt.title.size > 10 ? "..." : ""), :class => "event_title irekia_coverage_#{evt.irekia_coverage?}")
22:   end

 La URL del evento.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 40
40:   def event_link_url(evt, opts={})
41:     if evt.is_a?(ScheduleEvent)
42:       sadmin_schedule_event_path({:id => evt.id, :schedule_id => evt.schedule.id}.merge(opts))
43:     else
44:       sadmin_event_path({:id => evt.id}.merge(opts))
45:     end
46:   end

Devuelve un texto con información sobre dónde es visible el evento.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 155
155:   def event_publication_state_info(evt)
156:     txt = if evt.is_private?
157:       if evt.respond_to?('schedule')
158:         "<span class='schedule #{evt.schedule.dom_element_class}'>#{evt.schedule.name}</span>"
159:       else
160:         "<span class='private_event'>#{t('sadmin.events.uso_interno')}</span>"
161:       end
162:     else
163:       "<span class='public_event #{event_div_class_name(evt)}'>#{t('sadmin.events.visible_en', :en => event_published_info(evt, false))}</span>"
164:     end
165:     
166:     txt
167:   end

Devuelve la información sobre dónde está publicado el evento.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 98
 98:   def event_published_info(evt, only_published = true)
 99:     places = []
100:     places.push "OpenIrekia" if evt.show_in_irekia
101:     
102:     if only_published
103:       places.push "Agencia" if (evt.show_in_agencia? && evt.published_in_agencia?)
104:     else
105:       if evt.show_in_agencia?
106:         if evt.published_in_agencia?
107:            places.push "Agencia"
108:         else
109:           places.push "Agencia (dentro de #{distance_of_time_in_words(Time.zone.now, evt.starts_at - Event::AM_INTERVAL)})"
110:         end
111:       end
112:     end
113:     
114:     return "#{t('en')} #{places.join(' ' + t('y') + ' ')}"
115:   end

Devuelve la clase para la fila con los datos del evento. Se usa para diferenciar a simple vista los diferentes tipos de eventos.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 219
219:   def event_row_class(evt)
220:     txt = if evt.respond_to?('schedule')
221:       "schedule "+evt.schedule.dom_element_class
222:     else
223:       'event'
224:     end
225:     txt
226:   end

Devuelve un texto que indica el estado del evento.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 118
118:   def event_state_info(evt)
119:     txt = []
120:     
121:     if !evt.confirmed?
122:       txt << content_tag(:span, t('sadmin.events.evento_no_confirmado'), :class => "unpublished_notice")
123:     end
124:     
125:     if evt.published?
126:       txt << content_tag(:span, t('sadmin.events.evento_publicado_en', :en => event_published_info(evt)), :class => "published_notice")
127:       if evt.show_in_agencia? && !evt.published_in_agencia?
128:         txt << content_tag(:span, t('sadmin.events.publicara_en_agencia_en', :en =>I18n.localize(evt.starts_at-Event::AM_INTERVAL, :format => :short)), :class => "unpublished_notice")
129:       end
130:     else
131:       txt << content_tag(:span, t('sadmin.events.publicara_en', :en =>I18n.localize(evt.published_at, :format => :short)), :class => "unpublished_notice") unless evt.published_at.nil?
132:     end
133:     
134:     if evt.deleted?
135:       txt = ["<span class='deleted'>#{t('sadmin.events.marcado_eliminado')}</span>"]
136:     end
137:     
138:     txt.join("<br />")
139:   end

Devuelve el número máximo de eventos que se muestran en una celda del calendario.

[Source]

   # File app/helpers/sadmin/events_helper.rb, line 4
4:   def num_events_in_cell
5:     @show_in_cell || 3
6:   end

Asigna valor al número máximo de eventos que se muestran en una celda del calendario.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 9
 9:   def num_events_in_cell=(num)
10:     @show_in_cell = num.to_i
11:   end

Devuelve el enlace a la lista de eventos de un día.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 170
170:   def one_datetime_with_link(datetime)
171:     date = datetime.to_date
172:     
173:     txt = link_to(I18n.localize(date, :format => :long), list_sadmin_events_path(:day => date.day, :month => date.month, :year => date.year))
174:     if datetime.strftime('%H%M') != "0000"
175:       txt << ", #{I18n.localize(datetime, :format => :hour)}"
176:     end
177:     
178:     txt
179:   end

Muestra una celda del calendario.

[Source]

    # File app/helpers/sadmin/events_helper.rb, line 57
57:   def render_calendar_cell(d, events, today)
58:     cell_class = ""
59:     day_number = ""
60:     
61:     if d.mday == d.beginning_of_week.mday
62:       day_number = link_to("Semana", week_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year), :class => "week_link")
63:     end
64:     
65:     day_number << link_to(d.mday, list_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year), :class => "day_number")
66:     
67:     txt = content_tag(:div, day_number, :class => "day_number")
68:     
69:     
70:     if events.blank? 
71:       if (d >= today) && !([0, 6].include?(d.wday))
72:         cell_class = "normalDay"
73:       end
74:     else
75:       show_in_cell = num_events_in_cell
76:       events[0,show_in_cell].each_with_index do |evt, i|
77:         txt << event_data4table_cell(evt, d, i)
78:       end
79:       
80:       case 
81:         when (events.size == (show_in_cell+1))
82:           txt << event_data4table_cell(events[show_in_cell], d, show_in_cell)
83:         when (events.size > (show_in_cell+1))
84:           txt << content_tag(:div, content_tag(:span, 
85:                                    link_to("+ #{events.size - show_in_cell} #{t('mas')}", 
86:                                            list_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year))),
87:                              :class => "more_events_link")
88:       end
89:       
90:       # link_to_function(d.mday, "showDayInfo(#{d.mday}, this)")
91:       cell_class="busyDay"
92:     end
93:     
94:     [txt, {:class => "#{cell_class} day#{d.wday}", :id => "d#{d.mday}_#{d.month}"}]
95:   end

Muestra las webs donde el evento se va a emitir en directo con el aviso correspondiente si hay otro evento al mismo tiempo en la misma web.

[Source]

     # File app/helpers/sadmin/events_helper.rb, line 257
257:   def show_web_streaming_info_for_admin(event)
258:     txt = event.streaming_for_pretty
259:     overlapped = event.overlapped_streaming
260:     
261:     unless overlapped.empty?
262:       info = {}
263:       event.streaming_places.each do |place|
264:         info[place] ||= []
265:         overlapped.each do |oevt|
266:           if oevt.streaming_for?(place) 
267:             info[place].push  link_to("#{oevt.title.gsub(/'/,"\"")}, #{oevt.pretty_hours}", admin_document_path(oevt))
268:           end
269:         end
270:       end
271:       unless info.values.flatten.empty?
272:         txt = [""]
273:         info.each do |place, oevts|
274:           txt.push content_tag(:span, "#{t("events.#{place.strip}")} #{content_tag(:span, "AVISO: Coincide con #{oevts.to_sentence}", :class => 'overlap_info') unless oevts.empty?}", :class => 'streaming_place_info')
275:         end
276:         txt = txt.join("<br />")
277:       end
278:     end
279:     
280:     txt
281:   end

[Validate]