Browse Source

Обновление модуля до версии 1.2

master
root 8 years ago
parent
commit
cf92ee5b88
  1. 10
      README.md
  2. 220
      unicalendar/class.unicalendar.php
  3. BIN
      unicalendar/images/question_alert.png
  4. BIN
      unicalendar/images/question_select.png
  5. BIN
      unicalendar/images/question_start_one.png
  6. 16
      unicalendar/lang/ru.php
  7. 38
      unicalendar/lang/ru.txt
  8. 13
      unicalendar/module.php
  9. 22
      unicalendar/sql.php
  10. 382
      unicalendar/templates/admin_unicalendar_edit.tpl
  11. 108
      unicalendar/templates/admin_unicalendar_list.tpl
  12. 42
      unicalendar/templates/unicalendar.tpl
  13. 43
      unicalendar/uca.res.php

10
README.md

@ -1,6 +1,10 @@
### Unicalendar ## Unicalendar
## Модуль Unicalendar - календарь событий # Модуль Unicalendar - календарь событий
### адаптирован для AVE.CMS v3.1.9
![Module Unicalendar](https://gitget.ru/img/unicalendar.png "Модуль Unicalendar")
### Модуль позволяет создавать календари, событиями которых являются документы из заданной рубрики либо определенные документы из заданной рубрики. ### Модуль позволяет создавать календари, событиями которых являются документы из заданной рубрики либо определенные документы из заданной рубрики.
@ -10,6 +14,8 @@
##### Changelog: ##### Changelog:
##### 05.05.2017 - обновление модуля - версия 1.2 - исправление ошибок, добавлено редактирование календарей, скрипты вынесены в секцию <head>
##### 10.04.2017 - обновление модуля - версия 1.1.2 - fix вывода документа - ошибка 404. ##### 10.04.2017 - обновление модуля - версия 1.1.2 - fix вывода документа - ошибка 404.
##### 10.04.2017 - обновление модуля - версия 1.1.1 - fix для корректной работы модуля с версиями php начиная с =>5.3.13 ##### 10.04.2017 - обновление модуля - версия 1.1.1 - fix для корректной работы модуля с версиями php начиная с =>5.3.13

220
unicalendar/class.unicalendar.php

@ -23,6 +23,15 @@ class Unicalendar
function unicalendarShow($tpl_dir, $id) function unicalendarShow($tpl_dir, $id)
{ {
require(BASE_DIR . '/modules/unicalendar/lang/ru.php'); // загружаем файл ленгов для php переменных
// подключаем JS скрипты и CSS файлы календаря в секцию head
$eventCalendar_css = '<link rel="stylesheet" href="'.ABS_PATH.'modules/unicalendar/css/eventCalendar.css" type="text/css" media="screen" charset="utf-8" />';
$eventCalendar_theme_responsive_css = '<link rel="stylesheet" href="'.ABS_PATH.'modules/unicalendar/css/eventCalendar_theme_responsive.css" type="text/css" media="screen" charset="utf-8" />';
$moment_js = '<script src="'.ABS_PATH.'modules/unicalendar/js/moment.js" type="text/javascript" charset="utf-8"></script>';
$jquery_eventCalendar_js = '<script src="'.ABS_PATH.'modules/unicalendar/js/jquery.eventCalendar.js" type="text/javascript" charset="utf-8"></script>';
$GLOBALS['user_header']['module_unicalendar_'] = $eventCalendar_css."\n".$eventCalendar_theme_responsive_css."\n".$moment_js."\n".$jquery_eventCalendar_js;
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT * SELECT *
@ -36,9 +45,13 @@ class Unicalendar
} }
foreach ( $unicalendars as $k=>$v ) foreach ( $unicalendars as $k=>$v )
{ {
$uevents = $v['uca_events']; $uevents = $v['uca_events'];
$urubric_id = $v['uca_rubric_id']; $urubric_id = $v['uca_rubric_id'];
$udoc_id = $v['uca_doc_id']; $udoc_id = $v['uca_doc_id'];
$uca_day = $v['uca_day'];
$uca_scroll = $v['uca_scroll'];
$uca_link = $v['uca_link'];
$uca_descript = $v['uca_descript'];
} }
// Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут! // Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
if ($uevents !='' && $uevents == '1'){ if ($uevents !='' && $uevents == '1'){
@ -52,10 +65,38 @@ class Unicalendar
{ {
array_push($results, $row); array_push($results, $row);
} }
//получаем данные всех документов из заданной рубрики циклом, формируем строку JSON
foreach ( $results as $k=>$v )
{
$uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },";
}
$js_data_files = "$(function(){"."var data".$id." = [".$uni_data."]; $(\"#eventCalendar".$id."\").eventCalendar({jsonData: data".$id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", 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."}}});});";
// Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря
$fdir = "/modules/unicalendar/js/data-files/";
mkdir(BASE_DIR . $fdir, 0777, true);
chmod(BASE_DIR . $fdir, 0777);
$df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$id.".js", "w")
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
flock($df,2);
fwrite($df, $js_data_files);
flock($df,3);
fclose($df);
// Записываем в секции <head> подключение js файла с данными календаря, согласно Id этого календаря
$data_dir = "/modules/unicalendar/js/data-files";
$filename = BASE_DIR .$data_dir."/data".$id.".js";
if (file_exists($filename))
{
$GLOBALS['user_header']['module_unicalendar_' . $id] = '<script src="'.ABS_PATH.'modules/unicalendar/js/data-files/data'.$id.'.js" type="text/javascript" charset="utf-8"></script>'; // подключаем в секции <head> js файл с данным , согласно Id календаря
}
else {
echo $uca_file_not_found.$id.".js"; // если не смогли подключить файл -выводим сообщение-подсказку
};
} }
// Если выбрали вывести выбранные документы из заданной рубрики // Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
if ($uevents !='' && $uevents == '2'){ if ($uevents !='' && $uevents == '2'){
$sql = $AVE_DB->Query(" $sql = $AVE_DB->Query("
SELECT Id, document_alias, document_title, document_published, document_meta_description SELECT Id, document_alias, document_title, document_published, document_meta_description
@ -67,10 +108,37 @@ class Unicalendar
{ {
array_push($results, $row); array_push($results, $row);
} }
//получаем данные выбранных документов из заданной рубрики циклом, формируем строку JSON
foreach ( $results as $k=>$v )
{
$uni_data .= "{ \"date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_published']))."\", \"title\": \"".$v['document_title']."\", \"description\": \"".$v['document_meta_description']."\", \"url\": \"".$v['document_alias']."\" },";
}
$js_data_files = "$(function(){"."var data".$id." = [".$uni_data."]; $(\"#eventCalendar".$id."\").eventCalendar({jsonData: data".$id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"dddd DD-MM-YYYY\", showDescription: ".$uca_descript.", 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."}}});});";
// Создаем js файл для календаря с названием dataXXX.js - где XXX = Id календаря
$fdir = "/modules/unicalendar/js/data-files/";
mkdir(BASE_DIR . $fdir, 0777, true);
chmod(BASE_DIR . $fdir, 0777);
$df = fopen(BASE_DIR . "/modules/unicalendar/js/data-files/data".$id.".js", "w")
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
flock($df,2);
fwrite($df, $js_data_files);
flock($df,3);
fclose($df);
// Записываем в секции <head> подключение js файла с данными календаря, согласно Id этого календаря
$data_dir = "/modules/unicalendar/js/data-files";
$filename = BASE_DIR .$data_dir."/data".$id.".js";
if (file_exists($filename))
{
$GLOBALS['user_header']['module_unicalendar_' . $id] = '<script src="'.ABS_PATH.'modules/unicalendar/js/data-files/data'.$id.'.js" type="text/javascript" charset="utf-8"></script>'; // подключаем в секции <head> js файл с данным , согласно Id календаря
}
else {
echo $uca_file_not_found.$id.".js"; // если не смогли подключить файл -выводим сообщение-подсказку
};
} }
$AVE_Template->assign('unicalendars', $unicalendars);
$AVE_Template->assign('results', $results); $AVE_Template->assign('id', $id);
$AVE_Template->display($tpl_dir . 'unicalendar.tpl'); $AVE_Template->display($tpl_dir . 'unicalendar.tpl');
} }
@ -159,6 +227,7 @@ class Unicalendar
uca_title = '" . $_POST['uca_title'] . "', uca_title = '" . $_POST['uca_title'] . "',
uca_events = '" . $_POST['uca_events'] . "', uca_events = '" . $_POST['uca_events'] . "',
uca_rubric_id = '" . $_POST['uca_rubric_id'] . "', uca_rubric_id = '" . $_POST['uca_rubric_id'] . "',
uca_rubric_title = '" . $_POST['uca_rubric_title'] . "',
uca_doc_id = '" . $_POST['uca_doc_id'] . "', uca_doc_id = '" . $_POST['uca_doc_id'] . "',
uca_link = '" . $_POST['uca_link'] . "', uca_link = '" . $_POST['uca_link'] . "',
uca_day = '" . $_POST['uca_day'] . "', uca_day = '" . $_POST['uca_day'] . "',
@ -171,6 +240,136 @@ class Unicalendar
} }
} }
/**
* Редактирование календаря
* @param int $unicalendar_id - идентификатор календаря
*/
function unicalendarEdit($tpl_dir, $unicalendar_id)
{
global $AVE_DB, $AVE_Template;
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_unicalendar
WHERE id = '" . $unicalendar_id . "'
");
$unicalendars = array();
while ($row = $sql->FetchAssocArray())
{
array_push($unicalendars, $row);
}
foreach ( $unicalendars as $k=>$v )
{
$uevents = $v['uca_events'];
$urubric_id = $v['uca_rubric_id'];
$udoc_id = $v['uca_doc_id'];
}
if($uevents == 2)
{
$sql = $AVE_DB->Query("
SELECT Id, document_alias, document_title, document_published, document_meta_description
FROM " . PREFIX . "_documents
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
");
$unidocs = array();
while ($row = $sql->FetchAssocArray())
{
array_push($unidocs, $row);
}
$AVE_Template->assign('unidocs', $unidocs);
$sql = $AVE_DB->Query("
SELECT Id
FROM " . PREFIX . "_documents
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND $udoc_id
");
$check_docs = array();
while ($row = $sql->FetchAssocArray())
{
array_push($check_docs, $row);
}
$AVE_Template->assign('check_docs', $check_docs);
}
$AVE_Template->assign('unicalendars', $unicalendars);
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_unicalendar_edit.tpl'));
}
/**
* Сохранение календаря после редактирования
* @param int $unicalendar_id - идентификатор календаря
*/
function unicalendarEditSave($unicalendar_id)
{
global $AVE_DB;
$AVE_DB->Query("
UPDATE
" . PREFIX . "_module_unicalendar
SET
uca_title = '" . $_POST['uca_title'] . "',
uca_doc_id = '" . $_POST['uca_doc_id'] . "',
uca_events = '" . $_POST['uca_events'] . "',
uca_rubric_id = '" . $_POST['uca_rubric_id'] . "',
uca_rubric_title = '" . $_POST['uca_rubric_title'] . "',
uca_link = '" . $_POST['uca_link'] . "',
uca_day = '" . $_POST['uca_day'] . "',
uca_scroll = '" . $_POST['uca_scroll'] . "',
uca_descript = '" . $_POST['uca_descript'] . "'
WHERE id = '" . $unicalendar_id . "'
");
$as = array();
$as->$_POST['uca_title'];
$as->$_POST['uca_rubric_title'];
echo json_encode($as);
exit;
}
/**
* Выбор событий календаря
*
*/
function unicalendarEventsNew()
{
require_once(BASE_DIR . '/modules/unicalendar/lang/ru.php'); // загружаем файл ленгов для php переменных
if (isset($_POST['c'])) // если пришел запрос вывести все категории, получаем данные и отдаем их в шаблон (выпадающий список)
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT Id, rubric_title
FROM " . PREFIX . "_rubrics
");
echo "<option style='color: #ABABAB;' value='' >".$select_category."</option>";
while($result = $sql->FetchRow())
{
echo "<option value=".$result->Id.">".$result->rubric_title."</option>";
};
}
if (isset($_POST['a'])) // если пришел запрос вывести все документы (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404), получаем и выводим чекбоксами
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT Id, document_alias, document_title, document_published, document_meta_description
FROM " . PREFIX . "_documents
WHERE rubric_id = '" . $_POST['b'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
");
$u_sel_doc = array();
while ($row = $sql->FetchAssocArray())
{
array_push($u_sel_doc, $row);
}
foreach ( $u_sel_doc as $k=>$v )
{
echo "<tr class='noborder'><td align='center'><input type='checkbox' class='my-checkbox' name='u_chek".$v['Id']."' value='".$v['Id']."'></td>"."<td align='center'>".$v['Id']."</td>"."<td>".$v['document_title']."</td>"."<td align='center'>".$v['document_published'] = pretty_date(strftime(TIME_FORMAT, $v['document_published']))."</td></tr>";
}
}
exit;
}
/** /**
* Удаление календаря * Удаление календаря
* *
@ -180,11 +379,16 @@ class Unicalendar
{ {
global $AVE_DB; global $AVE_DB;
$AVE_DB->Query("DELETE FROM " . PREFIX . "_module_unicalendar WHERE id = '" . $unicalendar_id . "'"); $AVE_DB->Query("DELETE FROM " . PREFIX . "_module_unicalendar WHERE id = '" . $unicalendar_id . "'");
// Удаляем js файл с данными из директории /modules/unicalendar/js/data-files/
$data_dir = "/modules/unicalendar/js/data-files";
$filename = BASE_DIR .$data_dir."/data".$unicalendar_id.".js";
if (file_exists($filename))
{
unlink($filename);
}
header('Location:index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&amp;cp=' . SESSION); header('Location:index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&amp;cp=' . SESSION);
exit; exit;
} }
} }
?> ?>

BIN
unicalendar/images/question_alert.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
unicalendar/images/question_select.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
unicalendar/images/question_start_one.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

16
unicalendar/lang/ru.php

@ -1,4 +1,16 @@
<?php <?php
$select_category = 'Выбрать рубрику'; $select_category = 'Выбрать рубрику';
$bad_post = 'Ошибка запроса ! '; $bad_post = 'Ошибка запроса ! ';
$uca_locale = 'ru';
$uca_no_events = "Нет запланированных событий";
$uca_real_events = "события:";
$uca_next_events = "Следующие события:";
$uca_look_events = "Смотреть";
$uca_months_events = "[ \"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\" ]";
$uca_monshort_events = "[ \"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\" ]";
$uca_weekdays_events = "[ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\" ]";
$uca_wdayshort_events = "[ \"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\" ]";
$uca_wdaymin_events = "[ \"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\" ]";
$uca_not_write_file = "Не могу записать файл. Проверьте права на запись директории data-files (Путь: /modules/unicalendar/js/data-files)";
$uca_file_not_found = "Файл не найден! Проверьте в директории /modules/unicalendar/js/data-files/ наличие файла data";
?> ?>

38
unicalendar/lang/ru.txt

@ -1,14 +1,3 @@
UCA_NO_EVENTS = "Нет запланированных событий"
UCA_REAL_EVENTS = "события:"
UCA_NEXT_EVENTS = "Следующие события:"
UCA_LOOK_EVENTS = "Смотреть"
UCA_MONTHS_EVENTS = "[ 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ]"
UCA_MONSHORT_EVENTS = "[ 'Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек' ]"
UCA_WEEKDAYS_EVENTS = "[ 'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' ]"
UCA_WDAYSHORT_EVENTS = "[ 'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ]"
UCA_WDAYMIN_EVENTS = "[ 'Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ]"
UCA_LOCALE = "ru"
[admin] [admin]
ModName = "Управление модулем Unicalendar" ModName = "Управление модулем Unicalendar"
ModTitle = "В данном разделе находится список всех календарей.<br> Так же, вы можете создать новый календарь." ModTitle = "В данном разделе находится список всех календарей.<br> Так же, вы можете создать новый календарь."
@ -27,12 +16,14 @@ UCA_BTN_CREATE = "Создать"
UCA_CP_TAG = "Тег в системе" UCA_CP_TAG = "Тег в системе"
UCA_COPY_BUFF = "Скопировать тег в буфер обмена" UCA_COPY_BUFF = "Скопировать тег в буфер обмена"
UCA_ACTIONS = "Действия" UCA_ACTIONS = "Действия"
UCA_DELETE_UNICLN = "Удалить календарь"
UCA_DELETE_UNICLN_A = "Вы уверены, что хотите удалить этот календарь?" UCA_DELETE_UNICLN_A = "Вы уверены, что хотите удалить этот календарь?"
UCA_LIST_ALLDOC_RUB = "Выводит все документы из рубрики c Id = " UCA_LIST_ALLDOC_RUB = "Выводит все документы из рубрики "
UCA_LIST_SELDOC_RUB = "Выводит выбранные документы из рубрики c Id = " UCA_LIST_SELDOC_RUB = "Выводит выбранные документы из рубрики "
UCA_TITLE_WARNING = "Не заполнено поле Название календаря" UCA_TITLE_WARNING = "Не заполнено поле Название календаря"
UCA_EVENTS_WARNING = "События для этого календаря не заданы..." UCA_EVENTS_WARNING = "События для этого календаря не заданы..."
UCA_SEL_RUB_WARNING = "Не выбрана рубрика!"
UCA_SEL_DOC_WARNING = "Не выбран ни один документ!"
UCA_SEL_EVENTS_WARNING = "Не выбран тип событий календаря!"
UCA_OPEN_LIKS = "Открывать ссылки событий календаря в новом окне" UCA_OPEN_LIKS = "Открывать ссылки событий календаря в новом окне"
UCA_YES = "Да" UCA_YES = "Да"
UCA_NO = "Нет" UCA_NO = "Нет"
@ -41,3 +32,22 @@ UCA_WEEK_START_MONDAY = "С понедельника"
UCA_WEEK_START_SUNDAY = "С воскресенья" UCA_WEEK_START_SUNDAY = "С воскресенья"
UCA_SCROLL_BAR = "Включить полосу прокрутки в событиях" UCA_SCROLL_BAR = "Включить полосу прокрутки в событиях"
UCA_DESCRIPTION = "Раскрывать содержимое всех событий сразу после загрузки" UCA_DESCRIPTION = "Раскрывать содержимое всех событий сразу после загрузки"
UCA_EDIT = "Редактировать"
UCA_DELETE = "Удалить"
UCA_EDIT_CALEND = "Редактирование календаря "
UCA_EDIT_INFO = "В данном разделе вы можете отредактировать календарь"
UCA_ID = "Id = "
UCA_CHANGE_RUBRIC = "Сменить рубрику"
UCA_SAVE_EDIT = "Сохранить изменения"
UCA_ALERT_SAVE_EDIT = "Календарь "
UCA_ALERT_SAVE_EDIT_S = "Изменения успешного сохранены"
UCA_ALERT_SAVE_EDIT_E = "Ошибка передачи данных"
UCA_SET_CALENDAR = "Параметры календаря"
UCA_RETURN_LIST = "Венуться к списку календарей"
UCA_ABLE_EDIT_DOC = "Отметьте или снимите уже отмеченные чекбоксы для выбора необходимых документов из списка для вывода их в календаре"
UCA_DISABLE_START_EDIT = "Действия с единственным выбранным документом заблокированы, для снятия блокировки, активируйте чекбоксы других документов"
UCA_REFRECH_DOC_RUBRIC = "Обновить список документов из рубрики "
UCA_ID_INF = "Id"
UCA_TITLE_INF = "Название документа"
UCA_DATE_INF = "Дата создания"
UCA_SELECT_ALL_INF = "Выбрать/Снять все чекбоксы"

13
unicalendar/module.php

@ -14,7 +14,7 @@ if (defined('ACP'))
{ {
$modul['ModuleName'] = 'Универсальный календарь событий'; $modul['ModuleName'] = 'Универсальный календарь событий';
$modul['ModuleSysName'] = 'unicalendar'; $modul['ModuleSysName'] = 'unicalendar';
$modul['ModuleVersion'] = '1.1.2'; $modul['ModuleVersion'] = '1.2';
$modul['ModuleDescription'] = '<br>Модуль позволяет создавать различные календари событий. <br> Для вывода календаря используйте системный тег <strong>[mod_unicalendar:XXX]</strong>'; $modul['ModuleDescription'] = '<br>Модуль позволяет создавать различные календари событий. <br> Для вывода календаря используйте системный тег <strong>[mod_unicalendar:XXX]</strong>';
$modul['ModuleAutor'] = 'Repellent'; $modul['ModuleAutor'] = 'Repellent';
$modul['ModuleCopyright'] = '&copy; AVE.cms Team 2017'; $modul['ModuleCopyright'] = '&copy; AVE.cms Team 2017';
@ -76,10 +76,21 @@ if (defined('ACP') && (isset($_REQUEST['moduleaction'])))
case 'new': // Создать новый календарь case 'new': // Создать новый календарь
$unicalendar->unicalendarNew(); $unicalendar->unicalendarNew();
break; break;
case 'events_new': // Выбор событий календаря
$unicalendar->unicalendarEventsNew();
break;
case 'edit': // Редактировать календарь
$unicalendar->unicalendarEdit($tpl_dir, intval($_REQUEST['id']));
break;
case 'edit_save': // Сохранение календаря после редактирования
$unicalendar->unicalendarEditSave(intval($_REQUEST['id']));
break;
case 'delunicalendar': // Удаление календаря case 'delunicalendar': // Удаление календаря
$unicalendar->unicalendarDelete(intval($_REQUEST['id'])); $unicalendar->unicalendarDelete(intval($_REQUEST['id']));
break; break;
} }
} }
// проверяем на наличие файла uca.res.php и если файл существует - удаляем его, начиная с версии >= v1.1.3 он не нужен
if (file_exists(BASE_DIR . '/modules/unicalendar/uca.res.php')) unlink(BASE_DIR . '/modules/unicalendar/uca.res.php');
?> ?>

22
unicalendar/sql.php

@ -18,7 +18,8 @@ $module_sql_deinstall = array();
$module_sql_update = array(); $module_sql_update = array();
//Удаление модуля //Удаление модуля
$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_unicalendar;"; $module_sql_deinstall[] = "DROP TABLE IF EXISTS `CPPREFIX_module_unicalendar`";
//Установка модуля //Установка модуля
$module_sql_install[] = "CREATE TABLE `CPPREFIX_module_unicalendar` ( $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_unicalendar` (
@ -26,15 +27,12 @@ $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_unicalendar` (
`uca_title` varchar(255) NOT NULL, `uca_title` varchar(255) NOT NULL,
`uca_events` varchar(10) NOT NULL, `uca_events` varchar(10) NOT NULL,
`uca_rubric_id` varchar(10) NOT NULL, `uca_rubric_id` varchar(10) NOT NULL,
`uca_rubric_title` varchar(255) NOT NULL,
`uca_doc_id` varchar(1024) NOT NULL, `uca_doc_id` varchar(1024) NOT NULL,
`uca_link` varchar(10) NOT NULL, `uca_link` varchar(10) NOT NULL,
`uca_day` varchar(10) NOT NULL, `uca_day` varchar(10) NOT NULL,
`uca_scroll` varchar(10) NOT NULL, `uca_scroll` varchar(10) NOT NULL,
`uca_descript` varchar(10) NOT NULL, `uca_descript` varchar(10) NOT NULL,
`uca_user_title` varchar(255) NOT NULL,
`uca_user_descript` varchar(512) NOT NULL,
`uca_user_link` varchar(255) NOT NULL,
`uca_user_time` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;"; ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;";
@ -48,4 +46,18 @@ $module_sql_update[] = "
ModuleSysName = '" . $modul['ModuleSysName'] . "' ModuleSysName = '" . $modul['ModuleSysName'] . "'
LIMIT 1; LIMIT 1;
"; ";
// Обновление таблицы в версии модуля v1.1.3
$module_sql_update[] = "
ALTER TABLE `CPPREFIX_module_unicalendar`
ADD IF NOT EXISTS `uca_rubric_title` varchar(500) NOT NULL
AFTER `uca_rubric_id`";
$module_sql_update[] = "
ALTER TABLE `CPPREFIX_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`
";
?> ?>

382
unicalendar/templates/admin_unicalendar_edit.tpl

@ -0,0 +1,382 @@
<div class="title"><h5>{#ModName#}</h5></div>
<div class="widget" style="margin-top: 0px;">
<div class="body">
<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>
{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>
</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>
<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>
<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>
<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>
<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;
<a class="btn greenBtn" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}">{#UCA_RETURN_LIST#}</a>
</div>
</td>
</tr>
</table>
{/if}
{if $unicalendars.uca_events == 2}
<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 type="hidden" name="uca_doc_id" id="uca_doc_id" value="{$unicalendars.uca_doc_id|escape}" />
<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_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>
<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>
<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_SELDOC_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>
<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="*" />
</colgroup>
<thead>
<tr class="noborder">
<td align="center">{#UCA_EVENTS_SELECT_DOC#}</td>
<td align="center">Id</td><td align="center">Название документа</td>
<td align="center">Дата создания</td>
</tr>
</thead>
<tbody>
<tr id="result_doc">
<td iwidth="180" align="center">
<div><span id="alert_mes"></span></div>
</td>
</tr>
<span id="ref_doc">
{foreach from=$unidocs item=unidocs}
<tr class='noborder'>
<td align='center'><input id="inp_doc_{$unidocs.Id}" type='checkbox' class='my-checkbox' name='u_chek{$unidocs.Id}' value='{$unidocs.Id}'></td>
<td align='center'>{$unidocs.Id}</td>
<td>{$unidocs.document_title}</td>
<td align='center'>{$unidocs.document_published|date_format:$TIME_FORMAT|pretty_date}</td>
</tr>
{/foreach}
</span>
</tbody>
</table>
<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;
<a class="btn greenBtn" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}">{#UCA_RETURN_LIST#}</a>
</div>
</td>
</tr>
</table>
{/if}
{/foreach}
<script>
// START получаем данные активных чекбоксов-документов
{foreach from=$check_docs item=check_docs}
$("#inp_doc_{$check_docs.Id}").attr('checked', 'checked' );// активируем чекбоксы в списке документов
{/foreach}
// END получаем данные активных чекбоксов-документов
// START считаем активные чекбоксы при открытии страницы и если находим только один активный чекбокс выбранного документа - запрещаем редактирование
var count = $(':checkbox.my-checkbox:checked').length;// ведем подсчет отмеченных чекбоксов
if (count <= '1'){ldelim}//если количество чекбоксов документов <= 1
$(':checkbox.my-checkbox:checked').prop('disabled', true);//блокируем чекбокс
$('#alert_mes').html("<img class='toprightDir' style='cursor: pointer;' src='{$ABS_PATH}modules/unicalendar/images/question_start_one.png' title='{#UCA_DISABLE_START_EDIT#}' border='0' />");//выводим предупреждение о запрете редактирования единственного документа
{rdelim} else {ldelim}
$('#alert_mes').html("<img class='toprightDir' style='cursor: pointer;' src='{$ABS_PATH}modules/unicalendar/images/question_select.png' title='{#UCA_ABLE_EDIT_DOC#}' border='0'/>")
{rdelim};// END считаем активные чекбоксы при открытии страницы и если находим только один активный чекбокс выбранного документа - запрещаем редактирование
// START ОДНИМ чекбоксом - отмечаем - снимаем сразу все чекбоксы документов и пишем в input значение
jQuery(function($) {ldelim}
$('#check_all').on('click change', function(e) {ldelim}
var $this = $(this);
var values = [];
$("input:checkbox.my-checkbox").prop('checked', $this.prop('checked'));
$("input:checkbox.my-checkbox").filter(':checked').each(function() {ldelim}
values.push(this.value);
{rdelim});
$('#uca_doc_id').val("Id="+values.join(' OR Id=')+" ");
{rdelim});
{rdelim});// END ОДНИМ чекбоксом - отмечаем - снимаем сразу все чекбоксы документов и пишем в input значение
// START CHEK - отмечаем - снимаем чекбоксы документов по одному и пишем в input значение
jQuery(function($) {ldelim}
$( document ).on('click change', "input:checkbox.my-checkbox", function() {ldelim}
var $this = $(this);
var count = $(':checkbox.my-checkbox:checked').length;//ведем подсчет отмеченных чекбоксов
if (count <= '1'){ldelim}//если количество чекбоксов документов <= 1
$(':checkbox.my-checkbox:checked').prop('disabled', true).prev().attr('class', 'jqTransformCheckbox jqTransformCheckedDisable jqTransformCheckedDisableCheck jqTransformChecked');//блокируем чекбокс
$('#alert_mes').html("<img class='toprightDir' style='cursor: pointer;' src='{$ABS_PATH}modules/unicalendar/images/question_alert.png' title='{#UCA_DISABLE_START_EDIT#}' border='0'/>");//выводим предупреждение о запрете редактирования единственного документа
{rdelim};
if (count > '1'){ldelim}//если количество чекбоксов документов > 1
$(':checkbox.my-checkbox:checked').prop('disabled', false);//если находим заблокированный чекбокс - снимаем с него блокировку
$('a.jqTransformCheckedDisableCheck').attr('class', 'jqTransformCheckbox jqTransformChecked')
$('#alert_mes').html("<img class='toprightDir' style='cursor: pointer;' src='{$ABS_PATH}modules/unicalendar/images/question_select.png' title='{#UCA_ABLE_EDIT_DOC#}' border='0'/>");//убираем предупреждение о запрете редактирования единственного документа
{rdelim};
var values = [];
$("input:checkbox.my-checkbox").filter(':checked').each(function() {ldelim}
values.push(this.value);
{rdelim});
$('#uca_doc_id').val("Id="+values.join(' OR Id=')+" ");
{rdelim});
{rdelim});// END CHECK - отмечаем - снимаем чекбоксы документов по одному и пишем в input значение
// START обнуляем значение value у input Название календаря при событии focus
$('#uca_title').focus(function(){ldelim}
$('#uca_title').val('');
{rdelim});// END обнуляем значение value у input Название календаря при событии focus
// START получаем значение радиокнопки открыть ссылку и пишем в input значение
$(".u_link").on('change', function() {ldelim}
$('#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('');
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('');
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('');
var u_descript = $('input[name="u_descript"]:checked').val();
$('#uca_descript').val(u_descript);
{rdelim});// END получаем значение радиокнопки Раскрывать содержимое всех событий сразу после загрузки
// START AJAX запрос при клике по кнопке Сменить рубрику
function ucaCangeRub() {ldelim}
$.ajax({ldelim}
type: 'POST',
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true,
data: {ldelim}c:'s'{rdelim},
success: function(data) {ldelim}
$("#uca_result").html("<input type='hidden' name='uca_rubric_title' id='uca_rubric_title' value=''><input type='hidden' name='uca_rubric_id' id='uca_rubric_id' value=''><select name='uca_result' id='uca_result' style='width: 300px;'>"+data+"</select>");
$('select').styler();
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#SaveError#}", {ldelim}
header: '{#SentData#}',
theme: 'error'
{rdelim});
{rdelim}
{rdelim});
{rdelim}; // END AJAX запрос при клике по кнопке Сменить рубрику
// START если был выполнен AJAX запрос при клике по кнопке Сменить рубрику
$('#uca_result').change(function(){ldelim}
$('#uca_rubric_id').val('');
$('#uca_rubric_title').val('');
$('#uca_inp_res').val('');
$('#uca_inptxt_res').val('');
var uca_inp_res = $("#uca_result option:selected").val();
var uca_inptxt_res = $("#uca_result option:selected").text();
$('#uca_rubric_id').val(uca_inp_res);
$('#uca_rubric_title').val(uca_inptxt_res);
{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 uca_link = $('#uca_link').val();
var uca_day = $('#uca_day').val();
var uca_scroll = $('#uca_scroll').val();
var uca_descript = $('#uca_descript').val();
var uca_rubric_id = $('#uca_rubric_id').val();
var uca_rubric_title = $('#uca_rubric_title').val();
var uca_doc_id = $('#uca_doc_id').val();
var check_fields = $('#uca_title').val();
var check_fields_rubric_id = $('#uca_rubric_id').val();
if (check_fields !=''){ldelim}
if (check_fields_rubric_id !=''){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_link:uca_link,uca_day:uca_day,uca_scroll:uca_scroll,uca_descript:uca_descript,uca_rubric_id:uca_rubric_id,uca_rubric_title:uca_rubric_title,uca_doc_id:uca_doc_id{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}
header: '{#UCA_ALERT_SAVE_EDIT#}'+uca_title,
theme: 'accept'
{rdelim});
{rdelim},
error: function(xhr, str){ldelim}
$.jGrowl("{#UCA_ALERT_SAVE_EDIT_E#}", {ldelim}
header: '{#UCA_ALERT_SAVE_EDIT#}{$unicalendars.id}',
theme: 'error'
{rdelim});
{rdelim}
{rdelim});
{rdelim} else {ldelim}
alert("{#UCA_SEL_RUB_WARNING#}");
{rdelim};
{rdelim} else {ldelim}
alert("{#UCA_TITLE_WARNING#}");
{rdelim};
{rdelim});// END Если произошло событие клик на кнопке Сохранить изменения - отправляем AJAX запрос и пишем в БД данные
</script>

108
unicalendar/templates/admin_unicalendar_list.tpl

@ -12,7 +12,7 @@
<ul> <ul>
<li class="firstB"><a href="index.php" title="{#MAIN_PAGE#}">{#MAIN_PAGE#}</a></li> <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&amp;cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
<li>{#ModName#}</li> <li><strong class="code">{#ModName#}</strong></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -38,9 +38,9 @@
<colgroup> <colgroup>
<col width="1"> <col width="1">
<col width="*"> <col width="*">
<col width="200"> <col width="*">
<col width="334"> <col width="184">
<col width="210"> <col width="1">
<col width="1"> <col width="1">
</colgroup> </colgroup>
<thead> <thead>
@ -48,8 +48,8 @@
<tr class="noborder"> <tr class="noborder">
<td>Id</td> <td>Id</td>
<td>{#UCA_TITLE#}</td> <td>{#UCA_TITLE#}</td>
<td>{#UCA_EVENTS#}</td>
<td>{#UCA_CP_TAG#}</td> <td>{#UCA_CP_TAG#}</td>
<td>{#UCA_EVENTS#}</td>
<td colspan="3">{#UCA_ACTIONS#}</td> <td colspan="3">{#UCA_ACTIONS#}</td>
</tr> </tr>
@ -59,32 +59,32 @@
{foreach from=$unicalendars item=unicalendar} {foreach from=$unicalendars item=unicalendar}
<tr> <tr>
<td align="center"> <td align="center">
<strong>{$unicalendar.id}</strong> <strong class="code">{$unicalendar.id}</strong>
</td> </td>
<td align="left"> <td align="left">
<strong>{$unicalendar.uca_title|escape}</strong> <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>
</td>
<td align="center">
<div class="pr12" style="display: table; position: relative; text-align: right;">
<input style="width: 130px;" id="uca_{$unicalendar.id}" name="textfield" type="text" readonly value="[mod_unicalendar:{$unicalendar.id}]" size="17" />
<a style="text-align: center; padding: 5px 3px 4px 3px;" class="whiteBtn copyBtn topDir" href="javascript:void(0);" data-clipboard-action="copy" data-clipboard-target="#uca_{$unicalendar.id}" title="{#UCA_COPY_BUFF#}">
<img style="margin-top: -3px; position: relative; top: 4px; padding: 0 3px;" class="clippy" src="{$ABS_PATH}admin/templates/images/clippy.svg" width="13"></a>
</div>
</td> </td>
<td align="center"> <td align="center">
<div align="left"> <div align="left">
{if $unicalendar.uca_events == 1}<strong>{#UCA_LIST_ALLDOC_RUB#}</strong><strong class="code">{$unicalendar.uca_rubric_id}</strong> {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}<strong>{#UCA_LIST_SELDOC_RUB#}</strong><strong class="code">{$unicalendar.uca_rubric_id}</strong> {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>
{else}<strong>{#UCA_EVENTS_WARNING#}</strong> {else}<strong>{#UCA_EVENTS_WARNING#}</strong>
{/if} {/if}
</div> </div>
</td> </td>
<td align="center">
<div class="pr12" style="display: table; position: relative; text-align: right;">
<input style="width: 130px;" id="uca_{$unicalendar.id}" name="textfield" type="text" readonly value="[mod_unicalendar:{$unicalendar.id}]" size="17" />
<a style="text-align: center; padding: 5px 3px 4px 3px;" class="whiteBtn copyBtn topDir" href="javascript:void(0);" data-clipboard-action="copy" data-clipboard-target="#uca_{$unicalendar.id}" title="{#UCA_COPY_BUFF#}">
<img style="margin-top: -3px; position: relative; top: 4px; padding: 0 3px;" class="clippy" src="{$ABS_PATH}admin/templates/images/clippy.svg" width="13"></a>
</div>
</td>
<td align="center"> <td align="center">
<a class="btn blueBtn" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=edit&id={$unicalendar.id}&cp={$sess}">{#UCA_EDIT#}</a>
</td> </td>
<td align="right"> <td align="center">
<a class="topleftDir ConfirmDelete icon_sprite ico_delete" title="{#UCA_DELETE_UNICLN#}" dir="{#UCA_DELETE_UNICLN#}" name="{#UCA_DELETE_UNICLN_A#}" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=delunicalendar&id={$unicalendar.id}&cp={$sess}"></a> <a class="btn redBtn ConfirmDelete" dir="{#UCA_DELETE_UNICLN#}" name="{#UCA_DELETE_UNICLN_A#}" href="index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=delunicalendar&id={$unicalendar.id}&cp={$sess}">{#UCA_DELETE#}</a>
</td> </td>
</tr> </tr>
{/foreach} {/foreach}
@ -102,7 +102,6 @@
</table> </table>
</form> </form>
</div> </div>
<div id="tab2" class="tab_content" style="display: none;"> <div id="tab2" class="tab_content" style="display: none;">
<form id="add_unicalendar" name="add_unicalendar" class="mainForm"> <form id="add_unicalendar" name="add_unicalendar" class="mainForm">
<table id="tr_uca" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"> <table id="tr_uca" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
@ -202,15 +201,20 @@
// создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу. // создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу.
if (uca_events !='' && uca_events == '1' ){ldelim} if (uca_events !='' && uca_events == '1' ){ldelim}
$('#uca_rubric_id').val(''); $('#uca_rubric_id').val('');
$('#uca_rubric_title').val('');
$('#uca_events').val(uca_events); $('#uca_events').val(uca_events);
$('#tr_uca').after('<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><tr class="noborder" id="tr_uca_res"><td width="180">{#UCA_EVENTS_SELECT_AC#}</td><td><input type="hidden" name="uca_rubric_id" id="uca_rubric_id" value=""><select name="uca_result" id="uca_result" style="width: 300px;"></select></td></tr></table>'); $('#tr_uca').after('<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><tr class="noborder" id="tr_uca_res"><td width="180">{#UCA_EVENTS_SELECT_AC#}</td><td><input type="hidden" name="uca_rubric_title" id="uca_rubric_title" value=""><input type="hidden" name="uca_rubric_id" id="uca_rubric_id" value=""><select name="uca_result" id="uca_result" style="width: 300px;"></select></td></tr></table>');
uca_request = uca_events; uca_request = uca_events;
ucaCall(); ucaCall();
$('#uca_result').change(function(){ldelim} $('#uca_result').change(function(){ldelim}
$('#uca_rubric_id').val(''); $('#uca_rubric_id').val('');
$('#uca_rubric_title').val('');
$('#uca_inp_res').val(''); $('#uca_inp_res').val('');
$('#uca_inptxt_res').val('');
var uca_inp_res = $("#uca_result option:selected").val(); var uca_inp_res = $("#uca_result option:selected").val();
var uca_inptxt_res = $("#uca_result option:selected").text();
$('#uca_rubric_id').val(uca_inp_res); $('#uca_rubric_id').val(uca_inp_res);
$('#uca_rubric_title').val(uca_inptxt_res);
{rdelim}); {rdelim});
{rdelim}// END Если значение value не пустое и выбран тип события "Все документы из заданной рубрики"... {rdelim}// END Если значение value не пустое и выбран тип события "Все документы из заданной рубрики"...
@ -219,19 +223,24 @@
// создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу. // создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу.
if (uca_events !='' && uca_events == '2' ){ldelim} if (uca_events !='' && uca_events == '2' ){ldelim}
$('#uca_rubric_id').val(''); $('#uca_rubric_id').val('');
$('#uca_rubric_title').val('');
$('#uca_events').val(uca_events); $('#uca_events').val(uca_events);
$('#tr_uca').after('<table id="tr_uca_res" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><tr class="noborder"><td width="180">{#UCA_EVENTS_SELECT_AC#}</td><td><input type="hidden" name="uca_rubric_id" id="uca_rubric_id" value=""><select name="uca_result" id="uca_result" style="width: 300px;"></select></td></tr></table>'); $('#tr_uca').after('<table id="tr_uca_res" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><tr class="noborder"><td width="180">{#UCA_EVENTS_SELECT_AC#}</td><td><input type="hidden" name="uca_rubric_title" id="uca_rubric_title" value=""><input type="hidden" name="uca_rubric_id" id="uca_rubric_id" value=""><select name="uca_result" id="uca_result" style="width: 300px;"></select></td></tr></table>');
uca_request = uca_events; uca_request = uca_events;
ucaCall(); ucaCall();
$('#uca_result').change(function(){ldelim} $('#uca_result').change(function(){ldelim}
$('#tr_uca_res_doc').remove(); $('#tr_uca_res_doc').remove();
$('#uca_rubric_id').val(''); $('#uca_rubric_id').val('');
$('#uca_rubric_title').val('');
$('#uca_inp_res').val(''); $('#uca_inp_res').val('');
$('#uca_inptxt_res').val('');
$('#uca_doc_id').val(''); $('#uca_doc_id').val('');
var post_doc = ''; var post_doc = '';
var uca_inp_res = $("#uca_result option:selected").val(); var uca_inp_res = $("#uca_result option:selected").val();
$('#tr_uca_res').after('<table id="tr_uca_res_doc" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><colgroup><col width="180" /><col width="*" /></colgroup><col width="*" /></colgroup><col width="*" /><thead><tr class="noborder"><td align="center">{#UCA_EVENTS_SELECT_DOC#}</td><td align="center">Id</td><td align="center">Название документа</td><td align="center">Дата создания</td></tr></thead><tbody><tr id="result_doc"><td width="180" align="center"></td></tr></tbody></table>'); var uca_inptxt_res = $("#uca_result option:selected").text();
$('#tr_uca_res').after('<table id="tr_uca_res_doc" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm"><colgroup><col width="180" /><col width="*" /></colgroup><col width="*" /></colgroup><col width="*" /><thead><tr class="noborder"><td align="center">{#UCA_EVENTS_SELECT_DOC#}</td><td align="center">{#UCA_ID_INF#}</td><td align="center">{#UCA_TITLE_INF#}</td><td align="center">{#UCA_DATE_INF#}</td></tr></thead><tbody><tr id="result_doc"><td width="180" align="center"><label class="code" style="padding-bottom:4px;">{#UCA_SELECT_ALL_INF#} <input type="checkbox" id="check_all"></label></td></tr></tbody></table>');
$('#uca_rubric_id').val(uca_inp_res); $('#uca_rubric_id').val(uca_inp_res);
$('#uca_rubric_title').val(uca_inptxt_res);
uca_doc_request = uca_inp_res; uca_doc_request = uca_inp_res;
ucaDoc(); ucaDoc();
{rdelim}); {rdelim});
@ -241,7 +250,7 @@
function ucaCall() {ldelim} function ucaCall() {ldelim}
$.ajax({ldelim} $.ajax({ldelim}
type: 'POST', type: 'POST',
url: '{$ABS_PATH}modules/unicalendar/uca.res.php', url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true, async: true,
data: {ldelim}c:uca_request{rdelim}, data: {ldelim}c:uca_request{rdelim},
success: function(data) {ldelim} success: function(data) {ldelim}
@ -262,7 +271,7 @@
function ucaDoc() {ldelim} function ucaDoc() {ldelim}
$.ajax({ldelim} $.ajax({ldelim}
type: 'POST', type: 'POST',
url: '{$ABS_PATH}modules/unicalendar/uca.res.php', url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
async: true, async: true,
data: {ldelim}a:'post_doc',b:uca_doc_request{rdelim}, data: {ldelim}a:'post_doc',b:uca_doc_request{rdelim},
success: function(data) {ldelim} success: function(data) {ldelim}
@ -279,7 +288,20 @@
{rdelim}); // END Получаем значениe value выбранного option - События календаря {rdelim}); // END Получаем значениe value выбранного option - События календаря
// START CHEK - выбираем документы и пишем в input значение // START ОДНИМ чекбоксом - отмечаем - снимаем сразу все чекбоксы документов и пишем в input значение
jQuery(function($) {ldelim}
$( document ).on('click change', "input:checkbox#check_all", function(e) {ldelim}
var $this = $(this);
var values = [];
$("input:checkbox.my-checkbox").prop('checked', $this.prop('checked'));
$("input:checkbox.my-checkbox").filter(':checked').each(function() {ldelim}
values.push(this.value);
{rdelim});
$('#uca_doc_id').val("Id="+values.join(' OR Id=')+" ");
{rdelim});
{rdelim});// END ОДНИМ чекбоксом - отмечаем - снимаем сразу все чекбоксы документов и пишем в input значение
// START CHEK - отмечаем - снимаем чекбоксы документов по одному и пишем в input значение
jQuery(function($) {ldelim} jQuery(function($) {ldelim}
$( document ).on('click change', "input:checkbox.my-checkbox", function() {ldelim} $( document ).on('click change', "input:checkbox.my-checkbox", function() {ldelim}
var values = []; var values = [];
@ -288,7 +310,7 @@
{rdelim}); {rdelim});
$('#uca_doc_id').val("Id="+values.join(' OR Id=')+" "); $('#uca_doc_id').val("Id="+values.join(' OR Id=')+" ");
{rdelim}); {rdelim});
{rdelim});// END CHECK - выбираем документы и пишем в input значение {rdelim});// END CHECK - отмечаем - снимаем чекбоксы документов по одному и пишем в input значение
// START получаем значение радиокнопки открыть ссылку и пишем в input значение // START получаем значение радиокнопки открыть ссылку и пишем в input значение
$(".u_link").on('change', function() {ldelim} $(".u_link").on('change', function() {ldelim}
@ -321,8 +343,19 @@
// Если произошло событие на кнопке "Добавить" - записываем в БД // Если произошло событие на кнопке "Добавить" - записываем в БД
$("#btn_ucasub").on('click', function() {ldelim} $("#btn_ucasub").on('click', function() {ldelim}
var msg = $('#add_unicalendar').serialize(); var msg = $('#add_unicalendar').serialize();
var check_fields = $('#uca_title').val(); var check_fields_title = $('#uca_title').val();
if (check_fields !=''){ldelim} var check_fields_events = $('#uca_events').val();
var check_fields_rubric_id = $('#uca_rubric_id').val();
var check_fields_doc_id = $ ('#uca_doc_id').val();
if (check_fields_title !=''){ldelim}// не сохраняем если не указан заголовок
if (check_fields_events !=''){ldelim}// не сохраняем если не указан тип событий календаря
if (check_fields_rubric_id !=''){ldelim}// не сохраняем если не выбрана рубрика
if (check_fields_events == '1' && check_fields_rubric_id !='' || check_fields_events == '2' && check_fields_doc_id !='Id= ' && check_fields_doc_id !=''){ldelim}// не сохраняем если не выьран ни один документ
$.ajax({ldelim} $.ajax({ldelim}
type: 'POST', type: 'POST',
url: '{$formaction}', url: '{$formaction}',
@ -337,6 +370,19 @@
{rdelim}); {rdelim});
{rdelim} {rdelim}
{rdelim}); {rdelim});
{rdelim} else {ldelim}
alert("{#UCA_SEL_DOC_WARNING#}");
{rdelim};
{rdelim} else {ldelim}
alert("{#UCA_SEL_RUB_WARNING#}");
{rdelim};
{rdelim} else {ldelim}
alert("{#UCA_SEL_EVENTS_WARNING#}");
{rdelim};
{rdelim} else {ldelim} {rdelim} else {ldelim}
alert("{#UCA_TITLE_WARNING#}"); alert("{#UCA_TITLE_WARNING#}");
{rdelim}; {rdelim};

42
unicalendar/templates/unicalendar.tpl

@ -1,41 +1 @@
<link rel="stylesheet" href="{$ABS_PATH}modules/unicalendar/css/eventCalendar.css" type="text/css" media="screen" charset="utf-8" /> <div id="eventCalendar{$id}"></div>
<link rel="stylesheet" href="{$ABS_PATH}modules/unicalendar/css/eventCalendar_theme_responsive.css" type="text/css" media="screen" charset="utf-8" />
<script src="{$ABS_PATH}modules/unicalendar/js/moment.js" type="text/javascript" charset="utf-8"></script>
<script src="{$ABS_PATH}modules/unicalendar/js/jquery.eventCalendar.js" type="text/javascript" charset="utf-8"></script>
{foreach from=$unicalendars item=unicalendar}
<div id="eventCalendar{$unicalendar.id}"></div>
<script>
$(function(){ldelim}
var data = [
{foreach from=$results item=result}
{ldelim} "date": "{$result.document_published|date_format:'%Y-%m-%d %H:%M:%S'|pretty_date}", "title": "{$result.document_title}", "description": "{$result.document_meta_description}", "url": "{$result.document_alias}" {rdelim},
{/foreach}
];
$('#eventCalendar{$unicalendar.id}').eventCalendar({ldelim}
jsonData: data,
jsonDateFormat: 'human',
startWeekOnMonday: {$unicalendar.uca_day},
eventsScrollable: {$unicalendar.uca_scroll},
openEventInNewWindow: {$unicalendar.uca_link},
dateFormat: 'dddd DD-MM-YYYY',
showDescription: {$unicalendar.uca_descript},
locales: {ldelim}
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: {ldelim}
"months" : {#UCA_MONTHS_EVENTS#},
"monthsShort" : {#UCA_MONSHORT_EVENTS#},
"weekdays" : {#UCA_WEEKDAYS_EVENTS#},
"weekdaysShort" : {#UCA_WDAYSHORT_EVENTS#},
"weekdaysMin" : {#UCA_WDAYMIN_EVENTS#}
{rdelim}
{rdelim}
{rdelim});
{rdelim});
</script>
{/foreach}

43
unicalendar/uca.res.php

@ -1,43 +0,0 @@
<?php
ob_start();
ob_implicit_flush(0);
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(dirname(__FILE__)))));
require_once(BASE_DIR . '/inc/init.php');
require_once(BASE_DIR . '/modules/unicalendar/lang/ru.php');
if (! check_permission('adminpanel'))
{
header('Location:/index.php');
exit;
}
if (isset($_POST['c']))
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT Id, rubric_title
FROM " . PREFIX . "_rubrics
");
echo "<option style='color: #ABABAB;' value='' >".$select_category."</option>";
while($result = $sql->FetchRow()){
echo "<option value=".$result->Id.">".$result->rubric_title."</option>";
};
}
if (isset($_POST['a']))
{
global $AVE_DB;
$sql = $AVE_DB->Query("
SELECT Id, document_alias, document_title, document_published, document_meta_description
FROM " . PREFIX . "_documents
WHERE rubric_id = '" . $_POST['b'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
");
$u_sel_doc = array();
while ($row = $sql->FetchAssocArray())
{
array_push($u_sel_doc, $row);
}
foreach ( $u_sel_doc as $k=>$v )
{
echo "<tr class='noborder'><td align='center'><input type='checkbox' class='my-checkbox' name='u_chek".$v['Id']."' value='".$v['Id']."'></td>"."<td align='center'>".$v['Id']."</td>"."<td>".$v['document_title']."</td>"."<td align='center'>".$v['document_published'] = pretty_date(strftime(TIME_FORMAT, $v['document_published']))."</td></tr>";
}
}
?>
Loading…
Cancel
Save