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 0000000..545ad89 Binary files /dev/null and b/unicalendar/images/css_sprites.png differ 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