From 4a008fa8308de2842fba70b7d480fdd4a58c8d16 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 4 Sep 2017 20:46:30 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=20-?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.2.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- unicalendar/class.unicalendar.php | 109 ++++- .../css/eventCalendar_theme_responsive.css | 374 ++++++++++++++---- .../eventCalendar_theme_responsive_min.css | 1 + unicalendar/images/css_sprites.png | Bin 0 -> 22842 bytes unicalendar/js/jquery.eventCalendar.js | 27 +- unicalendar/lang/ru.php | 2 +- unicalendar/lang/ru.txt | 18 +- unicalendar/module.php | 2 +- unicalendar/sql.php | 16 +- .../templates/admin_unicalendar_edit.tpl | 153 ++++++- .../templates/admin_unicalendar_list.tpl | 105 ++++- 12 files changed, 697 insertions(+), 114 deletions(-) create mode 100644 unicalendar/css/eventCalendar_theme_responsive_min.css create mode 100644 unicalendar/images/css_sprites.png diff --git a/README.md b/README.md index 1a3080f..f363a3d 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ ### адаптирован для AVE.CMS v3.2 -![Module Unicalendar](https://gitget.ru/img/unicalendar.png "Модуль Unicalendar") - ### Модуль позволяет создавать календари, событиями которых являются документы из заданной рубрики либо определенные документы из заданной рубрики. ### Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку unicalendar со всем ее содержимым внутри! @@ -14,6 +12,8 @@ ##### Changelog: +##### 04.09.2017 - обновление модуля - версия 1.2.7 - Добавлено создание тизера событий из существующих полей в документе (изображение, описание, место) + ##### 01.07.2017 - обновление модуля - версия 1.2.6 - Добавлен лимит вывода событий при перелистывании месяцев в календаре (лимит не распространяется на клик по дате с событиями) ##### 25.06.2017 - обновление модуля - версия 1.2.5 - Добавлен выбор формата даты для публичной части календаря, проверка условий при создании календаря diff --git a/unicalendar/class.unicalendar.php b/unicalendar/class.unicalendar.php index fffdbfb..d2c246d 100644 --- a/unicalendar/class.unicalendar.php +++ b/unicalendar/class.unicalendar.php @@ -136,7 +136,10 @@ class Unicalendar uca_day = '" . $_POST['uca_day'] . "', uca_scroll = '" . $_POST['uca_scroll'] . "', uca_descript = '" . $_POST['uca_descript'] . "', - uca_events_limit = '" . $_POST['uca_events_limit'] . "' + uca_events_limit = '" . $_POST['uca_events_limit'] . "', + uca_img_field = '" . $_POST['i_uca_img_field'] . "', + uca_dsc_field = '" . $_POST['i_uca_dsc_field'] . "', + uca_place_field = '" . $_POST['i_uca_place_field'] . "' "); // Получаем обновленные данные календаря @@ -163,7 +166,11 @@ class Unicalendar $uca_link = $v['uca_link']; $uca_descript = $v['uca_descript']; $uca_events_limit = $v['uca_events_limit']; + $uca_img_field = $v['uca_img_field']; + $uca_dsc_field = $v['uca_dsc_field']; + $uca_place_field = $v['uca_place_field']; } + if ($uca_dsc_field != 0) {$ellipsis = '… ';} else {$ellipsis = '';};// если описания нет не добавляем многоточие при выводе description // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '1'){ $sql = $AVE_DB->Query(" @@ -177,9 +184,9 @@ class Unicalendar array_push($results, $row); } //получаем данные всех документов из заданной рубрики циклом, формируем строку JSON - foreach ( $results as $k=>$v ) + foreach ( $results as $k=>$v ) { - $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; + $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },"; $rubric_count .= $v['Id']." OR Id="; } $js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; @@ -223,7 +230,7 @@ class Unicalendar //получаем данные выбранных документов из заданной рубрики циклом, формируем строку JSON foreach ( $results as $k=>$v ) { - $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; + $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },"; $rubric_count .= $v['Id'].","; } $js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; @@ -296,6 +303,7 @@ class Unicalendar $AVE_Template->assign('check_docs', $check_docs); } + //$AVE_Template->assign('uca_rub_fields', $uca_rub_fields); $AVE_Template->assign('unicalendars', $unicalendars); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_unicalendar_edit.tpl')); @@ -322,7 +330,10 @@ class Unicalendar uca_day = '" . $_POST['uca_day'] . "', uca_scroll = '" . $_POST['uca_scroll'] . "', uca_descript = '" . $_POST['uca_descript'] . "', - uca_events_limit = '" . $_POST['uca_events_limit'] . "' + uca_events_limit = '" . $_POST['uca_events_limit'] . "', + uca_img_field = '" . $_POST['send_uca_img_field'] . "', + uca_dsc_field = '" . $_POST['send_uca_dsc_field'] . "', + uca_place_field = '" . $_POST['send_uca_place_field'] . "' WHERE id = '" . $unicalendar_id . "' "); $as = array(); @@ -352,7 +363,11 @@ class Unicalendar $uca_link = $v['uca_link']; $uca_descript = $v['uca_descript']; $uca_events_limit = $v['uca_events_limit']; + $uca_img_field = $v['uca_img_field']; + $uca_dsc_field = $v['uca_dsc_field']; + $uca_place_field = $v['uca_place_field']; } + if ($uca_dsc_field != 0) {$ellipsis = '… ';} else {$ellipsis = '';};// если описания нет не добавляем многоточие при выводе description // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! if ($uevents !='' && $uevents == '1'){ $sql = $AVE_DB->Query(" @@ -368,7 +383,7 @@ class Unicalendar //получаем данные всех документов из заданной рубрики циклом, формируем строку JSON foreach ( $results as $k=>$v ) { - $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; + $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },"; $rubric_count .= $v['Id']." OR Id="; } $js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; @@ -412,7 +427,7 @@ class Unicalendar //получаем данные выбранных документов из заданной рубрики циклом, формируем строку JSON foreach ( $results as $k=>$v ) { - $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },"; + $uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|s', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },"; $rubric_count .= $v['Id'].","; } $js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});"; @@ -473,6 +488,86 @@ class Unicalendar echo ""."".$v['Id'].""."".$v['document_title'].""."".$v['document_published'] = pretty_date(strftime(TIME_FORMAT, $v['document_published'])).""."".$v['document_expire'] = pretty_date(strftime(TIME_FORMAT, $v['document_expire'])).""; } } + + + if (isset($_POST['uca_rub_field'])) // если пришел запрос вывести поля категории, получаем данные и отдаем их в шаблон (выпадающий список) + { + global $AVE_DB; + $sql = $AVE_DB->Query(" + SELECT Id, rubric_field_title + FROM " . PREFIX . "_rubric_fields + WHERE rubric_id = '" . $_POST['uca_frub_id'] . "' + "); + while($result = $sql->FetchRow()) + { + echo ""; + }; + } + + global $AVE_DB; + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_unicalendar + WHERE id = '".intval($_REQUEST['id'])."' + "); + $unica = array(); + while ($row = $sql->FetchAssocArray()) + { + array_push($unica, $row); + } + foreach ( $unica as $k=>$v ) + { + $uca_img_field = $v['uca_img_field']; + $uca_dsc_field = $v['uca_dsc_field']; + $uca_place_field = $v['uca_place_field']; + } + + if (isset($_POST['uca_edit_rub_field_img'])) // если пришел запрос вывести поля изображение при редактировании, получаем данные и отдаем их в шаблон (выпадающий список) + { + global $AVE_DB; + $sql = $AVE_DB->Query(" + SELECT Id, rubric_field_title + FROM " . PREFIX . "_rubric_fields + WHERE rubric_id = '" . $_POST['uca_frub_id'] . "' + "); + while($result = $sql->FetchRow()) + { + if($result->Id == $uca_img_field) {$sel = 'selected=\'selected\'';} else {$sel = '';}; + echo ""; + }; + } + + if (isset($_POST['uca_edit_rub_field_dsc'])) // если пришел запрос вывести поля описание при редактировании, получаем данные и отдаем их в шаблон (выпадающий список) + { + global $AVE_DB; + $sql = $AVE_DB->Query(" + SELECT Id, rubric_field_title + FROM " . PREFIX . "_rubric_fields + WHERE rubric_id = '" . $_POST['uca_frub_id'] . "' + "); + while($result = $sql->FetchRow()) + { + if($result->Id == $uca_dsc_field) {$sel = 'selected=\'selected\'';} else {$sel = '';}; + echo ""; + }; + } + + if (isset($_POST['uca_edit_rub_field_plc'])) // если пришел запрос вывести поля место при редактировании, получаем данные и отдаем их в шаблон (выпадающий список) + { + global $AVE_DB; + $sql = $AVE_DB->Query(" + SELECT Id, rubric_field_title + FROM " . PREFIX . "_rubric_fields + WHERE rubric_id = '" . $_POST['uca_frub_id'] . "' + "); + while($result = $sql->FetchRow()) + { + if($result->Id == $uca_place_field) {$sel = 'selected=\'selected\'';} else {$sel = '';}; + echo ""; + }; + } + + if (isset($_POST['check_rel'])) // если пришел запрос-проверка актуальности календаря (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404) { global $AVE_DB; diff --git a/unicalendar/css/eventCalendar_theme_responsive.css b/unicalendar/css/eventCalendar_theme_responsive.css index de25dda..f76258e 100644 --- a/unicalendar/css/eventCalendar_theme_responsive.css +++ b/unicalendar/css/eventCalendar_theme_responsive.css @@ -237,6 +237,7 @@ } .eventCalendar-list li a.eventCalendar-eventTitle { color:#0E8EAB; + outline: none; } .eventCalendar-list li a.eventCalendar-eventTitle:hover { text-decoration:underline;} .eventCalendar-list li .eventDesc { @@ -261,7 +262,7 @@ } .bt { - font-size:12px; + font-size:14px; display:block; clear:both; text-align: center; @@ -270,28 +271,30 @@ text-decoration: none; font-weight: bold; line-height: 1; + outline: none; + color: #ffffff; - background-color: #698B10; + background-color: #138DA5; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#89B814), to(#698B10)); - background-image: -moz-linear-gradient(top, #89B814, #698B10); - background-image: -ms-linear-gradient(top, #89B814, #698B10); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #89B814), color-stop(100%, #698B10)); - background-image: -webkit-linear-gradient(top, #89B814, #698B10); - background-image: -o-linear-gradient(top, #89B814, #698B10); - background-image: linear-gradient(top, #89B814, #698B10); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#89B814', endColorstr='#698B10', GradientType=0); + background-image: -khtml-gradient(linear, left top, left bottom, from(#138DA5), to(#138DA5)); + background-image: -moz-linear-gradient(top, #138DA5, #138DA5); + background-image: -ms-linear-gradient(top, #138DA5, #138DA5); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #138DA5), color-stop(100%, #138DA5)); + background-image: -webkit-linear-gradient(top, #138DA5, #138DA5); + background-image: -o-linear-gradient(top, #138DA5, #138DA5); + background-image: linear-gradient(top, #138DA5, #138DA5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#138DA5', endColorstr='#138DA5', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border: 1px solid #698B10; - border-color: #698B10 #698B10 #465F05; + border: 0px solid #138DA5; + border-color: #138DA5 #138DA5 #138DA5; - border-radius: 4px; + border-radius: 0px; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear all; -moz-transition: 0.1s linear all; @@ -302,73 +305,298 @@ .bt:hover { background-position: 0 -15px; text-decoration: none; - color: #E4E4E4; + color: #ffffff; } .bt:visited { - color: #E4E4E4; - } -/* end of theme css */ - - -/*= ONLY FOR DEMO PAGE */ -body { -/* - width:978px; - box-shadow:0 0 10px #777; - padding: 20px 40px; - margin:0 auto; - */ -} -a { color: #0E8EAB} -/* -.eventCalendar-wrap { - width:265px; + color: #ffffff; + text-decoration: none !important; + } + +/* Правила, использующиеся в JS файле jquery.eventCalendar.js */ + +/*Изображение*/ + +.uca_img { + width:100%; + margin-top: 10px; + margin-bottom: 10px; + /*box-shadow:0 0 15px #999;*/ } -*/ -.features li { margin-bottom:3px;} -#thanksPanel li { margin-bottom:0;} -#introPanel { padding-top:20px;} -.poweredBy img { - float:left; - margin-right:3px; +/*Заголовок*/ +.eventCalendar-eventTitle { + font-size: 18px; + font-weight: normal !important; + text-decoration: none !important; + } - .poweredBy .data { - float:left; - } - .poweredBy .name { - font-weight:bold; - color:#555; - text-decoration:none; - display:block; - margin-top:28px; - } - .poweredBy .twitter { - text-decoration:none; - display:block; - float:left; - } -.features { - padding-left:20px; - float:left; + +/*Позиционирование divОв - оберток с иконками дата и время*/ +.uca-date-icon { + margin-top: 8px; + margin-bottom: 8px; } -#appLogo { - margin-right:30px; +/*Дата и время после иконки*/ +.uca-date-txt { + margin-left:20px; + white-space: nowrap; + font: 10pt sans-serif; + color: #2A3C63; + font-weight: 400; } -pre { - clear:both; - background-color:#FFFFCC; - padding:5px; - border:solid 1px #FED17E; - overflow:auto; + + +/*Иконки (спрайт)*/ + +.bg-blue_calendar { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -10px; +} + +.bg-blue_caret_right { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -10px; +} + +.bg-blue_check { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -46px; +} + +.bg-blue_clock { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -46px; +} + +.bg-blue_globe { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -10px; } -#license { - width:300px; - float:right; - font-size:10px; - line-height:12px; - text-align:center; + +.bg-blue_map { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -46px; } +.bg-blue_menu { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -82px; +} + +.bg-blue_phone { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -82px; +} + +.bg-blue_podcast { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -82px; +} + +.bg-dlue_bullhom { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -10px; +} + +.bg-gray_bullhom { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -46px; +} + +.bg-gray_calendar { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -82px; +} + +.bg-gray_caret_right { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -118px; +} + +.bg-gray_check { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -118px; +} + +.bg-gray_clock { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -118px; +} + +.bg-gray_globe { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -118px; +} + +x +.bg-gray_map { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -10px; +} + +.bg-gray_menu { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -46px; +} + +.bg-gray_phone { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -82px; +} + +.bg-gray_podcast { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -118px; +} + +.bg-green_bullhom { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -154px; +} + +.bg-green_calendar { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -154px; +} + +.bg-green_caret_right { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -154px; +} + +.bg-green_check { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -154px; +} + +.bg-green_clock { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -154px; +} + +.bg-green_globe { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -10px; +} + +.bg-green_map { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -46px; +} + +.bg-green_menu { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -82px; +} + +.bg-green_phone { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -118px; +} + +.bg-green_podcast { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -154px; +} + +.bg-orange_bullhom { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -190px; +} + +.bg-orange_calendar { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -190px; +} + +.bg-orange_caret_right { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -190px; +} + +.bg-orange_check { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -190px; +} + +.bg-orange_clock { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -190px; +} + +.bg-orange_globe { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -190px; +} + +.bg-orange_map { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -10px; +} + +.bg-orange_menu { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -46px; +} + +.bg-orange_phone { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -82px; +} + +.bg-orange_podcast { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -118px; +} + +.bg-red_bullhom { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -154px; +} + +.bg-red_calendar { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -190px; +} + +.bg-red_caret_right { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -10px -226px; +} + +.bg-red_check { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -46px -226px; +} + +.bg-red_clock { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -82px -226px; +} + +.bg-red_globe { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -118px -226px; +} + +.bg-red_map { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -154px -226px; +} + +.bg-red_menu { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -190px -226px; +} + +.bg-red_phone { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -226px -226px; +} + +.bg-red_podcast { + width: 16px; height: 16px; + background: url('../images/css_sprites.png') -262px -10px; +} -/* end of demo page */ \ No newline at end of file +/* end of theme css */ \ No newline at end of file diff --git a/unicalendar/css/eventCalendar_theme_responsive_min.css b/unicalendar/css/eventCalendar_theme_responsive_min.css new file mode 100644 index 0000000..f93f0ed --- /dev/null +++ b/unicalendar/css/eventCalendar_theme_responsive_min.css @@ -0,0 +1 @@ +.eventCalendar-wrap{border:solid 1px #d3d3d3;box-shadow:0 0 15px #999;border-radius:5px;margin-bottom:20px;background-color:#fff;color:#807E7E;}.eventCalendar-wrap .eventCalendar-arrow{text-decoration:none;color:#fff;padding:0 5px;line-height:28px;top:9px;padding:8px 10px;}.eventCalendar-wrap .eventCalendar-arrow.prev{}.eventCalendar-wrap .eventCalendar-arrow:hover{opacity:0.7;}.eventCalendar-wrap .eventCalendar-arrow span{height:0;width:0;font-size:0;line-height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #fff;float:left;text-indent:-5000px;}.eventCalendar-wrap .eventCalendar-arrow.eventCalendar-prev span{border-left-width:0;border-right:6px solid #fff;}.eventCalendar-slider{height:80px;}.eventCalendar-monthWrap{border-radius:5px;top:10px;left:0px;}.eventCalendar-currentTitle{line-height:25px;background-color:#138DA5;outline:1px solid #138DA5;border:1px solid #E3E3E3;border-width:1px 0;}.eventCalendar-currentTitle .eventCalendar-monthTitle{font-size:110%;text-decoration:none;font-weight:bold;color:#fff;}.eventCalendar-daysList{zoom:1;padding:0;width:100%;}.eventCalendar-daysList.eventCalendar-showAsWeek{margin:10px 5px;width:auto;border:solid 1px #BCBCBC;border-bottom-width:0;border-radius:0;background-color:#CCCCCC;background-image:linear-gradient(top,#EEEEEE 42%,#CCCCCC 71%);background-image:-o-linear-gradient(top,#EEEEEE 42%,#CCCCCC 71%);background-image:-moz-linear-gradient(top,#EEEEEE 42%,#CCCCCC 71%);background-image:-webkit-linear-gradient(top,#EEEEEE 42%,#CCCCCC 71%);background-image:-ms-linear-gradient(top,#EEEEEE 42%,#CCCCCC 71%);background-image:-webkit-gradient( linear,left top,left bottom,color-stop(0.42,#EEEEEE),color-stop(0.71,#CCCCCC) );}.eventCalendar-daysList.showDayNames.eventCalendar-showAsWeek{border-radius:5px 5px 0 0;}.eventCalendar-daysList:before,.eventCalendar-daysList:after{content:"";display:table;}.eventCalendar-daysList:after{clear:both;}.eventCalendar-day-header{text-transform:lowercase;text-align:center;font-size:12px;border-bottom:solid 1px #BCBCBC;}.eventCalendar-daysList.eventCalendar-showAsWeek li{height:auto;margin:0;}.eventCalendar-daysList.eventCalendar-showAsWeek li.eventCalendar-empty{background-color:#ccc;min-height:27px;border-top:solid 1px #ccc;}.eventCalendar-day a{text-decoration:none;font-size:10px;color:#424242;}.eventCalendar-day{border-left:solid 1px #BCBCBC;}.eventCalendar-day a{border:solid 1px #BCBCBC;border-width:0 1px 1px 0;}.eventCalendar-showAsWeek .eventCalendar-day{border-left-width:0;}.eventCalendar-showAsWeek .eventCalendar-day a{border:solid 1px red;border-color:#fff #BCBCBC #BCBCBC #eee;line-height:27px;font-size:11px;}.eventCalendar-day a:hover{background-color:#E4E4E4;}.eventCalendar-daysList li.today a{color:#fff;background:#aaa;}li.eventCalendar-day.today a:hover{background-color:#ccc;}.eventCalendar-daysList li.eventCalendar-dayWithEvents a{background:#89B814;color:#fff;}li.eventCalendar-day.eventCalendar-dayWithEvents a:hover{background-color:#C2D374;}.eventCalendar-daysList li.current a{color:#fff;background:#449FB2;box-shadow:inset 5px 5px 10px #216B7A;text-shadow:2px 2px 2px #216B7A;}li.eventCalendar-day.current a:hover{background-color:#79BDCC;box-shadow:inset 5px 5px 10px #449FB2;text-shadow:2px 2px 2px #449FB2;}.eventCalendar-loading{border-radius:4px;margin:5px auto;padding:0 10px;background-color:#ccc;color:#fff;text-align:center;font-weight:bold;box-shadow:0 0 10px #ccc;text-shadow:0 0 3px #aaa;position:absolute;z-index:4;top:25px;left:5px;}.eventCalendar-loading.error{background-color:red;}.eventCalendar-subtitle{padding-top:10px;}.eventCalendar-list-wrap{min-height:100px;position:relative;}.eventCalendar-list-content.scrollable{height:100px;overflow-y:auto;margin:0 5px 5px 0;}.eventCalendar-list{margin:0;padding:0;list-style-type:none;}.eventCalendar-list li{padding:0 5px 15px;margin:0;clear:both;}.eventCalendar-list li time{font-size:10px;line-height:13px;}.eventCalendar-list li time em{float:left;font-style:normal;}.eventCalendar-list li time small{font-size:10px;float:left;background-color:#807E7E;color:#fff;padding:0 5px 0 4px;margin:0 0 0 3px;}.eventCalendar-list li .eventCalendar-eventTitle{display:block;clear:both;font-weight:bold;text-decoration:none;}.eventCalendar-list li a.eventCalendar-eventTitle{color:#0E8EAB;}.eventCalendar-list li a.eventCalendar-eventTitle:hover{text-decoration:underline;}.eventCalendar-list li .eventDesc{clear:both;margin:0 0 5px 0;font-size:80%;line-height:1.2em;}.eventCalendar-list .eventCalendar-noEvents{font-size:120%;border-radius:4px;margin:5px;padding:5px;background-color:#ccc;color:#fff;text-align:center;font-weight:bold;box-shadow:0 0 10px #ccc;text-shadow:0 0 3px #aaa;}.bt{font-size:12px;display:block;clear:both;text-align:center;margin-top:10px;padding:9px 34px 11px;text-decoration:none;font-weight:bold;line-height:1;color:#ffffff;background-color:#698B10;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#89B814),to(#698B10));background-image:-moz-linear-gradient(top,#89B814,#698B10);background-image:-ms-linear-gradient(top,#89B814,#698B10);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#89B814),color-stop(100%,#698B10));background-image:-webkit-linear-gradient(top,#89B814,#698B10);background-image:-o-linear-gradient(top,#89B814,#698B10);background-image:linear-gradient(top,#89B814,#698B10);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#89B814',endColorstr='#698B10',GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,0.25);border:1px solid #698B10;border-color:#698B10 #698B10 #465F05;border-radius:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.bt:hover{background-position:0 -15px;text-decoration:none;color:#E4E4E4;}.bt:visited{color:#E4E4E4;}body{}a{color:#0E8EAB}.features li{margin-bottom:3px;}#thanksPanel li{margin-bottom:0;}#introPanel{padding-top:20px;}.poweredBy img{float:left;margin-right:3px;}.poweredBy .data{float:left;}.poweredBy .name{font-weight:bold;color:#555;text-decoration:none;display:block;margin-top:28px;}.poweredBy .twitter{text-decoration:none;display:block;float:left;}.features{padding-left:20px;float:left;}#appLogo{margin-right:30px;}pre{clear:both;background-color:#FFFFCC;padding:5px;border:solid 1px #FED17E;overflow:auto;}#license{width:300px;float:right;font-size:10px;line-height:12px;text-align:center;}Paste your CSS here to minify \ No newline at end of file diff --git a/unicalendar/images/css_sprites.png b/unicalendar/images/css_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..545ad8904877256ea105c146c09d4f9159c700a3 GIT binary patch literal 22842 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ℜdkGR zGA#7vq3M2&r`VrI?J?T6xXZ)KFA6eEe%$X9+U-X`TGuJ0gofsjlqU1+dcw|>Hk5=oerD1(snRObW1JBFR#1QoLT*&y zUt`)WcK&>=#Zf-+1q3CrBM?tgl$jUcMo4xe!gDMVit*6deU1NyNDCcH)gB%kKppsw zTOd>Q`wCr`P*XuOtNTylua+!fEI?%N1GV{7Pqb4IkO(M%L@>lrRh>pT`vEK)S$tU+ zku5@K()|Yz&F0QSZ2rgcK>2=eOGc1SIcxY|lRDW7+7ei{|LjT`zIbOaK!q>;pTf7+ z)M1v*dqo4n!N-P#co}S?`hP%RweT;(9Be8V$P&jpVgMo8ydhLz6T?hZH5oLsFJQme zzd7bnfVh$JA8u?kwi{*$+yhNgWv?yqF$({eU2lW|O*r_45!fWL9G<>R;pmwlQwq~c z5J)SU@2piOHx=Y3b0R~&LVBu!Hcy59p@FWMiuyG}>F$%M#C)h3cRr}qasGS~xsFb9 zbeVRXyq|qX*3I9704jB&vy1H;t2P6k3u40@Xd}B;am4kuYeG&k z9In{RS$wUj#}b$>!2l?;b*7K)qx@~Q#V~IqDc5+Vr`FQwvORLfDM5(Bn!aq*x5)Lj zDgAC^5TZCHDuGXa(>E=m+MH?im`f>r*T3xf&KiYcds%)pbJEg$n2 z1r4$RVfL>4HCvq(`n?se@XN>|W0_qcP8!Pxj%p?xpix^I0 zTR$C}brcpqde?b(k(W|rDtRQ~>VFk;mS0ggT^yICr9(nWSh_ox&ZSGbT|ip8OG@cZ zN$G|qL|7V@`q7;d0@5rE0uTNb&%66QbI$k7t2>`NbMJVLJ*BYv#VpO2M7JOVn zg(Bty!Rs)r9S#gQQ}}P2bM>s_$EEmtxM@f+Y1lh1!X39NB(*2z=q%FHUk;^u-|d~R z!nvt&28^7`{i zxy2vpM^PR*%s0GLG=PLOjZaa`kWi|I5s#O`0_s?GOOGYTV{RP$ehX4?VmVQ94l^8E z5I4=U!? zpV(vL@$wXD-7PH7fHsa=UE(=!zeUHm^FSF;X1gDwT&9(!~_Ex&2@6df^ ziDy=vyXN~qQlBismt8)QevoV6;NwGcDutwz46j&=A*jt(5hmOrdH6#myor zti)JSzFTRVNp$FLyq|O}vz40(a>a)unutr`3xA0cfrV(hYF+ck*3?>4!3%~O-)@id zHZ8DV8fEi$VBd;HMQ}!7$5t|FOEzB7xL<E)t>1zhpS@LGLzK9FMUb^`g~QMMe;>ojE`O!E!c=7X`AyGVhn$s|GBtSRDM5V zpC!+fG?D%&=SIgDg6aRjD{qBHer^MVyVIeW&n^Ck&sY5)65FsxRbY#STP|~LCyAjt zgf;o$`c0M3V6$L;{G%5%)J@%dK3-22hH~A{|21Y^@?@cBBQ`KN<=c=+Z|q=qwWH!h z@o)h3gmCq}*`gmU|71SH++$YYJs&%v%W)%265c*OV%86!7awDQ2*^AZqkZNaOl|&P zw^Dt7$jY1Bdi#8wi{&vp0E0_*tvO;0Ga|_oRB-J#f1Wd<#g}V(&3qNH#nNnlJYWPf zk&nhNQC86;PzAu6zpPImz*^lZH2ieKw_cvla!{PEu6=&rmY3XC4gr_K6CpR=6JyTl zI0^OO>wNfsV_`GBnnV;3%)R2pH9`FtqRFq?%6TM(V1S+qi;iQrVH@z=+cGq@IM|Y5 z$QhR{lnqbrNi^e$zd<}JeEuIdYe3 zt;;92E6W(ovDelVplL8E;O2gbdyToS?8?Y`ec9BEF= zzo%5di8T9-x!BdEb}>jM=~O@Qi4dHD>F_C6bBo_T!-OFMIfhjCLAtQ&<%x@Qdoq(T%+ z`oqXHHN-y;Ot-tJkZ+t>6*7V1i-88KIhnZZ8yaPURuV@2g58uo${qD8w(eY3A5@yP z6}Z)<%9i^>3*;&o!}flgQA|MP_cYNj<=f2DixIh|>PiWZSwX@DOkP%k95xT3hleC9{ZX(m)NYp>gHz9hI~3EWODTCz ziI6q=j*h%3Rc1+`>3wq03L>g=|C&0$tNVxj@bvfoR{@Y32N1)e)~#RJT)7IFe`n5+ zkhgF{BK-?-=Mnr2NmA`u%}G&;CBFJ8oQE-&@+L@dsOWK#>i?hjx)@oR&)bhpDhvW8=m$O2BxrQG#75pTkNG@ij9 z%7S%ty(jI(KZj&<(G7y~g-T)xsE)lWkB_b3oY%58n4W_0&23)W2vx0`+}PQG;tw(f6w>zp722jw3M*jtylCq|;M+D^iqs_V_v-P46$=REL0G{Y@@ zn?WSUefH05e-a+)1<^>6l>-B=aPtb&V^r`u8n0AAg}8= z&v(#L7*4)4+YmO`vyT>GGnfeD=dG4sg;S35vLwr2cc$77_)0m2c#W>bf^3)$@o^Pz z(^5alQe>BvRE{@@?de+J)b|BBlr_^`hv$d!lKaSvI2vojtdF6hWU3?2{LXN^(p^Fd zho4TfD+-sSiJ3Fb-rKrm(hkgeN5+Z9^xPiT?2qD=Yxt%z+Kg~bpNh23cTL2QyFrjs zoMZ+9GPsfLp$2bEy8Y^0r~W0fm|E#TF)8ExiCw8WuavLZ6S8!ba=wo`ocS2 zE4aWVC8klLWO(e5-0YYwrfk#Iog+{$86Cm>)|BZ@v$&hYjRD|5L}%3S0RIyPB{q_x zl(Vxi3MIfaG6Yz_8Me;ih4CVh+C+Z6tb33H;zNF7`;{%yzDSgv-4NMs+DU5+VZZ_J zey&y2izGUjlFFd{g;73Q;2li`!2M^6`+qP6g_})a1m%{S0H*4U1h)L~<~CHA z9jVt2ujISr(WX|j`2QG|-w%)ZL`fv^8q!Go3X6bI*FQ(S^7s3Wo1%I%qXayt&1y>#&lIQ9*ar=;3n9+*c)07w!=qdT$j;r%A)+*H%OVV6W z9guyXNgr#SI0peI5N2g7ynoIBUPnPVSExrZ#SL%@>7v9G-E6{CT0g^f zk6TDw2X#=Rsgusf;yu2&dh!N?TVD{7x~ITTw7Jt4zX^@xxb}T%k>#g-%fOn|qO4nJZV?UY zn&~(>08jN6_#Tde4rlWapTm2PomMJ4531VuZ!{X06VKxTu=Dz7D_?)?BNiu71u38} zMv|RZFUpQQ=AZEKgCFrlWY!WR0!KRyVF%)X{8XqhmI3xENu76%?&dIVRYXrh==U0G zO9{24s1o~D-^UbT5poSjv(z-84R)x)$!?vC@)| z(TwjEcCmI6>Z1@2dFpIS`Kt2(`@=n*iHKVi-ax!F<*PVArR|^BA z!K*joV3t6DhXm+}I(Lofpni&q$IS~n(>8fpBYgebRP$52rf$QUIp=pE;)?JNIAP%5 z+1KzlqRUnIW+tkO(1v=hGYC7*jCP_Wpi2C`_)GS6ZNsvgZIhc*Ob^TcgPvvcFFpu86kxBM!JucmjIQzHJb zUB^42CH%a(tqaV%44t*h@T++K`+D73)5A25HLcpb|7==Dzd{bE(YO_#x*JbE+WvG@ z=K4o-rOym339%X(N$APnU#Ry}HtjnO3&MI5>o~`)qJFv<)N&ValfE)UXNxRd@1lwO zWBhx@vsLE8PweRgTz&`Ll#LF3U(^#3%cLAgfidg{VY^^E$st0_xiN5+v;rK(ratW9 zBQaUQ_V1GLg*44(hmi&9;gya%*2YlA(4L=Cc_qSYE%fzdq<=-?{w`9lKm)i&2eaLc zEj-mvWbD7U!o>@CeXTQ?;4%-yjgr&75B9S88`rEU6&Y@9&ullzbpqO8GYZFpr1vu# zQvTqNxvBnpm;;#mauswMSk-;YCVDDw{*me8VJ8+=@pNCrdomMD6U-O*&DP=|najF+ zw2OAsV0@<{6Vc;VfWJe4ITs+g#-{{7+u%ottFTMJ6xUUI`}XsP2%p9|c9t+y$Bu6r zv{}#TJ1rkT4bKMGa=SV-Sznkhhndsk=CF=z_jb(`awXnCWxL*S9n#(PWu*NXWQYtL zpLs{xs?xImmZeV3(c?JTHBlirUw)&mLxxHWRa`zFQL~Hi7&&!r>;M*oNYWQ7Is7@t zwIpDA=Z=E4uT-medqW?ZPY>wXP3Q$xKnh9RI>K+uWux(?4Y0zhLfAs|8HlM#naEN+ zS5!W04XRlG5V;PE$8?tC@f63jKVa4?iX;x@{_BfCZ4GumcaQN9#v<>xIQWr@hB#;N zRQ8n0%oI-2hN<}dAxT9c;fG`Y+#x~Cf;vAxTtRa44x7T|WKjTPo8Wgh-e z0{V6>Mk5+(=xAFZva=N69oNepsWZyo0#3T}!@lDuN<2?R+c!l7fCPV|YPx2La@Hk_ zCjlr98!QHN5Dm{cnZzf+0m0@?a05A5vTvCIMCfb2UjESZa&R~nlU~rDju5NJDDG1( zbra59=H}d<)W0ru1+@-sccc{ka5mUV*W;iw4Gxfm|>>ayTTu4hwIrTBAHp69A@CTYg~r&$6GaOF_MTkPcvU@S|i znItyfkJ3@V#R(u`mieyrwkU9DauHUrP0m?${~P^%>(P%^Il9E0HchkT zxq$byxrvv|hJMrzOROpT$UFN+2%l^xkW{V|O$3OVvD@B|X4Lt*KUo6MxaZ|-%IfK8 z`>GJt5$zu}6VmfXA8P6qu&1f{L(Pr4sl&6hhr`U4%D#tH5pbej|JpW4dAUyKq{{JR zPr`-{LACV2^1@!Kh=P4QGUbvE7tEn*&uyI}0{5e@CnEkkW7X!4Mx}ea2^^j6!YqC; z(CBNtG2sFwaXuG5oFpP+KWRWuY!KqJkljf?h&*^l%KkvzS>GJWyO9#Na=gY_7n9fH z<~8bZNSocjM2)6vba3zIY6R&so<`@`>HZYY|( zJ0PJ{d0Q=Ddao7_3`@W#3R{vSO63&ulzR>U#I0;cy>;)q^TUi#tESaz;@)FTG)Fd+ zqB0CbABp5r6&!;W>D&>V4%Hp?3lJ?5Z{y&6U|tdV>I6~<)*HQ89}K#t=)1T#?}@*E zkIBVcl(^kxE~s1fDEu@3q_?0AXQNX%9^qes(R%7Yc}!*v3mFa=&gFNt-lG&nOMD@H*_&&8+F&4D9SGW(+(|&Da~YG z;6PN=A7zVgi37T-#v^9!&RB*|M)?4pFXB~Z?ag(IU%(QM$ptCFu=_H0aLDOKw)9w- zTwR78VvS7M>TZQj3`|AG0ePaV0KJWX!^hiRZGkwH|zJ7iX$v%ece2GF6e8rsPUXhMuaEn=?=4J;77wcS7}5 zf276yM4r+b3zwm6uQ-|zZ%bupBm=>G^DE-cJO34js4fHll*(X@;T zu!j5+uYI8W_69f9?CT4tD<{{TxE;_(0g literal 0 HcmV?d00001 diff --git a/unicalendar/js/jquery.eventCalendar.js b/unicalendar/js/jquery.eventCalendar.js index 2d7de42..b8fe3ff 100644 --- a/unicalendar/js/jquery.eventCalendar.js +++ b/unicalendar/js/jquery.eventCalendar.js @@ -402,7 +402,28 @@ if (parseInt(eventMinute) <= 9) { eventMinute = "0" + parseInt(eventMinute); } - + // Проверка на пустоту значений Тизера события (изображение, описание, место) + + if(event.image != '')// Start проверяем на пустоту значение переменной Изображение + { + var eventImage = ''; + } else { + var eventImage = ''; + }// End проверяем на пустоту значение переменной Изображение + + if(event.description != '')// Start проверяем на пустоту значение переменной Описание + { + var eventDescription = event.description; + } else { + var eventDescription = ''; + }// End проверяем на пустоту значение переменной Описание + + if(event.location != '')// Start проверяем на пустоту значение переменной Место + { + var eventLocation = '
' + event.location + '
'; + } else { + var eventLocation = ''; + }// End проверяем на пустоту значение переменной Место if (limit === 0 || limit > i) { // if month or day exist then only show matched events @@ -415,13 +436,13 @@ //eventStringDate = eventDay + "/" + eventMonthToShow + "/" + eventYear; eventStringDate = moment(eventDate).format(eventsOpts.dateFormat); var eventTitle; - + if (event.url) { eventTitle = '' + event.title + ''; } else { eventTitle = ''+event.title+''; } - events.push('
  • '+eventTitle+'

    ' + event.description + '

  • '); + events.push('
  • '+ eventImage + eventTitle +'
    ' + '
    ' + eventStringDate + '
    '+eventHour+':'+eventMinute+'
    '+eventLocation + eventDescription + '
  • '); i++; } } diff --git a/unicalendar/lang/ru.php b/unicalendar/lang/ru.php index 42d6f51..04491ed 100644 --- a/unicalendar/lang/ru.php +++ b/unicalendar/lang/ru.php @@ -5,7 +5,7 @@ $uca_locale = 'ru'; $uca_no_events = "Нет запланированных событий"; $uca_real_events = "события:"; $uca_next_events = "Следующие события:"; -$uca_look_events = "Смотреть"; +$uca_look_events = "Подробнее"; $uca_months_events = "[ \"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\" ]"; $uca_monshort_events = "[ \"января\", \"февраля\", \"марта\", \"апреля\", \"мая\", \"июня\", \"июля\", \"августа\", \"сентября\", \"октября\", \"ноября\", \"декабря\" ]"; $uca_weekdays_events = "[ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\" ]"; diff --git a/unicalendar/lang/ru.txt b/unicalendar/lang/ru.txt index 21319da..2ad88e4 100644 --- a/unicalendar/lang/ru.txt +++ b/unicalendar/lang/ru.txt @@ -54,11 +54,25 @@ UCA_ID_INF = "Id" UCA_TITLE_INF = "Название документа" UCA_DATE_INF = "Дата создания" UCA_DATE_EXPIRE = "Дата истечения" -UCA_SELECT_ALL_INF = "Выбрать/Снять все чекбоксы" +UCA_SELECT_ALL_INF = "Выбрать все" +UCA_SELECT_ALL_INF_CH = "± чекбоксы" UCA_RELEV = "Актуальность" UCA_ALERT_RELEV_YES = "Ок - данные календаря актуальны" UCA_ALERT_RELEV_BAD = "Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент, это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!
    ОТЧЕТ:
    В рубрике :
    " UCA_ALERT_RELEV_WAR = "Предупреждение - события в календаре неактуальны! На момент создания календаря документов в рубрике было меньше, чем на текущий момент. Для устранения - пересохраните календарь." UCA_ALERT_RELEV_BAD_SD = "Внимание - события в календаре неактуальны! На момент создания календаря был(и) выбран(ы) документ(ы), которые(ых) на текущий момент не существует в рубрике. Это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!
    ОТЧЕТ:
    В рубрике :
    " UCA_ALERT_RELEV_BAD_SE = ",
    документ(ы) с
    Id = " -UCA_ALERT_RELEV_BAD_SF = "  не найден(ы) !" \ No newline at end of file +UCA_ALERT_RELEV_BAD_SF = "  не найден(ы) !" +UCA_SEL_FIELD_BTN = "Выбрать" +UCA_SEL_FIELD_DATA_INF = "Выбор полей для создания тизера события" +UCA_SEL_FIELD_DATA_TTL = "Название события" +UCA_SEL_FIELD_TTL = "Аналогично названию документа (тег < title >)" +UCA_SEL_FIELD_H_IMG = "Изображение Изображение (Одиночное)\'> " +UCA_SEL_FIELD_IMG = "Выбрать поле" +UCA_SEL_FIELD_DATA_DSC = "Описание события Предупреждение:
    Все HTML теги (если они присутствуют в поле) будут вырезаны (естественно только в календаре), в тизере будет выведено не более 255 символов.\'> 
    " +UCA_SEL_FIELD_DSC = "Выбрать поле" +UCA_SEL_FIELD_DATA_PLW = "Место события Все HTML теги (если они присутствуют в поле) будут вырезаны (естественно только в календаре).
    Eсли вы не планируете указывать место, оставьте это значение пустым (не выбирайте никакого поля).\'> 
    " +UCA_SEL_FIELD_PLC = "Выбрать поле" +UCA_SEL_FIELD_DATA_STR = "Начало события" +UCA_SEL_FIELD_DATA_END = "Завершение события" +UCA_SEL_FIELD_SDOC = "Задано документом" diff --git a/unicalendar/module.php b/unicalendar/module.php index ccce8d6..62b526d 100644 --- a/unicalendar/module.php +++ b/unicalendar/module.php @@ -14,7 +14,7 @@ if (defined('ACP')) { $modul['ModuleName'] = 'Универсальный календарь событий'; $modul['ModuleSysName'] = 'unicalendar'; - $modul['ModuleVersion'] = '1.2.6'; + $modul['ModuleVersion'] = '1.2.7'; $modul['ModuleDescription'] = '
    Модуль позволяет создавать различные календари событий.
    Для вывода календаря используйте системный тег [mod_unicalendar:XXX]'; $modul['ModuleAutor'] = 'Repellent'; $modul['ModuleCopyright'] = '© AVE.cms Team 2017'; diff --git a/unicalendar/sql.php b/unicalendar/sql.php index 9fb7645..f92a70e 100644 --- a/unicalendar/sql.php +++ b/unicalendar/sql.php @@ -32,6 +32,9 @@ $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_unicalendar` ( `uca_scroll` varchar(10) NOT NULL, `uca_descript` varchar(10) NOT NULL, `uca_events_limit` int(10) unsigned NOT NULL, + `uca_img_field` int(10) unsigned NOT NULL, + `uca_dsc_field` int(10) unsigned NOT NULL, + `uca_place_field` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;"; @@ -72,5 +75,16 @@ $module_sql_update[] = " $module_sql_update[] = " ALTER TABLE `CPPREFIX_module_unicalendar` ADD IF NOT EXISTS `uca_events_limit` int(10) unsigned NOT NULL - AFTER `uca_descript`"; + AFTER `uca_descript`"; + // Обновление таблицы в версии модуля v1.2.7 +$module_sql_update[] = " + ALTER TABLE `CPPREFIX_module_unicalendar` + ADD IF NOT EXISTS `uca_img_field` int(10) unsigned NOT NULL + AFTER `uca_events_limit`, + ADD IF NOT EXISTS `uca_dsc_field` int(10) unsigned NOT NULL, + AFTER `uca_img_field`, + ADD IF NOT EXISTS `uca_place_field` int(10) unsigned NOT NULL, + AFTER `uca_dsc_field` + "; + ?> \ No newline at end of file diff --git a/unicalendar/templates/admin_unicalendar_edit.tpl b/unicalendar/templates/admin_unicalendar_edit.tpl index e7be8a2..e932024 100644 --- a/unicalendar/templates/admin_unicalendar_edit.tpl +++ b/unicalendar/templates/admin_unicalendar_edit.tpl @@ -116,6 +116,8 @@ +
    +
    @@ -218,6 +220,10 @@
    + +
    + + @@ -269,6 +275,40 @@ {/foreach} \ No newline at end of file + \ No newline at end of file