merge Georgs calendar

This commit is contained in:
Jakob Sack 2011-08-11 11:22:07 +02:00
parent 4915610b5f
commit 414e5e174d
23 changed files with 11067 additions and 0 deletions

25
apps/calendar/ajax/ajax.php Executable file
View File

@ -0,0 +1,25 @@
<?php
require_once("../libs/sanitize.php");
require_once ("../../../lib/base.php");
if( !OC_USER::isLoggedIn()){
die("nosession");
}
if(sanitize_paranoid_string($_GET["task"]) == "load_events"){
echo "parsing_fail";
exit;
}elseif(sanitize_paranoid_string($_GET["task"]) == "edit_event"){
echo "edit_event";
exit;
}elseif(sanitize_paranoid_string($_GET["task"]) == "new_event"){
echo "new_event";
exit;
}elseif(sanitize_paranoid_string($_GET["task"]) == "edit_settings"){
echo "edit_settings";
exit;
}elseif(sanitize_paranoid_string($_GET["task"]) == "choose_calendar"){
echo "choose_calendar";
exit;
}else{
die("unknown task");
}
?>

View File

@ -0,0 +1,18 @@
<?php
OC::$CLASSPATH['OC_Calendat_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' => 'Calendar' ));

View File

@ -0,0 +1,189 @@
<?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>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>

View File

@ -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</author>
<require>2</require>
<description>CalDAV server with viewing support.</description>
</info>

48
apps/calendar/caldav.php Normal file
View File

@ -0,0 +1,48 @@
<?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/>.
*
*/
// 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();

7
apps/calendar/cfg/root.cfg.php Executable file
View File

@ -0,0 +1,7 @@
<?php
$defaultview = "onemonthview";
$calendar = array("files/calendar_app/private.ics", "files/calendar_app/german_hol.ics","files/calendar_app/christ_hol.ics");
$calendar_name = array("files/calendar_app/private.ics"=>"Privater Kalender", "files/calendar_app/german_hol.ics"=>"Deutsche Feiertage", "files/calendar_app/christ_hol.ics"=>"Christliche Feiertage");
$calendar_status = array("files/calendar_app/private.ics"=>"enabled", "files/calendar_app/german_hol.ics"=>"disabled", "files/calendar_app/christ_hol.ics"=>"enabled");
$default_timezone;
?>

171
apps/calendar/css/style.css Executable file
View File

@ -0,0 +1,171 @@
/*************************************************
* 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 General Public License (GPL) *
* *
* <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 IDs *
* calendar_container - contains all calendar *
* choosecalendar - choose Calender holder *
* choosecalendar_dialog - Dialog to choose cal. *
* newentry_dialog - Dialog for creating an event *
* editentry_dialog - Dialog for editing an event *
* view - container for view chooser *
* datecontrol - Date in the top middle *
* datecontrol_label - label for datecontrol *
* onedayview - view for one day *
* oneweekview - view for one week *
* fourweeksview - view for four weeks *
* onemonthview - view for one month *
* list of classes *
* actions - owncloud native class *
* center - centering an element *
* control - owncloud native class *
* dateinfo - date in four weeks and month view *
* calender_row - normal calender row *
* calender_time - calender row for time *
* fourweeksview_item - item in fourweeksview *
* onemonthview_item - item in onemonthview *
*************************************************/
#calendar_container {
position: absolute;
top: 150px;
bottom: 10px;
left: 230px;
right: 100px;
}
#choosecalendar {
margin-right: 10px;
float: right;
}
#choosecalendar_dialog {
display: none;
}
#newentry_dialog {
display: none;
}
#editentry_dialog {
display: none;
}
#parsingfail_dialog{
display: none;
}
#view {
margin-left: 10px;
float: left;
}
#datecontrol {
text-align: center;
}
#datecontrol_date_label {
margin: 0;
padding: 0;
}
#onedayview, #oneweekview, #fourweeksview, #onemonthview, #listview {
display: none;
}
#onedayview table {
margin: 0;
padding: 0;
width: 100%;
}
#oneweekview table {
margin: 0;
padding: 0;
width: 100%;
}
#fourweeksview table {
margin: 0;
padding: 0;
width: 100%;
}
#onemonthview table {
margin: 0;
padding: 0;
width: 100%;
}
#fourweeksview_calw1, #fourweeksview_calw2, #fourweeksview_calw3, #fourweeksview_calw4{
vertical-align: middle;
text-align: center;
width: 50px;
}
#devbox {
position: absolute;
top: 0;
left: 300px;
right: 300px;
text-align: center;
height: 50px;
}
.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;
}
.events {
height: 65px;
width: 100%;
margin: 0;
padding: 0;
}
.calendar_row {
height: 20px;
text-align: center;
}
.calendar_time {
height: 20px;
width: 50px;
text-align:right;
}
.fourweeksview_item {
text-align: center;
height: 80px;
}
.onemonthview_item {
text-align: center;
height: 80px;
margin: 0;
padding: 0;
vertical-align: top;
}
.weekend{
text-align: center;
height: 80px;
margin: 0;
padding: 0;
vertical-align: top;
background: #F3F3F3;
}
.weekend_thead, .weekend_row{
height: 20px;
text-align: center;
text-align: center;
background: #F3F3F3;
}

BIN
apps/calendar/img/icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

36
apps/calendar/index.php Executable file
View File

@ -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 General Public License (GPL) *
* *
* 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 ;
}
if(!file_exists("cfg/" . OC_USER::getUser() . ".cfg.php")) {
header("Location: install.php");
}
OC_UTIL::addScript("calendar", "calendar");
OC_UTIL::addScript("calendar", "calendar_init");
OC_UTIL::addScript("calendar", "calendar_dialog");
OC_UTIL::addStyle("calendar", "style");
require_once ("libs/iCalcreator.php");
require_once ("libs/oc_calendar.php");
OC_APP::setActiveNavigationEntry("calendar_index");
$output = new OC_TEMPLATE("calendar", "calendar", "user");
$output -> printpage();

35
apps/calendar/install.php Executable file
View File

@ -0,0 +1,35 @@
<?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 General Public License (GPL) *
* *
* 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();
}
if(!file_exists("cfg/" . OC_USER::getUser() . ".cfg.php")) {
header("Location: install.php");
}
OC_UTIL::addScript("calendar", "calendar");
OC_UTIL::addScript("calendar", "calendar_init");
OC_UTIL::addStyle("calendar", "style");
require_once ("template.php");
OC_APP::setActiveNavigationEntry("calendar_settings");
$output = new OC_TEMPLATE("calendar", "settings", "admin");
$output -> printpage();
?>

890
apps/calendar/js/calendar.js Executable file
View File

