Table of Contents

Calendar Helper

A simple helper for creating an XHTML and CSS calendar.

The “calendar” and “day_months” methods will be automatically available to your view templates.

Installation

./script/plugin install calendar_helper

Using the calendar helper

Printing a calendar

<%= calendar :month => 10, :year => 2007 %>

Adding special meaning to a given day in the calendar.

The calendar helper implements something similar to blocks in Ruby by using PHP variable references.

This example will add the class specialDay to the days found in the array $list_of_special_days

<? while($calendar_helper->month_days(array('month' => 6, 'year' => 2010), $d)) :
 
  if(in_array($d->day, $list_of_special_days)){
 
    $d->cell_attributes = array('class' => 'specialDay');
 
  }
 
endwhile; ?>

Replacing cell content with view generated code

This example will replace the inner content of the cell with the content you output in the while loop, when the day is found in the $list_of_special_days array. This is really convenient for generating links and Ajax for a given day in the calendar.

<? while($calendar_helper->month_days(array('month' => 9, 'year' => 2006), $d)) :
 
   if(in_array($d->day, $list_of_special_days)) : ?>
 
       <%= link_to d.day, :controller => 'events', :day => d.day %>
 
    <? endif; 
 
endwhile; ?>

Generating the default stylesheets for the calendar

  ./script/generate calendar_styles

CSS will be copied to subdirectories of public/stylesheets/calendar.

Sample Calendars

Default Style

stylesheets/calendar/default/style.css

<%= calendar :year => 2007, :month => 10 %>

October
S M T W T F S
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3

Blue Style

stylesheets/calendar/blue/style.css

<%= calendar :year => 2007, :month => 10 %>

October
S M T W T F S
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3

Grey Style

stylesheets/calendar/blue/grey.css

Generated with

<%= calendar :year => 2007, :month => 10, :abbrev => 3 %>

October
Sun Mon Tue Wed Thu Fri Sat
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3

Red Style

stylesheets/calendar/blue/style.css

Generated using this Sintags snippet

<%= calendar({:year => 2007, :month => 10, :first_day_of_week => 1, :day_names => {'D','L','M','X','J','V','S'} }) %>

October
L M X J V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4