diff --git a/add.php b/add.php index 9efe01c..4fcb9e1 100644 --- a/add.php +++ b/add.php @@ -21,7 +21,7 @@ */ -if (!defined('WB_PATH')) exit("Cannot access this file directly"); +if (!defined('SYSTEM_RUN')) {header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found'); echo '404 File not found'; flush(); exit;} $ct1 = '
@@ -47,7 +47,20 @@ '; $ct5 = '[[[CUSTOM_CONTENT]]]'; -$header = '[CALENDAR]'; + +$ct6 = ' +
+
[CUSTOM_NAME]
+ [CUSTOM_NAME] +
+'; + +$header = ' +
+[NEW_ENTRY] +
+[CALENDAR]'; +$footer = ''; $posttempl = '

[NAME]

@@ -58,6 +71,9 @@ [CUSTOM4] [CUSTOM5] [CUSTOM6] + [CUSTOM7] + [CUSTOM8] + [CUSTOM9] [CATEGORY]
[CONTENT] @@ -66,27 +82,43 @@ '; // insert data into pages table -$database->query("INSERT INTO ".TABLE_PREFIX."mod_procalendar_settings SET page_id = '$page_id', +$database->query( +"INSERT INTO ".TABLE_PREFIX."mod_procalendar_settings SET page_id = '$page_id', section_id = '$section_id', + settings = '', startday = 0, usetime = 0, useformat = 'yyyy-mm-dd', useifformat = 'Y-m-d', - customtemplate1 = '$ct1', usecustom1 = 1, custom1 = 'Text field', - customtemplate2 = '$ct2', + customtemplate1 = '$ct1', usecustom2 = 2, custom2 = 'Text area', - customtemplate3 = '$ct3', + customtemplate2 = '$ct2', usecustom3 = 3, custom3 = 'WB link', - customtemplate4 = '$ct4', + customtemplate3 = '$ct3', usecustom4 = 4, custom4 = 'Image', - customtemplate5 = '$ct5', - usecustom5 = 1, + customtemplate4 = '$ct4', + usecustom5 = 0, custom5 = 'Droplet', - posttempl = '$posttempl', - header = '$header' + customtemplate5 = '$ct5', + usecustom6 = 0, + custom6 = 'E-Mail', + customtemplate6 = '$ct6', + usecustom7 = 0, + custom7 = '', + customtemplate7 = '', + usecustom8 = 0, + custom8 = '', + customtemplate8 = '', + usecustom9 = 0, + custom9 = '', + customtemplate9 = '', + resize = 0, + header = '$header', + footer = '$footer', + posttempl = '$posttempl' "); diff --git a/backend.css b/backend.css index 7b571e4..da6d152 100644 --- a/backend.css +++ b/backend.css @@ -1,128 +1,5 @@ -.procal code {font-weight:bold;} -.procal h3 {font-weight:bold;font-size:1.2em;letter-spacing:-1px;} -.procal hr {height:0;line-height:0;border:0;border-top:1px solid #bbb;width:100%;margin:10px 0;padding:0;} - -.modify_content {color:#333;border:1px solid #000;} -.procal .show_calendar {float:right;width:215px;margin-bottom:20px;} -.procal .calendarmod {border-collapse:collapse;background:#fff;width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} -.procal .calendarmod a {text-decoration:none;display:block;} -.procal .calendarmod td {height:20px;text-align:center;line-height:20px;border:1px solid #bbb;} - -.procal .arrows {float:left;width:50%;} -.procal tr.calendarmod-header td {text-align:center;font-weight:bold;background:#f0f0f0;} -.procal tr.calendarmod-header td a {display:block;height:20px;line-height:20px;background:#c7e5c7;} -.procal tr.calendarmod-header td a:hover {background:#a5d5a5 !important;} -.procal td.calendar_weekday {background:#f0f0f0;width:30px;} -.procal td.calendar_emptyday:hover {background:#c7e5c7;} -.procal td.calendar_markday {background:#ffdfe0;font-weight:bold;} -.procal td.calendar_markday:hover {background:#ffc3c5;} -.procal td.calendar_noday {background:#fff;} -.procal td.procal_today {border:2px solid #ff0000;} - -.procal .actionlist { margin:20px 0;} -.procal .actionlist_table {width:100%;background:#f0f0f0;} -.procal .actionlist tr {background:#f0f0f0;height:22px;line-height:1.8;width:100%;} -.procal .actionlist tr:hover {background:#eaeff6;} -.procal .actionlist td {border-top:1px solid #f9f9f9;border-bottom:1px solid #f9f9f9;padding:0 10px;height:22px;line-height:22px;} -.procal .actionlist h2 {font-size:14px;text-align:center;font-weight:bold;margin:0;letter-spacing:normal;} -.procal .actionlist_header {font-weight:bold;background:none !important;} - -.procal .event_details {width:100%;border-top:1px solid #ccc;padding-top:15px;clear:both;} - -.procal input {font-size:11px;padding:2px;} - -.procal .double_field_line {height:60px;line-height:1.5;} -.procal .triple_field_line {height:90px;line-height:1.5;} -.procal .line_box {height:30px;width:212px;float:left;} -.procal .edit_label td {width:10px;} - -.procal .edit_field, -.procal .edit_description {width: 50%;} -.procal .edit_select {width: 50%;padding:0 0 0 2px;} -.procal .edit_select_short {width:290px;padding:0 0 0 2px;} -.procal .edit_field_short {width:280px;} -.procal .edit_date, -.procal .edit_time {width:80px;} - -.procal #buttonrow {width:100%;margin-bottom:15px;} -.procal .edit_button, -.procal .mod_procalendar_edit_css {padding:1px 5px;width:125px;font-size:11px;} -.procal .float_right {float:right;} - -.procal .customfields textarea {width:98%;height:80px;margin-bottom:20px;} - -/* -Needed css for DatePicker calendar. -DON'T CONVERT CaPITaLS TO LOWERCaSE! Datepicker will not function if set to lowercase! -*/ -table.jCalendar {border-bottom:#000 1px solid;border-left:#000 1px solid;border-spacing:2px;border-collapse:separate;background:#aaa;border-top:#000 1px solid;border-right:#000 1px solid;} -table.jCalendar TH {background:#333;color:#fff;font-weight:bold;padding:3px 5px;} -table.jCalendar td {text-align:center;background:#ccc;color:#000;padding:3px 5px;} -table.jCalendar td.other-month {background:#ddd;color:#aaa;} -table.jCalendar td.today {background:#666;color:#fff;} -table.jCalendar td.dp-hover.selected {background:#f33;color:#fff;} - -div.dp-popup {position:relative;line-height:1.2em;width:186px;font-family:arial, sans-serif;background:#ccc;font-size:10px;padding:2px;} -div#dp-popup {z-index:199;position:absolute;} -div.dp-popup H2 {text-align:center;font-size:12px;margin:2px 0;padding:0;} - -a#dp-close {text-align:center;display:block;font-size:11px;padding:4px 0;} -a#dp-close:hover {text-decoration:underline;} - -div.dp-popup a {color:#000;text-decoration:none;padding:3px 2px 0;} -div.dp-popup div.dp-nav-prev {position:absolute;width:100px;top:2px;left:4px;} -div.dp-popup div.dp-nav-prev a {float:left;cursor:pointer;} -div.dp-popup div.dp-nav-next a {cursor:pointer;float:right;} -div.dp-popup div.dp-nav-next {position:absolute;width:100px;top:2px;right:4px;} -div.dp-popup a.disabled {color:#aaa;cursor:default;} -div.dp-popup td {cursor:pointer;} - -input.dp-applied {width:120px;float:left;} - -a.dp-choose-date {text-indent:-2000px;width:16px;display:block;background:url('./js/calendar.png') no-repeat;float:left;height:16px;overflow:hidden;margin:3px;padding:0;} -a.dp-disabled.dp-choose-date {cursor:default;} - -#calendar-me {margin:20px;} - -table.jCalendar td.selected, -table.jCalendar tr.selectedWeek td {background:#f66;color:#fff;} -table.jCalendar td.dp-hover, -table.jCalendar tr.activeWeekHover td {background:#fff;color:#000;} -table.jCalendar td.disabled, -table.jCalendar td.dp-hover.disabled,table.jCalendar td.unselectable, -table.jCalendar td.unselectable:hover, -table.jCalendar td.dp-hover.unselectable {background:#bbb;color:#888;} - -div.dp-popup div.dp-nav-prev a.disabled, -div.dp-popup div.dp-nav-next a.disabled, -div.dp-popup td.disabled {cursor:default;} -/*----------------------------------------------------------------------------------------*/ -.procal #start_time, -.procal #end_time {vertical-align:top;} - -.procal .procal_hidden {display:none;} -.procal .rec_rep_count {vertical-align:top;} - -.procal .field_area, -.procal .field_line, -.procal .field_link { margin: 0.225em 0; position: relative; } -/* -.field_line {min-height: 2.125em; line-height: 1.5;} -.field_area {min-height:4.525em; line-height:2.5;} -*/ -.procal .field_title { float:left; width:20%; font-weight: bold; text-align: right; padding-right: 0.925rem; white-space-collapsing: discard; } - -.clearfix::before, -.clearfix::after { - content: " "; - display: table; -} - -.clearfix::after { - clear: both; -} - -.clearfix { - *zoom: 1; /* Für den IE6 und IE7 */ -} +@charset "utf-8"; +@import url('themes/default/css/default.css'); +@import url('themes/default/css/3/w3.css'); +select {width:initial;} diff --git a/backend_body.js b/backend_body.js index aafda35..8931148 100644 --- a/backend_body.js +++ b/backend_body.js @@ -4,17 +4,20 @@ if (typeof MODULE_URL != 'undefined') { // Variables are set in functions.php from line 1292-ish - // Include datepicker files: - $.insert(MODULE_URL + '/js/date.js'); - $.insert(MODULE_URL + '/js/jquery.datePicker.js'); + // Include datepicker files: datePicker + $.insert(MODULE_URL + '/themes/default/js/TimePicki/css/timepicki.css'); + $.insert(MODULE_URL + '/themes/default/js/DatePicker/styles/datePicker.css'); + $.insert(MODULE_URL + '/themes/default/js/TimePicki/js/timepicki.js'); + $.insert(MODULE_URL + '/themes/default/js/DatePicker/scripts/date.js'); + $.insert(MODULE_URL + '/themes/default/js/DatePicker/scripts/jquery.datePicker.js'); // This is only needed for ie 6 and smaller if ($.browser.msie && $.browser.version.substr(0,1)<7) { - $.insert(MODULE_URL + '/js/jquery.bgiframe.js'); + $.insert(MODULE_URL + '/themes/default/js/DatePicker/scripts/jquery.bgiframe.js'); } // Insert language file if it is not none! if (datelang !== "none") { - $.insert(MODULE_URL + '/js/lang/'+ datelang); + $.insert(MODULE_URL + '/themes/default/js/DatePicker/lang/'+ datelang); } // firstday 0=sunday, 1=monday // Fomat = datefomat yyyy/mm/dd or dd mm yyy or ... @@ -22,42 +25,78 @@ Date.format = format; // set up the calendars and make them work together, date from first will be minimum date for second - $(function() - { + $(function(){ $('.date-pick').datePicker({ - clickInput:true, + clickInput:false, autoFocusNextInput: true, startDate:datefrom }); $('#date1').bind( - // Update date2 when date changes, set starting date to date1 'dpClosed', function(e, selectedDates) { var d = selectedDates[0]; if (d) { d = new Date(d); - $('#date2').dpSetStartDate(d.addDays(0).asString()); + $('#date2').dpSetStartDate(d.addDays(1).asString()); } } - ).datestart; // datestart!! -console.info(datestart); - $('#date2').datePicker().dpSetStartDate(datestart).dateend; // dateend!! - }); + ); + + $('#date2').bind( + 'dpClosed', + function(e, selectedDates) + { + var d = selectedDates[0]; + if (d) { + d = new Date(d); + $('#date1').dpSetEndDate(d.addDays(-1).asString()); + } + } + ); + + begin = document.getElementById('start_time'); + t1 = (begin ? begin.value : ''); + time = t1.split(":"); + $('#start_time').timepicki({ + start_time:time, + show_meridian:false, + min_hour_value:0, + max_hour_value:23, + step_size_minutes:1, + overflow_minutes:true, + increase_direction:'up', + disable_keyboard_mobile: false + }); + end = document.getElementById('end_time'); + t2 = (end ? end.value : ''); + time = t2.split(":"); + $('#end_time').timepicki({ + start_time:time, + show_meridian:false, + min_hour_value:0, + max_hour_value:23, + step_size_minutes:1, + overflow_minutes:true, + increase_direction:'up', + disable_keyboard_mobile: false + }); + }); // End of MODULE_URL test }; // load the ColorPicker for editing categories only when needed if (location.href.search(/modify_settings/) > -1) - $.insert(MODULE_URL + 'js/mColorPicker/javascripts/mColorPicker.js'); + $.insert('js/mColorPicker/javascripts/mColorPicker.js'); $(document).ready(function () { // functions for colors in actionlist $('.edit_field_short').bind('colorpicked', function (e,color) { $('input[name="action_background"]').attr('value', color); }); + $('.rec_select input').bind("change myinit", function(event){ if ($(this).attr('id') == 'rec_exceptions'){ if (event.type != "myinit") @@ -91,15 +130,19 @@ $(document).ready(function () { $('.rec_rep_select input').bind("click change",function(){ $('.rec_rep_select input').not($(this)).attr('value',""); $('.rec_rep_select input').not($(this)).prop("checked", false); +/* $('#date2').attr('value',""); $('#end_time').attr('value',""); +*/ }); $('#date2').bind("click change",function(){ $('.rec_rep_select input').attr('value',""); $('.rec_rep_select input').prop("checked", false); +/* if ($('#end_time').val() == '') { - $('#end_time').attr('value',"00:00"); + $('#end_time').attr('value',"00:00"); } +*/ }); $('.rec_day input').bind("click change",function(){ if (isNaN($(this).attr('value'))) $(this).attr('value',""); @@ -183,11 +226,14 @@ $(document).ready(function () { $('.edit_button').click(function(){ $('#date1, #date2').prop("disabled", false); }); + $('.rec_select input').prop("checked", false); $('.rec_select input').prop("disabled", true); $('.procal_hidden').hide(); + $('#delete').hide(); $('#date1, #date2').attr('value',$('#rec_day_called').attr('value')); $('#date1, #date2').prop("disabled", true); + }; }; }; diff --git a/delete.php b/delete.php index c68afc8..540a7b3 100644 --- a/delete.php +++ b/delete.php @@ -1,32 +1,31 @@ - - Copyright (C) 2004-2006, Ryan Djurovich - - Website Baker 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. - - Website Baker 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. - - You should have received a copy of the GNU General Public License - along with Website Baker; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -if (!defined('WB_PATH')) exit("Cannot access this file directly"); - - - -$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_actions WHERE section_id = '$section_id'"); // remove relationed actions -$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_settings WHERE section_id = '$section_id'"); // remove -$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_eventgroups WHERE section_id = '$section_id'"); // remove - -?> \ No newline at end of file + + Copyright (C) 2004-2006, Ryan Djurovich + + Website Baker 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. + + Website Baker 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. + + You should have received a copy of the GNU General Public License + along with Website Baker; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +if (!defined('WB_PATH')) exit("Cannot access this file directly"); + + + +$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_actions WHERE section_id = '$section_id'"); // remove relationed actions +$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_settings WHERE section_id = '$section_id'"); // remove +$database->query("DELETE FROM ".TABLE_PREFIX."mod_procalendar_eventgroups WHERE section_id = '$section_id'"); // remove + diff --git a/frontend.css b/frontend.css index e6ab462..4e8321e 100644 --- a/frontend.css +++ b/frontend.css @@ -1,67 +1,53 @@ -.show_calendar {margin-bottom:20px;} -.calendarmod {border-collapse:collapse;background:#fff;width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} -.calendarmod a {text-decoration:none;display:block;} -.calendarmod td {height:20px;text-align:center;line-height:20px;border:1px solid #bbb;} - -.arrows {float:left;width:50%;} -tr.calendarmod-header td {text-align:center;font-weight:bold;background:#01457f;color:#fff;} -tr.calendarmod-header td a {display:block;height:20px;line-height:20px;background:#bcbdc0;font-size:16px;} -tr.calendarmod-header td a:hover {background:#9ad5f4;color:#01457f;} -td.calendar_weekday {background:#01457f;width:14%;color:#fff;} -td.calendar_markday {background:#eee;font-weight:bold;} -td.calendar_markday:hover {background:#ddd;} -td.calendar_noday {background:#fff;} -td.procal_today {border:2px solid #ff7600;} /*ori ff0000;}*/ - -.event_details {min-height:350px;} - -.actionlist {min-height:197px;} -.actionlist_header {font-weight:bold;} - -.actionlist_date {white-space:nowrap;padding:3px 5px !important;} -.actionlist_time {white-space:nowrap;padding:3px 5px !important;} -.actionlist_name {padding:3px 5px !important;} -.actionlist_actiontype {white-space:nowrap;padding:3px 5px !important;} - -.actionlist_table {width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} -.actionlist td {padding:3px 0;vertical-align:top;} -.actionlist tr {background:#fff;} -.actionlist tr:nth-child(odd) {background:#eee;} -.actionlist tr:hover {background:#ddd;} - -.actionlist_headernav {margin:10px 0;} -.actionlist_headernav h2 {padding:0 !important;margin:0 !important;} -.actionlist_headernav a {text-decoration:none;} -.actionlist_headernav td.arrow_left {padding:3px 0 0 10px;font-size:11px;text-align:left;} -.actionlist_headernav td.arrow_right {padding:3px 10px 0 0;font-size:11px;text-align:right;} - -a.go_back {font-weight:bold;text-decoration:none;} - -.info_block {position:relative;float:right;width:170px;padding:10px;border:1px solid #ccc;background:#f4f4f4;margin:5px 0 15px 15px;background:#eee;} -.info_block .field_line {width:100%;clear:both;line-height:15px;margin-bottom:8px;} -.info_block .field_title {width:100%;font-weight:bold;padding:0;margin:0;} - -.float_right {float:right;} - -/* EXAMPLE STYLES FOR CATEGORIES -#acttype1 {background:red;} -#acttype2 {background:green;} -#acttype3 {background:cyan;} -#acttype4 {background:blue;} -#acttype5 {background:brown;} -#acttype6 {background:purple;} -/* END OF EXAMPLE STYLES FOR CATEGORIES */ - - -/* STYLES FOR THE MINIJS DROPLET */ -/* copy this to your normal template stylesheet if you want to show the minicaljs on each page */ -table.inner {border-collapse:collapse;} -table.inner td {border:1px solid #ccc;padding:2px;} -table.inner .event {color:#01457f;font-weight:bold;} -table.inner .event:hover {font-weight:bold;cursor:pointer;color:#f47325;} - -/* Anpassung an die Anzeige für EFG MG von Harald Spring */ -.event_details {font-size:80%;} -.eintrag_link {font-size:80%; text-align:right;} -.info_block a {text-decoration:none;color:#ff7600 !important;} -.info_block a:hover {color:#000 !important;} +.show_calendar{margin-bottom:20px;} +.calendarmod{border-collapse:collapse;background:#fff;width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} +.calendarmod a{text-decoration:none;display:block;} +.calendarmod td{height:20px;text-align:center;line-height:20px;border:1px solid #bbb;} +.arrows{float:left;width:50%;} +tr.calendarmod-header td{text-align:center;font-weight:bold;background:#01457f;color:#fff;} +tr.calendarmod-header td a{display:block;height:20px;line-height:20px;background:#bcbdc0;font-size:16px;} +tr.calendarmod-header td a:hover{background:#9ad5f4;color:#01457f;} +td.calendar_weekday{background:#01457f;width:14%;color:#fff;} +td.calendar_weekday b {color:#fff!important;} +td.calendar_markday{background:#eee;font-weight:bold;} +td.calendar_markday:hover{background:#ddd;} +td.calendar_noday{background:#fff;} +td.procal_today{border:2px solid #ff7600;} +.event_details{min-height:350px;} +.actionlist{min-height:50px;} +.actionlist_header{font-weight:bold;} +.actionlist_date{white-space:nowrap;padding:3px 5px !important;width: 15%;} +.actionlist_time{white-space:nowrap;padding:3px 5px !important;width: 10%;} +.actionlist_name{padding:3px 5px !important;} +.actionlist_actiontype{white-space:nowrap;padding:3px 5px !important;} +.actionlist_table{width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} +.actionlist td{padding:3px 0;vertical-align:top;} +.actionlist tr{background:#fff;} +.actionlist tr:nth-child(odd){background:#eee;} +.actionlist tr:hover{background:#ddd;} +.actionlist_headernav{margin:10px 0;} +.actionlist_headernav h2{padding:0 !important;margin:0 !important;} +.actionlist_headernav a{text-decoration:none;} +.actionlist_headernav td.arrow_left{padding:3px 0 0 10px;font-size:11px;text-align:left;} +.actionlist_headernav td.arrow_right{padding:3px 10px 0 0;font-size:11px;text-align:right;} +a.go_back{font-weight:bold;text-decoration:none;} +.info_block{position:relative;float:right;width:30%;padding:10px;border:1px solid #ccc;background:#f4f4f4;margin:5px 0 15px 15px;background:#eee;} +.info_block .field_line{width:100%;clear:both;line-height:15px;margin-bottom:8px;} +.info_block .field_title{width:100%;font-weight:bold;padding:0;margin:0;} +.float_right{float:right;} +table.inner{border-collapse:collapse;} +table.inner td{border:1px solid #ccc;padding:2px;} +table.inner .event{color:#01457f;font-weight:bold;} +table.inner .event:hover{font-weight:bold;cursor:pointer;color:#f47325;} +.event_details{font-size:80%;} +.eintrag_link{font-size:80%;text-align:right;} +.info_block a{text-decoration:none;color:#ff7600 !important;} +.info_block a:hover{color:#000 !important;} +/*--------------------- scroll table -----------------------------*/ +.scrollable th,.scrollable td{padding:5px 5px;border-bottom:1px solid #ccc;} +.scrollable thead,.scrollable tfoot{display:table;width:100%;} +.scrollable tbody{overflow:auto;overflow-x:hidden;display:block;} +.scrollable tbody{width:100%;height:100%;max-height:41.825em;} +.scrollable tbody tr{display:table;width:100%;table-layout: fixed;} +.scrollable tbody tr:hover{background:#E3E3E3;cursor:default;} +/* ---------------------------------------------------------------*/ + diff --git a/functions.php b/functions.php index b1bea1e..ce2b76e 100644 --- a/functions.php +++ b/functions.php @@ -18,7 +18,6 @@ along with Website Baker; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ if (LANGUAGE_LOADED) { if (file_exists(WB_PATH . "/modules/" . basename(__dir__) . "/languages/" . LANGUAGE . ".php")) { require_once (WB_PATH . "/modules/" . basename(__dir__) . "/languages/" . LANGUAGE . ".php"); @@ -26,6 +25,7 @@ require_once (WB_PATH . "/modules/" . basename(__dir__) . "/languages/EN.php"); } } + */ /* if(!isset($wysiwyg_editor_loaded)) { $wysiwyg_editor_loaded=true; @@ -40,24 +40,54 @@ function show_wysiwyg_editor($name,$id,$content,$width,$height) { } */ +if (!defined('SYSTEM_RUN')) {header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found'); echo '404 File not found'; flush(); exit;} + +if (is_readable(__DIR__.'/languages/EN.php')) {require(__DIR__.'/languages/EN.php');} +if (is_readable(__DIR__.'/languages/'.DEFAULT_LANGUAGE.'.php')) {require(__DIR__.'/languages/'.DEFAULT_LANGUAGE.'.php');} +if (is_readable(__DIR__.'/languages/'.LANGUAGE.'.php')) {require(__DIR__.'/languages/'.LANGUAGE.'.php');} + +//global $action_types, $public_stat, $weekdays, $monthnames,$year, $month, $day; + + function isProcalcFuncLoaded(){;} /* returns count of days in given month */ -function DaysCount($month, $year) { - return cal_days_in_month(CAL_GREGORIAN, $month, $year); -} + function DaysCount($month, $year) { + return cal_days_in_month(CAL_GREGORIAN, $month, $year); + } -/* returns number (in week) of first day in month, this was made for countries, where week starts on Monday */ + function ReplaceAbsoluteMediaUrl($sContent) + { + if (ini_get( 'magic_quotes_gpc') == true) { + $sContent = $this->strip_slashes( $sContent); + } + if (is_string( $sContent)) { + $sRelUrl = preg_replace('/^https?:\/\/[^\/]+(.*)/is', '\1', WB_URL); + $sDocumentRootUrl = str_replace($sRelUrl, '', WB_URL); + $sMediaUrl = WB_URL.MEDIA_DIRECTORY.'/'; + $aSearchfor = [ + '@(<[^>]*=\s*")('.preg_quote($sMediaUrl). + ')([^">]*".*>)@siU', '@(<[^>]*=\s*")('.preg_quote( WB_URL.'/').')([^">]*".*>)@siU', + '/(<[^>]*?=\s*\")(\/+)([^\"]*?\"[^>]*?)/is', + '/(<[^>]*=\s*")('.preg_quote($sMediaUrl, '/').')([^">]*".*>)/siU', +# '/^https?:\/\/('.preg_quote($sMediaUrl, '/').')(.*)/siU' + ]; + $aReplacements = [ '$1{SYSVAR:AppUrl.MediaDir}$3', '$1{SYSVAR:AppUrl}$3','\1'.$sDocumentRootUrl.'/\3','$1{SYSVAR:MEDIA_REL}$3']; + $sContent = preg_replace( $aSearchfor, $aReplacements, $sContent); + } + return $sContent; + } -function FirstDay($month, $year) { - $english_order = date("w", mktime(0, 0, 0, $month, 1, $year)); - //echo("FirstDay: " . $english_order); - return ($english_order == 0) ? 7 : $english_order; -} +/* returns number (in week) of first day in month, this was made for countries, where week starts on Monday */ + function FirstDay($month, $year) { + $english_order = date("w", mktime(0, 0, 0, $month, 1, $year)); + //echo("FirstDay: " . $english_order); + return ($english_order == 0) ? 7 : $english_order; + } /* returns number of columns for calendar table */ -function ColsCount($month, $year) { - return date("W", mktime(0, 0, 0, $month, DaysCount($month, $year) - 7, $year)) - date("W", mktime(0, 0, 0, $month, 1 + 7, $year)) + 4; -} + function ColsCount($month, $year) { + return date("W", mktime(0, 0, 0, $month, DaysCount($month, $year) - 7, $year)) - date("W", mktime(0, 0, 0, $month, 1 + 7, $year)) + 4; + } /* This function returns value of table-cell identified by row and column number. */ @@ -110,13 +140,15 @@ function GetCalRowCount($dayscount, // how many days have this month //####################################################################### function ShowMiniCalendar($LinkName, $PageIdCal, $SectionIdCal) { - global $page_id, $monthnames, $weekdays, $section_id; + global $page_id, $monthnames, $weekdays, $section_id,$day; $timestamp = time(); $datum = date("m.Y", $timestamp); $month = substr($datum, 0, 2); $year = substr($datum, 3, 4); + $date_start = "$year-$month-1"; // range for all month $date_end = "$year-$month-" . DaysCount($month, $year); + $actions = fillActionArray($date_start, $date_end, $section_id); ($month > 1) ? ($prevmonth = $month - 1) : ($prevmonth = 12); ($month < 12) ? ($nextmonth = $month + 1) : ($nextmonth = 1); @@ -128,7 +160,7 @@ function ShowMiniCalendar($LinkName, $PageIdCal, $SectionIdCal) { ?> - @@ -138,7 +170,7 @@ function ShowMiniCalendar($LinkName, $PageIdCal, $SectionIdCal) { echo ""; // Spalte for ($col = 1; $col <= 7; $col++) { - //echo "'; - $HeaderText .= ''; - $HeaderText .= ''; + $HeaderText .= ''; - if (!isset($IsBackend)) { + ' »'.PHP_EOL.''; + + if (isset($IsBackend) && !$IsBackend) { // Fetch header settings from db - $sql = "SELECT * FROM " . TABLE_PREFIX . "mod_procalendar_settings WHERE section_id=$section_id "; - $db = $database->query($sql); - if ($db->numRows() > 0) { - while ($rec = $db->fetchRow(MYSQLI_ASSOC)) { - $header = $rec["header"]; - $usetime = $rec["usetime"]; + $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_settings` WHERE `section_id`=$section_id "; + if ($oRes = $database->query($sql)){ + if ($oRes->numRows() > 0) { +# while ($rec = $db->fetchRow(MYSQLI_ASSOC)) {} + $rec = $oRes->fetchRow(MYSQLI_ASSOC); + $header = $rec["header"]; + $usetime = $rec["usetime"]; + + if (is_int(strpos($header, '[CALENDAR]'))){ + $HeaderText = ''; + } } - if (is_int(strpos($header, '[CALENDAR]'))) - $HeaderText = ''; + } else { + $aErrorMsg[] = sprintf('%s',$database->get_error()); } } - $jscal_use_time = $usetime; // whether to use a clock, too - require_once(WB_PATH."/include/jscalendar/wb-setup.php"); +/* +print '
function '.__FUNCTION__.'( '.$IsBackend.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; +print_r( htmlspecialchars($header) ); print '
'; flush (); // ob_flush();;sleep(10); die(); +// $jscal_use_time = $usetime; // whether to use a clock, too +// require_once(WB_PATH."/include/jscalendar/wb-setup.php"); +*/ if ($HeaderText <> '') { - ?>
-
+
"; + //echo ""; $day = Cell($row, $col, $firstday, $dayscount, $SectionIdCal); if (is_numeric($day)) { $FlagDayWr = 1; @@ -159,7 +191,7 @@ function ShowMiniCalendar($LinkName, $PageIdCal, $SectionIdCal) { } // Was Day already written? if ($FlagDayWr == 1) { - echo ""; + echo ""; echo $day; } } else { @@ -182,54 +214,76 @@ function ShowMiniCalendar($LinkName, $PageIdCal, $SectionIdCal) { } //####################################################################### -function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { - global $page_id, $monthnames, $weekdays; - global $database, $admin, $wb; - ($month > 1) ? ($prevmonth = $month - 1) : ($prevmonth = 12); - ($month < 12) ? ($nextmonth = $month + 1) : ($nextmonth = 1); - ($month == 1) ? ($prevyear = $year - 1) : ($prevyear = $year); - ($month == 12) ? ($nextyear = $year + 1) : ($nextyear = $year); - $dayscount = DaysCount($month, $year); - $firstday = FirstDay($month, $year); +//function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { +function ShowCalendar(array $localVariables) { +// global $page_id, $monthnames, $weekdays,$database, $admin, $wb; + +if (isset($localVariables) && is_array($localVariables)){extract($localVariables);} + + $prevmonth = (($month > 1) ? ($month - 1) : 12); + $nextmonth = (($month < 12) ? ($month + 1) : 1); + $prevyear = (($month == 1) ? ($year - 1) : $year); + $nextyear = (($month == 12) ? ($year + 1) : $year); + + $dayscount = DaysCount($month, $year); + $firstday = FirstDay($month, $year); $addBracket = function () { $aList = func_get_args(); // return preg_replace('/^(.*)$/', '/\[$1\]/s', $aList); return preg_replace('/^(.*)$/', '[$1]', $aList); }; - /* //$previmg = WB_URL."/modules/".basename(__DIR__)."/prev.png"; //$nextimg = WB_URL."/modules/".basename(__DIR__)."/next.png"; */ + $sAddonPath = str_replace(DIRECTORY_SEPARATOR,'/', __DIR__); + + $PagesModifyUrl = (@$IsBackend ? ADMIN_URL.'/pages/modify.php' : $wb->link); + $output = ''; + $output .= '
'.PHP_EOL; + if (isset($IsBackend)&&$IsBackend){ + if (is_readable($sAddonPath.'/info.php')){require $sAddonPath.'/info.php';} + $output .= '
'.PHP_EOL; + $output .= '

'.$module_name.'

'.PHP_EOL; + if (is_readable($sAddonPath.'/languages/support-'.LANGUAGE.'.php')){ + $output .= '
'.PHP_EOL; + $output .= '

'.$CALTEXT['SUPPORT_INFO'].'

'.PHP_EOL; + $sContent = file_get_contents($sAddonPath.'/languages/support-'.LANGUAGE.'.php'); + $aSearches[] = '{SYSVAR:AddonUrl}'; + $aReplacements[] = WB_URL.'/modules/'.basename(__DIR__); + $output .= str_replace($aSearches, $aReplacements, $sContent); + $output .= '
'.PHP_EOL; + } + $output .= '
'.PHP_EOL; + } // change Luisehahne WB_URL.'/modules/'.basename(__DIR__).'/view.php' - $PagesModifyUrl = (@$IsBackend ? ADMIN_URL.'/pages/modify.php' : $admin->link); - $output = '
'; - $output .= ''; - $output .= ' '; - $output .= '
«'; + $output .= '
'.PHP_EOL; + $output .= ''.PHP_EOL; + $output .= ' '.PHP_EOL; + $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= ' '; + $output .= ' '; + $output .= ' '; + $output .= ' '.PHP_EOL.''; // ShowTermineDebug($month, $year, $actions); if (glob(WB_PATH . "/modules/" . basename(__dir__) . "/images/*.png") !== false) foreach (glob(WB_PATH . "/modules/" . basename(__dir__) . "/images/*.png") as $filename) { unlink($filename); } - ; $this_day = (intval($month) == date('n') && intval($year) == date('Y')) ? date('j') : 0; $rowcount = GetCalRowCount($dayscount, $firstday, $section_id); for ($row = 1; $row <= $rowcount; $row++) { - $output .= ''; + $output .= ''.PHP_EOL; for ($col = 1; $col <= 7; $col++) { $day = Cell($row, $col, $firstday, $dayscount, $section_id); $procal_today = (is_numeric($day) && $day == $this_day) ? " procal_today" : ""; if (is_numeric($day)) { - $colors = array(); + $colors = []; $FlagDayWr = 1; for ($i = 0; $i < sizeof($actions); $i++) { + $tmp = $actions[$i]; $dayend = substr($tmp['date_end'], -2); $monthend = substr($tmp['date_end'], 5, 2); @@ -237,11 +291,13 @@ function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { $monthstart = substr($tmp['date_start'], 5, 2); $dayformat = $tmp['act_dayformat']; $bgName = $day . $month . $year; + if (MarkDayOk($day, $month, $year, $actions, $i)) { if ($actions[$i]['act_format'] != "" & $dayformat) $colors[] = $actions[$i]['act_format']; $FlagDayWr = 0; - /* $yearstart = substr($tmp['date_start'],0,4); +/* + $yearstart = substr($tmp['date_start'],0,4); $link_pre = "".($tmp['name']); if(IstStartTerminVergangeheit("$year-$month-$day","$yearstart-$monthstart-$daystart") == 1 ) { $link = "?$link_pre&month=$monthstart&year=$yearstart&day=$daystart&show=-1"; @@ -252,26 +308,28 @@ function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { $link .= "&page_id=$pageid"; } $link .= "&id=".$tmp['id']."&section_id=$section_id&detail=1"; - $link = str_replace("\"","'",$link); */ + $link = str_replace("\"","'",$link); +*/ } } // Was Day already written? if ($FlagDayWr) { // change Luisehahne WB_URL.'/modules/'.basename(__DIR__).'/view.php' - $PagesModifyUrl = (@$IsBackend ? ADMIN_URL.'/pages/modify.php' : $admin->link); - $output .= ""; + $output .= "".PHP_EOL; } // end of row $output .= "\n"; } - $output .= '
'.PHP_EOL.''.PHP_EOL.'«'.PHP_EOL.''; $output .= ' ' . $monthnames[$month] . ' ' . $year . ''; - $output .= ' »
' . $monthnames[$month] . ' ' . $year . ''.PHP_EOL.''; + $output .= ' '.PHP_EOL.'»
"; - if ($IsBackend == false) + $PagesModifyUrl = (@$IsBackend ? ADMIN_URL.'/pages/modify.php' : $wb->link); + $output .= "".PHP_EOL; + if ($IsBackend == false){ $output .= $day; - else + }else{ $output .= '' . $day . ''; + } } else { //day must be marked $style = ""; if (count($colors)) { createBackground($colors, $bgName); $style = 'style="background-image: url(' . WB_URL . '/modules/' . basename(__DIR__) . '/images/' . $bgName . '.png); background-position: bottom;background-repeat:repeat-x"'; } - $output .= ""; - $output .= '' . $day . ''; + $output .= "".PHP_EOL; + $output .= '' . $day . ''.PHP_EOL; //$output .="$day"; } } else { @@ -283,20 +341,23 @@ function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { $output .= "$day"; } // end of column - $output .= "
'; + $output .= '
'.PHP_EOL.'
'.PHP_EOL; + $output .= '
'.PHP_EOL; + if (!$IsBackend) { // Fetch needed settings from db - $sql = "SELECT * FROM " . TABLE_PREFIX . "mod_procalendar_settings WHERE section_id=$section_id "; - $db = $database->query($sql); - if ($db->numRows() > 0) { - while ($rec = $db->fetchRow(MYSQLI_ASSOC)) { + $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_settings` WHERE `section_id`=$section_id "; + $oRes = $database->query($sql); + if ($oRes->numRows() > 0) { +# while ($rec = $db->fetchRow(MYSQLI_ASSOC)) {} + $rec = $oRes->fetchRow(MYSQLI_ASSOC); $header = $rec["header"]; - } + } $aPlaceHolders = $addBracket( 'NEW_ENTRY', @@ -305,16 +366,13 @@ function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { $display_new_entry = '
'; if ($admin->is_authenticated()) { - $display_new_entry = 'neuer Eintrag'; + $display_new_entry = 'neuer Eintrag'; } $aReplacements = array( $display_new_entry, $output ); - $output2 = str_replace($aPlaceHolders, $aReplacements, $header); - $wb->preprocess($output2); - print $output2; } else { echo $output; @@ -322,186 +380,271 @@ function ShowCalendar($month, $year, $actions, $section_id, $IsBackend) { } //######################################################################## +function ShowActionList(array $localVariables) { +/* function ShowActionList($day, $month, $year, $actions, $section_id) { global $page_id, $monthnames, $action_types, $IsBackend; global $CALTEXT; global $database, $admin, $wb; - ($month > 1) ? ($prevmonth = $month - 1) : ($prevmonth = 12); - ($month < 12) ? ($nextmonth = $month + 1) : ($nextmonth = 1); - ($month == 1) ? ($prevyear = $year - 1) : ($prevyear = $year); - ($month == 12) ? ($nextyear = $year + 1) : ($nextyear = $year); - $colcount = ColsCount($month, $year); + global $aInputRequest; + +print '
function '.__FUNCTION__.'( '.''.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; +print_r( $monthnames ); print '
'; flush (); // ob_flush();;sleep(10); die(); + + $localVariables = compact(array_keys(get_defined_vars())); +*/ + if (isset($localVariables) && is_array($localVariables)){extract($localVariables);} + + $aErrorMsg = []; + $prevmonth = (($month > 1) ? ($month - 1) : 12); + $nextmonth = (($month < 12) ? ($month + 1) : 1); + $prevyear = (($month == 1) ? ($year - 1) : $year); + $nextyear = (($month == 12) ? ($year + 1) : $year); + $colcount = ColsCount($month, $year); $dayscount = DaysCount($month, $year); - $firstday = FirstDay($month, $year); + $firstday = FirstDay($month, $year); //$previmg = WB_URL."/modules/".basename(__DIR__)."/prev.gif"; //$nextimg = WB_URL."/modules/".basename(__DIR__)."/next.gif"; - $IsMonthOverview = (strlen($day) > 0) ? 0 : 1; - $today = date("Y-m-d"); + $today = date("Y-m-d H:m:s"); // change Luisehahne WB_URL.'/modules/'.basename(__DIR__).'/view.php' - $PagesModifyUrl = (@$IsBackend ? ADMIN_URL . '/pages/modify.php' : $admin->link); + $PagesModifyUrl = (@$IsBackend ? ADMIN_URL . '/pages/modify.php' : $wb->link); + $BackToMonthLink = ''; $BackToMonthLink = '' . $CALTEXT['OF_MONATS'].'-'.$CALTEXT['DATES'].''; + + $IsMonthOverview = ($month != date("n")); + $IsMonthOverview = ($dayview && ($day != date("d")) ? $IsMonthOverview : !$dayview); + + $complementary = (function ($color){ + $leadingHash = false; + //clear whitespaces just to be shure + $color = trim($color); + //cut leading # + if (strpos($color, "#") !== false) { + $color = substr($color, 1); + $leadingHash = true; + } + //check if valid color string + if (preg_match('/^[A-Fa-f0-9]+$/', $color)== 'false') { + return $leadingHash ? '#' . $color : $color; + } + $r1 = dechex((15 - (hexdec($color[0])))); + $r2 = dechex((15 - (hexdec($color[1])))); + $g1 = dechex((15 - (hexdec($color[2])))); + $g2 = dechex((15 - (hexdec($color[3])))); + $b1 = dechex((15 - (hexdec($color[4])))); + $b2 = dechex((15 - (hexdec($color[5])))); + $complementary = $r1 . $r2 . $g1 . $g2 . $b1 . $b2; + return $leadingHash ? '#' . $complementary : $complementary; + }); + // no backlink in actuell month, because only events today will be shown - $BackToMonthLink = ((($IsMonthOverview != 1) && ($month != date('n'))) ? $BackToMonthLink : ''); - $HeaderText = '
'.PHP_EOL.'« ' . $monthnames[$prevmonth] . - '

'.$monthnames[$month].' '.$year. - '

'.PHP_EOL.'

'.$monthnames[$month].' '.$year. + '

'.PHP_EOL.'
'.PHP_EOL.'' . $monthnames[$nextmonth] . - ' »
+
- + -
- +
+
+ - + ' . $CALTEXT['FROM'] . ''; - echo ''; + echo ''; + echo ''; } ?> - - + + + + $aValue){ + $sStartTime = $aValue['date_start'].' '.$aValue['time_start']; + $sEndTime = $aValue['date_end'].' '.$aValue['time_end']; +/* + if (!$listIt){continue;} + $listIt = (strtotime($aValue['date_start']) >= strtotime('now') ? 1 : 0); +print '
function '.__FUNCTION__.'( '.''.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; +print_r( $actions ); print '
'; flush (); // ob_flush();;sleep(10); die(); +print '
function '.__FUNCTION__.'( '.''.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; +print_r( $sStartTime.'
'.$today ); print '
'; flush (); // ob_flush();;sleep(10); die(); +*/ +// } +// for ($i = 0; $i < sizeof($actions); $i++) { + $FlagEntryWritten = 1; + $tmp = $aValue; + extract($tmp); + $timestart = substr($tmp['time_start'], 0, 5); + $timeend = substr($tmp['time_end'], 0, 5); + $dayend = substr($date_end, -2); + $monthend = substr($tmp['date_end'], 5, 2); + $yearend = substr($tmp['date_end'], 0, 4); + $daystart = substr($tmp['date_start'], 8, 2); + $monthstart = substr($tmp['date_start'], 5, 2); + $yearstart = substr($tmp['date_start'], 0, 4); + + $fontcol = $tmp['act_format'] == '' ? '' : (hexdec(substr($tmp['act_format'], 0, 3)) + hexdec(substr($tmp['act_format'], 3, 2)) + hexdec(substr($tmp['act_format'], 5, 2)) < 400) ? '; color:#FFFFFF' : ''; + $style = $tmp['act_format'] == '' ? '' : 'style="background:' . $tmp['act_format'] . $fontcol . ';"'; + //if (!isset($_GET['dayview']) && intval($daystart) !== intval(date('j'))) { continue; } + if ($ReplaceDay == 1) { + $day = $daystart; } - $link .= "&id=" . $tmp['id'] . "&section_id=$section_id&detail=1"; -?> - > - + > + ' . $timestart . ''; - echo ''; - } + if ($usetime) { + echo ''; + echo ''; + } ?> - - - + + + - - + + + + - + + + + + +
' . $CALTEXT['DEADLINE'] . '' . $CALTEXT['FROM'] . '' . $CALTEXT['DEADLINE'] . '
= strtotime('now')) && !isset($_GET['[dayview]']) ? 1 : 0); + if (MarkDayOk($day, $month, $year, $actions, $i) || ($IsMonthOverview) ) { // && $listIt + $link_pre = "" . ($tmp['name']); + if (IstStartTerminVergangeheit("$year-$month-$day", "$yearstart-$monthstart-$daystart") == 1) { + $link = "?$link_pre&month=$monthstart&year=$yearstart&day=$daystart&show=-1"; + } else { + $link = "?$link_pre&month=$month&year=$year&day=$daystart&show=$i"; } - } + if (isset($pageid)) { + $link .= "&page_id=$pageid"; + } + $link .= "&id=" . $tmp['id'] . "&section_id=$section_id&detail=1"; ?> -
+ ' . $timeend . '' . $timestart . '' . $timeend . '" . $tmp["name"] . ""; + " . $tmp["name"] . ""; ?> - 0) { - $action_name = explode("#", $action_types[$tmp['acttype']]['name']); - print_r( $action_name[0]); - } - ?>
0)) { + $action_name = explode("#", $action_types[$tmp['acttype']]['name']); + print_r( $action_name[0]); + } ?> +
  
