module Sadmin::EventsHelper

OpenIrekia v4.0.0

Copyright 2009-2013 eFaber, S.L. Copyright 2009-2013 Ejie, S.A. Copyrigth 2009-2013 Dirección de Gobierno Abierto y Comunicación en Internet;

Gobernu Irekirako eta Interneteko Komunikaziorako Zuzendaritza; Lehendakaritza.
Gobierno Vasco – Eusko Jaurlaritza

Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la Licencia); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: ec.europa.eu/idabc/eupl Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye TAL CUAL, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia

http://open.irekia.net, openirekia@efaber.net

Public Instance Methods

can_create_only_one_type_of_event?() click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 248
def can_create_only_one_type_of_event?
  current_user.all_permission_by_module["events"].length == 1
end
event_agenda_check_form_url() click to toggle source
# File app/helpers/sadmin/events_helper.rb, line 211
def event_agenda_check_form_url
  url_params = if params[:action].eql?('index') 
    {:action => 'calendar'}
  else
    {:action => params[:action]}
  end
  url_params[:day] = params[:day]
  url_params.merge(:year => @year || Time.now.year, :month => @month || Time.now.month)
end
event_can_change_schedule?(evt) click to toggle source

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 238
def event_can_change_schedule?(evt)
  res = if evt.schedule_id
    !current_user.editable_schedules.blank? && current_user.can_change_schedule?(evt.schedule_id)
  else
    evt.is_private? && !current_user.changable_schedules.blank?
  end
  res
end
event_confirmed_short_info(evt) click to toggle source

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

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

  txt    
end
event_coverage_info(evt) click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 203
def event_coverage_info(evt)
  cov = []
  cov.push(t('photos.title')) if evt. irekia_coverage_photo?
  cov.push(t('videos.title')) if evt. irekia_coverage_video?
  cov.push(t('audios.title')) if evt. irekia_coverage_audio?
  cov.join(", ")
end
event_data4table_cell(evt, d, pos) click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 69
def event_data4table_cell(evt, d, pos)
  content_tag(:div, content_tag(:span, 
                                link_to(event_link_text(evt, d), event_link_url(evt),  
                                        :day => d.mday , :month => d.month, :pos => pos, :class => "event_title" )),
                                :class => "one_event_link #{event_div_class_name(evt)}" )
end
event_div_class_name(evt) click to toggle source

DOM clases para el div con los datos del evento.

# File app/helpers/sadmin/events_helper.rb, line 46
def event_div_class_name(evt)
  cn = []
  cn.push("irekia_event") if evt.is_public?
  cn.push("private_event") if evt.is_private?
  cn.push("deleted") if evt.deleted?
  if evt.respond_to?('schedule')
    cn.push("schedule")
    cn.push(evt.schedule.dom_element_class)
  end
  
  cn.join(' ')
end
event_json_for_sf(evt) click to toggle source

Prepara un json string por cada evento

# File app/helpers/sadmin/events_helper.rb, line 253
def event_json_for_sf(evt)
  title = "#{evt.title.gsub(/'/,"\"")}, #{evt.pretty_hours}"
  "'title':'#{title}', 'stream_flow_id':'#{evt.stream_flow_id}', 'streaming_for':'#{evt.streaming_for}'"
end
event_publication_state_info(evt) click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 158
def event_publication_state_info(evt)
  txt = if evt.is_private?
    if evt.respond_to?('schedule')
      "<span class='schedule #{evt.schedule.dom_element_class}'>#{evt.schedule.name}</span>"
    else
      "<span class='private_event'>#{t('sadmin.events.uso_interno')}</span>"
    end
  else
    "<span class='public_event #{event_div_class_name(evt)}'>#{t('sadmin.events.visible_en', :en => event_published_info(evt, false))}</span>"
  end
  
  txt
end
event_published_info(evt, only_published = true) click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 118
def event_published_info(evt, only_published = true)
  places = []
  places.push "Irekia" if evt.is_public?
  
  return "#{t('en')} #{places.join(' ' + t('y') + ' ')}"
end
event_row_class(evt) click to toggle source

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 222
def event_row_class(evt)
  txt = if evt.respond_to?('schedule')
    "schedule "+evt.schedule.dom_element_class
  else
    'event'
  end
  txt
end
event_state_info(evt) click to toggle source

Devuelve un texto que indica el estado del evento.

# File app/helpers/sadmin/events_helper.rb, line 126
def event_state_info(evt)
  txt = []
  
  if evt.published?
    txt << content_tag(:span, t('sadmin.events.evento_publicado_en', :en => event_published_info(evt)), :class => "published_notice")
  elsif evt.published_at.nil?
    txt << content_tag(:span, "Este evento es privado", :class => "unpublished_notice")
  else
    txt << content_tag(:span, t('sadmin.events.publicara_en', :en =>I18n.localize(evt.published_at, :format => :short)), :class => "unpublished_notice") 
  end
  
  if evt.deleted?
    txt = ["<span class='deleted'>#{t('sadmin.events.marcado_eliminado')}</span>"]
  end
  
  txt.join("<br />")
end
num_events_in_cell() click to toggle source

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

# File app/helpers/sadmin/events_helper.rb, line 25
def num_events_in_cell
  @show_in_cell || 3
end
num_events_in_cell=(num) click to toggle source

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 30
def num_events_in_cell=(num)
  @show_in_cell = num.to_i
end
render_calendar_cell(d, events, today) click to toggle source

Muestra una celda del calendario.

# File app/helpers/sadmin/events_helper.rb, line 77
def render_calendar_cell(d, events, today)
  cell_class = ""
  day_number = ""
  
  if d.mday == d.beginning_of_week.mday
    day_number = link_to("Semana", week_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year), :class => "week_link")
  end
  
  day_number << link_to(d.mday, list_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year), :class => "day_number")
  
  txt = content_tag(:div, day_number, :class => "day_number")
  
  
  if events.blank? 
    if (d >= today) && !([0, 6].include?(d.wday))
      cell_class = "normalDay"
    end
  else
    show_in_cell = num_events_in_cell
    events[0,show_in_cell].each_with_index do |evt, i|
      txt << event_data4table_cell(evt, d, i)
    end
    
    case 
      when (events.size == (show_in_cell+1))
        txt << event_data4table_cell(events[show_in_cell], d, show_in_cell)
      when (events.size > (show_in_cell+1))
        txt << content_tag(:div, content_tag(:span, 
                                 link_to("+ #{events.size - show_in_cell} #{t('mas')}", 
                                         list_sadmin_events_path(:day => d.mday, :month => d.month, :year => d.year))),
                           :class => "more_events_link")
    end
    
    # link_to_function(d.mday, "showDayInfo(#{d.mday}, this)")
    cell_class="busyDay"
  end
  
  [txt, {:class => "#{cell_class} day#{d.wday}", :id => "d#{d.mday}_#{d.month}"}]
end
show_web_streaming_info_for_admin(event) click to toggle source

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 260
def show_web_streaming_info_for_admin(event)
  txt = event.streaming_for_pretty
  overlapped = event.overlapped_streaming
  
  unless overlapped.empty?
    info = {}
    event.streaming_places.each do |place|
      info[place] ||= []
      overlapped.each do |oevt|
        if oevt.streaming_for?(place) 
          info[place].push  link_to("#{oevt.title.gsub(/'/,"\"")}, #{oevt.pretty_hours}", admin_document_path(oevt))
        end
      end
    end
    unless info.values.flatten.empty?
      txt = [""]
      info.each do |place, oevts|
        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')
      end
      txt = txt.join("<br />")
    end
  end
  
  txt
end