]> source.dussan.org Git - nextcloud-server.git/commitdiff
Implement select event creation
authorBart Visscher <bartv@thisnet.nl>
Tue, 25 Oct 2011 17:57:20 +0000 (19:57 +0200)
committerBart Visscher <bartv@thisnet.nl>
Tue, 25 Oct 2011 17:57:20 +0000 (19:57 +0200)
apps/calendar/ajax/neweventform.php
apps/calendar/js/calendar.js

index d02b1163473b41147e1af42405c5ce72bb7d9fb1..588d364871cf29290de9adf60089afc1e761e0ba 100644 (file)
@@ -15,39 +15,35 @@ if(!OC_USER::isLoggedIn()) {
 }
 OC_JSON::checkAppEnabled('calendar');
 
-$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-$category_options = OC_Calendar_Object::getCategoryOptions($l10n);
-$repeat_options = OC_Calendar_Object::getRepeatOptions($l10n);
-$startday   = substr($_GET['d'], 0, 2);
-$startmonth = substr($_GET['d'], 2, 2);
-$startyear  = substr($_GET['d'], 4, 4);
-$allday = $_GET['t'] == 'allday';
-if(!$allday){
-       $starthour    = substr($_GET['t'], 0, 2);
-       $startminutes = substr($_GET['t'], 2, 2);
-}else{
-       $starthour = '00';
-       $startminutes = '00';
+if (!isset($_POST['start'])){
+       OC_JSON::error();
+       die;
 }
+$start = $_POST['start'];
+$end = $_POST['end'];
+$allday = $_POST['allday'];
 
-$datetimestamp = mktime($starthour, $startminutes, 0, $startmonth, $startday, $startyear);
-$duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', "60");
-$datetimestamp = $datetimestamp + ($duration * 60);
-$endmonth = date("m", $datetimestamp);
-$endday = date("d", $datetimestamp);
-$endyear = date("Y", $datetimestamp);
-$endtime = date("G", $datetimestamp);
-$endminutes = date("i", $datetimestamp);
-
+if (!$end){
+       $duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', '60');
+       $end = $start + ($duration * 60);
+}
+$start = new DateTime('@'.$start);
+$end = new DateTime('@'.$end);
+$timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', 'Europe/London');
+$start->setTimezone(new DateTimeZone($timezone));
+$end->setTimezone(new DateTimeZone($timezone));
 
+$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+$category_options = OC_Calendar_Object::getCategoryOptions($l10n);
+$repeat_options = OC_Calendar_Object::getRepeatOptions($l10n);
 
 $tmpl = new OC_Template('calendar', 'part.newevent');
 $tmpl->assign('calendar_options', $calendar_options);
 $tmpl->assign('category_options', $category_options);
-$tmpl->assign('startdate', $startday . '-' . $startmonth . '-' . $startyear);
-$tmpl->assign('starttime', $starthour . ':' . $startminutes);
-$tmpl->assign('enddate', $endday . '-' . $endmonth . '-' . $endyear);
-$tmpl->assign('endtime', ($endtime <= 9 ? '0' : '') . $endtime . ':' . $endminutes);
+$tmpl->assign('startdate', $start->format('d-m-Y'));
+$tmpl->assign('starttime', $start->format('H:i'));
+$tmpl->assign('enddate', $end->format('d-m-Y'));
+$tmpl->assign('endtime', $end->format('H:i'));
 $tmpl->assign('allday', $allday);
 $tmpl->printpage();
 ?>
index d63b9df36f3b10c41868af74cf4c8126b8d19ee0..30015ae68f042d3b202f2796a76df9312318f8be 100644 (file)
@@ -31,36 +31,17 @@ Calendar={
                                }
                        });
                },
-               newEvent:function(date, allDay, jsEvent, view){
-                       var dayofmonth = date.getDate();
-                       var month = date.getMonth();
-                       var year = date.getFullYear();
-                       var hour = date.getHours();
-                       var min = date.getMinutes();
-                       if(dayofmonth <= 9){
-                               dayofmonth = '0' + dayofmonth;
-                       }
-                       month++;
-                       if(month <= 9){
-                               month = '0' + month;
-                       }
-                       if(hour <= 9){
-                               hour = '0' + hour;
-                       }
-                       if(min <= 9){
-                               min = '0' + min;
-                       }
-                       var date = String(dayofmonth) + String(month) + String(year);
-                       if (allDay){
-                               var time = 'allday';
-                       }else{
-                               var time = String(hour) + String(min);
+               newEvent:function(start, end, allday){
+                       start = Math.round(start.getTime()/1000);
+                       if (end){
+                               end = Math.round(end.getTime()/1000);
                        }
+                       $('#calendar_holder').fullCalendar('unselect');
                        if($('#event').dialog('isOpen') == true){
                                // TODO: save event
                                $('#event').dialog('destroy').remove();
                        }else{
-                               $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'neweventform.php') + '?d=' + date + '&t=' + time, Calendar.UI.startEventDialog);
+                               $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'neweventform.php'), {start:start, end:end, allday:allday?1:0}, Calendar.UI.startEventDialog);
                        }
                },
                editEvent:function(calEvent, jsEvent, view){
@@ -509,7 +490,9 @@ $(document).ready(function(){
                        $('#datecontrol_date').html(view.title);
                        $.get(OC.filePath('calendar', 'ajax', 'changeview.php') + "?v="+view.name);
                },
-               dayClick: Calendar.UI.newEvent,
+               selectable: true,
+               selectHelper: true,
+               select: Calendar.UI.newEvent,
                eventClick: Calendar.UI.editEvent,
                eventDrop: Calendar.UI.moveEvent,
                eventResize: Calendar.UI.resizeEvent,