update v 3.32

This commit is contained in:
2026-03-27 14:18:36 +05:00
parent 63a1381c12
commit 8405cd5bef
9 changed files with 1493 additions and 906 deletions

View File

@@ -1,13 +1,39 @@
### Unicalendar
## Модуль Unicalendar - календарь событий
## Модуль Unicalendar - календарь событий v3.32
#### адаптирован для AVE.CMS v3.26
### для AVE.CMS ALT ≥ v3.31
### Модуль позволяет создавать календари, событиями которых являются все документы из заданной рубрики либо определенные документы из заданной рубрики.
* Пример работы с модулем Календарь:
* Создайте рубрику "Календарь" которая будет содержать в себе следующие поля:
* Название события
* Место проведения события
* Описание события
* Изображение (тип поля Изображение (Одиночное))
* Дата начала события (тип поля Дата (Unix Timestamp))
* Дата завершения события (тип поля Дата (Unix Timestamp))
* Создайте документ в рубрике "Календарь" и заполните в нем эти поля.
* Скачайте архив с модулем unicalendar-main.zip и положите его в папку modules, разархивируйте, после чего у вас появится папка unicalendar, ее оставляем архив unicalendar-main.zip удаляем.
* Перейдите в раздел управления модулями вкладка Неустановленные модули, установите модуль Универсальный календарь событий.
* Перейдите к управлению модулем вкладка Создать календарь, выберите тип событий календаря, далее выберите рубрику и вам станет доступным выбор полей для создания тизера события.
* Выбор полей для создания тизера события:
* Название события - по умолчанию используется содержимое тега ```<titel></title>``` но вы можете использовать поле из документа.
* Изображение - выберите поле Изображение (Одиночное). Если оставить это поле пустым - календарь просто проигнорирует его.
* Описание события - используйте нужное вам поле из документа. Важно - все HTML теги, если они имеются, будут очищены, выведется только текст.
* Место события - используйте нужное вам поле из документа. Если оставить это поле пустым - календарь просто проигнорирует его.
* Дата начала - по умолчанию используется дата и время создания документа. Однако, если вам понадобится указать более позднюю дату, например документ создан 20 апреля , а вы хотите в календаре установить дату события 1 мая - используйте для этого в документе поле Дата (Unix Timestamp), это позволит выбрать дату и время в правильном формате. Если использовать текстовое поле, запишите дату и время в таком формате: 01-05-2026 19:00
* Дата завершения - полностью аналогична Дате начала.
* Кликните кнопку "Создать". Ваш календарь будет готов к использованию после размещения системного тега [mod_unicalendar:XXX] в документе или Основном шаблоне или в шаблоне Рубрики.
* Календарь в публичной части сайта не делает запросов к базе данных. Создавая календарь вы создаете js файл с данными с которыми он работает. Поэтому, если вы, создав и сохранив календарь решили сделать в документе какие либо изменения - правки в полях, датах документа или меняете название документа - ```<titel></title>```, обязательно после сохранения документа или удаления документа, пересохраните для актуальности календарь использующий данные из этого документа. Таким образом вы обновите js файл с данными и календарь будет актуальным.
* Используйте файл eventCalendar.css, подключается программно при использовании модуля и расположен в каталоге ```modules/unicalendar/css/```, для редактирования некоторых стилей календаря. Непосредственно разметка вывода находится в файле jquery.eventCalendar.js
### Модуль позволяет создавать календари, событиями которых являются документы из заданной рубрики либо определенные документы из заданной рубрики.
##### Changelog:
##### 27.03.2026 - обновление модуля - версия 3.32 - рефакторинг кода для работы в ave.cms ALT v3.31. Добавлен выбор полей для Названия событий и даты начала и завершения события, обновлен дизайн календаря.
##### 05.09.2019 - обновление модуля - версия 1.26.8 - адаптация для версии ave.cms 3.26, замена устаревшего size() на length
##### 08.09.2017 - обновление модуля - версия 1.2.8 - Fix регулярного выражения для сохранения в файл (dataX.js) в кодировке UTF-8

File diff suppressed because it is too large Load Diff

View File

@@ -1,99 +1,343 @@
/*= CORE CSS */
/* CORE CSS */
.eventCalendar-hidden {
display: none;
display: none;
}
.eventCalendar-wrap {
position: relative;
overflow: hidden;
position: relative;
overflow: hidden;
border: 1px solid #ddd !important;
box-shadow: none !important;
border-radius: 4px !important;
font-family: inherit;
}
.eventCalendar-arrow {
position: absolute;
z-index: 5;
top: 3px;
}
.eventCalendar-prev {
left: 3px;
}
.eventCalendar-next {
right: 3px;
}
.eventCalendar-monthTitle {
display: block;
text-align: center;
position: absolute;
z-index: 5;
top: 3px;
}
.eventCalendar-monthWrap {
position: absolute;
top: 0;
left: 0;
z-index: 2;
position: absolute;
top: 0;
left: 0;
z-index: 2;
}
.eventCalendar-currentMonth {
z-index: 1;
z-index: 1;
}
.eventCalendar-daysList {
display: table;
width: 100%;
display: table;
width: 100%;
background: #fff !important;
border: none !important;
}
.eventCalendar-showAsWeek {
display: block;
display: block;
}
.eventCalendar-daysList li {
display: table-cell;
display: table-cell;
}
.eventCalendar-dayWithEvents {
background: rgba(0, 0, 0, 0.15);
background: rgba(0, 0, 0, 0.15);
}
.eventCalendar-current {
background: rgba(0, 0, 0, 0.35);
background: rgba(0, 0, 0, 0.35);
}
.eventCalendar-showAsWeek li {
display: block;
float: left;
width: 14.28%;
height: 20px;
display: block;
float: left;
width: 14.28%;
height: 20px;
}
.eventCalendar-daysList a {
padding: 0;
display: block;
text-align: center;
font-size: 8px;
min-width: 7px;
padding: 0;
display: block;
text-align: center;
font-size: 8px;
min-width: 7px;
}
.eventCalendar-loading {
display: block;
min-width: 100px;
height: 40px;
line-height: 40px;
display: block;
min-width: 100px;
height: 40px;
line-height: 40px;
}
.eventCalendar-list {
position: relative;
z-index: 1;
position: relative;
z-index: 1;
}
.eventCalendar-oldEventList {
z-index: 2;
z-index: 2;
}
.eventCalendar-subtitle {
padding-left: 5px;
font-weight: bold;
font-size: 120%;
padding-left: 5px;
font-weight: bold;
font-size: 120%;
}
/* end of core CSS */
/* заголовок */
.eventCalendar-currentTitle {
background-color: #138DA5 !important;
border: none !important;
padding: 10px 0 !important;
margin: 0 6px;
padding-top: 5px;
}
.eventCalendar-monthTitle {
display: block;
text-align: center;
width: 100%;
margin: 0 auto;
font-size: 1.1rem !important;
text-transform: uppercase;
letter-spacing: 1px;
}
.eventCalendar-day-header {
background: #f4f4f4 !important;
border-bottom: 1px solid #eee !important;
color: #666 !important;
text-transform: uppercase !important;
font-size: 10px;
padding: 10px 0 !important;
}
/* Список событий */
.eventCalendar-list li {
border-bottom: 1px solid #f0f0f0 !important;
padding: 15px !important;
}
.eventCalendar-eventTitle {
color: #007bff !important;
font-size: 16px !important;
font-weight: 500 !important;
}
/* Скрытый блок описания */
.eventCalendar-eventDesc {
padding: 15px !important;
background-color: #f9f9f9 !important;
border-left: 4px solid #138DA5 !important;
margin-top: 10px !important;
}
/* Кнопка */
.bt {
background: #138DA5 !important;
border: none !important;
border-radius: 2px !important;
box-shadow: none !important;
padding: 8px 20px !important;
text-transform: uppercase;
font-size: 12px !important;
}
/* Стрелки навигации */
.eventCalendar-prev {
left: 20px !important;
margin-top: 10px !important;
}
.eventCalendar-next {
right: 20px !important;
margin-top: 10px !important;
}
/* Сообщение об отсутствии событий */
.eventCalendar-list .eventCalendar-noEvents {
display: flex;
align-items: center;
justify-content: center;
min-height: 80px;
padding: 20px !important;
text-align: center;
background-color: #ccc !important;
color: #fff !important;
border-radius: 4px;
margin: 10px !important;
}
.eventCalendar-noEvents p {
margin: 0 !important;
font-size: 1.1rem;
}
/* Выравнивание иконок и текста */
.uca-date-icon {
display: flex !important;
align-items: center !important;
gap: 10px;
margin-bottom: 8px;
}
.bg-blue_calendar, .bg-blue_clock, .bg-blue_map {
float: none !important;
display: flex !important;
}
.uca-date-icon::before {
content: "";
display: inline-block;
width: 20px;
height: 20px;
background-repeat: no-repeat;
background-size: contain;
flex-shrink: 0;
}
.uca-date-txt {
line-height: 1 !important;
display: inline-block !important;
vertical-align: middle !important;
}
/* Логика для текущего числа */
.eventCalendar-wrap .eventCalendar-daysList li.today {
background: #1a94a6 !important;
color: #fff !important;
}
.eventCalendar-wrap .eventCalendar-daysList li.today a {
color: #fff !important;
}
.eventCalendar-wrap .eventCalendar-daysList li.eventCalendar-day-header.today-header {
color: #1a94a6 !important;
font-weight: bold;
}
.eventCalendar-wrap .eventCalendar-daysList li.eventCalendar-day.today {
background: #1a94a6 !important;
background-color: #1a94a6 !important;
background-image: none !important;
}
.eventCalendar-wrap .eventCalendar-daysList li.eventCalendar-day.today a {
background: #1a94a6 !important;
background-color: #1a94a6 !important;
color: #ffffff !important;
display: block;
}
.eventCalendar-wrap .eventCalendar-daysList li.today:before,
.eventCalendar-wrap .eventCalendar-daysList li.today:after {
display: none !important;
}
/* Прошедшие события */
html body .eventCalendar-wrap .eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.past-event {
background: #d1d1d1 !important;
background-color: #d1d1d1 !important;
background-image: none !important;
border-color: #bcbcbc !important;
}
html body .eventCalendar-wrap .eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.past-event a {
background: #d1d1d1 !important;
background-color: #d1d1d1 !important;
color: #777 !important;
}
.eventCalendar-wrap .eventCalendar-daysList li.past-event:before,
.eventCalendar-wrap .eventCalendar-daysList li.past-event:after {
display: none !important;
}
/* Будущие события */
div.eventCalendar-wrap ul.eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.future-event,
div.eventCalendar-wrap ul.eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.future-event a {
background: #48c9b0 !important;
background-color: #48c9b0 !important;
background-image: none !important;
color: #ffffff !important;
}
/* Cегодняшние события */
div.eventCalendar-wrap ul.eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.today-event,
div.eventCalendar-wrap ul.eventCalendar-daysList li.eventCalendar-day.eventCalendar-dayWithEvents.today-event a {
background: #138DA5 !important;
background-color: #138DA5 !important;
background-image: none !important;
color: #ffffff !important;
}
/* Дополнительные отступы и навигация */
.eventCalendar-wrap .eventCalendar-arrow {
margin: 0 10px;
}
/* Оформление иконок в описании */
.eventCalendar-eventDesc .uca-date-row {
display: flex;
align-items: center;
margin-bottom: 8px;
font-size: 14px;
color: #444;
}
.eventCalendar-eventDesc .uca-date-row i {
color: #1a94a6 !important;
margin-right: 10px;
font-size: 16px;
display: flex;
}
.eventCalendar-eventDesc .uca-date-row span {
line-height: 1.2;
}
/* Дата и бейдж */
.eventCalendar-wrap time {
display: flex;
align-items: center;
flex-wrap: wrap;
margin-bottom: 8px;
gap: 10px;
}
.eventCalendar-wrap time em {
font-size: 0.95rem !important;
color: #666 !important;
font-style: normal;
line-height: 1;
}
.eventCalendar-wrap time small {
background-color: #48c9b0 !important;
color: #fff !important;
font-size: 0.85rem !important;
padding: 3px 10px !important;
border-radius: 4px !important;
font-weight: 500;
line-height: 1;
margin: 0 !important;
}
/* Заголовок в списке */
.eventCalendar-wrap .eventCalendar-eventTitle {
font-size: 1.25rem !important;
color: #191919 !important;
font-weight: 600;
margin-top: 5px;
}
.eventCalendar-wrap .eventCalendar-eventTitle:hover {
color: #1a94a6 !important;
text-decoration: none !important;
}

