Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules

Discuss all other Modules here.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Event Calendar (Live Calendar) Starting from Monday


Reply

5 Posts   1081 Views

Avatar
Zyzzza

4 October 2011 at 11:00am (Last edited: 10 October 2011 10:14am), Community Member, 25 Posts

Hi all, hi Uncle Cheese ,

Very happy with the Event Calendar module , however stuck on localization. I need Live Calendar Widget to display week starting from Monday rather then Sunday. Is there any solution for that ?

I'm using the version from SVN, not sure which version is that, but rather new one :)

Thanks in advance

UPD: Chatting on IRC i realised that non of the guys there knew what is LiveCalendarWidget :) . So just to let you know it comes with event_calendar, and you DONT NEED TO INSTALL ANY WIDGETS :). You can simply call it on a template with $LiveCalendarWidget and it's cool :)

Avatar
Zyzzza

10 October 2011 at 10:08am Community Member, 25 Posts

Uncle Cheese - I'm still hoping you will give a proper answer for that :)

For now -for all those NON-USA people who are desperately looking for solution a Wild and Crazy hotfix :

in CalendarUI.class.php
in getWeeks function :

First generated week would have 8 days instead of 7
so in the first FOR cycle (where we iterate $i for weeks do something like :

$limit=7;
if($i==0){$limit=8;}

in second FOR cycle , which loop $j for week days chachge number 7 to $limit

for($j=0; $j < $limit; $j++)

So the only problem now - you've got 8 days in the first week so we have to skip it when it comes to
$days->push(new ArrayData(array(...
So we only push the day if its not the first day of the first week with ($i+$j>0)

And the job is done !

Now the only thing is to change LiveCalendarWidget.SS and replace $Sun with $Mon and $Mon with $Sun .

Works fine :) If UC will provide another solution, I would be more than happy to use it :)

Just so everyone could just copy-paste - here the whole getWeeks function from CalendarUI.class.php (around 184 line)

protected function getWeeks()
{
$weeks = new DataObjectSet();
$today = new sfDate();
$today->clearTime();
$this->date_counter->firstDayOfMonth()->firstDayOfWeek();
$view_start = new sfDate($this->date_counter->get());
$view_end = new sfDate($view_start->addDay($this->rows*7)->subtractDay()->get());
$view_start->reset();
$this->start_date->reset();
$event_map = $this->getEventsFor($view_start, $view_end);

      for($i=0; $i < $this->rows; $i++)
      {
      
       $days = new DataObjectSet();
       $week_range_start = $this->date_counter->format('Ymd');

       $limit=7;
       if($i==0){$limit=8;}
      
         for($j=0; $j < $limit; $j++)
         {
            $current_day = "";
            if(!$this->default_view) {
             if( ($this->date_counter->get() >= $this->anchor_start->get()) && ($this->date_counter->get() <= $this->anchor_end->get()) )
             $current_day = "currentDay";
}      
          if($i+$j>0)
          {
            $days->push(new ArrayData(array(
             'Today' => $this->date_counter->get() == $today->get() ? "calendarToday" : "",
             'OutOfMonth' => $this->date_counter->format('m') != $this->start_date->format('m') ? "calendarOutOfMonth" : "",
             'CurrentDay' => $current_day,
             'HasEvent' => in_array($this->date_counter->date(), $event_map) ? "hasEvent" : "",
             'Events' => $this->calendar->Events(null, $this->date_counter->date(), $this->date_counter->date()),             
             'ShowDayLink' => $this->calendar->Link('view')."/".$this->date_counter->format('Ymd'),
             'Number' => $this->date_counter->format('d')
            )));
          }

            $this->date_counter->addDay();
         
         }
         
         $week_range_end = $this->date_counter->subtractDay()->format('Ymd');
         $this->date_counter->addDay();
         
         
         
         
         
         $weeks->push(new ArrayData(array(
          'Days' => $days,
          'ShowWeekLink' => $this->calendar->Link('view')."/".$week_range_start."/".$week_range_end
         )));
      }
      
      
      
      
      
      return $weeks;
}

Avatar
redactuk

15 October 2011 at 12:37am (Last edited: 15 October 2011 12:38am), Community Member, 117 Posts

I think my dirty solution was in CalendarUI.class.php I changed:

$view_start = new sfDate($this->date_counter->get());

to

$view_start = new sfDate($this->date_counter->addDay()->get());

Avatar
UncleCheese

16 October 2011 at 5:29am 4085 Posts

Awesome patch! Thank you. I'll wrap some conditionals around it so that we can make this a configurable option.

v---------------
Silverstripe tips, tutorials, screencasts, and more. http://www.leftandmain.com

Avatar
wilsonStaff

17 October 2011 at 5:52am Community Member, 142 Posts

Unclecheese, first thanks for contributing.

I am a novice at SS and nowhere a phd in PHP!!!! :-)

I am trying to implement a calendar into my Page.ss template. I cant seem to do it.

I use:
event_calendar
dateobject_manager
along
multiform
all under SS 2.4.5

I can:
- create calendar pages
- create event_calendar pages

But when i click on DRAFT, i only see Page.ss template but, oddly, with the title of the Calendar Page.

HOW DO I INSERT THE CALENDAR into my Page.ss template?

I cant even see the calendar.

Thanks!