Installation
Install the package through Composer. Edit your project's composer.json
file by adding:
"require": {
"laravel/framework": "4.0.*",
"vics80/calendar": "dev-master"
}
Next, run the Composer update command from the Terminal:
composer update
Now all you have to do is add the service provider of the package and alias the package. To do this open your config/app.php
file.
Add a new line to the service providers
array:
'Vics80\Calendar\CalendarServiceProvider'
And finally add a new line to the aliases
array:
'Calendar' => 'Vics80\Calendar\Facades\Calendar',
Now you're ready to start using the calendar package in your application.
Usage
You can use the generate
method to generate a calendar.
// Generate a calendar for the current month and year
Calendar::generate();
// Generate a calendar for the specified year and month
Calendar::generate(2012, 6);
If you want to add events you have two ways to do it: The first way is to adding single events without attributes to the event's wrapper
// Add an array of events as the third parameter to add them to the calendar,
// keys should be the days of the month.
$data = array(
3 => 'http://example.com/news/article/2006/03/',
7 => 'http://example.com/news/article/2006/07/',
13 => 'http://example.com/news/article/2006/13/',
26 => 'http://example.com/news/article/2006/26/'
);
Calendar::generate(2006, 6, $data);
The second way is to adding multiple events in a same day. You cal also add somre attributes to the event's wrapper
// Add an array of events as the third parameter to add them to the calendar,
// keys should be the days of the month.
$data = array();
$data[3][] = array(
'content' => 'http://example.com/news/article/2006/03/',
'attr' => array(
'class' => 'some-css-class'
)
);
$data[3][] = array(
'content' => 'http://example.com/news/article/2006/04/',
'attr' => array(
'class' => 'some-css-class'
)
),
$data[12][] = array(
'content' => 'http://example.com/news/article/2006/10/',
'attr' => array(
'class' => 'another-css-class'
)
),
Calendar::generate(2006, 6, $data);
There are a few config variables you can set to change the layout of the calendar:
Preference | Default Value | Options | Description |
---|---|---|---|
template | None | None | A string containing your calendar template. See the template section below. |
local_time | time() | None | A Unix timestamp corresponding to the current time. |
start_day | sunday | Any week day (sunday, monday, tuesday, etc.) | Sets the day of the week the calendar should start on. |
month_type | long | long, short | Determines what version of the month name to use in the header. long = January, short = Jan. |
day_type | abr | long, short, abr | Determines what version of the weekday names to use in the column headers. long = Sunday, short = Sun, abr = Su. |
show_next_prev | false | true/false | Determines whether to display links allowing you to toggle to next/previous months. See information on this feature below. |
segments | false | true/false | Default the next/prev link will use a query string, if you set this var to true, URI segments will be used |
eventContainer | <p {attr}>{event} | Some HTML containing {event} and optional {attr} | HTML DOM to show the event ({event} is the string with the event's description and {attr} are the attributes defined in data array) |
You can set these values using the initialize
method
$config = array(
'start_day' => 'monday',
'month_type' => 'long'
);
Calendar::initialize($config);
Template
You can also change the template used for the calendar.
$template = '
{table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open}
{heading_row_start}<tr>{/heading_row_start}
{heading_previous_cell}<th><a href="{previous_url}"><<</a></th>{/heading_previous_cell}
{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th><a href="{next_url}">>></a></th>{/heading_next_cell}
{heading_row_end}</tr>{/heading_row_end}
{week_row_start}<tr>{/week_row_start}
{week_day_cell}<td>{week_day}</td>{/week_day_cell}
{week_row_end}</tr>{/week_row_end}
{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content}
{cal_cell_content_today}<div class="highlight"><a href="{content}">{day}</a></div>{/cal_cell_content_today}
{cal_cell_no_content}{day}{/cal_cell_no_content}
{cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}
{cal_cell_blank} {/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</table>{/table_close}
';
Calendar::initialize(array('template' => $template));
echo Calendar::generate();