View File

@@ -4,9 +4,9 @@
$module = array(
'ModuleSysName' => 'unicalendar',
'ModuleVersion' => '1.26.8',
'ModuleVersion' => '3.32',
'ModuleAutor' => 'Repellent',
'ModuleCopyright' => '&copy; 2007-' . date('Y') . ' AVE.cms',
'ModuleCopyright' => '&copy; 2007-' . date('Y') . ' Ave4cms.ru',
'ModuleStatus' => 1,
'ModuleIsFunction' => 1,
'ModuleTemplate' => 0,

View File

@@ -1,15 +1,22 @@
/* =
jquery.eventCalendar.js
version: 0.7
date: 13-08-2015
author:
Jaime Fernandez (@vissit)
company:
Paradigma Tecnologico (@paradigmate)
url:
http://www.vissit.com/projects/eventCalendar/
version: 0.7.1 (Customized)
original date: 13-08-2015
last update: 19-03-2026
original author: Jaime Fernandez (@vissit)
company: Paradigma Tecnologico (@paradigmate)
url: http://www.vissit.com/projects/eventCalendar/
Changes (2026) by Alexander Salnikov (aka Repellent):
- Added past/today/future event status logic
- Integrated Bootstrap Icons (bi-calendar3, bi-clock, bi-geo-alt)
- Improved layout and CSS specificity for modern browsers (PHP 8.4 compatibility)
- Fixed image placement within event descriptions
*/
;(function( $ ) {
var initEventCalendarPlugin = function( $ ) {
$.fn.eventCalendar = function(options){
var calendar = this;
@@ -226,26 +233,33 @@
if (eventsOpts.showDayAsWeeks) {
$eventsCalendarDaysList.addClass('eventCalendar-showAsWeek');
// show day name in top of calendar
if (eventsOpts.showDayNameInCalendar) {
$eventsCalendarDaysList.addClass('eventCalendar-showDayNames');
// show day name in top of calendar
if (eventsOpts.showDayNameInCalendar) {
$eventsCalendarDaysList.addClass('eventCalendar-showDayNames');
i = 0;
// if week start on monday
if (eventsOpts.startWeekOnMonday) {
i = 1;
}
// --- НОВЫЙ КОД ТУТ ---
var todayDate = new Date();
var currentDayNum = todayDate.getDay(); // 0 (вс) - 6 (сб)
// --- КОНЕЦ НОВОГО КОДА ---
for (; i < 7; i++) {
daysList.push('<li class="eventCalendar-day-header">'+moment()._locale._weekdaysShort[i]+'</li>');
i = 0;
if (eventsOpts.startWeekOnMonday) {
i = 1;
}
if (i === 6 && eventsOpts.startWeekOnMonday) {
// print sunday header
daysList.push('<li class="eventCalendar-day-header">'+moment()._locale._weekdaysShort[0]+'</li>');
}
for (; i < 7; i++) {
// Проверяем, совпадает ли индекс цикла с текущим днем недели
var activeHeaderClass = (i === currentDayNum) ? 'today-header' : '';
daysList.push('<li class="eventCalendar-day-header ' + activeHeaderClass + '">'+moment()._locale._weekdaysShort[i]+'</li>');
}
}
if (i === 6 && eventsOpts.startWeekOnMonday) {
// Для воскресенья отдельная проверка, так как оно в конце
var sunActive = (currentDayNum === 0) ? 'today-header' : '';
daysList.push('<li class="eventCalendar-day-header ' + sunActive + '">'+moment()._locale._weekdaysShort[0]+'</li>');
}
}
}
dt=new Date(year, month, 01);
var weekDay = dt.getDay(); // day of the week where month starts
@@ -399,6 +413,23 @@
}
// --- НАЧАЛО ВСТАВКИ: ЛОГИКА ПРОШЕДШИХ СОБЫТИЙ ---
var today = new Date();
today.setHours(0,0,0,0);
var checkDate = new Date(eventYear, eventMonth, eventDay);
checkDate.setHours(0,0,0,0);
var statusClass = '';
if (checkDate < today) {
statusClass = 'past-event'; // Прошедшее
} else if (checkDate.getTime() === today.getTime()) {
statusClass = 'today-event'; // Сегодня
} else {
statusClass = 'future-event'; // Будущее
}
// --- КОНЕЦ ВСТАВКИ ---
if (parseInt(eventMinute) <= 9) {
eventMinute = "0" + parseInt(eventMinute);
}
@@ -431,9 +462,8 @@
if ((month === false || month == eventMonth) && (day === '' || day == eventDay) && (year === '' || year == eventYear) ) {
// if initial load then load only future events
if (month === false && eventDate < new Date()) {
} else {
} else {
moment.locale(eventsOpts.locales.locale);
//eventStringDate = eventDay + "/" + eventMonthToShow + "/" + eventYear;
eventStringDate = moment(eventDate).format(eventsOpts.dateFormat);
var eventTitle;
@@ -442,7 +472,33 @@
} else {
eventTitle = '<span class="eventCalendar-eventTitle">'+event.title+'</span>';
}
events.push('<li id="' + key + '" class="'+event.type+'"><time datetime="'+eventDate+'"><em>' + eventStringDate + '</em><small>'+eventHour+":"+eventMinute+'</small></time>'+ eventImage + eventTitle +'<div class="eventCalendar-eventDesc ' + eventDescClass + '">' + '<div class="bg-blue_calendar uca-date-icon"><span class="uca-date-txt">' + eventStringDate + '</span></div><div class="bg-blue_clock uca-date-icon"><span class="uca-date-txt">'+eventHour+':'+eventMinute+'</span></div>'+eventLocation + eventDescription + '</div></li>');
// Формируем новые блоки с Bootstrap иконками
var dateRow = '<div class="uca-date-row"><i class="bi bi-calendar3"></i> <span>' + eventStringDate + '</span></div>';
var timeRow = '<div class="uca-date-row"><i class="bi bi-clock"></i> <span>' + eventHour + ':' + eventMinute + '</span></div>';
// Локация (если она есть)
var locRow = (event.location != '') ? '<div class="uca-date-row"><i class="bi bi-geo-alt"></i> <span>' + event.location + '</span></div>' : '';
// Собираем всё в итоговый список (здесь можно править дизайн вывода собтий)
var eventLink = '';
if (event.url) {
eventLink = '<a href="' + event.url + '" target="' + eventLinkTarget + '" class="bt">' + eventsOpts.locales.txt_GoToEventUrl + '</a>';
}
events.push('<li id="' + key + '" class="'+event.type+'">' +
'<time datetime="'+eventDate+'"><em>' + eventStringDate + '</em><small>'+eventHour+":"+eventMinute+'</small></time>' +
eventTitle +
'<div class="eventCalendar-eventDesc ' + eventDescClass + '">' +
eventImage +
dateRow +
timeRow +
locRow +
eventDescription +
eventLink + // кнопка с классом "bt" "ПОДРОБНЕЕ"
'</div>' +
'</li>');
i++;
}
}
@@ -450,7 +506,7 @@
// add mark in the dayList to the days with events
if (eventYear == flags.wrap.attr('data-current-year') && eventMonth == flags.wrap.attr('data-current-month')) {
flags.wrap.find('.eventCalendar-currentMonth .eventCalendar-daysList #dayList_' + parseInt(eventDay)).addClass('eventCalendar-dayWithEvents');
flags.wrap.find('.eventCalendar-currentMonth .eventCalendar-daysList #dayList_' + parseInt(eventDay)).addClass('eventCalendar-dayWithEvents ' + statusClass);
}
});
@@ -510,7 +566,17 @@
flags.wrap.find('.eventCalendar-list-wrap').width(flags.wrap.width() + 'px');
}
};
})( jQuery );
function checkAndInit() {
if (window.jQuery) {
initEventCalendarPlugin(window.jQuery);
} else {
setTimeout(checkAndInit, 50); // Ждем 50мс, если jQuery еще нет
}
}
checkAndInit();
})();