+
+
+
+
query($sql); - if ($db->numRows() > 0) { - while ($rec = $db->fetchRow(MYSQLI_ASSOC)) { - $footer = $rec["footer"]; - } + $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_settings` WHERE `section_id`=$section_id "; + $oRes = $database->query($sql); + if ($oRes->numRows() > 0) { +# while ($rec = $db->fetchRow(MYSQLI_ASSOC)) {} + $rec = $oRes->fetchRow(MYSQLI_ASSOC); + $footer = $admin->strip_slashes($rec["footer"]); + } - $wb->preprocess($footer); print $footer; - } + } // end ShowActionList /* this function returns array filled action-types grabbed from database */ function fillActionTypes($sec_id) { global $database; - $retarray = array(); + $retarray = []; $sql = 'SELECT * FROM `' . TABLE_PREFIX . 'mod_procalendar_eventgroups` ' . 'WHERE `section_id`=' . $sec_id . ' ' . 'ORDER by `name` ' . ''; if ($db = $database->query($sql)) { while ($record = $db->fetchRow(MYSQLI_ASSOC)) { $retarray[$record['id']] = $record; } - //while (list($key,$value) = each($retarray)) { - //echo "$key: $value "; - //} } return ($retarray); } @@ -509,12 +652,13 @@ function fillActionTypes($sec_id) { /* this function returns array filled with action-datas */ function fillActionArray($datestart, $dateend, $section_id) { - global $database, $admin; - + global $database, $admin, $oReg; + // Create new frontend object +// if (!class_exists('admin')){ include(WB_PATH.'/framework/class.admin.php'); } + if (!isset($admin) || !($admin instanceof admin)) { $admin = new admin('##skip##',false); } $sql = 'SELECT * FROM `' . TABLE_PREFIX . 'mod_procalendar_settings` WHERE `section_id`='.$section_id.' '; if (!$db = $database->query($sql)){ -print '
function '.__FUNCTION__.'( '.''.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; -print_r( $database->get_error() ); print '
'; flush (); // ob_flush();;sleep(10); die(); + echo sprintf('%s',$database->get_error()); } if ($db->numRows() > 0) { $rec = $db->fetchRow(MYSQLI_ASSOC); @@ -528,7 +672,7 @@ function fillActionArray($datestart, $dateend, $section_id) { } else { $extrawhere = '' .'AND ((`a`.`public_stat` = 0) '; // public actions - // if user is authenticated decide which actions to show +// if user is authenticated decide which actions to show if ($admin->is_authenticated()) { $extrawhere .= '' @@ -536,36 +680,36 @@ function fillActionArray($datestart, $dateend, $section_id) { .'OR (`a`.`public_stat` IN ('.$_SESSION['GROUPS_ID'].')) ' .') '; } else { - $extrawhere .= ') '; + $extrawhere .= ') '.PHP_EOL; } } $sql = '' - . 'SELECT ' - . '`a`.*, ' - . '`e`.`name` AS `act_name`, ' - . '`e`.`format` AS `act_format`, ' - . '`e`.`format_days` AS `act_dayformat` ' - . 'FROM ' - . '`'.TABLE_PREFIX . 'mod_procalendar_actions` AS `a` ' - . 'LEFT JOIN ' - . '`'. TABLE_PREFIX.'mod_procalendar_eventgroups` AS `e` ' - . 'ON ' - . '`a`.`acttype` = `e`.`id` ' - . 'WHERE (`a`.`section_id`='.$section_id.' )' - . 'AND (`a`.`date_start` <=\''.$dateend.'\')' - . ' AND (`a`.`date_end` >=\''.$datestart.'\' OR `a`.`rec_count` != 0) ' + . 'SELECT '.PHP_EOL + . '`a`.*, '.PHP_EOL + . '`e`.`name` AS `act_name`, '.PHP_EOL + . '`e`.`format` AS `act_format`, '.PHP_EOL + . '`e`.`format_days` AS `act_dayformat` '.PHP_EOL + . 'FROM '.PHP_EOL + . '`'.TABLE_PREFIX . 'mod_procalendar_actions` AS `a` '.PHP_EOL + . 'LEFT JOIN '.PHP_EOL + . '`'. TABLE_PREFIX.'mod_procalendar_eventgroups` AS `e` '.PHP_EOL + . 'ON '.PHP_EOL + . '`a`.`acttype` = `e`.`id` '.PHP_EOL + . 'WHERE (`a`.`section_id`='.$section_id.' )'.PHP_EOL + . 'AND (`a`.`date_start` <=\''.$dateend.'\')'.PHP_EOL + . ' AND (`a`.`date_end` >=\''.$datestart.'\' OR `a`.`rec_count` != 0) '.PHP_EOL . $extrawhere.'' - . 'ORDER BY ' - . '`a`.`date_start`,`a`.`time_start`'; + . 'ORDER BY '.PHP_EOL + . '`a`.`date_start`,`a`.`time_start`'.PHP_EOL; if (!$db = $database->query($sql)) { - file_put_contents(WB_PATH.'/logs/procalc_'.$datestart.'.sql', $sql.PHP_EOL); -print '
function '.__FUNCTION__.'( '.$database->get_errno().' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; -print_r( $sql."\n".$database->get_error() ); print '
'; flush (); // ob_flush();;sleep(10); die(); + file_put_contents(WB_PATH.'/var/logs/procalc_'.$datestart.'.sql', $sql.PHP_EOL); } - - $actions = array(); - $overwrites = array(); + if ($admin->is_authenticated() && $admin->ami_group_member('1')) { + } + $actions = []; + $aRetval = []; + $overwrites = []; if ($db->numRows() > 0) { while ($ret = $db->fetchRow(MYSQLI_ASSOC)) { $maxCount = $ret['rec_count']; @@ -594,7 +738,7 @@ function fillActionArray($datestart, $dateend, $section_id) { } elseif ($ret['rec_week'] != "") { $iStart = microtime(true); // change Luisehahne $ret_week = explode("+", $ret['rec_week']); - $weeks = $ret_week[0] - 1; + $weeks = (int)$ret_week[0] - 1; $weekdays = explode(";", $ret_week[1]); while (($dayDateStart <= $dayDateEnd || !$maxCount == 0) && ($dateCount < $maxCount || $maxCount < 1) && $dayDateStart <= $lastCalendarDay) { @@ -620,7 +764,7 @@ function fillActionArray($datestart, $dateend, $section_id) { $msg = sprintf('created: [' . date('c') . ']' . ' Corrupted record -> %4d date_start -> %s', $ret['id'], $ret['date_start']) . PHP_EOL; $msg = sprintf('created: [' . date('c') . ']' . ' Corrupted record -> %4d date_start -> %s', $ret['id'], $ret['date_start']) . PHP_EOL; $msg .= serialize($ret).PHP_EOL; - file_put_contents(WB_PATH . '/logs/procalc_error.log', $msg); + file_put_contents(WB_PATH . '/var/logs/procalc_error.log', $msg); break; } } @@ -703,9 +847,7 @@ function fillActionArray($datestart, $dateend, $section_id) { $ret['fdate_end'] = date($useifformat, strtotime($ret['date_end'])); $actions[] = $ret; } - ; } - ; //$firstDay->add(new DateInterval('P'.$months.'M')); $firstDay->modify('+' . $months . ' month'); $dateCount++; @@ -823,7 +965,7 @@ function cmp($a, $b) { } } usort($actions, "cmp"); - return ($actions); +# return ($actions); } else { /* print '
function ' . __function__ . '( ' . '' . ' );  filename: ' .
@@ -832,12 +974,13 @@ function cmp($a, $b) {
                 print '
'; flush(); // ob_flush();;sleep(10); die(); */ - return (null); } + return $actions; } //############################################################################# - function MarkDayOk($day, // + function MarkDayOk( + $day, // $month, // $year, // $actions, // Array with dates @@ -845,43 +988,56 @@ function MarkDayOk($day, // ) { // // Return: 0: No Date active // 1: Yes there is date aczive + $bRetVal = false; // //############################################################################# $Termin = $actions[$ActionIndex]; + $dayend = substr($Termin['date_end'], -2); $monthend = substr($Termin['date_end'], 5, 2); $yearend = substr($Termin['date_end'], 0, 4); + $daystart = substr($Termin['date_start'], 8, 2); $monthstart = substr($Termin['date_start'], 5, 2); $yearstart = substr($Termin['date_start'], 0, 4); + + $DateRefString = date('Y-m-d',\strtotime("$year-$month-$day")); + $DateStartString = date('Y-m-d',\strtotime($Termin['date_start'])); + $DateEndString = date('Y-m-d',\strtotime($Termin['date_end'])); + + $sDebugMsg = sprintf('%s %s',$DateStartString, $DateEndString); + // Liegt der Starttermin in der Vergangenheit? if (IstStartTerminVergangeheit("$year-$month-$day", "$yearstart-$monthstart-$daystart") == 1) { - if (($monthend == $month && $day <= $dayend && $year == $year) || (($monthend > $month || $yearend > $year) && $day > $daystart) || - ($monthend > $month || $yearend > $year)) { - return 1; + if (($monthend == $month && $day <= $dayend && $year == $year) + || (($monthend > $month || $yearend > $year) && $day > $daystart) + || ($monthend > $month || $yearend > $year)) { + $bRetVal = true; } } else - if (($day >= $daystart && $monthstart == $month)) { // Termin startet und endet in diesem Monat - return 1; + // Termin startet und endet in diesem Monat + if (($day >= $daystart && $monthstart == $month)) { + $bRetVal = true; } - return 0; + return $bRetVal; } //############################################################################# - function IstStartTerminVergangeheit($DateRefString, // Todays date + function IstStartTerminVergangeheit( /* function IstStartTerminVergangeheit */ + $DateRefString, // Todays date $DateStartString // date to check ) { // // Return: 0 - Date is not in the past // 1 - Yes, the date starts in the past -// -// + $bRetVal = false; //############################################################################# - // echo "DateStartString $DateRefString
"; - // echo "dateref $DateStartString
"; - if (date("Y-m-d", strtotime("$DateStartString")) < date("Y-m-d", strtotime("$DateRefString"))) { - return 1; + // echo "DateStartString $DateRefString
";date("Y-m-d", strtotime("$DateStartString") + // echo "dateref $DateStartString
"; date("Y-m-d", strtotime("$DateRefString")) + if (strtotime("$DateStartString") < strtotime("$DateRefString")) { +// if (date("Y-m-d", strtotime("$DateStartString")) < date("Y-m-d", strtotime("$DateRefString"))) { + $bRetVal = true; } - return 0; + return $bRetVal; } function ShowTermineDebug($month, $year, $actions) { @@ -897,46 +1053,51 @@ function ShowTermineDebug($month, $year, $actions) { $monthstart = substr($Termin['date_start'], 5, 2); $yearstart = substr($Termin['date_start'], 0, 4); echo "Termin am $daystart.$monthstart.$yearstart - $dayend.$monthend.$yearend "; - if (IstStartTerminVergangeheit("$year-$month-$day", "$yearstart-$monthstart-$daystart") == 1) + if (IstStartTerminVergangeheit("$year-$month-$day", "$yearstart-$monthstart-$daystart") == 1){ echo "--> alter Termin"; + } echo "
"; } } } function PrintArray($array) { - while (list($key, $value) = each($array)) { + foreach ($array as $key => $value){ echo "$key: $value "; } } /* writes ordered list of actions */ + function ShowActionListEditor(array $localVariables) { +/* function ShowActionListEditor($actions, $day = null, $pageid = null, $dayview) { global $action_types, $monthnames; global $month, $year; global $CALTEXT; $today = date("Y-m-d"); $IsMonthOverview = $dayview; +*/ + if (isset($localVariables) && is_array($localVariables)){extract($localVariables);} + $pageid = $page_id; $BackToMonthLink = "[".$CALTEXT["CALENDAR-BACK-MONTH"]."]"; if (!$IsMonthOverview) { - $HeaderText = $monthnames[(int) $month] . ' ' . $year; + $HeaderText = $monthnames[(int)$month].' '.$year; } else { - $HeaderText = $day . '-' . $month . '-' . $year . '  ' . $BackToMonthLink; + $HeaderText = $day.'-'.$month.'-'.$year.'  '.$BackToMonthLink; } - ?> +?>
-

- +

+
+ - - - + + + + + +/* */ + $sBGColor = (( isset($tmp['acttype']) &&isset($action_types[$tmp['acttype']])) ? $action_types[$tmp['acttype']]['format'] : '#B8B8B8'); + $sBorderBottom = ' border-bottom: 3px solid '.$sBGColor.';'; +?> - - - - + +
'.$tmp['fdate_start']; if ($tmp['date_end'] != $tmp['date_start']) { //only show end date if event has multiple days - echo " / "; - echo $tmp['fdate_end']; + echo ' / '.$tmp['fdate_end']; } echo ''; - ?> +?> - "> + + "> +", $action_types[$tmp['acttype']]['name']); + echo $string; } else { //echo "Action Type not valid"; } } - ?> +?>
+
+'.PHP_EOL; + if (!isset($tmp)){ +# \trigger_error(sprintf('[%d] Missing action/tmp ', __LINE__),E_USER_WARNING); + echo '
'.sprintf('[%d] '.$CALTEXT['NO_DESCRIPTION'], __LINE__).'
'.PHP_EOL; + echo '
'.''.$CALTEXT['BACK'].''.'
'.PHP_EOL; + +$description .= ' +
+
+'.PHP_EOL; + return; + } // Fetch all settings from db $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_settings` WHERE `section_id`=$section_id "; - $db = $database->query($sql); + $oRes = $database->query($sql); $Sday = 0; $Utime = 0; $Uformat = ''; $Uifformat = ''; - if ($db->numRows() > 0) { - while ($rec = $db->fetchRow(MYSQLI_ASSOC)) { + if ($oRes->numRows() > 0) { +# while ($rec = $oRes->fetchRow(MYSQLI_ASSOC)) { + $rec = $oRes->fetchRow(MYSQLI_ASSOC); $startday = $rec["startday"]; $usetime = $rec["usetime"]; $onedate = $rec["onedate"]; @@ -1061,21 +1251,17 @@ function ShowActionEntry($tmp, $section_id) { // $custom9 = $rec["custom9"]; $customtemplate9 = $rec["customtemplate9"]; $posttempl = $rec["posttempl"]; - } +# } } //$previmg = WB_URL."/modules/".basename(__DIR__)."/prev.png"; // echo "« " . $CALTEXT['BACK'] . ""; - -/* $ds = $tmp['date_start'] . " " . substr($tmp['time_start'], 0, 5); $de = $tmp['date_end'] . " " . substr($tmp['time_end'], 0, 5); $datetime_start = mktime(substr($ds, 11, 2), substr($ds, 14, 2), 0, substr($ds, 5, 2), substr($ds, 8, 2), substr($ds, 0, 4)); $datetime_end = mktime(substr($de, 11, 2), substr($de, 14, 2), 0, substr($de, 5, 2), substr($de, 8, 2), substr($de, 0, 4)); -*/ $datetime_start = strtotime($tmp['date_start'].' '.$tmp['time_start']); $datetime_end = strtotime($tmp['date_end'] . ' '.$tmp['time_end']); - $newline = chr(13) . chr(10); $name = $tmp['name']; $date_start = date($useifformat, $datetime_start); @@ -1086,117 +1272,185 @@ function ShowActionEntry($tmp, $section_id) { // $action_name = ""; if ($tmp['acttype'] > 0){ - $action_name = (explode("#", $action_types[$tmp['acttype']])); + $action_name = $action_types[$tmp['acttype']]; } // 2011-oct-01 PCWacht // Added date_simple , just shows date (start (and end when given) // First set date_simple to startdate $date_simple = $date_start; - $date_full = $newline . '
' . $newline; - $date_full .= '
'; + +// $date_full = PHP_EOL . '
'.PHP_EOL; +// $date_full .= '
' . $newline . '
'; + $day_index = [ + '0' => "Sun,Mon,Tue,Wed,Thu,Fri,Sat", + '1' => "Mon,Sun,Tue,Wed,Thu,Fri,Sat", + ]; +// $date_full .= '
' . PHP_EOL . '
'; + +$date_full .= ' +
+
+'.PHP_EOL; +/* +$date_full .= ' +'; for ($i = 1; $i < count($action_name); $i++) { - $date_full .= $weekdays[array_search($action_name[$i], $day_index)] . ' '; +print '
function '.__FUNCTION__.'( '.''.' );  filename: '.basename(__FILE__).'  line: '.__LINE__.' -> 
'; +print_r( $action_name ); print '
'; flush (); // ob_flush();;sleep(10); die(); +*/ + + foreach ($action_name as $aValue) { +// $date_full .= $weekdays[array_search($aValue['format_days'], $day_index)].PHP_EOL; + $date_full .= ''.PHP_EOL; } } - $date_full .= '
' . $newline; +$date_full .= ' +
+'.PHP_EOL; + if (($tmp['date_start'] != $tmp['date_end']) || (($tmp['date_start'] == $tmp['date_end']) && (($tmp['time_start'] != $tmp['time_end']) && ((substr($tmp['time_end'], 0, -3)) != "00:00")))) { - $date_full .= '
'; +// $date_full .= '
'; +$date_full .= ' +
+'.PHP_EOL; if ($tmp['date_end'] or $tmp['time_end']) { - $date_full .= '
' . $CALTEXT['DEADLINE'] . '
' . $newline; +$date_full .= ' +
+'.PHP_EOL; + $date_full .= '' . $CALTEXT['DEADLINE'].PHP_EOL; +$date_full .= ' +
+'.PHP_EOL; if ($tmp['date_end']) { $date_full .= date($useifformat, $datetime_end); // 2011-oct-01 PCWacht // and add dateend to date_simple $date_simple .= ' - ' . $date_end; } + if ($usetime) { $ende = substr($tmp['time_end'], 0, -3); if ($ende != "00:00") { - $date_full .= " (" . $ende . " " . $CALTEXT['TIMESTR'] . ")"; + $date_full .= " (" . $ende . " " . $CALTEXT['TIMESTR'] . ")".PHP_EOL; } } } - $date_full .= '
' . $newline; +// $date_full .= '
' . PHP_EOL; +$date_full .= ' +
+'.PHP_EOL; } - $category = $newline; + $category = ''; if ($tmp['acttype'] > 0) { - $category .= '
' . $newline; - $category .= '
' . $CALTEXT['CATEGORY'] . '
' . $newline; - if ($tmp['acttype'] > 0) - $category .= $action_name[0]; - $category .= '
' . $newline; +// $category .= '
' . PHP_EOL; +// $category .= '' . $newline; +$category .= ' +
+
+'.PHP_EOL; +$category .= $CALTEXT['CATEGORY'].' +
+'.PHP_EOL; + + if ($tmp['acttype'] > 0){ + $category .= $action_name['name'].PHP_EOL; + } +// $category .= '
' . PHP_EOL; +$category .= ' +
+'.PHP_EOL; + } $custom_output1 = ''; - if (($usecustom1 <> 0 && $tmp['custom1'] <> '')) - $custom_output1 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom1, $tmp['custom1']), $customtemplate1).$newline; + if (($usecustom1 <> 0 && $tmp['custom1'] <> '')){ + $custom_output1 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom1, $tmp['custom1']), $customtemplate1).PHP_EOL; + } $custom_output2 = ''; - if (($usecustom2 <> 0 && $tmp['custom2'] <> '')) - $custom_output2 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom2, $tmp['custom2']), $customtemplate2).$newline; + if (($usecustom2 <> 0 && $tmp['custom2'] <> '')){ + $custom_output2 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom2, $tmp['custom2']), $customtemplate2).PHP_EOL; + } $custom_output3 = ''; - if (($usecustom3 <> 0 && $tmp['custom3'] <> '')) - $custom_output3 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom3, $tmp['custom3']), $customtemplate3).$newline; + if (($usecustom3 <> 0 && $tmp['custom3'] <> '')){ + $custom_output3 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom3, $tmp['custom3']), $customtemplate3).PHP_EOL; + } $custom_output4 = ''; - if (($usecustom4 <> 0 && $tmp['custom4'] <> '')) - $custom_output4 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom4, $tmp['custom4']), $customtemplate4).$newline; + if (($usecustom4 <> 0 && $tmp['custom4'] <> '')){ + $custom_output4 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom4, $tmp['custom4']), $customtemplate4).PHP_EOL; + } $custom_output5 = ''; - if (($usecustom5 <> 0 && $tmp['custom5'] <> '')) - $custom_output5 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom5, $tmp['custom5']), $customtemplate5).$newline; + if (($usecustom5 <> 0 && $tmp['custom5'] <> '')){ + $custom_output5 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom5, $tmp['custom5']), $customtemplate5).PHP_EOL; + } $custom_output6 = ''; - if (($usecustom6 <> 0 && $tmp['custom6'] <> '')) - $custom_output6 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom6, $tmp['custom6']), $customtemplate6).$newline; + if (($usecustom6 <> 0 && $tmp['custom6'] <> '')){ + $custom_output6 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom6, $tmp['custom6']), $customtemplate6).PHP_EOL; + } $custom_output7 = ''; - if (($usecustom7 <> 0 && $tmp['custom7'] <> '')) - $custom_output7 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom7, $tmp['custom7']), $customtemplate7).$newline; + if (($usecustom7 <> 0 && $tmp['custom7'] <> '')){ + $custom_output7 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom7, $tmp['custom7']), $customtemplate7).PHP_EOL; + } $custom_output8 = ''; - if (($usecustom8 <> 0 && $tmp['custom8'] <> '')) - $custom_output8 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom8, $tmp['custom8']), $customtemplate8).$newline; + if (($usecustom8 <> 0 && $tmp['custom8'] <> '')){ + $custom_output8 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom8, $tmp['custom8']), $customtemplate8).PHP_EOL; + } $custom_output9 = ''; - if (($usecustom9 <> 0 && $tmp['custom9'] <> '')) - $custom_output9 .= str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom9, $tmp['custom9']), $customtemplate9).$newline; - $description = '
' . $newline; - $description .= '
' . $newline; - if (strlen($tmp['description']) > 0){ + if (($usecustom9 <> 0 && $tmp['custom9'] <> '')){ + $custom_output9 = str_replace(array('[CUSTOM_NAME]', '[CUSTOM_CONTENT]'), array($custom9, $tmp['custom9']), $customtemplate9).PHP_EOL; + } +// $description = '
' . PHP_EOL; +// $description .= '
' . PHP_EOL; + + if (mb_strlen($tmp['description']) > 0){ $sFilterApi = WB_PATH.'/modules/output_filter/OutputFilterApi.php'; if (is_readable($sFilterApi)) { require_once($sFilterApi); $tmp['description'] = OutputFilterApi('ReplaceSysvar', $tmp['description']); } - $description .= $tmp['description']; + $description .= $tmp['description'].PHP_EOL; }else{ - $description .= $CALTEXT['NO_DESCRIPTION']; +# \trigger_error(sprintf('[%d] Can\'t call ShowActionEntry section_id = %d', __LINE__,$section_id),E_USER_WARNING); + $description .= sprintf(''.$CALTEXT['NO_DESCRIPTION']).PHP_EOL; } - $description .= '
' . $newline; - $description .= '
' . $newline; +// $description .= '
' . PHP_EOL; +// $description .= '
' . PHP_EOL; +$description .= ' +
+ +'.PHP_EOL; + $monthstart = substr($tmp['date_start'], 5, 2); $yearstart = substr($tmp['date_start'], 0, 4); - //$back = ''.$CALTEXT['BACK'].''.$newline; - $back = "" . $CALTEXT['BACK'] . ""; + $back = ''.$CALTEXT['BACK'].''.PHP_EOL; + //$back = "" . $CALTEXT['BACK'] . ""; $vars = array( '[NAME]', '[DATE_FULL]', @@ -1230,11 +1484,9 @@ function ShowActionEntry($tmp, $section_id) { // $description, $back); $post_content = str_replace($vars, $values, $posttempl); - // Make sure wblinks and droplets are executed; -// $wb->preprocess($post_content); - print $post_content; + return $post_content; /** - * - +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- Adminer 4.6.2 MySQL dump + +SET NAMES utf8; +SET time_zone = '+00:00'; +-- SET foreign_key_checks = 0; +-- SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; + +DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_procalendar_actions`; +CREATE TABLE `{TABLE_PREFIX}mod_procalendar_actions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `section_id` int(11) NOT NULL DEFAULT '0', + `page_id` int(11) NOT NULL DEFAULT '0', + `owner` int(11) NOT NULL DEFAULT '0', + `date_start` date NOT NULL DEFAULT '0000-00-00', + `time_start` time DEFAULT NULL DEFAULT '00:00:00', + `date_end` date DEFAULT NULL DEFAULT '0000-00-00', + `time_end` time DEFAULT NULL DEFAULT '00:00:00', + `acttype` tinyint(4) NOT NULL DEFAULT 0, + `name` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `description` text {FIELD_COLLATION} NOT NULL, + `custom1` text {FIELD_COLLATION} NOT NULL, + `custom2` text {FIELD_COLLATION} NOT NULL, + `custom3` text {FIELD_COLLATION} NOT NULL, + `custom4` text {FIELD_COLLATION} NOT NULL, + `custom5` text {FIELD_COLLATION} NOT NULL, + `custom6` text {FIELD_COLLATION} NOT NULL, + `custom7` text {FIELD_COLLATION} NOT NULL, + `custom8` text {FIELD_COLLATION} NOT NULL, + `custom9` text {FIELD_COLLATION} NOT NULL, + `public_stat` tinyint(4) NOT NULL DEFAULT '0', + `rec_id` int(11) NOT NULL DEFAULT '0', + `rec_day` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `rec_week` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `rec_month` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `rec_year` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `rec_count` smallint(6) NOT NULL DEFAULT '0', + `rec_exclude` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +){TABLE_ENGINE}; + + + +DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_procalendar_eventgroups`; +CREATE TABLE `{TABLE_PREFIX}mod_procalendar_eventgroups` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `section_id` int(11) NOT NULL DEFAULT '0', + `name` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `format` varchar(255) {FIELD_COLLATION} NOT NULL DEFAULT '', + `format_days` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +){TABLE_ENGINE}; + + + +DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_procalendar_settings`; +CREATE TABLE `{TABLE_PREFIX}mod_procalendar_settings` ( + `section_id` int(11) NOT NULL DEFAULT '0', + `page_id` int(11) NOT NULL DEFAULT '0', + `settings` text {FIELD_COLLATION} NOT NULL, + `startday` int(11) NOT NULL DEFAULT '0', + `onedate` int(11) NOT NULL DEFAULT '0', + `usetime` int(11) NOT NULL DEFAULT '0', + `useformat` varchar(15) {FIELD_COLLATION} NOT NULL DEFAULT '', + `useifformat` varchar(15) {FIELD_COLLATION} NOT NULL DEFAULT '', + `usecustom1` int(11) NOT NULL DEFAULT '0', + `custom1` text {FIELD_COLLATION} NOT NULL, + `customtemplate1` text {FIELD_COLLATION} NOT NULL, + `usecustom2` int(11) NOT NULL DEFAULT '0', + `custom2` text {FIELD_COLLATION} NOT NULL, + `customtemplate2` text {FIELD_COLLATION} NOT NULL, + `usecustom3` int(11) NOT NULL DEFAULT '0', + `custom3` text {FIELD_COLLATION} NOT NULL, + `customtemplate3` text CHARACTER SET latin1 NOT NULL, + `usecustom4` int(11) NOT NULL DEFAULT '0', + `custom4` text {FIELD_COLLATION} NOT NULL, + `customtemplate4` text {FIELD_COLLATION} NOT NULL, + `usecustom5` int(11) NOT NULL DEFAULT '0', + `custom5` text {FIELD_COLLATION} NOT NULL, + `customtemplate5` text {FIELD_COLLATION} NOT NULL, + `usecustom6` int(11) NOT NULL DEFAULT '0', + `custom6` text {FIELD_COLLATION} NOT NULL, + `customtemplate6` text {FIELD_COLLATION} NOT NULL, + `usecustom7` int(11) NOT NULL DEFAULT '0', + `custom7` text {FIELD_COLLATION} NOT NULL, + `customtemplate7` text {FIELD_COLLATION} NOT NULL, + `usecustom8` int(11) NOT NULL DEFAULT '0', + `custom8` text {FIELD_COLLATION} NOT NULL, + `customtemplate8` text {FIELD_COLLATION} NOT NULL, + `usecustom9` int(11) NOT NULL DEFAULT '0', + `custom9` text {FIELD_COLLATION} NOT NULL, + `customtemplate9` text {FIELD_COLLATION} NOT NULL, + `resize` int(11) NOT NULL DEFAULT '0', + `header` text {FIELD_COLLATION} NOT NULL, + `footer` text {FIELD_COLLATION} NOT NULL, + `posttempl` text {FIELD_COLLATION} NOT NULL, + PRIMARY KEY (`section_id`) +){TABLE_ENGINE}; + + + +-- 2018-03-24 20:24:20 diff --git a/install.php b/install.php index 7b2c77e..c426231 100644 --- a/install.php +++ b/install.php @@ -23,19 +23,23 @@ if (defined('WB_URL')) { + $sAppPath = str_replace(DIRECTORY_SEPARATOR,'/', WB_PATH); + $sAddonPath = str_replace(DIRECTORY_SEPARATOR,'/', __DIR__); // create tables from sql dump file - if (is_readable(__DIR__.'/install-struct.sql')) { - $database->SqlImport(__DIR__.'/install-struct.sql', TABLE_PREFIX, __FILE__ ); + if (\is_readable($sAddonPath.'/install-struct.php')) { + $database->SqlImport($sAddonPath.'/install-struct.php', TABLE_PREFIX, __FILE__ ); } // Make calendar images directory - if (!is_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/')){ make_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/');} + if (!\is_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/')){ make_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/');} + if (!\is_readable($sAddonPath.'/images')){make_dir($sAddonPath.'/images');} + } /* // Insert info into the search table // Module query info - $field_info = array(); + $field_info = []; $field_info['page_id'] = 'page_id'; $field_info['title'] = 'page_title'; $field_info['link'] = 'link'; diff --git a/languages/DE.php b/languages/DE.php index 559a52c..ef5929d 100644 --- a/languages/DE.php +++ b/languages/DE.php @@ -50,6 +50,7 @@ $CALTEXT['DESCRIPTION'] = "Beschreibung"; $CALTEXT['NO_DESCRIPTION'] = "Keine Beschreibung verfügbar..."; $CALTEXT['FROM'] = "Von"; +$CALTEXT['UNTIL'] = "Bis"; $CALTEXT['NEW-EVENT'] = "Neuer Termin"; $CALTEXT['NEW'] = "Neu"; $CALTEXT['NON-SPECIFIED'] = "nichts hinterlegt"; diff --git a/languages/EN.php b/languages/EN.php index a583db6..e7f3123 100644 --- a/languages/EN.php +++ b/languages/EN.php @@ -49,7 +49,8 @@ $CALTEXT['DELETE'] = "Delete"; $CALTEXT['DESCRIPTION'] = "Description"; $CALTEXT['NO_DESCRIPTION'] = "No description available..."; -$CALTEXT['FROM'] = "Start"; +$CALTEXT['FROM'] = "From"; +$CALTEXT['UNTIL'] = "Until"; $CALTEXT['NEW-EVENT'] = "New event"; $CALTEXT['NEW'] = "New"; $CALTEXT['NON-SPECIFIED'] = "N/A"; @@ -105,4 +106,3 @@ $CALTEXT['ISREC_MESSAGE'] = "This date is part of a date series. /n"OK" - for editing the whole series. /n "Cancel" - for overwriting date or creating a new one."; $CALTEXT['REC_OVERWRITE_MESSAGE'] = "This Date is part of a date series. \nIf you delete this date the original date of the series will become active again."; $CALTEXT['REC_OVERWRITE'] = "overwrite"; -?> \ No newline at end of file diff --git a/languages/NL.php b/languages/NL.php index 4e5c121..78046d6 100644 --- a/languages/NL.php +++ b/languages/NL.php @@ -49,7 +49,8 @@ $CALTEXT['DELETE'] = "Verwijderen"; $CALTEXT['DESCRIPTION'] = "Beschrijving"; $CALTEXT['NO_DESCRIPTION'] = "Geen beschrijving beschikbaar..."; -$CALTEXT['FROM'] = "Start"; +$CALTEXT['FROM'] = "From"; +$CALTEXT['UNTIL'] = "Until"; $CALTEXT['NEW-EVENT'] = "Nieuw"; $CALTEXT['NEW'] = "Nieuw"; $CALTEXT['NON-SPECIFIED'] = "n.v.t."; @@ -106,4 +107,3 @@ $CALTEXT['ISREC_MESSAGE'] = "This date is part of a date series. /n"OK" - for editing the whole series. /n "Cancel" - for overwriting date or creating a new one."; $CALTEXT['REC_OVERWRITE_MESSAGE'] = "This Date is part of a date series. \nIf you delete this date the original date of the series will become active again."; $CALTEXT['REC_OVERWRITE'] = "overwrite"; -?> \ No newline at end of file diff --git a/languages/support-DE.php b/languages/support-DE.php index 93c5012..fc2bf5f 100644 --- a/languages/support-DE.php +++ b/languages/support-DE.php @@ -1,93 +1,144 @@ - - Copyright (C) 2004-2006, Ryan Djurovich - - Website Baker 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. - - Website Baker 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. - - You should have received a copy of the GNU General Public License - along with Website Baker; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Translation of the help page by Florian Meerwinck (instantflorian), meerwinck.com - -*/ - -//require('../../../config.php'); - -// Include WB admin wrapper script -//require(WB_PATH.'/modules/admin.php'); - -if (LANGUAGE_LOADED) { // load languagepack - if(file_exists(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php")) { // if exist proper language mutation - require_once(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php"); // load it - } else { - require_once(WB_PATH."/modules/procalendar/languages/EN.php"); // else use english - } -} - -?> -
-

-

Optionen

-

Folgende grundlegende Einstellungen können für einen Eintrag vorgenommen werden:

- -

Datum / Start- und Enddatum verwenden
Hier kann festgelegt werden, ob zu den Events nur ein Startdatum oder ein Start- und ein Enddatum angegeben werden soll. Wenn nur Ein-Tages-Events eingetragen werden soll, ist logischerweise kein Enddatum erforderlich, wenn Events hingegen über mehrere Tage stattfinden, ist die Angabe eines Enddatums sinnvoll. Auch wenn ausgewählt wurde, Start- und Enddatum zu verwenden, kann trotzdem auch nur ein Startdatum angegeben werden, das dann leere Feld für das Enddatum wird auf der Website nicht angezeigt.

-

Tipp: Am besten für die Datumsangabe den eingebauten Date Picker verwenden, um zu verhindern, dass versehentlich ungültige Enddatumsangabn (Enddatum vor Startdatum) gemacht werden.

-

Uhrzeit verwenden
Es kann ausgewählt werden, ob zum Start- und Endzeitpunkt auch die Uhrzeit angegeben werden soll. Ist diese option ausgewählt, werden zusätzlich Eingabefelder für die Uhrzeit bei der Termineingabe angezeigt. Diese Felder können aber auch leer bleiben. Wenn ein Uhrzeitfeld leer ist oder 00:00 Uhr angegeben wird, wird es auf der Website nicht angezeigt.
 

-
-

Eigene Felder

-

Eskönnen bis zu 9 zusätzliche Eingabefelder für Eventdetails definiert werden. Diese "Eigenen Felder" werden dann angezeigt, wenn ein neuer Event angelegt wird. Die jeweiligen Eingaben werden in der im Backend festgelegten Form im Frontend angezeigt. Es stehen die folgenden feldtypen zur Verfügun:

- -

Es können beliebig viele der 9 Felder verwendet werden, indem der Feldtyp ausgewählt und die Ausgabe im Feld-Template festgelegt wird. Dabei werden nur die Eingabefelder angezeigt, die auch aktiviert werden (also nicht auf "Nicht benutzt" stehen). Feldbezeichnung und Feld-Template können beliebig festgelegt werden.

-

Die Standard-Feldtemplate sind:

-

Textfeld / Textarea
<div class="field_line">
   <div class="field_title">[CUSTOM_NAME]</div>
   [CUSTOM_CONTENT]
</div>

-

WB-Link
<div class="field_line">
   <a href="[wblink[CUSTOM_CONTENT]]">[CUSTOM_NAME]</a>
</div>

-

Bild
<div class="field_line">
   <img src="[CUSTOM_CONTENT]" border ="0" alt="[CUSTOM_NAME]" />
</div>

-
-

Template

-

Im "Master-Template" wird das Layout für Kopf- und fußzeile der Event-Übersichtsseite und die Detailseiten festgelegt. Zulässig sind Text, HTML und Droplets.

-

Kopf- und Fußzeile
Standardmäßig sind Kopf- und Fußzeile der Event-Übersichtsseite leer, hier können Text und HTML-Code eingegeben werden, und natürlich auch Droplets. Zudem kann der ProCalendar-Tag [CALENDAR] hinterlegt werden, der über die gesamte zur Verfügung stehende Breite des Abschnitts einen Monatskalender mit Links zu den hinterlegten Eventdetails anzeigt.

-

Beitrag (Event-Detailseite)
Das Detailseiten-Template kann ebenfalls Text, HTML, Droplets enthalten; sowie die folgenden ProCalendar-Tags: [NAME], [DATE_SIMPLE], [DATE_FULL], [CATEGORY], [CUSTOM1], [CUSTOM2], [CUSTOM3], [CUSTOM4], [CUSTOM5], [CUSTOM6], [CATEGORY], [CONTENT] und [BACK]. All diese Tags können, müssen aber nicht verwendet werden; auch die Reihenfolge ist beliebig.

-

Der Unterschied zwischen [DATE_SIMPLE] und [DATE_FULL] besteht darin, dass [DATE_SIMPLE] nur die reine Datumsangabe ohne HTML/CSS ausgibt. [DATE_FULL] generiert die Datumsangabe mit Formatierung:

-

<div class="field_line">
   <div class="field_title">Start:</div>
   01.10.2011
</div>

-

Das Standard-Template für die Detailseiten sieht so aus:

-

<div class="event_details">
   <h2>[NAME]</h2>
   <div class="info_block">
      [DATE_FULL]
      [CUSTOM1]
      [CUSTOM2]
      [CUSTOM3]
      [CUSTOM4]
      [CUSTOM5]
      [CUSTOM6]
      [CATEGORY]
   </div>
   [CONTENT]
</div>
[BACK]

-

Durch die Kombination zwischen dem "Master-Template" und den "Feld-Templates" kann die Darstellung von Eventdetails flexibel an den jeweiligen Bedarf angepasst werden.

-
-

CSS bearbeiten

-

Wie viele andere WebsiteBaker-Module können auch beim ProCalendar die Stylesheets für Frontend und Backend angepasst werden. Das setzt allerdings voraus, dass die CSS-Dateien beschreibbar sind, sonst können die Änderungen nicht gespeichert werden.

- -
-';" /> -print_footer(); -?> + +

Optionen

+ +

+Button +Die Grundeinstellung für den ProCalendar erfolgt im BackEnd (BE) über diesen Button.

+ +

Folgende grundlegende Einstellungen können vorgenommen werden:

+ +

unter Optionen:

+ +

+ +mit welchem Wochentag startet der Kalender

+ +

+ +in welchem Format soll das Datum angezeigt werden

+ +

+ +Hier kann festgelegt werden, ob zu den Events nur ein Startdatum oder ein Start- und ein Enddatum angegeben werden soll. Wenn nur Ein-Tages-Events eingetragen werden soll, ist logischerweise kein Enddatum erforderlich, wenn Events hingegen über mehrere Tage stattfinden, ist die Angabe eines Enddatums sinnvoll. Auch wenn ausgewählt wurde, Start- und Enddatum zu verwenden, kann trotzdem auch nur ein Startdatum angegeben werden, das dann leere Feld für das Enddatum wird auf der Website nicht angezeigt.

+ +

Tipp: Am besten für die Datumsangabe den eingebauten Date Picker verwenden, um zu verhindern, dass versehentlich ungültige Enddatumsangabn (Enddatum vor Startdatum) gemacht werden.

+ +

+ +Es kann ausgewählt werden, ob zum Start- und Endzeitpunkt auch die Uhrzeit angegeben werden soll. Ist diese option ausgewählt, werden zusätzlich Eingabefelder für die Uhrzeit bei der Termineingabe angezeigt. Diese Felder können aber auch leer bleiben. Wenn ein Uhrzeitfeld leer ist oder 00:00 Uhr angegeben wird, wird es auf der Website nicht angezeigt.

+ +

Tipp: Am besten für die Datumsangabe den eingebauten Date Picker verwenden, um zu verhindern, dass versehentlich ungültige Enddatumsangabn (Enddatum vor Startdatum) gemacht werden.

+ +

+ +diese Grundeinstellung speichern

+ +

Im Abschnitt Kategorien verwalten werden diese angelegt und wenn gewünscht mit einer Farbe versehen.

+ +

+ +Kategoriename in das leere Textfeld eintragen

+ +

+ +
über den Farbenpicker eine Farbe auswählen und speichern, diese Farbe wird in der Auflistung für die jeweilige Kaegorie angezeigt.

+

 

+ +

+ +Wenn diese Farbe auch in den Kalenderansichten erscheinen soll, den Hacken setzen und speichern.

+ +

 

+

Vorgegebene Felder

+ +

+ +Hier wird der Name bzw. Titel des Events eingetragen. Dieser Eintarg erscheint in der Ãœbersicht aller termine im Frontend und im Backend.

+ +

+Kategorie +Die Kategorie bzw. der Typ des Events, z.B. Workshop, Training, Meeting, Konferenz, Raumbelegung.... Bei den Optionen können beliebig viele Kategorien angelegt werden (siehe oben). Nachdem dies geschehen ist, stehen sie hier dann zur Auswahl.

+ +

+Sichtbarkeit +Sichtbarkeit: Events können entweder öffentlich oder "privat" sein. Öffentliche Events sehen alle Besucher der Seite. "Private Events" werden nur angemeldeten Besuchern der jeweiligen Gruppe angezeigt. Hier werden die angelegten Gruppen von WebsiteBaker als Grundlage genommen. Als Beispiel: Wird ein Termin mit der "Sichtbarkeit" tester angelegt, ist dieser nur sichtbar  wenn ein USER mit der Gruppe "tester" sind angemeldet hat. Eine angelegte Gruppe "Autoren" kann diesen Termin nicht sehen. Ausnahme, die Gruppe "Administrators" sieht alle Termine.

+ +

+ +Neben den vorgegebenen Felder können bis zu 9 eigene Felder mit 4 verschiedenen Feldtypen definiert werden. Diese "Eigenen Felder" werden dann angezeigt, wenn ein neuer Event angelegt wird. Die jeweiligen Eingaben werden in der im Backend festgelegten Form im Frontend angezeigt. Es können beliebig viele der 9 Felder verwendet werden, indem der Feldtyp ausgewählt und die Ausgabe im Feld-Template festgelegt wird. Dabei werden nur die Eingabefelder angezeigt, die auch aktiviert werden (also nicht auf "Nicht benutzt" stehen). Feldbezeichnung und Feld-Template können beliebig festgelegt werden. Es stehen die folgenden Feldtypen zur Verfügung:

+ +

+ +Textfeld:einzeiliges Eingabefeld (kurze Texte oder einzelne Sätze)
+Textarea: Langtext (mehrere Sätze)
+WB Link: Link zu einer anderen Seite auf derselben Website.
+E-Mail Link: Link zu einer anderen Seite auf derselben Website.
+Bild: Bild, das entweder hier hochgeladen oder in der Medienverwaltung ausgewählt wird. Das Bild kann automatisch auf eine bestimmte Größe verkleinert werden; diese Größe wird ganz oben auf der Eigene-Felder-Seite festgelegt.

+ +

Die Standard-Feldtemplate sind:

+ +

Textfeld / Textarea

+ +
<div class="field_line">
+   <div class="field_title">[CUSTOM_NAME]</div>
+   [CUSTOM_CONTENT]
+</div>
+ +

WB-Link

+ +

<div class="field_line">
+   <a href="[wblink[CUSTOM_CONTENT]]">[CUSTOM_NAME]</a>
+</div>

+ +

Bild

+ +
<div class="field_line">
+   <img src="[CUSTOM_CONTENT]" border ="0" alt="[CUSTOM_NAME]" />
+</div>
+ +

E-Mail-Link (Typ ist ein Textfeld!)

+ +
<div class="field_line">
+  <div class="field_title">[CUSTOM_NAME]</div>
+  <a href="mailto:[CUSTOM_CONTENT]">[CUSTOM_NAME]</a>
+</div>
+ +

Template

+ +

Im "Master-Template" wird das Layout für Kopf- und Fußzeile der Event-Übersichtsseite und die Detailseiten festgelegt. Zulässig sind Text, HTML und Droplets.

+ +

Kopf- und Fußzeile
+Standardmäßig sind Kopf- und Fußzeile der Event-Übersichtsseite leer, hier können Text und HTML-Code eingegeben werden, und natürlich auch Droplets. Zudem kann der ProCalendar-Tag [CALENDAR] hinterlegt werden, der über die gesamte zur Verfügung stehende Breite des Abschnitts einen Monatskalender mit Links zu den hinterlegten Eventdetails anzeigt.

+ +

Beitrag (Event-Detailseite)
+Das Detailseiten-Template kann ebenfalls Text, HTML, Droplets enthalten; sowie die folgenden ProCalendar-Tags: [NAME], [DATE_SIMPLE], [DATE_FULL], [CATEGORY], [CUSTOM1], [CUSTOM2], [CUSTOM3], [CUSTOM4], [CUSTOM5], [CUSTOM6], [CATEGORY], [CONTENT] und [BACK]. All diese Tags können, müssen aber nicht verwendet werden; auch die Reihenfolge ist beliebig.

+ +

Der Unterschied zwischen [DATE_SIMPLE] und [DATE_FULL] besteht darin, dass [DATE_SIMPLE] nur die reine Datumsangabe ohne HTML/CSS ausgibt. [DATE_FULL] generiert die Datumsangabe mit Formatierung:

+ +

<div class="field_line">
+   <div class="field_title">Start:</div>
+   01.10.2011
+</div>

+ +

Das Standard-Template für die Detailseiten sieht so aus:

+ +

<div class="event_details">
+   <h2>[NAME]</h2>
+   <div class="info_block">
+      [DATE_FULL]
+      [CUSTOM1]
+      [CUSTOM2]
+      [CUSTOM3]
+      [CUSTOM4]
+      [CUSTOM5]
+      [CUSTOM6]
+      [CATEGORY]
+   </div>
+   [CONTENT]
+</div>
+[BACK]

+ +

Durch die Kombination zwischen dem "Master-Template" und den "Feld-Templates" kann die Darstellung von Eventdetails flexibel an den jeweiligen Bedarf angepasst werden.
+CSS bearbeiten

+ +

Wie viele andere WebsiteBaker-Module können auch beim ProCalendar die Stylesheets für Frontend und Backend angepasst werden. Das setzt allerdings voraus, dass die CSS-Dateien beschreibbar sind, sonst können die Änderungen nicht gespeichert werden.

diff --git a/languages/support-EN.php b/languages/support-EN.php index cd86644..0abfeaa 100644 --- a/languages/support-EN.php +++ b/languages/support-EN.php @@ -1,47 +1,7 @@ - - Copyright (C) 2004-2006, Ryan Djurovich - - Website Baker 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. - - Website Baker 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. - - You should have received a copy of the GNU General Public License - along with Website Baker; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -require('../../../config.php'); - -// Include WB admin wrapper script -require(WB_PATH.'/modules/admin.php'); - -if (LANGUAGE_LOADED) { // load languagepack - if(file_exists(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php")) { // if exist proper language mutation - require_once(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php"); // load it - } else { - require_once(WB_PATH."/modules/procalendar/languages/EN.php"); // else use english - } -} - -?> - -
-

 

Options

The basic options you can set for an event are: -

-
-';" /> -print_footer(); -?> + + diff --git a/languages/support-NL.php b/languages/support-NL.php index 42cceb9..77a7e2d 100644 --- a/languages/support-NL.php +++ b/languages/support-NL.php @@ -1,43 +1,3 @@ - - Copyright (C) 2004-2006, Ryan Djurovich - - Website Baker 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. - - Website Baker 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. - - You should have received a copy of the GNU General Public License - along with Website Baker; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -require('../../../config.php'); - -// Include WB admin wrapper script -require(WB_PATH.'/modules/admin.php'); - -if (LANGUAGE_LOADED) { // load languagepack - if(file_exists(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php")) { // if exist proper language mutation - require_once(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php"); // load it - } else { - require_once(WB_PATH."/modules/procalendar/languages/EN.php"); // else use english - } -} - -?> - -
-

 

Opties

De basisopties die u kunt kiezen voor een gebeurtenis zijn: @@ -111,9 +71,4 @@


Wijzig CSS

Zoals veel andere WB-modules, biedt ProCalendar de gelegenheid om de stylesheets voor het beheer en de website ("backend" en "frontend") aan te passen. Zorg er wel voor dat de CSS-bestanden de juiste schrijfrechten hebben, anders worden de veranderingen niet opgeslagen. U krijgt overigens wel een foutmelding als dit het geval is.

-
-
-';" /> -print_footer(); -?> + diff --git a/lib/createBackup.php b/lib/createBackup.php new file mode 100644 index 0000000..10e2c1d --- /dev/null +++ b/lib/createBackup.php @@ -0,0 +1,124 @@ +'.PHP_EOL.\backup\text\SETNAMES))){ + throw new \Exception (sprintf('%s '.PHP_EOL.'Couldn\'t create %s',\backup\text\SETNAMES, '/sql/'.$sBackupName)); + } + $DbHandle = $database->DbHandle; + $mysqli = new mysql($DbHandle); + + $queryTables = $mysqli->query('SHOW TABLES'); + while($row = $queryTables->fetch_row()) { + $target_tables[] = $row[0]; + } + + $bCreateSelectedTables = (\is_array($aTables) && sizeof($aTables) ? true : false); + if($bCreateSelectedTables) { + $target_tables = array_intersect( $target_tables, $aTables); + } + + foreach($target_tables as $table) + { + $iFlag = 15; + $sTableTitle = ''; + $sInsertDrop = ''; + $sInsertTitle = ''; + + $sData = (!isset($sData) ? '' : $sData); +// INSERT INTO + if (($sTableFlags & \backup\text\DATA)==\backup\text\DATA){ + $sInsertTitle = sprintf(\backup\text\INSERTTITLE, $table); + } + if (($sTableFlags & \backup\text\FULL)==\backup\text\FULL){ + $sInsertTitle = sprintf(\backup\text\INSERTTITLE, $table); + } + $sGroup = ''; + $result = $mysqli->query('SELECT * FROM `'.$table.'`'); + $rows_num = mysqli_affected_rows($DbHandle); + $fields_amount = mysqli_field_count($DbHandle); + + for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) + { + while($row = $mysqli->fetchRow(MYSQLI_BOTH)) + { + $sCaption = ''; + if ($sGroup != $table){ +// change to an associative array + $sCaption = PHP_EOL.$sInsertTitle; + $aNumeric = []; + for ($i=0; $i<=$fields_amount; $i++) {$aNumeric[]=$i;} + $aRows = \array_diff_key($row,$aNumeric); + $aFields = \array_keys($aRows); +// add backticks to column + $add_backticks = + \array_walk( + $aFields, + function (&$val, &$key) use ($vars) { + $val = $vars[1].$val.$vars[1]; + }); +// prepare column list to add to INSERT INTO + $sInserts = ''.\implode(', ', $aFields).') '; + $sGroup = $table; + } + if ($st_counter == 0 ) { + $sTableName = str_replace($sTablePrefix,'{TABLE_PREFIX}',$table); +# if ($st_counter%100 == 0 || $st_counter == 0 ) { + $insert = 'INSERT INTO `'.$sTableName.'` ('.$sInserts.''; + } +// VALUE data row + $sData .= $sCaption; + $sData .= $insert.'VALUES ('; + for($j=0; $j<$fields_amount; $j++) { + $aFieldDetails = $result->fetch_field_direct($j); + $isInteger = \array_key_exists($aFieldDetails->type, \backup\text\NUMBERTYPES); + $row[$j] = \str_replace(["\n","\r"],["\\n","\\r"], \addslashes($row[$j]) ); + if (!$isInteger) { + if (isset($row[$j])) { + $sData .= '\''.$row[$j].'\''; + } else { + $sData .= '\'\''; + } + } else { + if (isset($row[$j])){ + $sData .= $row[$j]; + } else { + $sData .= 0; + } + } + if ($j<($fields_amount-1)) { + $sData.= ', '; + } + } // for($j=0; $j<$fields_amount; $j++) + $sData .=')'; +# if ($st_counter+1==$rows_num){ + if ((($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num){ + $sData .= ';'.PHP_EOL; + } else { + $sData .= ';'.PHP_EOL; + } + $st_counter++; + } // while row + } + } // foreach $table + + $content = $sData.PHP_EOL.'-- created '.date("Y-m-d H:i:s"); + if (!($sRetval = \file_put_contents($sAddonPath.'/sql/'.$sBackupName, $content, FILE_APPEND))){ + throw new \Exception (sprintf('Couldn\'t write %s ', '/sql/'.$sBackupName)); + } + + return $sRetval; + }); diff --git a/lib/date_formats.php b/lib/date_formats.php new file mode 100644 index 0000000..6ae0952 --- /dev/null +++ b/lib/date_formats.php @@ -0,0 +1,47 @@ +'timestamp', + '10'=>'date', + '11'=>'time', + '12'=>'datetime', + '13'=>'year', + '16'=>'bit', + //'252'is currently mapped to all text and blob types (MySQL 5.0.51a) + '253'=>'varchar', + '254'=>'char', + ]; +const NUMBERTYPES = [ + '1'=>'tinyint', + '2'=>'smallint', + '3'=>'int', + '4'=>'float', + '8'=>'bigint', + '9'=>'mediumint', + '5'=>'double', + '246'=>'decimal' + ]; + +const SETNAMES = PHP_EOL.'' + . '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;'.PHP_EOL + . '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;'.PHP_EOL + . '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;'.PHP_EOL + . '/*!40101 SET NAMES utf8 */;'.PHP_EOL.PHP_EOL + . 'SET NAMES utf8;'.PHP_EOL + . 'SET time_zone = \'+00:00\';'.PHP_EOL + . '-- SET foreign_key_checks = 0;'.PHP_EOL + . '-- SET sql_mode = \'NO_AUTO_VALUE_ON_ZERO\';'.PHP_EOL + . ''.PHP_EOL; + +const INSERTTITLE = '' + . '--'.PHP_EOL + . '-- Daten für Tabelle `%1$s`'.PHP_EOL + . '--'.PHP_EOL + . ''.PHP_EOL; + diff --git a/modify.php b/modify.php index bcea993..5046430 100644 --- a/modify.php +++ b/modify.php @@ -21,38 +21,40 @@ */ -if (!defined('WB_PATH')) exit("Cannot access this file directly"); +/* -------------------------------------------------------- */ +// Must include code to stop this file being accessed directly +if (!defined('SYSTEM_RUN')) { header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found'); flush(); exit; } +/* -------------------------------------------------------- */ +if (!function_exists('make_dir')){require(WB_PATH.'/framework/functions.php');} + +if (!function_exists('isProcalcFuncLoaded')){require(__DIR__.'/functions.php');} -require_once(WB_PATH.'/framework/functions.php'); -require_once(__DIR__.'/functions.php'); $year = date("o"); $month = date("n"); $day = date("j"); +$today = date("Y-m-d"); -/* -$month=date("n"); -$year=date("Y"); -$day=date("j"); -*/ // $day = ""; if ((isset($_GET['day']))and($_GET['day']!="")) { - $day = $_GET['day']; + $day = (int)$_GET['day']; +# $day = ($day<10 ? '0'.$day : $day); } if (isset($_GET['edit'])) { - $editMode = $_GET['edit']; + $editMode = $admin->StripCodeFromText($_GET['edit']); } else { $editMode = "no"; } if (isset($_GET['dayview'])) { $dayview = (int)$_GET['dayview']; } else { - $dayview = (int)0; + $dayview = 0; } -if ((isset($_GET['month']))and($_GET['month']!="")) { +if ((isset($_GET['month']))&&($_GET['month']!="")) { $month = (int)$_GET['month']; +# $month = ($month<10 ? '0'.$month : $month); } -if ((isset($_GET['year']))and((int)$_GET['year']!="-")) { +if ((isset($_GET['year']))&&((int)$_GET['year']!="-")) { $year = (int)$_GET['year']; } if (isset($_GET['show'])) { @@ -65,16 +67,23 @@ } else { $edit_id = 0; } - // Make calendar images directory - if (!is_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/')){ make_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/');} +// Make calendar images directory +if (!is_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/')){ make_dir(WB_PATH.MEDIA_DIRECTORY.'/calendar/');} $tm_start = "$year-$month-1"; $tm_end = "$year-$month-".DaysCount($month,$year); + +$tm_start = $year.'-'.$month.'-1'; +$tm_end = $year.'-'.$month.'-'.DaysCount($month,$year); + $actions = fillActionArray($tm_start, $tm_end, $section_id); $action_types = fillActionTypes($section_id); $IsBackend = ((isset($admin) || ($admin instanceof admin))?true:false); // change Luisehahne +$IsMonthOverview = $dayview; + +$localVariables = compact(array_keys(get_defined_vars())); // For some php reason this must be here and not in the functions file where it was. // If in functions the ckeditor will error with array_key_exists() expects parameter 2 to be array, null given in .../modules/ckeditor/include.php on line 182 @@ -89,14 +98,21 @@ function show_wysiwyg_editor($name,$id,$content,$width,$height) { } } else { $id_list=array("short","long"); - require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php'); +// require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php'); } } if (!function_exists('show_wysiwyg_editor')){require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');} -?>
+?>
-
\ No newline at end of file +
+ diff --git a/modify_recurrent_inc.php b/modify_recurrent_inc.php index 333cc6e..8657ea3 100644 --- a/modify_recurrent_inc.php +++ b/modify_recurrent_inc.php @@ -51,7 +51,7 @@ function date_to_jscal($day, $month, $year, $jscalFormat) { $rec_month_days = $rec_month_month = $rec_month_weekday_month =""; $rec_year_days = ""; $rec_rep_count = $rec_rep_count_checked = ""; -$rec_date_exclude1 = $rec_date_exclude2 = $rec_date_exclude3 = date($jscal_ifformat,$datetime_start); +$rec_date_exclude1 = $rec_date_exclude2 = $rec_date_exclude3 = date($jscal_ifformat,$datetime_start); if ($ret['rec_id'] > 0){ if ($ret['rec_day'] != ""){ $rec_day_checked='checked="checked"'; @@ -102,11 +102,14 @@ function date_to_jscal($day, $month, $year, $jscalFormat) { if ($ret['rec_exclude'] != ""){ $rec_exceptions_checked='checked="checked"'; $excludes = explode(";",$ret['rec_exclude']); - for ($i = 0; $i < 4; $i++) + for ($i = 0; $i < 4; $i++){ $excludes[$i] == "" ? $excludes[$i] = "" : $excludes[$i] = date($rec['useifformat'],strtotime($excludes[$i])); - $rec_date_exclude1='value="'.$excludes[0].'"'; - $rec_date_exclude2='value="'.$excludes[1].'"'; - $rec_date_exclude3='value="'.$excludes[2].'"'; + } +/* */ + $rec_date_exclude1=$excludes[0]; + $rec_date_exclude2=$excludes[1]; + $rec_date_exclude3=$excludes[2]; + }; } @@ -116,20 +119,20 @@ function date_to_jscal($day, $month, $year, $jscalFormat) { -
-
+
+ value="1"/> value="2"/> value="3"/> value="4"/> value="5" >
-
-
+
+ size="3" maxlength="3"/>
-
-
+
+ /> /> /> @@ -139,12 +142,12 @@ function date_to_jscal($day, $month, $year, $jscalFormat) { /> />
-
-
+
+
size="2" maxlength="2"/> - + size="2" maxlength="2"/>
-
 
+
 
size="2" maxlength="2"/>.
-
-
+
+
size="2" maxlength="2"/>.
-
 
+
 
-
-
- /> -   /> -   /> +
+ +    +    +   
diff --git a/modify_settings.php b/modify_settings.php index f07307d..e71a184 100644 --- a/modify_settings.php +++ b/modify_settings.php @@ -28,33 +28,61 @@ require(WB_PATH.'/modules/admin.php'); // include core functions of WB 2.7 to edit the optional module CSS files (frontend.css, backend.css) -include_once(WB_PATH .'/framework/module.functions.php'); - -if (LANGUAGE_LOADED) { // load languagepack - if(file_exists(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php")) { // if exist proper language mutation - require_once(WB_PATH."/modules/procalendar/languages/".LANGUAGE.".php"); // load it - } else { - require_once(WB_PATH."/modules/procalendar/languages/EN.php"); // else use english - } -} +if (!function_exists('edit_module_css')){include(WB_PATH .'/framework/module.functions.php');} + +if (is_readable(__DIR__.'/languages/EN.php')) {require(__DIR__.'/languages/EN.php');} +if (is_readable(__DIR__.'/languages/'.DEFAULT_LANGUAGE.'.php')) {require(__DIR__.'/languages/'.DEFAULT_LANGUAGE.'.php');} +if (is_readable(__DIR__.'/languages/'.LANGUAGE.'.php')) {require(__DIR__.'/languages/'.LANGUAGE.'.php');} + + + /** + * Generates the complementary color for a given color + * + * @param $color + * @return string + */ + $complementary = (function ($color) + { + $leadingHash = false; + //clear whitespaces just to be shure + $color = trim($color); + //cut leading # + if (strpos($color, "#") !== false) { + $color = substr($color, 1); + $leadingHash = true; + } + //check if valid color string + if (preg_match('/^[A-Fa-f0-9]+$/', $color)== 'false') { + return $leadingHash ? '#' . $color : $color; + } + $r1 = dechex((15 - (hexdec($color[0])))); + $r2 = dechex((15 - (hexdec($color[1])))); + $g1 = dechex((15 - (hexdec($color[2])))); + $g2 = dechex((15 - (hexdec($color[3])))); + $b1 = dechex((15 - (hexdec($color[4])))); + $b2 = dechex((15 - (hexdec($color[5])))); + $complementary = $r1 . $r2 . $g1 . $g2 . $b1 . $b2; + return $leadingHash ? '#' . $complementary : $complementary; + }); + $fillvalue = ""; $group_id = 0; -if (isset($_GET['group_id']) && is_numeric($_GET['group_id'])) $group_id = $_GET['group_id']; - +$group_id = intval(isset($_GET['group_id']) && is_numeric($_GET['group_id'])? $_GET['group_id']:0); // Added PCWacht // moved to one place // Fetch all settings from db -$sql = "SELECT * FROM ".TABLE_PREFIX."mod_procalendar_settings WHERE section_id=$section_id "; -$db = $database->query($sql); +$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_procalendar_settings` ' +. 'WHERE `section_id`='.$section_id.' '; +if (!$db = $database->query($sql)){} $Sday=0; $Utime =0; $Uformat = ''; $Uifformat = ''; if ($db->numRows() > 0) { - while ($rec = $db->fetchRow(MYSQLI_ASSOC)) { + if ($rec = $db->fetchRow(MYSQLI_ASSOC)) { $startday = $rec["startday"]; $usetime = $rec["usetime"]; $onedate = $rec["onedate"]; @@ -62,10 +90,13 @@ $useifformat = $rec["useifformat"]; } } -?> - - - - - -
+/* + $template = new Template(dirname($admin->correct_theme_source('preferences.htt'))); + $template->set_file( 'page', 'preferences.htt' ); + $template->set_block( 'page', 'main_block', 'main' ); +*/ +?>
+
@@ -73,9 +104,11 @@

+ - - + + - + + + - - + + - - + + - - - + + + +
+
+ +
+ +
+ +
 
 
-
+ +

+ - - - - - - +
- + - + +
-
-

- - "> - . -
-
- -

+
+
+
- +
- + - - - + + - + + +

- + +?> + + +
+
+ +
+
+ + +
> +
+ > +
-
-
-
-
- +
+ +';} ?> +
+ +
+ + print_footer(); +// {onFineChange:'update(this)'} \ No newline at end of file diff --git a/save.php b/save.php index 369ce04..0d1f5ef 100644 --- a/save.php +++ b/save.php @@ -20,196 +20,29 @@ */ if (!isset($_POST['cal_id'])) {exit("Cannot access this file directly");} -require (dirname(dirname(__DIR__ )).'/config.php'); -$update_when_modified = true; -require (WB_PATH.'/modules/admin.php'); -// Include WB functions file -if (!function_exists('make_dir')){require(WB_PATH.'/framework/functions.php');} +if (!defined('SYSTEM_RUN')) {require( (dirname(dirname((__DIR__)))).'/config.php');} + $update_when_modified = true; + require (WB_PATH.'/modules/admin.php'); + // Include WB functions file + if (!function_exists('make_dir')){require(WB_PATH.'/framework/functions.php');} + if (!function_exists('isProcalcFuncLoaded')){require(__DIR__.'/functions.php');} - // - function replaceUrl($sTmp){ - $sAppUrl = WB_URL; - $sRelUrl = preg_replace('/^https?:\/\/[^\/]+(.*)/is', '\1', WB_URL); - $sDocumentRootUrl = str_replace($sRelUrl, '', WB_URL); - $sMediaUrl = WB_URL.MEDIA_DIRECTORY; - $aPatterns = array( - '/(<[^>]*?=\s*\")(\/+)([^\"]*?\"[^>]*?)/is', - '/(<[^>]*=\s*")('.preg_quote($sMediaUrl, '/').')([^">]*".*>)/siU', - '/([^>]*\s*)('.preg_quote($sMediaUrl, '/').')/siU', - '/([^>]*\s*)('.preg_quote($sAppUrl, '/').')/siU', - ); - $aReplacements = array( - '\1'.$sDocumentRootUrl.'/\3', - '$1{SYSVAR:MEDIA_REL}$3', - '$1{SYSVAR:AppUrl.MediaDir}$3', // MEDIA_REL - '$1{SYSVAR:AppUrl}$3', - ); - $sTmp = preg_replace($aPatterns, $aReplacements, $sTmp); - return $sTmp; - } - -$success = true; -$out = ""; -$cal_id = (int)$admin->get_post('cal_id'); -$deleteaction = $admin->get_post('delete'); -$SaveAsNew = $admin->get_post('saveasnew'); -$overwrite = $admin->get_post('overwrite'); -$edit_overwrite = $admin->get_post('edit_overwrite'); -$js_start_time = $admin->get_post('date1'); -$js_end_time = $admin->get_post('date2'); -$time_start = $admin->get_post('time_start'); -$time_end = $admin->get_post('time_end'); -$jscal_format = $admin->get_post('jscal_format'); -$rec_by = $admin->get_post('rec_by'); -$rec_id_overwrite = (int)$admin->get_post('rec_id'); -$rec_id = $rec_count = 0; -$rec_type = $rec_days = $rec_weeks = $rec_months = $rec_years = $rec_exclude = ""; -$jscalFormat = preg_split("#\s|/|\.|-#", $jscal_format); -//formats jscal date string to standard mysql format -function jscal_to_date($strDate, $jscalFormat) { - $formatedDate = ""; - if ($strDate != "") { - $dateParts = preg_split("#\s|/|\.|-#", $strDate); - $dateCombined = array_combine($jscalFormat, $dateParts); - $formatedDate = $dateCombined['yyyy']."-".$dateCombined['mm']."-".$dateCombined['dd']; - } - return $formatedDate; -} - -if (isset($overwrite)) { - $SaveAsNew = 1; - $rec_id = $rec_id_overwrite; -} - -if (isset($edit_overwrite)) {$rec_id = $rec_id_overwrite;} -if (isset($rec_by)) { - $rec_id = time(); - switch ($rec_by[0]) { - case 1: - $rec_type = "rec_day"; - $rec_days = $admin->get_post('rec_day_days'); - break; - case 2: - $rec_type = "rec_week"; - $rec_weeks = $admin->get_post('rec_week_weeks').'+'; - $rec_weeks .= implode(";", $admin->get_post('rec_week_weekday')); - $rec_weeks = (($rec_weeks == '+') ? '' : $rec_weeks); - break; - case 3: - $rec_type = "rec_month"; - if ($admin->get_post('rec_month_days') != "") { - $rec_months = $admin->get_post('rec_month_days').'+'; - $rec_months .= $admin->get_post('rec_month_month'); - } else { - $rec_months = $admin->get_post('rec_month_option_count').'+'; - $rec_months .= implode(";", $admin->get_post('rec_month_weekday')).'+'; - $rec_months .= $admin->get_post('rec_month_weekday_month'); - } - break; - case 4: - $rec_type = "rec_year"; - if ($admin->get_post('rec_year_days') != "") { - $rec_years = $admin->get_post('rec_year_days').'+'; - $rec_years .= $admin->get_post('rec_year_option_month'); - } else { - $rec_years = $admin->get_post('rec_year_option_count').'+'; - $rec_years .= implode(";", $admin->get_post('rec_year_weekday')).'+'; - $rec_years .= $admin->get_post('rec_year_option_month_weekday'); - } - break; - } - if (count($rec_by) == 2) { - for ($i = 1; $i < 4; $i++) { - $rec_exclude .= jscal_to_date($admin->get_post('date_exclude'.$i), $jscalFormat).';'; + //formats jscal date string to standard mysql format + function jscal_to_date($strDate, $jscalFormat) { + $formatedDate = ""; + if ($strDate != "") { + $dateParts = preg_split("#\s|/|\.|-#", $strDate); + $dateCombined = array_combine($jscalFormat, $dateParts); + $formatedDate = $dateCombined['yyyy']."-".$dateCombined['mm']."-".$dateCombined['dd']; } + return $formatedDate; } - $rec_count = (int)$admin->get_post('rec_rep_count'); - $rec_never = $admin->get_post('rec_never'); - if (isset($rec_never)) {$rec_count = -1;} - -} -// Added PCWacht -// Didn't think of anything nicer, but this works as well -// First get first letter of date format, since we have only 3 choices, d, m, Y and rebuild date as yyyy-mm-dd -$format = substr($jscal_format, 0, 1); -if ($format == 'd') { - $js_end_day = substr($js_end_time, 0, 2); - $js_end_month = substr($js_end_time, 3, 2); - $js_end_year = substr($js_end_time, 6, 4); - $js_start_day = substr($js_start_time, 0, 2); - $js_start_month = substr($js_start_time, 3, 2); - $js_start_year = substr($js_start_time, 6, 4); -} elseif ($format == 'm') { - $js_end_day = substr($js_end_time, 3, 2); - $js_end_month = substr($js_end_time, 0, 2); - $js_end_year = substr($js_end_time, 6, 4); - $js_start_day = substr($js_start_time, 3, 2); - $js_start_month = substr($js_start_time, 0, 2); - $js_start_year = substr($js_start_time, 6, 4); -} else { - $js_end_day = substr($js_end_time, 8, 2); - $js_end_month = substr($js_end_time, 5, 2); - $js_end_year = substr($js_end_time, 0, 4); - $js_start_day = substr($js_start_time, 8, 2); - $js_start_month = substr($js_start_time, 5, 2); - $js_start_year = substr($js_start_time, 0, 4); -} -/* -$date_start = $js_start_year-$js_start_month-$js_start_day; -$date_end = $js_end_year-$js_end_month-$js_end_day; -*/ -$date_start = (jscal_to_date($js_start_time, $jscalFormat)); -$date_end = (jscal_to_date($js_end_time, $jscalFormat)); - -if (isset($deleteaction)) { - //if recurring, delete all overwrites too - $sql = "SELECT * FROM " . TABLE_PREFIX . "mod_procalendar_actions WHERE id='$cal_id'"; - $db = $database->query($sql); - $rec = $db->fetchRow(MYSQLI_ASSOC); - if ($rec['rec_id'] > 0 && ($rec['rec_day'] != "" || $rec['rec_week'] != "" || $rec['rec_month'] != "" || $rec['rec_year'] != "")){ - $sql = "DELETE FROM " . TABLE_PREFIX . "mod_procalendar_actions WHERE rec_id='".$rec['rec_id']."'"; - }else{ - $sql = "DELETE FROM " . TABLE_PREFIX . "mod_procalendar_actions WHERE id='$cal_id'"; - } - $database->query($sql); - $success &= !$database->is_error(); -} else { - $sql = "SELECT * FROM " . TABLE_PREFIX . "mod_procalendar_settings WHERE section_id='$section_id'"; - if ( $db = ($database->query($sql))) { - $rec = $db->fetchRow(MYSQLI_ASSOC); - // Added PCWacht - // Need to invers the firstday for calendar - $use_time = $rec['usetime']; - $onedate = $rec["onedate"]; - $usecustom1 = $rec["usecustom1"]; - $usecustom2 = $rec["usecustom2"]; - $usecustom3 = $rec["usecustom3"]; - $usecustom4 = $rec["usecustom4"]; - $usecustom5 = $rec["usecustom5"]; - $usecustom6 = $rec["usecustom6"]; - $usecustom7 = $rec["usecustom7"]; - $usecustom8 = $rec["usecustom8"]; - $usecustom9 = $rec["usecustom9"]; - $resize = $rec["resize"]; - } - $short = $admin->StripCodeFromText($admin->get_post('short')); -// $long = $admin->StripCodeFromText($admin->get_post('long')); - $short = replaceUrl($short); - - if (isset($SaveAsNew)) { - $cal_id = 0; - } else { - $cal_id = (int)$admin->get_post('cal_id'); - } - $section_id = (int)$admin->get_post('section_id'); - $page_id = (int)$admin->get_post('page_id'); - $name = $admin->StripCodeFromText($admin->get_post('name')); - // Check if the user uploaded an image - function checkimage($checkname, $custom) + function checkimage($checkname, $custom='') { global $admin, $resize, $MESSAGE; + if ($custom == '0') {$custom = '';} if (isset($_FILES[$checkname]['tmp_name']) && $_FILES[$checkname]['tmp_name'] != '') { @@ -238,97 +71,266 @@ function checkimage($checkname, $custom) rename($thumb_location, $new_filename); } } - return replaceUrl($st_filename); - } - $custom = replaceUrl($custom); - return $custom; + $custom = $st_filename; + } // + $sContent = ReplaceAbsoluteMediaUrl($custom); + return $sContent; + } // end function checkimage + +# $aParm = $oRequest->getParamNames(); +# $action = $oRequest->getParam('action', FILTER_SANITIZE_STRING); + + $success = true; + $out = ""; + $cal_id = (int)$admin->get_post('cal_id'); + $deleteaction = $admin->get_post('delete'); + $SaveAsNew = $admin->get_post('saveasnew'); + $overwrite = $admin->get_post('overwrite'); + $edit_overwrite = $admin->get_post('edit_overwrite'); + $js_start_time = $admin->get_post('date1'); + $js_end_time = $admin->get_post('date2'); + $time_start = $admin->get_post('time_start'); + $time_end = $admin->get_post('time_end'); + $jscal_format = $admin->get_post('jscal_format'); + $rec_by = $admin->get_post('rec_by'); + $rec_id_overwrite = (int)$admin->get_post('rec_id'); + $rec_id = $rec_count = 0; + $rec_type = $rec_days = $rec_weeks = $rec_months = $rec_years = $rec_exclude = ""; + $jscalFormat = preg_split("#\s|/|\.|-#", $jscal_format); + + if (isset($overwrite)) { + $SaveAsNew = 1; + $rec_id = $rec_id_overwrite; } - if ($usecustom1 <> 0) {$custom1 = $admin->get_post('custom1');} - if ($usecustom1 == 4) {$custom1 = checkimage('custom_image1', $custom1);} - if ($usecustom2 <> 0) {$custom2 = $admin->get_post('custom2');} - if ($usecustom2 == 4) {$custom2 = checkimage('custom_image2', $custom2);} - if ($usecustom3 <> 0) {$custom3 = $admin->get_post('custom3');} - if ($usecustom3 == 4) {$custom3 = checkimage('custom_image3', $custom3);} - if ($usecustom4 <> 0) {$custom4 = $admin->get_post('custom4');} - if ($usecustom4 == 4) {$custom4 = checkimage('custom_image4', $custom4);} - if ($usecustom5 <> 0) {$custom5 = $admin->get_post('custom5');} - if ($usecustom5 == 4) {$custom5 = checkimage('custom_image5', $custom5);} - if ($usecustom6 <> 0) {$custom6 = $admin->get_post('custom6');} - if ($usecustom6 == 4) {$custom6 = checkimage('custom_image6', $custom6);} - if ($usecustom7 <> 0) {$custom7 = $admin->get_post('custom7');} - if ($usecustom7 == 4) {$custom7 = checkimage('custom_image7', $custom7);} - if ($usecustom8 <> 0) {$custom8 = $admin->get_post('custom8');} - if ($usecustom8 == 4) {$custom8 = checkimage('custom_image8', $custom8);} - if ($usecustom9 <> 0) {$custom9 = $admin->get_post('custom9');} - if ($usecustom9 == 4) {$custom9 = checkimage('custom_image9', $custom9);} + if (isset($edit_overwrite)) {$rec_id = $rec_id_overwrite;} + if (isset($rec_by)) { + $rec_id = time(); + switch ($rec_by[0]) { + case 1: + $rec_type = "rec_day"; + $rec_days = $admin->get_post('rec_day_days'); + break; + case 2: + $rec_type = "rec_week"; + $rec_weeks = $admin->get_post('rec_week_weeks').'+'; + $rec_weeks .= implode(";", $admin->get_post('rec_week_weekday')); + $rec_weeks = (($rec_weeks == '+') ? '' : $rec_weeks); + break; + case 3: + $rec_type = "rec_month"; + if ($admin->get_post('rec_month_days') != "") { + $rec_months = $admin->get_post('rec_month_days').'+'; + $rec_months .= $admin->get_post('rec_month_month'); + } else { + $rec_months = $admin->get_post('rec_month_option_count').'+'; + $rec_months .= implode(";", $admin->get_post('rec_month_weekday')).'+'; + $rec_months .= $admin->get_post('rec_month_weekday_month'); + } + break; + case 4: + $rec_type = "rec_year"; + if ($admin->get_post('rec_year_days') != "") { + $rec_years = $admin->get_post('rec_year_days').'+'; + $rec_years .= $admin->get_post('rec_year_option_month'); + } else { + $rec_years = $admin->get_post('rec_year_option_count').'+'; + $rec_years .= implode(";", $admin->get_post('rec_year_weekday')).'+'; + $rec_years .= $admin->get_post('rec_year_option_month_weekday'); + } + break; + } + if (count($rec_by) == 2) { + for ($i = 1; $i < 4; $i++) { + $rec_exclude .= jscal_to_date($admin->get_post('date_exclude'.$i), $jscalFormat).';'; + } + } + + $rec_count = (int)$admin->get_post('rec_rep_count'); + $rec_never = $admin->get_post('rec_never'); + if (isset($rec_never)) {$rec_count = -1;} - $acttype = (int)$admin->get_post('acttype'); - $public_stat = $admin->get_post('public_stat'); - if (strlen($date_start) == 0) {$date_start = date("Y-m-d");} - if (strlen($time_start) == 0) {$time_start = "00:00";} - if ((int)$js_end_day == 0 || (int)$js_end_month == 0 || (int)$js_end_year == 0) { - $date_end = $date_start; - } else { - $date_end = $date_end; } - if (strlen($time_end) == 0) {$time_end = "00:00";} - if (!$onedate) {$date_end = $date_start;} - // Check dates, make end equal to start if start > end - $begin = $date_start . ' '.$time_start; - $end = $date_end . ' '.$time_end; - if ($begin > $end) { - $date_end = $date_start; - $time_end = $time_start; +// Added PCWacht +// Didn't think of anything nicer, but this works as well +// First get first letter of date format, since we have only 3 choices, d, m, Y and rebuild date as yyyy-mm-dd + $format = substr($jscal_format, 0, 1); + if ($format == 'd') { + $js_end_day = substr($js_end_time, 0, 2); + $js_end_month = substr($js_end_time, 3, 2); + $js_end_year = substr($js_end_time, 6, 4); + $js_start_day = substr($js_start_time, 0, 2); + $js_start_month = substr($js_start_time, 3, 2); + $js_start_year = substr($js_start_time, 6, 4); + } elseif ($format == 'm') { + $js_end_day = substr($js_end_time, 3, 2); + $js_end_month = substr($js_end_time, 0, 2); + $js_end_year = substr($js_end_time, 6, 4); + $js_start_day = substr($js_start_time, 3, 2); + $js_start_month = substr($js_start_time, 0, 2); + $js_start_year = substr($js_start_time, 6, 4); + } else { + $js_end_day = substr($js_end_time, 8, 2); + $js_end_month = substr($js_end_time, 5, 2); + $js_end_year = substr($js_end_time, 0, 4); + $js_start_day = substr($js_start_time, 8, 2); + $js_start_month = substr($js_start_time, 5, 2); + $js_start_year = substr($js_start_time, 0, 4); } - $description = $admin->get_post('description'); - $owner = (int)$admin->get_post('owner'); - if (trim($name) != "") { - if ($cal_id == 0) { - $sqlWhere = ''; - $sql = "INSERT INTO " . TABLE_PREFIX . "mod_procalendar_actions SET "; - $sql .= "section_id='$section_id', "; - $sql .= "page_id='$page_id', "; - $sql .= "owner='$owner', "; +/* +$date_start = $js_start_year-$js_start_month-$js_start_day; +$date_end = $js_end_year-$js_end_month-$js_end_day; +*/ + $date_start = (jscal_to_date($js_start_time, $jscalFormat)); + $date_end = (jscal_to_date($js_end_time, $jscalFormat)); + $js_back = ADMIN_URL . '/pages/modify.php?page_id='.$page_id.'&month='.date('m').'&year='.date('Y') . ''; + + if (isset($deleteaction)) { + //if recurring, delete all overwrites too + $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_actions` WHERE `id`=".(int)$cal_id; + $db = $database->query($sql); + $rec = $db->fetchRow(MYSQLI_ASSOC); + if ($rec['rec_id'] > 0 && ($rec['rec_day'] != "" || $rec['rec_week'] != "" || $rec['rec_month'] != "" || $rec['rec_year'] != "")){ + $sql = "DELETE FROM `" . TABLE_PREFIX . "mod_procalendar_actions` WHERE `rec_id`='".$rec['rec_id']."'"; + }else{ + $sql = "DELETE FROM `" . TABLE_PREFIX . "mod_procalendar_actions` WHERE `id`=".(int)$cal_id; + } + $database->query($sql); + $success &= !$database->is_error(); + if ($database->is_error()) { + $admin->print_error($sql.'
'.$database->get_error(), $js_back); } else { - $sqlWhere = "WHERE id='$cal_id'"; - $sql = "UPDATE " . TABLE_PREFIX . "mod_procalendar_actions SET "; + $admin->print_success($MESSAGE['PAGES_DELETED'], $js_back); + } + } else { + $sql = "SELECT * FROM `" . TABLE_PREFIX . "mod_procalendar_settings` WHERE `section_id`=".(int)$section_id; + if ( $db = ($database->query($sql))) { + $rec = $db->fetchRow(MYSQLI_ASSOC); + // Added PCWacht + // Need to invers the firstday for calendar + $use_time = $rec['usetime']; + $onedate = $rec["onedate"]; + $usecustom1 = $rec["usecustom1"]; + $usecustom2 = $rec["usecustom2"]; + $usecustom3 = $rec["usecustom3"]; + $usecustom4 = $rec["usecustom4"]; + $usecustom5 = $rec["usecustom5"]; + $usecustom6 = $rec["usecustom6"]; + $usecustom7 = $rec["usecustom7"]; + $usecustom8 = $rec["usecustom8"]; + $usecustom9 = $rec["usecustom9"]; + $resize = $rec["resize"]; } - $sql .= '`name` =\''.$database->escapeString($name) . '\', ' - . 'custom1 =\''.$database->escapeString($usecustom1 <> 0 ? $custom1 : ''). '\', ' - . 'custom2 =\''.$database->escapeString($usecustom2 <> 0 ? $custom2 : ''). '\', ' - . 'custom3 =\''.$database->escapeString($usecustom3 <> 0 ? $custom3 : ''). '\', ' - . 'custom4 =\''.$database->escapeString($usecustom4 <> 0 ? $custom4 : ''). '\', ' - . 'custom5 =\''.$database->escapeString($usecustom5 <> 0 ? $custom5 : ''). '\', ' - . 'custom6 =\''.$database->escapeString($usecustom6 <> 0 ? $custom6 : ''). '\', ' - . 'custom7 =\''.$database->escapeString($usecustom7 <> 0 ? $custom7 : ''). '\', ' - . 'custom8 =\''.$database->escapeString($usecustom8 <> 0 ? $custom8 : ''). '\', ' - . 'custom9 =\''.$database->escapeString($usecustom9 <> 0 ? $custom9 : ''). '\', ' - . 'acttype ='.(int)$acttype . ', ' - . 'public_stat =\''.$database->escapeString($public_stat).'\', ' - . 'date_start =\''.$date_start . '\', ' - . 'date_end =\''.$date_end . '\', ' - . 'time_start =\''.$time_start . '\', ' - . 'time_end =\''.$time_end . '\', ' - . 'description =\''.$database->escapeString($short).'\', ' - . 'rec_id ='.(int)$rec_id . ', ' - . 'rec_day =\''.$rec_days . '\', ' - . 'rec_week =\''.$rec_weeks . '\', ' - . 'rec_month =\''.$rec_months . '\', ' - . 'rec_year =\''.$rec_years . '\', ' - . 'rec_count ='.(int)$rec_count . ', ' - . 'rec_exclude =\''.$rec_exclude . '\' '; - $js_back = ADMIN_URL . '/pages/modify.php?page_id='.$page_id . '&month='.$js_start_month . '&year='.$js_start_year . ''; - if (!$database->query($sql . $sqlWhere)) { - if ($database->is_error()) { - $admin->print_error($database->get_error(), $js_back); + + $short = $admin->StripCodeFromText($admin->get_post('short'),24); + $short = ReplaceAbsoluteMediaUrl($short); + if (isset($SaveAsNew)) { + $cal_id = 0; + } else { + $cal_id = (int)$admin->get_post('cal_id'); + } + + $section_id = (int)$admin->get_post('section_id'); + $page_id = (int)$admin->get_post('page_id'); + $name = $admin->StripCodeFromText($admin->get_post('name')); + + if ($usecustom1 <> 0) {$custom1 = $admin->StripCodeFromText($admin->get_post('custom1'));} + if ($usecustom1 == 4) {$custom1 = checkimage('custom_image1', $custom1);} + + if ($usecustom2 <> 0) {$custom2 = $admin->StripCodeFromText($admin->get_post('custom2'));} + if ($usecustom2 == 4) {$custom2 = checkimage('custom_image2', $custom2);} + if ($usecustom3 <> 0) {$custom3 = $admin->StripCodeFromText($admin->get_post('custom3'));} + if ($usecustom3 == 4) {$custom3 = checkimage('custom_image3', $custom3);} + if ($usecustom4 <> 0) {$custom4 = $admin->StripCodeFromText($admin->get_post('custom4'));} + if ($usecustom4 == 4) {$custom4 = checkimage('custom_image4', $custom4);} + if ($usecustom5 <> 0) {$custom5 = $admin->StripCodeFromText($admin->get_post('custom5'));} + if ($usecustom5 == 4) {$custom5 = checkimage('custom_image5', $custom5);} + if ($usecustom6 <> 0) {$custom6 = $admin->StripCodeFromText($admin->get_post('custom6'));} + if ($usecustom6 == 4) {$custom6 = checkimage('custom_image6', $custom6);} + if ($usecustom7 <> 0) {$custom7 = $admin->StripCodeFromText($admin->get_post('custom7'));} + if ($usecustom7 == 4) {$custom7 = checkimage('custom_image7', $custom7);} + if ($usecustom8 <> 0) {$custom8 = $admin->StripCodeFromText($admin->get_post('custom8'));} + if ($usecustom8 == 4) {$custom8 = checkimage('custom_image8', $custom8);} + if ($usecustom9 <> 0) {$custom9 = $admin->StripCodeFromText($admin->get_post('custom9'));} + if ($usecustom9 == 4) {$custom9 = checkimage('custom_image9', $custom9);} + + $acttype = (int)$admin->get_post('acttype'); + $public_stat = $admin->StripCodeFromText($admin->get_post('public_stat')); + + if (strlen($date_start) == 0) {$date_start = date("Y-m-d");} + if (strlen($time_start) == 0) {$time_start = "00:00";} + + if ((int)$js_end_day == 0 || (int)$js_end_month == 0 || (int)$js_end_year == 0) { + $date_end = $date_start; + } else { + $date_end = $date_end; + } + + if (strlen($time_end) == 0) {$time_end = "00:00";} + if ($onedate) {$date_end = $date_start;} + // Check dates, make end equal to start if start > end + $begin = $date_start.' '.$time_start; + $end = $date_end.' '.$time_end; + if ($begin > $end) { + $date_end = $date_start; + $time_end = $time_start; + } + +# $description = $admin->StripCodeFromText($admin->get_post('description'),24); + + $owner = (int)$admin->get_post('owner'); + $sql = '`'; + + if (trim($name) != "") { + if ($cal_id == 0) { + $sqlWhere = ''; + $sql = 'INSERT INTO `'.TABLE_PREFIX.'mod_procalendar_actions` SET '; + $sql .= '`section_id`='.$section_id.', '; + $sql .= '`page_id`='.$page_id.', '; + $sql .= '`owner`='.$owner.', '; + } else { + $sqlWhere = 'WHERE `id`='.$cal_id.''; + $sql = 'UPDATE `'.TABLE_PREFIX.'mod_procalendar_actions` SET '; + } + + $sql .= '`name` =\''.$database->escapeString($name) . '\', ' + . '`custom1` =\''.$database->escapeString($usecustom1 <> 0 ? $custom1 : ''). '\', ' + . '`custom2` =\''.$database->escapeString($usecustom2 <> 0 ? $custom2 : ''). '\', ' + . '`custom3` =\''.$database->escapeString($usecustom3 <> 0 ? $custom3 : ''). '\', ' + . '`custom4` =\''.$database->escapeString($usecustom4 <> 0 ? $custom4 : ''). '\', ' + . '`custom5` =\''.$database->escapeString($usecustom5 <> 0 ? $custom5 : ''). '\', ' + . '`custom6` =\''.$database->escapeString($usecustom6 <> 0 ? $custom6 : ''). '\', ' + . '`custom7` =\''.$database->escapeString($usecustom7 <> 0 ? $custom7 : ''). '\', ' + . '`custom8` =\''.$database->escapeString($usecustom8 <> 0 ? $custom8 : ''). '\', ' + . '`custom9` =\''.$database->escapeString($usecustom9 <> 0 ? $custom9 : ''). '\', ' + . '`acttype` ='.(int)$acttype . ', ' + . '`public_stat` =\''.$database->escapeString($public_stat).'\', ' + . '`date_start` =\''.$date_start . '\', ' + . '`date_end` =\''.$date_end . '\', ' + . '`time_start` =\''.$time_start . '\', ' + . '`time_end` =\''.$time_end . '\', ' + . '`description` =\''.$database->escapeString($short).'\', ' + . '`rec_id` ='.(int)$rec_id . ', ' + . '`rec_day` =\''.$rec_days . '\', ' + . '`rec_week` =\''.$rec_weeks . '\', ' + . '`rec_month` =\''.$rec_months . '\', ' + . '`rec_year` =\''.$rec_years . '\', ' + . '`rec_count` ='.(int)$rec_count . ', ' + . '`rec_exclude` =\''.$database->escapeString($rec_exclude). '\' ' + . $sqlWhere; + + if (!$database->query($sql)) { + if ($database->is_error()) { + $admin->print_error($sql.'
'.$database->get_error(), $js_back); + } else { + $admin->print_error($MESSAGE['PAGES_NOT_SAVED'], $js_back); + } } else { - $admin->print_success($MESSAGE['PAGES_NOT_SAVED'], $js_back); + $admin->print_success($MESSAGE['PAGES_SAVED'], $js_back); } } else { - $admin->print_success($MESSAGE['PAGES_SAVED'], $js_back); + $admin->print_error($MESSAGE['PAGES_NOT_SAVED'], $js_back); } } -} $admin->print_footer(); diff --git a/save_customs.php b/save_customs.php index 5d0dff6..0609cec 100644 --- a/save_customs.php +++ b/save_customs.php @@ -21,7 +21,7 @@ */ -require (dirname(dirname(__DIR__ )).'/config.php'); +if (!defined('SYSTEM_RUN')) {require( (dirname(dirname((__DIR__)))).'/config.php');} // Include WB admin wrapper script require(WB_PATH.'/modules/admin.php'); @@ -30,36 +30,38 @@ * $page_id = $admin->get_post('page_id'); * $section_id = $admin->get_post('section_id'); */ -$sBackLink = WB_URL.'/modules/'.basename(__DIR__).'/modify_settings.php?page_id='.(int)$page_id.'&section_id='.(int)$section_id; +if (!function_exists('isProcalcFuncLoaded')){require(__DIR__.'/functions.php');} -$usecustom1 = ($admin->get_post('usecustom1')); -$custom1 = trim($admin->get_post('custom1')); -$customtemplate1 = ($admin->get_post('customtemplate1')); -$usecustom2 = ($admin->get_post('usecustom2')); -$custom2 = trim($admin->get_post('custom2')).''; -$customtemplate2 = $admin->get_post('customtemplate2'); -$usecustom3 = $admin->get_post('usecustom3'); -$custom3 = trim($admin->get_post('custom3')).''; -$customtemplate3 = $admin->get_post('customtemplate3'); -$usecustom4 = ($admin->get_post('usecustom4')); -$custom4 = trim($admin->get_post('custom4')).''; -$customtemplate4 = $admin->get_post('customtemplate4'); -$usecustom5 = ($admin->get_post('usecustom5')); -$custom5 = trim($admin->get_post('custom5')).''; -$customtemplate5 = $admin->get_post('customtemplate5'); -$usecustom6 = $admin->get_post('usecustom6'); -$custom6 = trim($admin->get_post('custom6')).''; -$customtemplate6 = $admin->get_post('customtemplate6'); -$usecustom7 = $admin->get_post('usecustom7'); -$custom7 = trim($admin->get_post('custom7')).''; -$customtemplate7 = $admin->get_post('customtemplate7'); -$usecustom8 = $admin->get_post('usecustom8'); -$custom8 = trim($admin->get_post('custom8')).''; -$customtemplate8 = $admin->get_post('customtemplate8'); -$usecustom9 = $admin->get_post('usecustom9'); -$custom9 = trim($admin->get_post('custom9')).''; -$customtemplate9 = $admin->get_post('customtemplate9'); -$resize = $admin->get_post('resize'); +$sBackLink = WB_URL.'/modules/'.basename(__DIR__).'/modify_settings.php?page_id='.(int)$page_id.'§ion_id='.(int)$section_id; + +$usecustom1 = $admin->StripCodeFromText($admin->get_post('usecustom1'),24); +$custom1 = trim($admin->StripCodeFromText($admin->get_post('custom1'),24)); +$customtemplate1 = $admin->StripCodeFromText($admin->get_post('customtemplate1'),24); +$usecustom2 = $admin->StripCodeFromText($admin->get_post('usecustom2'),24); +$custom2 = trim($admin->StripCodeFromText($admin->get_post('custom2'),24)).''; +$customtemplate2 = $admin->StripCodeFromText($admin->get_post('customtemplate2'),24); +$usecustom3 = $admin->StripCodeFromText($admin->get_post('usecustom3'),24); +$custom3 = trim($admin->StripCodeFromText($admin->get_post('custom3'),24)).''; +$customtemplate3 = $admin->StripCodeFromText($admin->get_post('customtemplate3'),24); +$usecustom4 = $admin->StripCodeFromText($admin->get_post('usecustom4'),24); +$custom4 = trim($admin->StripCodeFromText($admin->get_post('custom4'),24)).''; +$customtemplate4 = $admin->StripCodeFromText($admin->get_post('customtemplate4'),24); +$usecustom5 = $admin->StripCodeFromText($admin->get_post('usecustom5'),24); +$custom5 = trim($admin->StripCodeFromText($admin->get_post('custom5'),24)).''; +$customtemplate5 = $admin->StripCodeFromText($admin->get_post('customtemplate5'),24); +$usecustom6 = $admin->StripCodeFromText($admin->get_post('usecustom6'),24); +$custom6 = trim($admin->StripCodeFromText($admin->get_post('custom6'),24)).''; +$customtemplate6 = $admin->StripCodeFromText($admin->get_post('customtemplate6'),24); +$usecustom7 = $admin->StripCodeFromText($admin->get_post('usecustom7'),24); +$custom7 = trim($admin->StripCodeFromText($admin->get_post('custom7'),24)).''; +$customtemplate7 = $admin->StripCodeFromText($admin->get_post('customtemplate7'),24); +$usecustom8 = $admin->StripCodeFromText($admin->get_post('usecustom8'),24); +$custom8 = trim($admin->StripCodeFromText($admin->get_post('custom8'),24)).''; +$customtemplate8 = $admin->StripCodeFromText($admin->get_post('customtemplate8'),24); +$usecustom9 = $admin->StripCodeFromText($admin->get_post('usecustom9'),24); +$custom9 = trim($admin->StripCodeFromText($admin->get_post('custom9'),24)).''; +$customtemplate9 = $admin->StripCodeFromText($admin->get_post('customtemplate9'),24); +$resize = (int)$admin->get_post('resize'); $sql = '' . 'UPDATE `'.TABLE_PREFIX.'mod_procalendar_settings` SET' @@ -90,15 +92,15 @@ . '`usecustom9`=\''.$database->escapeString($usecustom9).'\',' . '`customtemplate9`=\''.$database->escapeString($customtemplate9).'\',' . '`custom9`=\''.$database->escapeString($custom9).'\',' - . '`resize`=\''.$database->escapeString($resize).'\' ' + . '`resize`= '.(int)$database->escapeString($resize).' ' . 'WHERE `section_id`='.(int)$section_id.''; -if (!$database->query($sql)||$database->is_error()) -{ - $admin->print_error($database->get_error(), $sBackLink); -} else { - $admin->print_success($TEXT['SUCCESS'], $sBackLink); -} + if (!$database->query($sql)||$database->is_error()) + { + $admin->print_error($database->get_error(), $sBackLink); + } else { + $admin->print_success($TEXT['SUCCESS'], $sBackLink); + } -$admin->print_footer(); + $admin->print_footer(); diff --git a/save_layout.php b/save_layout.php index 0e425b9..073d06d 100644 --- a/save_layout.php +++ b/save_layout.php @@ -1,56 +1,55 @@ - - Copyright (C) 2004-2006, Ryan Djurovich - - Website Baker 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. - - Website Baker 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. - - You should have received a copy of the GNU General Public License - along with Website Baker; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -require('../../config.php'); - - -// Include WB admin wrapper script -require(WB_PATH.'/modules/admin.php'); - -$page_id = $admin->get_post('page_id'); -$section_id = $admin->get_post('section_id'); -$type = $admin->get_post('type'); - -$header = $admin->get_post_escaped('header'); -$footer = $admin->get_post_escaped('footer'); -$posttempl = $admin->get_post_escaped('posttempl'); - - -$sql = "UPDATE "; -$sql .= TABLE_PREFIX."mod_procalendar_settings SET "; // create rest of the sql-query -$sql .= "header='$header', "; -$sql .= "footer='$footer', "; -$sql .= "posttempl='$posttempl' "; -$sql .= " WHERE section_id=$section_id"; - -$database->query($sql); - -if($database->is_error()) { - $admin->print_error($database->get_error(), WB_URL."/modules/procalendar/modify_settings.php?page_id=$page_id§ion_id=$section_id"); -} else { - $admin->print_success($TEXT['SUCCESS'], WB_URL."/modules/procalendar/modify_settings.php?page_id=$page_id§ion_id=$section_id"); -} - -$admin->print_footer(); - + + Copyright (C) 2004-2006, Ryan Djurovich + + Website Baker 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. + + Website Baker 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. + + You should have received a copy of the GNU General Public License + along with Website Baker; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ +if (!defined('SYSTEM_RUN')) {require( (dirname(dirname((__DIR__)))).'/config.php');} + +// Include WB admin wrapper script +require(WB_PATH.'/modules/admin.php'); +if (!function_exists('isProcalcFuncLoaded')){require(__DIR__.'/functions.php');} +/* +$page_id = (int)$admin->get_post('page_id'); +$section_id = (int)$admin->get_post('section_id'); +*/ + $type = $admin->get_post('type'); + $sBackLink = WB_URL.'/modules/procalendar/modify_settings.php?page_id='.$page_id.'§ion_id='.$section_id.''; + + $header = $admin->StripCodeFromText($admin->get_post('header')); + $footer = $admin->StripCodeFromText($admin->get_post('footer')); + $posttempl = $admin->StripCodeFromText($admin->get_post('posttempl')); + + $sql = 'UPDATE `'.TABLE_PREFIX.'mod_procalendar_settings` SET ' + . '`header` = \''.$database->escapeString($header).'\', ' + . '`footer` = \''.$database->escapeString($footer).'\', ' + . '`posttempl` = \''.$database->escapeString($posttempl).'\' ' + . 'WHERE `section_id` = '.(int)$section_id.' ' + . ''; + if ($database->query($sql)) { + $admin->print_success($TEXT['SUCCESS'], $sBackLink); + } + + if($database->is_error()) { + $admin->print_error($database->get_error(), $sBackLink); + } + +$admin->print_footer(); + ?> \ No newline at end of file diff --git a/save_settings.php b/save_settings.php index cf2162f..009c1c4 100644 --- a/save_settings.php +++ b/save_settings.php @@ -21,7 +21,7 @@ */ -require (dirname(dirname(__DIR__ )).'/config.php'); +if (!defined('SYSTEM_RUN')) {require( (dirname(dirname((__DIR__)))).'/config.php');} // Include WB admin wrapper script require(WB_PATH.'/modules/admin.php'); @@ -34,52 +34,47 @@ case "change_eventgroup": $group_id = $admin->get_post('group_id'); - $group_name = $admin->get_post('group_name'); + $group_name = $admin->StripCodeFromText(($admin->get_post('group_name'))); $delete = $admin->get_post('delete'); - $format = $admin->get_post('action_background'); - $dayformat = $admin->get_post('dayformat'); - if (!isset($dayformat)) $dayformat = 0; + $format = $admin->StripCodeFromText($admin->get_post('action_background')); + $format = (($format[0] !== "#")?'#'.$format:$format); + + $dayformat = $admin->StripCodeFromText($admin->get_post('dayformat')); + if (!isset($dayformat)){ $dayformat = 0;} if ($delete) - { - $sql = "DELETE FROM ".TABLE_PREFIX."mod_procalendar_eventgroups WHERE id=$group_id"; + { + $sql = 'DELETE FROM `'.TABLE_PREFIX.'mod_procalendar_eventgroups` WHERE `id`='.$group_id; $database->query($sql); } else - { + { if($group_name != "") { - if (($group_id == 0)) - { - //echo "INSERT -> page_id: $page_id - group_name: $group_name
"; - $sql = "INSERT INTO "; - $sql .= TABLE_PREFIX."mod_procalendar_eventgroups SET "; - $sql .= "section_id='$section_id', "; - $sql .= "name='$group_name', "; - $sql .= "format='$format', "; - $sql .= "format_days='$dayformat' "; - } - else - { + $sqlSet = 'section_id='.$section_id.', ' + . '`name`= \''.$database->escapeString($group_name).'\', ' + . '`format`= \''.$database->escapeString($format).'\', ' + . '`format_days`= '.$dayformat.' ' + . ' '; + if (($group_id == 0)) + { + $sql = 'INSERT INTO `'.TABLE_PREFIX.'mod_procalendar_eventgroups` SET '.$sqlSet; + } + else + { //echo "UPDATE -> group_id:
"; - $sql = "UPDATE "; - $sql .= TABLE_PREFIX."mod_procalendar_eventgroups SET "; - $sql .= "section_id='$section_id', "; - $sql .= "name='$group_name', "; - $sql .= "format='$format', "; - $sql .= "format_days='$dayformat' "; - $sql .= " WHERE id=$group_id"; + $sql = 'UPDATE `'.TABLE_PREFIX.'mod_procalendar_eventgroups` SET '.$sqlSet + . 'WHERE id='.$group_id; } - - $database->query($sql); + if (!$database->query($sql)) {echo $sql.' ';} } } - break; +# break; case "startd": - $startday = $admin->get_post('startday'); - $onedate = $admin->get_post('onedate'); - $usetime = $admin->get_post('usetime'); + $startday = (int)$admin->get_post('startday'); + $onedate = (int)$admin->get_post('onedate'); + $usetime = (int)$admin->get_post('usetime'); $useformat = $admin->get_post('useformat'); switch ($useformat) { case "dd.mm.yyyy": @@ -125,29 +120,26 @@ $useifformat = "Y/m/d"; } - $sql = "UPDATE "; - $sql .= TABLE_PREFIX."mod_procalendar_settings SET "; // create rest of the sql-query - $sql .= "startday='$startday', "; - $sql .= "usetime='$usetime', "; - $sql .= "onedate='$onedate', "; - $sql .= "useformat='$useformat', "; - $sql .= "useifformat='$useifformat' "; - $sql .= " WHERE section_id=$section_id"; - + $sql = 'UPDATE `'.TABLE_PREFIX.'mod_procalendar_settings` SET ' + . '`startday` = '.$startday.', ' + . '`usetime` = '.$usetime.', ' + . '`onedate` = '.$onedate.', ' + . '`useformat` = \''.$database->escapeString($useformat).'\', ' + . '`useifformat` = \''.$database->escapeString($useifformat).'\' ' + . 'WHERE `section_id`='.$section_id; $database->query($sql); break; + } if($database->is_error()) { - $admin->print_error($database->get_error(), $js_back); + $admin->print_error($database->get_error().'
'.$sql, $js_back); } else { if ($type == "change_eventgroup" ) { $admin->print_success($TEXT['SUCCESS'], WB_URL."/modules/procalendar/modify_settings.php?page_id=".$page_id."§ion_id=".$section_id); } else { - $admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id); + $admin->print_success($MESSAGE['PAGES_SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id); } } - $admin->print_footer(); - diff --git a/sql/PLACEHOLDER b/sql/PLACEHOLDER new file mode 100644 index 0000000..9a12f06 --- /dev/null +++ b/sql/PLACEHOLDER @@ -0,0 +1 @@ +/* this file can be removed after installation */ \ No newline at end of file diff --git a/templates/PLACEHOLDER b/templates/PLACEHOLDER new file mode 100644 index 0000000..9a12f06 --- /dev/null +++ b/templates/PLACEHOLDER @@ -0,0 +1 @@ +/* this file can be removed after installation */ \ No newline at end of file diff --git a/templates/default/css/3/w3.css b/templates/default/css/3/w3.css new file mode 100644 index 0000000..245d9ff --- /dev/null +++ b/templates/default/css/3/w3.css @@ -0,0 +1,366 @@ +/* W3.CSS 3.03 Mar 2017 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent;-webkit-text-decoration-skip:objects} +a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px} +img{border-style:none}svg:not(:root){overflow:hidden} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em} +hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-input-placeholder{color:inherit;opacity:0.54} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1,h2,h3,h4,h5,h6,.w3-slim,.w3-wide{font-family:"Segoe UI",Arial,sans-serif} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px} +.w3-serif{font-family:"Times New Roman",Times,serif} +h1,h2,h3,h4,h5,h6{font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +img{margin-bottom:-5px}a{color:inherit} +.w3-image{max-width:100%;height:auto} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table} +.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd} +.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff} +.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc} +.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-btn-block,.w3-button{border:none;display:inline-block;outline:0;padding:6px 16px;vertical-align:middle;overflow:hidden;text-decoration:none!important;color:#fff;background-color:#000;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover,.w3-btn-block:hover,.w3-btn-floating:hover,.w3-btn-floating-large:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-button{color:#000;background-color:#f1f1f1;padding:8px 16px}.w3-button:hover{color:#000!important;background-color:#ccc!important} +.w3-btn,.w3-btn-floating,.w3-btn-floating-large,.w3-closenav,.w3-opennav,.w3-btn-block,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-btn-floating,.w3-btn-floating-large{display:inline-block;text-align:center;color:#fff;background-color:#000;position:relative;overflow:hidden;z-index:1;padding:0;border-radius:50%;cursor:pointer;font-size:24px} +.w3-btn-floating{width:40px;height:40px;line-height:40px}.w3-btn-floating-large{width:56px;height:56px;line-height:56px} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled,.w3-btn-floating:disabled,.w3-btn-floating-large:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn-block.w3-disabled:hover,.w3-btn:disabled:hover,.w3-btn-floating.w3-disabled:hover,.w3-btn-floating:disabled:hover, +.w3-btn-floating-large.w3-disabled:hover,.w3-btn-floating-large:disabled:hover{box-shadow:none} +.w3-btn-group .w3-btn{float:left}.w3-btn-block{width:100%} +.w3-btn-bar .w3-btn{box-shadow:none;background-color:inherit;color:inherit;float:left}.w3-btn-bar .w3-btn:hover{background-color:#ccc} +.w3-badge,.w3-tag,.w3-sign{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center} +.w3-badge{border-radius:50%} +ul.w3-ul{list-style-type:none;padding:0;margin:0}ul.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}ul.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-navbar{list-style-type:none;margin:0;padding:0;overflow:hidden} +.w3-navbar li{float:left}.w3-navbar li a,.w3-navitem,.w3-navbar li .w3-btn,.w3-navbar li .w3-input{display:block;padding:8px 16px}.w3-navbar li .w3-btn,.w3-navbar li .w3-input{border:none;outline:none;width:100%} +.w3-navbar li a:hover{color:#000;background-color:#ccc} +.w3-navbar .w3-dropdown-hover,.w3-navbar .w3-dropdown-click{position:static} +.w3-navbar .w3-dropdown-hover:hover,.w3-navbar .w3-dropdown-hover:first-child,.w3-navbar .w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-navbar a,.w3-topnav a,.w3-sidenav a,.w3-dropdown-content a,.w3-accordion-content a,.w3-dropnav a,.w3-navblock a{text-decoration:none!important} +.w3-navbar .w3-opennav.w3-right{float:right!important}.w3-topnav{padding:8px 8px} +.w3-navblock .w3-dropdown-hover:hover,.w3-navblock .w3-dropdown-hover:first-child,.w3-navblock .w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-navblock .w3-dropdown-hover,.w3-navblock .w3-dropdown-click{width:100%}.w3-navblock .w3-dropdown-hover .w3-dropdown-content,.w3-navblock .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-topnav a{padding:0 8px;border-bottom:3px solid transparent;-webkit-transition:border-bottom .25s;transition:border-bottom .25s} +.w3-topnav a:hover{border-bottom:3px solid #fff}.w3-topnav .w3-dropdown-hover a{border-bottom:0} +.w3-opennav,.w3-closenav{color:inherit}.w3-opennav:hover,.w3-closenav:hover{cursor:pointer;opacity:0.8} +.w3-btn,.w3-btn-floating,.w3-dropnav a,.w3-btn-floating-large,.w3-btn-block, .w3-navbar a,.w3-navblock a,.w3-sidenav a,.w3-pagination li a,.w3-hoverable tbody tr,.w3-hoverable li, +.w3-accordion-content a,.w3-dropdown-content a,.w3-dropdown-click:hover,.w3-dropdown-hover:hover,.w3-opennav,.w3-closenav,.w3-closebtn,*[class*="w3-hover-"] +{-webkit-transition:background-color .25s,color .15s,box-shadow .25s,opacity 0.25s,filter 0.25s,border 0.15s;transition:background-color .25s,color .15s,box-shadow .15s,opacity .25s,filter .25s,border .15s} +.w3-ripple:active{opacity:0.5}.w3-ripple{-webkit-transition:opacity 0s;transition:opacity 0s} +.w3-sidenav,.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-sidenav a,.w3-navblock a{padding:4px 2px 4px 16px}.w3-sidenav a:hover,.w3-navblock a:hover{background-color:#ccc;color:#000}.w3-sidenav a,.w3-dropnav a,.w3-navblock a{display:block} +.w3-sidenav .w3-dropdown-hover:hover,.w3-sidenav .w3-dropdown-hover:first-child,.w3-sidenav .w3-dropdown-click:hover,.w3-dropnav a:hover{background-color:#ccc;color:#000} +.w3-sidenav .w3-dropdown-hover,.w3-sidenav .w3-dropdown-click,.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-sidenav .w3-dropdown-hover .w3-dropdown-content,.w3-sidenav .w3-dropdown-click .w3-dropdown-content,.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;background-color:inherit;color:inherit;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}.w3-closebtn{text-decoration:none;float:right;font-size:24px;font-weight:bold;color:inherit} +.w3-closebtn:hover,.w3-closebtn:focus{color:#000;text-decoration:none;cursor:pointer} +.w3-pagination{display:inline-block;padding:0;margin:0}.w3-pagination li{display:inline} +.w3-pagination li a{text-decoration:none;color:#000;float:left;padding:8px 16px} +.w3-pagination li a:hover{background-color:#ccc} +.w3-input-group,.w3-group{margin-top:24px;margin-bottom:24px} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #808080;width:100%} +.w3-label{color:#009688}.w3-input:not(:valid)~.w3-validate{color:#f44336} +.w3-select{padding:9px 0;width:100%;color:#000;border:1px solid transparent;border-bottom:1px solid #009688} +.w3-select select:focus{color:#000;border:1px solid #009688}.w3-select option[disabled]{color:#009688} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block;z-index:1} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0} +.w3-dropdown-content a{padding:6px 16px;display:block} +.w3-dropdown-content a:hover{background-color:#ccc} +.w3-accordion{width:100%;cursor:pointer} +.w3-accordion-content{cursor:auto;display:none;position:relative;width:100%;margin:0;padding:0} +.w3-accordion-content a{padding:6px 16px;display:block}.w3-accordion-content a:hover{background-color:#ccc} +.w3-progress-container{width:100%;height:1.5em;position:relative;background-color:#f1f1f1} +.w3-progressbar{background-color:#757575;height:100%;position:absolute;line-height:inherit} +input[type=checkbox].w3-check,input[type=radio].w3-radio{width:24px;height:24px;position:relative;top:6px} +input[type=checkbox].w3-check:checked+.w3-validate,input[type=radio].w3-radio:checked+.w3-validate{color:#009688} +input[type=checkbox].w3-check:disabled+.w3-validate,input[type=radio].w3-radio:disabled+.w3-validate{color:#aaa} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;background-color:inherit;color:inherit;width:auto;border:none;outline:none;display:block} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{background-color:inherit;color:inherit;white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;background-color:inherit;color:inherit;border:none;outline:none;white-space:normal} +.w3-bar-block.w3-center .w3-bar-item{text-align:center} +.w3-block{display:block;width:100%} +.w3-responsive{overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,.w3-cell-row:before,.w3-cell-row:after, +.w3-topnav:after,.w3-topnav:before,.w3-clear:after,.w3-clear:before,.w3-btn-group:before,.w3-btn-group:after,.w3-btn-bar:before,.w3-btn-bar:after,.w3-bar:before,.w3-bar:after +{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%} +.w3-col.s2{width:16.66666%} +.w3-col.s3{width:24.99999%} +.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%} +.w3-col.s6{width:49.99999%} +.w3-col.s7{width:58.33333%} +.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%} +.w3-col.s10{width:83.33333%} +.w3-col.s11{width:91.66666%} +.w3-col.s12,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{width:99.99999%} +@media (min-width:601px){ +.w3-col.m1{width:8.33333%} +.w3-col.m2{width:16.66666%} +.w3-col.m3,.w3-quarter{width:24.99999%} +.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%} +.w3-col.m6,.w3-half{width:49.99999%} +.w3-col.m7{width:58.33333%} +.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%} +.w3-col.m10{width:83.33333%} +.w3-col.m11{width:91.66666%} +.w3-col.m12{width:99.99999%}} +@media (min-width:993px){ +.w3-col.l1{width:8.33333%} +.w3-col.l2{width:16.66666%} +.w3-col.l3,.w3-quarter{width:24.99999%} +.w3-col.l4,.w3-third{width:33.33333%} +.w3-col.l5{width:41.66666%} +.w3-col.l6,.w3-half{width:49.99999%} +.w3-col.l7{width:58.33333%} +.w3-col.l8,.w3-twothird{width:66.66666%} +.w3-col.l9,.w3-threequarter{width:74.99999%} +.w3-col.l10{width:83.33333%} +.w3-col.l11{width:91.66666%} +.w3-col.l12{width:99.99999%}} +.w3-content{max-width:980px;margin:auto} +.w3-rest{overflow:hidden} +.w3-layout-container,.w3-cell-row{display:table;width:100%}.w3-layout-row{display:table-row}.w3-layout-cell,.w3-layout-col,.w3-cell{display:table-cell} +.w3-layout-top,.w3-cell-top{vertical-align:top}.w3-layout-middle,.w3-cell-middle{vertical-align:middle}.w3-layout-bottom,.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-topnav a{display:block}.w3-navbar li:not(.w3-opennav){float:none;width:100%!important}.w3-navbar li.w3-right{float:none!important} +.w3-topnav .w3-dropdown-hover .w3-dropdown-content,.w3-navbar .w3-dropdown-click .w3-dropdown-content,.w3-navbar .w3-dropdown-hover .w3-dropdown-content,.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-topnav,.w3-navbar{text-align:center}.w3-hide-small{display:none!important}.w3-layout-col,.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important} +.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important} +.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-vertical{word-break:break-all;line-height:1;text-align:center;width:0.6em} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important} +.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%!important} +.w3-round-small{border-radius:2px!important}.w3-round,.w3-round-medium{border-radius:4px!important} +.w3-round-large{border-radius:8px!important}.w3-round-xlarge{border-radius:16px!important} +.w3-round-xxlarge{border-radius:32px!important}.w3-round-jumbo{border-radius:64px!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-margin{margin:16px!important}.w3-margin-0{margin:0!important} +.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-section{margin-top:16px!important;margin-bottom:16px!important} +.w3-padding-tiny{padding:2px 4px!important}.w3-padding-small{padding:4px 8px!important} +.w3-padding-medium,.w3-padding,.w3-form{padding:8px 16px!important} +.w3-padding-large{padding:12px 24px!important}.w3-padding-xlarge{padding:16px 32px!important} +.w3-padding-xxlarge{padding:24px 48px!important}.w3-padding-jumbo{padding:32px 64px!important} +.w3-padding-4{padding-top:4px!important;padding-bottom:4px!important} +.w3-padding-6{padding-top:6px!important;padding-bottom:6px!important} +.w3-padding-8{padding-top:8px!important;padding-bottom:8px!important} +.w3-padding-12{padding-top:12px!important;padding-bottom:12px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important} +.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important} +.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-padding-128{padding-top:128px!important;padding-bottom:128px!important} +.w3-padding-0{padding:0!important} +.w3-padding-top{padding-top:8px!important}.w3-padding-bottom{padding-bottom:8px!important} +.w3-padding-left{padding-left:16px!important}.w3-padding-right{padding-right:16px!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-spin{animation:w3-spin 2s infinite linear;-webkit-animation:w3-spin 2s infinite linear} +@-webkit-keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} +@keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} +.w3-container{padding:0.01em 16px} +.w3-panel{padding:0.01em 16px;margin-top:16px!important;margin-bottom:16px!important} +.w3-example{background-color:#f1f1f1;padding:0.01em 16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{line-height:1.4;width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-example,.w3-code{margin:20px 0} +.w3-card,.w3-card-2,.w3-example{box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)!important} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} +.w3-card-8{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} +.w3-card-12{box-shadow:0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)!important} +.w3-card-16{box-shadow:0 16px 24px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)!important} +.w3-card-24{box-shadow:0 24px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)!important} +.w3-animate-fading{-webkit-animation:fading 10s infinite;animation:fading 10s infinite} +@-webkit-keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{-webkit-animation:opac 0.8s;animation:opac 0.8s} +@-webkit-keyframes opac{from{opacity:0} to{opacity:1}} +@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;-webkit-animation:animatetop 0.4s;animation:animatetop 0.4s} +@-webkit-keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;-webkit-animation:animateleft 0.4s;animation:animateleft 0.4s} +@-webkit-keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;-webkit-animation:animateright 0.4s;animation:animateright 0.4s} +@-webkit-keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;-webkit-animation:animatebottom 0.4s;animation:animatebottom 0.4s} +@-webkit-keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0px;opacity:1}} +@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {-webkit-animation:animatezoom 0.6s;animation:animatezoom 0.6s} +@-webkit-keyframes animatezoom{from{-webkit-transform:scale(0)} to{-webkit-transform:scale(1)}} +@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{-webkit-transition:width 0.4s ease-in-out;transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60;-webkit-backface-visibility:hidden} +.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1;-webkit-backface-visibility:hidden} +.w3-opacity-max{opacity:0.25;-webkit-backface-visibility:hidden} +.w3-opacity-min{opacity:0.75;-webkit-backface-visibility:hidden} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{-webkit-filter:grayscale(100%);filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{-webkit-filter:grayscale(75%);filter:grayscale(75%)} +.w3-greyscale-min,.w3-grayscale-min{-webkit-filter:grayscale(50%);filter:grayscale(50%)} +.w3-sepia{-webkit-filter:sepia(75%);filter:sepia(75%)} +.w3-sepia-max,.w3-hover-sepia:hover{-webkit-filter:sepia(100%);filter:sepia(100%)} +.w3-sepia-min{-webkit-filter:sepia(50%);filter:sepia(50%)} +.w3-text-shadow{text-shadow:1px 1px 0 #444}.w3-text-shadow-white{text-shadow:1px 1px 0 #ddd} +.w3-transparent{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important;background-color:transparent!important} +/* Colors */ +.w3-note, .w3-hover-note:hover {color:#000!important;background-color: #ffffcc;border-left: 6px solid #ffeb3b;} +.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#377496!important} +.w3-blue-wb,.w3-hover-blue-wb:hover{color:#fff!important;background-color:#1A75AA!important} +.w3-header-blue-wb,.w3-header-hover-blue-wb:hover{color:#fff!important;background-color:#215a7a!important} +.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} +.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} +.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} +.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} +.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} +.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} +.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} +.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} +.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} +.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} +.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} +.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} +.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} +.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} +.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} +.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} +.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} +.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} +.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} +.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} +.w3-text-blue-wb,.w3-hover-text-blue-wb:hover{color:#215A7A!important} +.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} +.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} +.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} +.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} +.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} +.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} +.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} +.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} +.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} +.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} +.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} +.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} +.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} +.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} +.w3-text-white,.w3-hover-text-white:hover{color:#fff!important} +.w3-text-black,.w3-hover-text-black:hover{color:#000!important} +.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} +.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} +.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} +.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} +.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} +.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} +.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} +.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} +.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} +.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} +.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} +.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} +.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} +.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} +.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} +.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} +.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} +.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} +.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} +.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} +.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} +.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} +.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} +.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} +.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} +.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} +.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} +.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} +.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} +.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} +.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} \ No newline at end of file diff --git a/templates/default/css/frontend.css b/templates/default/css/frontend.css new file mode 100644 index 0000000..8a1c563 --- /dev/null +++ b/templates/default/css/frontend.css @@ -0,0 +1 @@ +@charset "utf-8"; diff --git a/templates/default/img/PLACEHOLDER b/templates/default/img/PLACEHOLDER new file mode 100644 index 0000000..9a12f06 --- /dev/null +++ b/templates/default/img/PLACEHOLDER @@ -0,0 +1 @@ +/* this file can be removed after installation */ \ No newline at end of file diff --git a/templates/default/js/PLACEHOLDER b/templates/default/js/PLACEHOLDER new file mode 100644 index 0000000..9a12f06 --- /dev/null +++ b/templates/default/js/PLACEHOLDER @@ -0,0 +1 @@ +/* this file can be removed after installation */ \ No newline at end of file diff --git a/templates/default/languages/PLACEHOLDER b/templates/default/languages/PLACEHOLDER new file mode 100644 index 0000000..9a12f06 --- /dev/null +++ b/templates/default/languages/PLACEHOLDER @@ -0,0 +1 @@ +/* this file can be removed after installation */ \ No newline at end of file diff --git a/themes/default/ShowActionEditor.htt b/themes/default/ShowActionEditor.htt new file mode 100644 index 0000000..45c0da0 --- /dev/null +++ b/themes/default/ShowActionEditor.htt @@ -0,0 +1,4 @@ + + + + diff --git a/themes/default/ShowActionListEditor.htt b/themes/default/ShowActionListEditor.htt new file mode 100644 index 0000000..3509258 --- /dev/null +++ b/themes/default/ShowActionListEditor.htt @@ -0,0 +1,31 @@ + +
+

{HeaderText}

+ + + + + + + + + + + + + + + + + + + +
{CALTEXT_DATE}{CALTEXT_NAME}{CALTEXT_CATEGORY}
+ + {tmp_name} + + {action_types} +
+
+ + diff --git a/themes/default/ShowCalendar.htt b/themes/default/ShowCalendar.htt new file mode 100644 index 0000000..45c0da0 --- /dev/null +++ b/themes/default/ShowCalendar.htt @@ -0,0 +1,4 @@ + + + + diff --git a/themes/default/css/3/w3.css b/themes/default/css/3/w3.css new file mode 100644 index 0000000..e0d1fbb --- /dev/null +++ b/themes/default/css/3/w3.css @@ -0,0 +1,368 @@ +/* W3.CSS 3.03 Mar 2017 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent;-webkit-text-decoration-skip:objects} +a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px} +img{border-style:none}svg:not(:root){overflow:hidden} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em} +hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-input-placeholder{color:inherit;opacity:0.54} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1,h2,h3,h4,h5,h6,.w3-slim,.w3-wide{font-family:"Segoe UI",Arial,sans-serif} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px} +.w3-serif{font-family:"Times New Roman",Times,serif} +h1,h2,h3,h4,h5,h6{font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +img{margin-bottom:-5px}a{color:inherit} +.w3-image{max-width:100%;height:auto} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table} +.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd} +.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff} +.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc} +.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-btn-block,.w3-button{border:none;display:inline-block;outline:0;padding:6px 16px;vertical-align:middle;overflow:hidden;text-decoration:none!important;color:#fff;background-color:#000;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover,.w3-btn-block:hover,.w3-btn-floating:hover,.w3-btn-floating-large:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-button{color:#000;background-color:#f1f1f1;padding:8px 16px}.w3-button:hover{color:#000!important;background-color:#ccc!important} +.w3-btn,.w3-btn-floating,.w3-btn-floating-large,.w3-closenav,.w3-opennav,.w3-btn-block,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-btn-floating,.w3-btn-floating-large{display:inline-block;text-align:center;color:#fff;background-color:#000;position:relative;overflow:hidden;z-index:1;padding:0;border-radius:50%;cursor:pointer;font-size:24px} +.w3-btn-floating{width:40px;height:40px;line-height:40px}.w3-btn-floating-large{width:56px;height:56px;line-height:56px} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled,.w3-btn-floating:disabled,.w3-btn-floating-large:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn-block.w3-disabled:hover,.w3-btn:disabled:hover,.w3-btn-floating.w3-disabled:hover,.w3-btn-floating:disabled:hover, +.w3-btn-floating-large.w3-disabled:hover,.w3-btn-floating-large:disabled:hover{box-shadow:none} +.w3-btn-group .w3-btn{float:left}.w3-btn-block{width:100%} +.w3-btn-bar .w3-btn{box-shadow:none;background-color:inherit;color:inherit;float:left}.w3-btn-bar .w3-btn:hover{background-color:#ccc} +.w3-badge,.w3-tag,.w3-sign{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center} +.w3-badge{border-radius:50%} +ul.w3-ul{list-style-type:none;padding:0;margin:0}ul.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}ul.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-navbar{list-style-type:none;margin:0;padding:0;overflow:hidden} +.w3-navbar li{float:left}.w3-navbar li a,.w3-navitem,.w3-navbar li .w3-btn,.w3-navbar li .w3-input{display:block;padding:8px 16px}.w3-navbar li .w3-btn,.w3-navbar li .w3-input{border:none;outline:none;width:100%} +.w3-navbar li a:hover{color:#000;background-color:#ccc} +.w3-navbar .w3-dropdown-hover,.w3-navbar .w3-dropdown-click{position:static} +.w3-navbar .w3-dropdown-hover:hover,.w3-navbar .w3-dropdown-hover:first-child,.w3-navbar .w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-navbar a,.w3-topnav a,.w3-sidenav a,.w3-dropdown-content a,.w3-accordion-content a,.w3-dropnav a,.w3-navblock a{text-decoration:none!important} +.w3-navbar .w3-opennav.w3-right{float:right!important}.w3-topnav{padding:8px 8px} +.w3-navblock .w3-dropdown-hover:hover,.w3-navblock .w3-dropdown-hover:first-child,.w3-navblock .w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-navblock .w3-dropdown-hover,.w3-navblock .w3-dropdown-click{width:100%}.w3-navblock .w3-dropdown-hover .w3-dropdown-content,.w3-navblock .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-topnav a{padding:0 8px;border-bottom:3px solid transparent;-webkit-transition:border-bottom .25s;transition:border-bottom .25s} +.w3-topnav a:hover{border-bottom:3px solid #fff}.w3-topnav .w3-dropdown-hover a{border-bottom:0} +.w3-opennav,.w3-closenav{color:inherit}.w3-opennav:hover,.w3-closenav:hover{cursor:pointer;opacity:0.8} +.w3-btn,.w3-btn-floating,.w3-dropnav a,.w3-btn-floating-large,.w3-btn-block, .w3-navbar a,.w3-navblock a,.w3-sidenav a,.w3-pagination li a,.w3-hoverable tbody tr,.w3-hoverable li, +.w3-accordion-content a,.w3-dropdown-content a,.w3-dropdown-click:hover,.w3-dropdown-hover:hover,.w3-opennav,.w3-closenav,.w3-closebtn,*[class*="w3-hover-"] +{-webkit-transition:background-color .25s,color .15s,box-shadow .25s,opacity 0.25s,filter 0.25s,border 0.15s;transition:background-color .25s,color .15s,box-shadow .15s,opacity .25s,filter .25s,border .15s} +.w3-ripple:active{opacity:0.5}.w3-ripple{-webkit-transition:opacity 0s;transition:opacity 0s} +.w3-sidenav,.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-sidenav a,.w3-navblock a{padding:4px 2px 4px 16px}.w3-sidenav a:hover,.w3-navblock a:hover{background-color:#ccc;color:#000}.w3-sidenav a,.w3-dropnav a,.w3-navblock a{display:block} +.w3-sidenav .w3-dropdown-hover:hover,.w3-sidenav .w3-dropdown-hover:first-child,.w3-sidenav .w3-dropdown-click:hover,.w3-dropnav a:hover{background-color:#ccc;color:#000} +.w3-sidenav .w3-dropdown-hover,.w3-sidenav .w3-dropdown-click,.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-sidenav .w3-dropdown-hover .w3-dropdown-content,.w3-sidenav .w3-dropdown-click .w3-dropdown-content,.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;background-color:inherit;color:inherit;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}.w3-closebtn{text-decoration:none;float:right;font-size:24px;font-weight:bold;color:inherit} +.w3-closebtn:hover,.w3-closebtn:focus{color:#000;text-decoration:none;cursor:pointer} +.w3-pagination{display:inline-block;padding:0;margin:0}.w3-pagination li{display:inline} +.w3-pagination li a{text-decoration:none;color:#000;float:left;padding:8px 16px} +.w3-pagination li a:hover{background-color:#ccc} +.w3-input-group,.w3-group{margin-top:24px;margin-bottom:24px} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #808080;width:100%} +.w3-label{color:#009688}.w3-input:not(:valid)~.w3-validate{color:#f44336} +.w3-select{padding:9px 0;width:100%;color:#000;border:1px solid transparent;border-bottom:1px solid #009688} +.w3-select select:focus{color:#000;border:1px solid #009688}.w3-select option[disabled]{color:#009688} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block;z-index:1} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0} +.w3-dropdown-content a{padding:6px 16px;display:block} +.w3-dropdown-content a:hover{background-color:#ccc} +.w3-accordion{width:100%;cursor:pointer} +.w3-accordion-content{cursor:auto;display:none;position:relative;width:100%;margin:0;padding:0} +.w3-accordion-content a{padding:6px 16px;display:block}.w3-accordion-content a:hover{background-color:#ccc} +.w3-progress-container{width:100%;height:1.5em;position:relative;background-color:#f1f1f1} +.w3-progressbar{background-color:#757575;height:100%;position:absolute;line-height:inherit} +input[type=checkbox].w3-check,input[type=radio].w3-radio{width:24px;height:24px;position:relative;top:6px} +input[type=checkbox].w3-check:checked+.w3-validate,input[type=radio].w3-radio:checked+.w3-validate{color:#009688} +input[type=checkbox].w3-check:disabled+.w3-validate,input[type=radio].w3-radio:disabled+.w3-validate{color:#aaa} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;background-color:inherit;color:inherit;width:auto;border:none;outline:none;display:block} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{background-color:inherit;color:inherit;white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;background-color:inherit;color:inherit;border:none;outline:none;white-space:normal} +.w3-bar-block.w3-center .w3-bar-item{text-align:center} +.w3-block{display:block;width:100%} +.w3-responsive{overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,.w3-cell-row:before,.w3-cell-row:after, +.w3-topnav:after,.w3-topnav:before,.w3-clear:after,.w3-clear:before,.w3-btn-group:before,.w3-btn-group:after,.w3-btn-bar:before,.w3-btn-bar:after,.w3-bar:before,.w3-bar:after +{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%} +.w3-col.s2{width:16.66666%} +.w3-col.s3{width:24.99999%} +.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%} +.w3-col.s6{width:49.99999%} +.w3-col.s7{width:58.33333%} +.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%} +.w3-col.s10{width:83.33333%} +.w3-col.s11{width:91.66666%} +.w3-col.s12,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{width:99.99999%} +@media (min-width:601px){ +.w3-col.m1{width:8.33333%} +.w3-col.m2{width:16.66666%} +.w3-col.m3,.w3-quarter{width:24.99999%} +.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%} +.w3-col.m6,.w3-half{width:49.99999%} +.w3-col.m7{width:58.33333%} +.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%} +.w3-col.m10{width:83.33333%} +.w3-col.m11{width:91.66666%} +.w3-col.m12{width:99.99999%}} +@media (min-width:993px){ +.w3-col.l1{width:8.33333%} +.w3-col.l2{width:16.66666%} +.w3-col.l3,.w3-quarter{width:24.99999%} +.w3-col.l4,.w3-third{width:33.33333%} +.w3-col.l5{width:41.66666%} +.w3-col.l6,.w3-half{width:49.99999%} +.w3-col.l7{width:58.33333%} +.w3-col.l8,.w3-twothird{width:66.66666%} +.w3-col.l9,.w3-threequarter{width:74.99999%} +.w3-col.l10{width:83.33333%} +.w3-col.l11{width:91.66666%} +.w3-col.l12{width:99.99999%}} +.w3-content{max-width:980px;margin:auto} +.w3-rest{overflow:hidden} +.w3-layout-container,.w3-cell-row{display:table;width:100%}.w3-layout-row{display:table-row}.w3-layout-cell,.w3-layout-col,.w3-cell{display:table-cell} +.w3-layout-top,.w3-cell-top{vertical-align:top}.w3-layout-middle,.w3-cell-middle{vertical-align:middle}.w3-layout-bottom,.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-topnav a{display:block}.w3-navbar li:not(.w3-opennav){float:none;width:100%!important}.w3-navbar li.w3-right{float:none!important} +.w3-topnav .w3-dropdown-hover .w3-dropdown-content,.w3-navbar .w3-dropdown-click .w3-dropdown-content,.w3-navbar .w3-dropdown-hover .w3-dropdown-content,.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-topnav,.w3-navbar{text-align:center}.w3-hide-small{display:none!important}.w3-layout-col,.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidenav.w3-collapse,.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important} +.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important} +.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-vertical{word-break:break-all;line-height:1;text-align:center;width:0.6em} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important} +.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%!important} +.w3-round-small{border-radius:2px!important}.w3-round,.w3-round-medium{border-radius:4px!important} +.w3-round-large{border-radius:8px!important}.w3-round-xlarge{border-radius:16px!important} +.w3-round-xxlarge{border-radius:32px!important}.w3-round-jumbo{border-radius:64px!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-margin{margin:16px!important}.w3-margin-0{margin:0!important} +.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-section{margin-top:16px!important;margin-bottom:16px!important} +.w3-padding-tiny{padding:2px 4px!important}.w3-padding-small{padding:4px 8px!important} +.w3-padding-medium,.w3-padding,.w3-form{padding:8px 16px!important} +.w3-padding-large{padding:12px 24px!important}.w3-padding-xlarge{padding:16px 32px!important} +.w3-padding-xxlarge{padding:24px 48px!important}.w3-padding-jumbo{padding:32px 64px!important} +.w3-padding-4{padding-top:4px!important;padding-bottom:4px!important} +.w3-padding-6{padding-top:6px!important;padding-bottom:6px!important} +.w3-padding-8{padding-top:8px!important;padding-bottom:8px!important} +.w3-padding-12{padding-top:12px!important;padding-bottom:12px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important} +.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important} +.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-padding-128{padding-top:128px!important;padding-bottom:128px!important} +.w3-padding-0{padding:0!important} +.w3-padding-top{padding-top:8px!important}.w3-padding-bottom{padding-bottom:8px!important} +.w3-padding-left{padding-left:16px!important}.w3-padding-right{padding-right:16px!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-spin{animation:w3-spin 2s infinite linear;-webkit-animation:w3-spin 2s infinite linear} +@-webkit-keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} +@keyframes w3-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}} +.w3-container{padding:0.01em 16px} +.w3-panel{padding:0.01em 16px;margin-top:16px!important;margin-bottom:16px!important} +.w3-example{background-color:#f1f1f1;padding:0.01em 16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{line-height:1.4;width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-example,.w3-code{margin:20px 0} +.w3-card,.w3-card-2,.w3-example{box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)!important} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} +.w3-card-8{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important} +.w3-card-12{box-shadow:0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)!important} +.w3-card-16{box-shadow:0 16px 24px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)!important} +.w3-card-24{box-shadow:0 24px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)!important} +.w3-animate-fading{-webkit-animation:fading 10s infinite;animation:fading 10s infinite} +@-webkit-keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{-webkit-animation:opac 0.8s;animation:opac 0.8s} +@-webkit-keyframes opac{from{opacity:0} to{opacity:1}} +@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;-webkit-animation:animatetop 0.4s;animation:animatetop 0.4s} +@-webkit-keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;-webkit-animation:animateleft 0.4s;animation:animateleft 0.4s} +@-webkit-keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;-webkit-animation:animateright 0.4s;animation:animateright 0.4s} +@-webkit-keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;-webkit-animation:animatebottom 0.4s;animation:animatebottom 0.4s} +@-webkit-keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0px;opacity:1}} +@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {-webkit-animation:animatezoom 0.6s;animation:animatezoom 0.6s} +@-webkit-keyframes animatezoom{from{-webkit-transform:scale(0)} to{-webkit-transform:scale(1)}} +@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{-webkit-transition:width 0.4s ease-in-out;transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60;-webkit-backface-visibility:hidden} +.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1;-webkit-backface-visibility:hidden} +.w3-opacity-max{opacity:0.25;-webkit-backface-visibility:hidden} +.w3-opacity-min{opacity:0.75;-webkit-backface-visibility:hidden} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{-webkit-filter:grayscale(100%);filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{-webkit-filter:grayscale(75%);filter:grayscale(75%)} +.w3-greyscale-min,.w3-grayscale-min{-webkit-filter:grayscale(50%);filter:grayscale(50%)} +.w3-sepia{-webkit-filter:sepia(75%);filter:sepia(75%)} +.w3-sepia-max,.w3-hover-sepia:hover{-webkit-filter:sepia(100%);filter:sepia(100%)} +.w3-sepia-min{-webkit-filter:sepia(50%);filter:sepia(50%)} +.w3-text-shadow{text-shadow:1px 1px 0 #444}.w3-text-shadow-white{text-shadow:1px 1px 0 #ddd} +.w3-transparent{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important;background-color:transparent!important} +/* Colors */ +.w3-note, .w3-hover-note:hover {color:#000!important;background-color: #ffffcc;border-left: 6px solid #ffeb3b;} +.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#377496!important} +.w3-blue-wb,.w3-hover-blue-wb:hover{color:#fff!important;background-color:#1A75AA!important} +.w3-header-blue-wb,.w3-header-hover-blue-wb:hover{color:#fff!important;background-color:#215a7a!important} +.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} +.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} +.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} +.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} +.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} +.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} +.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} +.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} +.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} +.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} +.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} +.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} +.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} +.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} +.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} +.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} +.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} +.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} +.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} +.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} +.w3-text-blue-wb,.w3-hover-text-blue-wb:hover{color:#215A7A!important} +.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} +.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} +.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} +.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} +.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} +.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} +.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} +.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} +.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} +.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} +.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} +.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} +.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} +.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} +.w3-text-white,.w3-hover-text-white:hover{color:#fff!important} +.w3-text-black,.w3-hover-text-black:hover{color:#000!important} +.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} +.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} +.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} +.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} +.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} +.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} +.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} +.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} +.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} +.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} +.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} +.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} +.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} +.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} +.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} +.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} +.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} +.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} +.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} +.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} +.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} +.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} +.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} +.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} +.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} +.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} +.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} +.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} +.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} +.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} +.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} +.w3-clearfix::after { content: ""; clear: both; display: table; } +.w3-pointer { cursor: pointer; } \ No newline at end of file diff --git a/themes/default/css/backend.css b/themes/default/css/backend.css new file mode 100644 index 0000000..55cfd4e --- /dev/null +++ b/themes/default/css/backend.css @@ -0,0 +1 @@ +@charset "utf-8"; \ No newline at end of file diff --git a/themes/default/css/default.css b/themes/default/css/default.css new file mode 100644 index 0000000..17e256f --- /dev/null +++ b/themes/default/css/default.css @@ -0,0 +1,68 @@ +.procal code{font-weight:bold;} +.procal h3{font-weight:bold;font-size:1.2em;letter-spacing:-1px;} +.procal hr{height:0;line-height:0;border:0;border-top:1px solid #bbb;width:100%;margin:10px 0;padding:0;} +/*----------------------------------------------------------------------------*/ +.modify_content{color:#333;border:1px solid #000;} +.procal .show_calendar{float:right;width:215px;margin-bottom:20px;} +.procal .calendarmod{border-collapse:collapse;background:#fff;width:100%;font-size:12px;font-family:arial,helvetica,sans-serif;border:1px solid #bbb;} +.procal .calendarmod a{text-decoration:none;display:block;} +.procal .calendarmod td{height:20px;text-align:center;line-height:20px;border:1px solid #bbb;} +.procal .arrows{float:left;width:50%;} +.procal tr.calendarmod-header td{text-align:center;font-weight:bold;background:#f0f0f0;} +.procal tr.calendarmod-header td a{display:block;height:20px;line-height:20px;background:#c7e5c7;} +.procal tr.calendarmod-header td a:hover{background:#a5d5a5 !important;} +.procal td.calendar_weekday{background:#f0f0f0;width:30px;} +.procal td.calendar_emptyday:hover{background:#c7e5c7;} +.procal td.calendar_markday{background:#ffdfe0;font-weight:bold;} +.procal td.calendar_markday:hover{background:#ffc3c5;} +.procal td.calendar_noday{background:#fff;} +.procal td.procal_today{border:2px solid #ff0000;} +.procal .actionlist{margin:20px 0;} +.procal .actionlist_table{width:100%;} +.procal .actionlist tr{height:22px;line-height:1.8;} +.procal .actionlist tr:hover{background:#eaeff6;} +.procal .actionlist td{border-top:1px solid #f9f9f9;border-bottom:1px solid #f9f9f9;padding:0 10px;height:22px;line-height:22px;} +.procal .actionlist h2{font-size:14px;text-align:center;font-weight:bold;margin:0;letter-spacing:normal;} +.procal .actionlist_header{font-weight:bold;background:none !important;} +.procal .event_details{width:100%;border-top:1px solid #ccc;padding-top:15px;clear:both;} +.procal input{font-size:11px;padding:2px;} +.procal .double_field_line{height:60px;line-height:1.5;} +.procal .triple_field_line{height:90px;line-height:1.5;} +.procal .line_box{height:30px;width:212px;float:left;} +.procal .edit_label td{width:10px;} +.procal .edit_field,.procal .edit_description{width:50%;} +.procal .edit_select{width:50%;padding:0 0 0 2px;} +.procal .edit_select_short{width:290px;padding:0 0 0 2px;} +.procal .edit_field_short{width:280px;} +.procal .edit_date,.procal .edit_time{width:80px;} +.procal #buttonrow{width:100%;margin-bottom:15px;} +.procal .edit_button,.procal .mod_procalendar_edit_css{padding:1px 10px;min-width:8.25em;font-size:12px; cursor: pointer;} +.procal .float_right{float:right;} +.procal .customfields textarea{width:98%;height:80px;margin-bottom:20px;} +/* makes the input field shorter once the date picker code * has run (to allow space for the calendar icon */ +input.dp-applied{width:11.225em;float:left;} +/* Needed css for DatePicker calendar. DON'T CONVERT CaPITaLS TO LOWERCaSE! Datepicker will not function if set to lowercase! table.jCalendar {border-bottom:#000 1px solid;border-left:#000 1px solid;border-spacing:2px;border-collapse:separate;background:#aaa;border-top:#000 1px solid;border-right:#000 1px solid;} table.jCalendar TH {background:#333;color:#fff;font-weight:bold;padding:3px 5px;} table.jCalendar td {text-align:center;background:#ccc;color:#000;padding:3px 5px;} table.jCalendar td.other-month {background:#ddd;color:#aaa;} table.jCalendar td.today {background:#666;color:#fff;} table.jCalendar td.dp-hover.selected {background:#f33;color:#fff;} div.dp-popup {position:relative;line-height:1.2em;width:186px;font-family:arial, sans-serif;background:#ccc;font-size:10px;padding:2px;} div#dp-popup {z-index:199;position:absolute;} div.dp-popup H2 {text-align:center;font-size:12px;margin:2px 0;padding:0;} a#dp-close {text-align:center;display:block;font-size:11px;padding:4px 0;} a#dp-close:hover {text-decoration:underline;} div.dp-popup a {color:#000;text-decoration:none;padding:3px 2px 0;} div.dp-popup div.dp-nav-prev {position:absolute;width:100px;top:2px;left:4px;} div.dp-popup div.dp-nav-prev a {float:left;cursor:pointer;} div.dp-popup div.dp-nav-next a {cursor:pointer;float:right;} div.dp-popup div.dp-nav-next {position:absolute;width:100px;top:2px;right:4px;} div.dp-popup a.disabled {color:#aaa;cursor:default;} div.dp-popup td {cursor:pointer;} input.dp-applied {width:120px;float:left;} a.dp-choose-date {text-indent:-2000px;width:16px;display:block;background:url('./js/calendar.png') no-repeat;float:left;height:16px;overflow:hidden;margin:3px;padding:0;} a.dp-disabled.dp-choose-date {cursor:default;} #calendar-me {margin:20px;} table.jCalendar td.selected, table.jCalendar tr.selectedWeek td {background:#f66;color:#fff;} table.jCalendar td.dp-hover, table.jCalendar tr.activeWeekHover td {background:#fff;color:#000;} table.jCalendar td.disabled, table.jCalendar td.dp-hover.disabled,table.jCalendar td.unselectable, table.jCalendar td.unselectable:hover, table.jCalendar td.dp-hover.unselectable {background:#bbb;color:#888;} div.dp-popup div.dp-nav-prev a.disabled, div.dp-popup div.dp-nav-next a.disabled, div.dp-popup td.disabled {cursor:default;} */ +/*----------------------------------------------------------------------------------------*/ +.procal #start_time,.procal #end_time{vertical-align:top;} +.procal .procal_hidden{display:none;} +.procal .rec_rep_count{vertical-align:top;} +.procal .field_area,.procal .field_line,.procal .field_link{margin:0.625em 0;position:relative;} +/* .field_line {min-height: 2.125em; line-height: 1.5;} .field_area {min-height:4.525em; line-height:2.5;} */ +.procal .field_title{float:left;width:20%;font-weight:bold;text-align:right;padding-right:0.125rem;white-space-collapsing:discard;} +.procal label {padding: 0.625em !important;vertical-align: middle !important;color: #7F7F7F!important;} +.clearfix::before,.clearfix::after{content: " ";display:table;} +.clearfix::after{clear:both;} +.clearfix{*zoom:1;/* Für den IE6 und IE7 */} +/*--------------------- scroll table -----------------------------*/ +.scrollable th,.scrollable td{padding:5px 5px;border-bottom:1px solid #ccc;} +.scrollable thead,.scrollable tfoot{display:table;width:100%;} +.scrollable tbody{overflow:auto;overflow-x:hidden;display:block;} +.scrollable tbody{width:100%;height:100%;max-height:41.825em;} +.scrollable tbody tr{display:table;width:100%;table-layout: fixed;} +.scrollable tbody tr:hover{background:#E3E3E3;cursor:default;} +/* ---------------------------------------------------------------*/ +.procal .actionlist_date{width:20%;} +.procal .actionlist_description{width:50%;} +.procal .actionlist_type{width:25%;} + + diff --git a/themes/default/img/Bezeichnung.jpg b/themes/default/img/Bezeichnung.jpg new file mode 100644 index 0000000..ead7344 Binary files /dev/null and b/themes/default/img/Bezeichnung.jpg differ diff --git a/themes/default/img/Bildgroesse_aendern.jpg b/themes/default/img/Bildgroesse_aendern.jpg new file mode 100644 index 0000000..a720ceb Binary files /dev/null and b/themes/default/img/Bildgroesse_aendern.jpg differ diff --git a/themes/default/img/Categorie_53.png b/themes/default/img/Categorie_53.png new file mode 100644 index 0000000..788b83b Binary files /dev/null and b/themes/default/img/Categorie_53.png differ diff --git a/themes/default/img/ColorPicker_20.png b/themes/default/img/ColorPicker_20.png new file mode 100644 index 0000000..89bb6ec Binary files /dev/null and b/themes/default/img/ColorPicker_20.png differ diff --git a/themes/default/img/Datum.jpg b/themes/default/img/Datum.jpg new file mode 100644 index 0000000..93da5dc Binary files /dev/null and b/themes/default/img/Datum.jpg differ diff --git a/themes/default/img/Datums_Format.png b/themes/default/img/Datums_Format.png new file mode 100644 index 0000000..27ec452 Binary files /dev/null and b/themes/default/img/Datums_Format.png differ diff --git a/themes/default/img/Datumsformat.jpg b/themes/default/img/Datumsformat.jpg new file mode 100644 index 0000000..12fc74b Binary files /dev/null and b/themes/default/img/Datumsformat.jpg differ diff --git a/themes/default/img/Edit_CSS.jpg b/themes/default/img/Edit_CSS.jpg new file mode 100644 index 0000000..fafd7e9 Binary files /dev/null and b/themes/default/img/Edit_CSS.jpg differ diff --git a/themes/default/img/Eigene_Felder.jpg b/themes/default/img/Eigene_Felder.jpg new file mode 100644 index 0000000..cfe87be Binary files /dev/null and b/themes/default/img/Eigene_Felder.jpg differ diff --git a/themes/default/img/Eigene_Felder_Beispiel.jpg b/themes/default/img/Eigene_Felder_Beispiel.jpg new file mode 100644 index 0000000..925150b Binary files /dev/null and b/themes/default/img/Eigene_Felder_Beispiel.jpg differ diff --git a/themes/default/img/Eigenes_Feld.jpg b/themes/default/img/Eigenes_Feld.jpg new file mode 100644 index 0000000..978cdbc Binary files /dev/null and b/themes/default/img/Eigenes_Feld.jpg differ diff --git a/themes/default/img/Erster_Wochentag.jpg b/themes/default/img/Erster_Wochentag.jpg new file mode 100644 index 0000000..2a84649 Binary files /dev/null and b/themes/default/img/Erster_Wochentag.jpg differ diff --git a/themes/default/img/Farbe_in_Kalender.jpg b/themes/default/img/Farbe_in_Kalender.jpg new file mode 100644 index 0000000..09fdad5 Binary files /dev/null and b/themes/default/img/Farbe_in_Kalender.jpg differ diff --git a/themes/default/img/Feldbezeichnung.jpg b/themes/default/img/Feldbezeichnung.jpg new file mode 100644 index 0000000..285b930 Binary files /dev/null and b/themes/default/img/Feldbezeichnung.jpg differ diff --git a/themes/default/img/Kategorie.jpg b/themes/default/img/Kategorie.jpg new file mode 100644 index 0000000..b782f76 Binary files /dev/null and b/themes/default/img/Kategorie.jpg differ diff --git a/themes/default/img/Kategorie_Auswahl.jpg b/themes/default/img/Kategorie_Auswahl.jpg new file mode 100644 index 0000000..202ea38 Binary files /dev/null and b/themes/default/img/Kategorie_Auswahl.jpg differ diff --git a/themes/default/img/Kategorie_anlegen.jpg b/themes/default/img/Kategorie_anlegen.jpg new file mode 100644 index 0000000..cc47a3c Binary files /dev/null and b/themes/default/img/Kategorie_anlegen.jpg differ diff --git a/themes/default/img/Optionen.jpg b/themes/default/img/Optionen.jpg new file mode 100644 index 0000000..86d3c1e Binary files /dev/null and b/themes/default/img/Optionen.jpg differ diff --git a/themes/default/img/Sichtbarkeit_54.png b/themes/default/img/Sichtbarkeit_54.png new file mode 100644 index 0000000..9f5378e Binary files /dev/null and b/themes/default/img/Sichtbarkeit_54.png differ diff --git a/themes/default/img/Speichern.jpg b/themes/default/img/Speichern.jpg new file mode 100644 index 0000000..a61085a Binary files /dev/null and b/themes/default/img/Speichern.jpg differ diff --git a/themes/default/img/Start_Ende_datum_14.png b/themes/default/img/Start_Ende_datum_14.png new file mode 100644 index 0000000..18199d6 Binary files /dev/null and b/themes/default/img/Start_Ende_datum_14.png differ diff --git a/themes/default/img/Template.jpg b/themes/default/img/Template.jpg new file mode 100644 index 0000000..26a2b81 Binary files /dev/null and b/themes/default/img/Template.jpg differ diff --git a/themes/default/img/Title_12.png b/themes/default/img/Title_12.png new file mode 100644 index 0000000..762ca46 Binary files /dev/null and b/themes/default/img/Title_12.png differ diff --git a/themes/default/img/Uhrzeit.jpg b/themes/default/img/Uhrzeit.jpg new file mode 100644 index 0000000..b07a631 Binary files /dev/null and b/themes/default/img/Uhrzeit.jpg differ diff --git a/themes/default/img/color.png b/themes/default/img/color.png new file mode 100644 index 0000000..809fb00 Binary files /dev/null and b/themes/default/img/color.png differ diff --git a/themes/default/img/picker.png b/themes/default/img/picker.png new file mode 100644 index 0000000..de0127b Binary files /dev/null and b/themes/default/img/picker.png differ diff --git a/themes/default/js/DatePicker/images/calendar.png b/themes/default/js/DatePicker/images/calendar.png new file mode 100644 index 0000000..94e66d4 Binary files /dev/null and b/themes/default/js/DatePicker/images/calendar.png differ diff --git a/themes/default/js/DatePicker/lang/date_de.js b/themes/default/js/DatePicker/lang/date_de.js new file mode 100644 index 0000000..5b28924 --- /dev/null +++ b/themes/default/js/DatePicker/lang/date_de.js @@ -0,0 +1,8 @@ +// date localization for locale 'de' +// generated by Jörn Zaefferer using Java's java.util.SimpleDateFormat +Date.dayNames = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; +Date.abbrDayNames = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']; +Date.monthNames = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']; +Date.abbrMonthNames = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']; +InputFault = "Bitte prüfen Sie Ihre Eingaben zur Treminserie!"; +NoTitleFault = "Bitte geben Sie eine Bezeichnung ein!"; \ No newline at end of file diff --git a/themes/default/js/DatePicker/lang/date_fr.js b/themes/default/js/DatePicker/lang/date_fr.js new file mode 100644 index 0000000..39b6eba --- /dev/null +++ b/themes/default/js/DatePicker/lang/date_fr.js @@ -0,0 +1,8 @@ +// date localization for locale 'fr' +// generated by Jörn Zaefferer using Java's java.util.SimpleDateFormat +Date.dayNames = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']; +Date.abbrDayNames = ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.']; +Date.monthNames = ['janvier', 'f�vrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'ao�t', 'septembre', 'octobre', 'novembre', 'd�cembre']; +Date.abbrMonthNames = ['janv.', 'f�vr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'ao�t', 'sept.', 'oct.', 'nov.', 'd�c.']; +InputFault = "Please check your input regarding recurrent dates!"; +NoTitleFault = "Bitte geben Sie eine Bezeichnung ein!"; \ No newline at end of file diff --git a/themes/default/js/DatePicker/lang/date_nl.js b/themes/default/js/DatePicker/lang/date_nl.js new file mode 100644 index 0000000..fc658ce --- /dev/null +++ b/themes/default/js/DatePicker/lang/date_nl.js @@ -0,0 +1,8 @@ +// date localization for locale 'nl' +// generated by Stefan Kip +Date.dayNames = ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']; +Date.abbrDayNames = ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za']; +Date.monthNames = ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']; +Date.abbrMonthNames = ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec']; +InputFault = "Please check your input regarding recurrent dates!"; +NoTitleFault = "Bitte geben Sie eine Bezeichnung ein!"; \ No newline at end of file diff --git a/themes/default/js/DatePicker/scripts/date.js b/themes/default/js/DatePicker/scripts/date.js new file mode 100644 index 0000000..205e3aa --- /dev/null +++ b/themes/default/js/DatePicker/scripts/date.js @@ -0,0 +1,513 @@ +/* + * Date prototype extensions. Doesn't depend on any + * other code. Doens't overwrite existing methods. + * + * Adds dayNames, abbrDayNames, monthNames and abbrMonthNames static properties and isLeapYear, + * isWeekend, isWeekDay, getDaysInMonth, getDayName, getMonthName, getDayOfYear, getWeekOfYear, + * setDayOfYear, addYears, addMonths, addDays, addHours, addMinutes, addSeconds methods + * + * Copyright (c) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * + * Additional methods and properties added by Kelvin Luck: firstDayOfWeek, dateFormat, zeroTime, asString, fromString - + * I've added my name to these methods so you know who to blame if they are broken! + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +/** + * An Array of day names starting with Sunday. + * + * @example dayNames[0] + * @result 'Sunday' + * + * @name dayNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + +/** + * An Array of abbreviated day names starting with Sun. + * + * @example abbrDayNames[0] + * @result 'Sun' + * + * @name abbrDayNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.abbrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + +/** + * An Array of month names starting with Janurary. + * + * @example monthNames[0] + * @result 'January' + * + * @name monthNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + +/** + * An Array of abbreviated month names starting with Jan. + * + * @example abbrMonthNames[0] + * @result 'Jan' + * + * @name monthNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.abbrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +/** + * The first day of the week for this locale. + * + * @name firstDayOfWeek + * @type Number + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +Date.firstDayOfWeek = 1; + +/** + * The format that string dates should be represented as (e.g. 'dd/mm/yyyy' for UK, 'mm/dd/yyyy' for US, 'yyyy-mm-dd' for Unicode etc). + * + * @name format + * @type String + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +Date.format = 'dd/mm/yyyy'; +//Date.format = 'mm/dd/yyyy'; +//Date.format = 'yyyy-mm-dd'; +//Date.format = 'dd mmm yy'; + +/** + * The first two numbers in the century to be used when decoding a two digit year. Since a two digit year is ambiguous (and date.setYear + * only works with numbers < 99 and so doesn't allow you to set years after 2000) we need to use this to disambiguate the two digit year codes. + * + * @name format + * @type String + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +Date.fullYearStart = '20'; + +(function() { + + /** + * Adds a given method under the given name + * to the Date prototype if it doesn't + * currently exist. + * + * @private + */ + function add(name, method) { + if( !Date.prototype[name] ) { + Date.prototype[name] = method; + } + }; + + /** + * Checks if the year is a leap year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isLeapYear(); + * @result true + * + * @name isLeapYear + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isLeapYear", function() { + var y = this.getFullYear(); + return (y%4==0 && y%100!=0) || y%400==0; + }); + + /** + * Checks if the day is a weekend day (Sat or Sun). + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isWeekend(); + * @result false + * + * @name isWeekend + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isWeekend", function() { + return this.getDay()==0 || this.getDay()==6; + }); + + /** + * Check if the day is a day of the week (Mon-Fri) + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isWeekDay(); + * @result false + * + * @name isWeekDay + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isWeekDay", function() { + return !this.isWeekend(); + }); + + /** + * Gets the number of days in the month. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDaysInMonth(); + * @result 31 + * + * @name getDaysInMonth + * @type Number + * @cat Plugins/Methods/Date + */ + add("getDaysInMonth", function() { + return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()]; + }); + + /** + * Gets the name of the day. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayName(); + * @result 'Saturday' + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayName(true); + * @result 'Sat' + * + * @param abbreviated Boolean When set to true the name will be abbreviated. + * @name getDayName + * @type String + * @cat Plugins/Methods/Date + */ + add("getDayName", function(abbreviated) { + return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()]; + }); + + /** + * Gets the name of the month. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getMonthName(); + * @result 'Janurary' + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getMonthName(true); + * @result 'Jan' + * + * @param abbreviated Boolean When set to true the name will be abbreviated. + * @name getDayName + * @type String + * @cat Plugins/Methods/Date + */ + add("getMonthName", function(abbreviated) { + return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()]; + }); + + /** + * Get the number of the day of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayOfYear(); + * @result 11 + * + * @name getDayOfYear + * @type Number + * @cat Plugins/Methods/Date + */ + add("getDayOfYear", function() { + var tmpdtm = new Date("1/1/" + this.getFullYear()); + return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000); + }); + + /** + * Get the number of the week of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getWeekOfYear(); + * @result 2 + * + * @name getWeekOfYear + * @type Number + * @cat Plugins/Methods/Date + */ + add("getWeekOfYear", function() { + return Math.ceil(this.getDayOfYear() / 7); + }); + + /** + * Set the day of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.setDayOfYear(1); + * dtm.toString(); + * @result 'Tue Jan 01 2008 00:00:00' + * + * @name setDayOfYear + * @type Date + * @cat Plugins/Methods/Date + */ + add("setDayOfYear", function(day) { + this.setMonth(0); + this.setDate(day); + return this; + }); + + /** + * Add a number of years to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addYears(1); + * dtm.toString(); + * @result 'Mon Jan 12 2009 00:00:00' + * + * @name addYears + * @type Date + * @cat Plugins/Methods/Date + */ + add("addYears", function(num) { + this.setFullYear(this.getFullYear() + num); + return this; + }); + + /** + * Add a number of months to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addMonths(1); + * dtm.toString(); + * @result 'Tue Feb 12 2008 00:00:00' + * + * @name addMonths + * @type Date + * @cat Plugins/Methods/Date + */ + add("addMonths", function(num) { + var tmpdtm = this.getDate(); + + this.setMonth(this.getMonth() + num); + + if (tmpdtm > this.getDate()) + this.addDays(-this.getDate()); + + return this; + }); + + /** + * Add a number of days to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addDays(1); + * dtm.toString(); + * @result 'Sun Jan 13 2008 00:00:00' + * + * @name addDays + * @type Date + * @cat Plugins/Methods/Date + */ + add("addDays", function(num) { + var timezoneOffsetBefore = this.getTimezoneOffset(), + timezoneOffsetAfter; + this.setTime(this.getTime() + (num*86400000) ); + timezoneOffsetAfter = this.getTimezoneOffset(); + + // If the timezone has changed between days then adjust the time to reflect this + if(timezoneOffsetAfter !== timezoneOffsetBefore){ + this.setTime(this.getTime() + ((timezoneOffsetAfter-timezoneOffsetBefore) * 60 * 1000)); + } + return this; + }); + + /** + * Add a number of hours to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addHours(24); + * dtm.toString(); + * @result 'Sun Jan 13 2008 00:00:00' + * + * @name addHours + * @type Date + * @cat Plugins/Methods/Date + */ + add("addHours", function(num) { + this.setHours(this.getHours() + num); + return this; + }); + + /** + * Add a number of minutes to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addMinutes(60); + * dtm.toString(); + * @result 'Sat Jan 12 2008 01:00:00' + * + * @name addMinutes + * @type Date + * @cat Plugins/Methods/Date + */ + add("addMinutes", function(num) { + this.setMinutes(this.getMinutes() + num); + return this; + }); + + /** + * Add a number of seconds to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addSeconds(60); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:01:00' + * + * @name addSeconds + * @type Date + * @cat Plugins/Methods/Date + */ + add("addSeconds", function(num) { + this.setSeconds(this.getSeconds() + num); + return this; + }); + + /** + * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant. + * + * @example var dtm = new Date(); + * dtm.zeroTime(); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:01:00' + * + * @name zeroTime + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + add("zeroTime", function() { + this.setMilliseconds(0); + this.setSeconds(0); + this.setMinutes(0); + this.setHours(0); + return this; + }); + + /** + * Returns a string representation of the date object according to Date.format. + * (Date.toString may be used in other places so I purposefully didn't overwrite it) + * + * @example var dtm = new Date("01/12/2008"); + * dtm.asString(); + * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy' + * + * @name asString + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + add("asString", function(format) { + var r = format || Date.format; + return r + .split('yyyy').join(this.getFullYear()) + .split('yy').join((this.getFullYear() + '').substring(2)) + .split('dd').join(_zeroPad(this.getDate())) + .split('d').join(this.getDate()) + .split('DD').join(this.getDayName(false)) + .split('D').join(this.getDayName(true)) + .split('mmmm').join(this.getMonthName(false)) + .split('mmm').join(this.getMonthName(true)) + .split('mm').join(_zeroPad(this.getMonth()+1)) + .split('hh').join(_zeroPad(this.getHours())) + .split('min').join(_zeroPad(this.getMinutes())) + .split('ss').join(_zeroPad(this.getSeconds())); + }); + + /** + * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object + * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere) + * + * @example var dtm = Date.fromString("12/01/2008"); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy' + * + * @name fromString + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + Date.fromString = function(s, format) + { + var f = format || Date.format, + d = new Date('01/01/1977'), + mLength = 0, + iM, iD, iY, + i, mStr; + + iM = f.indexOf('mmmm'); + if (iM > -1) { + for (i=0; i -1) { + mStr = s.substr(iM, 3); + for (i=0; i -1) { + if (iM < iY) + { + iY += mLength; + } + d.setFullYear(Number(s.substr(iY, 4))); + } else { + if (iM < iY) + { + iY += mLength; + } + // TODO - this doesn't work very well - are there any rules for what is meant by a two digit year? + d.setFullYear(Number(Date.fullYearStart + s.substr(f.indexOf('yy'), 2))); + } + iD = f.indexOf('dd'); + if (iM < iD) + { + iD += mLength; + } + d.setDate(Number(s.substr(iD, 2))); + if (isNaN(d.getTime())) { + return false; + } + return d; + }; + + // utility method + var _zeroPad = function(num) { + var s = '0'+num; + return s.substring(s.length-2) + //return ('0'+num).substring(-2); // doesn't work on IE :( + }; + +})(); diff --git a/themes/default/js/DatePicker/scripts/date_de.js b/themes/default/js/DatePicker/scripts/date_de.js new file mode 100644 index 0000000..870bfd0 --- /dev/null +++ b/themes/default/js/DatePicker/scripts/date_de.js @@ -0,0 +1,9 @@ +// date localization for locale 'de' +// generated by Jörn Zaefferer using Java's java.util.SimpleDateFormat +Date.dayNames = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; +Date.abbrDayNames = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']; +Date.monthNames = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']; +Date.abbrMonthNames = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']; + +Date.firstDayOfWeek = 1; +Date.format = 'dd.mmm.yyyy'; \ No newline at end of file diff --git a/themes/default/js/DatePicker/scripts/jquery.bgiframe.min.js b/themes/default/js/DatePicker/scripts/jquery.bgiframe.min.js new file mode 100644 index 0000000..165aef4 --- /dev/null +++ b/themes/default/js/DatePicker/scripts/jquery.bgiframe.min.js @@ -0,0 +1,39 @@ +/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (LICENSE.txt). + * + * Version 2.1.3-pre + */ + +(function($){ + +$.fn.bgiframe = ($.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function(s) { + s = $.extend({ + top : 'auto', // auto == .currentStyle.borderTopWidth + left : 'auto', // auto == .currentStyle.borderLeftWidth + width : 'auto', // auto == offsetWidth + height : 'auto', // auto == offsetHeight + opacity : true, + src : 'javascript:false;' + }, s); + var html = '