From 0cb8d37eacfdb1010c847cce343e680ff36a7ded Mon Sep 17 00:00:00 2001 From: Martin Hecht Date: Fri, 13 Apr 2018 22:18:16 +0200 Subject: [PATCH] updated to v1.4.0 --- add.php | 54 +- backend.css | 131 +- backend_body.js | 78 +- delete.php | 63 +- frontend.css | 120 +- functions.php | 1240 +++++++------ images/PLACEHOLDER | 1 + info.php | 9 +- install-struct.php | 107 ++ install.php | 12 +- languages/DE.php | 1 + languages/EN.php | 4 +- languages/NL.php | 4 +- languages/support-DE.php | 237 ++- languages/support-EN.php | 50 +- languages/support-NL.php | 47 +- lib/createBackup.php | 124 ++ lib/date_formats.php | 47 + lib/upgradePlates.php | 50 + modify.php | 52 +- modify_recurrent_inc.php | 49 +- modify_settings.php | 314 ++-- save.php | 528 +++--- save_customs.php | 78 +- save_layout.php | 109 +- save_settings.php | 84 +- sql/PLACEHOLDER | 1 + templates/PLACEHOLDER | 1 + templates/default/css/3/w3.css | 366 ++++ templates/default/css/frontend.css | 1 + templates/default/img/PLACEHOLDER | 1 + templates/default/js/PLACEHOLDER | 1 + templates/default/languages/PLACEHOLDER | 1 + themes/default/ShowActionEditor.htt | 4 + themes/default/ShowActionListEditor.htt | 31 + themes/default/ShowCalendar.htt | 4 + themes/default/css/3/w3.css | 368 ++++ themes/default/css/backend.css | 1 + themes/default/css/default.css | 68 + themes/default/img/Bezeichnung.jpg | Bin 0 -> 917 bytes themes/default/img/Bildgroesse_aendern.jpg | Bin 0 -> 8462 bytes themes/default/img/Categorie_53.png | Bin 0 -> 7365 bytes themes/default/img/ColorPicker_20.png | Bin 0 -> 58461 bytes themes/default/img/Datum.jpg | Bin 0 -> 2176 bytes themes/default/img/Datums_Format.png | Bin 0 -> 15071 bytes themes/default/img/Datumsformat.jpg | Bin 0 -> 1675 bytes themes/default/img/Edit_CSS.jpg | Bin 0 -> 1017 bytes themes/default/img/Eigene_Felder.jpg | Bin 0 -> 1182 bytes themes/default/img/Eigene_Felder_Beispiel.jpg | Bin 0 -> 9090 bytes themes/default/img/Eigenes_Feld.jpg | Bin 0 -> 5321 bytes themes/default/img/Erster_Wochentag.jpg | Bin 0 -> 1861 bytes themes/default/img/Farbe_in_Kalender.jpg | Bin 0 -> 1913 bytes themes/default/img/Feldbezeichnung.jpg | Bin 0 -> 2185 bytes themes/default/img/Kategorie.jpg | Bin 0 -> 1135 bytes themes/default/img/Kategorie_Auswahl.jpg | Bin 0 -> 1448 bytes themes/default/img/Kategorie_anlegen.jpg | Bin 0 -> 1897 bytes themes/default/img/Optionen.jpg | Bin 0 -> 964 bytes themes/default/img/Sichtbarkeit_54.png | Bin 0 -> 6906 bytes themes/default/img/Speichern.jpg | Bin 0 -> 768 bytes themes/default/img/Start_Ende_datum_14.png | Bin 0 -> 7684 bytes themes/default/img/Template.jpg | Bin 0 -> 892 bytes themes/default/img/Title_12.png | Bin 0 -> 2126 bytes themes/default/img/Uhrzeit.jpg | Bin 0 -> 1813 bytes themes/default/img/color.png | Bin 0 -> 892 bytes themes/default/img/picker.png | Bin 0 -> 5121 bytes .../default/js/DatePicker/images/calendar.png | Bin 0 -> 1091 bytes themes/default/js/DatePicker/lang/date_de.js | 8 + themes/default/js/DatePicker/lang/date_fr.js | 8 + themes/default/js/DatePicker/lang/date_nl.js | 8 + themes/default/js/DatePicker/scripts/date.js | 513 ++++++ .../default/js/DatePicker/scripts/date_de.js | 9 + .../DatePicker/scripts/jquery.bgiframe.min.js | 39 + .../DatePicker/scripts/jquery.datePicker.js | 1230 +++++++++++++ .../scripts/jquery.datePickerMultiMonth.js | 188 ++ .../js/DatePicker/styles/datePicker.css | 225 +++ themes/default/js/DatePicker/styles/demo.css | 105 ++ .../js/DatePicker/styles/docs_screen.css | 81 + themes/default/js/PLACEHOLDER | 1 + themes/default/js/TimePicki/css/timepicki.css | 93 + themes/default/js/TimePicki/images/arrow.png | Bin 0 -> 1378 bytes .../default/js/TimePicki/images/top_arr.png | Bin 0 -> 1125 bytes themes/default/js/TimePicki/js/timepicki.js | 502 ++++++ themes/default/js/calendar.png | Bin 0 -> 1091 bytes themes/default/js/jscolor.js | 1549 +++++++++++++++++ .../default/js/mColorPicker/images/color.png | Bin 0 -> 892 bytes .../default/js/mColorPicker/images/grid.gif | Bin 0 -> 87 bytes .../js/mColorPicker/images/meta100.png | Bin 0 -> 828 bytes .../default/js/mColorPicker/images/picker.png | Bin 0 -> 5121 bytes .../mColorPicker/javascripts/mColorPicker.js | 611 +++++++ themes/default/languages/PLACEHOLDER | 1 + themes/default/modify.htt | 7 + themes/default/settings.htt | 31 + uninstall.php | 7 +- upgrade.php | 183 +- view.php | 148 +- 95 files changed, 8291 insertions(+), 1697 deletions(-) create mode 100644 images/PLACEHOLDER create mode 100644 install-struct.php create mode 100644 lib/createBackup.php create mode 100644 lib/date_formats.php create mode 100644 lib/upgradePlates.php create mode 100644 sql/PLACEHOLDER create mode 100644 templates/PLACEHOLDER create mode 100644 templates/default/css/3/w3.css create mode 100644 templates/default/css/frontend.css create mode 100644 templates/default/img/PLACEHOLDER create mode 100644 templates/default/js/PLACEHOLDER create mode 100644 templates/default/languages/PLACEHOLDER create mode 100644 themes/default/ShowActionEditor.htt create mode 100644 themes/default/ShowActionListEditor.htt create mode 100644 themes/default/ShowCalendar.htt create mode 100644 themes/default/css/3/w3.css create mode 100644 themes/default/css/backend.css create mode 100644 themes/default/css/default.css create mode 100644 themes/default/img/Bezeichnung.jpg create mode 100644 themes/default/img/Bildgroesse_aendern.jpg create mode 100644 themes/default/img/Categorie_53.png create mode 100644 themes/default/img/ColorPicker_20.png create mode 100644 themes/default/img/Datum.jpg create mode 100644 themes/default/img/Datums_Format.png create mode 100644 themes/default/img/Datumsformat.jpg create mode 100644 themes/default/img/Edit_CSS.jpg create mode 100644 themes/default/img/Eigene_Felder.jpg create mode 100644 themes/default/img/Eigene_Felder_Beispiel.jpg create mode 100644 themes/default/img/Eigenes_Feld.jpg create mode 100644 themes/default/img/Erster_Wochentag.jpg create mode 100644 themes/default/img/Farbe_in_Kalender.jpg create mode 100644 themes/default/img/Feldbezeichnung.jpg create mode 100644 themes/default/img/Kategorie.jpg create mode 100644 themes/default/img/Kategorie_Auswahl.jpg create mode 100644 themes/default/img/Kategorie_anlegen.jpg create mode 100644 themes/default/img/Optionen.jpg create mode 100644 themes/default/img/Sichtbarkeit_54.png create mode 100644 themes/default/img/Speichern.jpg create mode 100644 themes/default/img/Start_Ende_datum_14.png create mode 100644 themes/default/img/Template.jpg create mode 100644 themes/default/img/Title_12.png create mode 100644 themes/default/img/Uhrzeit.jpg create mode 100644 themes/default/img/color.png create mode 100644 themes/default/img/picker.png create mode 100644 themes/default/js/DatePicker/images/calendar.png create mode 100644 themes/default/js/DatePicker/lang/date_de.js create mode 100644 themes/default/js/DatePicker/lang/date_fr.js create mode 100644 themes/default/js/DatePicker/lang/date_nl.js create mode 100644 themes/default/js/DatePicker/scripts/date.js create mode 100644 themes/default/js/DatePicker/scripts/date_de.js create mode 100644 themes/default/js/DatePicker/scripts/jquery.bgiframe.min.js create mode 100644 themes/default/js/DatePicker/scripts/jquery.datePicker.js create mode 100644 themes/default/js/DatePicker/scripts/jquery.datePickerMultiMonth.js create mode 100644 themes/default/js/DatePicker/styles/datePicker.css create mode 100644 themes/default/js/DatePicker/styles/demo.css create mode 100644 themes/default/js/DatePicker/styles/docs_screen.css create mode 100644 themes/default/js/PLACEHOLDER create mode 100644 themes/default/js/TimePicki/css/timepicki.css create mode 100644 themes/default/js/TimePicki/images/arrow.png create mode 100644 themes/default/js/TimePicki/images/top_arr.png create mode 100644 themes/default/js/TimePicki/js/timepicki.js create mode 100644 themes/default/js/calendar.png create mode 100644 themes/default/js/jscolor.js create mode 100644 themes/default/js/mColorPicker/images/color.png create mode 100644 themes/default/js/mColorPicker/images/grid.gif create mode 100644 themes/default/js/mColorPicker/images/meta100.png create mode 100644 themes/default/js/mColorPicker/images/picker.png create mode 100644 themes/default/js/mColorPicker/javascripts/mColorPicker.js create mode 100644 themes/default/languages/PLACEHOLDER create mode 100644 themes/default/modify.htt create mode 100644 themes/default/settings.htt 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: -

    +
    • Start date: the day the event starts. This may be the only day, if it's a one-day event.
    • Name: the name or title of the event.
    • Category: the category or type event, for example workshop, training, meeting, conference. You can add unlimited categories in the Settings. After that, you can select the category of your choice when entering the data for an event.
    • @@ -110,9 +70,5 @@

      Edit CSS

      Like many other WB modules, ProCalendar gives you the opportunity to edit the stylesheets for both frontend and backend. Make sure the CSS-files have writing permissions, otherwise your changes won't be saved.

      -