View File

@@ -69,7 +69,7 @@ UCA_ALERT_RELEV_BAD_SE = "<strong style=\'color:orange\'>,</strong><br> доку
UCA_ALERT_RELEV_BAD_SF = "<strong style=\'color:orange\'>&nbsp;&nbsp;не найден(ы) !</strong>"
UCA_SEL_FIELD_BTN = "Выбрать"
UCA_SEL_FIELD_DATA_INF = "Выбор полей для создания тизера события"
UCA_SEL_FIELD_DATA_TTL = "Название события"
UCA_SEL_FIELD_DATA_TTL = "<span style=\'float: left; margin-right: 5px;\'>Название события</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Используйте или содержимое titel <br> или выберите текстовое поле\'>&nbsp;</span>"
UCA_SEL_FIELD_TTL = "Аналогично названию документа (тег &lt; title &gt;)"
UCA_SEL_FIELD_H_IMG = "<span style=\'float: left; margin-right: 5px;\'>Изображение</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Разрешенный тип поля - <br> Изображение (Одиночное)\'>&nbsp;</span>"
UCA_SEL_FIELD_IMG = "Выбрать поле"
@@ -77,6 +77,9 @@ UCA_SEL_FIELD_DATA_DSC = "<span style=\'float: left; margin-right: 5px;\'>Опи
UCA_SEL_FIELD_DSC = "Выбрать поле"
UCA_SEL_FIELD_DATA_PLW = "<span style=\'float: left; margin-right: 5px;\'>Место события</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Используйте текстовое поле, например, при событиях для афиш: Место проведения - Стадион Лужники.<br> Все HTML теги (если они присутствуют в поле) будут вырезаны (естественно только в календаре). <br>Eсли вы не планируете указывать место, оставьте это значение пустым (не выбирайте никакого поля).\'>&nbsp;</span>"
UCA_SEL_FIELD_PLC = "Выбрать поле"
UCA_SEL_FIELD_DATA_STR = "Начало события"
UCA_SEL_FIELD_DATA_END = "Завершение события"
UCA_SEL_FIELD_DATA_STR = "<span style=\'float: left; margin-right: 5px;\'>Начало события</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Используйте в документе поле <br> Дата (Unix Timestamp)\'>&nbsp;</span>"
UCA_SEL_FIELD_DATA_END = "<span style=\'float: left; margin-right: 5px;\'>Завершение события</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Используйте в документе поле <br> Дата (Unix Timestamp)\'>&nbsp;</span>"
UCA_SEL_FIELD_SDOC = "Задано документом"
UCA_SEL_FIELD_TTL_DEFAULT = "Аналогично названию документа (тег &lt; title &gt;)"

109
sql.php
View File

