2017 © Pedro Peláez
 

library laravel-fullcalendar

Laravel helper for FullCalendar.io

image

maddhatter/laravel-fullcalendar

Laravel helper for FullCalendar.io

  • Monday, September 18, 2017
  • by maddhatter
  • Repository
  • 40 Watchers
  • 430 Stars
  • 141,772 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 100 Forks
  • 44 Open issues
  • 16 Versions
  • 11 % Grown

The README.md

Laravel 5 Full Calendar Helper

Latest Stable Version Total Downloads Latest Unstable Version License, (*1)

For Laravel 4.2: use the laravel-4 branch, (*2)

This is a simple helper package to make generating http://fullcalendar.io in Laravel apps easier., (*3)

Installing

Require the package with composer using the following command:, (*4)

composer require maddhatter/laravel-fullcalendar

Or add the following to your composer.json's require section and composer update, (*5)

"require": {
    "maddhatter/laravel-fullcalendar": "~1.0"
}

Laravel 5.4 (and earlier)

Register the service provider in your app.php config file:, (*6)

MaddHatter\LaravelFullcalendar\ServiceProvider::class,

And optionally create an alias:, (*7)

'Calendar' => MaddHatter\LaravelFullcalendar\Facades\Calendar::class,

Laravel 5.5+

The provider and Calendar alias will be registered automatically., (*8)

You will also need to include fullcalendar.io's files in your HTML., (*9)

Usage

Creating Events

Using event():

The simpliest way to create an event is to pass the event information to Calendar::event():, (*10)

$event = \Calendar::event(
    "Valentine's Day", //event title
    true, //full day event?
    '2015-02-14', //start time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg)
    '2015-02-14', //end time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg),
    1, //optional event ID
    [
        'url' => 'http://full-calendar.io'
    ]
);

Implementing Event Interface

Alternatively, you can use an existing class and have it implement MaddHatter\LaravelFullcalendar\Event. An example of an Eloquent model that implements the Event interface:, (*11)

class EventModel extends Eloquent implements \MaddHatter\LaravelFullcalendar\Event
{

    protected $dates = ['start', 'end'];

    /**
     * Get the event's id number
     *
     * @return int
     */
    public function getId() {
        return $this->id;
    }

    /**
     * Get the event's title
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Is it an all day event?
     *
     * @return bool
     */
    public function isAllDay()
    {
        return (bool)$this->all_day;
    }

    /**
     * Get the start time
     *
     * @return DateTime
     */
    public function getStart()
    {
        return $this->start;
    }

    /**
     * Get the end time
     *
     * @return DateTime
     */
    public function getEnd()
    {
        return $this->end;
    }
}

IdentifiableEvent Interface

If you wish for your existing class to have event IDs, implement \MaddHatter\LaravelFullcalendar\IdentifiableEvent instead. This interface extends \MaddHatter\LaravelFullcalendar\Event to add a getId() method:, (*12)

class EventModel extends Eloquent implements \MaddHatter\LaravelFullcalendar\IdentifiableEvent
{

    // Implement all Event methods ...

    /**
     * Get the event's ID
     *
     * @return int|string|null
     */
    public function getId();

}

Additional Event Parameters

If you want to add additional parameters to your events, there are two options:, (*13)

Using Calendar::event()

Pass an array of 'parameter' => 'value' pairs as the 6th parameter to Calendar::event():, (*14)

$event = \Calendar::event(
    "Valentine's Day", //event title
    true, //full day event?
    '2015-02-14', //start time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg)
    '2015-02-14', //end time, must be a DateTime object or valid DateTime format (http://bit.ly/1z7QWbg),
    1, //optional event ID
    [
        'url' => 'http://full-calendar.io',
        //any other full-calendar supported parameters
    ]
);

Add an getEventOptions method to your event class

<?php
class CalendarEvent extends \Illuminate\Database\Eloquent\Model implements \MaddHatter\LaravelFullcalendar\Event
{
    //...

    /**
     * Optional FullCalendar.io settings for this event
     *
     * @return array
     */
    public function getEventOptions()
    {
        return [
            'color' => $this->background_color,
            //etc
        ];
    }

    //...
}

Create a Calendar

To create a calendar, in your route or controller, create your event(s), then pass them to Calendar::addEvent() or Calendar::addEvents() (to add an array of events). addEvent() and addEvents() can be used fluently (chained together). Their second parameter accepts an array of valid FullCalendar Event Object parameters., (*15)

Sample Controller code:

$events = [];

$events[] = \Calendar::event(
    'Event One', //event title
    false, //full day event?
    '2015-02-11T0800', //start time (you can also use Carbon instead of DateTime)
    '2015-02-12T0800', //end time (you can also use Carbon instead of DateTime)
    0 //optionally, you can specify an event ID
);

$events[] = \Calendar::event(
    "Valentine's Day", //event title
    true, //full day event?
    new \DateTime('2015-02-14'), //start time (you can also use Carbon instead of DateTime)
    new \DateTime('2015-02-14'), //end time (you can also use Carbon instead of DateTime)
    'stringEventId' //optionally, you can specify an event ID
);

$eloquentEvent = EventModel::first(); //EventModel implements MaddHatter\LaravelFullcalendar\Event

$calendar = \Calendar::addEvents($events) //add an array with addEvents
    ->addEvent($eloquentEvent, [ //set custom color fo this event
        'color' => '#800',
    ])->setOptions([ //set fullcalendar options
        'firstDay' => 1
    ])->setCallbacks([ //set fullcalendar callback options (will not be JSON encoded)
        'viewRender' => 'function() {alert("Callbacks!");}'
    ]);

return view('hello', compact('calendar'));

Sample View

Then to display, add the following code to your View:, (*16)

<!doctype html>
<html lang="en">
<head>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.js"></script>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.css"/>


    <style>
        /* ... */
    </style>
</head>
<body>
    {!! $calendar->calendar() !!}
    {!! $calendar->script() !!}
</body>
</html>

Note: The output from calendar() and script() must be non-escaped, so use {!! and !!} (or whatever you've configured your Blade compiler's raw tag directives as)., (*17)

The script() can be placed anywhere after calendar(), and must be after fullcalendar was included., (*18)

This will generate (in February 2015):, (*19)

, (*20)

The Versions

18/09 2017

dev-master

9999999-dev

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

18/09 2017

v1.3.0

1.3.0.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

18/04 2017

v1.2.5

1.2.5.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

01/11 2016

dev-laravel-4

dev-laravel-4

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

01/11 2016

v0.2.2

0.2.2.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

23/10 2015

v1.2.4

1.2.4.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

28/09 2015

v1.2.3

1.2.3.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

19/08 2015

v1.2.2

1.2.2.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

24/07 2015

v1.2.1

1.2.1.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

21/05 2015

v1.2.0

1.2.0.0

Laravel helper for FullCalendar.io

  Sources   Download

MIT

The Requires

 

by Shawn Tunney

16/03 2015

v1.1.1

1.1.1.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

16/03 2015

v0.2.1

0.2.1.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

13/03 2015

v0.2.0

0.2.0.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

13/03 2015

v1.1.0

1.1.0.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

14/02 2015

v1.0.0

1.0.0.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney

11/02 2015

v0.1.0

0.1.0.0

Laravel helper for FullCalendar.io

  Sources   Download

The Requires

 

by Shawn Tunney