summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorGeorg Ehrke <georg.stefan.germany@googlemail.com>2011-09-01 16:15:48 +0200
committerGeorg Ehrke <georg.stefan.germany@googlemail.com>2011-09-01 16:15:48 +0200
commit58129f9a119fb9df977ac99d18cc3dac1cad4fec (patch)
treee4f044e1cc7ddfb98f0b51fe334ca6d92e987e20 /apps
parent3972774a2ebf82b3bae2dacef7f8aa1aae279096 (diff)
parenta7496b1c9d1005b962862cb233d7466d33d3bed1 (diff)
downloadnextcloud-server-58129f9a119fb9df977ac99d18cc3dac1cad4fec.tar.gz
nextcloud-server-58129f9a119fb9df977ac99d18cc3dac1cad4fec.zip
Merge branch 'calendar' of git://gitorious.org/owncloud-dump/owncloud-dump
Diffstat (limited to 'apps')
-rwxr-xr-xapps/calendar/ajax/activation.php27
-rwxr-xr-xapps/calendar/ajax/changeview.php26
-rwxr-xr-xapps/calendar/ajax/choosecalendar.php27
-rwxr-xr-xapps/calendar/ajax/editcalendar.php29
-rwxr-xr-xapps/calendar/ajax/editevent.php22
-rwxr-xr-xapps/calendar/ajax/editeventform.php1
-rwxr-xr-xapps/calendar/ajax/getcal.php26
-rwxr-xr-xapps/calendar/ajax/geteventinfo.php22
-rwxr-xr-xapps/calendar/ajax/newevent.php158
-rwxr-xr-xapps/calendar/ajax/neweventform.php27
-rwxr-xr-xapps/calendar/ajax/settimezone.php26
-rwxr-xr-xapps/calendar/ajax/updatecalendar.php39
-rwxr-xr-xapps/calendar/appinfo/app.php20
-rwxr-xr-xapps/calendar/appinfo/database.xml197
-rwxr-xr-xapps/calendar/appinfo/info.xml10
-rwxr-xr-xapps/calendar/caldav.php48
-rwxr-xr-xapps/calendar/css/style.css55
-rwxr-xr-xapps/calendar/img/icon.pngbin0 -> 398 bytes
-rwxr-xr-xapps/calendar/index.php36
-rwxr-xr-xapps/calendar/js/calendar.js886
-rwxr-xr-xapps/calendar/js/calendar_init.js55
-rwxr-xr-xapps/calendar/js/settings.js15
-rw-r--r--apps/calendar/known bugs1
-rwxr-xr-xapps/calendar/l10n/de.php78
-rwxr-xr-xapps/calendar/l10n/es.php68
-rwxr-xr-xapps/calendar/l10n/xgettextfiles8
-rwxr-xr-xapps/calendar/lib/calendar.php354
-rwxr-xr-xapps/calendar/lib/connector_sabre.php311
-rwxr-xr-xapps/calendar/lib/hooks.php41
-rwxr-xr-xapps/calendar/settings.php10
-rwxr-xr-xapps/calendar/templates/calendar.php953
-rwxr-xr-xapps/calendar/templates/part.choosecalendar.php26
-rwxr-xr-xapps/calendar/templates/part.choosecalendar.rowfields.php4
-rwxr-xr-xapps/calendar/templates/part.editcalendar.php32
-rwxr-xr-xapps/calendar/templates/part.editevent.php133
-rwxr-xr-xapps/calendar/templates/part.eventinfo.php87
-rwxr-xr-xapps/calendar/templates/part.getcal.php42
-rwxr-xr-xapps/calendar/templates/part.newevent.php202
-rwxr-xr-xapps/calendar/templates/settings.php19
39 files changed, 4121 insertions, 0 deletions
diff --git a/apps/calendar/ajax/activation.php b/apps/calendar/ajax/activation.php
new file mode 100755
index 00000000000..51c5777f643
--- /dev/null
+++ b/apps/calendar/ajax/activation.php
@@ -0,0 +1,27 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$calendarid = $_POST['calendarid'];
+OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
+$cal = OC_Calendar_Calendar::findCalendar($calendarid);
+echo $cal['active'];
diff --git a/apps/calendar/ajax/changeview.php b/apps/calendar/ajax/changeview.php
new file mode 100755
index 00000000000..d3a00bf1728
--- /dev/null
+++ b/apps/calendar/ajax/changeview.php
@@ -0,0 +1,26 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$currentview = $_GET["v"];
+OC_Preferences::setValue(OC_USER::getUser(), "calendar", "currentview", $currentview);
+?> \ No newline at end of file
diff --git a/apps/calendar/ajax/choosecalendar.php b/apps/calendar/ajax/choosecalendar.php
new file mode 100755
index 00000000000..03765dabe9d
--- /dev/null
+++ b/apps/calendar/ajax/choosecalendar.php
@@ -0,0 +1,27 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$output = new OC_TEMPLATE("calendar", "part.choosecalendar");
+$output -> printpage();
+?> \ No newline at end of file
diff --git a/apps/calendar/ajax/editcalendar.php b/apps/calendar/ajax/editcalendar.php
new file mode 100755
index 00000000000..e32bf458652
--- /dev/null
+++ b/apps/calendar/ajax/editcalendar.php
@@ -0,0 +1,29 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$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/editevent.php b/apps/calendar/ajax/editevent.php
new file mode 100755
index 00000000000..6182a60e611
--- /dev/null
+++ b/apps/calendar/ajax/editevent.php
@@ -0,0 +1,22 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * please write to the Free Software Foundation. *
+ * Address: *
+ * 59 Temple Place, Suite 330, Boston, *
+ * MA 02111-1307 USA *
+ *************************************************/
+
+?>
diff --git a/apps/calendar/ajax/editeventform.php b/apps/calendar/ajax/editeventform.php
new file mode 100755
index 00000000000..8d1c8b69c3f
--- /dev/null
+++ b/apps/calendar/ajax/editeventform.php
@@ -0,0 +1 @@
+
diff --git a/apps/calendar/ajax/getcal.php b/apps/calendar/ajax/getcal.php
new file mode 100755
index 00000000000..b20f22957c3
--- /dev/null
+++ b/apps/calendar/ajax/getcal.php
@@ -0,0 +1,26 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$output = new OC_TEMPLATE("calendar", "part.getcal");
+$output -> printpage();
+?>
diff --git a/apps/calendar/ajax/geteventinfo.php b/apps/calendar/ajax/geteventinfo.php
new file mode 100755
index 00000000000..6182a60e611
--- /dev/null
+++ b/apps/calendar/ajax/geteventinfo.php
@@ -0,0 +1,22 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * please write to the Free Software Foundation. *
+ * Address: *
+ * 59 Temple Place, Suite 330, Boston, *
+ * MA 02111-1307 USA *
+ *************************************************/
+
+?>
diff --git a/apps/calendar/ajax/newevent.php b/apps/calendar/ajax/newevent.php
new file mode 100755
index 00000000000..8ea39c2346c
--- /dev/null
+++ b/apps/calendar/ajax/newevent.php
@@ -0,0 +1,158 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+//short variables
+$title = $_POST["title"];
+$location = $_POST["location"];
+$cat = $_POST["cat"];
+$cal = $_POST["cal"];
+$cal = "1";
+$allday = $_POST["allday"];
+$from = $_POST["from"];
+$fromtime = $_POST["fromtime"];
+$to = $_POST["to"];
+$totime = $_POST["totime"];
+$description = $_POST["description"];
+$repeat = $_POST["repeat"];
+/*switch($_POST["repeatfreq"]){
+ case "DAILY":
+ $repeatfreq = "DAILY";
+ case "WEEKLY":
+ $repeatfreq = "WEEKLY";
+ case "WEEKDAY":
+ $repeatfreq = "DAILY;BYDAY=MO,TU,WE,TH,FR"; //load weeksdayss from userconfig when weekdays are choosable
+ case "":
+ $repeatfreq = "";
+ case "":
+ $repeatfreq = "";
+ case "":
+ $repeatfreq = "";
+ default:
+ $repeat = "false";
+}*/
+$repeat = "false";
+//validate variables
+$errnum = 0;
+$errarr = array("title"=>"false", "cal"=>"false", "from"=>"false", "fromtime"=>"false", "to"=>"false", "totime"=>"false", "endbeforestart"=>"false");
+if($title == ""){
+ $errarr["title"] = "true";
+ $errnum++;
+}
+$calendar = OC_Calendar_Calendar::findCalendar($cal);
+if($calendar["userid"] != OC_User::getUser()){
+ $errarr["cal"] = "true";
+ $errnum++;
+}
+$fromday = substr($_POST["from"], 0, 2);
+$frommonth = substr($_POST["from"], 3, 2);
+$fromyear = substr($_POST["from"], 6, 4);
+if(!checkdate($frommonth, $fromday, $fromyear)){
+ $errarr["from"] = "true";
+ $errnum++;
+}
+$fromhours = substr($_POST["fromtime"], 0, 2);
+$fromminutes = substr($_POST["fromtime"], 3, 2);
+if($fromhours > 24 || $fromminutes > 60 || $fromtime == ""){
+ $errarr["fromtime"] = "true";
+ $errnum++;
+}
+
+$today = substr($_POST["to"], 0, 2);
+$tomonth = substr($_POST["to"], 3, 2);
+$toyear = substr($_POST["to"], 6, 4);
+if(!checkdate($tomonth, $today, $toyear)){
+ $errarr["to"] = "true";
+ $errnum++;
+}
+$tohours = substr($_POST["totime"], 0, 2);
+$tominutes = substr($_POST["totime"], 3, 2);
+if($tohours > 24 || $tominutes > 60 || $totime == ""){
+ $errarr["totime"] = "true";
+ $errnum++;
+}
+if($today < $fromday && $frommonth == $tomonth && $fromyear == $toyear){
+ $errarr["endbeforestart"] = "true";
+ $errnum++;
+}
+if($today == $fromday && $frommonth > $tomonth && $fromyear == $toyear){
+ $errarr["endbeforestart"] = "true";
+ $errnum++;
+}
+if($today == $fromday && $frommonth == $tomonth && $fromyear > $toyear){
+ $errarr["endbeforestart"] = "true";
+ $errnum++;
+}
+if($fromday == $today && $frommonth == $tomonth && $fromyear == $toyear){
+ if($tohours < $fromhours){
+ $errarr["endbeforestart"] = "true";
+ $errnum++;
+ }
+ if($tohours == $fromhours && $tominutes < $fromminutes){
+ $errarr["endbeforestart"] = "true";
+ $errnum++;
+ }
+}
+if($errnum != 0){
+ //show validate errors
+ $errarr["error"] = "true";
+ echo json_encode($errarr);
+ exit;
+}else{
+ $data = "BEGIN:VCALENDAR\nPRODID:ownCloud Calendar\nVERSION:2.0\n";
+ $timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London");
+ $created = date("Ymd") . "T" . date("His");
+ $data .= "BEGIN:VEVENT\n";
+ $data .= "CREATED:" . $created . "\nLAST-MODIFIED:" . $created . "\nDTSTAMP:" . $created . "\n";
+ $data .= "SUMMARY:" . $title . "\n";
+ if($allday == "true"){
+ $start = $fromyear . $frommonth . $fromday;
+ $unixend = mktime(0,0,0,$tomonth, $today, $toyear) + (24 * 60 * 60);
+ $end = date("Ymd", $unixend);
+ $data .= "DTSTART;VALUE=DATE:" . $start . "\n";
+ $data .= "DTEND;VALUE=DATE:" . $end . "\n";
+ }else{
+ $start = $fromyear . $frommonth . $fromday . "T" . $fromhours . $fromminutes . "00";
+ $end = $toyear . $tomonth . $today . "T" . $tohours . $tominutes . "00";
+ $data .= "DTSTART;TZID=" . $timezone . ":" . $start . "\n";
+ $data .= "DTEND;TZID=" . $timezone . ":" . $end . "\n";
+ }
+ if($location != ""){
+ $data .= "LOCATION:" . $location . "\n";
+ }
+ if($description != ""){
+ $des = str_replace("\n","\\n", $description);
+ $data .= "DESCRIPTION:" . $des . "\n";
+ }
+ if($cat != "none"){
+ $data .= "CATEGORIES:" . $cat . "\n";
+ }
+ if($repeat == "true"){
+ $data .= "RRULE:" . $repeat . "\n";
+ }
+ $data .= "END:VEVENT\nEND:VCALENDAR";
+ $result = OC_Calendar_Calendar::addCalendarObject($cal, $data);
+ echo json_encode(array("success"=>"true"));
+}
+?> \ No newline at end of file
diff --git a/apps/calendar/ajax/neweventform.php b/apps/calendar/ajax/neweventform.php
new file mode 100755
index 00000000000..b1cb6d5b816
--- /dev/null
+++ b/apps/calendar/ajax/neweventform.php
@@ -0,0 +1,27 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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("<script type=\"text/javascript\">document.location = oc_webroot;</script>");
+}
+$output = new OC_TEMPLATE("calendar", "part.newevent");
+$output -> printpage();
+?> \ No newline at end of file
diff --git a/apps/calendar/ajax/settimezone.php b/apps/calendar/ajax/settimezone.php
new file mode 100755
index 00000000000..62e171c66b9
--- /dev/null
+++ b/apps/calendar/ajax/settimezone.php
@@ -0,0 +1,26 @@
+<?php
+
+// Init owncloud
+require_once('../../../lib/base.php');
+
+$l=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();
+}
+
+// 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/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php
new file mode 100755
index 00000000000..2836dda218a
--- /dev/null
+++ b/apps/calendar/ajax/updatecalendar.php
@@ -0,0 +1,39 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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/appinfo/app.php b/apps/calendar/appinfo/app.php
new file mode 100755
index 00000000000..5ec2177e20c
--- /dev/null
+++ b/apps/calendar/appinfo/app.php
@@ -0,0 +1,20 @@
+<?php
+$l=new OC_L10N('calendar');
+OC::$CLASSPATH['OC_Calendar_Calendar'] = 'apps/calendar/lib/calendar.php';
+OC::$CLASSPATH['OC_Calendar_Hooks'] = 'apps/calendar/lib/hooks.php';
+OC::$CLASSPATH['OC_Connector_Sabre_CalDAV'] = 'apps/calendar/lib/connector_sabre.php';
+OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Calendar_Hooks', 'deleteUser');
+
+OC_App::register( array(
+ 'order' => 10,
+ 'id' => 'calendar',
+ 'name' => 'Calendar' ));
+
+OC_App::addNavigationEntry( array(
+ 'id' => 'calendar_index',
+ 'order' => 10,
+ '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/appinfo/database.xml b/apps/calendar/appinfo/database.xml
new file mode 100755
index 00000000000..159ca0127e4
--- /dev/null
+++ b/apps/calendar/appinfo/database.xml
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<database>
+
+ <name>*dbname*</name>
+ <create>true</create>
+ <overwrite>false</overwrite>
+
+ <charset>utf8</charset>
+
+ <table>
+
+ <name>*dbprefix*calendar_objects</name>
+
+ <declaration>
+
+ <field>
+ <name>id</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <autoincrement>1</autoincrement>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>calendarid</name>
+ <type>integer</type>
+ <default></default>
+ <notnull>true</notnull>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>objecttype</name>
+ <type>text</type>
+ <default></default>
+ <notnull>true</notnull>
+ <length>40</length>
+ </field>
+
+ <field>
+ <name>startdate</name>
+ <type>timestamp</type>
+ <default>0000-00-00 00:00:00</default>
+ <notnull>false</notnull>
+ </field>
+
+ <field>
+ <name>enddate</name>
+ <type>timestamp</type>
+ <default>0000-00-00 00:00:00</default>
+ <notnull>false</notnull>
+ </field>
+
+ <field>
+ <name>repeating</name>
+ <type>integer</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>summary</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>255</length>
+ </field>
+
+ <field>
+ <name>calendardata</name>
+ <type>clob</type>
+ <notnull>false</notnull>
+ </field>
+
+ <field>
+ <name>uri</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>100</length>
+ </field>
+
+ <field>
+ <name>lastmodified</name>
+ <type>integer</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>4</length>
+ </field>
+
+ </declaration>
+
+ </table>
+
+ <table>
+
+ <name>*dbprefix*calendar_calendars</name>
+
+ <declaration>
+
+ <field>
+ <name>id</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <autoincrement>1</autoincrement>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>userid</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>255</length>
+ </field>
+
+ <field>
+ <name>displayname</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>100</length>
+ </field>
+
+ <field>
+ <name>uri</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>100</length>
+ </field>
+
+ <field>
+ <name>active</name>
+ <type>integer</type>
+ <default>1</default>
+ <notnull>true</notnull>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>ctag</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>description</name>
+ <type>clob</type>
+ <notnull>false</notnull>
+ </field>
+
+ <field>
+ <name>calendarorder</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>calendarcolor</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>10</length>
+ </field>
+
+ <field>
+ <name>timezone</name>
+ <type>clob</type>
+ <notnull>false</notnull>
+ </field>
+
+ <field>
+ <name>components</name>
+ <type>text</type>
+ <default></default>
+ <notnull>false</notnull>
+ <length>20</length>
+ </field>
+
+ </declaration>
+
+ </table>
+
+</database>
diff --git a/apps/calendar/appinfo/info.xml b/apps/calendar/appinfo/info.xml
new file mode 100755
index 00000000000..23a07588cb4
--- /dev/null
+++ b/apps/calendar/appinfo/info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<info>
+ <id>calendar</id>
+ <name>Calendar</name>
+ <version>0.1</version>
+ <licence>AGPL</licence>
+ <author>Jakob Sack, Georg Ehrke (Userinterface)</author>
+ <require>2</require>
+ <description>CalDAV server with viewing support.</description>
+</info>
diff --git a/apps/calendar/caldav.php b/apps/calendar/caldav.php
new file mode 100755
index 00000000000..49fc9633365
--- /dev/null
+++ b/apps/calendar/caldav.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * ownCloud - Calendar
+ *
+ * @author Jakob Sack
+ * @copyright 2011 Jakob Sack mail@jakobsack.de
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+// Do not load FS ...
+$RUNTIME_NOSETUPFS = true;
+
+require_once('../../lib/base.php');
+
+// Backends
+$authBackend = new OC_Connector_Sabre_Auth();
+$principalBackend = new OC_Connector_Sabre_Principal();
+$caldavBackend = new OC_Connector_Sabre_CalDAV();
+
+// Root nodes
+$nodes = array(
+ new Sabre_DAVACL_PrincipalCollection($principalBackend),
+ new Sabre_CalDAV_CalendarRootNode($principalBackend, $caldavBackend),
+);
+
+// Fire up server
+$server = new Sabre_DAV_Server($nodes);
+$server->setBaseUri($WEBROOT.'/apps/calendar/caldav.php');
+// Add plugins
+$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud'));
+$server->addPlugin(new Sabre_CalDAV_Plugin());
+$server->addPlugin(new Sabre_DAVACL_Plugin());
+
+// And off we go!
+$server->exec();
diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css
new file mode 100755
index 00000000000..afb530bcff0
--- /dev/null
+++ b/apps/calendar/css/style.css
@@ -0,0 +1,55 @@
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * please write to the Free Software Foundation. *
+ * Address: *
+ * 59 Temple Place, Suite 330, Boston, *
+ * MA 02111-1307 USA *
+ *************************************************/
+#calendar_holder{position: absolute; top: 80px; bottom: 0px; left: 160px; right: 0px;}
+
+#view {margin-left: 10px; float: left; font-size: 12px;}
+#datecontrol {text-align: center;}
+#datecontrol_left{font-size: 12px;}
+#datecontrol_right{font-size: 12px;}
+#datecontrol_date_label {margin: 0; padding: 0; font-size: 12px;}
+#choosecalendar {margin-right: 170px; float: right; font-size: 12px;}
+
+#choosecalendar_dialog {display: none;}
+#newentry_dialog {display: none;}
+#editentry_dialog {display: none;}
+#parsingfail_dialog{display: none;}
+
+#view {margin-left: 10px; float: left; font-size: 12px;}
+#onedayview, #oneweekview, #fourweeksview, #onemonthview, #listview {display: none;}
+#onedayview table {margin: 0; padding: 0; width: 100%; border-spacing:1px; background: #EEEEEE;}
+#oneweekview table {margin: 0; padding: 0; width: 100%; border-spacing:1px; background: #EEEEEE;}
+#fourweeksview table {margin: 0; padding: 0; width: 100%; border-spacing:1px; background: #EEEEEE;}
+#onemonthview table {margin: 0; padding: 0; width: 100%; border-spacing:1px; background: #EEEEEE;}
+#fourweeksview_calw1, #fourweeksview_calw2, #fourweeksview_calw3, #fourweeksview_calw4{vertical-align: middle;text-align: center;width: 50px;}
+
+#sysbox{display: none;}
+
+.actions {height: 33px; min-width: 800px;}
+.controls {min-width: 800px;}
+.center {text-align: center;}
+.dateinfo {height: 15px; width: 100%; overflow: hidden; margin: 0; padding: 0; font-size: 12px;background: #F7F7F7;}
+.events {height: 80px; width: 100%; margin: 0; padding: 0;}
+.calendar_row {height: 20px; text-align: center;background: #ffffff;}
+.calendar_time {height: 20px; width: 50px; text-align:right;background: #ffffff;}
+.fourweeksview_item {text-align: center; background: #ffffff;width: 14%;}
+.onemonthview_item {text-align: center; height: 80px; margin: 0; padding: 0; vertical-align: top; background: #ffffff; width: 14%; height: 16%;}
+.weekend{text-align: center;margin: 0; padding: 0;vertical-align: top;background: #F3F3F3; height: 80px;width: 100%; }
+.weekend_thead, .weekend_row{height: 20px;text-align: center;text-align: center;background: #F3F3F3;}
+.thisday{background: #FFFABC;text-align: center;}
diff --git a/apps/calendar/img/icon.png b/apps/calendar/img/icon.png
new file mode 100755
index 00000000000..ee0249b2c9b
--- /dev/null
+++ b/apps/calendar/img/icon.png
Binary files differ
diff --git a/apps/calendar/index.php b/apps/calendar/index.php
new file mode 100755
index 00000000000..053b36c4183
--- /dev/null
+++ b/apps/calendar/index.php
@@ -0,0 +1,36 @@
+<?php
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * 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()) {
+ header("Location: " . OC_HELPER::linkTo("", "index.php"));
+ exit;
+}
+// Create default calendar ...
+$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+if( count($calendars) == 0){
+ OC_Calendar_Calendar::addCalendar(OC_User::getUser(),'default','Default calendar');
+ $calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+}
+OC_UTIL::addScript("calendar", "calendar");
+OC_UTIL::addScript("calendar", "calendar_init");
+OC_UTIL::addStyle("calendar", "style");
+OC_APP::setActiveNavigationEntry("calendar_index");
+$output = new OC_TEMPLATE("calendar", "calendar", "user");
+$output -> printPage();
diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js
new file mode 100755
index 00000000000..804b781886c
--- /dev/null
+++ b/apps/calendar/js/calendar.js
@@ -0,0 +1,886 @@
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * please write to the Free Software Foundation. *
+ * Address: *
+ * 59 Temple Place, Suite 330, Boston, *
+ * MA 02111-1307 USA *
+ **************************************************
+ * list of all fx *
+ * calw - Calendarweek *
+ * doy - Day of the year *
+ * checkforleapyear - check for a leap year *
+ * forward_day - switching one day forward *
+ * forward_week - switching one week forward *
+ * forward_month - switching one month forward *
+ * backward_day - switching one day backward *
+ * backward_week - switching one week backward *
+ * backward_month - switching one month backward *
+ * update_view - update the view of the calendar *
+ * onedayview - one day view *
+ * oneweekview - one week view *
+ * onemonthview - four Weeks view *
+ * onemonthview - one Month view *
+ * listview - listview *
+ * generate_monthview - generating month view *
+ * generate_dates - generate other days for view *
+ * load_events - load the events *
+ * switch2today - switching to today *
+ * remove_events - remove old events in view *
+ *************************************************/
+Calendar={
+ Date:{
+ normal_year_cal: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ leap_year_cal: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ calw:function() {
+ var generate_dayofweek = oc_cal_dayofweek;
+ if(generate_dayofweek == 0) {
+ generate_dayofweek = 7;
+ }
+ var calw = Math.floor((this.doy() - generate_dayofweek) / 7) + 1;
+ return calw;
+ },
+
+ doy:function() {
+ var cal = this.getnumberofdays(oc_cal_year);
+ var doy = 0;
+ for(var i = 0; i < oc_cal_month; i++) {
+ doy = doy + parseInt(cal[i]);
+ }
+ doy = doy + parseInt(oc_cal_dayofmonth);
+ return doy;
+ },
+
+ getnumberofdays:function(year) {
+ if(this.checkforleapyear(year) == true) {
+ var cal = this.leap_year_cal;
+ } else {
+ var cal = this.normal_year_cal;
+ }
+ return cal;
+ },
+
+ checkforleapyear:function(year2check) {
+ if((year2check / 600) == Math.floor(year2check / 400)) {
+ return true;
+ }
+ if((year2check / 4) == Math.floor(year2check / 4)) {
+ if((year2check / 100) == Math.floor(year2check / 100)) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ },
+
+ forward_day:function(){
+ var cal = this.getnumberofdays(oc_cal_year);
+ if(oc_cal_dayofmonth == cal[oc_cal_month]) {
+ if(oc_cal_month == 11) {
+ oc_cal_year++;
+ oc_cal_month = 0;
+ oc_cal_dayofmonth = 1;
+ if(oc_cal_dayofweek == 6) {
+ oc_cal_dayofweek = 0;
+ } else {
+ oc_cal_dayofweek++;
+ }
+ } else {
+ oc_cal_month++;
+ oc_cal_dayofmonth = 1;
+ if(oc_cal_dayofweek == 6) {
+ oc_cal_dayofweek = 0;
+ } else {
+ oc_cal_dayofweek++;
+ }
+ }
+ } else {
+ oc_cal_dayofmonth++;
+ if(oc_cal_dayofweek == 6) {
+ oc_cal_dayofweek = 0;
+ } else {
+ oc_cal_dayofweek++;
+ }
+ }
+ },
+
+ forward_week:function(){
+ for(var i = 1; i <= 7; i++) {
+ this.forward_day();
+ }
+ },
+
+ forward_month:function(){
+ var cal = this.getnumberofdays(oc_cal_year);
+ for(var i = 1; i <= cal[oc_cal_month]; i++) {
+ this.forward_day();
+ }
+ },
+
+ backward_day:function(){
+ var cal = this.getnumberofdays(oc_cal_year);
+ if(oc_cal_dayofmonth == 1) {
+ if(oc_cal_month == 0) {
+ oc_cal_year--;
+ oc_cal_month = 11;
+ oc_cal_dayofmonth = 31
+ if(oc_cal_dayofweek == 0) {
+ oc_cal_dayofweek = 6;
+ } else {
+ oc_cal_dayofweek--;
+ }
+ } else {
+ oc_cal_month--;
+ oc_cal_dayofmonth = cal[oc_cal_month];
+ if(oc_cal_dayofweek == 0) {
+ oc_cal_dayofweek = 6;
+ } else {
+ oc_cal_dayofweek--;
+ }
+ }
+ } else {
+ oc_cal_dayofmonth--;
+ if(oc_cal_dayofweek == 0) {
+ oc_cal_dayofweek = 6;
+ } else {
+ oc_cal_dayofweek--;
+ }
+ }
+ },
+
+ backward_week:function(){
+ for(var i = 1; i <= 7; i++) {
+ this.backward_day();
+ }
+ },
+
+ backward_month:function(){
+ var cal = this.getnumberofdays(oc_cal_year);
+ for(var i = cal[oc_cal_month]; i >= 1; i--) {
+ this.backward_day();
+ }
+ },
+
+ }
+}
+
+function oc_cal_update_view(view, task) {
+ if(view == "") {
+ view = oc_cal_currentview;
+ }
+ $("#sysbox").load(oc_webroot + "/apps/calendar/ajax/changeview.php?v="+view+"");
+ //no necessary to check whether the response is true or not
+ switch(view) {
+ case "onedayview":
+ if(task == "forward") {
+ Calendar.Date.forward_day();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_day();
+ }
+ oc_cal_remove_events("oneday");
+ oc_cal_load_cal("oneday");
+ oc_cal_load_events("oneday");
+ break;
+ case "oneweekview":
+ if(task == "forward") {
+ Calendar.Date.forward_week();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_week();
+ }
+ oc_cal_remove_events("oneweek");
+ oc_cal_load_cal("oneweek");
+ oc_cal_load_events("oneweek");
+ break;
+ case "fourweeksview":
+ if(task == "forward") {
+ Calendar.Date.forward_week();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_week();
+ }
+ oc_cal_remove_events("fourweeks");
+ oc_cal_load_cal("fourweeks");
+ oc_cal_load_events("fourweeks");
+ break;
+ case "onemonthview":
+ if(task == "forward") {
+ Calendar.Date.forward_month();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_month();
+ }
+ oc_cal_remove_events("onemonth");
+ oc_cal_load_cal("onemonth");
+ oc_cal_load_events("onemonth");
+ break;
+ case "listview":
+ if(task == "forward") {
+ Calendar.Date.forward_day();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_day();
+ }
+ oc_cal_remove_events("list");
+ oc_cal_load_cal("list");
+ oc_cal_load_events("list");
+ break;
+ default:
+ break;
+ }
+ if(oc_cal_month == 0){
+ oc_cal_update_eventsvar(oc_cal_year - 1);
+ }
+ if(oc_cal_month == 11){
+ oc_cal_update_eventsvar(oc_cal_year + 1);
+ }
+}
+
+function oc_cal_listview(task) {
+ if(task == "forward") {
+ Calendar.Date.forward_day();
+ }
+ if(task == "backward") {
+ Calendar.Date.backward_day();
+ }
+ document.getElementById("datecontrol_date").value = dayshort[dayofweek] + space + dayofmonth + space + monthshort[month] + space + year;
+}
+
+function oc_cal_generate_dates(view) {
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ if(view == "oneweek") {
+ var generate_dayofweek = oc_cal_dayofweek;
+ var generate_dayofmonth = oc_cal_dayofmonth;
+ var generate_month = oc_cal_month;
+ var generate_year = oc_cal_year;
+ var dates = new Array();
+ if(generate_dayofweek == 0) {
+ generate_dayofweek = 7;
+ }
+ for(var i = generate_dayofweek; i > 1; i--) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == 1) {
+ if(generate_month == 0) {
+ generate_year--;
+ generate_month = 11;
+ generate_dayofmonth = cal[generate_month];
+ } else {
+ generate_month--;
+ generate_dayofmonth = cal[generate_month];
+ }
+ } else {
+ generate_dayofmonth--;
+ }
+ generate_dayofweek--;
+ }
+ dates[0] = new Array(generate_dayofmonth, generate_month, generate_year);
+ for(var i = 1; i <= 6; i++) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == cal[generate_month]) {
+ if(generate_month == 11) {
+ generate_year++;
+ generate_month = 0;
+ generate_dayofmonth = 1;
+ } else {
+ generate_month++;
+ generate_dayofmonth = 1;
+ }
+ } else {
+ generate_dayofmonth++;
+ }
+ dates[i] = new Array(generate_dayofmonth, generate_month, generate_year);
+ }
+ return dates;
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ if(view == "fourweeks") {
+ var generate_dayofweek = oc_cal_dayofweek;
+ var generate_dayofmonth = oc_cal_dayofmonth;
+ var generate_month = oc_cal_month;
+ var generate_year = oc_cal_year;
+ var dates = new Array();
+ if(generate_dayofweek == 0) {
+ generate_dayofweek = 7;
+ }
+ for(var i = generate_dayofweek; i > 1; i--) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == 1) {
+ if(generate_month == 0) {
+ generate_year--;
+ generate_month = 11;
+ generate_dayofmonth = cal[generate_month];
+ } else {
+ generate_month--;
+ generate_dayofmonth = cal[generate_month];
+ }
+ } else {
+ generate_dayofmonth--;
+ }
+ generate_dayofweek--;
+ }
+ dates[0] = new Array(generate_dayofmonth, generate_month, generate_year);
+ for(var i = 1; i <= 27; i++) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == cal[generate_month]) {
+ if(generate_month == 11) {
+ generate_year++;
+ generate_month = 0;
+ generate_dayofmonth = 1;
+ } else {
+ generate_month++;
+ generate_dayofmonth = 1;
+ }
+ } else {
+ generate_dayofmonth++;
+ }
+ dates[i] = new Array(generate_dayofmonth, generate_month, generate_year);
+ }
+ return dates;
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ if(view == "onemonth") {
+ var generate_dayofweek = oc_cal_dayofweek;
+ var generate_dayofmonth = oc_cal_dayofmonth;
+ var generate_month = oc_cal_month;
+ var generate_year = oc_cal_year;
+ var dates = new Array();
+ for(var i = generate_dayofmonth; i > 1; i--) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == 1) {
+ if(generate_month == 0) {
+ generate_year--;
+ generate_month = 11;
+ generate_dayofmonth = cal[generate_month];
+ } else {
+ generate_month--;
+ generate_dayofmonth = cal[generate_month];
+ }
+ } else {
+ generate_dayofmonth--;
+ }
+ if(generate_dayofweek == 0) {
+ generate_dayofweek = 6;
+ } else {
+ generate_dayofweek--;
+ }
+ }
+ if(generate_dayofweek == 0) {
+ generate_dayofweek = 7;
+ oc_cal_rows++;
+ }
+ for(var i = generate_dayofweek; i > 1; i--) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == 1) {
+ if(generate_month == 0) {
+ generate_year--;
+ generate_month = 11;
+ generate_dayofmonth = cal[generate_month];
+ } else {
+ generate_month--;
+ generate_dayofmonth = cal[generate_month];
+ }
+ } else {
+ generate_dayofmonth--;
+ }
+ generate_dayofweek--;
+ }
+ dates[0] = new Array(generate_dayofmonth, generate_month, generate_year);
+ for(var i = 1; i <= 41; i++) {
+ var cal = Calendar.Date.getnumberofdays(generate_year);
+ if(generate_dayofmonth == cal[generate_month]) {
+ if(generate_month == 11) {
+ generate_year++;
+ generate_month = 0;
+ generate_dayofmonth = 1;
+ } else {
+ generate_month++;
+ generate_dayofmonth = 1;
+ }
+ } else {
+ generate_dayofmonth++;
+ }
+ dates[i] = new Array(generate_dayofmonth, generate_month, generate_year);
+ }
+ return dates;
+ } else {////////////////////////////////////////////////////////////////////////////////////////////////////
+ return false;
+ }
+}
+
+function oc_cal_switch2today() {
+ oc_cal_date = oc_cal_today;
+ oc_cal_dayofweek = oc_cal_todaydayofweek;
+ oc_cal_month = oc_cal_todaymonth;
+ oc_cal_dayofmonth = oc_cal_todaydayofmonth;
+ oc_cal_year = oc_cal_todayyear;
+ oc_cal_update_view('', '');
+}
+
+function oc_cal_update_eventsvar(loadyear) {
+ $.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(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) {
+ if(loadview == "oneday") {
+ document.getElementById("datecontrol_date").value = oc_cal_dayshort[oc_cal_dayofweek] + oc_cal_space + oc_cal_dayofmonth + oc_cal_space + oc_cal_monthshort[oc_cal_month] + oc_cal_space + oc_cal_year;
+ document.getElementById("onedayview_today").innerHTML = oc_cal_daylong[oc_cal_dayofweek] + oc_cal_space + oc_cal_dayofmonth + oc_cal_space + oc_cal_monthshort[oc_cal_month];
+ var generate_dayofmonth = oc_cal_dayofmonth;
+ var generate_month = oc_cal_month;
+ var generate_year = oc_cal_year;
+ if(parseInt(generate_dayofmonth) <= 9){
+ generate_dayofmonth = "0" + generate_dayofmonth;
+ }
+ generate_month++;
+ if(parseInt(generate_month) <= 9){
+ generate_month = "0" + generate_month;
+ }
+ var generate_title = String(generate_dayofmonth) + String(generate_month) + String(generate_year);
+ document.getElementById('onedayview_today').title = generate_title;
+ }
+ if(loadview == "oneweek") {
+ document.getElementById("datecontrol_date").value = cw_label + ": " + Calendar.Date.calw();
+ var dates = oc_cal_generate_dates("oneweek");
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var weekday = 1;
+ for(var i = 0; i <= 6; i++){
+ var generate_dayofmonth = String(dates[i][0]);
+ var generate_month = String(dates[i][1]);
+ document.getElementById("oneweekview_" + weekdays[i]).innerHTML = oc_cal_dayshort[weekday] + oc_cal_space + dates[i][0] + oc_cal_space + oc_cal_monthshort[dates[i][1]];
+ if(parseInt(generate_dayofmonth) <= 9){
+ generate_dayofmonth = "0" + generate_dayofmonth;
+ }
+ generate_month++;
+ if(parseInt(generate_month) <= 9){
+ generate_month = "0" + generate_month;
+ }
+ var generate_title = String(generate_dayofmonth) + String(generate_month) + String(dates[i][2]);
+ document.getElementById("oneweekview_" + weekdays[i]).title = generate_title;
+ if(weekday == 6){
+ weekday = 0;
+ }else{
+ weekday++;
+ }
+ }
+ }
+ if(loadview == "fourweeks") {
+ var calw1 = Calendar.Date.calw();
+ if(calw1 == 52) {
+ var calw2 = 1;
+ } else {
+ var calw2 = Calendar.Date.calw() + 1;
+ }
+ if(calw1 == 51) {
+ var calw3 = 1;
+ } else if(calw1 == 52) {
+ var calw3 = 2;
+ } else {
+ var calw3 = Calendar.Date.calw() + 2;
+ }
+ if(calw1 == 50) {
+ var calw4 = 1;
+ } else if(calw1 == 51) {
+ var calw4 = 2;
+ } else if(calw1 == 52) {
+ var calw4 = 3;
+ } else {
+ var calw4 = Calendar.Date.calw() + 3;
+ }
+ var calwplusfour = calw4;
+ var dates = oc_cal_generate_dates("fourweeks");
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var weeknum = 1;
+ var weekday = 0;
+ for(var i = 0; i <= 27; i++){
+ var generate_dayofmonth = String(dates[i][0]);
+ var generate_month = String(dates[i][1]);
+ var generate_year = dates[i][2];
+ document.getElementById("dateinfo_fourweeksview_" + weekdays[weekday] + "_" + weeknum).innerHTML = generate_dayofmonth + oc_cal_space + oc_cal_monthshort[generate_month];
+ if(parseInt(generate_dayofmonth) <= 9){
+ generate_dayofmonth = "0" + generate_dayofmonth;
+ }
+ if(generate_dayofmonth == oc_cal_todaydayofmonth && generate_month == oc_cal_todaymonth && generate_year == oc_cal_todayyear){
+ document.getElementById("fourweeksview_" + weekdays[weekday] + "_" + weeknum).className = "thisday";
+ }else{
+ document.getElementById("fourweeksview_" + weekdays[weekday] + "_" + weeknum).className = "fourweeksview_item";
+ }
+ generate_month++;
+ if(parseInt(generate_month) <= 9){
+ generate_month = "0" + generate_month;
+ }
+ var generate_title = String(generate_dayofmonth) + String(generate_month) + String(dates[i][2]);
+ document.getElementById("fourweeksview_" + weekdays[weekday] + "_" + weeknum).title = generate_title;
+ if(weekday == 6){
+ weekday = 0;
+ weeknum++;
+ }else{
+ weekday++;
+ }
+ }
+ document.getElementById("fourweeksview_calw1").innerHTML = calw1;
+ document.getElementById("fourweeksview_calw2").innerHTML = calw2;
+ document.getElementById("fourweeksview_calw3").innerHTML = calw3;
+ document.getElementById("fourweeksview_calw4").innerHTML = calw4;
+ document.getElementById("datecontrol_date").value = cws_label + ": " + Calendar.Date.calw() + " - " + calwplusfour;
+ }
+ if(loadview == "onemonth") {
+ document.getElementById("datecontrol_date").value = oc_cal_monthlong[oc_cal_month] + oc_cal_space + oc_cal_year;
+ var cal = Calendar.Date.getnumberofdays(oc_cal_year);
+ var monthview_dayofweek = oc_cal_dayofweek;
+ var monthview_dayofmonth = oc_cal_dayofmonth;
+ for(var i = monthview_dayofmonth; i > 1; i--) {
+ if(monthview_dayofweek == 0) {
+ monthview_dayofweek = 6;
+ } else {
+ monthview_dayofweek--;
+ }
+ }
+ document.getElementById("onemonthview_week_5").style.display = "none";
+ document.getElementById("onemonthview_week_6").style.display = "none";
+ oc_cal_rows = parseInt(monthview_dayofweek) + parseInt(cal[oc_cal_month]);
+ oc_cal_rows = oc_cal_rows / 7;
+ oc_cal_rows = Math.ceil(oc_cal_rows);
+ var dates = oc_cal_generate_dates("onemonth");
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var weeknum = 1;
+ var weekday = 0;
+ for(var i = 0; i <= 41; i++){
+ var generate_dayofmonth = dates[i][0];
+ var generate_month = dates[i][1];
+ var generate_year = dates[i][2];
+ document.getElementById("dateinfo_onemonthview_" + weekdays[weekday] + "_" + weeknum).innerHTML = generate_dayofmonth + oc_cal_space + oc_cal_monthshort[generate_month];
+ if(parseInt(generate_dayofmonth) <= 9){
+ generate_dayofmonth = "0" + generate_dayofmonth;
+ }
+ if(generate_dayofmonth == oc_cal_todaydayofmonth && generate_month == oc_cal_todaymonth && generate_year == oc_cal_todayyear){
+ document.getElementById("onemonthview_" + weekdays[weekday] + "_" + weeknum).className = "thisday";
+ }else{
+ document.getElementById("onemonthview_" + weekdays[weekday] + "_" + weeknum).className = "onemonthview_item";
+ }
+ generate_month++;
+ if(parseInt(generate_month) <= 9){
+ generate_month = "0" + generate_month;
+ }
+ var generate_title = String(generate_dayofmonth) + String(generate_month) + String(generate_year);
+ document.getElementById("onemonthview_" + weekdays[weekday] + "_" + weeknum).title = generate_title;
+ if(weekday == 6){
+ weekday = 0;
+ weeknum++;
+ }else{
+ weekday++;
+ }
+ }
+ if(oc_cal_rows == 5) {
+ document.getElementById("onemonthview_week_5").style.display = "table-row";
+ }
+ if(oc_cal_rows == 6) {
+ document.getElementById("onemonthview_week_5").style.display = "table-row";
+ document.getElementById("onemonthview_week_6").style.display = "table-row";
+ }
+ }
+ if(loadview == "list") {
+ document.getElementById("datecontrol_date").value = oc_cal_dayshort[oc_cal_dayofweek] + oc_cal_space + oc_cal_dayofmonth + oc_cal_space + oc_cal_monthshort[oc_cal_month] + oc_cal_space + oc_cal_year;
+ }
+}
+
+function oc_cal_load_events(loadview) {
+ if(loadview == "oneday") {
+ if( typeof (oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth]) != "undefined") {
+ if( typeof (oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth]["allday"]) != "undefined") {
+ var eventnumber = 1;
+ var eventcontainer = document.getElementById("onedayview_wholeday");
+ while( typeof (oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth]["allday"][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "onedayview_allday_" + eventnumber;
+ newp.className = "onedayview_event";
+ eventcontainer.appendChild(newp);
+ 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);
+ newp.innerHTML = oc_cal_events[oc_cal_year][oc_cal_month][oc_cal_dayofmonth][i][eventnumber]["description"];
+ eventnumber++;
+ }
+ }
+ }
+ }
+ }
+ if(loadview == "oneweek") {//(generate_dayofmonth, generate_month, generate_year);
+ 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][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") {
+ var eventnumber = 1;
+ var eventcontainer = document.getElementById("oneweekview_" + weekdays[i] + "_allday");
+ while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "oneweekview_" + weekdays[i] + "_allday_" + eventnumber;
+ newp.className = "oneweekview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
+ eventnumber++;
+ }
+ }
+ for(var time = 0; time <= 23; time++) {
+ 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[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "oneweekview_" + weekdays[i] + "_" + time + "_" + eventnumber;
+ newp.className = "oneweekview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"];
+ eventnumber++;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if(loadview == "fourweeks") {
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var dates = oc_cal_generate_dates("fourweeks");
+ var weekdaynum = 0;
+ var weeknum = 1;
+ for(var i = 0; i <= 27; i++) {
+ 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;
+ if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"]) != "undefined") {
+ var eventnumber = 1;
+ var eventcontainer = document.getElementById("events_fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum);
+ while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum;
+ newp.className = "fourweeksview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
+ eventnumber++;
+ pnum++;
+ }
+ }
+ for(var time = 0; time <= 23; time++) {
+ 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 (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "fourweeksview_" + weekdays[i] + "_" + i + "_" + eventnumber;
+ newp.className = "fourweeksview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"];
+ eventnumber++;
+ pnum++;
+ }
+ }
+ }
+ }
+ }
+ if(weekdaynum == 6){
+ weekdaynum = 0;
+ weeknum++;
+ }else{
+ weekdaynum++;
+ }
+ }
+ }
+ if(loadview == "onemonth") {
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var dates = oc_cal_generate_dates("onemonth");
+ var weekdaynum = 0;
+ var weeknum = 1;
+ for(var i = 0; i <= 41; i++) {
+ 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;
+ if( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"]) != "undefined") {
+ var eventnumber = 1;
+ var eventcontainer = document.getElementById("events_onemonthview_" + weekdays[weekdaynum] + "_" + weeknum);
+ while( typeof (oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "onemonthview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum;
+ newp.className = "onemonthview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
+ eventnumber++;
+ pnum++;
+ }
+ }
+ for(var time = 0; time <= 23; time++) {
+ 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[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]) != "undefined") {
+ var newp = document.createElement("p");
+ newp.id = "onemonthview_" + weekdays[i] + "_" + time + "_" + eventnumber;
+ newp.className = "onemonthview_event";
+ eventcontainer.appendChild(newp);
+ newp.innerHTML = oc_cal_events[oc_cal_year][loadevents_month][loadevents_days][time][eventnumber]["description"];
+ eventnumber++;
+ pnum++;
+ }
+ }
+ }
+ }
+ }
+ if(weekdaynum == 6){
+ weekdaynum = 0;
+ weeknum++;
+ }else{
+ weekdaynum++;
+ }
+ }
+ }
+ if(loadview == "list") {
+ //
+ }
+}
+
+function oc_cal_remove_events(removeview) {
+ if(removeview == "oneday") {
+ document.getElementById("onedayview_wholeday").innerHTML = "";
+ for(var i = 0; i <= 23; i++) {
+ document.getElementById("onedayview_" + i).innerHTML = "";
+ }
+ }
+ if(removeview == "oneweek") {
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ for( i = 0; i <= 6; i++) {
+ document.getElementById("oneweekview_" + weekdays[i] + "_allday").innerHTML = "";
+ for(var time = 0; time <= 23; time++) {
+ document.getElementById("oneweekview_" + weekdays[i] + "_" + time).innerHTML = "";
+ }
+ }
+ }
+ if(removeview == "fourweeks") {
+ document.getElementById("events_fourweeksview_monday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_tuesday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_wednesday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_thursday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_friday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_saturday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_sunday_1").innerHTML = "";
+ document.getElementById("events_fourweeksview_monday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_tuesday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_wednesday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_thursday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_friday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_saturday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_sunday_2").innerHTML = "";
+ document.getElementById("events_fourweeksview_monday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_tuesday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_wednesday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_thursday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_friday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_saturday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_sunday_3").innerHTML = "";
+ document.getElementById("events_fourweeksview_monday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_tuesday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_wednesday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_thursday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_friday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_saturday_4").innerHTML = "";
+ document.getElementById("events_fourweeksview_sunday_4").innerHTML = "";
+ }
+ if(removeview == "onemonth") {
+ var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
+ var weeknum = 1;
+ var weekday = 0;
+ for(var i = 0; i <= 41; i++){//events_onemonthview_saturday_6
+ document.getElementById("events_onemonthview_" + weekdays[weekday] + "_" + weeknum).innerHTML = "";
+ document.getElementById("onemonthview_" + weekdays[weekday] + "_" + weeknum).className = "onemonthview_item";
+ if(weekday == 6){
+ weekday = 0;
+ weeknum++;
+ }else{
+ weekday++;
+ }
+ }
+ }
+ if(removeview == "list") {
+ document.getElementById("listview").innerHTML = "";
+ }
+}
+function oc_cal_newevent(date, time){
+ if(oc_cal_opendialog == 0){
+ $("#dialog_holder").load(oc_webroot + "/apps/calendar/ajax/neweventform.php?d=" + date + "&t=" + time);
+ oc_cal_opendialog = 1;
+ }else{
+ alert(t("calendar", "You can't open more than one dialog per site!"));
+ }
+}
+function oc_cal_choosecalendar(){
+ if(oc_cal_opendialog == 0){
+ $("#dialog_holder").load(oc_webroot + "/apps/calendar/ajax/choosecalendar.php");
+ oc_cal_opendialog = 1;
+ }else{
+ 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;
+ });
+}
+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/js/calendar_init.js b/apps/calendar/js/calendar_init.js
new file mode 100755
index 00000000000..9f647863847
--- /dev/null
+++ b/apps/calendar/js/calendar_init.js
@@ -0,0 +1,55 @@
+/*************************************************
+ * ownCloud - Calendar Plugin *
+ * *
+ * (c) Copyright 2011 Georg Ehrke *
+ * author: Georg Ehrke *
+ * email: ownclouddev at georgswebsite dot de *
+ * homepage: ownclouddev.georgswebsite.de *
+ * manual: ownclouddev.georgswebsite.de/manual *
+ * License: GNU AFFERO GENERAL PUBLIC LICENSE *
+ * *
+ * <http://www.gnu.org/licenses/> *
+ * If you are not able to view the License, *
+ * <http://www.gnu.org/licenses/> *
+ * <http://ownclouddev.georgswebsite.de/license/> *
+ * please write to the Free Software Foundation. *
+ * Address: *
+ * 59 Temple Place, Suite 330, Boston, *
+ * MA 02111-1307 USA *
+ *************************************************/
+//loading multiselect
+$(document).ready(function(){
+ $("#calendar_select").multiSelect({
+ selectedText: "Calendars",
+ noneSelectedText: "Calendars",
+ selectedList: 0,
+ close: function(){
+ alert("abc");
+ }
+ });
+ oc_cal_update_eventsvar(oc_cal_year);
+});
+//init date vars
+var oc_cal_date = new Date();
+var oc_cal_dayofweek = oc_cal_date.getDay();
+var oc_cal_month = oc_cal_date.getMonth();
+var oc_cal_dayofmonth = oc_cal_date.getDate();
+var oc_cal_year = oc_cal_date.getFullYear();
+var oc_cal_space = " ";
+//init today date vars
+var oc_cal_today = new Date();
+var oc_cal_todaydayofweek = oc_cal_today.getDay();
+var oc_cal_todaymonth = oc_cal_today.getMonth();
+var oc_cal_todaydayofmonth = oc_cal_today.getDate();
+var oc_cal_todayyear = oc_cal_today.getFullYear();
+//other vars
+var oc_cal_rows;
+var oc_cal_dates;
+var oc_cal_listview_numofevents = 0;
+var oc_cal_listview_count = 0;
+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();
+oc_cal_events[oc_cal_year] = new Array();
diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js
new file mode 100755
index 00000000000..b2da81b0d0f
--- /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/known bugs b/apps/calendar/known bugs
new file mode 100644
index 00000000000..fb3cd2aa28a
--- /dev/null
+++ b/apps/calendar/known bugs
@@ -0,0 +1 @@
+There are actually no known bugs
diff --git a/apps/calendar/l10n/de.php b/apps/calendar/l10n/de.php
new file mode 100755
index 00000000000..325a323d57a
--- /dev/null
+++ b/apps/calendar/l10n/de.php
@@ -0,0 +1,78 @@
+<?php $TRANSLATIONS = array(
+"Calendar" => "Kalender",
+"Location" => "Ort",
+"Category" => "Kategorie",
+"Create a new event" => "Neuen Termin erstellen",
+"Title of the Event" => "Titel des Termins",
+"Location of the Event" => "Ort des Termins",
+"All Day Event" => "Ganztägig",
+"From" => "Von",
+"To" => "Bis",
+"Repeat" => "Wiederhol.",
+"Attendees" => "Teilnehmer",
+"Description" => "Beschreibung",
+"Submit" => "Speichern",
+"Reset" => "Zurücksetzen",
+"Title" => "Titel",
+"Sunday" => "Sonntag",
+"Monday" => "Montag",
+"Tuesday" => "Dienstag",
+"Wednesday" => "Mittwoch",
+"Thursday" => "Donnerstag",
+"Friday" => "Freitag",
+"Saturday" => "Samstag",
+"CW" => "KW",
+"CWs" => "KW",
+"Sun." => "So.",
+"Mon." => "Mo.",
+"Tue." => "Di.",
+"Wed." => "Mi.",
+"Thu." => "Do.",
+"Fri." => "Fr.",
+"Sat." => "Sa.",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "März",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Dezember",
+"Jan." => "Jan.",
+"Feb." => "Feb.",
+"Mar." => "März",
+"Apr." => "Apr.",
+"May" => "Mai",
+"Jun." => "Juni",
+"Jul." => "Juli",
+"Aug." => "Aug.",
+"Sep." => "Sep.",
+"Oct." => "Okt.",
+"Nov." => "Nov.",
+"Dec." => "Dez.",
+"Day" => "Tag",
+"Week" => "Woche",
+"Weeks" => "Wochen",
+"Month" => "Monat",
+"Listview" => "Liste",
+"Today" => "Heute",
+"Calendars" => "Kalender",
+"Time" => "Uhrzeit",
+"All day" => "Ganztägig",
+"Does not repeat" => "Keine Wiederholung",
+"Daily" => "Täglich",
+"Weekly" => "Wöchentlich",
+"Every Weekday" => "jeden Wochentag",
+"Bi-Weekly" => "jede 2. Woche",
+"Monthly" => "Monatlich",
+"Yearly" => "Jährlich",
+"Description of the Event" => "Beschreibung des Termins",
+"" => "",
+"" => "",
+"" => ""
+);
+?> \ No newline at end of file
diff --git a/apps/calendar/l10n/es.php b/apps/calendar/l10n/es.php
new file mode 100755
index 00000000000..f20230fe17f
--- /dev/null
+++ b/apps/calendar/l10n/es.php
@@ -0,0 +1,68 @@
+<?php $TRANSLATIONS = array(
+"Calendar" => "Calendario",
+"Location" => "Lugar",
+"Category" => "Categoría",
+"Create a new event" => "Crea un plazo",
+"Title of the Event" => "Título del plazo",
+"Location of the Event" => "Lugar del plazo",
+"All Day Event" => "todo el día",
+"From" => "Desde",
+"To" => "Hasta",
+"Repeat" => "Repetición",
+"Attendees" => "Participante",
+"Description" => "Descripción",
+"Submit" => "Guarda",
+"Reset" => "Repone",
+"Title" => "Título",
+"Sunday" => "Domingo",
+"Monday" => "Lunes",
+"Tuesday" => "Martes",
+"Wednesday" => "Miércoles",
+"Thursday" => "Jueves",
+"Friday" => "Viernes",
+"Saturday" => "Sábado",
+"CW" => "Semana",
+"CWs" => "Semanas",
+"Sun." => "Do.",
+"Mon." => "Lu.",
+"Tue." => "Ma.",
+"Wed." => "Mi.",
+"Thu." => "Ju.",
+"Fri." => "Vi.",
+"Sat." => "Sá.",
+"January" => "Enero",
+"February" => "Febrero",
+"March" => "Marzo",
+"April" => "Abril",
+"May" => "Mayo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Agosto",
+"September" => "Septiembre",
+"October" => "Octubre",
+"November" => "Noviembre",
+"December" => "Deciembre",
+"Jan." => "Ene.",
+"Feb." => "Feb.",
+"Mar." => "Mär.",
+"Apr." => "Abr.",
+"May" => "May.",
+"Jun." => "Jun.",
+"Jul." => "Jul.",
+"Aug." => "Ago.",
+"Sep." => "Sep.",
+"Oct." => "Oct.",
+"Nov." => "Nov.",
+"Dec." => "Dec.",
+"Day" => "Día",
+"Week" => "Semana",
+"Weeks" => "Semanas",
+"Month" => "Mes",
+"Listview" => "Lista",
+"Today" => "Hoy",
+"Calendars" => "Calendarios",
+"Time" => "Hora",
+"All day" => "todo el día",
+"" => ""
+);
+?> \ No newline at end of file
diff --git a/apps/calendar/l10n/xgettextfiles b/apps/calendar/l10n/xgettextfiles
new file mode 100755
index 00000000000..c94fb9d8b2e
--- /dev/null
+++ b/apps/calendar/l10n/xgettextfiles
@@ -0,0 +1,8 @@
+../appinfo/app.php
+../templates/calendar.php
+../templates/part.editevent.php
+../templates/part.eventinfo.php
+../templates/part.newevent.php
+../templates/part.choosecalendar.php
+../js/calendar.js
+../js/calendar_init.js \ No newline at end of file
diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php
new file mode 100755
index 00000000000..c1223b5b3ab
--- /dev/null
+++ b/apps/calendar/lib/calendar.php
@@ -0,0 +1,354 @@
+<?php
+/**
+ * ownCloud - Calendar
+ *
+ * @author Jakob Sack
+ * @copyright 2011 Jakob Sack mail@jakobsack.de
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/*
+ *
+ * The following SQL statement is just a help for developers and will not be
+ * executed!
+ *
+ * CREATE TABLE calendar_objects (
+ * id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ * calendarid INTEGER UNSIGNED NOT NULL,
+ * objecttype VARCHAR(40) NOT NULL,
+ * startdate DATETIME,
+ * enddate DATETIME,
+ * repeating INT(1),
+ * summary VARCHAR(255),
+ * calendardata TEXT,
+ * uri VARCHAR(100),
+ * lastmodified INT(11)
+ * );
+ *
+ * CREATE TABLE calendar_calendars (
+ * id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ * 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',
+ * calendarcolor VARCHAR(10),
+ * timezone TEXT,
+ * components VARCHAR(20)
+ * );
+ */
+
+/**
+ * This class manages our calendars
+ */
+class OC_Calendar_Calendar{
+ 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()){
+ $calendars[] = $row;
+ }
+
+ return $calendars;
+ }
+
+ public static function allCalendarsWherePrincipalURIIs($principaluri){
+ $uid = self::extractUserID($principaluri);
+ return self::allCalendars($uid);
+ }
+
+ public static function findCalendar($id){
+ $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_calendars WHERE id = ?' );
+ $result = $stmt->execute(array($id));
+
+ return $result->fetchRow();
+ }
+
+ public static function addCalendar($userid,$name,$description,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){
+ $all = self::allCalendars($userid);
+ $uris = array();
+ foreach($all as $i){
+ $uris[] = $i['uri'];
+ }
+
+ $uri = self::createURI($name, $uris );
+
+ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' );
+ $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components));
+
+ return OC_DB::insertid();
+ }
+
+ public static function addCalendarFromDAVData($principaluri,$uri,$name,$description,$components,$timezone,$order,$color){
+ $userid = self::extractUserID($principaluri);
+
+ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,description,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?,?)' );
+ $result = $stmt->execute(array($userid,$name,$uri,1,$description,$order,$color,$timezone,$components));
+
+ return OC_DB::insertid();
+ }
+
+ 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::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['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=?' );
+ $result = $stmt->execute(array($name,$description,$order,$color,$timezone,$components,$id));
+
+ 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));
+
+ return true;
+ }
+
+ public static function deleteCalendar($id){
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_calendars WHERE id = ?' );
+ $stmt->execute(array($id));
+
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_objects WHERE calendarid = ?' );
+ $stmt->execute(array($id));
+
+ return true;
+ }
+
+ public static function allCalendarObjects($id){
+ $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_objects WHERE calendarid = ?' );
+ $result = $stmt->execute(array($id));
+
+ $calendarobjects = array();
+ while( $row = $result->fetchRow()){
+ $calendarobjects[] = $row;
+ }
+
+ return $calendarobjects;
+ }
+
+ public static function findCalendarObject($id){
+ $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_objects WHERE id = ?' );
+ $result = $stmt->execute(array($id));
+
+ return $result->fetchRow();
+ }
+
+ public static function findCalendarObjectWhereDAVDataIs($cid,$uri){
+ $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_objects WHERE calendarid = ? AND uri = ?' );
+ $result = $stmt->execute(array($cid,$uri));
+
+ return $result->fetchRow();
+ }
+
+ public static function addCalendarObject($id,$data){
+ $object = Sabre_VObject_Reader::read($data);
+ list($type,$startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
+
+ if(is_null($uid)){
+ $uid = self::createUID();
+ $object->add('UID',$uid);
+ $data = $object->serialize();
+ }
+
+ $uri = 'owncloud-'.md5($data.rand().time()).'.ics';
+
+ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_objects (calendarid,objecttype,startdate,enddate,repeating,summary,calendardata,uri,lastmodified) VALUES(?,?,?,?,?,?,?,?,?)' );
+ $result = $stmt->execute(array($id,$type,$startdate,$enddate,$repeating,$summary,$data,$uri,time()));
+
+ self::touchCalendar($id);
+
+ return OC_DB::insertid();
+ }
+
+ public static function addCalendarObjectFromDAVData($id,$uri,$data){
+ $object = Sabre_VObject_Reader::read($data);
+ list($type,$startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
+
+ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_objects (calendarid,objecttype,startdate,enddate,repeating,summary,calendardata,uri,lastmodified) VALUES(?,?,?,?,?,?,?,?,?)' );
+ $result = $stmt->execute(array($id,$type,$startdate,$enddate,$repeating,$summary,$data,$uri,time()));
+
+ self::touchCalendar($id);
+
+ return OC_DB::insertid();
+ }
+
+ public static function editCalendarObject($id, $data){
+ $oldobject = self::findCard($id);
+
+ $object = Sabre_VObject_Reader::read($data);
+ list($type,$startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
+
+ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_objects SET objecttype=?,startdate=?,enddate=?,repeating=?,summary=?,calendardata=?, lastmodified = ? WHERE id = ?' );
+ $result = $stmt->execute(array($type,$startdate,$enddate,$repeating,$summary,$data,time(),$id));
+
+ self::touchCalendar($id);
+
+ return true;
+ }
+
+ public static function editCalendarObjectFromDAVData($cid,$uri,$data){
+ $oldobject = self::findCardWhereDAVDataIs($cid,$uri);
+
+ $object = Sabre_VObject_Reader::read($data);
+ list($type,$startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
+
+ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_objects SET objecttype=?,startdate=?,enddate=?,repeating=?,summary=?,calendardata=?, lastmodified = ? WHERE id = ?' );
+ $result = $stmt->execute(array($type,$startdate,$enddate,$repeating,$summary,$data,time(),$oldobject['id']));
+
+ self::touchCalendar($oldobject['calendarid']);
+
+ return true;
+ }
+
+ public static function deleteCalendarObject($id){
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_objects WHERE id = ?' );
+ $stmt->execute(array($id));
+
+ return true;
+ }
+
+ public static function deleteCalendarObjectFromDAVData($cid,$uri){
+ $stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_objects WHERE calendarid = ? AND uri=?' );
+ $stmt->execute(array($cid,$uri));
+
+ return true;
+ }
+
+ public static function createURI($name,$existing){
+ $name = strtolower($name);
+ $newname = $name;
+ $i = 1;
+ while(in_array($newname,$existing)){
+ $newname = $name.$i;
+ $i = $i + 1;
+ }
+ return $newname;
+ }
+
+ public static function createUID(){
+ return substr(md5(rand().time()),0,10);
+ }
+
+ public static function extractUserID($principaluri){
+ list($prefix,$userid) = Sabre_DAV_URLUtil::splitPath($principaluri);
+ return $userid;
+ }
+
+ protected static function extractData($object){
+ $return = array('',null,null,'',0,null);
+
+ // Child to use
+ $children = 0;
+ $use = null;
+ foreach($object->children as &$property){
+ if($property->name == 'VEVENT'){
+ $children++;
+ $thisone = true;
+
+ foreach($property->children as &$element){
+ if($element->name == 'RECURRENCE-ID'){
+ $thisone = false;
+ }
+ } unset($element);
+
+ if($thisone){
+ $use = $property;
+ }
+ }
+ elseif($property->name == 'VTODO' || $property->name == 'VJOURNAL'){
+ $return[0] = $use->name;
+ foreach($property->children as &$element){
+ if($property->name == 'SUMMARY'){
+ $return[3] = $property->value;
+ }
+ elseif($property->name == 'UID'){
+ $return[5] = $property->value;
+ }
+ };
+
+ // Only one VTODO or VJOURNAL per object
+ // (only one UID per object but a UID is required by a VTODO =>
+ // one VTODO per object)
+ break;
+ }
+ } unset($property);
+
+ // find the data
+ if(!is_null($use)){
+ $return[0] = $use->name;
+ foreach($use->children as &$property){
+ if($property->name == 'DTSTART'){
+ $return[1] = self::getUTCforMDB($property->getDateTime());
+ }
+ elseif($property->name == 'DTEND'){
+ $return[2] = self::getUTCforMDB($property->getDateTime());
+ }
+ elseif($property->name == 'SUMMARY'){
+ $return[3] = $property->value;
+ }
+ elseif($property->name == 'RRULE'){
+ $return[4] = 1;
+ }
+ elseif($property->name == 'UID'){
+ $return[5] = $property->value;
+ }
+ } unset($property);
+ }
+
+ // More than one child means reoccuring!
+ if($children > 1){
+ $return[4] = 1;
+ }
+ return $return;
+ }
+
+ /**
+ * @brief DateTime to UTC string
+ * @param DateTime $datetime The date to convert
+ * @returns date as YYYY-MM-DD hh:mm
+ *
+ * This function creates a date string that can be used by MDB2.
+ * Furthermore it converts the time to UTC.
+ */
+ protected static function getUTCforMDB($datetime){
+ return date('Y-m-d H:i', $datetime->format('U') - $datetime->getOffset());
+ }
+}
diff --git a/apps/calendar/lib/connector_sabre.php b/apps/calendar/lib/connector_sabre.php
new file mode 100755
index 00000000000..aff1941688f
--- /dev/null
+++ b/apps/calendar/lib/connector_sabre.php
@@ -0,0 +1,311 @@
+<?php
+
+class OC_Connector_Sabre_CalDAV extends Sabre_CalDAV_Backend_Abstract {
+ /**
+ * List of CalDAV properties, and how they map to database fieldnames
+ *
+ * Add your own properties by simply adding on to this array
+ *
+ * @var array
+ */
+ public $propertyMap = array(
+ '{DAV:}displayname' => 'displayname',
+ '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'description',
+ '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => 'timezone',
+ '{http://apple.com/ns/ical/}calendar-order' => 'calendarorder',
+ '{http://apple.com/ns/ical/}calendar-color' => 'calendarcolor',
+ );
+
+ /**
+ * Returns a list of calendars for a principal.
+ *
+ * Every project is an array with the following keys:
+ * * id, a unique id that will be used by other functions to modify the
+ * calendar. This can be the same as the uri or a database key.
+ * * uri, which the basename of the uri with which the calendar is
+ * accessed.
+ * * principalUri. The owner of the calendar. Almost always the same as
+ * principalUri passed to this method.
+ *
+ * Furthermore it can contain webdav properties in clark notation. A very
+ * common one is '{DAV:}displayname'.
+ *
+ * @param string $principalUri
+ * @return array
+ */
+ public function getCalendarsForUser($principalUri) {
+ $raw = OC_Calendar_Calendar::allCalendarsWherePrincipalURIIs($principalUri);
+
+ $calendars = array();
+ foreach( $raw as $row ){
+ $components = explode(',',$row['components']);
+
+ $calendar = array(
+ 'id' => $row['id'],
+ 'uri' => $row['uri'],
+ 'principaluri' => 'principals/'.$row['userid'],
+ '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $row['ctag']?$row['ctag']:'0',
+ '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet($components),
+ );
+
+ foreach($this->propertyMap as $xmlName=>$dbName) {
+ $calendar[$xmlName] = $row[$dbName];
+ }
+
+ $calendars[] = $calendar;
+ }
+ return $calendars;
+ }
+
+ /**
+ * Creates a new calendar for a principal.
+ *
+ * If the creation was a success, an id must be returned that can be used to reference
+ * this calendar in other methods, such as updateCalendar
+ *
+ * @param string $principalUri
+ * @param string $calendarUri
+ * @param array $properties
+ * @return mixed
+ */
+ public function createCalendar($principalUri,$calendarUri, array $properties) {
+ $fieldNames = array(
+ 'principaluri',
+ 'uri',
+ 'ctag',
+ );
+ $values = array(
+ ':principaluri' => $principalUri,
+ ':uri' => $calendarUri,
+ ':ctag' => 1,
+ );
+
+ // Default value
+ $sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set';
+ $fieldNames[] = 'components';
+ if (!isset($properties[$sccs])) {
+ $values[':components'] = 'VEVENT,VTODO';
+ } else {
+ if (!($properties[$sccs] instanceof Sabre_CalDAV_Property_SupportedCalendarComponentSet)) {
+ throw new Sabre_DAV_Exception('The ' . $sccs . ' property must be of type: Sabre_CalDAV_Property_SupportedCalendarComponentSet');
+ }
+ $values[':components'] = implode(',',$properties[$sccs]->getValue());
+ }
+
+ foreach($this->propertyMap as $xmlName=>$dbName) {
+ if (isset($properties[$xmlName])) {
+
+ $myValue = $properties[$xmlName];
+ $values[':' . $dbName] = $properties[$xmlName];
+ $fieldNames[] = $dbName;
+ }
+ }
+
+ if(!isset($newValues['displayname'])) $newValues['displayname'] = 'unnamed';
+ if(!isset($newValues['description'])) $newValues['description'] = '';
+ if(!isset($newValues['components'])) $newValues['components'] = 'VEVENT,VTODO';
+ if(!isset($newValues['timezone'])) $newValues['timezone'] = null;
+ if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = 0;
+ if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null;
+
+ return OC_Calendar_Calendar::addCalendarFromDAVData($principalUri,$calendarUri,$newValues['displayname'],$newValues['description'],$newValues['components'],$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']);
+ }
+
+ /**
+ * Updates a calendars properties
+ *
+ * The properties array uses the propertyName in clark-notation as key,
+ * and the array value for the property value. In the case a property
+ * should be deleted, the property value will be null.
+ *
+ * This method must be atomic. If one property cannot be changed, the
+ * entire operation must fail.
+ *
+ * If the operation was successful, true can be returned.
+ * If the operation failed, false can be returned.
+ *
+ * Deletion of a non-existant property is always succesful.
+ *
+ * Lastly, it is optional to return detailed information about any
+ * failures. In this case an array should be returned with the following
+ * structure:
+ *
+ * array(
+ * 403 => array(
+ * '{DAV:}displayname' => null,
+ * ),
+ * 424 => array(
+ * '{DAV:}owner' => null,
+ * )
+ * )
+ *
+ * In this example it was forbidden to update {DAV:}displayname.
+ * (403 Forbidden), which in turn also caused {DAV:}owner to fail
+ * (424 Failed Dependency) because the request needs to be atomic.
+ *
+ * @param string $calendarId
+ * @param array $properties
+ * @return bool|array
+ */
+ public function updateCalendar($calendarId, array $properties) {
+
+ $newValues = array();
+ $result = array(
+ 200 => array(), // Ok
+ 403 => array(), // Forbidden
+ 424 => array(), // Failed Dependency
+ );
+
+ $hasError = false;
+
+ foreach($properties as $propertyName=>$propertyValue) {
+
+ // We don't know about this property.
+ if (!isset($this->propertyMap[$propertyName])) {
+ $hasError = true;
+ $result[403][$propertyName] = null;
+ unset($properties[$propertyName]);
+ continue;
+ }
+
+ $fieldName = $this->propertyMap[$propertyName];
+ $newValues[$fieldName] = $propertyValue;
+
+ }
+
+ // If there were any errors we need to fail the request
+ if ($hasError) {
+ // Properties has the remaining properties
+ foreach($properties as $propertyName=>$propertyValue) {
+ $result[424][$propertyName] = null;
+ }
+
+ // Removing unused statuscodes for cleanliness
+ foreach($result as $status=>$properties) {
+ if (is_array($properties) && count($properties)===0) unset($result[$status]);
+ }
+
+ return $result;
+
+ }
+
+ // Success
+ if(!isset($newValues['displayname'])) $newValues['displayname'] = null;
+ if(!isset($newValues['description'])) $newValues['description'] = null;
+ if(!isset($newValues['timezone'])) $newValues['timezone'] = null;
+ if(!isset($newValues['calendarorder'])) $newValues['calendarorder'] = null;
+ if(!isset($newValues['calendarcolor'])) $newValues['calendarcolor'] = null;
+
+ OC_Calendar_Calendar::editCalendar($calendarId,$newValues['displayname'],$newValues['description'],null,$newValues['timezone'],$newValues['calendarorder'],$newValues['calendarcolor']);
+
+ return true;
+
+ }
+
+ /**
+ * Delete a calendar and all it's objects
+ *
+ * @param string $calendarId
+ * @return void
+ */
+ public function deleteCalendar($calendarId) {
+ OC_Calendar_Calendar::deleteCalendar($calendarId);
+ }
+
+ /**
+ * Returns all calendar objects within a calendar object.
+ *
+ * Every item contains an array with the following keys:
+ * * id - unique identifier which will be used for subsequent updates
+ * * calendardata - The iCalendar-compatible calnedar data
+ * * uri - a unique key which will be used to construct the uri. This can be any arbitrary string.
+ * * lastmodified - a timestamp of the last modification time
+ * * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
+ * ' "abcdef"')
+ * * calendarid - The calendarid as it was passed to this function.
+ *
+ * Note that the etag is optional, but it's highly encouraged to return for
+ * speed reasons.
+ *
+ * The calendardata is also optional. If it's not returned
+ * 'getCalendarObject' will be called later, which *is* expected to return
+ * calendardata.
+ *
+ * @param string $calendarId
+ * @return array
+ */
+ public function getCalendarObjects($calendarId) {
+ $data = array();
+ foreach(OC_Calendar_Calendar::allCalendarObjects($calendarId) as $row){
+ $data[] = $this->OCAddETag($row);
+ }
+ return $data;
+ }
+
+ /**
+ * Returns information from a single calendar object, based on it's object
+ * uri.
+ *
+ * The returned array must have the same keys as getCalendarObjects. The
+ * 'calendardata' object is required here though, while it's not required
+ * for getCalendarObjects.
+ *
+ * @param string $calendarId
+ * @param string $objectUri
+ * @return array
+ */
+ public function getCalendarObject($calendarId,$objectUri) {
+ $data = OC_Calendar_Calendar::findCalendarObjectWhereDAVDataIs($calendarId,$objectUri);
+ if(is_array($data)){
+ $data = $this->OCAddETag($data);
+ }
+ return $data;
+ }
+
+ /**
+ * Creates a new calendar object.
+ *
+ * @param string $calendarId
+ * @param string $objectUri
+ * @param string $calendarData
+ * @return void
+ */
+ public function createCalendarObject($calendarId,$objectUri,$calendarData) {
+ OC_Calendar_Calendar::addCalendarObjectFromDAVData($calendarId,$objectUri,$calendarData);
+ }
+
+ /**
+ * Updates an existing calendarobject, based on it's uri.
+ *
+ * @param string $calendarId
+ * @param string $objectUri
+ * @param string $calendarData
+ * @return void
+ */
+ public function updateCalendarObject($calendarId,$objectUri,$calendarData){
+ OC_Calendar_Calendar::editCalendarObjectFromDAVData($calendarId,$objectUri,$calendarData);
+ }
+
+ /**
+ * Deletes an existing calendar object.
+ *
+ * @param string $calendarId
+ * @param string $objectUri
+ * @return void
+ */
+ public function deleteCalendarObject($calendarId,$objectUri){
+ OC_Calendar_Calendar::deleteCalendarObjectFromDAVData($calendarID,$objectUri);
+ }
+
+ /**
+ * @brief Creates a etag
+ * @param array $row Database result
+ * @returns associative array
+ *
+ * Adds a key "etag" to the row
+ */
+ private function OCAddETag($row){
+ $row['etag'] = '"'.md5($row['calendarid'].$row['uri'].$row['calendardata'].$row['lastmodified']).'"';
+ return $row;
+ }
+}
diff --git a/apps/calendar/lib/hooks.php b/apps/calendar/lib/hooks.php
new file mode 100755
index 00000000000..5c446102b22
--- /dev/null
+++ b/apps/calendar/lib/hooks.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * ownCloud - Addressbook
+ *
+ * @author Jakob Sack
+ * @copyright 2011 Jakob Sack mail@jakobsack.de
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * This class contains all hooks.
+ */
+class OC_Calendar_Hooks{
+ /**
+ * @brief Deletes all Addressbooks of a certain user
+ * @param paramters parameters from postDeleteUser-Hook
+ * @return array
+ */
+ public function deleteUser($parameters) {
+ $calendars = OC_Calendar_Calendar::allCalendars($parameters['uid']);
+
+ foreach($calendars as $calendar) {
+ OC_Calendar_Calendar::deleteCalendar($calendar['id']);
+ }
+
+ return true;
+ }
+}
diff --git a/apps/calendar/settings.php b/apps/calendar/settings.php
new file mode 100755
index 00000000000..bdf997eef70
--- /dev/null
+++ b/apps/calendar/settings.php
@@ -0,0 +1,10 @@
+<?php
+
+$tmpl = new OC_Template( 'calendar', 'settings');
+$timezone=OC_Preferences::getValue(OC_User::getUser(),'calendar','timezone','');
+$tmpl->assign('timezone',$timezone);
+$tmpl->assign('timezones',DateTimeZone::listIdentifiers());
+
+OC_Util::addScript('calendar','settings');
+
+return $tmpl->fetchPage();
diff --git a/apps/calendar/templates/calendar.php b/apps/calendar/templates/calendar.php
new file mode 100755
index 00000000000..8690d7a45d2
--- /dev/null
+++ b/apps/calendar/templates/calendar.php
@@ -0,0 +1,953 @@
+ <script type="text/javascript">
+ var oc_cal_daylong = new Array("<?php echo $l -> t("Sunday");?>", "<?php echo $l -> t("Monday");?>", "<?php echo $l -> t("Tuesday");?>", "<?php echo $l -> t("Wednesday");?>", "<?php echo $l -> t("Thursday");?>", "<?php echo $l -> t("Friday");?>", "<?php echo $l -> t("Saturday");?>");
+ var oc_cal_dayshort = new Array("<?php echo $l -> t("Sun.");?>", "<?php echo $l -> t("Mon.");?>", "<?php echo $l -> t("Tue.");?>", "<?php echo $l -> t("Wed.");?>", "<?php echo $l -> t("Thu.");?>", "<?php echo $l -> t("Fri.");?>", "<?php echo $l -> t("Sat.");?>");
+ var oc_cal_monthlong = new Array("<?php echo $l -> t("January");?>", "<?php echo $l -> t("February");?>", "<?php echo $l -> t("March");?>", "<?php echo $l -> t("April");?>", "<?php echo $l -> t("May");?>", "<?php echo $l -> t("June");?>", "<?php echo $l -> t("July");?>", "<?php echo $l -> t("August");?>", "<?php echo $l -> t("September");?>", "<?php echo $l -> t("October");?>", "<?php echo $l -> t("November");?>", "<?php echo $l -> t("December");?>");
+ var oc_cal_monthshort = new Array("<?php echo $l -> t("Jan.");?>", "<?php echo $l -> t("Feb.");?>", "<?php echo $l -> t("Mar.");?>", "<?php echo $l -> t("Apr.");?>", "<?php echo $l -> t("May");?>", "<?php echo $l -> t("Jun.");?>", "<?php echo $l -> t("Jul.");?>", "<?php echo $l -> t("Aug.");?>", "<?php echo $l -> t("Sep.");?>", "<?php echo $l -> t("Oct.");?>", "<?php echo $l -> t("Nov.");?>", "<?php echo $l -> t("Dec.");?>");
+ var onedayview_radio = "1 <?php echo $l->t("Day");?>";
+ var oneweekview_radio = "1 <?php echo $l->t("Week");?>";
+ var fourweeksview_radio = "4 <?php echo $l->t("Weeks");?>";
+ var onemonthview_radio = "1 <?php echo $l->t("Month");?>";
+ var listview_radio = "<?php echo $l->t("Listview");?>";
+ var today_button_value = "<?php echo $l->t("Today");?>";
+ var choosecalendar_value = "<?php echo $l->t("Calendars");?>";
+ var cw_label = "<?php echo $l->t("CW");?>";
+ var cws_label = "<?php echo $l->t("CWs");?>";
+ </script>
+ <div id="sysbox"></div>
+ <div id="controls">
+ <div>
+ <form>
+ <div id="view">
+ <input type="button" value="1 Day" id="onedayview_radio" onclick="oc_cal_change_view('onedayview');"/>
+ <input type="button" value="1 Week" id="oneweekview_radio" onclick="oc_cal_change_view('oneweekview');"/>
+ <input type="button" value="4 Weeks" id="fourweeksview_radio" onclick="oc_cal_change_view('fourweeksview');"/>
+ <input type="button" value="1 Month" id="onemonthview_radio" onclick="oc_cal_change_view('onemonthview');"/>
+ <input type="button" value="Listview" id="listview_radio" onclick="oc_cal_change_view('listview');"/>
+ </div>
+ </form>
+ <form>
+ <div id="choosecalendar">
+ <input type="button" id="today_input" value="Today" onclick="oc_cal_switch2today();"/>
+ <input type="button" id="choosecalendar_input" value="Calendars" onclick="oc_cal_choosecalendar();" />
+ </div>
+ </form>
+ <form>
+ <div id="datecontrol">
+ <input type="button" value="&nbsp;&lt;&nbsp;" id="datecontrol_left" onclick="oc_cal_update_view('', 'backward');"/>
+ <input id="datecontrol_date" type="button" value=""/>
+ <input type="button" value="&nbsp;&gt;&nbsp;" id="datecontrol_left" onclick="oc_cal_update_view('', 'forward');"/>
+ </div>
+ </form>
+ </div>
+ </div>
+ <div id="calendar_holder">
+ <div id="onedayview">
+ <table>
+ <thead>
+ <tr>
+ <th class="calendar_time"><?php echo $l->t("Time");?></th>
+ <th id="onedayview_today" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title);"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="calendar_time"><?php echo $l->t("All day");?></td>
+ <td id="onedayview_wholeday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, 'allday');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">00:00</td>
+ <td id="onedayview_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '0');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">01:00</td>
+ <td id="onedayview_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '1');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">02:00</td>
+ <td id="onedayview_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '2');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">03:00</td>
+ <td id="onedayview_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '3');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">04:00</td>
+ <td id="onedayview_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '4');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">05:00</td>
+ <td id="onedayview_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '5');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">06:00</td>
+ <td id="onedayview_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '6');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">07:00</td>
+ <td id="onedayview_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '7');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">08:00</td>
+ <td id="onedayview_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '8');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">09:00</td>
+ <td id="onedayview_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '9');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">10:00</td>
+ <td id="onedayview_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '10');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">11:00</td>
+ <td id="onedayview_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '11');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">12:00</td>
+ <td id="onedayview_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '12');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">13:00</td>
+ <td id="onedayview_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '13');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">14:00</td>
+ <td id="onedayview_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '14');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">15:00</td>
+ <td id="onedayview_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '15');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">16:00</td>
+ <td id="onedayview_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '16');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">17:00</td>
+ <td id="onedayview_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '17');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">18:00</td>
+ <td id="onedayview_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '18');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">19:00</td>
+ <td id="onedayview_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '19');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">20:00</td>
+ <td id="onedayview_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '20');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">21:00</td>
+ <td id="onedayview_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '21');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">22:00</td>
+ <td id="onedayview_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '22');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">23:00</td>
+ <td id="onedayview_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('onedayview_today').title, '23');"></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="oneweekview">
+ <table>
+ <thead>
+ <tr>
+ <th class="calendar_time"><?php echo $l->t("Time");?></th>
+ <th id="oneweekview_monday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title);"></th>
+ <th id="oneweekview_tuesday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title);"></th>
+ <th id="oneweekview_wednesday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title);"></th>
+ <th id="oneweekview_thursday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title);"></th>
+ <th id="oneweekview_friday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title);"></th>
+ <th id="oneweekview_saturday" class="weekend_thead" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title);"></th>
+ <th id="oneweekview_sunday" class="weekend_thead" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title);"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="calendar_time"><?php echo $l->t("All day");?></td>
+ <td id="oneweekview_monday_allday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, 'allday');"></td>
+ <td id="oneweekview_tuesday_allday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, 'allday');"></td>
+ <td id="oneweekview_wednesday_allday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, 'allday');"></td>
+ <td id="oneweekview_thursday_allday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, 'allday');"></td>
+ <td id="oneweekview_friday_allday" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, 'allday');"></td>
+ <td id="oneweekview_saturday_allday" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, 'allday');"></td>
+ <td id="oneweekview_sunday_allday" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, 'allday');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">00:00</td>
+ <td id="oneweekview_monday_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '0');"></td>
+ <td id="oneweekview_tuesday_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '0');"></td>
+ <td id="oneweekview_wednesday_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '0');"></td>
+ <td id="oneweekview_thursday_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '0');"></td>
+ <td id="oneweekview_friday_0" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '0');"></td>
+ <td id="oneweekview_saturday_0" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '0');"></td>
+ <td id="oneweekview_sunday_0" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '0');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">01:00</td>
+ <td id="oneweekview_monday_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '1');"></td>
+ <td id="oneweekview_tuesday_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '1');"></td>
+ <td id="oneweekview_wednesday_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '1');"></td>
+ <td id="oneweekview_thursday_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '1');"></td>
+ <td id="oneweekview_friday_1" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '1');"></td>
+ <td id="oneweekview_saturday_1" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '1');"></td>
+ <td id="oneweekview_sunday_1" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '1');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">02:00</td>
+ <td id="oneweekview_monday_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '2');"></td>
+ <td id="oneweekview_tuesday_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '2');"></td>
+ <td id="oneweekview_wednesday_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '2');"></td>
+ <td id="oneweekview_thursday_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '2');"></td>
+ <td id="oneweekview_friday_2" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '2');"></td>
+ <td id="oneweekview_saturday_2" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '2');"></td>
+ <td id="oneweekview_sunday_2" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '2');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">03:00</td>
+ <td id="oneweekview_monday_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '3');"></td>
+ <td id="oneweekview_tuesday_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '3');"></td>
+ <td id="oneweekview_wednesday_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '3');"></td>
+ <td id="oneweekview_thursday_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '3');"></td>
+ <td id="oneweekview_friday_3" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '3');"></td>
+ <td id="oneweekview_saturday_3" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '3');"></td>
+ <td id="oneweekview_sunday_3" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '3');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">04:00</td>
+ <td id="oneweekview_monday_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '4');"></td>
+ <td id="oneweekview_tuesday_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '4');"></td>
+ <td id="oneweekview_wednesday_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '4');"></td>
+ <td id="oneweekview_thursday_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '4');"></td>
+ <td id="oneweekview_friday_4" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '4');"></td>
+ <td id="oneweekview_saturday_4" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '4');"></td>
+ <td id="oneweekview_sunday_4" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '4');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">05:00</td>
+ <td id="oneweekview_monday_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '5');"></td>
+ <td id="oneweekview_tuesday_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '5');"></td>
+ <td id="oneweekview_wednesday_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '5');"></td>
+ <td id="oneweekview_thursday_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '5');"></td>
+ <td id="oneweekview_friday_5" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '5');"></td>
+ <td id="oneweekview_saturday_5" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '5');"></td>
+ <td id="oneweekview_sunday_5" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '5');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">06:00</td>
+ <td id="oneweekview_monday_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '6');"></td>
+ <td id="oneweekview_tuesday_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '6');"></td>
+ <td id="oneweekview_wednesday_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '6');"></td>
+ <td id="oneweekview_thursday_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '6');"></td>
+ <td id="oneweekview_friday_6" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '6');"></td>
+ <td id="oneweekview_saturday_6" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '6');"></td>
+ <td id="oneweekview_sunday_6" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '6');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">07:00</td>
+ <td id="oneweekview_monday_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '7');"></td>
+ <td id="oneweekview_tuesday_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '7');"></td>
+ <td id="oneweekview_wednesday_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '7');"></td>
+ <td id="oneweekview_thursday_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '7');"></td>
+ <td id="oneweekview_friday_7" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '7');"></td>
+ <td id="oneweekview_saturday_7" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '7');"></td>
+ <td id="oneweekview_sunday_7" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '7');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">08:00</td>
+ <td id="oneweekview_monday_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '8');"></td>
+ <td id="oneweekview_tuesday_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '8');"></td>
+ <td id="oneweekview_wednesday_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '8');"></td>
+ <td id="oneweekview_thursday_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '8');"></td>
+ <td id="oneweekview_friday_8" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '8');"></td>
+ <td id="oneweekview_saturday_8" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '8');"></td>
+ <td id="oneweekview_sunday_8" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '8');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">09:00</td>
+ <td id="oneweekview_monday_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '9');"></td>
+ <td id="oneweekview_tuesday_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '9');"></td>
+ <td id="oneweekview_wednesday_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '9');"></td>
+ <td id="oneweekview_thursday_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '9');"></td>
+ <td id="oneweekview_friday_9" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '9');"></td>
+ <td id="oneweekview_saturday_9" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '9');"></td>
+ <td id="oneweekview_sunday_9" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '9');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">10:00</td>
+ <td id="oneweekview_monday_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '10');"></td>
+ <td id="oneweekview_tuesday_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '10');"></td>
+ <td id="oneweekview_wednesday_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '10');"></td>
+ <td id="oneweekview_thursday_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '10');"></td>
+ <td id="oneweekview_friday_10" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '10');"></td>
+ <td id="oneweekview_saturday_10" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '10');"></td>
+ <td id="oneweekview_sunday_10" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '10');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">11:00</td>
+ <td id="oneweekview_monday_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '11');"></td>
+ <td id="oneweekview_tuesday_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '11');"></td>
+ <td id="oneweekview_wednesday_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '11');"></td>
+ <td id="oneweekview_thursday_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '11');"></td>
+ <td id="oneweekview_friday_11" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '11');"></td>
+ <td id="oneweekview_saturday_11" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '11');"></td>
+ <td id="oneweekview_sunday_11" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '11');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">12:00</td>
+ <td id="oneweekview_monday_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '12');"></td>
+ <td id="oneweekview_tuesday_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '12');"></td>
+ <td id="oneweekview_wednesday_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '12');"></td>
+ <td id="oneweekview_thursday_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '12');"></td>
+ <td id="oneweekview_friday_12" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '12');"></td>
+ <td id="oneweekview_saturday_12" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '12');"></td>
+ <td id="oneweekview_sunday_12" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '12');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">13:00</td>
+ <td id="oneweekview_monday_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '13');"></td>
+ <td id="oneweekview_tuesday_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '13');"></td>
+ <td id="oneweekview_wednesday_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '13');"></td>
+ <td id="oneweekview_thursday_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '13');"></td>
+ <td id="oneweekview_friday_13" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '13');"></td>
+ <td id="oneweekview_saturday_13" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '13');"></td>
+ <td id="oneweekview_sunday_13" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '13');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">14:00</td>
+ <td id="oneweekview_monday_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '14');"></td>
+ <td id="oneweekview_tuesday_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '14');"></td>
+ <td id="oneweekview_wednesday_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '14');"></td>
+ <td id="oneweekview_thursday_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '14');"></td>
+ <td id="oneweekview_friday_14" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '14');"></td>
+ <td id="oneweekview_saturday_14" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '14');"></td>
+ <td id="oneweekview_sunday_14" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '14');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">15:00</td>
+ <td id="oneweekview_monday_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '15');"></td>
+ <td id="oneweekview_tuesday_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '15');"></td>
+ <td id="oneweekview_wednesday_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '15');"></td>
+ <td id="oneweekview_thursday_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '15');"></td>
+ <td id="oneweekview_friday_15" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '15');"></td>
+ <td id="oneweekview_saturday_15" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '15');"></td>
+ <td id="oneweekview_sunday_15" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '15');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">16:00</td>
+ <td id="oneweekview_monday_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '16');"></td>
+ <td id="oneweekview_tuesday_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '16');"></td>
+ <td id="oneweekview_wednesday_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '16');"></td>
+ <td id="oneweekview_thursday_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '16');"></td>
+ <td id="oneweekview_friday_16" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '16');"></td>
+ <td id="oneweekview_saturday_16" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '16');"></td>
+ <td id="oneweekview_sunday_16" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '16);"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">17:00</td>
+ <td id="oneweekview_monday_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '17');"></td>
+ <td id="oneweekview_tuesday_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '17');"></td>
+ <td id="oneweekview_wednesday_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '17');"></td>
+ <td id="oneweekview_thursday_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '17');"></td>
+ <td id="oneweekview_friday_17" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '17');"></td>
+ <td id="oneweekview_saturday_17" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '17');"></td>
+ <td id="oneweekview_sunday_17" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '17');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">18:00</td>
+ <td id="oneweekview_monday_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '18');"></td>
+ <td id="oneweekview_tuesday_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '18');"></td>
+ <td id="oneweekview_wednesday_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '18');"></td>
+ <td id="oneweekview_thursday_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '18');"></td>
+ <td id="oneweekview_friday_18" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '18');"></td>
+ <td id="oneweekview_saturday_18" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '18');"></td>
+ <td id="oneweekview_sunday_18" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '18');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">19:00</td>
+ <td id="oneweekview_monday_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '19');"></td>
+ <td id="oneweekview_tuesday_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '19');"></td>
+ <td id="oneweekview_wednesday_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '19');"></td>
+ <td id="oneweekview_thursday_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '19');"></td>
+ <td id="oneweekview_friday_19" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '19');"</td>
+ <td id="oneweekview_saturday_19" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '19');"></td>
+ <td id="oneweekview_sunday_19" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '19');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">20:00</td>
+ <td id="oneweekview_monday_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '20');"></td>
+ <td id="oneweekview_tuesday_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '20');"></td>
+ <td id="oneweekview_wednesday_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '20');"></td>
+ <td id="oneweekview_thursday_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '20');"></td>
+ <td id="oneweekview_friday_20" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '20');"></td>
+ <td id="oneweekview_saturday_20" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '20');"></td>
+ <td id="oneweekview_sunday_20" class="weekend_row"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">21:00</td>
+ <td id="oneweekview_monday_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '21');"></td>
+ <td id="oneweekview_tuesday_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '21');"></td>
+ <td id="oneweekview_wednesday_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '21');"></td>
+ <td id="oneweekview_thursday_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '21');"></td>
+ <td id="oneweekview_friday_21" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '21');"></td>
+ <td id="oneweekview_saturday_21" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '21');"></td>
+ <td id="oneweekview_sunday_21" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '21');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">22:00</td>
+ <td id="oneweekview_monday_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '22');"></td>
+ <td id="oneweekview_tuesday_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '22');"></td>
+ <td id="oneweekview_wednesday_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '22');"></td>
+ <td id="oneweekview_thursday_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '22');"></td>
+ <td id="oneweekview_friday_22" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '22');"></td>
+ <td id="oneweekview_saturday_22" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '22');"></td>
+ <td id="oneweekview_sunday_22" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '22');"></td>
+ </tr>
+ <tr>
+ <td class="calendar_time">23:00</td>
+ <td id="oneweekview_monday_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_monday').title, '23');"></td>
+ <td id="oneweekview_tuesday_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_tuesday').title, '23');"></td>
+ <td id="oneweekview_wednesday_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_wednesday').title, '23');"></td>
+ <td id="oneweekview_thursday_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_thursday').title, '23');"></td>
+ <td id="oneweekview_friday_23" class="calendar_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_friday').title, '23');"></td>
+ <td id="oneweekview_saturday_23" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_saturday').title, '23');"></td>
+ <td id="oneweekview_sunday_23" class="weekend_row" onclick="oc_cal_newevent(document.getElementById('oneweekview_sunday').title, '23');"></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="fourweeksview">
+ <table>
+ <thead>
+ <tr>
+ <th id="fourweeksview_calw_label" class="calendar_row"><?php echo $l -> t("CW");?></th>
+ <th id="fourweeksview_monday" class="calendar_row"><?php echo $l -> t("Monday");?></th>
+ <th id="fourweeksview_tuesday" class="calendar_row"><?php echo $l -> t("Tuesday");?></th>
+ <th id="fourweeksview_wednesday" class="calendar_row"><?php echo $l -> t("Wednesday");?></th>
+ <th id="fourweeksview_thursday" class="calendar_row"><?php echo $l -> t("Thursday");?></th>
+ <th id="fourweeksview_friday" class="calendar_row"><?php echo $l -> t("Friday");?></th>
+ <th id="fourweeksview_saturday" class="weekend_thead"><?php echo $l -> t("Saturday");?></th>
+ <th id="fourweeksview_sunday" class="weekend_thead"><?php echo $l -> t("Sunday");?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="fourweeksview_week_1">
+ <td id="fourweeksview_calw1"></td>
+ <td id="fourweeksview_monday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_monday_1">
+ </div>
+ <div class="events" id="events_fourweeksview_monday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_monday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_tuesday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_tuesday_1">
+ </div>
+ <div class="events" id="events_fourweeksview_tuesday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_tuesday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_wednesday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_wednesday_1">
+ </div>
+ <div class="events" id="events_fourweeksview_wednesday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_wednesday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_thursday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_thursday_1">
+ </div>
+ <div class="events" id="events_fourweeksview_thursday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_thursday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_friday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_friday_1">
+ </div>
+ <div class="events" id="events_fourweeksview_friday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_friday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_saturday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_saturday_1">
+ </div>
+ <div class="weekend" id="events_fourweeksview_saturday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_saturday_1').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_sunday_1" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_sunday_1">
+ </div>
+ <div class="weekend" id="events_fourweeksview_sunday_1" onclick="oc_cal_newevent(document.getElementById('fourweeksview_sunday_1').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="fourweeksview_week_2">
+ <td id="fourweeksview_calw2"></td>
+ <td id="fourweeksview_monday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_monday_2">
+ </div>
+ <div class="events" id="events_fourweeksview_monday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_monday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_tuesday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_tuesday_2">
+ </div>
+ <div class="events" id="events_fourweeksview_tuesday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_tuesday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_wednesday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_wednesday_2">
+ </div>
+ <div class="events" id="events_fourweeksview_wednesday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_wednesday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_thursday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_thursday_2">
+ </div>
+ <div class="events" id="events_fourweeksview_thursday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_thursday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_friday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_friday_2">
+ </div>
+ <div class="events" id="events_fourweeksview_friday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_friday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_saturday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_saturday_2">
+ </div>
+ <div class="weekend" id="events_fourweeksview_saturday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_saturday_2').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_sunday_2" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_sunday_2">
+ </div>
+ <div class="weekend" id="events_fourweeksview_sunday_2" onclick="oc_cal_newevent(document.getElementById('fourweeksview_sunday_2').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="fourweeksview_week_3">
+ <td id="fourweeksview_calw3"></td>
+ <td id="fourweeksview_monday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_monday_3">
+ </div>
+ <div class="events" id="events_fourweeksview_monday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_monday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_tuesday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_tuesday_3">
+ </div>
+ <div class="events" id="events_fourweeksview_tuesday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_tuesday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_wednesday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_wednesday_3">
+ </div>
+ <div class="events" id="events_fourweeksview_wednesday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_wednesday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_thursday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_thursday_3">
+ </div>
+ <div class="events" id="events_fourweeksview_thursday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_thursday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_friday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_friday_3">
+ </div>
+ <div class="events" id="events_fourweeksview_friday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_friday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_saturday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_saturday_3">
+ </div>
+ <div class="weekend" id="events_fourweeksview_saturday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_saturday_3').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_sunday_3" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_sunday_3">
+ </div>
+ <div class="weekend" id="events_fourweeksview_sunday_3" onclick="oc_cal_newevent(document.getElementById('fourweeksview_sunday_3').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="fourweeksview_week_4">
+ <td id="fourweeksview_calw4"></td>
+ <td id="fourweeksview_monday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_monday_4">
+ </div>
+ <div class="events" id="events_fourweeksview_monday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_monday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_tuesday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_tuesday_4">
+ </div>
+ <div class="events" id="events_fourweeksview_tuesday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_tuesday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_wednesday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_wednesday_4">
+ </div>
+ <div class="events" id="events_fourweeksview_wednesday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_wednesday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_thursday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_thursday_4">
+ </div>
+ <div class="events" id="events_fourweeksview_thursday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_thursday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_friday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_friday_4">
+ </div>
+ <div class="events" id="events_fourweeksview_friday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_friday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_saturday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_saturday_4">
+ </div>
+ <div class="weekend" id="events_fourweeksview_saturday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_saturday_4').title)">
+ </div>
+ </td>
+ <td id="fourweeksview_sunday_4" class="fourweeksview_item">
+ <div class="dateinfo" id="dateinfo_fourweeksview_sunday_4">
+ </div>
+ <div class="weekend" id="events_fourweeksview_sunday_4" onclick="oc_cal_newevent(document.getElementById('fourweeksview_sunday_4').title)">
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="onemonthview">
+ <table>
+ <thead>
+ <tr>
+ <th id="onemonthview_monday" class="calendar_row"><?php echo $l -> t("Monday");?></th>
+ <th id="onemonthview_tuesday" class="calendar_row"><?php echo $l -> t("Tuesday");?></th>
+ <th id="onemonthview_wednesday" class="calendar_row"><?php echo $l -> t("Wednesday");?></th>
+ <th id="onemonthview_thursday" class="calendar_row"><?php echo $l -> t("Thursday");?></th>
+ <th id="onemonthview_friday" class="calendar_row"><?php echo $l -> t("Friday");?></th>
+ <th id="onemonthview_saturday" class="weekend_thead"><?php echo $l -> t("Saturday");?></th>
+ <th id="onemonthview_sunday" class="weekend_thead"><?php echo $l -> t("Sunday");?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="onemonthview_week_1">
+ <td id="onemonthview_monday_1" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_1">
+ </div>
+ <div class="events" id="events_onemonthview_monday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_1" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_1">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_1" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_1">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_1" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_1">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_1" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_1">
+ </div>
+ <div class="events" id="events_onemonthview_friday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_1" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_1">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_1').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_1" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_1">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_1" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_1').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="onemonthview_week_2">
+ <td id="onemonthview_monday_2" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_2">
+ </div>
+ <div class="events" id="events_onemonthview_monday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_2" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_2">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_2" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_2">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_2" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_2">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_2" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_2">
+ </div>
+ <div class="events" id="events_onemonthview_friday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_2" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_2">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_2').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_2" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_2">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_2" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_2').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="onemonthview_week_3">
+ <td id="onemonthview_monday_3" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_3">
+ </div>
+ <div class="events" id="events_onemonthview_monday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_3" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_3">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_3" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_3">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_3" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_3">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_3" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_3">
+ </div>
+ <div class="events" id="events_onemonthview_friday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_3" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_3">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_3').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_3" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_3">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_3" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_3').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="onemonthview_week_4">
+ <td id="onemonthview_monday_4" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_4">
+ </div>
+ <div class="events" id="events_onemonthview_monday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_4" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_4">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_4" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_4">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_4" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_4">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_4" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_4">
+ </div>
+ <div class="events" id="events_onemonthview_friday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_4" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_4">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_4').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_4" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_4">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_4" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_4').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="onemonthview_week_5">
+ <td id="onemonthview_monday_5" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_5">
+ </div>
+ <div class="events" id="events_onemonthview_monday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_5" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_5">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_5" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_5">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_5" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_5">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_5" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_5">
+ </div>
+ <div class="events" id="events_onemonthview_friday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_5" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_5">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_5').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_5" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_5">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_5" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_5').title)">
+ </div>
+ </td>
+ </tr>
+ <tr id="onemonthview_week_6">
+ <td id="onemonthview_monday_6" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_monday_6">
+ </div>
+ <div class="events" id="events_onemonthview_monday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_monday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_tuesday_6" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_tuesday_6">
+ </div>
+ <div class="events" id="events_onemonthview_tuesday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_tuesday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_wednesday_6" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_wednesday_6">
+ </div>
+ <div class="events" id="events_onemonthview_wednesday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_wednesday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_thursday_6" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_thursday_6">
+ </div>
+ <div class="events" id="events_onemonthview_thursday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_thursday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_friday_6" class="onemonthview_item">
+ <div class="dateinfo" id="dateinfo_onemonthview_friday_6">
+ </div>
+ <div class="events" id="events_onemonthview_friday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_friday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_saturday_6" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_saturday_6">
+ </div>
+ <div class="weekend" id="events_onemonthview_saturday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_saturday_6').title)">
+ </div>
+ </td>
+ <td id="onemonthview_sunday_6" class="weekend">
+ <div class="dateinfo" id="dateinfo_onemonthview_sunday_6">
+ </div>
+ <div class="weekend" id="events_onemonthview_sunday_6" onclick="oc_cal_newevent(document.getElementById('onemonthview_sunday_6').title)">
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="listview">
+
+ </div>
+ </div>
+ <!-- Dialogs -->
+ <div id="dialog_holder"></div>
+ <div id="parsingfail_dialog" title="Parsing Fail">
+ <?php echo $l->t("There was a fail, while parsing the file."); ?>
+ </div>
+ <!-- End of Dialogs -->
+ <script type="text/javascript">
+ //sending ajax request on every change view and use last view as default on the next
+ <?php
+ if(OC_Preferences::getValue(OC_USER::getUser(), "calendar", "currentview") == ""){
+ echo "var oc_cal_currentview = \"onemonthview\";";
+ }else{
+ echo "var oc_cal_currentview = \"" . OC_Preferences::getValue(OC_USER::getUser(), "calendar", "currentview") . "\";";
+ }
+
+ ?>
+ document.getElementById(oc_cal_currentview).style.display = "block";
+ document.getElementById(oc_cal_currentview + "_radio").style.color = "#0098E4";
+ oc_cal_update_view(oc_cal_currentview);
+ function oc_cal_change_view(view, task){
+ document.getElementById(oc_cal_currentview).style.display = "none";
+ document.getElementById(oc_cal_currentview + "_radio").style.color = "#000000";
+ document.getElementById(view).style.display = "block";
+ oc_cal_currentview = view;
+ document.getElementById(oc_cal_currentview + "_radio").style.color = "#0098E4";
+ oc_cal_update_view(view, task);
+ }
+ document.getElementById("onedayview_radio").value = onedayview_radio;
+ document.getElementById("oneweekview_radio").value = oneweekview_radio;
+ document.getElementById("fourweeksview_radio").value = fourweeksview_radio;
+ document.getElementById("onemonthview_radio").value = onemonthview_radio;
+ document.getElementById("listview_radio").value = listview_radio;
+ document.getElementById("today_input").value = today_button_value;
+ document.getElementById("choosecalendar_input").value = choosecalendar_value;
+ //document.getElementById("download_input").src = oc_webroot + "/core/img/actions/download.svg";
+ </script>
+ <script type="text/javascript" id="js_events">
+ <?php
+ //
+
+
+
+
+
+
+ ?>
+ </script> \ No newline at end of file
diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php
new file mode 100755
index 00000000000..30866270ac5
--- /dev/null
+++ b/apps/calendar/templates/part.choosecalendar.php
@@ -0,0 +1,26 @@
+<div id="choosecalendar_dialog" title="<?php echo $l->t("Choose active calendars"); ?>">
+<table width="100%" style="border: 0;">
+<?php
+$option_calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+for($i = 0; $i < count($option_calendars); $i++){
+ echo "<tr>";
+ $tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
+ $tmpl->assign('calendar', $option_calendars[$i]);
+ $tmpl->printpage();
+ echo "</tr>";
+}
+?>
+</table>
+<script type="text/javascript">
+ $( "#choosecalendar_dialog" ).dialog({
+ width : 500,
+ close : function() {
+ oc_cal_opendialog = 0;
+ var lastchild = document.getElementById("body-user").lastChild
+ while(lastchild.id != "lightbox"){
+ document.getElementById("body-user").removeChild(lastchild);
+ lastchild = document.getElementById("body-user").lastChild;
+ }
+ }
+ });
+</script>
diff --git a/apps/calendar/templates/part.choosecalendar.rowfields.php b/apps/calendar/templates/part.choosecalendar.rowfields.php
new file mode 100755
index 00000000000..ebe1ca0b137
--- /dev/null
+++ b/apps/calendar/templates/part.choosecalendar.rowfields.php
@@ -0,0 +1,4 @@
+<?php
+ echo "<td width=\"20px\"><input id=\"active_" . $_['calendar']["id"] . "\" type=\"checkbox\" onClick=\"oc_cal_calender_activation(this, " . $_['calendar']["id"] . ")\"" . ($_['calendar']["active"] ? ' checked="checked"' : '') . "></td>";
+ echo "<td><label for=\"active_" . $_['calendar']["id"] . "\">" . $_['calendar']["displayname"] . "</label></td>";
+ echo "<td width=\"20px\"><a style=\"display: block; opacity: 0.214133;\" href=\"#\" title=\"" . $l->t("Download") . "\" class=\"action\"><img src=\"/owncloud/core/img/actions/download.svg\"></a></td><td width=\"20px\"><a style=\"display: block; opacity: 0.214133;\" href=\"#\" title=\"" . $l->t("Edit") . "\" class=\"action\" onclick=\"oc_cal_editcalendar(this, " . $_['calendar']["id"] . ");\"><img src=\"/owncloud/core/img/actions/rename.svg\"></a></td>";
diff --git a/apps/calendar/templates/part.editcalendar.php b/apps/calendar/templates/part.editcalendar.php
new file mode 100755
index 00000000000..d6f4e9f16ff
--- /dev/null
+++ b/apps/calendar/templates/part.editcalendar.php
@@ -0,0 +1,32 @@
+<td id="editcalendar_dialog" title="<?php echo $l->t("Edit calendar"); ?>" colspan="4">
+<table width="100%" style="border: 0;">
+<tr>
+ <th><?php echo $l->t('Displayname') ?></th>
+ <td>
+ <input id="displayname_<?php echo $_['calendar']['id'] ?>" type="text" value="<?php echo $_['calendar']['displayname'] ?>">
+ </td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input id="active_<?php echo $_['calendar']['id'] ?>" type="checkbox"<?php echo ($_['calendar']['active'] ? ' checked="checked"' : '' ) ?>>
+ <label for="active_<?php echo $_['calendar']['id'] ?>">
+ <?php echo $l->t('Active') ?>
+ </label>
+ </td>
+</tr>
+<tr>
+ <th><?php echo $l->t('Description') ?></th>
+ <td>
+ <textarea id="description_<?php echo $_['calendar']['id'] ?>"><?php echo $_['calendar']['description'] ?></textarea>
+ </td>
+</tr>
+<tr>
+ <th><?php echo $l->t('Calendar color') ?></th>
+ <td>
+ <input id="calendarcolor_<?php echo $_['calendar']['id'] ?>" type="text" value="<?php echo $_['calendar']['calendarcolor'] ?>">
+ </td>
+</tr>
+</table>
+<input style="float: left;" type="button" onclick="oc_cal_editcalendar_submit(this, <?php echo $_['calendar']['id'] ?>);" value="<?php echo $l->t("Submit"); ?>">
+</td>
diff --git a/apps/calendar/templates/part.editevent.php b/apps/calendar/templates/part.editevent.php
new file mode 100755
index 00000000000..8a85652442c
--- /dev/null
+++ b/apps/calendar/templates/part.editevent.php
@@ -0,0 +1,133 @@
+<div id="editevent" title="<?php echo $l -> t("Edit an event");?>">
+ <table id="editevent_table" width="100%">
+ <tr>
+ <td width="75px"><?php echo $l -> t("Title");?>:</td>
+ <td>
+ <input type="text" style="width:350px;" size="100" placeholder="Title of the Event" maxlength="100" />
+ </td>
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Location");?>:</td>
+ <td>
+ <input type="text" style="width:350px;" size="100" placeholder="Location of the Event" maxlength="100" />
+ </td>
+ </tr>
+ </table>
+ <table>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Category");?>:</td>
+ <td>
+ <select class="formselect" id="formcategorie_select" style="width:140px;">
+ <option>Coming soon</option><!--
+ <option>Work</option>
+ <option>Call</option>-->
+ </select></td>
+ <td width="75px">&nbsp;&nbsp;&nbsp;<?php echo $l -> t("Calendar");?>:</td>
+ <td>
+ <select class="formselect" id="formcalendar_select" style="width:140px;">
+ <option>Coming soon</option><!--
+ <option>Calendar 1</option>
+ <option>Calendar 2</option>
+ <option>Calendar 3</option>-->
+ </select></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px"></td>
+ <td>
+ <input onclick="lock_time();" type="checkbox" id="newcalendar_allday_checkbox">
+ <label for="newcalendar_allday_checkbox"><?php echo $l -> t("All Day Event");?></label></td>
+ </tr>
+ <tr>
+ <?php $day = substr($_GET["d"], 0, 2);
+ $month = substr($_GET["d"], 2, 2);
+ $year = substr($_GET["d"], 4, 4);
+ ?>
+ <td width="75px"><?php echo $l -> t("From");?>:</td>
+ <td>
+ <input type="text" value="<?php echo $day . "-" . $month . "-" . $year;?>" id="from">
+ &nbsp;&nbsp;
+ <input type="time" value="<?php echo date("H:i");?>" id="fromtime">
+ </td><!--use jquery-->
+ </tr>
+ <tr>
+ <?php
+ if(date("H") == 23) {$day++;
+ $time = 0;
+ } else {$time = date("H") + 1;
+ }
+ ?>
+ <td width="75px"><?php echo $l -> t("To");?>:</td>
+ <td>
+ <input type="text" value="<?php echo $day . "-" . $month . "-" . $year;?>" id="to">
+ &nbsp;&nbsp;
+ <input type="time" value="<?php echo $time . date(":i");?>" id="totime">
+ </td><!--use jquery-->
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Repeat");?>:</td>
+ <td>
+ <select class="formselect" id="formrepeat_select" style="width:350px;">
+ <option id="doesnotrepeat" selected="selected">Does not repeat</option>
+ <option>Daily</option>
+ <option>Weekly</option>
+ <option>Every Weekday</option>
+ <option>Bi-Weekly</option>
+ <option>Monthly</option>
+ <option>Yearly</option>
+ </select></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Attendees");?>:</td>
+ <td style="height: 50px;"></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px" style="vertical-align: top;"><?php echo $l -> t("Description");?>:</td>
+ <td> <textarea style="width:350px;height: 150px;"placeholder="Description of the Event"></textarea></td>
+ </tr>
+ </table>
+ <span id="editevent_actions">
+ <input type="button" style="float: left;" value="<?php echo $l -> t("Submit");?>">
+ </span>
+</div>
+<script type="text/javascript">
+ $( "#editevent" ).dialog({
+ width : 500,
+ close : function() {
+ oc_cal_opendialog = 0;
+ var lastchild = document.getElementById("body-user").lastChild
+ while(lastchild.id != "lightbox"){
+ document.getElementById("body-user").removeChild(lastchild);
+ lastchild = document.getElementById("body-user").lastChild;
+ }
+ },
+ open : function(){alert("Doesn't work yet.");}
+ });
+ $( "#from" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ $( "#to" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ function lock_time() {
+ if(document.getElementById("totime").disabled == true) {
+ document.getElementById("fromtime").disabled = false;
+ document.getElementById("totime").disabled = false;
+ document.getElementById("fromtime").style.color = "#333";
+ document.getElementById("totime").style.color = "#333";
+ } else {
+ document.getElementById("fromtime").disabled = true;
+ document.getElementById("totime").disabled = true;
+ document.getElementById("fromtime").style.color = "#A9A9A9";
+ document.getElementById("totime").style.color = "#A9A9A9";
+ }
+ }
+</script>
diff --git a/apps/calendar/templates/part.eventinfo.php b/apps/calendar/templates/part.eventinfo.php
new file mode 100755
index 00000000000..edccaaa2227
--- /dev/null
+++ b/apps/calendar/templates/part.eventinfo.php
@@ -0,0 +1,87 @@
+ <div id="eventinfo" title="<?php echo $l -> t("Edit an event");?>">
+ <table id="eventinfo_table" width="100%">
+ <tr>
+ <td width="75px"><?php echo $l -> t("Title");?>:</td>
+ <td>
+ </td>
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Location");?>:</td>
+ <td>
+ </td>
+ </tr>
+ </table>
+ <table>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Category");?>:</td>
+ <td></td>
+ <td width="75px">&nbsp;&nbsp;&nbsp;<?php echo $l -> t("Calendar");?>:</td>
+ <td></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px"></td>
+ <td>
+ <input type="checkbox" id="newcalendar_allday_checkbox" disabled="true">
+ <label for="newcalendar_allday_checkbox"><?php echo $l -> t("All Day Event");?></label></td>
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("From");?>:</td>
+ <td>
+ &nbsp;&nbsp;
+ </td><!--use jquery-->
+ </tr>
+ <tr>
+
+ <td width="75px"><?php echo $l -> t("To");?>:</td>
+ <td>
+ &nbsp;&nbsp;
+ </td><!--use jquery-->
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Repeat");?>:</td>
+ <td></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Attendees");?>:</td>
+ <td style="height: 50px;"></td>
+ </tr>
+ </table>
+ <hr>
+ <table>
+ <tr>
+ <td width="75px" style="vertical-align: top;"><?php echo $l -> t("Description");?>:</td>
+ <td></td>
+ </tr>
+ </table>
+ <span id="editevent_actions">
+ <input type="button" style="float: left;" value="<?php echo $l -> t("Close");?>">
+ <input type="button" style="float: right;" value="<?php echo $l -> t("Edit");?>">
+ </span>
+</div>
+<script type="text/javascript">
+ $( "#eventinfo" ).dialog({
+ width : 500,
+ close : function() {
+ oc_cal_opendialog = 0;
+ var lastchild = document.getElementById("body-user").lastChild
+ while(lastchild.id != "lightbox"){
+ document.getElementById("body-user").removeChild(lastchild);
+ lastchild = document.getElementById("body-user").lastChild;
+ }
+ },
+ open : function(){alert("Doesn't work yet.");}
+ });
+ $( "#from" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ $( "#to" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ }
+</script> \ No newline at end of file
diff --git a/apps/calendar/templates/part.getcal.php b/apps/calendar/templates/part.getcal.php
new file mode 100755
index 00000000000..0d85c9be4c4
--- /dev/null
+++ b/apps/calendar/templates/part.getcal.php
@@ -0,0 +1,42 @@
+<?php
+$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;
+ $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', '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'];
+ if (isset($return_events[$year][$month][$day][$hour]))
+ {
+ $return_events[$year][$month][$day][$hour][] = $return_event;
+ }
+ else
+ {
+ $return_events[$year][$month][$day][$hour] = array(1 => $return_event);
+ }
+}
+echo json_encode($return_events);
+?>
diff --git a/apps/calendar/templates/part.newevent.php b/apps/calendar/templates/part.newevent.php
new file mode 100755
index 00000000000..21dddaa7db8
--- /dev/null
+++ b/apps/calendar/templates/part.newevent.php
@@ -0,0 +1,202 @@
+<div id="newevent" title="<?php echo $l -> t("Create a new event");?>">
+ <form id="newevent_form">
+ <table id="newevent_table" width="100%">
+ <tr>
+ <td width="75px"><?php echo $l -> t("Title");?>:</td>
+ <td>
+ <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l -> t("Title of the Event");?>" maxlength="100" id="newevent_title"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Location");?>:</td>
+ <td>
+ <input type="text" style="width:350px;" size="100" placeholder="<?php echo $l -> t("Location of the Event");?>" maxlength="100" id="newevent_location" />
+ </td>
+ </tr>
+ </table>
+ <table>
+ <tr>
+ <td width="75px"><?php echo $l -> t("Category");?>:</td>
+ <td>
+ <select class="formselect" id="formcategorie_select" style="width:140px;" id="newevent_cat">
+ <option>Coming soon</option>
+ <option>Work</option>
+ <option>Call</option>
+ </select></td>
+ <td width="75px">&nbsp;&nbsp;&nbsp;<?php echo $l -> t("Calendar");?>:</td>
+ <td>
+ <select class="formselect" id="formcalendar_select" style="width:140px;" id="newevent_cal">
+ <?php
+ $option_calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+ for($i = 0; $i < count($option_calendars); $i++){
+ echo "<option id=\"option_" . $option_calendars[$i]["id"] . "\">" . $option_calendars[$i]["displayname"] . "</option>";
+ }
+ ?>
+ </select></td>
+ </tr>
+ </table>
+ <hr>
+ <?php $day = substr($_GET["d"], 0, 2);
+ $month = substr($_GET["d"], 2, 2);
+ $year = substr($_GET["d"], 4, 4);
+ $time = $_GET["t"];
+ if($time != "undefined" && !is_nan($_GET["t"]) && $_GET["t"] != "allday"){
+ $time = $_GET["t"];
+ $minutes = "00";
+ }elseif($_GET["t"] == "allday"){
+ $time = "0";
+ $minutes = "00";
+ $allday = true;
+ }else{
+ $time = date("H");
+ $minutes = date("i");
+ }
+ ?>
+ <table>
+ <tr>
+ <td width="75px"></td>
+ <td>
+ <input onclick="lock_time();" type="checkbox"<?php if($allday == true){echo "checked=\"checked\"";} ?> id="newcalendar_allday_checkbox">
+ <?php if($allday == true){echo "<script type=\"text/javascript\">document.getElementById(\"fromtime\").disabled = true;document.getElementById(\"totime\").disabled = true;document.getElementById(\"fromtime\").style.color = \"#A9A9A9\";document.getElementById(\"totime\").style.color = \"#A9A9A9\";</script>";}?>
+ <label for="newcalendar_allday_checkbox"><?php echo $l -> t("All Day Event");?></label></td>
+ </tr>
+ <tr>
+
+ <td width="75px"><?php echo $l -> t("From");?>:</td>
+ <td>
+ <input type="text" value="<?php echo $day . "-" . $month . "-" . $year;?>" id="from">
+ &nbsp;&nbsp;
+ <input type="time" value="<?php echo $time . ":" . $minutes;?>" id="fromtime">
+ </td><!--use jquery-->
+ </tr>
+ <tr>
+ <?php
+ if(date("H") == 23) {
+ $day++;
+ $time = 0;
+ } else {
+ $time++;
+ }
+ ?>
+ <td width="75px"><?php echo $l -> t("To");?>:</td>
+ <td>
+ <input type="text" value="<?php echo $day . "-" . $month . "-" . $year;?>" id="to">
+ &nbsp;&nbsp;
+ <input type="time" value="<?php echo $time . ":" . $minutes;?>" id="totime">
+ </td><!--use jquery-->
+ </tr><!--
+ <tr>
+ <td width="75px"><?php echo $l -> t("Repeat");?>:</td>
+ <td>
+ <select class="formselect" id="formrepeat_select" style="width:350px;">
+ <option id="repeat_doesnotrepeat" selected="selected"><?php echo $l->t("Does not repeat");?></option>
+ <option id="repeat_daily"><?php echo $l->t("Daily");?></option>
+ <option id="repeat_weekly"><?php echo $l->t("Weekly");?></option>
+ <option id="repeat_weekday"><?php echo $l->t("Every Weekday");?></option>
+ <option id="repeat_biweekly"><?php echo $l->t("Bi-Weekly");?></option>
+ <option id="repeat_monthly"><?php echo $l->t("Monthly");?></option>
+ <option id="repeat_yearly"><?php echo $l->t("Yearly");?></option>
+ </select></td>
+ </tr>-->
+ </table>
+ <hr>
+ <table><!--
+ <tr>
+ <td width="75px"><?php echo $l -> t("Attendees");?>:</td>
+ <td style="height: 50px;"></td>
+ </tr>
+ </table>
+ <hr>-->
+ <table>
+ <tr>
+ <td width="75px" style="vertical-align: top;"><?php echo $l -> t("Description");?>:</td>
+ <td><textarea style="width:350px;height: 150px;"placeholder="<?php echo $l->t("Description of the Event");?>" id="description"></textarea></td>
+ </tr>
+ </table>
+ <div style="width: 100%;text-align: center;color: #FF1D1D;" id="errorbox"></div>
+ <span id="newcalendar_actions">
+ <input type="button" class="submit" style="float: left;" value="<?php echo $l -> t("Submit");?>" onclick="validate_newevent_form();">
+ </span>
+ </form>
+</div>
+<script type="text/javascript">
+ $("#newevent").dialog({
+ width : 500,
+ close : function() {
+ oc_cal_opendialog = 0;
+ var lastchild = document.getElementById("body-user").lastChild
+ while(lastchild.id != "lightbox"){
+ document.getElementById("body-user").removeChild(lastchild);
+ lastchild = document.getElementById("body-user").lastChild;
+ }
+ }
+ });
+ $( "#from" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ $( "#to" ).datepicker({
+ dateFormat : 'dd-mm-yy'
+ });
+ function lock_time() {
+ if(document.getElementById("totime").disabled == true) {
+ document.getElementById("fromtime").disabled = false;
+ document.getElementById("totime").disabled = false;
+ document.getElementById("fromtime").style.color = "#333";
+ document.getElementById("totime").style.color = "#333";
+ } else {
+ document.getElementById("fromtime").disabled = true;
+ document.getElementById("totime").disabled = true;
+ document.getElementById("fromtime").style.color = "#A9A9A9";
+ document.getElementById("totime").style.color = "#A9A9A9";
+ }
+ }
+ function validate_newevent_form(){
+ var newevent_title = document.getElementById("newevent_title").value;
+ var newevent_location = document.getElementById("newevent_location").value;
+ var newevent_cat;// = document.getElementById("newevent_cat").options[document.getElementById("newevent_cat").selectedIndex].value;
+ var newevent_cal;// = document.getElementById("newevent_cal").options[document.getElementById("newevent_cal").selectedIndex].value;
+ var newevent_allday = document.getElementById("newcalendar_allday_checkbox").checked;
+ var newevent_from = document.getElementById("from").value;
+ var newevent_fromtime = document.getElementById("fromtime").value;
+ var newevent_to = document.getElementById("to").value;
+ var newevent_totime = document.getElementById("totime").value;
+ var newevent_description = document.getElementById("description").value;
+ $.post("ajax/newevent.php", { title: newevent_title, location: newevent_location, cat: newevent_cat, cal: newevent_cal, allday: newevent_allday, from: newevent_from, fromtime: newevent_fromtime, to: newevent_to, totime: newevent_totime, description: newevent_description},
+ function(data){
+ if(data.error == "true"){
+ document.getElementById("errorbox").innerHTML = "";
+ var output = "Missing fields: <br />";
+ if(data.title == "true"){
+ output = output + "Title<br />";
+ }
+ if(data.cal == "true"){
+ output = output + "Calendar<br />";
+ }
+ if(data.from == "true"){
+ output = output + "From Date<br />";
+ }
+ if(data.fromtime == "true"){
+ output = output + "From Time<br />";
+ }
+ if(data.to == "true"){
+ output = output + "To Date<br />";
+ }
+ if(data.totime == "true"){
+ output = output + "To Time<br />";
+ }
+ if(data.endbeforestart == "true"){
+ output = "The event ends before it starts!";
+ }
+ if(data.dberror == "true"){
+ output = "There was a database fail!";
+ }
+ document.getElementById("errorbox").innerHTML = output;
+ }else{
+ window.location.reload();
+ }
+ if(data.success == true){
+ location.reload();
+ }
+ },"json");
+ }
+</script> \ No newline at end of file
diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php
new file mode 100755
index 00000000000..0b0a4f1c265
--- /dev/null
+++ b/apps/calendar/templates/settings.php
@@ -0,0 +1,19 @@
+<form id="calendar">
+ <fieldset class="personalblock">
+ <label for="timezone"><strong><?php echo $l->t('Timezone');?></strong></label>
+ <select id="timezone" name="timezone">
+ <?php foreach($_['timezones'] as $timezone):
+ if ( preg_match( '/^(America|Antartica|Arctic|Asia|Atlantic|Europe|Indian|Pacific)\//', $timezone ) ):
+ $ex=explode('/', $timezone, 2);//obtain continent,city
+ if ($continent!=$ex[0]):
+ if ($continent!="") echo '</optgroup>';
+ echo '<optgroup label="'.$ex[0].'">';
+ endif;
+ $city=$ex[1];
+ $continent=$ex[0];
+ echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>';
+ endif;
+ endforeach;?>
+ </select><span id="timezoneerror"></span>
+ </fieldset>
+</form>