| Module | Sadmin::EventsHelper |
| In: |
app/helpers/sadmin/events_helper.rb
|
Indica si el usuairo puede crear sólo un tipo de eventos.
# 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
# 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.
# 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.
# 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á.
# 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.
# 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.
# 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.
# 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
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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