@@ -1,90 +1,67 @@
<?php
/**
* AVE.cms - Универсальный календарь событий.
*
* @autor Repellent
* @package AVE.cms
* @subpackage module_unicalendar
* @filesource
*/
if (!defined('BASE_DIR')) exit;
/**
* mySQL-запросы для установки, обновления и удаления модуля
* AVE.cms - Универсальный календарь событий v3.31
* Исправленная структура: Заголовок, Картинка, Описание, Место + Даты (Старт/Конец)
*/
$module_sql_install = array();
$module_sql_deinstall = array();
$module_sql_update = array();
//Удаление модуля
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_unicalendar`";
// УДАЛЕНИЕ (Удаляем только то, что реально используем)
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_unicalendar`;";
// Таблицу _data здесь НЕ упоминаем, раз мы о ней "забыли" и не хотим ее плодить
//Установка модуля
$module_sql_install[] = "CREATE TABLE `%%PRFX%%_module_unicalendar` (
`id` int(10) unsigned NOT NULL auto_increment,
// УСТАНОВКА (Полная актуальная структура основной таблицы)
$module_sql_install[] = "
CREATE TABLE IF NOT EXISTS `%%PRFX%%_module_unicalendar` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uca_title` varchar(255) NOT NULL,
`uca_date_format` varchar(255) NOT NULL,
`uca_events` varchar(10) NOT NULL,
`uca_rubric_id` varchar(10) NOT NULL,
`uca_rubric_title` varchar(255) NOT NULL,
`uca_rubric_title` varchar(500) NOT NULL,
`uca_doc_id` varchar(1024) NOT NULL,
`uca_link` varchar(10) NOT NULL,
`uca_day` varchar(10) NOT NULL,
`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;";
$module_sql_update[] = "
UPDATE `%%PRFX%%_module`
SET
ModuleAveTag = '" . $modul['ModuleAveTag'] . "',
ModulePHPTag = '" . $modul['ModulePHPTag'] . "',
ModuleVersion = '" . $modul['ModuleVersion'] . "'
WHERE
ModuleSysName = '" . $modul['ModuleSysName'] . "'
LIMIT 1;
`uca_ttl_field` int(10) unsigned NOT NULL DEFAULT '0',
`uca_img_field` int(10) unsigned NOT NULL DEFAULT '0',
`uca_dsc_field` int(10) unsigned NOT NULL DEFAULT '0',
`uca_place_field` int(10) unsigned NOT NULL DEFAULT '0',
`uca_str_field` int(10) unsigned NOT NULL DEFAULT '0',
`uca_end_field` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
";
// Обновление таблицы в версии модуля v1.1.3
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_module_unicalendar`
ADD IF NOT EXISTS `uca_rubric_title` varchar(500) NOT NULL
AFTER `uca_rubric_id`";
// ОБНОВЛЕНИЕ СИСТЕМНОЙ ИНФОРМАЦИИ
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_module_unicalendar`
DROP IF EXISTS `uca_user_title`,
DROP IF EXISTS `uca_user_descript`,
DROP IF EXISTS `uca_user_link`,
DROP IF EXISTS `uca_user_time`
";
// Обновление таблицы в версии модуля v1.2.3
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_module_unicalendar`
DROP IF EXISTS `uca_rub_doc_count`
";
// Обновление таблицы в версии модуля v1.2.5
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_module_unicalendar`
ADD IF NOT EXISTS `uca_date_format` varchar(255) NOT NULL
AFTER `uca_title`";
// Обновление таблицы в версии модуля v1.2.6
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_module_unicalendar`
ADD IF NOT EXISTS `uca_events_limit` int(10) unsigned NOT NULL
AFTER `uca_descript`";
// Обновление таблицы в версии модуля v1.2.7
$module_sql_update[] = "
ALTER TABLE `%%PRFX%%_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`
";
UPDATE `%%PRFX%%_module`
SET
ModuleAveTag = '" . $module['ModuleAveTag'] . "',
ModulePHPTag = '" . $module['ModulePHPTag'] . "',
ModuleVersion = '" . $module['ModuleVersion'] . "'
WHERE
ModuleSysName = '" . $module['ModuleSysName'] . "'
LIMIT 1;
";
// ОБНОВЛЕНИЕ СТРУКТУРЫ (Добавляем поля, если их нет)
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_rubric_title` varchar(500) NOT NULL AFTER `uca_rubric_id`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_date_format` varchar(255) NOT NULL AFTER `uca_title`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_events_limit` int(10) unsigned NOT NULL AFTER `uca_descript`";
// Набор полей для кастомных данных
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_ttl_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_events_limit`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_img_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_ttl_field`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_dsc_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_img_field`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_place_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_dsc_field`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_str_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_place_field`";
$module_sql_update[] = "ALTER TABLE `%%PRFX%%_module_unicalendar` ADD IF NOT EXISTS `uca_end_field` int(10) unsigned NOT NULL DEFAULT '0' AFTER `uca_str_field`";
?>

View File

@@ -2,45 +2,45 @@
<div class="widget" style="margin-top: 0px;">
<div class="body">
<ul>
<li>{#UCA_EDIT_INFO#}</li>
</ul>
<li>{#UCA_EDIT_INFO#}</li>
</ul>
</div>
</div>
<div class="breadCrumbHolder module">
<div class="breadCrumb module">
<ul>
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li>
<li><a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li><a href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}">{#ModName#}</a></li>
<li><strong class="code">{#UCA_EDIT_CALEND#}</strong></li>
</ul>
</div>
<div class="breadCrumb module">
<ul>
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li>
<li><a href="index.php?do=modules&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li><a href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}">{#ModName#}</a></li>
<li><strong class="code">{#UCA_EDIT_CALEND#}</strong></li>
</ul>
</div>
</div>
{foreach from=$unicalendars item=unicalendars}
<div class="widget first">
<div class="head">
<h5 class="iFrames">{#UCA_EDIT_CALEND#} - <span id="ed_title">{$unicalendars.uca_title|escape}</span></h5>
</div>
<div class="body">
<ul>
<li><h5 class="iFrames">{#UCA_SET_CALENDAR#}</h5></li>
<li style="margin-top: 5px; margin-bottom: 5px;"><span class="doclink">{#UCA_ID#}</span>&nbsp;&nbsp;<span class="cmsStats">{$unicalendars.id}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="doclink">{#UCA_EVENTS#} = </span>&nbsp;&nbsp;<span class="cmsStats">{if $unicalendars.uca_events == 1}{#UCA_LIST_ALLDOC_RUB#}&nbsp;&nbsp;<i id="title_rub"> {$unicalendars.uca_rubric_title|escape}</i>{elseif $unicalendars.uca_events == 2}{#UCA_LIST_SELDOC_RUB#}&nbsp;&nbsp;<i> {$unicalendars.uca_rubric_title|escape}</i>{/if}</span></li>
</ul>
<li><h5 class="iFrames">{#UCA_SET_CALENDAR#}</h5></li>
<li style="margin-top: 5px; margin-bottom: 5px;"><span class="doclink">{#UCA_ID#}</span>&nbsp;&nbsp;<span class="cmsStats">{$unicalendars.id}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="doclink">{#UCA_EVENTS#} = </span>&nbsp;&nbsp;<span class="cmsStats">{if $unicalendars.uca_events == 1}{#UCA_LIST_ALLDOC_RUB#}&nbsp;&nbsp;<i id="title_rub"> {$unicalendars.uca_rubric_title|escape}</i>{elseif $unicalendars.uca_events == 2}{#UCA_LIST_SELDOC_RUB#}&nbsp;&nbsp;<i> {$unicalendars.uca_rubric_title|escape}</i>{/if}</span></li>
</ul>
</div>
</div>
{if $unicalendars.uca_events == 1}
<table id="tr_uca" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr class="noborder" style="background:#D5E0EC; height: 20px;">
<td></td>
<td><input name="uca_events" type="hidden" id="uca_events" value="{$unicalendars.uca_events|escape}"/></td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_TITLE#}</td>
<td>
<input name="uca_title" type="text" id="uca_title" value="{$unicalendars.uca_title|escape}" style="width:300px" />
</td>
</tr>
<table id="tr_uca" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr class="noborder" style="background:#D5E0EC; height: 20px;">
<td></td>
<td><input name="uca_events" type="hidden" id="uca_events" value="{$unicalendars.uca_events|escape}"/></td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_TITLE#}</td>
<td>
<input name="uca_title" type="text" id="uca_title" value="{$unicalendars.uca_title|escape}" style="width:300px" />
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_PUBLIC_DATE#}</td>
<td>
@@ -59,74 +59,74 @@
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%Y-%m-%d'|pretty_date}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_OPEN_LIKS#}</td>
<td>
<input name="uca_link" type="hidden" id="uca_link" value="{$unicalendars.uca_link|escape}"/>
<tr class="noborder">
<td width="180">{#UCA_OPEN_LIKS#}</td>
<td>
<input name="uca_link" type="hidden" id="uca_link" value="{$unicalendars.uca_link|escape}"/>
<input type="radio" name="u_link" class="u_link" value="true" {if $unicalendars.uca_link == 'true'} checked="checked" {/if}>
<label for="">{#UCA_YES#}</label>
<label for="">{#UCA_YES#}</label>
<input type="radio" name="u_link" class="u_link" value="false" {if $unicalendars.uca_link == 'false'} checked="checked" {/if}>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_WEEK_START#}</td>
<td>
<input name="uca_day" type="hidden" id="uca_day" value="{$unicalendars.uca_day|escape}"/>
<input type="radio" name="u_day" class="u_day" value="true" {if $unicalendars.uca_day == 'true'} checked="checked" {/if}>
<label for="">{#UCA_WEEK_START_MONDAY#}</label>
<input type="radio" name="u_day" class="u_day" value="false" {if $unicalendars.uca_day == 'false'} checked="checked" {/if}>
<label for="">{#UCA_WEEK_START_SUNDAY#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_SCROLL_BAR#}</td>
<td>
<input name="uca_scroll" type="hidden" id="uca_scroll" value="{$unicalendars.uca_scroll|escape}"/>
<input type="radio" name="u_scroll" class="u_scroll" value="true" {if $unicalendars.uca_scroll == 'true'} checked="checked" {/if}>
<label for="">{#UCA_YES#}</label>
<input type="radio" name="u_scroll" class="u_scroll" value="false" {if $unicalendars.uca_scroll == 'false'} checked="checked" {/if}>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_DESCRIPTION#}</td>
<td>
<input name="uca_descript" type="hidden" id="uca_descript" value="{$unicalendars.uca_descript|escape}"/>
<input type="radio" name="u_descript" class="u_descript" value="true" {if $unicalendars.uca_descript == 'true'} checked="checked" {/if}>
<label for="">{#UCA_YES#}</label>
<input type="radio" name="u_descript" class="u_descript" value="false" {if $unicalendars.uca_descript == 'false'} checked="checked" {/if}>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_WEEK_START#}</td>
<td>
<input name="uca_day" type="hidden" id="uca_day" value="{$unicalendars.uca_day|escape}"/>
<input type="radio" name="u_day" class="u_day" value="true" {if $unicalendars.uca_day == 'true'} checked="checked" {/if}>
<label for="">{#UCA_WEEK_START_MONDAY#}</label>
<input type="radio" name="u_day" class="u_day" value="false" {if $unicalendars.uca_day == 'false'} checked="checked" {/if}>
<label for="">{#UCA_WEEK_START_SUNDAY#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_SCROLL_BAR#}</td>
<td>
<input name="uca_scroll" type="hidden" id="uca_scroll" value="{$unicalendars.uca_scroll|escape}"/>
<input type="radio" name="u_scroll" class="u_scroll" value="true" {if $unicalendars.uca_scroll == 'true'} checked="checked" {/if}>
<label for="">{#UCA_YES#}</label>
<input type="radio" name="u_scroll" class="u_scroll" value="false" {if $unicalendars.uca_scroll == 'false'} checked="checked" {/if}>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_DESCRIPTION#}</td>
<td>
<input name="uca_descript" type="hidden" id="uca_descript" value="{$unicalendars.uca_descript|escape}"/>
<input type="radio" name="u_descript" class="u_descript" value="true" {if $unicalendars.uca_descript == 'true'} checked="checked" {/if}>
<label for="">{#UCA_YES#}</label>
<input type="radio" name="u_descript" class="u_descript" value="false" {if $unicalendars.uca_descript == 'false'} checked="checked" {/if}>
<label for="">{#UCA_NO#}</label>
</td>
</tr>
<tr class="noborder">
<td width="180">{#UCA_EVENTS_LIMIT#}</td>
<td>
<input name="uca_events_limit" type="text" id="uca_events_limit" value="{$unicalendars.uca_events_limit|escape}" style="width:32px"/>
</td>
</tr>
<tr class="noborder">
<td width="180"><div style="padding-bottom: 8px; padding-top: 8px;">{#UCA_EVENTS#}</div></td>
<td id="uca_result">
<input type='hidden' name='uca_rubric_title' id='uca_rubric_title' value='{$unicalendars.uca_rubric_title|escape}'>
<input type='hidden' name='uca_rubric_id' id='uca_rubric_id' value='{$unicalendars.uca_rubric_id|escape}'>
<tr class="noborder">
<td width="180"><div style="padding-bottom: 8px; padding-top: 8px;">{#UCA_EVENTS#}</div></td>
<td id="uca_result">
<input type='hidden' name='uca_rubric_title' id='uca_rubric_title' value='{$unicalendars.uca_rubric_title|escape}'>
<input type='hidden' name='uca_rubric_id' id='uca_rubric_id' value='{$unicalendars.uca_rubric_id|escape}'>
<span>{#UCA_LIST_ALLDOC_RUB#} <span class="cmsStats">{$unicalendars.uca_rubric_title|escape}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a class="btn redBtn" href="javascript:void(0);" onclick="ucaCangeRub();">{#UCA_CHANGE_RUBRIC#}</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div id="uca_rub_after_fields"></div>
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<tr>
<td colspan="2">
<div class="pr12" style="display: table; padding: 5px 0px 5px 0px;">
<a id="btn_save_edit" class="btn blueBtn" href="javascript:void(0);">{#UCA_SAVE_EDIT#}</a>&nbsp;&nbsp;&nbsp;&nbsp;
<tr>
<td colspan="2">
<div class="pr12" style="display: table; padding: 5px 0px 5px 0px;">
<a id="btn_save_edit" class="btn blueBtn" href="javascript:void(0);">{#UCA_SAVE_EDIT#}</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a class="btn greenBtn" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}">{#UCA_RETURN_LIST#}</a>
</div>
</td>
</tr>
</td>
</tr>
</table>
{/if}
@@ -272,10 +272,10 @@
</table>
{/if}
{/foreach}
<script>
{if $unicalendars.uca_events == 1 || $unicalendars.uca_events == 2}// START Если событиями календаря являются все доки из рубрики или выбранные доки из рубрики
{if $unicalendars.uca_events|default:0 == 1 || $unicalendars.uca_events|default:0 == 2}// START Если событиями календаря являются все доки из рубрики или выбранные доки из рубрики
var uca_frub_id = '';
$('#i_uca_img_field').val('');
@@ -288,11 +288,69 @@
var uca_place_field = ''; // создаем переменную
var i_uca_place_field = ''; // создаем переменную
$("#uca_rub_after_fields").html('<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings"><colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup><thead><tr class="noborder"><td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td></tr></thead><tbody><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td><td align="left"><select disabled="disabled" name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_H_IMG#}</td><td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td><input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value="{$unicalendars.uca_img_field|escape}"/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td><td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td><input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value="{$unicalendars.uca_dsc_field|escape}"/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td><td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td><input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value="{$unicalendars.uca_place_field|escape}"/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td><td align="left"><select disabled="disabled" name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_END#}</td><td align="left"><select disabled="disabled" name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr></tbody></table>');
$("#uca_rub_after_fields").html(`
<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings">
<colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup>
<thead>
<tr class="noborder">
<td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td>
</tr>
</thead>
<tbody>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td>
<td align="left"><select name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td>
<input name="i_uca_ttl_field" type="hidden" id="i_uca_ttl_field" value="{$unicalendars.uca_ttl_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_H_IMG#}</td>
<td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td>
<input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value="{$unicalendars.uca_img_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td>
<td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td>
<input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value="{$unicalendars.uca_dsc_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td>
<td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td>
<input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value="{$unicalendars.uca_place_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td>
<td align="left">
<select name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select>
<input type="hidden" id="i_uca_str_field" value="{$unicalendars.uca_str_field|default:0}">
</td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_END#}</td>
<td align="left">
<select name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select>
<input type="hidden" id="i_uca_end_field" value="{$unicalendars.uca_end_field|default:0}">
</td>
</tr>
</tbody>
</table>
`);
uca_frub_id = $('#uca_rubric_id').val();
ucaRubFieldsEditAll();
$('#uca_ttl_field').change(function(){ldelim}
var uca_ttl_val = $('#uca_ttl_field').val();
$('#i_uca_ttl_field').val(uca_ttl_val);
{rdelim});
$('#uca_str_field').change(function(){ldelim}
$('#i_uca_str_field').val($(this).val());
{rdelim});
$('#uca_end_field').change(function(){ldelim}
$('#i_uca_end_field').val($(this).val());
{rdelim});
$('#uca_img_field').change(function(){ldelim} // START если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
uca_img_field = $('#uca_img_field').val();
i_uca_img_field = $('#i_uca_img_field').val(uca_img_field);
@@ -310,7 +368,7 @@
{/if}// END Если событиями календаря являются все доки из рубрики
{if $unicalendars.uca_events == 2}// START Если событиями календаря являются выбранные доки из рубрики
{if $unicalendars.uca_events|default:0 == 2}// START Если событиями календаря являются выбранные доки из рубрики
// START получаем данные активных чекбоксов-документов
{foreach from=$check_docs item=check_docs}
$("#inp_doc_{$check_docs.Id}").attr('checked', 'checked' );// активируем чекбоксы в списке документов
@@ -372,10 +430,10 @@
// START обнуляем значение value у input Название календаря при событии focus
$('#uca_title').focus(function(){ldelim}
$('#uca_title').val('');
{rdelim});// END обнуляем значение value у input Название календаря при событии focus
// START обнуляем значение value у input Название календаря при событии focus
$('#uca_title').focus(function(){ldelim}
$('#uca_title').val('');
{rdelim});// END обнуляем значение value у input Название календаря при событии focus
// START обнуляем значение value у input Лимит вывода событий при событии focus
$('#uca_events_limit').focus(function(){ldelim}
@@ -391,64 +449,71 @@
// START получаем значение радиокнопки открыть ссылку и пишем в input значение
$(".u_link").on('change', function() {ldelim}
$('#uca_link').val('');
$('#uca_link').val('');
var u_link = $('input[name="u_link"]:checked').val();
$('#uca_link').val(u_link);
{rdelim});// END получаем значение радиокнопки открыть ссылку и пишем в input значение
// START получаем значение радиокнопки Отображать начало недели в календаре
$(".u_day").on('change', function() {ldelim}
$('#uca_day').val('');
$('#uca_day').val('');
var u_day = $('input[name="u_day"]:checked').val();
$('#uca_day').val(u_day);
{rdelim});// END получаем значение радиокнопки Отображать начало недели в календаре
// START получаем значение радиокнопки Включить полосу прокрутки в событиях
$(".u_scroll").on('change', function() {ldelim}
$('#uca_scroll').val('');
$('#uca_scroll').val('');
var u_scroll = $('input[name="u_scroll"]:checked').val();
$('#uca_scroll').val(u_scroll);
{rdelim});// END получаем значение радиокнопки Включить полосу прокрутки в событиях
// START получаем значение радиокнопки Раскрывать содержимое всех событий сразу после загрузки
$(".u_descript").on('change', function() {ldelim}
$('#uca_descript').val('');
$('#uca_descript').val('');
var u_descript = $('input[name="u_descript"]:checked').val();
$('#uca_descript').val(u_descript);
{rdelim});// END получаем значение радиокнопки Раскрывать содержимое всех событий сразу после загрузки
function ucaRubFieldsEditAll() {ldelim} //START AJAX запросов - вывести поля рубрики + активные пункты в select
$.when( $.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_edit_rub_field_img:'uca_edit_rub_field_img',uca_frub_id:uca_frub_id,id:{$unicalendars.id}{rdelim},
success: function(data) {ldelim}
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>"+data);
{rdelim}
{rdelim}), $.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_edit_rub_field_dsc:'uca_edit_rub_field_dsc',uca_frub_id:uca_frub_id,id:{$unicalendars.id}{rdelim},
success: function(data) {ldelim}
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>"+data);
{rdelim}
{rdelim}), $.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_edit_rub_field_plc:'uca_edit_rub_field_plc',uca_frub_id:uca_frub_id,id:{$unicalendars.id}{rdelim},
success: function(data) {ldelim}
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>"+data);
{rdelim}
{rdelim}) ).then( function (resp1, resp2, resp3) {ldelim}
/* Этот callback запустится один раз, когда все AJAX запросы будут завершены
и будут получены все ответы сервера в параметрах resp1, resp2, resp3 и только
тогда разукрашиваем гребанный select */
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
{rdelim});
{rdelim}; //END AJAX запросов - вывести поля рубрики + активные пункты в select
//START AJAX запросов - вывести поля рубрики + активные пункты в select
function ucaRubFieldsEditAll() {ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
data: {ldelim}
uca_rub_field: 'uca_rub_field',
uca_frub_id: uca_frub_id,
id: {$unicalendars.id|default:0}
{rdelim},
success: function(data) {ldelim}
// 1. Заполняем все селекты данными + добавляем дефолтный пункт
$("#uca_ttl_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_TTL#}</option>" + data);
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>" + data);
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>" + data);
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>" + data);
$("#uca_str_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_SDOC#}</option>" + data);
$("#uca_end_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_SDOC#}</option>" + data);
// 2. Проставляем сохраненные значения. Если в инпуте 0 или пусто - ставим '', чтобы отобразилась подсказка
$('#uca_ttl_field').val(($('#i_uca_ttl_field').val() != 0) ? $('#i_uca_ttl_field').val() : '');
$('#uca_img_field').val(($('#i_uca_img_field').val() != 0) ? $('#i_uca_img_field').val() : '');
$('#uca_dsc_field').val(($('#i_uca_dsc_field').val() != 0) ? $('#i_uca_dsc_field').val() : '');
$('#uca_place_field').val(($('#i_uca_place_field').val() != 0) ? $('#i_uca_place_field').val() : '');
$('#uca_str_field').val(($('#i_uca_str_field').val() != 0) ? $('#i_uca_str_field').val() : '');
$('#uca_end_field').val(($('#i_uca_end_field').val() != 0) ? $('#i_uca_end_field').val() : '');
// 3. Оживляем стилизацию с микро-задержкой
setTimeout(function() {ldelim}
$('.settings select').styler('destroy');
$('.settings select').styler({ldelim}
selectSearch: false,
selectVisibleOptions: 5
{rdelim});
{rdelim}, 50);
{rdelim}
{rdelim});
{rdelim};
//END AJAX запросов
// START AJAX запрос при клике по кнопке Сменить рубрику
function ucaCangeRub() {ldelim}
@@ -464,9 +529,9 @@ $.when( $.ajax({ldelim}
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#SaveError#}", {ldelim}
header: '{#SentData#}',
theme: 'error'
{rdelim});
header: '{#SentData#}',
theme: 'error'
{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос при клике по кнопке Сменить рубрику
@@ -483,14 +548,73 @@ $.when( $.ajax({ldelim}
var uca_inptxt_res = $("#uca_result option:selected").text();
$('#uca_rubric_id').val(uca_inp_res);
$('#uca_rubric_title').val(uca_inptxt_res);
{if $unicalendars.uca_events == 1}
{if $unicalendars.uca_events|default:0 == 1}
var uca_res_new_rub = $('#uca_rubric_id').val();
if(uca_res_new_rub !='')
{ldelim}
$('#uca_rub_after_fields').html('<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings"><colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup><thead><tr class="noborder"><td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td></tr></thead><tbody><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td><td align="left"><select disabled="disabled" name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_H_IMG#}</td><td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td><input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td><td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td><input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td><td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td><input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td><td align="left"><select disabled="disabled" name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_END#}</td><td align="left"><select disabled="disabled" name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr></tbody></table>');
$("#uca_rub_after_fields").html(`
<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings">
<colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup>
<thead>
<tr class="noborder">
<td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td>
</tr>
</thead>
<tbody>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td>
<td align="left"><select name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td>
<input name="i_uca_ttl_field" type="hidden" id="i_uca_ttl_field" value="{$unicalendars.uca_ttl_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_H_IMG#}</td>
<td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td>
<input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value="{$unicalendars.uca_img_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td>
<td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td>
<input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value="{$unicalendars.uca_dsc_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td>
<td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td>
<input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value="{$unicalendars.uca_place_field|escape}"/>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td>
<td align="left">
<select name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select>
<input type="hidden" id="i_uca_str_field" value="{$unicalendars.uca_str_field|default:0}">
</td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_END#}</td>
<td align="left">
<select name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select>
<input type="hidden" id="i_uca_end_field" value="{$unicalendars.uca_end_field|default:0}">
</td>
</tr>
</tbody>
</table>
`);
uca_frub_id = $('#uca_rubric_id').val();
ucaRubFields();
$('#uca_ttl_field').change(function(){ldelim}
var uca_ttl_val = $('#uca_ttl_field').val();
$('#i_uca_ttl_field').val(uca_ttl_val);
{rdelim});
$('#uca_str_field').change(function(){ldelim}
$('#i_uca_str_field').val($(this).val());
{rdelim});
$('#uca_end_field').change(function(){ldelim}
$('#i_uca_end_field').val($(this).val());
{rdelim});
$('#uca_img_field').change(function(){ldelim} // START если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
uca_img_field = $('#uca_img_field').val();
i_uca_img_field = $('#i_uca_img_field').val(uca_img_field);
@@ -514,25 +638,32 @@ $.when( $.ajax({ldelim}
// START AJAX запрос вывести все поля рубрики
function ucaRubFields() {ldelim}
function ucaRubFields() {ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_rub_field:'uca_rub_field',uca_frub_id:uca_frub_id{rdelim},
success: function(data) {ldelim}
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>"+data);
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>"+data);
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>"+data);
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
{rdelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_rub_field:'uca_rub_field',uca_frub_id:uca_frub_id{rdelim},
success: function(data) {ldelim}
$("#uca_ttl_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_TTL#}</option>"+data);
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>"+data);
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>"+data);
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>"+data);
$("#uca_str_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_SDOC#}</option>"+data);
$("#uca_end_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_SDOC#}</option>"+data);
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос вывести все поля рубрики
{rdelim};
// END AJAX запрос вывести все поля рубрики
// START Если произошло событие клик на кнопке Сохранить изменения - отправляем AJAX запрос и пишем в БД данные
$("#btn_save_edit").on('click', function() {ldelim}
var uca_events = $('#uca_events').val();
var uca_title = $('#uca_title').val();
var send_uca_ttl_field = $('#i_uca_ttl_field').val();
var uca_date_format = $('#uca_date_format').val();
var uca_link = $('#uca_link').val();
var uca_day = $('#uca_day').val();
@@ -545,6 +676,8 @@ $.when( $.ajax({ldelim}
var send_uca_img_field = $('#i_uca_img_field').val();
var send_uca_dsc_field = $('#i_uca_dsc_field').val();
var send_uca_place_field = $('#i_uca_place_field').val();
var send_uca_str_field = $('#i_uca_str_field').val();
var send_uca_end_field = $('#i_uca_end_field').val();
var check_fields = $('#uca_title').val();
var check_fields_rubric_id = $('#uca_rubric_id').val();
@@ -554,9 +687,8 @@ $.when( $.ajax({ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=edit_save&id={$unicalendars.id}&cp={$sess}',
data: {ldelim}uca_events:uca_events,uca_title:uca_title,uca_date_format:uca_date_format,uca_link:uca_link,uca_day:uca_day,uca_scroll:uca_scroll,uca_descript:uca_descript,uca_events_limit:uca_events_limit,uca_rubric_id:uca_rubric_id,uca_rubric_title:uca_rubric_title,uca_doc_id:uca_doc_id,send_uca_img_field:send_uca_img_field,send_uca_dsc_field:send_uca_dsc_field,send_uca_place_field:send_uca_place_field{rdelim},
success: function(data) {ldelim}
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=edit_save&id={$unicalendars.id|default:0}&cp={$sess}',
data: {ldelim}uca_events:uca_events,uca_title:uca_title,uca_date_format:uca_date_format,uca_link:uca_link,uca_day:uca_day,uca_scroll:uca_scroll,uca_descript:uca_descript,uca_events_limit:uca_events_limit,uca_rubric_id:uca_rubric_id,uca_rubric_title:uca_rubric_title,uca_doc_id:uca_doc_id,send_uca_ttl_field: send_uca_ttl_field,send_uca_img_field:send_uca_img_field,send_uca_dsc_field:send_uca_dsc_field,send_uca_place_field:send_uca_place_field,send_uca_str_field: send_uca_str_field,send_uca_end_field: send_uca_end_field{rdelim},success: function(data) {ldelim}
$('#ed_title').html(uca_title);
$('#title_rub').html('&nbsp;&nbsp;'+uca_rubric_title);
$.jGrowl("{#UCA_ALERT_SAVE_EDIT_S#}", {ldelim}
@@ -566,9 +698,9 @@ $.when( $.ajax({ldelim}
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#UCA_ALERT_SAVE_EDIT_E#}", {ldelim}
header: '{#UCA_ALERT_SAVE_EDIT#}{$unicalendars.id}',
theme: 'error'
{rdelim});
header: '{#UCA_ALERT_SAVE_EDIT#}{$unicalendars.id|default:0}',
theme: 'error'
{rdelim});
{rdelim}
{rdelim});

View File

@@ -58,12 +58,12 @@
<strong class="code">{$unicalendar.id}</strong>
</td>
<td align="left">
<a class="btn greyishBtn" title="{#UCA_EDIT#}" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=edit&id={$unicalendar.id}&cp={$sess}">{$unicalendar.uca_title|escape}</a>
<a class="{if $unicalendar.uca_events == 1}doclink status-green-row {elseif $unicalendar.uca_events == 2}doclink status-blue-row{/if}" title="{#UCA_EDIT#}" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=edit&id={$unicalendar.id}&cp={$sess}">{$unicalendar.uca_title|escape}</a>
</td>
<td align="center">
<div align="left">
{if $unicalendar.uca_events == 1}<a style="cursor: default;" class="btn greenBtn" href="javascript:void(0);">{#UCA_LIST_ALLDOC_RUB#}&nbsp;&nbsp;<i>{$unicalendar.uca_rubric_title|escape}</i></a>
{elseif $unicalendar.uca_events == 2}<a style="cursor: default;" class="btn blueBtn" href="javascript:void(0);">{#UCA_LIST_SELDOC_RUB#}&nbsp;&nbsp;<i>{$unicalendar.uca_rubric_title|escape}</i></a>
{if $unicalendar.uca_events == 1}<a style="cursor: default;" class="event-label-indicator event-label-green" href="javascript:void(0);">{#UCA_LIST_ALLDOC_RUB#}&nbsp;&nbsp;<i>{$unicalendar.uca_rubric_title|escape}</i></a>
{elseif $unicalendar.uca_events == 2}<a style="cursor: default;" class="event-label-indicator event-label-blue" href="javascript:void(0);">{#UCA_LIST_SELDOC_RUB#}&nbsp;&nbsp;<i>{$unicalendar.uca_rubric_title|escape}</i></a>
{else}<strong>{#UCA_EVENTS_WARNING#}</strong>
{/if}
</div>
@@ -118,16 +118,16 @@
else if (count_old_array == count_new_array && diff != '' || count_old_array != count_new_array && diff != '')
{ldelim}
$('#count_wrap_{$unicalendar.id}').prop('style', 'width:18px;height:18px;background:red;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;');
{if $unicalendar.uca_events == 1}
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_BAD#}<strong style=\'color:orange\'>{$unicalendar.uca_rubric_title}</strong>{#UCA_ALERT_RELEV_BAD_SE#}<strong style=\'color:orange\'>'+diff+'</strong>{#UCA_ALERT_RELEV_BAD_SF#}');// Внимание - события в календаре неактуальны! На момент создания календаря был(и) выбран(ы) документ(ы), которые(ых) на текущий момент не существует в рубрике. Это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните календарь!
{elseif $unicalendar.uca_events == 2}
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_BAD_SD#}<strong style=\'color:orange\'>{$unicalendar.uca_rubric_title}</strong>{#UCA_ALERT_RELEV_BAD_SE#}<strong style=\'color:orange\'>'+diff+'</strong>{#UCA_ALERT_RELEV_BAD_SF#}');// Внимание - события в календаре неактуальны! На момент создания календаря был(и) выбран(ы) документ(ы), которые(ых) на текущий момент не существует в рубрике. Это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните календарь!
{/if}
{if $unicalendar.uca_events == 1}
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_BAD#|escape:"javascript"}<strong style="color:orange">{$unicalendar.uca_rubric_title|escape:"javascript"}</strong>{#UCA_ALERT_RELEV_BAD_SE#|escape:"javascript"}<strong style="color:orange">' + diff + '</strong>{#UCA_ALERT_RELEV_BAD_SF#|escape:"javascript"}');
{elseif $unicalendar.uca_events == 2}
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_BAD_SD#|escape:"javascript"}<strong style="color:orange">{$unicalendar.uca_rubric_title|escape:"javascript"}</strong>{#UCA_ALERT_RELEV_BAD_SE#|escape:"javascript"}<strong style="color:orange">' + diff + '</strong>{#UCA_ALERT_RELEV_BAD_SF#|escape:"javascript"}');
{/if}
{rdelim}{if $unicalendar.uca_events == 2}; {elseif $unicalendar.uca_events == 1}
else if (count_old_array < count_new_array && diff == '')
{ldelim}
$('#count_wrap_{$unicalendar.id}').prop('style', 'width:18px;height:18px;background:orange;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;');
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_WAR#}');// выводим подсказку - Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент...
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_WAR#}');
{rdelim};
{/if}// завершение условий проверки
{rdelim},
@@ -264,7 +264,7 @@
</div>
{/if}
<script>
$('uca_events_sel').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});// стилизуем селект выбора событий календаря
$('#uca_events_sel').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});// стилизуем селект выбора событий календаря
// START обнуляем значение value у input Лимит вывода событий при событии focus
$('#uca_events_limit').focus(function(){ldelim}
$('#uca_events_limit').val('');
@@ -316,7 +316,69 @@
uca_title_sel_rub = $('#uca_rubric_title').val();// пишем в переменную title выбранной рубрики
if (uca_id_sel_rub !=''){ldelim}// если выбрана рубрика
//alert("Id рубрики = "+uca_id_sel_rub+" Название рубрики = "+uca_title_sel_rub);
$('#uca_after_fields').after('<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings"><colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup><thead><tr class="noborder"><td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td></tr></thead><tbody><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td><td align="left"><select disabled="disabled" name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_H_IMG#}</td><td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td><input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td><td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td><input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td><td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td><input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td><td align="left"><select disabled="disabled" name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_END#}</td><td align="left"><select disabled="disabled" name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr></tbody></table>');
$('#uca_after_fields').after(`
<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings">
<colgroup>
<col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*">
</colgroup>
<thead>
<tr class="noborder">
<td colspan="2">
<h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5>
</td>
</tr>
</thead>
<tbody>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td>
<td align="left">
<select name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"></select>
<input name="i_uca_ttl_field" type="hidden" id="i_uca_ttl_field" value="0"/>
</td>
</tr>
<tr class="noborder">
<td align="left">
<span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_H_IMG#}</span>
</td>
<td align="left">
<select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select>
<input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value=""/>
</td>
</tr>
<tr class="noborder">
<td align="left">
<span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_DATA_DSC#}</span>
</td>
<td align="left">
<select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select>
<input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value=""/>
</td>
</tr>
<tr class="noborder">
<td align="left">
<span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_DATA_PLW#}</span>
</td>
<td align="left">
<select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select>
<input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value=""/>
</td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td>
<td align="left">
<select name="uca_str_field" id="uca_str_field" style="width: 300px;"></select>
<input name="i_uca_str_field" type="hidden" id="i_uca_str_field" value="0"/>
</td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_END#}</td>
<td align="left">
<select name="uca_end_field" id="uca_end_field" style="width: 300px;"></select>
<input name="i_uca_end_field" type="hidden" id="i_uca_end_field" value="0"/>
</td>
</tr>
</tbody>
</table>`);
uca_frub_id = $('#uca_rubric_id').val();
ucaRubFields();
$('#uca_img_field').change(function(){ldelim} // START если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
@@ -372,7 +434,64 @@
var uca_inp_res = $("#uca_result option:selected").val();
var uca_inptxt_res = $("#uca_result option:selected").text();
if (val_rub !=''){ldelim}
$('#tr_uca_res').after('<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings"><colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup><thead><tr class="noborder"><td colspan="2" ><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td></tr></thead><tbody><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td><td align="left"><select disabled="disabled" name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_TTL#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_H_IMG#}</td><td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select></td><input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_DSC#}</td><td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select></td><input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_PLW#}</td><td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select></td><input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value=""/></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td><td align="left"><select disabled="disabled" name="uca_str_field" id="uca_str_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr><tr class="noborder"><td align="left">{#UCA_SEL_FIELD_DATA_END#}</td><td align="left"><select disabled="disabled" name="uca_end_field" id="uca_end_field" style="width: 300px;"><option style="color: #ABABAB;" value="">{#UCA_SEL_FIELD_SDOC#}</option></select></td></tr></tbody></table><table id="tr_uca_res_doc" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><colgroup><col width="201" /><col width="*" /></colgroup><col width="*" /></colgroup><col width="*" /><thead><tr class="noborder"><td align="center"><label>{#UCA_SELECT_ALL_INF#} <input style="position:relative; top:3px;" type="checkbox" id="check_all">&nbsp;{#UCA_SELECT_ALL_INF_CH#}</label></td><td align="center">{#UCA_ID_INF#}</td><td align="center">{#UCA_TITLE_INF#}</td><td align="center">{#UCA_DATE_INF#}</td><td align="center">{#UCA_DATE_EXPIRE#}</td></tr></thead><tbody><tr id="result_doc"></tr></tbody></table>');
$('#tr_uca_res').after(`
<table id="tr_uca_data" cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings">
<colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup>
<thead>
<tr class="noborder">
<td colspan="2"><h5 class="iFrames" style="text-align: left; padding-left: 10px;">{#UCA_SEL_FIELD_DATA_INF#}</h5></td>
</tr>
</thead>
<tbody>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_TTL#}</td>
<td align="left">
<select name="uca_ttl_field" id="uca_ttl_field" style="width: 300px;"></select>
<input name="i_uca_ttl_field" type="hidden" id="i_uca_ttl_field" value="0"/>
</td>
</tr>
<tr class="noborder">
<td align="left"><span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_H_IMG#}</span></td>
<td align="left"><select name="uca_img_field" id="uca_img_field" style="width: 300px;"></select><input name="i_uca_img_field" type="hidden" id="i_uca_img_field" value=""/></td>
</tr>
<tr class="noborder">
<td align="left"><span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_DATA_DSC#}</span></td>
<td align="left"><select name="uca_dsc_field" id="uca_dsc_field" style="width: 300px;"></select><input name="i_uca_dsc_field" type="hidden" id="i_uca_dsc_field" value=""/></td>
</tr>
<tr class="noborder">
<td align="left"><span style="float: left; margin-right: 5px;">{#UCA_SEL_FIELD_DATA_PLW#}</span></td>
<td align="left"><select name="uca_place_field" id="uca_place_field" style="width: 300px;"></select><input name="i_uca_place_field" type="hidden" id="i_uca_place_field" value=""/></td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_STR#}</td>
<td align="left">
<select name="uca_str_field" id="uca_str_field" style="width: 300px;"></select>
<input name="i_uca_str_field" type="hidden" id="i_uca_str_field" value="0"/>
</td>
</tr>
<tr class="noborder">
<td align="left">{#UCA_SEL_FIELD_DATA_END#}</td>
<td align="left">
<select name="uca_end_field" id="uca_end_field" style="width: 300px;"></select>
<input name="i_uca_end_field" type="hidden" id="i_uca_end_field" value="0"/>
</td>
</tr>
</tbody>
</table>
<table id="tr_uca_res_doc" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
<colgroup><col width="201"><col width="*"><col width="*"><col width="*"><col width="*"></colgroup>
<thead>
<tr class="noborder">
<td align="center"><label><span style="margin-right:14px;">{#UCA_SELECT_ALL_INF#}</span> <input style="position:relative; top:3px;" type="checkbox" id="check_all">&nbsp;<span class="code">{#UCA_SELECT_ALL_INF_CH#}</span></label></td>
<td align="center">{#UCA_ID_INF#}</td>
<td align="center">{#UCA_TITLE_INF#}</td>
<td align="center">{#UCA_DATE_INF#}</td>
<td align="center">{#UCA_DATE_EXPIRE#}</td>
</tr>
</thead>
<tbody><tr id="result_doc"></tr></tbody>
</table>
`);
$('#uca_rubric_id').val(uca_inp_res);
$('#uca_rubric_title').val(uca_inptxt_res);
uca_doc_request = uca_inp_res;
@@ -399,42 +518,62 @@
{rdelim});
{rdelim}// END Если значение value не пустое и выбран тип события "Выбранные документы из заданной рубрики"...
// START AJAX запрос вывести все поля рубрики
// START AJAX запрос вывести все поля рубрики
function ucaRubFields() {ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_rub_field:'uca_rub_field',uca_frub_id:uca_frub_id{rdelim},
success: function(data) {ldelim}
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>"+data);
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>"+data);
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>"+data);
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос вывести все поля рубрики
if (!uca_frub_id) return; // Если ID рубрики нет, ничего не делаем
// START AJAX запрос по типу выбранного события - "Все документы из заданной рубрики"
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}uca_rub_field:'uca_rub_field', uca_frub_id:uca_frub_id{rdelim},
success: function(data) {ldelim}
// Наполняем Заголовок
$("#uca_ttl_field").html("<option style='color: #000;' value='0'>{#UCA_SEL_FIELD_TTL_DEFAULT#}</option>"+data);
// Наполняем Изображение, Описание, Место
$("#uca_img_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_IMG#}</option>"+data);
$("#uca_dsc_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_DSC#}</option>"+data);
$("#uca_place_field").html("<option style='color: #ABABAB;' value=''>{#UCA_SEL_FIELD_PLC#}</option>"+data);
// START Наполняем Даты (Начало и Конец)
$("#uca_str_field").html("<option style='color: #ABABAB;' value='0'>{#UCA_SEL_FIELD_SDOC#}</option>"+data);
$("#uca_end_field").html("<option style='color: #ABABAB;' value='0'>{#UCA_SEL_FIELD_SDOC#}</option>"+data);
// END Даты
// Обновляем стили всех селекторов, чтобы они видели новые option
$('select').styler('destroy'); // Сначала сбросим старый стайлер
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос
// START AJAX запрос по типу выбранного события - "Все документы из заданной рубрики"
function ucaCall() {ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}c:uca_request{rdelim},
success: function(data) {ldelim}
$("#uca_result").html(data);
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
uca_request = '';
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#SaveError#}", {ldelim}
header: '{#SentData#}',
theme: 'error'
{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос по типу выбранного события - "Все документы из заданной рубрики"
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}c:uca_request{rdelim},
success: function(data) {ldelim}
$("#uca_result").html(data);
// когда выбрали рубрику из списка, нужно сразу дернуть поля этой рубрики
$('#uca_result').change(function(){ldelim}
uca_frub_id = $(this).val();
if (uca_frub_id != '') {ldelim}
ucaRubFields(); // Вызываем загрузку полей (Title, Start, End и т.д.)
{rdelim}
{rdelim});
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
uca_request = '';
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#SaveError#}", {ldelim}header: '{#SentData#}', theme: 'error'{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос
// START AJAX запрос получаем список документов из выбранной рубрики
function ucaDoc() {ldelim}
@@ -481,6 +620,30 @@
{rdelim});
{rdelim});// END CHECK - отмечаем - снимаем чекбоксы документов по одному и пишем в input значение
// START выбор поля для заголовка события (Title)
$(document).on('change', '#uca_ttl_field', function() {ldelim}
var uca_ttl_val = $(this).val();
// Если ничего не выбрано или выбрано "0", пишем 0
$('#i_uca_ttl_field').val(uca_ttl_val || '0');
{rdelim});
// END выбор поля для заголовка события
// START выбор поля для даты начала события (Start Date)
$(document).on('change', '#uca_str_field', function() {ldelim}
var uca_str_val = $(this).val();
// Если ничего не выбрано или выбрано "0", пишем 0 (системная дата документа)
$('#i_uca_str_field').val(uca_str_val || '0');
{rdelim});
// END выбор поля для даты начала события
// START выбор поля для даты окончания события (End Date)
$(document).on('change', '#uca_end_field', function() {ldelim}
var uca_end_val = $(this).val();
// Если ничего не выбрано или выбрано "0", пишем 0 (системная дата документа)
$('#i_uca_end_field').val(uca_end_val || '0');
{rdelim});
// END выбор поля для даты окончания события
// START получаем значение радиокнопки формат даты и пишем в input значение
$(".u_date_format").on('change', function() {ldelim}
$('#uca_date_format').val('');