-
-';" /> -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 0000000000000000000000000000000000000000..ead7344132d5e073a146b5bc68da41ab49264105 GIT binary patch literal 917 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77!(**F*7PLFbOg;3o`yc!XO27Br_w(xp2V9#LCRV29z@rU|?cm zU}0uwVr7LWU}R!oW)T!pWEBn+Q8EmjH07dWp;<}e#7)X3iA4uD0`-WX7zH*HC@Lz5 zA8#gExkUis`$Q!SSL#>%SHy?llC5A;Q^S&m`WBJj@BbRyGj&Oxf%2Bx{U2wDh=2GMHk68XJt~X@7SuuU4`Zjq( zC~fSdkp3-B^_l0}_A_Nr`a*}~-|3x|ld2Ox%R*@rCARw1M{z0hZqyuy(q}muPmBIt zd;dlKr{sV=OAf>Y28byK$$d`0p1I2*!I7c)5zn(3S=tFFeX|Z9Xkj>T-eOJc+78n+ zUjGSkFJjtbzRz91>G@u*!*?DXJ2@w1X}0|Kzw?$KzMP!3Y1Z9co0?M0#QEMtu2|Xm zQI&;XbVrZ(qjifWJ-D{mZ^G_*%k7un3VD+1jjtn_g4j*1^IwzM~)NYlc00x@>nyq5dqmgb zm{`iyTcXvA6X#qO2@wqmY0x~wtDJnz`QeI<-L|Hi<%I%-nGe<}3!XdLvSZby#wo0F zmYy-8-|vPd{&cu_M%CeL|7#Q8&`C$Gwd^>#dvW2vbQw4CISWOCM0na(ZB6}lKSS_v zUiF92o7q{#^U`(pZSMTzFn>z^GxhbnP7hajO_(J9s&137=+--z_FuWYJiz+t<0*lc zR4tQNSM?Mf5Bn-1-sufU0RjaT=&u|5i(X0?6Aah=lqz{ZLxPy5!sGCVCCeI=p( G|4jgLfO!)D literal 0 HcmV?d00001 diff --git a/themes/default/img/Bildgroesse_aendern.jpg b/themes/default/img/Bildgroesse_aendern.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a720cebeb647d8e7fac61f452b10b32829e011e0 GIT binary patch literal 8462 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 literal 0 HcmV?d00001 diff --git a/themes/default/img/Categorie_53.png b/themes/default/img/Categorie_53.png new file mode 100644 index 0000000000000000000000000000000000000000..788b83b31b2d180b45e957cbcdd854fac3ac9ddd GIT binary patch literal 7365 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 TRK{&!V$iLdcXdj%Y+wE#-Far* literal 0 HcmV?d00001 diff --git a/themes/default/img/ColorPicker_20.png b/themes/default/img/ColorPicker_20.png new file mode 100644 index 0000000000000000000000000000000000000000..89bb6eceef9ff6cc09e7ee848c90aef281d8c1f7 GIT binary patch literal 58461 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 literal 0 HcmV?d00001 diff --git a/themes/default/img/Datum.jpg b/themes/default/img/Datum.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93da5dc25d1a75b82dc13c7663ff29e0ecd7656f GIT binary patch literal 2176 zcmb7Ddpy(o8~@IRoXA!fb7>;A+;SU7KO&i2i%G^-OmvD#nOx_xqTFqAT|d_`Qy9^a zYIQJ*l{vYNF6b^Ljqd^Sqzu{d}I+BOVdI2B1zDM+^W0 z0RU+I0OB#g4p7)8zg=EVVLNm?Tv0(;!&p;8O-;i}&p_MQ(Z^RBG z9&`FyASp67iJIi*msyZO$q$cDirYv6QiQ`b5E=(GH4nsLG1$2OTf~n5*cMHc;2_V*~ZVK?XKqSEuAgOhq1rz{*CDxxHNh#?~HwcgbLtv8IHH~&CxOwz#R3_t z@qO3Dp%v zvrW#BUAT*uj>*FQ>m`*ePsEm{DIVhSh|A)MHb;w)H$qdiPS*!3%lb;i^pr{eqT6UU zIFM3M;PY89Mmishe4ylNy?5bHE)ivSWj;+=@AvQCa?R-3P^T3Kg1gpD=b7pYX?{a? z)BOHCR@~4EciOZ+aFF;cP_-(h#7%e4>7%Ky2~66m*GRhex9mJmvkF}4*7AImiZbnK zJOQLFmpV;l;vCd3U+pAW*^Ow1yhoY~Iw)=rRkzm81T(Ovv@mAsyI&%h;DP5GgH-=y z>tP^Oj~;N`y0pK^S|_0K`~&WXg!?ElaL$aM!E<%jeWiT8OCS(6zjJ+zSbiZnT^@>3 z%e}KNDyXmx-CL9hAm&CGwCAMZF5+?@+2)Lzw@dq!zhHGbq1-lRFCi7phhdNEWo0-8 z_=N_U&d25$F35~VTQrB}7?+g9P>CVK8K$z;pRFq_LoVAYY~yLgs`T*m?U>h`ApVuQ zZk-}zyy|poKQTK(4n_7D^yEtQBCnZ3OJ9{K%VL$3 z6*A1G@Vg9x(_it^25x=Xk0e6Vy4RqD~V)!iCju2v@O_5M%iD{k(RVvtI@ zecGA*wgIIXH<L`(4J-b~y*yPa<#ptG?8A@F3zqf01*`g8#cP_;z z$DY(i_e|Y(?OQ$>U3hO*L2VyuPMb`%tT}9aHvfo;Qo47d-PN2ECMj(O$NKqNru~Ii z6^lBGNrFuBPuw5_F(CQ#226$S7vxlLQkC4Dv0I+3Ql%93bGT^CnbgE?4ae+sKQbc| zB07YZthP{+8T<|AO7aH35LM@!!fg%Hg-Lg zwvu^Y*CHJXxr|IWB27_Yk9f;bhQ?(l=K z6xrKwTUwN=whQ?-I;e1>r^_O+g+Zx*$(_4db1p-4Y4GsqDdjBeBWeeoK**Ub|qF`c0skA@tj5-d9fwZ}e4p}Df1S&PeSx#}) zu*FD;u4ZTZtmBjUA_qUmxi(u1nI{>=+qCaPb=Gl&?UUWu_jMcHVK<7|TJ4tBKd4~E zdWTc;;+V#quK|-jV-HFM%)Cv{dL3ABfN(tqasE z_lwFVReV78n;A`3U+EQaxX&<0qv!o5$DpCX-Y)%=ypNpV(gXI(8l6=d!XXZ>P7bc~ h$k!t@?v^C`>G6c}gw@QoSpz55%AO_jZ)|Dt=wD6*(W?Le literal 0 HcmV?d00001 diff --git a/themes/default/img/Datums_Format.png b/themes/default/img/Datums_Format.png new file mode 100644 index 0000000000000000000000000000000000000000..27ec4520ef36846443a7eeff7e636242c842ae50 GIT binary patch literal 15071 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 _~YO6IQ=L8=df3;Up5|E z<{6vpaC@^1(m&e2JWJR6t77@zh4^^xSRlw`K)3>l`fAUES`c zlkOH<#r%@Bc(vcXfd_|VX~buZx}7k*XO=Ynj*4Z zY1S+5*|rky4Xe&X;HFW_YmeMySLw_s`!~#-6RawxMIKil?gl-j}-j~=h^Qr15ZGkK>< z**UYdvjS$E*xgp$n5rD*7i4hok!PrC*fC}{9yaT@tM9G-6=HPzhP%jPZ>EBsEUTV8 z5VD?NIQiH2)l(J(;Xt9|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77*rU#nHiNBm;@P_1sVSzVUPqm6$BU%fR&kr4J2hOz`)4N#KOYN z#>NbhWn^GtW)Tz;R-7av797HAXv*doSlD<_$tkg@d1BDQjX+HjK%xG~RCcU4 z{bnVZrhhW|Ze!yUF#+Fy%po6{s#1`3bWZzoW{_N{MQ|Ek<+Wpn4vYCi588=P39IAe>LdD!&c z5BVX>|K3m9JL&v1Eq#y6U4DVLZPst8Tly#Y-ICRH7cTq!dZ?^iJS&Q==~Xy);Dzal zQ3}_mq@9?*EU7zBZ1F<9LvwW9onl+#GoC-4v8wpoNvSitx)NA?GqWG=UdOiUq5apw zf~~TgWg-u=tc2cZ$<0jN`r&O~1<%GaFAqB>7(SggySb&mb!~0U-`5XUwtn)sbKt_S zwBsGk2@mrx{d;=+(3KL^8^NtBUU+Xee-Pe&#&lOx`R8)Xsx2z<&V*KKih}2RoqfKx1ud# z*4^Y9^Vcc8kC0$2PFjHNj2^-PV#< LB?Tm={r{T)9$Bva literal 0 HcmV?d00001 diff --git a/themes/default/img/Eigene_Felder.jpg b/themes/default/img/Eigene_Felder.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfe87be64f255f4a79dbcc1e0f9f8837e6f74685 GIT binary patch literal 1182 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77*rVwm>HEAm;@P_1sVSzVUPkjl^Nt*IACRBW?^Il%9#r=FflSQ zv2ieSFhdkDGBGm;9`9 zyH4HSzJ6-)m;TSJ{|w({H_4byQ=f8LCZmNZ?(gy!{G}zw1V86IndiCEr0Z{L?(OTR z=7Pz^dlW-w#(RkLZ|N#}`(EwZ!#K~jc`D~sgp_{F2mHCBLClY5QKAm_n ztg~r~a^CI#3?bJUx2t<0JASE*$ja8rr|vy$0nCb$>+4@_-G<`2Sr5!obRZTi{II_( z``ziqCsX(5{%81}TeD=Mryx_rO-^yi)^%Fv-RcF^-`G9cI7u*YOI6ZIb*;2{6aOXb zKW2Nj_`x!lL+2%@Y22OZaY-$~Vefwi=h#>!H;bZN0 zXnfn})5*LuPiBW^mYm9OW$bEHb>rs?wmNZB%=^v0%d^wDuXPv}9#hTaD@yld*nWo5 z{QEjxkd-F+5AsB_Y{tsT+dvvtoIM^q4}m^ZcoeI)5L`(`$}fG@U;5g^oX6mbaKYi=&v_I=WGn$ zGErJ-Ye(SrXa5lSH}GVceFyP^kQtMZa($4`dL!`{je(IAD#Az-$lhi z=7w9DN^>qr;*j*;@o%+d)MvMk>hEq=c_>Y}=P~howT5Zm%C@_YK5+%@^gFmJaeKv{ hrdi9R%ezl#dNESY-KLT$u_a@b^^~Y73+(^j1OOcX>_Gqk literal 0 HcmV?d00001 diff --git a/themes/default/img/Eigene_Felder_Beispiel.jpg b/themes/default/img/Eigene_Felder_Beispiel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..925150bd359c0ecb511a690eda5471f09de06735 GIT binary patch literal 9090 zcmd6M2UJsAvv3GV5T%Pq3tc)W2+{>axT_P=@(xfR(s`Q@FdqAa1=p~^e zCA3hacX+7x-u3QX-~0ddzV-iay>r%@Ip@sYQ})?=_UxJSk@N2Wa#bZ2B>)~C0DyOK z1J1_*@_=ikWRzqi*C@#;X{fK=01L5z85qFQd;;u3Dzc9rD$6PcYbj}Y|F^I6&j1P{z&;)hACDCP zq`{3zL4nQCy;Ap}KZk zj#WeF>4$!5A#G<^^m{fDm&`Ku`3BA;6ro4|8Ek0GQz(g zFj3(BlmNv4OEv(Hf<=z}8mgf#0N1)dRO7r=(;9#O)|KJ!QR|G=1-eT5cl`1*4Pf!il zqaVh3Ws|wJ?AVTzjj6=UjV4*N9g+1O&8=0ksl%=!#wIYU_XSz@Vx{);Ra_b9^&%U` z3aT~xer!#Nxwq2WqlX4r4TeJs53&?w6%+{m9q>qob|=z9dc1DWdksFA56^qD1sMe%Pw$sP)e-W3J>_i8I5^9dS%y9^`>3V zGRwYn|2S8$+eFmCUE>3UJ5Q*%Q<>NPrP{sBl%+Pe+R`naBEehq%Lt& z!Vv8*9txmY2bw&Nrp!(XNI2k4h&Wvq*B|YI?lOw3;KVvBgZ=sefq)|8c4 zfkeJTqgpn^l6w-@Ugsfo>OXCVwDVog3{#6iD^^$bKv1_Z^HRBNGzM$2y>q6V0?6a3 z`GzqxcT$UE=aopM$LwQWPs{@za)I$(=wu7o^b=~`GgOwgE z3(BU{LJ}ogcoxx#7zb5Y$2F3}rI#&_G<6LsxWDBF&6Jl74afUx!5zF*ikk~T!80BV zUoN|Ls4#;~DQchA=8UT|C7b^Jz}W@aSj8p6{d{(X`K5nz{wXNn(bLIL zUTbYHKE!2YJ8kj+Ec@{&$SElP{{bLu7TS5Eos6xDw}VeA^ z6%`$7^{NJ8hbiry+}7viY;UL4c)Km&{!`WLJMsE@M9%vQAwPi}l1vzi;} ziZ#`V`1HQud-Q>-`;S>M8%w&D+PrxwbUByAu6<;ucFW9ue#=@x$71^>xy2%8x-CqW z=U|%wiyv9YaCE>&y=(2d=8Z|=_Dlwt0$qj|B8&xn#QUkAZF_>w0iLh(!vU3L^x z4WY)59YSkZe9r;e?M-j3tWw#`ARALa0;Q+rCTOuVU7*NAnK)Tia;eGzpd$Jpd|c4g%y@b#2LJv-sIR-B)o zr7(FmeHFc>kv=Oxa9#u|KY)pxJor2!evOdFv5353-jy^AcZ}S|dg<>qad-}G z6mJyOu$vb zbAVVbYqGx@jovdb#|=i`$Lt~3A&UAjm6&P{yID8&WA&;@<2#jT(L$XCPLm62t1ibd zM{G)_f2aHGRsPEQI*!nuGy}O&)23nknxFh>m(!x5+jCFpdD!1rJTpF{`d-du=)k~z z>D`?thV^V4LmL5SxZIQJA*(_c?o8v#N=y@}2fkl2@k2+=5wzeH4GSOZ>+s$w8y}qH z=yb1vby1=qyOz5L#Vo}a43-0?jI?Y@XMR=T|88pdZMW z0GA`k+AcZnrmSu(7I_wJ*!W3Xq4*37?f4`V={biu+benVi(Rucx*!dov^NZ!`WH;is2qZbz{x2yO zzqJ!oASQ`V&a??~I|nqBr=BLQq7O2$f(E zJ_npYXpaixFhSpi-adI`PBg-rjXR5C|9jK+{+fFh?FSFHl5@yNOQ=i)c>N!6*l7*D z45r-ga;nfeYVrJy3ZvDpv~pF=YIPlBwc8dg5a7_um`2rv8`oLuW**~{MA!n;I>P_i z%isJ3y2F-G;GS*h4TQM_KGN&eyQ>hoQ4-nK_B9Q8>Q!Y~PlTW|?4EbqvEscV<=+S* z6aM8GeDAAij1PU_o|NC~CN9RmYcsbr!BjeT!f~klr~a_%{~HSiy&VT#k62FyzfD1| zd&xJiPGmhyB3-eH=f6p5aDnzTUKVdlyg9I$2p*4dQGV2 zy7C?|&&7YxKIUCzp}rQX6EAi}lpUSlce* zaie+Ra;EQW{pehMTG5;C+LO<^%i65ho_({{0q^{v>QlJtDBb1q(uoDH-uHDlYz8Yi zyJy}1I!iy-1J44TEw0rI|HkBv4h9>EO#C?6-4HR>n72}>8PkF{mV!4fPr0|I1?$DX z(!Ks>m3NK!?ebjlk+JXLa>gYHJtCvDwh}c0-=8Ud)N{pJXw#871}SG8U#`uj_Q^9J zNx9ywK|y&D|7L#ib00i&S`osXDjjDFTselPZTo4&XVJ2(LMVbdWba?oZ|!{Ue#SE7 zj?sT;S`Y60v3JGKoN~}insDetaU@gykHmhij`}j_t+ld6?Df?C?l)d4AhX?NOxAMW zyN0maA15)4hDiMfoCBCNgF^CK-ET_E0JRJZ9();lB^#IwX(pL8ZnRx`F29R_rF)Tw z&fXh&Qd36!W%p^UXa-2+9585F1IhTq8UOUi&NjnLE%&Cpdf2{hbaukWgtu-FLMti1 z;(;r7nFM!_Pf67(`{k<8M4@tg-gP12J2^CClq!0P_nk?>nNZE|_V0buw`GJDX^s-o zP9{w^gbO=!IYVZM`N%qZAPq>WI|nK1wsRh~M)52RxDNa>E9JXqrx$LZ)af{@YeSsr z0fob^&dYCDZTo71Tv2~&m!&oD)8lDKYG4I8=k%te+=|nHnWcu8)FU=a{TJQgBc&F( z<=x`dL!@meLHW#b=J#Ys=YaV_pn!Oj7-b- z1LLRNyUVwvwoRjo9gy%{qRP4i304`SJ!$QnliM%>*|_07S>Ke2fGYzA&s*RlKhSvS7sOtOosopPRx zj0y0`lL-%akP+UKfJ=s;f#s$>!b>K*NvpXB%i9ru;CL4yo;E~9ZLJ=Z@iP07KcmY2 zWsQR~z}}ZPAri+g8Sq_}_h)CESGQYv95f z&%SiFHLP+q3;GQ2fH?9*$BT3*Ad(r^e z7cUGIP^QQU#ivWnb?Md;*wK5E#N;QJv1 z?l?8m_yVSx!+zVu(Ijc~xN+kK!=DoW#3f=8-0AQ|vx12?YW7S?!>Hno$$V4ZV8fBG zQ*wB4aTVrzvp4Kp;NTW6pG$wRL@1%0=)H za}HpXaozCl-7~tFM%_fPv}xhfxSt=L|9o)0&up{bbq=s<`Z*YXKJ*3Co^Ib8b^1A{ z{=j!w3H|1Mtz3|FIFkX--N_Qg>Zk=&Tl94FP-~Ym+xg;8NyvuXqeInS;o=_aw|Q1@ zN?k`TCu4jW$6C%Lc(cn$z>xROWN&ALQU5$!3#`0cFtD_CkC0zV_%3p8JZfbj*V;y$ zbmCZ-o;r%!TUqXBL?3Oh8I!FP2WhS@>zqggAkShb#+O>ak~@;;*-;Oqg}5lRCH zw-%oEWlMj|U7b?BAg=Frvf%pSmH$IL-BP}at+1(2I^%u@&;SXyekw;DM6mgY!xg7f za)WOKmjF?aUZgq}U+RY)Uol0fc1}{^3pkqmNg%RXYX$>-AG(D@BFUD6E!xFO?>kS4~Y~=I#7t*E%ZY#gDv5&!^MnI3DwsTF_vNO?Gt7EO9*2fCZ-%e#8` zJ>kq!R>R4|cd;^Ic6@rtt~_sf8$UsJ50vjW8jI6PX3=Re#zVRqR;Nm?g_AXGtbee0 zTrb7w$`M^6W_+$>%7$>!c2m;8Y>VRO&Z}HLY?7 zm!@0&({Cdi38Hz&(}EO{;iGPP&oQ6&0F&Ml5T?)oL>UeNCne&b|D)Qkuyj=47 zCdJHp|D*oKgIdA-0#3Q+fUFI}>FEIv$6^P=@L)bO)%2%jpb#L)ne8HW1Xq;Ob?)}0 z!+4uWBDv`oXV67xtG-Y~M{5y)a2MPtvvi$RTk0WI$z8n{jg=A>vZ6}|yV$Ah823`@ zzBPRySsh42tg0m^x2g@Ra4F%)KaIb!&UxzCD6Yc9T0$B$IR|`@tY<#jjp`ok%BNp$ zOxir*eDQxs_Tb-x`K}Zmq#cbJSJV`Ts}_BSvP4{*3$i~qx$B&$pE}%OHWyX=T5mWG zXOOdVg-8lozp3!eBM4f~+)XmsxSaOEQOwnm)GA*8mLtE7V~-A!$uGmFS!=k3m+Iz8 zsH0ej)tmBwJ;Ab9!o@O?aY0$q$BACnVNMYh?)j8Z4dg~H`LYQcovIEfKn{SoK=3h{aPYvC$t#wv+YxFns|@eY z4NRpJO?;|%WlV`4>_r6C-FFbRFr+*x&NGg-Ej|NcbADq$V)0#N`OE6#i^AQhYf>^GJ}%Z&&CXaD?(Z&irmMpIEv!r#1yHDi$6> z)&rHTCEiS%%G50*+)7aQH>jlG^_ATuKiqd_mX{o{pI*{xV(+nMj#RoVKd z{lvo9Dlz`WWiCl(yNd{~dsWJv;5Nx+uv~6xm}5zmSFo>_}XjN-c&Z=xSA0 zn)+VwS&FUqsSuRu1wZ0PZ?>a1>CKwswXhK?lSYmFLgqrs0;jT-!)ASt<_h!r-K`Dz ztthS5u9+%}{&2NeSAS}*vm*+eDY?R@cA`pYJ_2W)&fns0uB%bxpoGB&V#^*V~{!`?)f4Ig(hsb8Lt6rKGL=fDXX8dRhe$v2OjilkV`EU-t3xUj7^2P zTsjQ~e-AG|v%stap%)==&a`vT;6oeM@uIqQHWNm)hi;%wo>qLh+FK?gACEJW{AE^9 z@)gek+K&^`id9K*Wl|sMD*I1JBPVP1(G4W+9wYD`IVPY=O`?c0>*kP&uxl&mH! zWKw?}X)(mlMeF5#KR~>0)qVQ)4lss>zSi%VwxH-qHPWwWoyaTS5OLM6`Yc|@%q%IW6X2Pts>aXB8iha2dRGZ#9U)wW<)f?}pI)88wuqJ)D0!uJfc} zRl=2#AZ%GUr1;5e>)vGGF^1j2C;n_OM%*c2152zv6)y$^2| z6q7n39~Ucq-2ScTJwkppw+N{GSUH+%?!}K?m+{zWD_C=OR-PqWvn)W`*Vq$%$$O%q z)ZqDmf5ghMFb^Xkzc^qU#N@S1r zSE&wPVNrLDZ9cXZ_PVJJ$vtaO8Wk4&bOI^4RfrFytr!L zldx=Sv%5>MK}1k}i%J@JVkO+GQcp#bt~z73s~AU+*MG7&or&&TMewqoWIGq@Yuoka zaxwax-QpcN6r-67>hw%73Jj08md z2>zETH=08%w+xJGrDE;L^-L%BJ0Lo_k^+UouFoGobHdn$q+pAa=Kz$F!7Ps-kIKyq434Z{z~J zyu6^o=)KEo=Sm+qyYTKf4)uz;ld{qDfxo)WbQ=75HAyzE6aIBwC|Iyef)TG2K?d+W zV33H0L6}5RQlye|EfTh(l#X6y{*b>o{WXGnM#agjjCGD7^0QL+pE0$laccz+NBb~F zNNCINSbOrKhF$_l&jABQKhwm&a>f50@Sj%SAog*<+E`M$R}mhJOQbOqmDTm7t(+G& zY^+BYDVdry2zBUN3OuB^sBh)ya;uZBhlDcjea#@T4=l9%d;}X|GU~b1oTesLY5dVj zzpZt|hz}oLU7P~Bbr5Pfr~|jnGcpv@avZt-gAOzAJ?}+5tw-S+6hOB3;qz)x(mNBGE5ccRs(qC^H8G9}!oNxC|GBr0Xp@Q-giTaO{v! zRHxDxkXcAtGwvI_uxy+A4C7dBcuRu#4nP`Ibap!=$kuZ2BtJChRYt}GbMNuv`s24p zKIY8NTK>I4?LVqUz28mi3NCWKRf$x8MM%&7y&|yc;hwaZ_;p<`V_ptOb!NWFJO5Z| zw564PUUC;-Zj>)LczO~4{!Qryt*X`z1>4wTLbp2;4B^ln!blC=du!~(i!CJyvQfR< zk`e7dRAVB@mu(ndlfxZpq`f{|g1}H$1*wD0MR-}Kr&qJf9l2r)PYw4xAm@Pkbyy~q zXoR5g9=dSUWwcSY8aOBK`yQ7YRMh%J^;q#qO&-Z`5|yVHiIZ=nI+NcFzUoaMZ>8~$ z8zU>@*$z9a*v)Bmd`#9ta=D{g7240*d7#yZK2{0!@?eE9=27*mll9G~xut8*5eXt5 zK_>Ovm`M3S&4(`o=dvF{`{G8+#Nk*q5_dkmcEsCH&lCd5I9xW-!+oR7%T=PJ5s?WW zKK~l@|93-8w2|$?RTj_Ao3E)HX|P+MoHsQ0k$5Z0yJekOTTE(K+QV|%T;kdw^%B{H zL|T(;QjLotpN4y7c3~kk(V!dpC=k06Zw_i@C;)8HMTe4GN*_!0z=*c`rh6We^I(ET zsjv7Dx>lhc z(cXm8^qi@V5})+--$-XE-6AhW-tb!NcJTZ zvSc3-vXvsddg}R|_vz_(&inrN`{Q@t=UnG|&UM|NYrU`gd*25m2U7r}zP6q=00IF3 z=x_oDV}J&5i~-6FJ$j6pk@-05F?JqlJ{~SE9u;v(L1{hp^9DNV+FHieJ`ToaXmc%X z#~3Gcz|GLGP@}7fX$iM*KDR@IzJq{Rk00kb!K1{-rxbKi`(n_4Jr14&OfBmY4(o>??1$ig!#_kh1Uclu zn7+dusz01R2Z#yG%whuJgYy&C4n_g`LoS#J!UU)R%l%9sCPt>;5wE-c|3be873PfW&^>8`akt6ORn3MHM6+ zCscipeBsYR>`&%RCeO*|+II%})jlIsy1uN}@UA9JjHuSnix9u8NR_@ApqQ;{tc28OO`Y zw*8^y2z`m$N(LWJZ-pxSiB1Xno6^54$^U=Y&3nHD!BQv=Cz{Ji;oM&}ve4xbJUbJ} zbyTh7#r_*s!kz2Rf?8rc+BKJtYj6jf1(dbcL>?FIM}DZEPfNc;*QGsg5rSZb?VYzxhd^CuWkCwV5yn zfJX|tP5M;qOd&LkRzZ4Jh6L?_04M>oG!U;3J8isVH$a^3=no`c)8Yz<*Xjp zdWD>RU z8c#;BCa>i7N-xDY<7jza@mQf0M=vv)JXM4ncT5PD-@WT)fuWkso-d)d8+JJJx`Il! zyr>}pYmajGd0O^ON^)$yI&sj;!pCVU2DRF?Ia7@ruizjo&W6#9e6?QkKJN{N(`Drv z@M3EUlFx)%nZ(r1w^42ljG#TkpjCcc&eFTh?&#}I)6~69*JjExZ6DYiBg%?9UI2x$ zLpCO-QY-Tx#6^}fISA=E_~f8c*6{k*L>5a<2_bWBmBO=W*?24HPnA`51{OpnA}1gq z49`5wJwNWQCZhmLo&tKnEvx3f>03PARYP(1R4{%tXcJ+rEIl~v7(7oq}WWwi&>)H>{nY)_E~fP3_w-G-P0ag2A@ zQElk}xT~udScLN*G(8d!vYjmHj=3&4x~({7bARHxpFe`OGT}OskJNlt5;lIPtV{H+ zoNICJ0<$F~lxka!gjiTmt6TH;6|!=qoNBjT0K9ADFWqp`tf)zU;1;7s>vP}1-CdV$ z-&{rIQh%$h0Q}{P+VuEud;ykDXjL&m)9FBXkJt&@7(z8cxjwCL+enxf?C=zypvDImwxEQ>m3@NCy>o%#M#e#>v4`QFixYsXwNx| zhed`75h`@)cpOoybfNMKoSjhYr9Q6yw&&Wje6RF9s73d4z`ybLy$P;+QR{qDFTj=V zLA_&9Js5RK)x3Q@NnS==aCCU!0Jy}asb&209AY2j<%T`mubvOyfA+nloJmG2zV%Nj znykcM?b+}mxq9;PFa*qTo6Ajf2l<8_06Sx;hh*;nNQ#|{Yav28<#!7_zap2s$0Uq; z_7`pTEqAi3JHz;4{QThG5GZpyf9!_h9K4`)EKSK^f~~tC6i?Vhlr=hKt&-j}I;lMk zF#R@w!(Ho$IJ4ZwM-l3EW^dRoiKcTUyD-N`=}{ii`W@UAc|65#Hlr!I6VF z)yk^6^$A&kbngb4T-Bth z#BF?o*~LcO6^3&IUc`4$IB=(GKB@RW0y-Ak#S-ZMum$ z4@F(aSVEoli0-&ypUKT&nqLgaCTxw`#{6n0KEP02VxE<1Xh?3MaHWkLU=yb~A6x&_ z7T3S5vL!8L$q#>y9wd0b&&Jr!k1y-5A_$Li)4^X2F3cwJ$Hy20X|JbZF+c1y3zU_B#qX*)YU!rFY&Qsa%OaYs_K6l#GwLf1EB!{;0uLyEj)F34KCz z$(4M|*aZZ;xejlspGL3P_cE01&EE`u`z_@MQd)F@#O(?$f-$hdjRWrMOmDC&LHFWC8|L`+3!hu&NKL-mgCKXo9_51x$ z@zYq}wm~az*Sg+673lp4s3LN)wDydx%a2t*mBF`$Ojd>auH72>V2kZvwvFFWLDfHu znntQky+AS5Z87~M=eRZF-5;W258K`-rHZ9&|hNx z(eWRZ`J{Wbzi;ndA#EIix)N7Pup;(?je#efm0L9o4giA-iuh7Y>fJR>MRl%Mv+lK? zI89imR>){a#?g1JD)XxVwE`BT99nRLb*|;BrYg`(6^K=@R`)!c8Ba5;tO+~Y>YqleQK{m z=TA@SXzDVB;fc-a304Jvz(RM!{kG$^yk-V2)4O{&x-R-)mNisMYh>CsS9vvSOalkk&aVeShLOpSCwe1UMljDRQBt#gP%*}jW|HGBk z!YQTfR#?cM4jB{UT3cH#l^6}@V-rA4V+r@x8WDP^?3uRksG;_xq<-tb97amKo|Gzh zywMR>B5r+y+(XUqlwo|iVfNQ+!C$pzCm`VFdk1wwR#NVW*^lkBd71X{8fILja2egc z7UkbVsnC70%q#T{gB-iz$DCUE+SiTwxy$axIWZk2x6)j;eU`YF; z`~n;bwHSxFJyJR5tcpTjFnE#PIQ`vFEr}v(Ga13w!+4F7YvmrHIRM|+JW+VMZ>gcD zRs2~b>3^Pkn4VC+P9f%DkzRoJT)mDhMJY6){c{eT1BTn+Br90SWAMS- Fe*v_%=`jER literal 0 HcmV?d00001 diff --git a/themes/default/img/Erster_Wochentag.jpg b/themes/default/img/Erster_Wochentag.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a84649a0eea18846940bb9bf994ad53ddf472cf GIT binary patch literal 1861 zcmd5%eLT~79RKa1rnu}Ud8iE=om9xA)5CeDOthMZ5Qa&ti6n#=Zk9ZxLa`IYGK^B= zP9w^#P+WP+L!A=K5W|wko!#qR-Ch6P>;Ad-=k@x2KcCm<`+oRJUP%T3B;Ll>27o{S z0J2hmqz|wJ6xYcs$bX}#fK*W4ps1pT!>FN9YTs|y)56)B9kknTW@Alo3-uv5QJt-A z$P7PfcoZ$3=0Hl#PKn71Jx`04ia<6fE30i(+l#^MjV9U=Wj+Ua+8=0NiQG=gRCTifq*Hn zV9cBqRt1$8v06MDNb8fH`m)jf4=-|%yYf>FOb02&rk}OU>NZ;v%^#4xT&rL3jUV9e zzrnCNlKQx~M3Ij7B?v!yF+a?zD9kOq>{WJ0XF_~KgX+ljJ>zy1CC5=8b!;M%s^Eg53+PA?vqMqf%Pc^;j|YD)pa>SrP^XH)4K(be?wT- zv~VZva^dCp>4CO}FxN{y|Hb(5&NJa#&nb1RM zVxd?KEEcYAD$}HDY&>t%D?SyHwAi^kG0;>`mkz01;hVwTY|+*rk?af}O)Z4lt+Rg` z8G|zvXT1DemF?tw^H+XJ@%hzJ!THPif~W7zM*BQD9}TK%-TVFg-HQ}CPlyND_Z}@I zBo4MA#-i{QB75{k^OEnnX0m0_DDZNKfO&duN#o3Th4ZY6l!{9d>8{1@9X-=rj!U5u zHjT6~E0>Pv;!Ao{tsUu$tS7QJSfoSLbJaibr2+H0ecY18l{Gt>E1B^ol?05`*;l%5 zYLuaV5e zHK<1=wQiXW7vK9$0yIr$#j=e8eD#zwG+R#+%i04`MH`c;B%Fn@Z~Fbu3lD4kKbp>J zsfSh+jCCC*u|~newBCDh@geC`Xe?(h+B5HUE(oH~-Gd}s6~UGH#o|&_Qk2eR1Aoouyu_7Mp zKb{;!Xqz6CXLgl=ZVAJ{r5Gdm6WkA+GBpQ+g2~h?8Acp~fsB3b^>JB_nJ`5*om#o& z+<99UCOVH++!>Du979~Upt;X2(6G^agr}mmw$saNj~vZh4NJB5jwBCih@V{TXQ-4G zbhxrhW^d8lU3nCrHD%PyrUt&Ppv5HgwM`PCsY1uoPDrWYzEfB6lv|urPn>&xEtRM0 z#uv%)i^dJ3IPY=Ik@+nj_Z~BerHvQjy*XmAtz48mxOS2x?ea!L7``IvjL;O6mIv z&5iLgPc@-upVgj!XlFfKddfQZvAP@Yw|0J;xrxKXgzG~3 zQd{XV`=$g4zA`-aLa4^~D@wkr1x|yA4~M}mU%C7_%FDn>DHqTsOR~LKSl~m8PpSXg OHg8hD@GOHS>G>T9Q(bug literal 0 HcmV?d00001 diff --git a/themes/default/img/Farbe_in_Kalender.jpg b/themes/default/img/Farbe_in_Kalender.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09fdad58ab6b471be2f857e8de0b3f7137ef0657 GIT binary patch literal 1913 zcmb7=X*k=77RLV(Rg5AjwN$k#sAVj%wzk@$Nr)n0CYDDM29r`rv}iC*YdW|QqJ&~n zTPn8J9!sZaEw$9vV5+6IGS*&g)4E#C)%)Q-_kNuBoKNRH=l8tN5&tQk2NY2VBmw|| z004AQfcPcg0w~EVKoyQCK^37Y%1Wx5a4k&@4NZF^V;CHH-UID^9^rNoPa|H$MftfQ zLQ}({;^>SU3`|Hy9y5tUOJ*c~gMgG(R5aB!ZMC#)6MYfBiGN$-E&w78z(6Ko&}l#d z0s=!o;vPW#AS4*{E$)8>mOLZ@k~;8A6#)ql7%XuJEGYs0&jv^W3`jx_LA8#WDV=um zCQuk`ZMd_KatV=IKYnm=?11#Yr~@WQ;$W@@`DXl|1%f~&w8S%j+yPkv0)_yNz~^&* zMqhQ8@Y!?Ul}Y1XufNJDBE>y_In6>kct+BG);1>}vOd>W$Y!nRoIlxdcgAs!UeG2r zYj|#Eh8{_R&LYpwGT%wfRj%ULrPC8%5P-WY9h6TnIyp(e?@e4>z);G@U7 z5bQRqnn>vHmK63(4&nmnli6c|7*Yz_ z<7ZsCRvEw04ofOjJ|Gt83!C7uba@$sWcZf%6&-`Zby-2i&sk`rst(p{F=^WkHJ#U6!b@5KfA9F4PpTTuGdE1^v{kFX2EtV|}# zIE$)Si$-^K0dW|x9J>-Kp8{uRIn4|Gu~nQ;13K+UTQ?c%`QWNLn~&OmAeX*xsg6&L zS(S~;G~2DtwbJ9cBv3h5N9`Etx^R`wL@bi;`bkPz{%UbtvQ@Fes{Pun+KCd@_8ieq zZIOL_1k!E8Hxj9C8~LpV)#<|$?lMMfcRZ|&CrWorW2Z1pbk&7`_-==;apMrS+ERhF z>;7%MU2Ick)@%Z<)CK?U39-cf06~SzPz&`?@_%{Ia$iq||#E zBj&$`#DA)Ky<8gbVrxYo+M^;m(RGA9lYc3g=l*?< z8reNrEamZB7Hjv2n1?~|tGDJ%y;{isDEv&1;Ki}M(8qIsh*sM)bMcGB`Fb}-WV_Iy zziC8gDF~9k2)PEYd6OHx6C>7dkJCg4Z_(wsErzVs{2uYq>~YJ^jU>kXM6BmgJITPP zQxJ$8?O*(MZZ3XCWUR|Mk*QHnqB@w5j3DPX>Gq-=y>RVkedc$) zDk@ho6Va<3=q;*iL40BzqO;!Y%g#Q_d}kNzR2vrX!k8pGGSp1dQdQkzLSC6%ruDfO z_%621D1Pb-?V~U4ih=2ONo|u1(`Q0GwI|^%lsCWJ%oK?}SQ!XVeq5_79@?w644Wqk z8=LM#TW-wRMxS*2LulYyql@e|`+CL98_6|{D>Osu}R$LofGKkYR9v7&Otq2cNo@UP&g?iPMntg=M+cuwNNxc15Fl`%}*hB8OzZGi*!< zw_tm=TM`Th&Roj2m-159z=thgo$_qH*|qtja$cNX>*&dXZ{P~ZO{+q~mpLpM%m$C0 za=(a4jj{RcFTh6)_xnnBxc15=6K?fWb^@9za0yJ`a2kbf_yIqwKK7V*2XlPWOZg2i zWiU!|-0P9t^|(Goxof0h+WUam3U{-@(mxB)mK)A#4w#iL81r-b16m|y>GCq#_YC(` zYIhEaskv&|j4J$uNhZlf3jE&VpQ^obKa6a5iv#a;Ft5?4>(?3#*A}!WN^o0KwlMc_ z{ZeLc)WieqqC?V$p~f({^uw>_Rn@Ht93I)QvUAYdwSQ6h8sQE##zCgG-M1`%AV0V{ z<=A)tihD7;F7zot6Fl1peD%ZNBc2?JO`$XDkwY-R$ V!)tFKpnOVmcxROUemja^{2RPQV0Zuk literal 0 HcmV?d00001 diff --git a/themes/default/img/Feldbezeichnung.jpg b/themes/default/img/Feldbezeichnung.jpg new file mode 100644 index 0000000000000000000000000000000000000000..285b930e50981a62d01d9758b60637415f7cfa58 GIT binary patch literal 2185 zcmb_Yc{JN;7yc!YP+Jx|5o4KZZ6&DM+SpR0QnZ!^bJQ}l#1=#?qe-V)D%OTB2-Q$~ zLrNDlYHuT@8ePz$s5Pn!I#o5=f4-SBe|_i7bMHCtxzD}#d7t;)da*SDAe`||cmM-Tcdy-AS(?=!KGwT2$X`HtRe=hjzOa_)_Mk7SSQ>e!a*F~!IeY_aP=U2I^cuO z2a~BuG&+sw&nV1HDWLpDOa3kbl2cH?C}S+u)h&~c;EyE#-`HvgkYa!tPzM2N0AM5t zf&^`K0m|DZ!H{jE{{vVA1cAb~d*%oL41$1QP>{$D=#LQ)7y^hOQBWCKbt5+o8;|Jn z0ENzJd|+(iUiM^VdsPnf{RjSm@3$!-zw?m4^B@}}XJu;yklZ!_MnaIl z0bnh*&MZ}^{Y@p+d1^@|RiOWNLYRf6-q|2luBY-v6U)#XUJX^FEuYOTnpiXK;QldU zX4D-+%ec(#tBlu_DDtNamoTsCR@D_u`unGmO9Qb8>70}~YZ>46tNbH9_gcev+0uz2 zx57mbV&<^cx;GbHZr2LcVS8i(wONB8FUIOHn`f`}MwS#A%Y+c%k$V!Qg}Uj1ajC{6 z=k6;?G?c=t)9`{!^fy@Z2#*q-D3lU3lI(K&AF)DTrOC#88H}q&^3Zo%Vsz&%e4HM` z1ATP~o8=U=*Dl4XtA{eE0fu*aM6Hj_yZZcDmN84chF!1FpTL}imjFQ_Y9R~@7hj7oWC7lGi~#+ z_MoyoO~b)nRSpkSj}lMlFa2Dwb7(OW9n$ZSP_P`Nj~Nn_U3MCiF3m|@QkGzZoE&;b z8j;yasqHZ?`LjyJCnhUREW=#DD?Oe~d0ic~{<>^Me_zr&*U$3wM=wd$SbeTeHp5v{ zF`QauM~1dh5xw&DcM%4uI#r$HiRaq6lke`^O^_sXgHJX_%8wwvezi4XJ-%76H}`ge z&>xTP)bmGreEy+VWW9bPS;8i`R!H(&^sxqeG z0-Idsmh%FcRbEzQ%7wQMi;!D;T1(#tRwNA*F&l#Y&`Nm9f*N?x7ty8lT5NECu?07C zsyXSXX5+2&&Tg{!zB!(vh)2ZVM@jO{lOFa+C|*$dQ%A|v;?ah9+i}N36;Su~yqq_- zq6M{EKnClF?9+2?t8iLq%v>y+@{e~6{=4o{csa{8PlcZRviT&x#4mI=x#1-xbIi6@5OZ^T{%7&3Bx)*>PhuJn-5aA=)a8VwJ7s ze1rh*MZeEw_S$($z7oEut6&;~#%QhZeRy-F6$2~Z`_=A3hn6t9Cc4slm1pGLs1Pj`_br_zHa6AFy@=vB?@`CCD(?pwo@X=tfP1u zw=%vZOE)1XFP19e8w|L^;-KcD*41k4a>+b`OvNSk3B&2LyKu*|7@rPoc#{h?e({O= z=%TDasP`E3ZbF=*i_H#{*623YoyOT=Ya@O)dVD`fUV9AK+#@F=fnKQyXSRyKH?}ml$ z3H#jED;dmut&|3CSeik2UG=n>uqkOLC z)lc5Kei?d(GTVi4zcx8t;WVV6_%t&H;{n?+=XW3Cg>k_b?Cz|};rwHe^%dY}K{d?zft;O6pR6GiXXU5>Waw>a;mOS~dq zB1g%7w5*a?M`|hxX?RwDZvKFP-!seZnI$%iKPh1`oGp3j)B2I&3~*nd!O(o*8M^Jn z2lSWRq0)_=W?IoQwRpefIk_Pf&-#~(Gc1c2dlQ@pb`&eOrp3^U^?8(hK~Ts5?79wv zz1eTr#6#ps?=HuhRC@QH#Ve@74zecwq{U>9%Z98lveeCJ98!0v)LoVDd?=PQ$BNeKyiL@f84NI zY?6oKTC!Wjqo&QG2E&J{KAy>U6Bxg2^GA>Vny#JM`;*{0{UC=Qf?Gb}45N)b{f|z; MIdx~()UB6)0d&mbi2wiq literal 0 HcmV?d00001 diff --git a/themes/default/img/Kategorie.jpg b/themes/default/img/Kategorie.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b782f76544b6bd5b49db6c81d59c9c0c98397b12 GIT binary patch literal 1135 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77}OZnGBYYMFbOg;3o`yc!XO25Dl^EraKOUI#LCPDlrs`wU}9oq zVrFIKV1~#tGBGd}1`3NPg)U|_bxbT&Zfu^oanr$%qDDbLJ)(>#W`VSUtPvLk ziX&SB6c$wce~W>KnGxt1W`NQJf3c6e0p#8 zp550YuKvF4_+$RISSGoz>ps1YO$LibCL07Tcz&e7fb-un&jTkL#jCDYmap4*Z|l9- z*K5|T7J7B<)VaVm$5(2hSC0iYGZaoJKE_h}I`-+kUB|&HH@#dGHO+X{oGBKGeeRNt z>d4wR7$hA?KU7e}@$cc>fYcir=ZyRm+#x2HuPvWm^;)k(E^1M@cVUnthlldRL&aOf z?H1j-_Bxiew2dp`@A5NWg;%`TrmW1fnn&={yx4OMS&9Z(5>65yV-a_g)Q(TbK? z^{TAloagcMIYN~mXJ_UtJtS?afA56#YcshDOKD5S?|yR}o@89P?7n%f+?kuL2{9Ag zE>#xEv|L(uZmrqE@Zg&gb$Ci}D-a=XnYIn*%Unl17{X2wV5 zpJygLIsQ|7>YMO2Ps?^P2sA&i{QG&mfF*D0v{z-)Ib63IIKq|N)93hPv6cLqb@R@3 z-Ps0!S%RGOSo}^G@D%O~^DrWEP%^$3@W-{i?`O#M7&c|}>_1Z0YS0e0=ZSu`+ t@I2?QdA&1T=xmFN#}XF@7Z(-~!6VAj|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77?c?snHiNBm;@P_1sVSzVUPkjl^Nt*IACIAW@TXm%9#oP&+zMOyxnQB@5&b@ex12(XKqjMAN9}jcg}>b_wQ?b zwY_T^_kEXNlP~;dn9OW;U3X)5_Ou%({d~2iz6x;rw9<#)fbnJZukyF|Z{JJXoAUT# z)z#=@b4_)QulvQsmb)%GSq!LU3P%FRH@ih?EYUIBj_Cpg^%PvUp3X_S^>mxD#?eNd zo_R}3?$+;LIF$(`3DPlLKnW;mm|JvPvT*PV8f7VPzc|C6P^Ua|o2&mJdxO6ZD)s)p z$_ECSchSB1=G~q(d$Kn2KDqnXdY0Db9aFNTN-IM&cYF_9!6?6EdTM<~jpfB=ZA*pb z8_LIA%afEsTu_kY-*MA274~w5Z%ewqx)wl5Ha(ip{KHoO~q5X`1pB@wj zggvUU+RwLK_(#{2zcpQAUZ?z5&#$|EXXu+Da&37~@s+h7fPCSpPeXC~Rg#N1@Ed>@OnX^o!wu`c}f1O)?c;=2fdbUPW zSFx`+wIopUfwfB6l1Zx=UX*{EE7ABoFTCrMZ`ZTq7u47K`~8b~{PXOqnknWkW!5i# zcg|?&=-}uehL{-qq5q71Ws$bPmOnEZ7+EHN`Pz8+S&e?@xwUTVl_r!gskM8|uDn0~ z-^|kbJ^$qYEv~C^Sz#bw20U(fef%9~t{ zf)cy}EPZ!0fHE2=J18+h6S_nPH!x=nHD$BrRE17h8v5D!-5O8!FCC4Gf2lYA^XqHM aS$yEp$NT5{<>s25S|2E2D=5hP|0V!7Q-;_8 literal 0 HcmV?d00001 diff --git a/themes/default/img/Kategorie_anlegen.jpg b/themes/default/img/Kategorie_anlegen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc47a3c2d493e420623f36d998ab50be6c9f2dc3 GIT binary patch literal 1897 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77!(=jF*7PLFbOg;3o`yc!XO27Boi~xp$Ndp#LUXZ0+cfoU|?co zVqs-uV_{_l%QG@DFblE>2?r_~22Gsg$SSH7l2|BWRJ4)J*s1ZLis`~lAAtHK86f~+ zBm*N0D>D;NN>LCPGE7WNj1cocDj1mrnT3S{9Tg1|8$bNN#lQn}4Nyps!Jgr@sK}kE zEYIxbM>c+(!Bx5?E6Lzw*n^bxfa^9p{Jo0oSN!`t^LW@+|Llu@!eong{AcicT{X3i z^}(Ln$|9r1OE3GizSUYZ+n8Za$c?+Yx9i`U*j+dh?h{%VwAIGaVSoFTqg(C7*d97f z4DS7Tf9hKO&h^1|8X-q@RbsrlL)KlH(rZxEE)(7_zy5pUUa(oNh5>4RDnfRAvOj&f z9%XEP(55UJ&flK0w&=z(#uJIzwg;7y&s{p%d5m@GqOY?1`8!OUvENXZ7XGC$n-E(!-R`VKLTZL>R_Jruxb&Ovge*Jau_^X+m&={L&EikY;QArDG-Pk+p%Br4 zt9pT(gC8c<$;Zj4JL`&qf<-Fx!rrBe9Aiyh#9drAm-|+fLb$J$_?Aqd=4l;BDpTyqMbVq->2P#~&%WZnyvS zpW#-ueTV(6S9MGOK0hvI`FPsq%;%3k9RBiTQOd$YdySW`Op|BbZ+x#vyh-QD$ z*p+L$gI4Wf*sqXRpJ*la^7Q1~7~gqHt<1raz8YQL&Rsi_Y8^K2+`j&gn>ugn^3|SR zY0KDxc7B#qo_j31@XIexqp5jfrfb&pgkD+Am(VS!uFS$e<*C|%+pW(Ii#oN5hhFPg z!J6!&ZMca+|3!ZBKZU&}2h?(`CS-4&c)G@h?TEz8oE@*&w zUa)e3-WtiyXYA6mtInoudaLuXJoCiA#lKHZWxLK|Zv0oh(z5OBqcm|xLuG@TdwkNQ z%{v=AKb-int71~Ltw{>=rDNCsF3Xezs!0aPb9Q25a+$K`_*y-g^P;DrDzaG*e+k}sUA8gATRJ|np0w9cu= z<)Tjx{kH29-K>{h9br6s;Vxy6!-(9jyL_a^cm>qEBV*Q1DP_ za+K+qnU%EqDnr=XpapCXj3-%Eql`UmwY*Wv393Tn%O$N)yBJ@ z=oYk|;Ix=Jc}QkvOYYkr`PFqn>%IXlibeRx{8yYOY_y1sK$S7~p5mheRQ z`_!zhGLds<_vNYmDW5xiw?VwN_c7a>O+TaJjK2H3yT#q9O3Gfmd1+SH+n+NmS^hqa zTD)PiwP4X5|8<`?eNW?lnptriqRD#s;>G%TCRbN@3%&9Fmt24L`_#}hvjERuewXjg p(4V^WvA#cZ>k`l9jv{kg%KhD4f3A0N@j2__;^5-KLN@XLCIE|~Ju?6R literal 0 HcmV?d00001 diff --git a/themes/default/img/Optionen.jpg b/themes/default/img/Optionen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86d3c1e1cc6625c57f6667be6b754e64b6738d62 GIT binary patch literal 964 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77}OXtnHiNBm;@P_1sVSzVUPkkl9>_YTsUB2Wn*Dv2FjTUFfcMR zvT(4lu(CpA85x+ESp;)2789f744m_4$@2bRPQw|y0l~4 zr1|Z7fp?34E`GlJ@BKpyqm=uyiq7nrv(>aE6Dns0QIZz!uxN!2-wwmv2e%J>o%cO= z`#-I#98=Hc|A^03wdadjybDU5S--ILtl;z;$4+*~)aq|w2PuF-i8$xZ?n6)Htv+tHEe=LjoUP7qXMj(Y|A#&=X#oft# zEZl|MJJbGb{?Tc#_`7vU*{|sl&>XnFb=j?6xD=OCe zyYI!8kET~8ErZ{kXJgSeF8DEF?d4;NdsKcNefZD3wr*b6cDKLBOMIoj%U+B={MY7M z_`^b({+ts3OWUlfWl}OL#9JS?-VbiS=qA-}xkYs=BR vy<5Q-Ou9Hg)Ie1-T-DrJv55sjx-g??lXr7FadhIwwQ^_0G?f(W|K9`v9(9Pk literal 0 HcmV?d00001 diff --git a/themes/default/img/Sichtbarkeit_54.png b/themes/default/img/Sichtbarkeit_54.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5378ee11595b24d4cc366caf7d59f13b76b87d GIT binary patch literal 6906 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 literal 0 HcmV?d00001 diff --git a/themes/default/img/Template.jpg b/themes/default/img/Template.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26a2b81e757fb94cac91cd2832b46c898a76d949 GIT binary patch literal 892 zcmex=|Yy0NLzFQIpOPwlkgy2cuiA&jEp;&M`Q){2VO zHNkGdH6(-o2N(o77?c@;m>HEAm;@P_1sVSzVUPkkm63rN=u$XfVP<4yV*<(<3NSD- zGcmIX=y6xY4Pw_#jY=IM6hZ-;n?d6UZJJ zL7*k5l8j73f`QD2ivMph@Bl4f5@Z%+uxHq}{&-f>s%aLt<-{zupRIoPXH8k#W}le; zQr7bQA@!^Gr)IL6+FaawtTHM&O`T^!T|(aH+R%zA`&YD=-51urC3V)Y$o6tZw#m^G z-vhQy@~pYQ^h~H=y1;d-driOpGl<7*YFp%H`X)i~z_gyECwyk&yWS<_zlh#qIxFc( z^|A}sGP@_fTO?x2dc#?&X2(0Z+lhPESKq8P>S;Saw;)o?>|uezd*+Tu!UpDFQ0-x zX7e1z4R+hU#_C+~<0<~%WbaN_aH&k-q}%U6VH&8wSWx#ahu6WTLwEX+Qc zyzoIZx18VakL64|`nH+P;LP4TCqHq6jPLK2Mk<%DsJYClYI##tKKwAyB z6}&ucM_cosgLn6)WGm(PwKhI&lG!$i_2kha|K*`z^(Q9#2h5%Cu0OwZQ&{j5pA)m9 zXI!|pU2`$thw@$DZN!Rh|* a;_HcmUJ-(V3@$E=f&wfq4qztx|C<1zCua)) literal 0 HcmV?d00001 diff --git a/themes/default/img/Title_12.png b/themes/default/img/Title_12.png new file mode 100644 index 0000000000000000000000000000000000000000..762ca461446abe6c4d36b3601ca6877ae2079fbf GIT binary patch literal 2126 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 literal 0 HcmV?d00001 diff --git a/themes/default/img/color.png b/themes/default/img/color.png new file mode 100644 index 0000000000000000000000000000000000000000..809fb00e5aa1f28726db3e2a5adf8f536bfbcbf1 GIT binary patch literal 892 zcmV-?1B3jDP)n`HO=N{yXhvI{h!_0ot^nS)JXfldwbvK_6nsG2Z&Wi&v@PQ zheULFT39nvnw}fe2u3u2dsOe=oVI#j9M1QC>zmd3XI9C7d+1ER`oBP|zA^0tJC|RwkIug^e1fA zX~N2H7aFgMFJ&|`u{>vFkyaX=K50U-_$2WeLXrR?y%y9osP$m;9(wLDa(L0IUjO100%{ufD~Y>02&pjbm4v#?whc82VKwMSB#SqZE`$mB-jcCHlU+0 z5!eC}fZ@6i#^osNm{8QAUxQqp!Je3uR3kxXnuJ~O)qerH3OWj$UL38Ff>!fEx(x_D ze9vUyrvmBUlf}BOj>p;pw*yU}8i3vdQv(|vr;&lW3vL^{HjGO;yJh@AvLL%V=8X-d zj-N^keq9GM0OdgtfE|S-5NpMdyD8XjL8D3d)Ci3ms|*JAHOZR#{F@d3_1R~2nP^IO zx1jHVVL;UcM?t(JNH>#EYr=^m)YgmC{@kfR@+(bUGOoFIyidRT#pP%sAgjUt2GomC z-GbUC?3chRN8#8QO)J9o??pQO=z9z5hjj@+!++`xv!lb9;ml&Wvph&Nw86?bNyh%=cqNQD8i+$LPB!e5mg zGpxOzX7}R-bs>C2a6nYto*kyOG|b@Xj8Ib}DhS31*TztPJc)IANu4e{-2WFIIaS?u SuzCdm0000dv( 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 JPDHLkV1h&H;* 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 = '