diff options
author | Georg Ehrke <georg.stefan.germany@googlemail.com> | 2011-09-01 16:15:48 +0200 |
---|---|---|
committer | Georg Ehrke <georg.stefan.germany@googlemail.com> | 2011-09-01 16:15:48 +0200 |
commit | 58129f9a119fb9df977ac99d18cc3dac1cad4fec (patch) | |
tree | e4f044e1cc7ddfb98f0b51fe334ca6d92e987e20 /apps | |
parent | 3972774a2ebf82b3bae2dacef7f8aa1aae279096 (diff) | |
parent | a7496b1c9d1005b962862cb233d7466d33d3bed1 (diff) | |
download | nextcloud-server-58129f9a119fb9df977ac99d18cc3dac1cad4fec.tar.gz nextcloud-server-58129f9a119fb9df977ac99d18cc3dac1cad4fec.zip |
Merge branch 'calendar' of git://gitorious.org/owncloud-dump/owncloud-dump
Diffstat (limited to 'apps')
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 Binary files differnew file mode 100755 index 00000000000..ee0249b2c9b --- /dev/null +++ b/apps/calendar/img/icon.png 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=" < " id="datecontrol_left" onclick="oc_cal_update_view('', 'backward');"/> + <input id="datecontrol_date" type="button" value=""/> + <input type="button" value=" > " 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"> <?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"> + + <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"> + + <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"> <?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> + + </td><!--use jquery--> + </tr> + <tr> + + <td width="75px"><?php echo $l -> t("To");?>:</td> + <td> + + </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"> <?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"> + + <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"> + + <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> |