module EventCalendar::ApplicationHelper def div_for_record(record, options={}, &block) options.merge!({:class => "span-10 #{options[:class]}"}) div_for(record, options){ yield } end def tag_for_record(tag, record, *args, &block) content_tag_for(tag, record, *args){ yield } end def link_wrapper(path, wrapper_options={}, link_options={}) tag = wrapper_options.delete(:tag) || :p link_text = link_options.delete(:link_text) || path highlight = wrapper_options.delete(:highlight) unless path.blank? if current_page?(path) && (highlight.nil? || highlight) wrapper_options.merge!({ :class => (wrapper_options[:class] || '') + " nav_highlight" }) end end unless wrapper_options.delete(:no_wrapper) return content_tag(tag, wrapper_options) do link_to(link_text, path, link_options) end else return link_to(link_text, path, link_options) end end def time_with_zones(time=Time.now) out = {} format = "%H:%M" ActiveSupport::TimeZone.us_zones.map(&:name).each do |us_zone| next unless us_zone =~ /Pacific|Mountain|Central|Eastern/ key = time.in_time_zone(us_zone).strftime("%Z") out[key] = time.in_time_zone(us_zone).strftime(format) end out end def times_with_zones(event) begin [ time_with_zones(event.start_time), time_with_zones(event.end_time) ] rescue NoMethodError => e raise "#{e.message} - #{event.inspect}" end end def link_to_events(wrapper_options={}, link_options={}) return unless has_authorization?(:read, Event.new) link_wrapper(events_path, wrapper_options, link_options.reverse_merge!({ :link_text => 'Event Calendar' })) end def link_to_event_revisions(wrapper_options={}, link_options={}) return unless has_authorization?(:read, EventRevision.new) link_wrapper(event_revisions_path, { :no_wrapper => true }.merge!(wrapper_options), { :link_text => 'Browse Event Revisions' }.merge!(link_options)) end def link_to_new_event(wrapper_options={}, link_options={}) return unless has_authorization?(:create, Event.new) link_wrapper(new_event_path, { :no_wrapper => true }.merge!(wrapper_options), { :link_text => "Create New Event" }.merge!(link_options)) end def link_to_deleted_events(wrapper_options={}) return unless has_authorization?(:update, Event.new) link_wrapper(event_revisions_path, wrapper_options, { :link_text => "Browse Deleted Events (#{EventRevision.deleted.count})" }) end def link_to_add_event_attendees(event, wrapper_options={}) return unless has_authorization?(:add_attendees, event) link_wrapper(new_event_attendee_path(event), wrapper_options, { :link_text => "Add #{h(event.name)} Attendees".html_safe }) end def link_to_edit_event(event, wrapper_options={}, link_options={}) return unless has_authorization?(:update, event) link_wrapper(edit_event_path(event), wrapper_options, { :link_text => "Edit #{h(event.name)}".html_safe }.merge!(link_options)) end def link_to_delete_event(event, wrapper_options={}, link_options={}) return unless has_authorization?(:delete, event) link_wrapper(event_path(event), { :highlight => false }.merge!(wrapper_options), { :link_text => "Delete #{event.name}".html_safe, :confirm => "Are you sure you want to permanently delete the #{event.name} #{event.event_type}?", :method => "delete" }.merge!(link_options)) end def links_to_edit_and_delete_event(event, wrapper_options={}, link_options={}) return unless has_authorization?(:delete, event) || has_authorization?(:update, event) link_to_edit_event(event, { :no_wrapper => true }.merge!(wrapper_options), { :link_text => 'edit' }.merge!(link_options)) + " " + link_to_delete_event(event, { :no_wrapper => true }.merge!(wrapper_options), { :link_text => 'delete' }.merge!(link_options)) end def form_for_browse_event_revisions(event) return unless has_authorization?(:update, event) render :partial => 'events/browse_event_revisions', :locals => { :event => event } end def render_event_navigation(event=nil) render :partial => 'event-calendar-shared/navigation', :locals => { :event => event } end def render_event_main_menu render :partial => 'event-calendar-shared/main_menu' end def render_flash render :partial => 'event-calendar-shared/flash', :object => flash end def event_calendar_asset_prefix 'event_calendar/' end def event_calendar_javascript_includes list = [ "#{event_calendar_asset_prefix}jquery.tablesorter.min.js", "#{event_calendar_asset_prefix}jquery-ui-1.7.2.custom.min.js", "#{event_calendar_asset_prefix}jquery.string.1.0-min.js", "#{event_calendar_asset_prefix}jquery.clonePosition.js", "#{event_calendar_asset_prefix}lowpro.jquery.js", "#{event_calendar_asset_prefix}fullcalendar.js", "#{event_calendar_asset_prefix}jquery.qtip-1.0.0-rc3.js", "#{event_calendar_asset_prefix}rails", "#{event_calendar_asset_prefix}event_calendar_behaviors.js", "#{event_calendar_asset_prefix}event_calendar.js" ] unless Rails.env == 'production' list.unshift("#{event_calendar_asset_prefix}jquery") else list.unshift("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js") end end end