calndar

This is another calendar for Ruby on Rails applications. But this one is weekly calendar and it is vertical.



Installation

ruby script/plugin install git@github.com/kayinrage/weekly_vertical_calendar.git

You have to remember about Event model if you want to display events on this calendar
Event should have folowing fields:

  1. start_at (datetime)
  2. end_at (datetime)


Usage

in the controller:

  @date = Time.parse("#{params[:start_date]} || Time.now.utc")
  @date = @date - (@date.wday==0 ? 6 : @date.wday-1).days
  @start_date = Date.new(@date.year, @date.month, @date.day)
  @end_date = @start_date + 7
  @events = Event.find(:all, :conditions => ['(start_at between ? and ?) or (end_at between ? and ?) or (start_at < ? 
  and end_at > ?)',
                                              @start_date, @end_date, @start_date, @end_date, @start_date, @end_date])

in the view:

 <%= stylesheet_link_tag 'weekly_vertical_calendar' %>
 
 <% weekly_vertical_calendar_links(:date => @date) %>
 <% weekly_vertical_calendar(@events, :date => @date) do |w| %>
     <% w.week do |event| %>
         <% if event.start_at.strftime('%j') == event.end_at.strftime('%j') %>
             <%= event.start_at.strftime('%H:%M') %> -<%= event.end_at.strftime('%H:%M') %>
         <% else %>
             <%= event.start_at.strftime('%H:%M %d.%m') %> - <%= event.end_at.strftime('%H:%M %d.%m') %>
         <% end %>
         <%= link_to truncate(event.name), nil %>
     <% end -%>
 <% end -%>