@ -0,0 +1,890 @@
/*************************************************
* 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 General Public License (GPL) *
* *
* 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 *
* 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 *
* 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 *
* 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 *
*************************************************/
function calw() {
var generate_dayofweek = dayofweek;
if(generate_dayofweek == 0) {
generate_dayofweek = 7;
}
var calw = Math.floor((doy() - generate_dayofweek) / 7) + 1;
return calw;
}
function doy() {
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
var doy = 0;
for(var i = 0; i < month; i++) {
doy = parseInt(doy) + parseInt(cal[i]);
}
doy = parseInt(doy) + dayofmonth;
return doy;
}
function checkforleapyear(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;
}
function update_view(view, task) {
if(view == "") {
view = currentview;
}
switch(view) {
case "onedayview":
if(task == "forward") {
forward_day();
}
if(task == "backward") {
backward_day();
}
remove_events("oneday");
load_cal("oneday");
load_events("oneday");
break;
case "oneweekview":
if(task == "forward") {
forward_week();
}
if(task == "backward") {
backward_week();
}
remove_events("oneweek");
load_cal("oneweek");
load_events("oneweek");
break;
case "fourweeksview":
if(task == "forward") {
forward_week();
}
if(task == "backward") {
backward_week();
}
remove_events("fourweeks");
load_cal("fourweeks");
load_events("fourweeks");
break;
case "onemonthview":
if(task == "forward") {
forward_month();
}
if(task == "backward") {
backward_month();
}
remove_events("onemonth");
load_cal("onemonth");
load_events("onemonth");
break;
case "listview":
if(task == "forward") {
forward_day();
}
if(task == "backward") {
backward_day();
}
remove_events("list");
load_cal("list");
load_events("list");
break;
default:
return false;
}
}
function listview(task) {
if(task == "forward") {
forward_day();
}
if(task == "backward") {
backward_day();
}
document.getElementById("datecontrol_date_label").innerHTML = dayshort[dayofweek] + space + dayofmonth + space + monthshort[month] + space + year;
}
function forward_day() {
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
if(dayofmonth == cal[month]) {
if(month == 11) {
date.setFullYear(year++, month = 0, dayofmonth = 1);
if(dayofweek == 6) {
dayofweek = 0;
} else {
dayofweek++;
}
} else {
date.setMonth(month++, dayofmonth = 1);
if(dayofweek == 6) {
dayofweek = 0;
} else {
dayofweek++;
}
}
} else {
date.setDate(dayofmonth++);
if(dayofweek == 6) {
dayofweek = 0;
} else {
dayofweek++;
}
}
if(month == 11) {
update_eventsvar(year + 1);
}
}
function forward_week() {
for(var i = 1; i <= 7; i++) {
forward_day();
}
}
function forward_month() {
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
for(var i = 1; i <= cal[month]; i++) {
forward_day();
}
}
function backward_day() {
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
if(dayofmonth == 1) {
if(month == 0) {
date.setFullYear(year--, month = 11, dayofmonth = 31);
if(dayofweek == 0) {
dayofweek = 6;
} else {
dayofweek--;
}
} else {
date.setMonth(month--, dayofmonth = cal[month]);
if(dayofweek == 0) {
dayofweek = 6;
} else {
dayofweek--;
}
}
} else {
date.setDate(dayofmonth--);
if(dayofweek == 0) {
dayofweek = 6;
} else {
dayofweek--;
}
}
if(month == 0) {
update_eventsvar( year - 1);
}
}
function backward_week() {
for(var i = 1; i <= 7; i++) {
backward_day();
}
}
function backward_month() {
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
for(var i = cal[month]; i >= 1; i--) {
backward_day();
}
}
function generate_dates(view) {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(view == "oneweek") {
var generate_dayofweek = dayofweek;
var generate_dayofmonth = dayofmonth;
var generate_month = month;
var generate_year = year;
var dates = new Array();
if(generate_dayofweek == 0) {
generate_dayofweek = 7;
}
for(var i = generate_dayofweek; i > 1; i--) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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++) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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 = dayofweek;
var generate_dayofmonth = dayofmonth;
var generate_month = month;
var generate_year = year;
var dates = new Array();
if(generate_dayofweek == 0) {
generate_dayofweek = 7;
}
for(var i = generate_dayofweek; i > 1; i--) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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++) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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 = dayofweek;
var generate_dayofmonth = dayofmonth;
var generate_month = month;
var generate_year = year;
var dates = new Array();
for(var i = generate_dayofmonth; i > 1; i--) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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;
rows++;
}
for(var i = generate_dayofweek; i > 1; i--) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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++) {
if(checkforleapyear(generate_year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
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 switch2today() {
date = today;
dayofweek = todaydayofweek;
month = todaymonth;
dayofmonth = todaydayofmonth;
year = todayyear;
update_view('', '');
}
function load_events(view, date) {
}
function update_eventsvar(loadyear) {
$("#js_events").load(oc_webroot + "/apps/calendar/ajax/ajax.php?task=load_events&year=" + loadyear);
if(document.getElementById("js_events").innerHTML == "nosession") {
alert("You are not logged in. That can happen if you don't use owncloud for a long time.");
document.location(oc_webroot);
}
if(document.getElementById("js_events").innerHTML == "parsingfail" || typeof (newevents) == "undefined") {
$(function() {
$( "#parsingfail_dialog" ).dialog();
});
} else {
events.concat(newevents);
}
}
function load_cal(loadview) {
if(loadview == "oneday") {
document.getElementById("datecontrol_date_label").innerHTML = dayshort[dayofweek] + space + dayofmonth + space + monthshort[month] + space + year;
document.getElementById("onedayview_today").innerHTML = daylong[dayofweek] + space + dayofmonth + space + monthshort[month];
}
if(loadview == "oneweek") {
document.getElementById("datecontrol_date_label").innerHTML = "CW: " + calw();
var dates = generate_dates("oneweek");
document.getElementById("oneweekview_monday").innerHTML = dayshort[1] + space + dates[0][0] + space + monthshort[dates[0][1]];
document.getElementById("oneweekview_tuesday").innerHTML = dayshort[2] + space + dates[1][0] + space + monthshort[dates[1][1]];
document.getElementById("oneweekview_wednesday").innerHTML = dayshort[3] + space + dates[2][0] + space + monthshort[dates[2][1]];
document.getElementById("oneweekview_thursday").innerHTML = dayshort[4] + space + dates[3][0] + space + monthshort[dates[3][1]];
document.getElementById("oneweekview_friday").innerHTML = dayshort[5] + space + dates[4][0] + space + monthshort[dates[4][1]];
document.getElementById("oneweekview_saturday").innerHTML = dayshort[6] + space + dates[5][0] + space + monthshort[dates[5][1]];
document.getElementById("oneweekview_sunday").innerHTML = dayshort[0] + space + dates[6][0] + space + monthshort[dates[6][1]];
}
if(loadview == "fourweeks") {
var calw1 = calw();
if(calw1 == 52) { //////////////////////////////// !!!! OPTIMIEREN !!!! ///////////////////////////////////////////////////////////
var calw2 = 1;
} else {
var calw2 = calw() + 1;
}
if(calw1 == 51) {
var calw3 = 1;
} else if(calw1 == 52) {
var calw3 = 2;
} else {
var calw3 = 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 = calw() + 3;
}
var calwplusfour = calw4;
var dates = generate_dates("fourweeks");
document.getElementById("dateinfo_fourweeksview_monday_1").innerHTML = dates[0][0] + space + monthshort[dates[0][1]];
document.getElementById("dateinfo_fourweeksview_tuesday_1").innerHTML = dates[1][0] + space + monthshort[dates[1][1]];
document.getElementById("dateinfo_fourweeksview_wednesday_1").innerHTML = dates[2][0] + space + monthshort[dates[2][1]];
document.getElementById("dateinfo_fourweeksview_thursday_1").innerHTML = dates[3][0] + space + monthshort[dates[3][1]];
document.getElementById("dateinfo_fourweeksview_friday_1").innerHTML = dates[4][0] + space + monthshort[dates[4][1]];
document.getElementById("dateinfo_fourweeksview_saturday_1").innerHTML = dates[5][0] + space + monthshort[dates[5][1]];
document.getElementById("dateinfo_fourweeksview_sunday_1").innerHTML = dates[6][0] + space + monthshort[dates[6][1]];
document.getElementById("dateinfo_fourweeksview_monday_2").innerHTML = dates[7][0] + space + monthshort[dates[7][1]];
document.getElementById("dateinfo_fourweeksview_tuesday_2").innerHTML = dates[8][0] + space + monthshort[dates[8][1]];
document.getElementById("dateinfo_fourweeksview_wednesday_2").innerHTML = dates[9][0] + space + monthshort[dates[9][1]];
document.getElementById("dateinfo_fourweeksview_thursday_2").innerHTML = dates[10][0] + space + monthshort[dates[10][1]];
document.getElementById("dateinfo_fourweeksview_friday_2").innerHTML = dates[11][0] + space + monthshort[dates[11][1]];
document.getElementById("dateinfo_fourweeksview_saturday_2").innerHTML = dates[12][0] + space + monthshort[dates[12][1]];
document.getElementById("dateinfo_fourweeksview_sunday_2").innerHTML = dates[13][0] + space + monthshort[dates[13][1]];
document.getElementById("dateinfo_fourweeksview_monday_3").innerHTML = dates[14][0] + space + monthshort[dates[14][1]];
document.getElementById("dateinfo_fourweeksview_tuesday_3").innerHTML = dates[15][0] + space + monthshort[dates[15][1]];
document.getElementById("dateinfo_fourweeksview_wednesday_3").innerHTML = dates[16][0] + space + monthshort[dates[16][1]];
document.getElementById("dateinfo_fourweeksview_thursday_3").innerHTML = dates[17][0] + space + monthshort[dates[17][1]];
document.getElementById("dateinfo_fourweeksview_friday_3").innerHTML = dates[18][0] + space + monthshort[dates[18][1]];
document.getElementById("dateinfo_fourweeksview_saturday_3").innerHTML = dates[19][0] + space + monthshort[dates[19][1]];
document.getElementById("dateinfo_fourweeksview_sunday_3").innerHTML = dates[20][0] + space + monthshort[dates[20][1]];
document.getElementById("dateinfo_fourweeksview_monday_4").innerHTML = dates[21][0] + space + monthshort[dates[21][1]];
document.getElementById("dateinfo_fourweeksview_tuesday_4").innerHTML = dates[22][0] + space + monthshort[dates[22][1]];
document.getElementById("dateinfo_fourweeksview_wednesday_4").innerHTML = dates[23][0] + space + monthshort[dates[23][1]];
document.getElementById("dateinfo_fourweeksview_thursday_4").innerHTML = dates[24][0] + space + monthshort[dates[24][1]];
document.getElementById("dateinfo_fourweeksview_friday_4").innerHTML = dates[25][0] + space + monthshort[dates[25][1]];
document.getElementById("dateinfo_fourweeksview_saturday_4").innerHTML = dates[26][0] + space + monthshort[dates[26][1]];
document.getElementById("dateinfo_fourweeksview_sunday_4").innerHTML = dates[27][0] + space + monthshort[dates[27][1]];
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_label").innerHTML = "CWs: " + calw() + " - " + calwplusfour;
}
if(loadview == "onemonth") {
document.getElementById("datecontrol_date_label").innerHTML = monthlong[month] + space + year;
if(checkforleapyear(year) == true) {
var cal = leap_cal;
} else {
var cal = normal_cal;
}
var monthview_dayofweek = dayofweek;
var monthview_dayofmonth = 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";
rows = parseInt(monthview_dayofweek) + parseInt(cal[month]);
rows = rows / 7;
rows = Math.ceil(rows);
var dates = generate_dates("onemonth");
document.getElementById("dateinfo_onemonthview_monday_1").innerHTML = dates[0][0] + space + monthshort[dates[0][1]];
document.getElementById("dateinfo_onemonthview_tuesday_1").innerHTML = dates[1][0] + space + monthshort[dates[1][1]];
document.getElementById("dateinfo_onemonthview_wednesday_1").innerHTML = dates[2][0] + space + monthshort[dates[2][1]];
document.getElementById("dateinfo_onemonthview_thursday_1").innerHTML = dates[3][0] + space + monthshort[dates[3][1]];
document.getElementById("dateinfo_onemonthview_friday_1").innerHTML = dates[4][0] + space + monthshort[dates[4][1]];
document.getElementById("dateinfo_onemonthview_saturday_1").innerHTML = dates[5][0] + space + monthshort[dates[5][1]];
document.getElementById("dateinfo_onemonthview_sunday_1").innerHTML = dates[6][0] + space + monthshort[dates[6][1]];
document.getElementById("dateinfo_onemonthview_monday_2").innerHTML = dates[7][0] + space + monthshort[dates[7][1]];
document.getElementById("dateinfo_onemonthview_tuesday_2").innerHTML = dates[8][0] + space + monthshort[dates[8][1]];
document.getElementById("dateinfo_onemonthview_wednesday_2").innerHTML = dates[9][0] + space + monthshort[dates[9][1]];
document.getElementById("dateinfo_onemonthview_thursday_2").innerHTML = dates[10][0] + space + monthshort[dates[10][1]];
document.getElementById("dateinfo_onemonthview_friday_2").innerHTML = dates[11][0] + space + monthshort[dates[11][1]];
document.getElementById("dateinfo_onemonthview_saturday_2").innerHTML = dates[12][0] + space + monthshort[dates[12][1]];
document.getElementById("dateinfo_onemonthview_sunday_2").innerHTML = dates[13][0] + space + monthshort[dates[13][1]];
document.getElementById("dateinfo_onemonthview_monday_3").innerHTML = dates[14][0] + space + monthshort[dates[14][1]];
document.getElementById("dateinfo_onemonthview_tuesday_3").innerHTML = dates[15][0] + space + monthshort[dates[15][1]];
document.getElementById("dateinfo_onemonthview_wednesday_3").innerHTML = dates[16][0] + space + monthshort[dates[16][1]];
document.getElementById("dateinfo_onemonthview_thursday_3").innerHTML = dates[17][0] + space + monthshort[dates[17][1]];
document.getElementById("dateinfo_onemonthview_friday_3").innerHTML = dates[18][0] + space + monthshort[dates[18][1]];
document.getElementById("dateinfo_onemonthview_saturday_3").innerHTML = dates[19][0] + space + monthshort[dates[19][1]];
document.getElementById("dateinfo_onemonthview_sunday_3").innerHTML = dates[20][0] + space + monthshort[dates[20][1]];
document.getElementById("dateinfo_onemonthview_monday_4").innerHTML = dates[21][0] + space + monthshort[dates[21][1]];
document.getElementById("dateinfo_onemonthview_tuesday_4").innerHTML = dates[22][0] + space + monthshort[dates[22][1]];
document.getElementById("dateinfo_onemonthview_wednesday_4").innerHTML = dates[23][0] + space + monthshort[dates[23][1]];
document.getElementById("dateinfo_onemonthview_thursday_4").innerHTML = dates[24][0] + space + monthshort[dates[24][1]];
document.getElementById("dateinfo_onemonthview_friday_4").innerHTML = dates[25][0] + space + monthshort[dates[25][1]];
document.getElementById("dateinfo_onemonthview_saturday_4").innerHTML = dates[26][0] + space + monthshort[dates[26][1]];
document.getElementById("dateinfo_onemonthview_sunday_4").innerHTML = dates[27][0] + space + monthshort[dates[27][1]];
document.getElementById("dateinfo_onemonthview_monday_5").innerHTML = dates[28][0] + space + monthshort[dates[28][1]];
document.getElementById("dateinfo_onemonthview_tuesday_5").innerHTML = dates[29][0] + space + monthshort[dates[29][1]];
document.getElementById("dateinfo_onemonthview_wednesday_5").innerHTML = dates[30][0] + space + monthshort[dates[30][1]];
document.getElementById("dateinfo_onemonthview_thursday_5").innerHTML = dates[31][0] + space + monthshort[dates[31][1]];
document.getElementById("dateinfo_onemonthview_friday_5").innerHTML = dates[32][0] + space + monthshort[dates[32][1]];
document.getElementById("dateinfo_onemonthview_saturday_5").innerHTML = dates[33][0] + space + monthshort[dates[33][1]];
document.getElementById("dateinfo_onemonthview_sunday_5").innerHTML = dates[34][0] + space + monthshort[dates[34][1]];
document.getElementById("dateinfo_onemonthview_monday_6").innerHTML = dates[35][0] + space + monthshort[dates[35][1]];
document.getElementById("dateinfo_onemonthview_tuesday_6").innerHTML = dates[36][0] + space + monthshort[dates[36][1]];
document.getElementById("dateinfo_onemonthview_wednesday_6").innerHTML = dates[37][0] + space + monthshort[dates[37][1]];
document.getElementById("dateinfo_onemonthview_thursday_6").innerHTML = dates[38][0] + space + monthshort[dates[38][1]];
document.getElementById("dateinfo_onemonthview_friday_6").innerHTML = dates[39][0] + space + monthshort[dates[39][1]];
document.getElementById("dateinfo_onemonthview_saturday_6").innerHTML = dates[40][0] + space + monthshort[dates[40][1]];
document.getElementById("dateinfo_onemonthview_sunday_6").innerHTML = dates[41][0] + space + monthshort[dates[41][1]];
if(rows == 5) {
document.getElementById("onemonthview_week_5").style.display = "table-row";
}
if(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_label").innerHTML = dayshort[dayofweek] + space + dayofmonth + space + monthshort[month] + space + year;
}
}
function load_events(loadview) {
if(loadview == "oneday") {
if( typeof (events[year][month][dayofmonth]) != "undefined") {
if( typeof (events[year][month][dayofmonth]["allday"]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("onedayview_wholeday");
while( typeof (events[year][month][dayofmonth]["allday"][eventnumber]) != "undefined") {
var newp = document.createElement("p");
newp.id = "onedayview_allday_" + eventnumber;
newp.className = "onedayview_event";
eventcontainer.appendChild(newp);
document.getElementById("onedayview_allday_" + eventnumber).innerHTML = events[year][month][dayofmonth]["allday"][eventnumber]["description"];
eventnumber++;
}
}
for( i = 0; i <= 23; i++) {
if( typeof (events[year][month][dayofmonth][i]) != "undefined") {
var eventnumber = 1;
while( typeof (events[year][month][dayofmonth][i][eventnumber]) != "undefined") {
var newp = document.createElement("p");
newp.id = "onedayview_" + i + "_" + eventnumber;
newp.className = "onedayview_event";
eventcontainer.appendChild(newp);
document.getElementById("onedayview_" + i + "_" + eventnumber).innerHTML = events[year][month][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 = generate_dates("oneweek");
document.getElementById("devbox").innerHTML = "";
for(var i = 0; i <= 6; i++) {
var loadevents_month = dates[i][0];
var loadevents_days = dates[i][1];
if( typeof (events[year][loadevents_month]) != "undefined") {
if( typeof (events[year][loadevents_month][loadevents_days]) != "undefined") {
if( typeof (events[year][loadevents_month][loadevents_days]["allday"]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("oneweekview_" + weekdays[i] + "_allday");
while( typeof (events[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);
document.getElementById("oneweekview_" + weekdays[i] + "_allday_" + eventnumber).innerHTML = events[year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
eventnumber++;
}
}
for(var time = 0; time <= 23; time++) {
if( typeof (events[year][loadevents_month][loadevents_days][time]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("oneweekview_" + weekdays[i] + "_" + time);
while( typeof (events[year][loadevents_month][loadevents_days][eventnumber]) != "undefined") {
var newp = document.createElement("p");
newp.id = "oneweekview_" + i + "_" + eventnumber;
newp.className = "oneweekview_event";
eventcontainer.appendChild(newp);
document.getElementById("oneweekview_" + i + "_" + eventnumber).innerHTML = events[year][loadevents_month][loadevents_days][i][eventnumber]["description"];
eventnumber++;
}
}
}
}
}
}
}
if(loadview == "fourweeks") {
var weekdays = new Array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday");
var dates = generate_dates("fourweeks");
var weekdaynum = 0;
var weeknum = 1;
for(var i = 0; i <= 27; i++) {
var loadevents_month = dates[i][0];
var loadevents_days = dates[i][1];
if( typeof (events[year][loadevents_month]) != "undefined") {
if( typeof (events[year][loadevents_month][loadevents_days]) != "undefined") {
var pnum = 0;
if( typeof (events[year][loadevents_month][loadevents_days]["allday"]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("events_fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum);
while( typeof (events[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);
document.getElementById("fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum).innerHTML = events[year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
eventnumber++;
pnum++;
}
}
for(var time = 0; time <= 23; time++) {
if( typeof (events[year][loadevents_month][loadevents_days][time]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("events_fourweeksview_" + weekdays[weekdaynum] + "_" + weeknum);
while( typeof (events[year][loadevents_month][loadevents_days][i][eventnumber]) != "undefined") {
var newp = document.createElement("p");
newp.id = "fourweeksview_" + i + "_" + eventnumber;
newp.className = "fourweeksview_event";
eventcontainer.appendChild(newp);
document.getElementById("fourweeksview_" + i + "_" + eventnumber).innerHTML = events[year][loadevents_month][loadevents_days][i][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 = generate_dates("onemonth");
var weekdaynum = 0;
var weeknum = 1;
for(var i = 0; i <= 41; i++) {
var loadevents_month = dates[i][0];
var loadevents_days = dates[i][1];
if( typeof (events[year][loadevents_month]) != "undefined") {
if( typeof (events[year][loadevents_month][loadevents_days]) != "undefined") {
var pnum = 0;
if( typeof (events[year][loadevents_month][loadevents_days]["allday"]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("events_onemonthview_" + weekdays[weekdaynum] + "_" + weeknum);
while( typeof (events[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);
document.getElementById("onemonthview_" + weekdays[weekdaynum] + "_" + weeknum + "_" + pnum).innerHTML = events[year][loadevents_month][loadevents_days]["allday"][eventnumber]["description"];
eventnumber++;
pnum++;
}
}
for(var time = 0; time <= 23; time++) {
if( typeof (events[year][loadevents_month][loadevents_days][time]) != "undefined") {
var eventnumber = 1;
var eventcontainer = document.getElementById("events_onemonthview_" + weekdays[weekdaynum] + "_" + weeknum);
while( typeof (events[year][loadevents_month][loadevents_days][i][eventnumber]) != "undefined") {
var newp = document.createElement("p");
newp.id = "onemonthview_" + i + "_" + eventnumber;
newp.className = "onemonthview_event";
eventcontainer.appendChild(newp);
document.getElementById("onemonthview_" + i + "_" + eventnumber).innerHTML = events[year][loadevents_month][loadevents_days][i][eventnumber]["description"];
eventnumber++;
pnum++;
}
}
}
}
}
if(weekdaynum == 6){
weekdaynum = 0;
weeknum++;
}else{
weekdaynum++;
}
}
}
if(loadview == "list") {
//
}
}
function 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") {
document.getElementById("events_onemonthview_monday_1").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_1").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_1").innerHTML = "";
document.getElementById("events_onemonthview_thursday_1").innerHTML = "";
document.getElementById("events_onemonthview_friday_1").innerHTML = "";
document.getElementById("events_onemonthview_saturday_1").innerHTML = "";
document.getElementById("events_onemonthview_sunday_1").innerHTML = "";
document.getElementById("events_onemonthview_monday_2").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_2").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_2").innerHTML = "";
document.getElementById("events_onemonthview_thursday_2").innerHTML = "";
document.getElementById("events_onemonthview_friday_2").innerHTML = "";
document.getElementById("events_onemonthview_saturday_2").innerHTML = "";
document.getElementById("events_onemonthview_sunday_2").innerHTML = "";
document.getElementById("events_onemonthview_monday_3").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_3").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_3").innerHTML = "";
document.getElementById("events_onemonthview_thursday_3").innerHTML = "";
document.getElementById("events_onemonthview_friday_3").innerHTML = "";
document.getElementById("events_onemonthview_saturday_3").innerHTML = "";
document.getElementById("events_onemonthview_sunday_3").innerHTML = "";
document.getElementById("events_onemonthview_monday_4").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_4").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_4").innerHTML = "";
document.getElementById("events_onemonthview_thursday_4").innerHTML = "";
document.getElementById("events_onemonthview_friday_4").innerHTML = "";
document.getElementById("events_onemonthview_saturday_4").innerHTML = "";
document.getElementById("events_onemonthview_sunday_4").innerHTML = "";
document.getElementById("events_onemonthview_monday_5").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_5").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_5").innerHTML = "";
document.getElementById("events_onemonthview_thursday_5").innerHTML = "";
document.getElementById("events_onemonthview_friday_5").innerHTML = "";
document.getElementById("events_onemonthview_saturday_5").innerHTML = "";
document.getElementById("events_onemonthview_sunday_5").innerHTML = "";
document.getElementById("events_onemonthview_monday_6").innerHTML = "";
document.getElementById("events_onemonthview_tuesday_6").innerHTML = "";
document.getElementById("events_onemonthview_wednesday_6").innerHTML = "";
document.getElementById("events_onemonthview_thursday_6").innerHTML = "";
document.getElementById("events_onemonthview_friday_6").innerHTML = "";
document.getElementById("events_onemonthview_saturday_6").innerHTML = "";
document.getElementById("events_onemonthview_sunday_6").innerHTML = "";
}
if(removeview == "list") {
document.getElementById("listview").innerHTML = "";
}
}

View File

@ -0,0 +1,56 @@
/*************************************************
* 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 General Public License (GPL) *
* *
* <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 *
* choosecalendar_dialog - calendar chooser *
* newevent_dialog - create event dialog *
* editevent_dialog - edit event dialog *
* choosecalendar_dialog_submit - submit *
* newevent_dialog_submit - submit *
* editevent_dialog_submit - submit *
*************************************************/
function choosecalendar_dialog() {
$( function() {
$( "#choosecalendar_dialog" ).dialog();
});
}
function newevent_dialog() {
$( function() {
$( "#newevent" ).dialog();
});
}
function editevent_dialog() {
$( function() {
$( "#editevent" ).dialog();
});
}
function choosecalendar_dialog_submit() {
}
function newevent_dialog_submit() {
}
function editevent_dialog_submit() {
}

View File

@ -0,0 +1,61 @@
/************************************************
* ownCloud - Calendar Plugin *
* *
* (c) Copyright 2011 Georg Ehrke *
* author: Georg Ehrke *
* email: ownclouddev at georgswebsite dot de *
* homepage: http://ownclouddev.georgswebsite.de *
* License: GPL *
* <http://www.gnu.org/licenses/>. *
************************************************/
//loading Buttons
$(function(){
$("#view").buttonset();
$("#choosecalendar").buttonset();
$("#datecontrol_left").button();
$("#datecontrol_left").button({ disabled: true });
$("#datecontrol_date").button();
$("#datecontrol_right").button();
$("#datecontrol_right").button({ disabled: true });
$(".choosecalendar_check").button();
$("#oneday").button();
$("#oneweek").button();
$("#fourweek").button();
$("#onemonth").button();
$("#list").button();
});
//init date vars
var date = new Date();
var dayofweek = date.getDay();
var month = date.getMonth();
var dayofmonth = date.getDate();
var year = date.getFullYear();
var daylong = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var dayshort = new Array("Sun.", "Mon.", "Tue.", "Wed.", "Thu.", "Fri.", "Sat.");
var monthlong = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var monthshort = new Array("Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.");
var space = " ";
var normal_cal = new Array("31","28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
var leap_cal = new Array("31","29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
//init today date vars
var today = new Date();
var todaydayofweek = today.getDay();
var todaymonth = today.getMonth();
var todaydayofmonth = today.getDate();
var todayyear = today.getFullYear();
//other vars
var rows;
var dates;
var listview_numofevents = 0;
var listview_count = 0;
//event vars
var events = new Array(2011);
events[2011] = new Array(0,1,2,3,4,5,6,7,8,9,10,11);
events[2011][7] = new Array();
events[2011][7][7] = new Array();
events[2011][7][7]["allday"] = new Array(1, 2);
events[2011][7][7]["allday"][1] = new Array("description");
events[2011][7][7]["allday"][1]["description"] = "abc";
events[2011][7][7]["allday"][2] = new Array("description");
events[2011][7][7]["allday"][2]["description"] = "ghfgh";
events[2011][7][13] = new Array();

352
apps/calendar/lib/PDO.php Normal file
View File

@ -0,0 +1,352 @@
<?php
/**
* PDO CalDAV backend
*
* This backend is used to store calendar-data in a PDO database, such as
* sqlite or MySQL
*
* @package Sabre
* @subpackage CalDAV
* @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
* @author Evert Pot (http://www.rooftopsolutions.nl/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
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) {
$fields = array_values($this->propertyMap);
$fields[] = 'id';
$fields[] = 'uri';
$fields[] = 'ctag';
$fields[] = 'components';
$fields[] = 'principaluri';
// Making fields a comma-delimited list
$fields = implode(', ', $fields);
$stmt = $this->pdo->prepare("SELECT " . $fields . " FROM `".$this->calendarTableName."` WHERE principaluri = ?");
$stmt->execute(array($principalUri));
$calendars = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$components = explode(',',$row['components']);
$calendar = array(
'id' => $row['id'],
'uri' => $row['uri'],
'principaluri' => $row['principaluri'],
'{' . 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;
}
}
$stmt = $this->pdo->prepare("INSERT INTO `".$this->calendarTableName."` (".implode(', ', $fieldNames).") VALUES (".implode(', ',array_keys($values)).")");
$stmt->execute($values);
return $this->pdo->lastInsertId();
}
/**
* 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
// Now we're generating the sql query.
$valuesSql = array();
foreach($newValues as $fieldName=>$value) {
$valuesSql[] = $fieldName . ' = ?';
}
$valuesSql[] = 'ctag = ctag + 1';
$stmt = $this->pdo->prepare("UPDATE `" . $this->calendarTableName . "` SET " . implode(', ',$valuesSql) . " WHERE id = ?");
$newValues['id'] = $calendarId;
$stmt->execute(array_values($newValues));
return true;
}
/**
* Delete a calendar and all it's objects
*
* @param string $calendarId
* @return void
*/
public function deleteCalendar($calendarId) {
$stmt = $this->pdo->prepare('DELETE FROM `'.$this->calendarObjectTableName.'` WHERE calendarid = ?');
$stmt->execute(array($calendarId));
$stmt = $this->pdo->prepare('DELETE FROM `'.$this->calendarTableName.'` WHERE id = ?');
$stmt->execute(array($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) {
$stmt = $this->pdo->prepare('SELECT * FROM `'.$this->calendarObjectTableName.'` WHERE calendarid = ?');
$stmt->execute(array($calendarId));
return $stmt->fetchAll();
}
/**
* 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) {
$stmt = $this->pdo->prepare('SELECT * FROM `'.$this->calendarObjectTableName.'` WHERE calendarid = ? AND uri = ?');
$stmt->execute(array($calendarId, $objectUri));
return $stmt->fetch();
}
/**
* Creates a new calendar object.
*
* @param string $calendarId
* @param string $objectUri
* @param string $calendarData
* @return void
*/
public function createCalendarObject($calendarId,$objectUri,$calendarData) {
$stmt = $this->pdo->prepare('INSERT INTO `'.$this->calendarObjectTableName.'` (calendarid, uri, calendardata, lastmodified) VALUES (?,?,?,?)');
$stmt->execute(array($calendarId,$objectUri,$calendarData,time()));
$stmt = $this->pdo->prepare('UPDATE `'.$this->calendarTableName.'` SET ctag = ctag + 1 WHERE id = ?');
$stmt->execute(array($calendarId));
}
/**
* 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) {
$stmt = $this->pdo->prepare('UPDATE `'.$this->calendarObjectTableName.'` SET calendardata = ?, lastmodified = ? WHERE calendarid = ? AND uri = ?');
$stmt->execute(array($calendarData,time(),$calendarId,$objectUri));
$stmt = $this->pdo->prepare('UPDATE `'.$this->calendarTableName.'` SET ctag = ctag + 1 WHERE id = ?');
$stmt->execute(array($calendarId));
}
/**
* Deletes an existing calendar object.
*
* @param string $calendarId
* @param string $objectUri
* @return void
*/
public function deleteCalendarObject($calendarId,$objectUri) {
$stmt = $this->pdo->prepare('DELETE FROM `'.$this->calendarObjectTableName.'` WHERE calendarid = ? AND uri = ?');
$stmt->execute(array($calendarId,$objectUri));
$stmt = $this->pdo->prepare('UPDATE `'. $this->calendarTableName .'` SET ctag = ctag + 1 WHERE id = ?');
$stmt->execute(array($calendarId));
}
}

View File

@ -0,0 +1,286 @@
<?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/>.
*
*/
/*
*
* 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),
* 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 addressbooks.
*/
class OC_Calendar_Calendar{
public static function allCalendars($uid){
$stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*calendar_calendars WHERE userid = ?' );
$result = $stmt->execute(array($uid));
$addressbooks = array();
while( $row = $result->fetchRow()){
$addressbooks[] = $row;
}
return $addressbooks;
}
public static function allCakendarsWherePrincipalURIIs($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 addAddressbook($userid,$name,$description){
$all = self::allAddressbooks($userid);
$uris = array();
foreach($all as $i){
$uris[] = $i['uri'];
}
$uri = self::createURI($name, $uris );
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_addressbooks (userid,displayname,uri,description,ctag) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($userid,$name,$uri,$description,1));
return OC_DB::insertid();
}
public static function addAddressbookFromDAVData($principaluri,$uri,$name,$description){
$userid = self::extractUserID($principaluri);
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_addressbooks (userid,displayname,uri,description,ctag) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($userid,$name,$uri,$description,1));
return OC_DB::insertid();
}
public static function editAddressbook($id,$name,$description){
// Need these ones for checking uri
$addressbook = self::find($id);
if(is_null($name)){
$name = $addressbook['name'];
}
if(is_null($description)){
$description = $addressbook['description'];
}
$stmt = OC_DB::prepare( 'UPDATE *PREFIX*contacts_addressbooks SET displayname=?,description=?, ctag=ctag+1 WHERE id=?' );
$result = $stmt->execute(array($name,$description,$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 addressbookid = ?' );
$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));
$addressbooks = array();
while( $row = $result->fetchRow()){
$addressbooks[] = $row;
}
return $addressbooks;
}
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 addCard($id,$data){
$object = Sabre_VObject_Reader::read($data);
list($startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
$fn = null;
$uri = null;
$card = Sabre_VObject_Reader::read($data);
foreach($card->children as $property){
if($property->name == 'FN'){
$fn = $property->value;
}
elseif(is_null($uri) && $property->name == 'UID' ){
$uri = $property->value.'.vcf';
}
}
if(is_null($uri)) $uri = self::createUID().'.vcf';
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_cards (addressbookid,fullname,carddata,uri,lastmodified) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($id,$fn,$data,$uri,time()));
self::touchAddressbook($id);
return OC_DB::insertid();
}
public static function addCalendarObjectFromDAVData($id,$uri,$data){
$object = Sabre_VObject_Reader::read($data);
list($startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_objects (calendarid,objecttye,startdate,enddate,repeating,summary,calendardata,uri,lastmodified) VALUES(?,?,?,?,?,?,?,?,?)' );
$result = $stmt->execute(array($id,$object->name,(is_null($startdate)?null:$startdate->format('Y-m-d H:i:s')),(is_null($enddate)?null:$enddate->format('Y-m-d H:i:s')),$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($startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
$stmt = OC_DB::prepare( 'UPDATE *PREFIX*contacts_cards SET objecttye=?,startdate=?,enddate=?,repeating=?,summary=?,calendardata=?, lastmodified = ? WHERE id = ?' );
$result = $stmt->execute(array($object->name,(is_null($startdate)?null:$startdate->format('Y-m-d H:i:s')),(is_null($enddate)?null:$enddate->format('Y-m-d H:i:s')),$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($startdate,$enddate,$summary,$repeating,$uid) = self::extractData($object);
$stmt = OC_DB::prepare( 'UPDATE *PREFIX*contacts_cards SET objecttye=?,startdate=?,enddate=?,repeating=?,summary=?,calendardata=?, lastmodified = ? WHERE id = ?' );
$result = $stmt->execute(array($object->name,(is_null($startdate)?null:$startdate->format('Y-m-d H:i:s')),(is_null($enddate)?null:$enddate->format('Y-m-d H:i:s')),$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,'',false,null);
foreach($object->children as $property){
if($property->name == 'DTSTART'){
$return[0] = $property->getDateTime();
}
elseif($property->name == 'DTEND'){
$return[1] = $property->getDateTime();
}
elseif($property->name == 'SUMMARY'){
$return[2] = $property->value;
}
elseif($property->name == 'RRULE'){
$return[3] = true;
}
elseif($property->name == 'UID'){
$return[4] = $property->value;
}
}
return $return;
}
}

View File

@ -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($addressbook['id']);
}
return true;
}
}

7473
apps/calendar/libs/iCalcreator.php Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,72 @@
<?php
/**
/ ownCloud - Calendar Plugin
/
/ (c) Copyright 2011 Georg Ehrke
/ author: Georg Ehrke
/ email: ownclouddev at georgswebsite dot de
/ homepage: ownclouddev.georgswebsite.de
/ License: GPL
/ <http://www.gnu.org/licenses/>.
*/
class OC_CALENDAR_ICAL{
public $defaultview;
public $calendar;
public $calendar_name;
public $calendar_status;
public $ics_properties;
public $VCALENDAR;
public $VTIMEZONE;
public $DAYLIGHT;
function __construct(){
include("cfg/" . OC_USER::getUser() . ".cfg.php");
include("iCalcreator.php");
$this->defaultview = $defaultview;
$this->calendar = $calendar;
$this->calendar_name = $calendar_name;
$this->calendarstatus = $calendar_status;
}
public function load_ics($path){
if(!file_exists("../../data/" . OC_USER::getUser() . $path)){
return false;
}else{
$calfile = file("../../data/" . OC_USER::getUser() . $path);
$return = array();
$eventnum = 0;
foreach($calfile as $line){
}
}
}
public function converttojs($cal){
}
public function addevent($event, $calendar){
}
public function removeevent($event, $calendar){
}
public function changeevent($event, $calendar){
}
public function moveevent($event, $calendar){
}
public function choosecalendar_dialog(){
}
}

271
apps/calendar/libs/sanitize.php Executable file
View File

@ -0,0 +1,271 @@
<?php
/*
* Copyright (c) 2002,2003 Free Software Foundation
* developed under the custody of the
* Open Web Application Security Project
* (http://www.owasp.org)
*
* This file is part of the PHP Filters.
* PHP Filters is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PHP Filters 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 General Public License for more details.
*
* If you are not able to view the LICENSE, which should
* always be possible within a valid and working PHP Filters release,
* please write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* to get a copy of the GNU General Public License or to report a
* possible license violation.
*/
///////////////////////////////////////
// sanitize.inc.php
// Sanitization functions for PHP
// by: Gavin Zuchlinski, Jamie Pratt, Hokkaido
// webpage: http://libox.net
// Last modified: December 21, 2003
//
// Many thanks to those on the webappsec list for helping me improve these functions
///////////////////////////////////////
// Function list:
// sanitize_paranoid_string($string) -- input string, returns string stripped of all non
// alphanumeric
// sanitize_system_string($string) -- input string, returns string stripped of special
// characters
// sanitize_sql_string($string) -- input string, returns string with slashed out quotes
// sanitize_html_string($string) -- input string, returns string with html replacements
// for special characters
// sanitize_int($integer) -- input integer, returns ONLY the integer (no extraneous
// characters
// sanitize_float($float) -- input float, returns ONLY the float (no extraneous
// characters)
// sanitize($input, $flags) -- input any variable, performs sanitization
// functions specified in flags. flags can be bitwise
// combination of PARANOID, SQL, SYSTEM, HTML, INT, FLOAT, LDAP,
// UTF8
//
//
///////////////////////////////////////
//
// 20031121 jp - added defines for magic_quotes and register_globals, added ; to replacements
// in sanitize_sql_string() function, created rudimentary testing pages
// 20031221 gz - added nice_addslashes and changed sanitize_sql_string to use it
//
/////////////////////////////////////////
define("PARANOID", 1);
define("SQL", 2);
define("SYSTEM", 4);
define("HTML", 8);
define("INT", 16);
define("FLOAT", 32);
define("LDAP", 64);
define("UTF8", 128);
// get register_globals ini setting - jp
$register_globals = (bool) ini_get('register_gobals');
if ($register_globals == TRUE) { define("REGISTER_GLOBALS", 1); } else { define("REGISTER_GLOBALS", 0); }
// get magic_quotes_gpc ini setting - jp
$magic_quotes = (bool) ini_get('magic_quotes_gpc');
if ($magic_quotes == TRUE) { define("MAGIC_QUOTES", 1); } else { define("MAGIC_QUOTES", 0); }
// addslashes wrapper to check for gpc_magic_quotes - gz
function nice_addslashes($string)
{
// if magic quotes is on the string is already quoted, just return it
if(MAGIC_QUOTES)
return $string;
else
return addslashes($string);
}
// internal function for utf8 decoding
// thanks to Hokkaido for noticing that PHP's utf8_decode function is a little
// screwy, and to jamie for the code
function my_utf8_decode($string)
{
return strtr($string,
"???????<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
}
// paranoid sanitization -- only let the alphanumeric set through
function sanitize_paranoid_string($string, $min='', $max='')
{
$string = preg_replace("/[^a-zA-Z0-9]/", "", $string);
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return $string;
}
// sanitize a string in prep for passing a single argument to system() (or similar)
function sanitize_system_string($string, $min='', $max='')
{
$pattern = '/(;|\||`|>|<|&|^|"|'."\n|\r|'".'|{|}|[|]|\)|\()/i'; // no piping, passing possible environment variables ($),
// seperate commands, nested execution, file redirection,
// background processing, special commands (backspace, etc.), quotes
// newlines, or some other special characters
$string = preg_replace($pattern, '', $string);
$string = '"'.preg_replace('/\$/', '\\\$', $string).'"'; //make sure this is only interpretted as ONE argument
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return $string;
}
// sanitize a string for SQL input (simple slash out quotes and slashes)
function sanitize_sql_string($string, $min='', $max='')
{
$string = nice_addslashes($string); //gz
$pattern = "/;/"; // jp
$replacement = "";
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return preg_replace($pattern, $replacement, $string);
}
// sanitize a string for SQL input (simple slash out quotes and slashes)
function sanitize_ldap_string($string, $min='', $max='')
{
$pattern = '/(\)|\(|\||&)/';
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return preg_replace($pattern, '', $string);
}
// sanitize a string for HTML (make sure nothing gets interpretted!)
function sanitize_html_string($string)
{
$pattern[0] = '/\&/';
$pattern[1] = '/</';
$pattern[2] = "/>/";
$pattern[3] = '/\n/';
$pattern[4] = '/"/';
$pattern[5] = "/'/";
$pattern[6] = "/%/";
$pattern[7] = '/\(/';
$pattern[8] = '/\)/';
$pattern[9] = '/\+/';
$pattern[10] = '/-/';
$replacement[0] = '&amp;';
$replacement[1] = '&lt;';
$replacement[2] = '&gt;';
$replacement[3] = '<br>';
$replacement[4] = '&quot;';
$replacement[5] = '&#39;';
$replacement[6] = '&#37;';
$replacement[7] = '&#40;';
$replacement[8] = '&#41;';
$replacement[9] = '&#43;';
$replacement[10] = '&#45;';
return preg_replace($pattern, $replacement, $string);
}
// make int int!
function sanitize_int($integer, $min='', $max='')
{
$int = intval($integer);
if((($min != '') && ($int < $min)) || (($max != '') && ($int > $max)))
return FALSE;
return $int;
}
// make float float!
function sanitize_float($float, $min='', $max='')
{
$float = floatval($float);
if((($min != '') && ($float < $min)) || (($max != '') && ($float > $max)))
return FALSE;
return $float;
}
// glue together all the other functions
function sanitize($input, $flags, $min='', $max='')
{
if($flags & UTF8) $input = my_utf8_decode($input);
if($flags & PARANOID) $input = sanitize_paranoid_string($input, $min, $max);
if($flags & INT) $input = sanitize_int($input, $min, $max);
if($flags & FLOAT) $input = sanitize_float($input, $min, $max);
if($flags & HTML) $input = sanitize_html_string($input, $min, $max);
if($flags & SQL) $input = sanitize_sql_string($input, $min, $max);
if($flags & LDAP) $input = sanitize_ldap_string($input, $min, $max);
if($flags & SYSTEM) $input = sanitize_system_string($input, $min, $max);
return $input;
}
function check_paranoid_string($input, $min='', $max='')
{
if($input != sanitize_paranoid_string($input, $min, $max))
return FALSE;
return TRUE;
}
function check_int($input, $min='', $max='')
{
if($input != sanitize_int($input, $min, $max))
return FALSE;
return TRUE;
}
function check_float($input, $min='', $max='')
{
if($input != sanitize_float($input, $min, $max))
return FALSE;
return TRUE;
}
function check_html_string($input, $min='', $max='')
{
if($input != sanitize_html_string($input, $min, $max))
return FALSE;
return TRUE;
}
function check_sql_string($input, $min='', $max='')
{
if($input != sanitize_sql_string($input, $min, $max))
return FALSE;
return TRUE;
}
function check_ldap_string($input, $min='', $max='')
{
if($input != sanitize_string($input, $min, $max))
return FALSE;
return TRUE;
}
function check_system_string($input, $min='', $max='')
{
if($input != sanitize_system_string($input, $min, $max, TRUE))
return FALSE;
return TRUE;
}
// glue together all the other functions
function check($input, $flags, $min='', $max='')
{
$oldput = $input;
if($flags & UTF8) $input = my_utf8_decode($input);
if($flags & PARANOID) $input = sanitize_paranoid_string($input, $min, $max);
if($flags & INT) $input = sanitize_int($input, $min, $max);
if($flags & FLOAT) $input = sanitize_float($input, $min, $max);
if($flags & HTML) $input = sanitize_html_string($input, $min, $max);
if($flags & SQL) $input = sanitize_sql_string($input, $min, $max);
if($flags & LDAP) $input = sanitize_ldap_string($input, $min, $max);
if($flags & SYSTEM) $input = sanitize_system_string($input, $min, $max, TRUE);
if($input != $oldput)
return FALSE;
return TRUE;
}
?>

27
apps/calendar/settings.php Executable file
View File

@ -0,0 +1,27 @@
<?php
/************************************************
* ownCloud - Calendar Plugin *
* *
* (c) Copyright 2011 Georg Ehrke *
* author: Georg Ehrke *
* email: ownclouddev at georgswebsite dot de *
* homepage: http://ownclouddev.georgswebsite.de *
* License: GPL *
* <http://www.gnu.org/licenses/>. *
************************************************/
require_once('../../lib/base.php');
if(!OC_USER::isLoggedIn()){
header("Location: " . OC_HELPER::linkTo("index.php"));
exit();
}
if(!file_exists("cfg/" . OC_USER::getUser() . ".cfg.php")){
header("Location: install.php");
}
OC_UTIL::addScript("calendar", "calendar");
OC_UTIL::addScript("calendar", "calendar_init");
OC_UTIL::addStyle("calendar", "style");
require_once("template.php");
OC_APP::setActiveNavigationEntry("calendar_settings");
$output = new OC_TEMPLATE("calendar", "settings", "admin");
$output->printpage();
?>

View File

@ -0,0 +1,982 @@
<div id="devbox">
</div>
<div class="controls">
<div class="actions">
<form>
<div id="view">
<input type="radio" id="onedayview_radio" name="viewchooseradio"/>
<label onclick="change_view('onedayview');" for="onedayview_radio">
1 Day
</label>
<input type="radio" id="oneweekview_radio" name="viewchooseradio"/>
<label onclick="change_view('oneweekview');" for="oneweekview_radio">
1 Week
</label>
<input type="radio" id="fourweeksview_radio" name="viewchooseradio"/>
<label onclick="change_view('fourweeksview');" for="fourweeksview_radio">
4 Weeks
</label>
<input type="radio" id="onemonthview_radio" name="viewchooseradio"/>
<label onclick="change_view('onemonthview');" for="onemonthview_radio">
1 Month
</label>
<input type="radio" id="listview_radio" name="viewchooseradio"/>
<label onclick="change_view('listview');" for="listview_radio">
List
</label>
</div>
</form>
<form>
<div id="choosecalendar">
<input type="radio" id="today_input" checked="checked"/>
<label for="today_input" onclick="switch2today();">
Today
</label>
<input type="radio" id="choosecalendar_input" checked="checked"/>
<label for="choosecalendar_input" onclick="choosecalendar_dialog();">
Choose your Calendar
</label>
</div>
</form>
<form>
<div id="datecontrol">
<input type="radio" id="datecontrol_left" />
<label for="datecontrol_left" onclick="update_view('', 'backward');">
&lt;
</label>
<input type="radio" id="datecontrol_date" checked="checked"/>
<label for="datecontrol_date">
<p id="datecontrol_date_label">
&nbsp;
</p>
</label>
<input type="radio" id="datecontrol_right" />
<label for="datecontrol_right" onclick="update_view('', 'forward');">
&gt;
</label>
</div>
</form>
</div>
</div>
<div class="controls" id="calendar_holder">
<div id="onedayview">
<table>
<thead>
<tr>
<th class="calendar_time">Time</th>
<th id="onedayview_today" class="calendar_row"></th>
</tr>
</thead>
<tbody>
<tr>
<td class="calendar_time">All day</td>
<td id="onedayview_wholeday" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">00:00</td>
<td id="onedayview_0" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">01:00</td>
<td id="onedayview_1" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">02:00</td>
<td id="onedayview_2" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">03:00</td>
<td id="onedayview_3" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">04:00</td>
<td id="onedayview_4" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">05:00</td>
<td id="onedayview_5" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">06:00</td>
<td id="onedayview_6" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">07:00</td>
<td id="onedayview_7" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">08:00</td>
<td id="onedayview_8" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">09:00</td>
<td id="onedayview_9" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">10:00</td>
<td id="onedayview_10" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">11:00</td>
<td id="onedayview_11" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">12:00</td>
<td id="onedayview_12" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">13:00</td>
<td id="onedayview_13" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">14:00</td>
<td id="onedayview_14" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">15:00</td>
<td id="onedayview_15" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">16:00</td>
<td id="onedayview_16" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">17:00</td>
<td id="onedayview_17" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">18:00</td>
<td id="onedayview_18" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">19:00</td>
<td id="onedayview_19" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">20:00</td>
<td id="onedayview_20" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">21:00</td>
<td id="onedayview_21" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">22:00</td>
<td id="onedayview_22" class="calendar_row"></td>
</tr>
<tr>
<td class="calendar_time">23:00</td>
<td id="onedayview_23" class="calendar_row"></td>
</tr>
</tbody>
</table>
</div>
<div id="oneweekview">
<table>
<thead>
<tr>
<th class="calendar_time">Time</th>
<th id="oneweekview_monday" class="calendar_row"></th>
<th id="oneweekview_tuesday" class="calendar_row"></th>
<th id="oneweekview_wednesday" class="calendar_row"></th>
<th id="oneweekview_thursday" class="calendar_row"></th>
<th id="oneweekview_friday" class="calendar_row"></th>
<th id="oneweekview_saturday" class="weekend_thead"></th>
<th id="oneweekview_sunday" class="weekend_thead"></th>
</tr>
</thead>
<tbody>
<tr>
<td class="calendar_time">All day</td>
<td id="oneweekview_monday_allday" class="calendar_row"></td>
<td id="oneweekview_tuesday_allday" class="calendar_row"></td>
<td id="oneweekview_wednesday_allday" class="calendar_row"></td>
<td id="oneweekview_thursday_allday" class="calendar_row"></td>
<td id="oneweekview_friday_allday" class="calendar_row"></td>
<td id="oneweekview_saturday_allday" class="weekend_row"></td>
<td id="oneweekview_sunday_allday" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">00:00</td>
<td id="oneweekview_monday_0" class="calendar_row"></td>
<td id="oneweekview_tuesday_0" class="calendar_row"></td>
<td id="oneweekview_wednesday_0" class="calendar_row"></td>
<td id="oneweekview_thursday_0" class="calendar_row"></td>
<td id="oneweekview_friday_0" class="calendar_row"></td>
<td id="oneweekview_saturday_0" class="weekend_row"></td>
<td id="oneweekview_sunday_0" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">01:00</td>
<td id="oneweekview_monday_1" class="calendar_row"></td>
<td id="oneweekview_tuesday_1" class="calendar_row"></td>
<td id="oneweekview_wednesday_1" class="calendar_row"></td>
<td id="oneweekview_thursday_1" class="calendar_row"></td>
<td id="oneweekview_friday_1" class="calendar_row"></td>
<td id="oneweekview_saturday_1" class="weekend_row"></td>
<td id="oneweekview_sunday_1" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">02:00</td>
<td id="oneweekview_monday_2" class="calendar_row"></td>
<td id="oneweekview_tuesday_2" class="calendar_row"></td>
<td id="oneweekview_wednesday_2" class="calendar_row"></td>
<td id="oneweekview_thursday_2" class="calendar_row"></td>
<td id="oneweekview_friday_2" class="calendar_row"></td>
<td id="oneweekview_saturday_2" class="weekend_row"></td>
<td id="oneweekview_sunday_2" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">03:00</td>
<td id="oneweekview_monday_3" class="calendar_row"></td>
<td id="oneweekview_tuesday_3" class="calendar_row"></td>
<td id="oneweekview_wednesday_3" class="calendar_row"></td>
<td id="oneweekview_thursday_3" class="calendar_row"></td>
<td id="oneweekview_friday_3" class="calendar_row"></td>
<td id="oneweekview_saturday_3" class="weekend_row"></td>
<td id="oneweekview_sunday_3" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">04:00</td>
<td id="oneweekview_monday_4" class="calendar_row"></td>
<td id="oneweekview_tuesday_4" class="calendar_row"></td>
<td id="oneweekview_wednesday_4" class="calendar_row"></td>
<td id="oneweekview_thursday_4" class="calendar_row"></td>
<td id="oneweekview_friday_4" class="calendar_row"></td>
<td id="oneweekview_saturday_4" class="weekend_row"></td>
<td id="oneweekview_sunday_4" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">05:00</td>
<td id="oneweekview_monday_5" class="calendar_row"></td>
<td id="oneweekview_tuesday_5" class="calendar_row"></td>
<td id="oneweekview_wednesday_5" class="calendar_row"></td>
<td id="oneweekview_thursday_5" class="calendar_row"></td>
<td id="oneweekview_friday_5" class="calendar_row"></td>
<td id="oneweekview_saturday_5" class="weekend_row"></td>
<td id="oneweekview_sunday_5" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">06:00</td>
<td id="oneweekview_monday_6" class="calendar_row"></td>
<td id="oneweekview_tuesday_6" class="calendar_row"></td>
<td id="oneweekview_wednesday_6" class="calendar_row"></td>
<td id="oneweekview_thursday_6" class="calendar_row"></td>
<td id="oneweekview_friday_6" class="calendar_row"></td>
<td id="oneweekview_saturday_6" class="weekend_row"></td>
<td id="oneweekview_sunday_6" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">07:00</td>
<td id="oneweekview_monday_7" class="calendar_row"></td>
<td id="oneweekview_tuesday_7" class="calendar_row"></td>
<td id="oneweekview_wednesday_7" class="calendar_row"></td>
<td id="oneweekview_thursday_7" class="calendar_row"></td>
<td id="oneweekview_friday_7" class="calendar_row"></td>
<td id="oneweekview_saturday_7" class="weekend_row"></td>
<td id="oneweekview_sunday_7" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">08:00</td>
<td id="oneweekview_monday_8" class="calendar_row"></td>
<td id="oneweekview_tuesday_8" class="calendar_row"></td>
<td id="oneweekview_wednesday_8" class="calendar_row"></td>
<td id="oneweekview_thursday_8" class="calendar_row"></td>
<td id="oneweekview_friday_8" class="calendar_row"></td>
<td id="oneweekview_saturday_8" class="weekend_row"></td>
<td id="oneweekview_sunday_8" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">09:00</td>
<td id="oneweekview_monday_9" class="calendar_row"></td>
<td id="oneweekview_tuesday_9" class="calendar_row"></td>
<td id="oneweekview_wednesday_9" class="calendar_row"></td>
<td id="oneweekview_thursday_9" class="calendar_row"></td>
<td id="oneweekview_friday_9" class="calendar_row"></td>
<td id="oneweekview_saturday_9" class="weekend_row"></td>
<td id="oneweekview_sunday_9" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">10:00</td>
<td id="oneweekview_monday_10" class="calendar_row"></td>
<td id="oneweekview_tuesday_10" class="calendar_row"></td>
<td id="oneweekview_wednesday_10" class="calendar_row"></td>
<td id="oneweekview_thursday_10" class="calendar_row"></td>
<td id="oneweekview_friday_10" class="calendar_row"></td>
<td id="oneweekview_saturday_10" class="weekend_row"></td>
<td id="oneweekview_sunday_10" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">11:00</td>
<td id="oneweekview_monday_11" class="calendar_row"></td>
<td id="oneweekview_tuesday_11" class="calendar_row"></td>
<td id="oneweekview_wednesday_11" class="calendar_row"></td>
<td id="oneweekview_thursday_11" class="calendar_row"></td>
<td id="oneweekview_friday_11" class="calendar_row"></td>
<td id="oneweekview_saturday_11" class="weekend_row"></td>
<td id="oneweekview_sunday_11" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">12:00</td>
<td id="oneweekview_monday_12" class="calendar_row"></td>
<td id="oneweekview_tuesday_12" class="calendar_row"></td>
<td id="oneweekview_wednesday_12" class="calendar_row"></td>
<td id="oneweekview_thursday_12" class="calendar_row"></td>
<td id="oneweekview_friday_12" class="calendar_row"></td>
<td id="oneweekview_saturday_12" class="weekend_row"></td>
<td id="oneweekview_sunday_12" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">13:00</td>
<td id="oneweekview_monday_13" class="calendar_row"></td>
<td id="oneweekview_tuesday_13" class="calendar_row"></td>
<td id="oneweekview_wednesday_13" class="calendar_row"></td>
<td id="oneweekview_thursday_13" class="calendar_row"></td>
<td id="oneweekview_friday_13" class="calendar_row"></td>
<td id="oneweekview_saturday_13" class="weekend_row"></td>
<td id="oneweekview_sunday_13" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">14:00</td>
<td id="oneweekview_monday_14" class="calendar_row"></td>
<td id="oneweekview_tuesday_14" class="calendar_row"></td>
<td id="oneweekview_wednesday_14" class="calendar_row"></td>
<td id="oneweekview_thursday_14" class="calendar_row"></td>
<td id="oneweekview_friday_14" class="calendar_row"></td>
<td id="oneweekview_saturday_14" class="weekend_row"></td>
<td id="oneweekview_sunday_14" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">15:00</td>
<td id="oneweekview_monday_15" class="calendar_row"></td>
<td id="oneweekview_tuesday_15" class="calendar_row"></td>
<td id="oneweekview_wednesday_15" class="calendar_row"></td>
<td id="oneweekview_thursday_15" class="calendar_row"></td>
<td id="oneweekview_friday_15" class="calendar_row"></td>
<td id="oneweekview_saturday_15" class="weekend_row"></td>
<td id="oneweekview_sunday_15" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">16:00</td>
<td id="oneweekview_monday_16" class="calendar_row"></td>
<td id="oneweekview_tuesday_16" class="calendar_row"></td>
<td id="oneweekview_wednesday_16" class="calendar_row"></td>
<td id="oneweekview_thursday_16" class="calendar_row"></td>
<td id="oneweekview_friday_16" class="calendar_row"></td>
<td id="oneweekview_saturday_16" class="weekend_row"></td>
<td id="oneweekview_sunday_16" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">17:00</td>
<td id="oneweekview_monday_17" class="calendar_row"></td>
<td id="oneweekview_tuesday_17" class="calendar_row"></td>
<td id="oneweekview_wednesday_17" class="calendar_row"></td>
<td id="oneweekview_thursday_17" class="calendar_row"></td>
<td id="oneweekview_friday_17" class="calendar_row"></td>
<td id="oneweekview_saturday_17" class="weekend_row"></td>
<td id="oneweekview_sunday_17" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">18:00</td>
<td id="oneweekview_monday_18" class="calendar_row"></td>
<td id="oneweekview_tuesday_18" class="calendar_row"></td>
<td id="oneweekview_wednesday_18" class="calendar_row"></td>
<td id="oneweekview_thursday_18" class="calendar_row"></td>
<td id="oneweekview_friday_18" class="calendar_row"></td>
<td id="oneweekview_saturday_18" class="weekend_row"></td>
<td id="oneweekview_sunday_18" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">19:00</td>
<td id="oneweekview_monday_19" class="calendar_row"></td>
<td id="oneweekview_tuesday_19" class="calendar_row"></td>
<td id="oneweekview_wednesday_19" class="calendar_row"></td>
<td id="oneweekview_thursday_19" class="calendar_row"></td>
<td id="oneweekview_friday_19" class="calendar_row"></td>
<td id="oneweekview_saturday_19" class="weekend_row"></td>
<td id="oneweekview_sunday_19" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">20:00</td>
<td id="oneweekview_monday_20" class="calendar_row"></td>
<td id="oneweekview_tuesday_20" class="calendar_row"></td>
<td id="oneweekview_wednesday_20" class="calendar_row"></td>
<td id="oneweekview_thursday_20" class="calendar_row"></td>
<td id="oneweekview_friday_20" class="calendar_row"></td>
<td id="oneweekview_saturday_20" class="weekend_row"></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"></td>
<td id="oneweekview_tuesday_21" class="calendar_row"></td>
<td id="oneweekview_wednesday_21" class="calendar_row"></td>
<td id="oneweekview_thursday_21" class="calendar_row"></td>
<td id="oneweekview_friday_21" class="calendar_row"></td>
<td id="oneweekview_saturday_21" class="weekend_row"></td>
<td id="oneweekview_sunday_21" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">22:00</td>
<td id="oneweekview_monday_22" class="calendar_row"></td>
<td id="oneweekview_tuesday_22" class="calendar_row"></td>
<td id="oneweekview_wednesday_22" class="calendar_row"></td>
<td id="oneweekview_thursday_22" class="calendar_row"></td>
<td id="oneweekview_friday_22" class="calendar_row"></td>
<td id="oneweekview_saturday_22" class="weekend_row"></td>
<td id="oneweekview_sunday_22" class="weekend_row"></td>
</tr>
<tr>
<td class="calendar_time">23:00</td>
<td id="oneweekview_monday_23" class="calendar_row"></td>
<td id="oneweekview_tuesday_23" class="calendar_row"></td>
<td id="oneweekview_wednesday_23" class="calendar_row"></td>
<td id="oneweekview_thursday_23" class="calendar_row"></td>
<td id="oneweekview_friday_23" class="calendar_row"></td>
<td id="oneweekview_saturday_23" class="weekend_row"></td>
<td id="oneweekview_sunday_23" class="weekend_row"></td>
</tr>
</tbody>
</table>
</div>
<div id="fourweeksview">
<table>
<thead>
<tr>
<th id="fourweeksview_calw_label" class="calendar_row">CW</th>
<th id="fourweeksview_monday" class="calendar_row">Monday</th>
<th id="fourweeksview_tuesday" class="calendar_row">Tuesday</th>
<th id="fourweeksview_wednesday" class="calendar_row">Wednesday</th>
<th id="fourweeksview_thursday" class="calendar_row">Thursday</th>
<th id="fourweeksview_friday" class="calendar_row">Friday</th>
<th id="fourweeksview_saturday" class="weekend_thead">Saturday</th>
<th id="fourweeksview_sunday" class="weekend_thead">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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="fourweeksview_saturday_1" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_saturday_1">
</div>
<div class="events" id="events_fourweeksview_saturday_1">
</div>
</td>
<td id="fourweeksview_sunday_1" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_sunday_1">
</div>
<div class="events" id="events_fourweeksview_sunday_1">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="fourweeksview_saturday_2" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_saturday_2">
</div>
<div class="events" id="events_fourweeksview_saturday_2">
</div>
</td>
<td id="fourweeksview_sunday_2" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_sunday_2">
</div>
<div class="events" id="events_fourweeksview_sunday_2">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="fourweeksview_saturday_3" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_saturday_3">
</div>
<div class="events" id="events_fourweeksview_saturday_3">
</div>
</td>
<td id="fourweeksview_sunday_3" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_sunday_3">
</div>
<div class="events" id="events_fourweeksview_sunday_3">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="fourweeksview_saturday_4" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_saturday_4">
</div>
<div class="events" id="events_fourweeksview_saturday_4">
</div>
</td>
<td id="fourweeksview_sunday_4" class="weekend">
<div class="dateinfo" id="dateinfo_fourweeksview_sunday_4">
</div>
<div class="events" id="events_fourweeksview_sunday_4">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="onemonthview">
<table>
<thead>
<tr>
<th id="onemonthview_monday" class="calendar_row">Monday</th>
<th id="onemonthview_tuesday" class="calendar_row">Tuesday</th>
<th id="onemonthview_wednesday" class="calendar_row">Wednesday</th>
<th id="onemonthview_thursday" class="calendar_row">Thursday</th>
<th id="onemonthview_friday" class="calendar_row">Friday</th>
<th id="onemonthview_saturday" class="weekend_thead">Saturday</th>
<th id="onemonthview_sunday" class="weekend_thead">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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_1" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_1">
</div>
<div class="events" id="events_onemonthview_saturday_1">
</div>
</td>
<td id="onemonthview_sunday_1" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_1">
</div>
<div class="events" id="events_onemonthview_sunday_1">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_2" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_2">
</div>
<div class="events" id="events_onemonthview_saturday_2">
</div>
</td>
<td id="onemonthview_sunday_2" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_2">
</div>
<div class="events" id="events_onemonthview_sunday_2">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_3" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_3">
</div>
<div class="events" id="events_onemonthview_saturday_3">
</div>
</td>
<td id="onemonthview_sunday_3" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_3">
</div>
<div class="events" id="events_onemonthview_sunday_3">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_4" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_4">
</div>
<div class="events" id="events_onemonthview_saturday_4">
</div>
</td>
<td id="onemonthview_sunday_4" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_4">
</div>
<div class="events" id="events_onemonthview_sunday_4">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_5" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_5">
</div>
<div class="events" id="events_onemonthview_saturday_5">
</div>
</td>
<td id="onemonthview_sunday_5" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_5">
</div>
<div class="events" id="events_onemonthview_sunday_5">
</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">
</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">
</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">
</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">
</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">
</div>
</td>
<td id="onemonthview_saturday_6" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_saturday_6">
</div>
<div class="events" id="events_onemonthview_saturday_6">
</div>
</td>
<td id="onemonthview_sunday_6" class="weekend">
<div class="dateinfo" id="dateinfo_onemonthview_sunday_6">
</div>
<div class="events" id="events_onemonthview_sunday_6">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="listview">
</div>
<p class="center">
<a href="http://ownclouddev.georgswebsite.de/feedback/" target="_blank">Feedback</a>&nbsp;&nbsp;&nbsp;&diams;&nbsp;&nbsp;&nbsp;
<a href="http://ownclouddev.georgswebsite.de/devinfo/" target="_blank">Developer information</a>&nbsp;&nbsp;&nbsp;&diams;&nbsp;&nbsp;&nbsp;
<a href="http://ownclouddev.georgswebsite.de/bugs/">Bugs</a>
</p>
</div>
<!-- Dialogs -->
<div id="choosecalendar_dialog" title="Please choose visible calendars.">
<br/>
<input type="checkbox" class="choosecalendar_check" id="choosecalendar_cal1" />
<label for="choosecalendar_cal1">
Calendar 1
</label>
<br/>
<br/>
<input type="checkbox" class="choosecalendar_check" id="choosecalendar_cal2" />
<label for="choosecalendar_cal2">
Calendar 2
</label>
<br/>
<br/>
<input type="checkbox" class="choosecalendar_check" id="choosecalendar_cal3" />
<label for="choosecalendar_cal3">
Calendar 3
</label>
<br/>
<br/>
<input type="checkbox" class="choosecalendar_check" id="choosecalendar_cal4" />
<label for="choosecalendar_cal4">
Calendar 4
</label>
<br/>
<br />
<input type="submit" class="choosecalendar_check" id="choosecalendar_submit" onclick="choosecalendar_dialog_submit();" value="Save"/>
</div>
<div id="newevent" title="Create a new event">
</div>
<div id="editevent" title="Edit a event">
</div>
<div id="parsingfail_dialog" title="Parsing Fail">
There was a fail, while parsing the file.
</div>
<!-- End of Dialogs -->
<script type="text/javascript">
<?php
include("cfg/" . OC_USER::getUser() . ".cfg.php");
echo "var currentview = \"" . $defaultview . "\";\n";
?>
document.getElementById(currentview).style.display = "block";
document.getElementById(currentview + "_radio").checked = "checked";
update_view(currentview);
function change_view(view, task){
document.getElementById(currentview).style.display = "none";
document.getElementById(view).style.display = "block";
currentview = view;
update_view(view, task);
}
</script>
<script type="text/javascript" id="js_events"></script>

View File

View File

@ -0,0 +1,17 @@
<fieldset>
<legend>Please choose your default view:</legend>
<input type="radio" id="oneday" name="radio"/><label for="oneday">One Day</label>
<input type="radio" id="oneweek" name="radio"/><label for="oneweek">One Week</label>
<input type="radio" id="fourweek" name="radio"/><label for="fourweek">Four Weeks</label>
<input type="radio" id="onemonth" name="radio"/><label for="onemonth">One Month</label>
<input type="radio" id="list" name="radio"/><label for="list">List</label>
</fieldset>
<fieldset>
<legend>Calender Files</legend>
<ul>
<?php
showicsfiles();
?>
</ul>
</fieldset>