From 7e3fa85a00d2598ad7653fc07de05af77558a824 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Sat, 27 Aug 2011 20:23:16 +0200 Subject: [PATCH 1/9] Fix displaying events in month view --- apps/calendar/js/calendar.js | 12 ++++++------ apps/calendar/js/calendar_init.js | 12 +++++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 82e0c3592c..116c571765 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -764,8 +764,8 @@ function oc_cal_load_events(loadview) { var weekdaynum = 0; var weeknum = 1; for(var i = 0; i <= 41; i++) { - var loadevents_month = dates[i][0]; - var loadevents_days = dates[i][1]; + var loadevents_month = dates[i][1]; + var loadevents_days = dates[i][0]; if( typeof (oc_cal_events[oc_cal_year][loadevents_month]) != "undefined") { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]) != "undefined") { var pnum = 0; @@ -786,12 +786,12 @@ function oc_cal_load_events(loadview) { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time]) != "undefined") { var eventnumber = 1; var eventcontainer = document.getElementById("events_onemonthview_" + weekdays[weekdaynum] + "_" + weeknum); - while( typeof (oc_cal_events[year][loadevents_month][loadevents_days][i][eventnumber]) != "undefined") { + while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") { var newp = document.createElement("p"); - newp.id = "onemonthview_" + i + "_" + eventnumber; + newp.id = "onemonthview_" + time + "_" + eventnumber; newp.className = "onemonthview_event"; eventcontainer.appendChild(newp); - document.getElementById("onemonthview_" + i + "_" + eventnumber).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][i][eventnumber]["description"]; + document.getElementById("onemonthview_" + time + "_" + eventnumber).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"]; eventnumber++; pnum++; } @@ -892,4 +892,4 @@ function oc_cal_choosecalendar(){ }else{ alert(t("calendar", "You can't open more than one dialog per site!")); } -} \ No newline at end of file +} diff --git a/apps/calendar/js/calendar_init.js b/apps/calendar/js/calendar_init.js index 3b5d37161c..72837f7a8b 100755 --- a/apps/calendar/js/calendar_init.js +++ b/apps/calendar/js/calendar_init.js @@ -52,8 +52,14 @@ var oc_cal_opendialog = 0; var oc_cal_datemonthyear = String(oc_cal_dayofmonth) + String(oc_cal_month) + String(oc_cal_year); var oc_cal_calendars = new Array(); //event vars -var oc_cal_events = new Array(2011); -oc_cal_events[2011] = new Array(0,1,2,3,4,5,6,7,8,9,10,11); +var oc_cal_events = new Array(); +oc_cal_events[2011] = new Array(); oc_cal_events[2011][7] = new Array(); oc_cal_events[2011][7][7] = new Array(); -oc_cal_events[2011][7][13] = new Array(); \ No newline at end of file +oc_cal_events[2011][7][7]['allday'] = new Array(); +oc_cal_events[2011][7][7]['allday'][1] = new Array(); +oc_cal_events[2011][7][7]['allday'][1]['description'] = 'allday event'; +oc_cal_events[2011][7][13] = new Array(); +oc_cal_events[2011][7][13][10] = new Array(); +oc_cal_events[2011][7][13][10][1] = new Array(); +oc_cal_events[2011][7][13][10][1]['description'] = '10:00 event'; From f795ed77c6f1e68aab1c172d6f243f23d5b9675e Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Sat, 27 Aug 2011 23:20:16 +0200 Subject: [PATCH 2/9] Use AJAX for calendar initialization --- apps/calendar/ajax/getcal.php | 6 ++++-- apps/calendar/js/calendar.js | 4 ++-- apps/calendar/js/calendar_init.js | 13 +++---------- apps/calendar/templates/part.getcal.php | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 apps/calendar/templates/part.getcal.php diff --git a/apps/calendar/ajax/getcal.php b/apps/calendar/ajax/getcal.php index 06ebebc83a..b20f22957c 100755 --- a/apps/calendar/ajax/getcal.php +++ b/apps/calendar/ajax/getcal.php @@ -17,8 +17,10 @@ * 59 Temple Place, Suite 330, Boston, * * MA 02111-1307 USA * *************************************************/ -require_once ("../../lib/base.php"); +require_once ("../../../lib/base.php"); if(!OC_USER::isLoggedIn()) { die(""); } -?> \ No newline at end of file +$output = new OC_TEMPLATE("calendar", "part.getcal"); +$output -> printpage(); +?> diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 116c571765..614a593ca7 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -461,7 +461,7 @@ function oc_cal_switch2today() { } function oc_cal_update_eventsvar(loadyear) { - $("#js_events").load(oc_webroot + "/apps/calendar/ajax/ajax.php?task=load_events&year=" + loadyear); + $("#js_events").load(oc_webroot + "/apps/calendar/ajax/getcal.php?year=" + loadyear); if(document.getElementById("js_events").innerHTML == "nosession") { alert("You are not logged in. That can happen if you don't use owncloud for a long time."); document.location(oc_webroot); @@ -471,7 +471,7 @@ function oc_cal_update_eventsvar(loadyear) { $( "#parsingfail_dialog" ).dialog(); }); } else { - events.concat(newevents); + oc_cal_events[loadyear] = newevents[loadyear]; } } diff --git a/apps/calendar/js/calendar_init.js b/apps/calendar/js/calendar_init.js index 72837f7a8b..ab40573da4 100755 --- a/apps/calendar/js/calendar_init.js +++ b/apps/calendar/js/calendar_init.js @@ -27,6 +27,8 @@ $(document).ready(function(){ alert("abc"); } }); + oc_cal_update_eventsvar(oc_cal_year); + oc_cal_update_view(''); }); //init date vars var oc_cal_date = new Date(); @@ -53,13 +55,4 @@ var oc_cal_datemonthyear = String(oc_cal_dayofmonth) + String(oc_cal_month) + S var oc_cal_calendars = new Array(); //event vars var oc_cal_events = new Array(); -oc_cal_events[2011] = new Array(); -oc_cal_events[2011][7] = new Array(); -oc_cal_events[2011][7][7] = new Array(); -oc_cal_events[2011][7][7]['allday'] = new Array(); -oc_cal_events[2011][7][7]['allday'][1] = new Array(); -oc_cal_events[2011][7][7]['allday'][1]['description'] = 'allday event'; -oc_cal_events[2011][7][13] = new Array(); -oc_cal_events[2011][7][13][10] = new Array(); -oc_cal_events[2011][7][13][10][1] = new Array(); -oc_cal_events[2011][7][13][10][1]['description'] = '10:00 event'; +oc_cal_events[oc_cal_year] = new Array(); diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php new file mode 100644 index 0000000000..ad266aafea --- /dev/null +++ b/apps/calendar/templates/part.getcal.php @@ -0,0 +1,15 @@ + + From 6e746e6ab273cb46c9e93a1d91c907edf8576c88 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Sun, 28 Aug 2011 01:28:09 +0200 Subject: [PATCH 3/9] Use data from database to load calendar events --- apps/calendar/js/calendar.js | 8 ++-- apps/calendar/js/calendar_init.js | 1 - apps/calendar/templates/part.getcal.php | 53 ++++++++++++++++++------- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 614a593ca7..9d5ec91427 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -461,18 +461,20 @@ function oc_cal_switch2today() { } function oc_cal_update_eventsvar(loadyear) { - $("#js_events").load(oc_webroot + "/apps/calendar/ajax/getcal.php?year=" + loadyear); - if(document.getElementById("js_events").innerHTML == "nosession") { + $.getJSON(oc_webroot + "/apps/calendar/ajax/getcal.php?year=" + loadyear, function(newevents, status) { + if(status == "nosession") { alert("You are not logged in. That can happen if you don't use owncloud for a long time."); document.location(oc_webroot); } - if(document.getElementById("js_events").innerHTML == "parsingfail" || typeof (newevents) == "undefined") { + if(status == "parsingfail" || typeof (newevents) == "undefined") { $(function() { $( "#parsingfail_dialog" ).dialog(); }); } else { oc_cal_events[loadyear] = newevents[loadyear]; + oc_cal_update_view('', ''); } + }); } function oc_cal_load_cal(loadview) { diff --git a/apps/calendar/js/calendar_init.js b/apps/calendar/js/calendar_init.js index ab40573da4..3140284094 100755 --- a/apps/calendar/js/calendar_init.js +++ b/apps/calendar/js/calendar_init.js @@ -28,7 +28,6 @@ $(document).ready(function(){ } }); oc_cal_update_eventsvar(oc_cal_year); - oc_cal_update_view(''); }); //init date vars var oc_cal_date = new Date(); diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php index ad266aafea..5959564bad 100644 --- a/apps/calendar/templates/part.getcal.php +++ b/apps/calendar/templates/part.getcal.php @@ -1,15 +1,38 @@ - - + $return_event); + } +} +$return_events[2011][7][7]['allday'][1]['description'] = 'allday event'; +$return_events[2011][7][13][10][1]['description'] = '10:00 event'; +echo json_encode($return_events); +?> From c306164426ff01c9e645764556ce0cb0472353c9 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Sun, 28 Aug 2011 02:07:26 +0200 Subject: [PATCH 4/9] Fix coding errors in oc_cal_load_events --- apps/calendar/js/calendar.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 9d5ec91427..c825fc1909 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -654,19 +654,20 @@ function oc_cal_load_events(loadview) { newp.id = "onedayview_allday_" + eventnumber; newp.className = "onedayview_event"; eventcontainer.appendChild(newp); - document.getElementById("onedayview_allday_" + eventnumber).innerHTML = events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth]["allday"][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth]["allday"][eventnumber]["description"]; eventnumber++; } } for( i = 0; i <= 23; i++) { if( typeof (oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth][i]) != "undefined") { var eventnumber = 1; + var eventcontainer = document.getElementById("onedayview_" + i); while( typeof (oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth][i][eventnumber]) != "undefined") { var newp = document.createElement("p"); newp.id = "onedayview_" + i + "_" + eventnumber; newp.className = "onedayview_event"; eventcontainer.appendChild(newp); - document.getElementById("onedayview_" + i + "_" + eventnumber).innerHTML = events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth][i][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth][i][eventnumber]["description"]; eventnumber++; } } @@ -677,8 +678,8 @@ function oc_cal_load_events(loadview) { var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"); var dates = oc_cal_generate_dates("oneweek"); for(var i = 0; i <= 6; i++) { - var loadevents_month = dates[i][0]; - var loadevents_days = dates[i][1]; + var loadevents_month = dates[i][1]; + var loadevents_days = dates[i][0]; if( typeof (oc_cal_events[oc_cal_year][loadevents_month]) != "undefined") { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]) != "undefined") { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"]) != "undefined") { @@ -689,7 +690,7 @@ function oc_cal_load_events(loadview) { newp.id = "oneweekview_" + weekdays[i] + "_allday_" + eventnumber; newp.className = "oneweekview_event"; eventcontainer.appendChild(newp); - document.getElementById("oneweekview_" + weekdays[i] + "_allday_" + eventnumber).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; eventnumber++; } } @@ -697,12 +698,12 @@ function oc_cal_load_events(loadview) { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time]) != "undefined") { var eventnumber = 1; var eventcontainer = document.getElementById("oneweekview_" + weekdays[i] + "_" + time); - while( typeof (oc_cal_events[year][loadevents_month][loadevents_days][eventnumber]) != "undefined") { + while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") { var newp = document.createElement("p"); - newp.id = "oneweekview_" + i + "_" + eventnumber; + newp.id = "oneweekview_" + weekdays[i] + "_" + time + "_" + eventnumber; newp.className = "oneweekview_event"; eventcontainer.appendChild(newp); - document.getElementById("oneweekview_" + i + "_" + eventnumber).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][i][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"]; eventnumber++; } } @@ -717,8 +718,8 @@ function oc_cal_load_events(loadview) { var weekdaynum = 0; var weeknum = 1; for(var i = 0; i <= 27; i++) { - var loadevents_month = dates[i][0]; - var loadevents_days = dates[i][1]; + var loadevents_month = dates[i][1]; + var loadevents_days = dates[i][0]; if( typeof (oc_cal_events[oc_cal_year][loadevents_month]) != "undefined") { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]) != "undefined") { var pnum = 0; @@ -730,7 +731,7 @@ function oc_cal_load_events(loadview) { newp.id = "fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum; newp.className = "fourweeksview_event"; eventcontainer.appendChild(newp); - document.getElementById("fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; eventnumber++; pnum++; } @@ -739,12 +740,12 @@ function oc_cal_load_events(loadview) { if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time]) != "undefined") { var eventnumber = 1; var eventcontainer = document.getElementById("events_fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum); - while( typeof (events[oc_cal_year][loadevents_month][loadevents_days][i][eventnumber]) != "undefined") { + while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") { var newp = document.createElement("p"); - newp.id = "fourweeksview_" + i + "_" + eventnumber; + newp.id = "fourweeksview_" + weekdays[i] + "_" + i + "_" + eventnumber; newp.className = "fourweeksview_event"; eventcontainer.appendChild(newp); - document.getElementById("fourweeksview_" + i + "_" + eventnumber).innerHTML = oc_cal_events[year][loadevents_month][loadevents_days][i][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"]; eventnumber++; pnum++; } @@ -779,7 +780,7 @@ function oc_cal_load_events(loadview) { newp.id = "onemonthview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum; newp.className = "onemonthview_event"; eventcontainer.appendChild(newp); - document.getElementById("onemonthview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"]; eventnumber++; pnum++; } @@ -790,10 +791,10 @@ function oc_cal_load_events(loadview) { var eventcontainer = document.getElementById("events_onemonthview_" + weekdays[weekdaynum] + "_" + weeknum); while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") { var newp = document.createElement("p"); - newp.id = "onemonthview_" + time + "_" + eventnumber; + newp.id = "onemonthview_" + weekdays[i] + "_" + time + "_" + eventnumber; newp.className = "onemonthview_event"; eventcontainer.appendChild(newp); - document.getElementById("onemonthview_" + time + "_" + eventnumber).innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"]; + newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"]; eventnumber++; pnum++; } From f18af2c60dab9d1feb94e6e14e3a9bead56f336e Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Mon, 29 Aug 2011 13:15:36 +0200 Subject: [PATCH 5/9] Add enable/disable for calendars --- apps/calendar/ajax/activation.php | 27 +++++++++++++++++++ apps/calendar/appinfo/database.xml | 8 ++++++ apps/calendar/js/calendar.js | 7 +++++ apps/calendar/lib/calendar.php | 20 +++++++++++--- .../templates/part.choosecalendar.php | 4 +-- apps/calendar/templates/part.getcal.php | 2 +- 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 apps/calendar/ajax/activation.php diff --git a/apps/calendar/ajax/activation.php b/apps/calendar/ajax/activation.php new file mode 100644 index 0000000000..51c5777f64 --- /dev/null +++ b/apps/calendar/ajax/activation.php @@ -0,0 +1,27 @@ + * + * * + * please write to the Free Software Foundation. * + * Address: * + * 59 Temple Place, Suite 330, Boston, * + * MA 02111-1307 USA * + *************************************************/ +require_once ("../../../lib/base.php"); +if(!OC_USER::isLoggedIn()) { + die(""); +} +$calendarid = $_POST['calendarid']; +OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']); +$cal = OC_Calendar_Calendar::findCalendar($calendarid); +echo $cal['active']; diff --git a/apps/calendar/appinfo/database.xml b/apps/calendar/appinfo/database.xml index 36fd56a051..159ca0127e 100644 --- a/apps/calendar/appinfo/database.xml +++ b/apps/calendar/appinfo/database.xml @@ -136,6 +136,14 @@ 100 + + active + integer + 1 + true + 4 + + ctag integer diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index c825fc1909..bfead8f393 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -896,3 +896,10 @@ function oc_cal_choosecalendar(){ alert(t("calendar", "You can't open more than one dialog per site!")); } } +function oc_cal_calender_activation(checkbox, calendarid) +{ + $.post(oc_webroot + "/apps/calendar/ajax/activation.php", { calendarid: calendarid, active: checkbox.checked?1:0 }, + function(data) { + checkbox.checked = data == 1; + }); +} diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php index 76f6b253b5..5a4bed1fbc 100644 --- a/apps/calendar/lib/calendar.php +++ b/apps/calendar/lib/calendar.php @@ -42,6 +42,7 @@ * userid VARCHAR(255), * displayname VARCHAR(100), * uri VARCHAR(100), + * active INTEGER UNSIGNED NOT NULL DEFAULT '0', * ctag INTEGER UNSIGNED NOT NULL DEFAULT '0', * description TEXT, * calendarorder INTEGER UNSIGNED NOT NULL DEFAULT '0', @@ -55,9 +56,15 @@ * This class manages our calendars */ class OC_Calendar_Calendar{ - public static function allCalendars($uid){ - $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_calendars WHERE userid = ?' ); - $result = $stmt->execute(array($uid)); + public static function allCalendars($uid, $active=null){ + $values = array($uid); + $active_where = ''; + if (!is_null($active)){ + $active_where = ' AND active = ?'; + $values[] = $active; + } + $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_calendars WHERE userid = ?' . $active_where ); + $result = $stmt->execute($values); $calendars = array(); while( $row = $result->fetchRow()){ @@ -121,6 +128,13 @@ class OC_Calendar_Calendar{ return true; } + public static function setCalendarActive($id,$active){ + $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET active = ? WHERE id = ?' ); + $stmt->execute(array($active, $id)); + + return true; + } + public static function touchCalendar($id){ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET ctag = ctag + 1 WHERE id = ?' ); $stmt->execute(array($id)); diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index 0aef52b438..3bd7e5ef59 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -4,8 +4,8 @@ $option_calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); for($i = 0; $i < count($option_calendars); $i++){ echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo "t("Download") . "\" class=\"action\">t("Rename") . "\" class=\"action\">"; echo ""; } diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php index 5959564bad..3e9a8f5799 100644 --- a/apps/calendar/templates/part.getcal.php +++ b/apps/calendar/templates/part.getcal.php @@ -1,5 +1,5 @@ Date: Mon, 29 Aug 2011 14:51:04 +0200 Subject: [PATCH 6/9] Convert DB startdate and enddate to the user timezone --- apps/calendar/templates/part.getcal.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php index 3e9a8f5799..1f434f7d68 100644 --- a/apps/calendar/templates/part.getcal.php +++ b/apps/calendar/templates/part.getcal.php @@ -3,26 +3,32 @@ $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1); $events = OC_Calendar_Calendar::allCalendarObjects($calendars[0]['id']); $select_year = $_GET["year"]; $return_events = array(); +$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London"); foreach($events as $event) { if ($select_year != substr($event['startdate'], 0, 4)) continue; - list($date, $time) = explode(' ', $event['startdate']); - list($year, $month, $day) = explode('-', $date); - list($hour, $min) = explode(':', $time); - $hour = (int)$hour; + $start_dt = new DateTime($event['startdate'], new DateTimeZone('UTC')); + $start_dt->setTimezone(new DateTimeZone($user_timezone)); + $end_dt = new DateTime($event['enddate'], new DateTimeZone('UTC')); + $end_dt->setTimezone(new DateTimeZone($user_timezone)); + $year = $start_dt->format('Y'); + $month = $start_dt->format('n') - 1; // return is 0 based + $day = $start_dt->format('j'); + $hour = $start_dt->format('G'); // hack if (strstr($event['calendardata'], 'DTSTART;VALUE=DATE:')) { $hour = 'allday'; } $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'startdate', 'enddate', 'repeating') as $prop) + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) { $return_event[$prop] = $event[$prop]; } + $return_event['startdate'] = $start_dt->format('Y-m-d H:i'); + $return_event['enddate'] = $end_dt->format('Y-m-d H:i'); $return_event['description'] = $event['summary']; - $month--; // return is 0 based if (isset($return_events[$year][$month][$day][$hour])) { $return_events[$year][$month][$day][$hour][] = $return_event; From a469d15bc8aa6d8b3df7a9697fe384b40e3f4ffb Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Tue, 30 Aug 2011 09:28:25 +0200 Subject: [PATCH 7/9] Add timezone setting to personal settings page --- apps/calendar/ajax/settimezone.php | 26 ++++++++++++++++++++++++++ apps/calendar/appinfo/app.php | 2 ++ apps/calendar/js/settings.js | 15 +++++++++++++++ apps/calendar/settings.php | 10 ++++++++++ apps/calendar/templates/settings.php | 19 +++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 apps/calendar/ajax/settimezone.php create mode 100644 apps/calendar/js/settings.js create mode 100644 apps/calendar/settings.php create mode 100644 apps/calendar/templates/settings.php diff --git a/apps/calendar/ajax/settimezone.php b/apps/calendar/ajax/settimezone.php new file mode 100644 index 0000000000..62e171c66b --- /dev/null +++ b/apps/calendar/ajax/settimezone.php @@ -0,0 +1,26 @@ + "error", "data" => array( "message" => $l->t("Authentication error") ))); + exit(); +} + +// Get data +if( isset( $_POST['timezone'] ) ){ + $timezone=$_POST['timezone']; + OC_Preferences::setValue( OC_User::getUser(), 'calendar', 'timezone', $timezone ); + echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("Timezone changed") ))); +}else{ + echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Invalid request") ))); +} + +?> diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php index 0e3d9c9379..5ec2177e20 100644 --- a/apps/calendar/appinfo/app.php +++ b/apps/calendar/appinfo/app.php @@ -16,3 +16,5 @@ OC_App::addNavigationEntry( array( 'href' => OC_Helper::linkTo( 'calendar', 'index.php' ), 'icon' => OC_Helper::imagePath( 'calendar', 'icon.png' ), 'name' => $l->t('Calendar'))); + +OC_App::registerPersonal('calendar', 'settings'); diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js new file mode 100644 index 0000000000..b2da81b0d0 --- /dev/null +++ b/apps/calendar/js/settings.js @@ -0,0 +1,15 @@ +$(document).ready(function(){ + $("#timezone").change( function(){ + // Serialize the data + var post = $( "#timezone" ).serialize(); + // Ajax foo + $.post( oc_webroot + '/apps/calendar/ajax/settimezone.php', post, function(data){ + if( data.status == "success" ){ + } + else{ + $('#timezoneerror').html( data.data.message ); + } + }); + return false; + }); +}); diff --git a/apps/calendar/settings.php b/apps/calendar/settings.php new file mode 100644 index 0000000000..bdf997eef7 --- /dev/null +++ b/apps/calendar/settings.php @@ -0,0 +1,10 @@ +assign('timezone',$timezone); +$tmpl->assign('timezones',DateTimeZone::listIdentifiers()); + +OC_Util::addScript('calendar','settings'); + +return $tmpl->fetchPage(); diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php new file mode 100644 index 0000000000..0b0a4f1c26 --- /dev/null +++ b/apps/calendar/templates/settings.php @@ -0,0 +1,19 @@ +
+
+ + +
+
From c8a544eaea0ffe9e5337f6c66662db6b9b4a22a6 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Tue, 30 Aug 2011 11:17:52 +0200 Subject: [PATCH 8/9] Use activew state of calendar in choosecalendar --- apps/calendar/templates/part.choosecalendar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index 3bd7e5ef59..ebda6ddfb9 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -4,7 +4,7 @@ $option_calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); for($i = 0; $i < count($option_calendars); $i++){ echo ""; - echo ""; + echo ""; echo ""; echo "t("Download") . "\" class=\"action\">t("Rename") . "\" class=\"action\">"; echo ""; From 2815db2b07580a38696d174f7c8d457c86992d8a Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Tue, 30 Aug 2011 15:02:34 +0200 Subject: [PATCH 9/9] Implement editing of calendar info --- apps/calendar/ajax/editcalendar.php | 29 ++++++++++++++ apps/calendar/ajax/updatecalendar.php | 39 +++++++++++++++++++ apps/calendar/js/calendar.js | 17 ++++++++ apps/calendar/lib/calendar.php | 4 +- .../templates/part.choosecalendar.php | 9 ++--- .../part.choosecalendar.rowfields.php | 4 ++ apps/calendar/templates/part.editcalendar.php | 32 +++++++++++++++ 7 files changed, 126 insertions(+), 8 deletions(-) create mode 100644 apps/calendar/ajax/editcalendar.php create mode 100644 apps/calendar/ajax/updatecalendar.php create mode 100644 apps/calendar/templates/part.choosecalendar.rowfields.php create mode 100644 apps/calendar/templates/part.editcalendar.php diff --git a/apps/calendar/ajax/editcalendar.php b/apps/calendar/ajax/editcalendar.php new file mode 100644 index 0000000000..e32bf45865 --- /dev/null +++ b/apps/calendar/ajax/editcalendar.php @@ -0,0 +1,29 @@ + * + * * + * please write to the Free Software Foundation. * + * Address: * + * 59 Temple Place, Suite 330, Boston, * + * MA 02111-1307 USA * + *************************************************/ +require_once('../../../lib/base.php'); +$l10n = new OC_L10N('calendar'); +if(!OC_USER::isLoggedIn()) { + die(""); +} +$calendar = OC_Calendar_Calendar::findCalendar($_GET['calendarid']); +$tmpl = new OC_Template("calendar", "part.editcalendar"); +$tmpl->assign('calendar',$calendar); +$tmpl->printPage(); +?> diff --git a/apps/calendar/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php new file mode 100644 index 0000000000..2836dda218 --- /dev/null +++ b/apps/calendar/ajax/updatecalendar.php @@ -0,0 +1,39 @@ + * + * * + * please write to the Free Software Foundation. * + * Address: * + * 59 Temple Place, Suite 330, Boston, * + * MA 02111-1307 USA * + *************************************************/ +require_once('../../../lib/base.php'); + +$l10n = new OC_L10N('calendar'); + +// We send json data +header( "Content-Type: application/jsonrequest" ); + +// Check if we are a user +if( !OC_User::isLoggedIn()){ + echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") ))); + exit(); +} + +$calendarid = $_POST['id']; +OC_Calendar_Calendar::editCalendar($calendarid, $_POST['name'], $_POST['description'], null, null, null, $_POST['color']); +OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']); +$calendar = OC_Calendar_Calendar::findCalendar($calendarid); +$tmpl = new OC_Template('calendar', 'part.calendar.row'); +$tmpl->assign('calendar', $calendar); +echo json_encode( array( "status" => "success", "data" => $tmpl->fetchPage() )); diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index bfead8f393..d9bad110a6 100755 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -903,3 +903,20 @@ function oc_cal_calender_activation(checkbox, calendarid) checkbox.checked = data == 1; }); } +function oc_cal_editcalendar(object, calendarid){ + $(object).closest('tr').load(oc_webroot + "/apps/calendar/ajax/editcalendar.php?calendarid="+calendarid); +} +function oc_cal_editcalendar_submit(button, calendarid){ + var displayname = $("#displayname_"+calendarid).val(); + var active = $("#active_"+calendarid+":checked").length; + var description = $("#description_"+calendarid).val(); + var calendarcolor = $("#calendarcolor_"+calendarid).val(); + + $.post("ajax/updatecalendar.php", { id: calendarid, name: displayname, active: active, description: description, color: calendarcolor }, + function(data){ + if(data.error == "true"){ + }else{ + $(button).closest('tr').html(data.data) + } + }, 'json'); +} diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php index 5a4bed1fbc..c1223b5b3a 100644 --- a/apps/calendar/lib/calendar.php +++ b/apps/calendar/lib/calendar.php @@ -112,14 +112,14 @@ class OC_Calendar_Calendar{ public static function editCalendar($id,$name=null,$description=null,$components=null,$timezone=null,$order=null,$color=null){ // Need these ones for checking uri - $calendar = self::find($id); + $calendar = self::findCalendar($id); // Keep old stuff if(is_null($name)) $name = $calendar['name']; if(is_null($description)) $description = $calendar['description']; if(is_null($components)) $components = $calendar['components']; if(is_null($timezone)) $timezone = $calendar['timezone']; - if(is_null($order)) $order = $calendar['order']; + if(is_null($order)) $order = $calendar['calendarorder']; if(is_null($color)) $color = $calendar['color']; $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET displayname=?,description=?,calendarorder=?,calendarcolor=?,timezone=?,components=?,ctag=ctag+1 WHERE id=?' ); diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index ebda6ddfb9..30866270ac 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -4,16 +4,13 @@ $option_calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser()); for($i = 0; $i < count($option_calendars); $i++){ echo ""; - echo ""; - echo ""; - echo "t("Download") . "\" class=\"action\">t("Rename") . "\" class=\"action\">"; + $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields'); + $tmpl->assign('calendar', $option_calendars[$i]); + $tmpl->printpage(); echo ""; } ?> -


-"> -