+ Start a Discussion
Karthikeyan ChandranKarthikeyan Chandran 

Need help on my custom VF page.

Hi All,

I have below cutom VF page and controller in my sandbox.

VF page:
<apex:page controller="CalendarExample_Controller" action="{!pageLoad}">

    <link href="{!$Resource.fullCalendarCSS}" rel="stylesheet" />
    <link href="{!$Resource.fullCalendarPrintCSS}" rel="stylesheet" media="print" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
    <script src="{!$Resource.fullCalendarMinJS}"></script>
        //We need to wrap everything in a doc.ready function so that the code fires after the DOM is loaded
        $(document).ready(function() {  
            //Call the fullCallendar method. You can replace the '#calendar' with the ID of the dom element where you want the calendar to go.
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'agendaDay'
                editable: false,
                    //At run time, this APEX Repeat will reneder the array elements for the events array
                    <apex:repeat value="{!events}" var="e">
                            title: "{!e.title}",
                            start: '{!e.startString}',
                            end: '{!e.endString}',
                            url: '{!e.url}',
                            allDay: {!e.allDay},
                            className: '{!e.className}'
    <!--some styling. Modify this to fit your needs-->
        #cal-options {float:left;}
        #cal-legend { float:right;}
        #cal-legend ul {margin:0;padding:0;list-style:none;}
        #cal-legend ul li {margin:0;padding:5px;float:left;}
        #cal-legend ul li span {display:block; height:16px; width:16px; margin-right:4px; float:left; border-radius:4px;}
        #calendar {margin-top:20px;}
        #calendar a:hover {color:#fff !important;}
        .fc-event-inner {padding:3px;}
        .event-birthday {background:#56458c;border-color:#56458c;}
        .event-campaign {background:#cc9933;border-color:#cc9933;}
        .event-personal {background:#1797c0;border-color:#1797c0;}
    <apex:sectionHeader title="My Calendar Example"/>
    <apex:outputPanel id="calPanel">
        <apex:form >
            <div id="cal-options">
                <apex:commandButton value="{!IF(includeMyEvents,'Hide My Events','Show My Events')}" action="{!toggleMyEvents}"/>
            <div id="cal-legend">
                    <!--<li><span class="event-birthday"></span>Contact's Birthdays</li>
                    <li><span class="event-campaign"></span>Campaigns</li>-->
                    <li style="{!IF(includeMyEvents,'','display:none')}"><span class="event-personal"></span>My Events</li>
                <apex:pageBlock id="OrderGroup" >
                 <apex:pageBlockSection title="User Group" collapsible="false">
                     <apex:selectList size="1">
                        <apex:selectOptions value="{!Groups}"></apex:selectOptions>
                     <!--<apex:outputText value="{!selectedGroup}" label="You have selected:"/>  -->
                <div style="clear:both;"><!--fix floats--></div>
            <div style="clear:both;"><!--fix floats--></div>
            <div id="calendar"></div>


public class CalendarExample_Controller {

   public Boolean includeMyEvents {get;set;}
   public list<calEvent> events {get;set;}

   //The calendar plugin is expecting dates is a certain format. We can use this string to get it formated correctly
   String dtFormat = 'EEE, d MMM yyyy HH:mm:ss z';

   public CalendarExample_Controller() {
      //Default showing my events to on
      includeMyEvents = true;

   public PageReference pageLoad() {
      events = new list<calEvent>();
      //Get Contact's Birthdays
      for(Contact cont : [select Id, Birthdate, FirstName, LastName from Contact where Birthdate != null]){
         //here we need to replace the birth year with the current year so that it will show up on this years calendar
         DateTime startDT = datetime.newInstance(Date.Today().Year(),cont.Birthdate.Month(), cont.Birthdate.Day());
         calEvent bday = new calEvent();

         bday.title = cont.FirstName + ' ' + cont.LastName + '\'s Birthday!';
         bday.allDay = true;
         bday.startString = startDT.format(dtFormat);
         //Because this is an all day event that only spans one day, we can leave the send date null
         bday.endString = '';
         bday.url = '/' + cont.Id;
         bday.className = 'event-birthday';

      //Get my Events if we have selected the correct option
//for(Event evnt: [select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event where OwnerID = :UserInfo.getUserId()]){
for(Event evnt: [select Id, Subject, isAllDayEvent, StartDateTime, EndDateTime from Event where OwnerID = '005j000000ByiOc']){
            DateTime startDT = evnt.StartDateTime;
            DateTime endDT = evnt.EndDateTime;
            calEvent myEvent = new calEvent();

            myEvent.title = evnt.Subject;
            myEvent.allDay = evnt.isAllDayEvent;
            myEvent.startString = startDT.format(dtFormat);
            myEvent.endString = endDT.format(dtFormat);
            myEvent.url = '/' + evnt.Id;
            myEvent.className = 'event-personal';
      return null;

   public PageReference toggleMyEvents() {
         includeMyEvents = false;
         includeMyEvents = true;
      return null;

   //Class to hold calendar event data
   public class calEvent{
      public String title {get;set;}
      public Boolean allDay {get;set;}
      public String startString {get;set;}
      public String endString {get;set;}
      public String url {get;set;}
      public String className {get;set;}
   public List<SelectOption> getGroups(){
    List<SelectOption> publicgroup = new List<SelectOption>();    
    for(Group pg: [select id ,name from group]){
            publicgroup.add(new SelectOption(pg.name,pg.name));
    return publicgroup ;

Can anyone correct this code and fix to multi user calender view?

Thanks &Regards,
Karthikeyan Chandran