Initial commit
This commit is contained in:
38
README.md
38
README.md
@@ -1,3 +1,37 @@
|
||||
# unicalendar
|
||||
### Unicalendar
|
||||
|
||||
Модуль календарь событий Только для AVE.CMS ALT
|
||||
## Модуль Unicalendar - календарь событий
|
||||
|
||||
#### адаптирован для AVE.CMS v3.26
|
||||
|
||||
### Модуль позволяет создавать календари, событиями которых являются документы из заданной рубрики либо определенные документы из заданной рубрики.
|
||||
|
||||
##### Changelog:
|
||||
|
||||
##### 05.09.2019 - обновление модуля - версия 1.26.8 - адаптация для версии ave.cms 3.26, замена устаревшего size() на length
|
||||
|
||||
##### 08.09.2017 - обновление модуля - версия 1.2.8 - Fix регулярного выражения для сохранения в файл (dataX.js) в кодировке UTF-8
|
||||
|
||||
##### 04.09.2017 - обновление модуля - версия 1.2.7 - Добавлено создание тизера событий из существующих полей в документе (изображение, описание, место)
|
||||
|
||||
##### 01.07.2017 - обновление модуля - версия 1.2.6 - Добавлен лимит вывода событий при перелистывании месяцев в календаре (лимит не распространяется на клик по дате с событиями)
|
||||
|
||||
##### 25.06.2017 - обновление модуля - версия 1.2.5 - Добавлен выбор формата даты для публичной части календаря, проверка условий при создании календаря
|
||||
|
||||
##### 15.05.2017 - обновление модуля - версия 1.2.4 - Исправлено: jQuery Form Styler - ограничивал раскрытие select по высоте; Исправлено ленг файл .php будет подключаться, в зависимости от языка Администратора (в админ-панели) и Пользователя (в публичной части)
|
||||
|
||||
##### 14.05.2017 - обновление модуля - версия 1.2.3 - изменен алгоритм проверки актуальности календарей
|
||||
|
||||
##### 09.05.2017 - обновление модуля - версия 1.2.2 - добавлена проверка актуальности календарей при изменении количества документов в рубрике после создания календаря
|
||||
|
||||
##### 06.05.2017 - обновление модуля - версия 1.2.1 - оптимизация запросов БД для публичной части модуля
|
||||
|
||||
##### 05.05.2017 - обновление модуля - версия 1.2 - исправление ошибок, добавлено редактирование календарей, скрипты вынесены в секцию <head>
|
||||
|
||||
##### 10.04.2017 - обновление модуля - версия 1.1.2 - fix вывода документа - ошибка 404.
|
||||
|
||||
##### 10.04.2017 - обновление модуля - версия 1.1.1 - fix для корректной работы модуля с версиями php начиная с =>5.3.13
|
||||
|
||||
##### 09.04.2017 - обновление модуля - версия 1.1 (требуется чистая установка: полное удаление версии 1.0 и вместо нее залить все файлы v1.1)
|
||||
|
||||
##### 09.04.2017 - инициализация модуля - версия 1.0
|
||||
632
class/unicalendar.php
Normal file
632
class/unicalendar.php
Normal file
@@ -0,0 +1,632 @@
|
||||
<?php
|
||||
/**
|
||||
* Класс работы с календарями событий - модуля Unicalendar
|
||||
*
|
||||
* @autor Repellent
|
||||
* @package AVE.cms
|
||||
* @subpackage module_unicalendar
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
class Unicalendar
|
||||
{
|
||||
/**
|
||||
* ФУНКЦИИ ПУБЛИЧНОЙ ЧАСТИ
|
||||
*/
|
||||
|
||||
/**
|
||||
* Вывод календаря событий
|
||||
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||||
* @param int $id - идентификатор календаря
|
||||
*/
|
||||
function unicalendarShow($tpl_dir, $id)
|
||||
{
|
||||
require(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['user_language'].'.php'); // загружаем файл ленгов для php переменных
|
||||
// подключаем JS скрипты и CSS файлы календаря в секцию head
|
||||
$eventCalendar_css = '<link rel="stylesheet" href="'.ABS_PATH.'modules/unicalendar/css/eventCalendar.css" type="text/css" media="screen" />';
|
||||
$eventCalendar_theme_responsive_css = '<link rel="stylesheet" href="'.ABS_PATH.'modules/unicalendar/css/eventCalendar_theme_responsive.css" type="text/css" media="screen" />';
|
||||
$moment_js = '<script src="'.ABS_PATH.'modules/unicalendar/js/moment.js" type="text/javascript"></script>';
|
||||
$jquery_eventCalendar_js = '<script src="'.ABS_PATH.'modules/unicalendar/js/jquery.eventCalendar.js" type="text/javascript"></script>';
|
||||
$GLOBALS['user_header']['module_unicalendar_'] = $eventCalendar_css."\n".$eventCalendar_theme_responsive_css."\n".$moment_js."\n".$jquery_eventCalendar_js;
|
||||
// подключаем в секции <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"></script>';
|
||||
}
|
||||
else {
|
||||
echo $uca_file_not_found.$id.".js"; // если не смогли подключить файл -выводим сообщение-подсказку
|
||||
};
|
||||
global $AVE_Template;
|
||||
$AVE_Template->assign('id', $id);
|
||||
$AVE_Template->display($tpl_dir . 'unicalendar.tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* ФУНКЦИИ АДМИНИСТРАТИВНОЙ ЧАСТИ
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Вывод списка календарей
|
||||
*
|
||||
* @param string $tpl_dir - путь к папке с шаблонами модуля
|
||||
*/
|
||||
function unicalendarList($tpl_dir)
|
||||
{
|
||||
global $AVE_DB, $AVE_Template;
|
||||
|
||||
$unicalendars = array();
|
||||
|
||||
$limit = 20;
|
||||
$start = get_current_page() * $limit - $limit;
|
||||
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT SQL_CALC_FOUND_ROWS
|
||||
u.*,
|
||||
COUNT(u.id) AS uca_count
|
||||
FROM
|
||||
" . PREFIX . "_module_unicalendar AS u
|
||||
GROUP BY u.id
|
||||
ORDER BY u.id ASC
|
||||
LIMIT " . $start . "," . $limit . "
|
||||
");
|
||||
|
||||
$sql_num = $AVE_DB->Query("SELECT FOUND_ROWS()");
|
||||
$num = $sql_num->GetCell();
|
||||
|
||||
while($row = $sql->FetchAssocArray())
|
||||
{
|
||||
array_push($unicalendars, $row);
|
||||
}
|
||||
|
||||
if ($num > $limit)
|
||||
{
|
||||
$page_nav = "<li><a href=\"index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&page={s}&cp=" . SESSION . "\">{t}</a></li>";
|
||||
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav);
|
||||
}
|
||||
else
|
||||
{
|
||||
$page_nav = '';
|
||||
}
|
||||
|
||||
$AVE_Template->assign('page_nav', $page_nav);
|
||||
|
||||
if (!empty($_REQUEST['alert']))
|
||||
{
|
||||
$AVE_Template->assign('alert', htmlspecialchars(stripslashes($_REQUEST['alert'])));
|
||||
}
|
||||
|
||||
$AVE_Template->assign('unicalendars', $unicalendars);
|
||||
$AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=new&sub=save&cp=' . SESSION);
|
||||
$AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_unicalendar_list.tpl'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание календаря
|
||||
*
|
||||
*/
|
||||
function unicalendarNew()
|
||||
{
|
||||
if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save')
|
||||
{
|
||||
global $AVE_DB;
|
||||
$cont = true;
|
||||
$alert = '';
|
||||
if (empty($_POST['uca_title']))
|
||||
{
|
||||
$alert = '&alert=empty_uca_title';
|
||||
$cont = false;
|
||||
}
|
||||
if ($cont)
|
||||
{
|
||||
$AVE_DB->Query("
|
||||
INSERT
|
||||
INTO " . PREFIX . "_module_unicalendar
|
||||
SET
|
||||
id = '',
|
||||
uca_title = '" . $_POST['uca_title'] . "',
|
||||
uca_date_format = '" . $_POST['uca_date_format'] . "',
|
||||
uca_events = '" . $_POST['uca_events'] . "',
|
||||
uca_rubric_id = '" . $_POST['uca_rubric_id'] . "',
|
||||
uca_rubric_title = '" . $_POST['uca_rubric_title'] . "',
|
||||
uca_doc_id = '" . $_POST['uca_doc_id'] . "',
|
||||
uca_link = '" . $_POST['uca_link'] . "',
|
||||
uca_day = '" . $_POST['uca_day'] . "',
|
||||
uca_scroll = '" . $_POST['uca_scroll'] . "',
|
||||
uca_descript = '" . $_POST['uca_descript'] . "',
|
||||
uca_events_limit = '" . $_POST['uca_events_limit'] . "',
|
||||
uca_img_field = '" . $_POST['i_uca_img_field'] . "',
|
||||
uca_dsc_field = '" . $_POST['i_uca_dsc_field'] . "',
|
||||
uca_place_field = '" . $_POST['i_uca_place_field'] . "'
|
||||
");
|
||||
|
||||
// Получаем обновленные данные календаря
|
||||
require(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.php'); // загружаем файл ленгов для php переменных
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_module_unicalendar
|
||||
WHERE id = '".$AVE_DB->InsertId()."'
|
||||
");
|
||||
$unicalendars = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
array_push($unicalendars, $row);
|
||||
}
|
||||
foreach ( $unicalendars as $k=>$v )
|
||||
{
|
||||
$uca_id = $v['id'];
|
||||
$uca_dfrm = $v['uca_date_format'];
|
||||
$uevents = $v['uca_events'];
|
||||
$urubric_id = $v['uca_rubric_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'];
|
||||
$uca_events_limit = $v['uca_events_limit'];
|
||||
$uca_img_field = $v['uca_img_field'];
|
||||
$uca_dsc_field = $v['uca_dsc_field'];
|
||||
$uca_place_field = $v['uca_place_field'];
|
||||
}
|
||||
if ($uca_dsc_field != 0) {$ellipsis = '… ';} else {$ellipsis = '';};// если описания нет не добавляем многоточие при выводе description
|
||||
// Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
|
||||
if ($uevents !='' && $uevents == '1'){
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
|
||||
");
|
||||
$results = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
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']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },";
|
||||
$rubric_count .= $v['Id']." OR Id=";
|
||||
}
|
||||
$js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});";
|
||||
|
||||
// Получаем Id документов в категории на момент создания календаря и записываем значение в БД
|
||||
$rubric_count ='Id='.$rubric_count;
|
||||
$rubric_count = chop($rubric_count, ' OR Id=');
|
||||
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_module_unicalendar
|
||||
SET
|
||||
uca_doc_id = '" . $rubric_count . "'
|
||||
WHERE id = '" . $uca_id . "'
|
||||
");
|
||||
|
||||
// Создаем 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".$uca_id.".js", "w")
|
||||
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
|
||||
flock($df,2);
|
||||
fwrite($df, $js_data_files);
|
||||
flock($df,3);
|
||||
fclose($df);
|
||||
}
|
||||
|
||||
// Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
|
||||
if ($uevents !='' && $uevents == '2'){
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND ".$udoc_id."
|
||||
");
|
||||
$results = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
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']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },";
|
||||
$rubric_count .= $v['Id'].",";
|
||||
}
|
||||
$js_data_files = "$(function(){"."var data".$uca_id." = [".$uni_data."]; $(\"#eventCalendar".$uca_id."\").eventCalendar({jsonData: data".$uca_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});";
|
||||
|
||||
// Создаем 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".$uca_id.".js", "w")
|
||||
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
|
||||
flock($df,2);
|
||||
fwrite($df, $js_data_files);
|
||||
flock($df,3);
|
||||
fclose($df);
|
||||
}
|
||||
}
|
||||
header('Location:index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1'. $alert);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Редактирование календаря
|
||||
* @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_expire, 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('uca_rub_fields', $uca_rub_fields);
|
||||
$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_date_format = '" . $_POST['uca_date_format'] . "',
|
||||
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'] . "',
|
||||
uca_events_limit = '" . $_POST['uca_events_limit'] . "',
|
||||
uca_img_field = '" . $_POST['send_uca_img_field'] . "',
|
||||
uca_dsc_field = '" . $_POST['send_uca_dsc_field'] . "',
|
||||
uca_place_field = '" . $_POST['send_uca_place_field'] . "'
|
||||
WHERE id = '" . $unicalendar_id . "'
|
||||
");
|
||||
$as = array();
|
||||
$as->$_POST['uca_title'];
|
||||
$as->$_POST['uca_rubric_title'];
|
||||
echo json_encode($as);
|
||||
// Получаем обновленные данные календаря
|
||||
require(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.php'); // загружаем файл ленгов для php переменных
|
||||
$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'];
|
||||
$uca_dfrm = $v['uca_date_format'];
|
||||
$urubric_id = $v['uca_rubric_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'];
|
||||
$uca_events_limit = $v['uca_events_limit'];
|
||||
$uca_img_field = $v['uca_img_field'];
|
||||
$uca_dsc_field = $v['uca_dsc_field'];
|
||||
$uca_place_field = $v['uca_place_field'];
|
||||
}
|
||||
if ($uca_dsc_field != 0) {$ellipsis = '… ';} else {$ellipsis = '';};// если описания нет не добавляем многоточие при выводе description
|
||||
// Если выбрали вывести все документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
|
||||
if ($uevents !='' && $uevents == '1'){
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
|
||||
");
|
||||
$results = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
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']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },";
|
||||
$rubric_count .= $v['Id']." OR Id=";
|
||||
}
|
||||
$js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});";
|
||||
|
||||
// Получаем Id документов в категории на момент создания календаря и записываем значение в БД
|
||||
$rubric_count ='Id='.$rubric_count;
|
||||
$rubric_count = chop($rubric_count, ' OR Id=');
|
||||
|
||||
$AVE_DB->Query("
|
||||
UPDATE
|
||||
" . PREFIX . "_module_unicalendar
|
||||
SET
|
||||
uca_doc_id = '" . $rubric_count . "'
|
||||
WHERE id = '" . $unicalendar_id . "'
|
||||
");
|
||||
|
||||
// Создаем 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".$unicalendar_id.".js", "w")
|
||||
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
|
||||
flock($df,2);
|
||||
fwrite($df, $js_data_files);
|
||||
flock($df,3);
|
||||
fclose($df);
|
||||
}
|
||||
|
||||
// Если выбрали вывести выбранные документы из заданной рубрики - документы с Id=1 (Главная) и 404 страница - выводиться не будут!
|
||||
if ($uevents !='' && $uevents == '2'){
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, document_alias, document_title, document_published, document_expire, document_meta_description
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $urubric_id . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."' AND ".$udoc_id."
|
||||
");
|
||||
$results = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
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']))."\", \"expire_date\": \"".pretty_date(strftime('%Y-%m-%d %H:%M:%S', $v['document_expire']))."\", \"title\": \"".$v['document_title']."\", \"image\": \"".strstr(get_document_field($v['Id'], $uca_img_field), '|', true)."\", \"description\": \"".rtrim(mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_dsc_field))), 0, 255, 'UTF-8'), "!,.-").$ellipsis."\", \"location\": \"".mb_substr(preg_replace('|[\s]+|su', ' ', strip_tags(get_document_field($v['Id'], $uca_place_field))), 0, 300, 'UTF-8')."\", \"url\": \"".$v['document_alias']."\" },";
|
||||
$rubric_count .= $v['Id'].",";
|
||||
}
|
||||
$js_data_files = "$(function(){"."var data".$unicalendar_id." = [".$uni_data."]; $(\"#eventCalendar".$unicalendar_id."\").eventCalendar({jsonData: data".$unicalendar_id.", jsonDateFormat: \"human\", startWeekOnMonday: ".$uca_day.", eventsScrollable: ".$uca_scroll.", openEventInNewWindow: ".$uca_link.", dateFormat: \"".$uca_dfrm."\", showDescription: ".$uca_descript.", eventsLimit: ".$uca_events_limit.", locales: {locale: \"".$uca_locale."\", txt_noEvents: \"".$uca_no_events."\", txt_SpecificEvents_prev: \"\", txt_SpecificEvents_after: \"".$uca_real_events."\", txt_NextEvents: \"".$uca_next_events."\", txt_GoToEventUrl: \"".$uca_look_events."\", moment: {\"months\" : ".$uca_months_events.", \"monthsShort\" : ".$uca_monshort_events.", \"weekdays\" : ".$uca_weekdays_events.", \"weekdaysShort\" : ".$uca_wdayshort_events.", \"weekdaysMin\" : ".$uca_wdaymin_events."}}});});";
|
||||
|
||||
// Создаем 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".$unicalendar_id.".js", "w")
|
||||
or die($uca_not_write_file);// ругаемся если нет прав на запись в директорию data-files !
|
||||
flock($df,2);
|
||||
fwrite($df, $js_data_files);
|
||||
flock($df,3);
|
||||
fclose($df);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Выбор событий календаря
|
||||
*
|
||||
*/
|
||||
|
||||
function unicalendarEventsNew()
|
||||
{
|
||||
require_once(BASE_DIR . '/modules/unicalendar/lang/'.$_SESSION['admin_language'].'.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_expire, 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>"."<td align='center'>".$v['document_expire'] = pretty_date(strftime(TIME_FORMAT, $v['document_expire']))."</td></tr>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($_POST['uca_rub_field'])) // если пришел запрос вывести поля категории, получаем данные и отдаем их в шаблон (выпадающий список)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, rubric_field_title
|
||||
FROM " . PREFIX . "_rubric_fields
|
||||
WHERE rubric_id = '" . $_POST['uca_frub_id'] . "'
|
||||
");
|
||||
while($result = $sql->FetchRow())
|
||||
{
|
||||
echo "<option value=".$result->Id.">".$result->rubric_field_title."</option>";
|
||||
};
|
||||
}
|
||||
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT *
|
||||
FROM " . PREFIX . "_module_unicalendar
|
||||
WHERE id = '".intval($_REQUEST['id'])."'
|
||||
");
|
||||
$unica = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
array_push($unica, $row);
|
||||
}
|
||||
foreach ( $unica as $k=>$v )
|
||||
{
|
||||
$uca_img_field = $v['uca_img_field'];
|
||||
$uca_dsc_field = $v['uca_dsc_field'];
|
||||
$uca_place_field = $v['uca_place_field'];
|
||||
}
|
||||
|
||||
if (isset($_POST['uca_edit_rub_field_img'])) // если пришел запрос вывести поля изображение при редактировании, получаем данные и отдаем их в шаблон (выпадающий список)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, rubric_field_title
|
||||
FROM " . PREFIX . "_rubric_fields
|
||||
WHERE rubric_id = '" . $_POST['uca_frub_id'] . "'
|
||||
");
|
||||
while($result = $sql->FetchRow())
|
||||
{
|
||||
if($result->Id == $uca_img_field) {$sel = 'selected=\'selected\'';} else {$sel = '';};
|
||||
echo "<option ".$sel." value=".$result->Id.">".$result->rubric_field_title."</option>";
|
||||
};
|
||||
}
|
||||
|
||||
if (isset($_POST['uca_edit_rub_field_dsc'])) // если пришел запрос вывести поля описание при редактировании, получаем данные и отдаем их в шаблон (выпадающий список)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, rubric_field_title
|
||||
FROM " . PREFIX . "_rubric_fields
|
||||
WHERE rubric_id = '" . $_POST['uca_frub_id'] . "'
|
||||
");
|
||||
while($result = $sql->FetchRow())
|
||||
{
|
||||
if($result->Id == $uca_dsc_field) {$sel = 'selected=\'selected\'';} else {$sel = '';};
|
||||
echo "<option ".$sel." value=".$result->Id.">".$result->rubric_field_title."</option>";
|
||||
};
|
||||
}
|
||||
|
||||
if (isset($_POST['uca_edit_rub_field_plc'])) // если пришел запрос вывести поля место при редактировании, получаем данные и отдаем их в шаблон (выпадающий список)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id, rubric_field_title
|
||||
FROM " . PREFIX . "_rubric_fields
|
||||
WHERE rubric_id = '" . $_POST['uca_frub_id'] . "'
|
||||
");
|
||||
while($result = $sql->FetchRow())
|
||||
{
|
||||
if($result->Id == $uca_place_field) {$sel = 'selected=\'selected\'';} else {$sel = '';};
|
||||
echo "<option ".$sel." value=".$result->Id.">".$result->rubric_field_title."</option>";
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (isset($_POST['check_rel'])) // если пришел запрос-проверка актуальности календаря (не будет выведен документ с Id=1 это Главная страница и документ Ошибка 404)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $_POST['r_id'] . "' AND Id !=1 && Id != '".PAGE_NOT_FOUND_ID."'
|
||||
");
|
||||
$all_doc_rub = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
array_push($all_doc_rub, $row);
|
||||
}
|
||||
foreach ( $all_doc_rub as $k=>$v )
|
||||
{
|
||||
$doc_count .= $v['Id'].",";
|
||||
}
|
||||
echo $doc_count = chop($doc_count, ' ,');
|
||||
}
|
||||
if (isset($_POST['allowed_rub'])) //если пришел запрос "проверяем и запрещаем создавать календарь, если рубрика содержит только один или два документа, Id которых равны либо главной странице либо странице 404 , либо и то и другое"
|
||||
{
|
||||
global $AVE_DB;
|
||||
$sql = $AVE_DB->Query("
|
||||
SELECT Id
|
||||
FROM " . PREFIX . "_documents
|
||||
WHERE rubric_id = '" . $_POST['allowed_rub_id'] . "'
|
||||
");
|
||||
$all_doc_rub = array();
|
||||
while ($row = $sql->FetchAssocArray())
|
||||
{
|
||||
array_push($all_doc_rub, $row);
|
||||
}
|
||||
foreach ( $all_doc_rub as $k=>$v )
|
||||
{
|
||||
$doc_count .= $v['Id'].",";
|
||||
}
|
||||
echo $doc_count = chop($doc_count, ' ,');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление календаря
|
||||
*
|
||||
* @param int $unicalendar_id - идентификатор календаря
|
||||
*/
|
||||
function unicalendarDelete($unicalendar_id)
|
||||
{
|
||||
global $AVE_DB;
|
||||
$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&cp=' . SESSION);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
?>
|
||||
99
css/eventCalendar.css
Normal file
99
css/eventCalendar.css
Normal file
@@ -0,0 +1,99 @@
|
||||
/*= CORE CSS */
|
||||
|
||||
.eventCalendar-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.eventCalendar-wrap {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.eventCalendar-arrow {
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.eventCalendar-prev {
|
||||
left: 3px;
|
||||
}
|
||||
|
||||
.eventCalendar-next {
|
||||
right: 3px;
|
||||
}
|
||||
|
||||
.eventCalendar-monthTitle {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.eventCalendar-monthWrap {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.eventCalendar-currentMonth {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.eventCalendar-daysList {
|
||||
display: table;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.eventCalendar-showAsWeek {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.eventCalendar-daysList li {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.eventCalendar-dayWithEvents {
|
||||
background: rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.eventCalendar-current {
|
||||
background: rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
|
||||
.eventCalendar-showAsWeek li {
|
||||
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;
|
||||
}
|
||||
|
||||
.eventCalendar-loading {
|
||||
display: block;
|
||||
min-width: 100px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.eventCalendar-list {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.eventCalendar-oldEventList {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.eventCalendar-subtitle {
|
||||
padding-left: 5px;
|
||||
font-weight: bold;
|
||||
font-size: 120%;
|
||||
}
|
||||
/* end of core CSS */
|
||||
602
css/eventCalendar_theme_responsive.css
Normal file
602
css/eventCalendar_theme_responsive.css
Normal file
@@ -0,0 +1,602 @@
|
||||
/* Theme CSS */
|
||||
/*html {
|
||||
background-color:#eee;
|
||||
}
|
||||
body {
|
||||
font-family: Arial, "Lucida Grande", sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
color: #555;
|
||||
background-color:#fff;
|
||||
}*/
|
||||
.eventCalendar-wrap {
|
||||
border:solid 1px #d3d3d3;
|
||||
box-shadow:0 0 15px #999;
|
||||
border-radius:5px;
|
||||
margin-bottom:20px;
|
||||
background-color:#fff;
|
||||
color:#807E7E;
|
||||
}
|
||||
.eventCalendar-wrap .eventCalendar-arrow {
|
||||
text-decoration:none;
|
||||
color:#fff;
|
||||
padding:0 5px;
|
||||
line-height:28px;
|
||||
top:9px;
|
||||
padding:8px 10px;
|
||||
}
|
||||
.eventCalendar-wrap .eventCalendar-arrow.prev {
|
||||
|
||||
}
|
||||
.eventCalendar-wrap .eventCalendar-arrow:hover { opacity:0.7;}
|
||||
.eventCalendar-wrap .eventCalendar-arrow span {
|
||||
height: 0;
|
||||
width: 0;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
border-top: 6px solid transparent;
|
||||
border-bottom: 6px solid transparent;
|
||||
border-left: 6px solid #fff;
|
||||
float:left;
|
||||
text-indent:-5000px;
|
||||
}
|
||||
.eventCalendar-wrap .eventCalendar-arrow.eventCalendar-prev span {
|
||||
border-left-width:0;
|
||||
border-right: 6px solid #fff;
|
||||
}
|
||||
.eventCalendar-slider { height:80px;}
|
||||
|
||||
.eventCalendar-monthWrap {
|
||||
border-radius:5px;
|
||||
top:10px;
|
||||
left:0px;
|
||||
}
|
||||
.eventCalendar-currentTitle {
|
||||
line-height:25px;
|
||||
background-color:#138DA5;
|
||||
outline:1px solid #138DA5;
|
||||
border:1px solid #E3E3E3;
|
||||
border-width:1px 0;
|
||||
}
|
||||
.eventCalendar-currentTitle .eventCalendar-monthTitle {
|
||||
font-size:110%;
|
||||
text-decoration:none;
|
||||
font-weight:bold;
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.eventCalendar-daysList {
|
||||
zoom: 1;
|
||||
padding:0;
|
||||
width:100%;
|
||||
|
||||
}
|
||||
.eventCalendar-daysList.eventCalendar-showAsWeek {
|
||||
margin:10px 5px;
|
||||
width:auto;
|
||||
|
||||
border:solid 1px #BCBCBC;
|
||||
border-bottom-width:0;
|
||||
border-radius:0;
|
||||
background-color:#CCCCCC;
|
||||
background-image: linear-gradient(top, #EEEEEE 42%, #CCCCCC 71%);
|
||||
background-image: -o-linear-gradient(top, #EEEEEE 42%, #CCCCCC 71%);
|
||||
background-image: -moz-linear-gradient(top, #EEEEEE 42%, #CCCCCC 71%);
|
||||
background-image: -webkit-linear-gradient(top, #EEEEEE 42%, #CCCCCC 71%);
|
||||
background-image: -ms-linear-gradient(top, #EEEEEE 42%, #CCCCCC 71%);
|
||||
|
||||
background-image: -webkit-gradient(
|
||||
linear,
|
||||
left top,
|
||||
left bottom,
|
||||
color-stop(0.42, #EEEEEE),
|
||||
color-stop(0.71, #CCCCCC)
|
||||
);
|
||||
|
||||
}
|
||||
.eventCalendar-daysList.showDayNames.eventCalendar-showAsWeek {
|
||||
|
||||
border-radius:5px 5px 0 0;
|
||||
}
|
||||
.eventCalendar-daysList:before, .eventCalendar-daysList:after { content:""; display:table; }
|
||||
.eventCalendar-daysList:after { clear: both; }
|
||||
.eventCalendar-day-header {
|
||||
text-transform:lowercase;
|
||||
text-align:center;
|
||||
font-size:12px;
|
||||
border-bottom:solid 1px #BCBCBC;
|
||||
}
|
||||
.eventCalendar-daysList.eventCalendar-showAsWeek li {
|
||||
height:auto; margin:0;
|
||||
}
|
||||
.eventCalendar-daysList.eventCalendar-showAsWeek li.eventCalendar-empty {
|
||||
background-color: #ccc;
|
||||
min-height:27px;
|
||||
border-top: solid 1px #ccc;
|
||||
}
|
||||
.eventCalendar-day a {
|
||||
text-decoration:none;
|
||||
font-size:10px;
|
||||
color:#424242;
|
||||
}
|
||||
.eventCalendar-day {
|
||||
border-left:solid 1px #BCBCBC;
|
||||
}
|
||||
.eventCalendar-day a {
|
||||
border:solid 1px #BCBCBC;
|
||||
border-width:0 1px 1px 0;
|
||||
}
|
||||
.eventCalendar-showAsWeek .eventCalendar-day { border-left-width:0;}
|
||||
.eventCalendar-showAsWeek .eventCalendar-day a {
|
||||
border:solid 1px red;
|
||||
border-color:#fff #BCBCBC #BCBCBC #eee;
|
||||
line-height:27px;
|
||||
font-size:11px;
|
||||
|
||||
}
|
||||
.eventCalendar-day a:hover {
|
||||
background-color:#E4E4E4;
|
||||
/* box-shadow:inset 5px 5px 10px #C1C1C1;
|
||||
text-shadow: 2px 2px 2px #C1C1C1;*/
|
||||
}
|
||||
.eventCalendar-daysList li.today a {
|
||||
color:#fff;
|
||||
background:#aaa;
|
||||
/* box-shadow:inset 5px 5px 10px #777;
|
||||
text-shadow: 2px 2px 2px #777;*/
|
||||
}
|
||||
li.eventCalendar-day.today a:hover {
|
||||
background-color:#ccc;
|
||||
/*box-shadow:inset 5px 5px 10px #999;*/
|
||||
}
|
||||
|
||||
.eventCalendar-daysList li.eventCalendar-dayWithEvents a {
|
||||
background:#89B814;
|
||||
/*box-shadow:inset 5px 5px 10px #698B10;
|
||||
text-shadow: 2px 2px 2px #698B10;*/
|
||||
color:#fff;
|
||||
}
|
||||
li.eventCalendar-day.eventCalendar-dayWithEvents a:hover {
|
||||
background-color:#C2D374;
|
||||
/*box-shadow:inset 5px 5px 10px #89B814;
|
||||
text-shadow: 2px 2px 2px #89B814;*/
|
||||
}
|
||||
|
||||
|
||||
.eventCalendar-daysList li.current a {
|
||||
color:#fff;
|
||||
background:#449FB2;
|
||||
box-shadow:inset 5px 5px 10px #216B7A;
|
||||
text-shadow: 2px 2px 2px #216B7A;
|
||||
}
|
||||
li.eventCalendar-day.current a:hover {
|
||||
background-color:#79BDCC;
|
||||
box-shadow:inset 5px 5px 10px #449FB2;
|
||||
text-shadow: 2px 2px 2px #449FB2;
|
||||
}
|
||||
.eventCalendar-loading {
|
||||
border-radius:4px;
|
||||
margin:5px auto;
|
||||
padding:0 10px;
|
||||
background-color:#ccc;
|
||||
color:#fff;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
box-shadow:0 0 10px #ccc;
|
||||
text-shadow:0 0 3px #aaa;
|
||||
position:absolute;
|
||||
z-index:4;
|
||||
top:25px;
|
||||
left:5px;
|
||||
}
|
||||
.eventCalendar-loading.error {
|
||||
background-color:red;
|
||||
}
|
||||
|
||||
.eventCalendar-subtitle { padding-top:10px;}
|
||||
.eventCalendar-list-wrap {
|
||||
min-height:100px;
|
||||
position:relative;
|
||||
}
|
||||
.eventCalendar-list-content.scrollable {
|
||||
|
||||
height:100px;
|
||||
overflow-y:auto;
|
||||
margin:0 5px 5px 0;
|
||||
}
|
||||
.eventCalendar-list {
|
||||
margin:0; padding:0; list-style-type:none;
|
||||
}
|
||||
.eventCalendar-list li {
|
||||
padding:0 5px 15px;
|
||||
margin:0;
|
||||
clear:both;
|
||||
}
|
||||
.eventCalendar-list li time {
|
||||
font-size:10px;
|
||||
line-height:13px;
|
||||
}
|
||||
.eventCalendar-list li time em {
|
||||
float:left;
|
||||
font-style:normal;
|
||||
}
|
||||
.eventCalendar-list li time small {
|
||||
font-size:10px;
|
||||
float:left;
|
||||
background-color:#807E7E;
|
||||
color:#fff;
|
||||
padding:0 5px 0 4px;
|
||||
margin:0 0 0 3px;
|
||||
}
|
||||
.eventCalendar-list li .eventCalendar-eventTitle {
|
||||
display:block;
|
||||
clear:both;
|
||||
|
||||
font-weight:bold;
|
||||
text-decoration:none;
|
||||
}
|
||||
.eventCalendar-list li a.eventCalendar-eventTitle {
|
||||
color:#0E8EAB;
|
||||
outline: none;
|
||||
}
|
||||
.eventCalendar-list li a.eventCalendar-eventTitle:hover { text-decoration:underline;}
|
||||
.eventCalendar-list li .eventDesc {
|
||||
clear: both;
|
||||
margin:0 0 5px 0;
|
||||
font-size:80%;
|
||||
line-height:1.2em;
|
||||
|
||||
}
|
||||
.eventCalendar-list .eventCalendar-noEvents {
|
||||
font-size:120%;
|
||||
border-radius:4px;
|
||||
margin:5px;
|
||||
padding:5px;
|
||||
|
||||
background-color:#ccc;
|
||||
color:#fff;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
box-shadow:0 0 10px #ccc;
|
||||
text-shadow:0 0 3px #aaa;
|
||||
}
|
||||
|
||||
.bt {
|
||||
font-size:14px;
|
||||
display:block;
|
||||
clear:both;
|
||||
text-align: center;
|
||||
margin-top:10px;
|
||||
padding: 9px 34px 11px;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
outline: none;
|
||||
|
||||
|
||||
color: #ffffff;
|
||||
background-color: #138DA5;
|
||||
background-repeat: repeat-x;
|
||||
|
||||
background-image: -khtml-gradient(linear, left top, left bottom, from(#138DA5), to(#138DA5));
|
||||
background-image: -moz-linear-gradient(top, #138DA5, #138DA5);
|
||||
background-image: -ms-linear-gradient(top, #138DA5, #138DA5);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #138DA5), color-stop(100%, #138DA5));
|
||||
background-image: -webkit-linear-gradient(top, #138DA5, #138DA5);
|
||||
background-image: -o-linear-gradient(top, #138DA5, #138DA5);
|
||||
background-image: linear-gradient(top, #138DA5, #138DA5);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#138DA5', endColorstr='#138DA5', GradientType=0);
|
||||
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
|
||||
border: 0px solid #138DA5;
|
||||
border-color: #138DA5 #138DA5 #138DA5;
|
||||
|
||||
border-radius: 0px;
|
||||
|
||||
|
||||
|
||||
-webkit-transition: 0.1s linear all;
|
||||
-moz-transition: 0.1s linear all;
|
||||
-ms-transition: 0.1s linear all;
|
||||
-o-transition: 0.1s linear all;
|
||||
transition: 0.1s linear all;
|
||||
}
|
||||
.bt:hover {
|
||||
background-position: 0 -15px;
|
||||
text-decoration: none;
|
||||
color: #ffffff;
|
||||
}
|
||||
.bt:visited {
|
||||
color: #ffffff;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
/* Правила, использующиеся в JS файле jquery.eventCalendar.js */
|
||||
|
||||
/*Изображение*/
|
||||
|
||||
.uca_img {
|
||||
width:100%;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
/*box-shadow:0 0 15px #999;*/
|
||||
}
|
||||
|
||||
/*Заголовок*/
|
||||
.eventCalendar-eventTitle {
|
||||
font-size: 18px;
|
||||
font-weight: normal !important;
|
||||
text-decoration: none !important;
|
||||
|
||||
}
|
||||
|
||||
/*Позиционирование divОв - оберток с иконками дата и время*/
|
||||
.uca-date-icon {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
/*Дата и время после иконки*/
|
||||
.uca-date-txt {
|
||||
margin-left:20px;
|
||||
white-space: nowrap;
|
||||
font: 10pt sans-serif;
|
||||
color: #2A3C63;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
|
||||
/*Иконки (спрайт)*/
|
||||
|
||||
.bg-blue_calendar {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -10px;
|
||||
}
|
||||
|
||||
.bg-blue_caret_right {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -10px;
|
||||
}
|
||||
|
||||
.bg-blue_check {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -46px;
|
||||
}
|
||||
|
||||
.bg-blue_clock {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -46px;
|
||||
}
|
||||
|
||||
.bg-blue_globe {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -10px;
|
||||
}
|
||||
|
||||
.bg-blue_map {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -46px;
|
||||
}
|
||||
|
||||
.bg-blue_menu {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -82px;
|
||||
}
|
||||
|
||||
.bg-blue_phone {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -82px;
|
||||
}
|
||||
|
||||
.bg-blue_podcast {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -82px;
|
||||
}
|
||||
|
||||
.bg-dlue_bullhom {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -10px;
|
||||
}
|
||||
|
||||
.bg-gray_bullhom {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -46px;
|
||||
}
|
||||
|
||||
.bg-gray_calendar {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -82px;
|
||||
}
|
||||
|
||||
.bg-gray_caret_right {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -118px;
|
||||
}
|
||||
|
||||
.bg-gray_check {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -118px;
|
||||
}
|
||||
|
||||
.bg-gray_clock {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -118px;
|
||||
}
|
||||
|
||||
.bg-gray_globe {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -118px;
|
||||
}
|
||||
|
||||
x
|
||||
.bg-gray_map {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -10px;
|
||||
}
|
||||
|
||||
.bg-gray_menu {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -46px;
|
||||
}
|
||||
|
||||
.bg-gray_phone {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -82px;
|
||||
}
|
||||
|
||||
.bg-gray_podcast {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -118px;
|
||||
}
|
||||
|
||||
.bg-green_bullhom {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -154px;
|
||||
}
|
||||
|
||||
.bg-green_calendar {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -154px;
|
||||
}
|
||||
|
||||
.bg-green_caret_right {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -154px;
|
||||
}
|
||||
|
||||
.bg-green_check {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -154px;
|
||||
}
|
||||
|
||||
.bg-green_clock {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -154px;
|
||||
}
|
||||
|
||||
.bg-green_globe {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -10px;
|
||||
}
|
||||
|
||||
.bg-green_map {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -46px;
|
||||
}
|
||||
|
||||
.bg-green_menu {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -82px;
|
||||
}
|
||||
|
||||
.bg-green_phone {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -118px;
|
||||
}
|
||||
|
||||
.bg-green_podcast {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -154px;
|
||||
}
|
||||
|
||||
.bg-orange_bullhom {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_calendar {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_caret_right {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_check {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_clock {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_globe {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -190px;
|
||||
}
|
||||
|
||||
.bg-orange_map {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -10px;
|
||||
}
|
||||
|
||||
.bg-orange_menu {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -46px;
|
||||
}
|
||||
|
||||
.bg-orange_phone {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -82px;
|
||||
}
|
||||
|
||||
.bg-orange_podcast {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -118px;
|
||||
}
|
||||
|
||||
.bg-red_bullhom {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -154px;
|
||||
}
|
||||
|
||||
.bg-red_calendar {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -190px;
|
||||
}
|
||||
|
||||
.bg-red_caret_right {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -10px -226px;
|
||||
}
|
||||
|
||||
.bg-red_check {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -46px -226px;
|
||||
}
|
||||
|
||||
.bg-red_clock {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -82px -226px;
|
||||
}
|
||||
|
||||
.bg-red_globe {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -118px -226px;
|
||||
}
|
||||
|
||||
.bg-red_map {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -154px -226px;
|
||||
}
|
||||
|
||||
.bg-red_menu {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -190px -226px;
|
||||
}
|
||||
|
||||
.bg-red_phone {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -226px -226px;
|
||||
}
|
||||
|
||||
.bg-red_podcast {
|
||||
width: 16px; height: 16px;
|
||||
background: url('../images/css_sprites.png') -262px -10px;
|
||||
}
|
||||
|
||||
/* end of theme css */
|
||||
1
css/eventCalendar_theme_responsive_min.css
Normal file
1
css/eventCalendar_theme_responsive_min.css
Normal file
File diff suppressed because one or more lines are too long
4
css/index.php
Normal file
4
css/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
BIN
images/css_sprites.png
Normal file
BIN
images/css_sprites.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
4
images/index.php
Normal file
4
images/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
BIN
images/question_alert.png
Normal file
BIN
images/question_alert.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
images/question_select.png
Normal file
BIN
images/question_select.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
images/question_start_one.png
Normal file
BIN
images/question_start_one.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
20
info.php
Normal file
20
info.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
if (! defined('BASE_DIR'))
|
||||
exit;
|
||||
|
||||
$module = array(
|
||||
'ModuleSysName' => 'unicalendar',
|
||||
'ModuleVersion' => '1.26.8',
|
||||
'ModuleAutor' => 'Repellent',
|
||||
'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms',
|
||||
'ModuleStatus' => 1,
|
||||
'ModuleIsFunction' => 1,
|
||||
'ModuleTemplate' => 0,
|
||||
'ModuleAdminEdit' => 1,
|
||||
'ModuleFunction' => 'mod_unicalendar',
|
||||
'ModuleTag' => '[mod_unicalendar:XXX]',
|
||||
'ModuleTagLink' => null,
|
||||
'ModuleAveTag' => '#\\\[mod_unicalendar:([\\\d-]+)]#',
|
||||
'ModulePHPTag' => "<?php mod_unicalendar(''$1''); ?>"
|
||||
);
|
||||
?>
|
||||
4
js/data-files/index.php
Normal file
4
js/data-files/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
4
js/index.php
Normal file
4
js/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
516
js/jquery.eventCalendar.js
Normal file
516
js/jquery.eventCalendar.js
Normal file
@@ -0,0 +1,516 @@
|
||||
/* =
|
||||
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/
|
||||
*/
|
||||
;(function( $ ) {
|
||||
$.fn.eventCalendar = function(options){
|
||||
var calendar = this;
|
||||
|
||||
if ( options.locales && typeof(options.locales) == 'string' ) {
|
||||
$.getJSON(options.locales, function(data) {
|
||||
options.locales = $.extend({}, $.fn.eventCalendar.defaults.locales, data);
|
||||
moment.locale(data.locale, options.locales.moment);
|
||||
moment.locale(data.locale);
|
||||
|
||||
initEventCalendar(calendar, options);
|
||||
}).error(function() {
|
||||
showError("error getting locale json", $(this));
|
||||
});
|
||||
} else {
|
||||
if ( options.locales && options.locales.locale ) {
|
||||
options.locales = $.extend({}, $.fn.eventCalendar.defaults.locales, options.locales);
|
||||
moment.locale(options.locales.locale, options.locales.moment);
|
||||
moment.locale(options.locales.locale);
|
||||
}
|
||||
initEventCalendar(calendar, options);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
// define the parameters with the default values of the function
|
||||
$.fn.eventCalendar.defaults = {
|
||||
eventsjson: 'js/events.json',
|
||||
eventsLimit: 4,
|
||||
locales: {
|
||||
locale: "en",
|
||||
txt_noEvents: "There are no events in this period",
|
||||
txt_SpecificEvents_prev: "",
|
||||
txt_SpecificEvents_after: "events:",
|
||||
txt_next: "next",
|
||||
txt_prev: "prev",
|
||||
txt_NextEvents: "Next events:",
|
||||
txt_GoToEventUrl: "See the event",
|
||||
txt_loading: "loading..."
|
||||
},
|
||||
showDayAsWeeks: true,
|
||||
startWeekOnMonday: true,
|
||||
showDayNameInCalendar: true,
|
||||
showDescription: false,
|
||||
onlyOneDescription: true,
|
||||
openEventInNewWindow: false,
|
||||
eventsScrollable: false,
|
||||
dateFormat: "D/MM/YYYY",
|
||||
jsonDateFormat: 'timestamp', // you can use also "human" 'YYYY-MM-DD HH:MM:SS'
|
||||
moveSpeed: 500, // speed of month move when you clic on a new date
|
||||
moveOpacity: 0.15, // month and events fadeOut to this opacity
|
||||
jsonData: "", // to load and inline json (not ajax calls)
|
||||
cacheJson: true // if true plugin get a json only first time and after plugin filter events
|
||||
// if false plugin get a new json on each date change
|
||||
};
|
||||
|
||||
function initEventCalendar(that, options) {
|
||||
var eventsOpts = $.extend({}, $.fn.eventCalendar.defaults, options);
|
||||
|
||||
// define global vars for the function
|
||||
var flags = {
|
||||
wrap: "",
|
||||
directionLeftMove: "300",
|
||||
eventsJson: {}
|
||||
};
|
||||
|
||||
// each eventCalendar will execute this function
|
||||
that.each(function(){
|
||||
|
||||
flags.wrap = $(this);
|
||||
flags.wrap.addClass('eventCalendar-wrap').append("<div class='eventCalendar-list-wrap'><p class='eventCalendar-subtitle'></p><span class='eventCalendar-loading'>"+eventsOpts.locales.txt_loading+"</span><div class='eventCalendar-list-content'><ul class='eventCalendar-list'></ul></div></div>");
|
||||
|
||||
if (eventsOpts.eventsScrollable) {
|
||||
flags.wrap.find('.eventCalendar-list-content').addClass('scrollable');
|
||||
}
|
||||
|
||||
setCalendarWidth(flags);
|
||||
$(window).resize(function(){
|
||||
setCalendarWidth(flags);
|
||||
});
|
||||
//flags.directionLeftMove = flags.wrap.width();
|
||||
|
||||
// show current month
|
||||
dateSlider("current", flags, eventsOpts);
|
||||
|
||||
getEvents(flags, eventsOpts, eventsOpts.eventsLimit,false,false,false,false);
|
||||
|
||||
changeMonth(flags, eventsOpts);
|
||||
|
||||
flags.wrap.on('click','.eventCalendar-day a',function(e){
|
||||
//flags.wrap.find('.eventCalendar-day a').live('click',function(e){
|
||||
e.preventDefault();
|
||||
var year = flags.wrap.attr('data-current-year'),
|
||||
month = flags.wrap.attr('data-current-month'),
|
||||
day = $(this).parent().attr('rel');
|
||||
|
||||
getEvents(flags, eventsOpts, false, year, month,day, "day");
|
||||
});
|
||||
flags.wrap.on('click','.eventCalendar-monthTitle', function(e){
|
||||
//flags.wrap.find('.eventCalendar-monthTitle').live('click',function(e){
|
||||
e.preventDefault();
|
||||
var year = flags.wrap.attr('data-current-year'),
|
||||
month = flags.wrap.attr('data-current-month');
|
||||
|
||||
getEvents(flags, eventsOpts, eventsOpts.eventsLimit, year, month,false, "month");
|
||||
});
|
||||
});
|
||||
|
||||
// show event description
|
||||
flags.wrap.find('.eventCalendar-list').on('click','.eventCalendar-eventTitle',function(e){
|
||||
//flags.wrap.find('.eventCalendar-list .eventCalendar-eventTitle').live('click',function(e){
|
||||
if(!eventsOpts.showDescription) {
|
||||
e.preventDefault();
|
||||
var desc = $(this).parent().find('.eventCalendar-eventDesc');
|
||||
|
||||
if (!desc.find('a').length) {
|
||||
var eventUrl = $(this).attr('href');
|
||||
var eventTarget = $(this).attr('target');
|
||||
|
||||
// create a button to go to event url
|
||||
if(eventUrl){
|
||||
desc.append('<a href="' + eventUrl + '" target="'+eventTarget+'" class="bt">'+eventsOpts.locales.txt_GoToEventUrl+'</a>');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ( desc.is(':visible') ) {
|
||||
desc.slideUp();
|
||||
} else {
|
||||
if(eventsOpts.onlyOneDescription) {
|
||||
flags.wrap.find('.eventCalendar-eventDesc').slideUp();
|
||||
}
|
||||
desc.slideDown();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function sortJson(a, b){
|
||||
if ( typeof a.date === 'string' ) {
|
||||
return a.date.toLowerCase() > b.date.toLowerCase() ? 1 : -1;
|
||||
}
|
||||
return a.date > b.date ? 1 : -1;
|
||||
}
|
||||
|
||||
function dateSlider(show, flags, eventsOpts) {
|
||||
var $eventsCalendarSlider = $("<div class='eventCalendar-slider'></div>"),
|
||||
$eventsCalendarMonthWrap = $("<div class='eventCalendar-monthWrap'></div>"),
|
||||
$eventsCalendarTitle = $("<div class='eventCalendar-currentTitle'><a href='#' class='eventCalendar-monthTitle'></a></div>"),
|
||||
$eventsCalendarArrows = $("<a href='#' class='eventCalendar-arrow eventCalendar-prev'><span>" + eventsOpts.locales.txt_prev + "</span></a><a href='#' class='eventCalendar-arrow eventCalendar-next'><span>" + eventsOpts.locales.txt_next + "</span></a>");
|
||||
$eventsCalendarDaysList = $("<ul class='eventCalendar-daysList'></ul>"),
|
||||
date = new Date();
|
||||
|
||||
if ( !flags.wrap.find('.eventCalendar-slider').length ) {
|
||||
flags.wrap.prepend($eventsCalendarSlider);
|
||||
$eventsCalendarSlider.append($eventsCalendarMonthWrap);
|
||||
} else {
|
||||
flags.wrap.find('.eventCalendar-slider').append($eventsCalendarMonthWrap);
|
||||
}
|
||||
|
||||
flags.wrap.find('.eventCalendar-monthWrap.eventCalendar-currentMonth').removeClass('eventCalendar-currentMonth').addClass('eventCalendar-oldMonth');
|
||||
$eventsCalendarMonthWrap.addClass('eventCalendar-currentMonth').append($eventsCalendarTitle, $eventsCalendarDaysList);
|
||||
|
||||
|
||||
|
||||
// if current show current month & day
|
||||
if (show === "current") {
|
||||
day = date.getDate();
|
||||
$eventsCalendarSlider.append($eventsCalendarArrows);
|
||||
|
||||
} else {
|
||||
date = new Date(flags.wrap.attr('data-current-year'),flags.wrap.attr('data-current-month'),1,0,0,0); // current visible month
|
||||
day = 0; // not show current day in days list
|
||||
|
||||
moveOfMonth = 1;
|
||||
if (show === "prev") {
|
||||
moveOfMonth = -1;
|
||||
}
|
||||
date.setMonth( date.getMonth() + moveOfMonth );
|
||||
|
||||
var tmpDate = new Date();
|
||||
if (date.getMonth() === tmpDate.getMonth()) {
|
||||
day = tmpDate.getDate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// get date portions
|
||||
var year = date.getFullYear(), // year of the events
|
||||
currentYear = new Date().getFullYear(), // current year
|
||||
month = date.getMonth(), // 0-11
|
||||
monthToShow = month + 1;
|
||||
|
||||
if (show != "current") {
|
||||
// month change
|
||||
getEvents(flags, eventsOpts, eventsOpts.eventsLimit, year, month,false, show);
|
||||
}
|
||||
|
||||
flags.wrap.attr('data-current-month',month)
|
||||
.attr('data-current-year',year);
|
||||
|
||||
// add current date info
|
||||
moment.locale(eventsOpts.locales.locale);
|
||||
|
||||
var formatedDate = moment(year+" "+monthToShow, "YYYY MM").format("MMMM YYYY");
|
||||
$eventsCalendarTitle.find('.eventCalendar-monthTitle').html(formatedDate);
|
||||
|
||||
// print all month days
|
||||
var daysOnTheMonth = 32 - new Date(year, month, 32).getDate();
|
||||
var daysList = [],
|
||||
i;
|
||||
if (eventsOpts.showDayAsWeeks) {
|
||||
$eventsCalendarDaysList.addClass('eventCalendar-showAsWeek');
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
for (; i < 7; i++) {
|
||||
daysList.push('<li class="eventCalendar-day-header">'+moment()._locale._weekdaysShort[i]+'</li>');
|
||||
|
||||
if (i === 6 && eventsOpts.startWeekOnMonday) {
|
||||
// print sunday header
|
||||
daysList.push('<li class="eventCalendar-day-header">'+moment()._locale._weekdaysShort[0]+'</li>');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dt=new Date(year, month, 01);
|
||||
var weekDay = dt.getDay(); // day of the week where month starts
|
||||
|
||||
if (eventsOpts.startWeekOnMonday) {
|
||||
weekDay = dt.getDay() - 1;
|
||||
}
|
||||
if (weekDay < 0) { weekDay = 6; } // if -1 is because day starts on sunday(0) and week starts on monday
|
||||
|
||||
for (i = weekDay; i > 0; i--) {
|
||||
daysList.push('<li class="eventCalendar-day eventCalendar-empty"></li>');
|
||||
}
|
||||
}
|
||||
for (dayCount = 1; dayCount <= daysOnTheMonth; dayCount++) {
|
||||
var dayClass = "";
|
||||
|
||||
if (day > 0 && dayCount === day && year === currentYear) {
|
||||
dayClass = "today";
|
||||
}
|
||||
daysList.push('<li id="dayList_' + dayCount + '" rel="'+dayCount+'" class="eventCalendar-day '+dayClass+'"><a href="#">' + dayCount + '</a></li>');
|
||||
}
|
||||
$eventsCalendarDaysList.append(daysList.join(''));
|
||||
|
||||
$eventsCalendarSlider.css('height',$eventsCalendarMonthWrap.height()+'px');
|
||||
}
|
||||
|
||||
function getEvents(flags, eventsOpts, limit, year, month, day, direction) {
|
||||
limit = limit || 0;
|
||||
year = year || '';
|
||||
day = day || '';
|
||||
|
||||
// to avoid problem with january (month = 0)
|
||||
|
||||
if (typeof month != 'undefined') {
|
||||
month = month;
|
||||
} else {
|
||||
month = '';
|
||||
}
|
||||
|
||||
//var month = month || '';
|
||||
flags.wrap.find('.eventCalendar-loading').fadeIn();
|
||||
|
||||
if (eventsOpts.jsonData) {
|
||||
// user send a json in the plugin params
|
||||
eventsOpts.cacheJson = true;
|
||||
|
||||
flags.eventsJson = eventsOpts.jsonData;
|
||||
getEventsData(flags, eventsOpts, flags.eventsJson, limit, year, month, day, direction);
|
||||
|
||||
} else if (!eventsOpts.cacheJson || !direction) {
|
||||
// first load: load json and save it to future filters
|
||||
$.getJSON(eventsOpts.eventsjson + "?limit="+limit+"&year="+year+"&month="+month+"&day="+day, function(data) {
|
||||
flags.eventsJson = data; // save data to future filters
|
||||
getEventsData(flags, eventsOpts, flags.eventsJson, limit, year, month, day, direction);
|
||||
}).error(function() {
|
||||
showError("error getting json: ", flags.wrap);
|
||||
});
|
||||
} else {
|
||||
// filter previus saved json
|
||||
getEventsData(flags, eventsOpts, flags.eventsJson, limit, year, month, day, direction);
|
||||
}
|
||||
|
||||
if (day > '') {
|
||||
flags.wrap.find('.eventCalendar-current').removeClass('eventCalendar-current');
|
||||
flags.wrap.find('#dayList_'+day).addClass('eventCalendar-current');
|
||||
}
|
||||
}
|
||||
|
||||
function getEventsData(flags, eventsOpts, data, limit, year, month, day, direction){
|
||||
directionLeftMove = "-=" + flags.directionLeftMove;
|
||||
eventContentHeight = "auto";
|
||||
|
||||
subtitle = flags.wrap.find('.eventCalendar-list-wrap .eventCalendar-subtitle');
|
||||
|
||||
if ( !direction ) {
|
||||
// first load
|
||||
subtitle.html(eventsOpts.locales.txt_NextEvents);
|
||||
eventContentHeight = "auto";
|
||||
directionLeftMove = "-=0";
|
||||
} else {
|
||||
var jsMonth = parseInt(month) + 1,
|
||||
formatedDate;
|
||||
moment.locale(eventsOpts.locales.locale);
|
||||
|
||||
if (day !== '') {
|
||||
formatedDate = moment(year+" "+jsMonth+" "+day, "YYYY MM DD").format("LL");
|
||||
subtitle.html(eventsOpts.locales.txt_SpecificEvents_prev + formatedDate + " " + eventsOpts.locales.txt_SpecificEvents_after);
|
||||
//eventStringDate = moment(eventDate).format(eventsOpts.dateFormat);
|
||||
} else {
|
||||
formatedDate = moment(year+" "+jsMonth, "YYYY MM").format("MMMM");
|
||||
subtitle.html(eventsOpts.locales.txt_SpecificEvents_prev + formatedDate + " " + eventsOpts.locales.txt_SpecificEvents_after);
|
||||
}
|
||||
|
||||
if (direction === 'eventCalendar-prev') {
|
||||
directionLeftMove = "+=" + flags.directionLeftMove;
|
||||
} else if (direction === 'day' || direction === 'month') {
|
||||
directionLeftMove = "+=0";
|
||||
eventContentHeight = 0;
|
||||
}
|
||||
}
|
||||
|
||||
flags.wrap.find('.eventCalendar-list').animate({
|
||||
opacity: eventsOpts.moveOpacity,
|
||||
left: directionLeftMove,
|
||||
height: eventContentHeight
|
||||
}, eventsOpts.moveSpeed, function() {
|
||||
flags.wrap.find('.eventCalendar-list').css({'left':0, 'height': 'auto'}).hide();
|
||||
//wrap.find('.eventCalendar-list li').fadeIn();
|
||||
|
||||
var events = [];
|
||||
|
||||
data = $(data).sort(sortJson); // sort event by dates
|
||||
// each event
|
||||
if ( data.length ) {
|
||||
|
||||
// show or hide event description
|
||||
var eventDescClass = '';
|
||||
if(!eventsOpts.showDescription) {
|
||||
eventDescClass = 'eventCalendar-hidden';
|
||||
}
|
||||
var eventLinkTarget = "_self";
|
||||
if(eventsOpts.openEventInNewWindow) {
|
||||
eventLinkTarget = '_target';
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
$.each(data, function(key, event) {
|
||||
var eventDateTime, eventDate, eventTime, eventYear, eventMonth, eventDay,
|
||||
eventMonthToShow, eventHour, eventMinute, eventSeconds;
|
||||
if (eventsOpts.jsonDateFormat == 'human') {
|
||||
eventDateTime = event.date.split(" ");
|
||||
eventDate = eventDateTime[0].split("-");
|
||||
eventTime = eventDateTime[1].split(":");
|
||||
eventYear = eventDate[0];
|
||||
eventMonth = parseInt(eventDate[1]) - 1;
|
||||
eventDay = parseInt(eventDate[2]);
|
||||
//eventMonthToShow = eventMonth;
|
||||
eventMonthToShow = parseInt(eventMonth) + 1;
|
||||
eventHour = eventTime[0];
|
||||
eventMinute = eventTime[1];
|
||||
eventSeconds = eventTime[2];
|
||||
eventDate = new Date(eventYear, eventMonth, eventDay, eventHour, eventMinute, eventSeconds);
|
||||
} else {
|
||||
eventDate = new Date(parseInt(event.date));
|
||||
eventYear = eventDate.getFullYear();
|
||||
eventMonth = eventDate.getMonth();
|
||||
eventDay = eventDate.getDate();
|
||||
eventMonthToShow = eventMonth + 1;
|
||||
eventHour = eventDate.getHours();
|
||||
eventMinute = eventDate.getMinutes();
|
||||
|
||||
}
|
||||
|
||||
if (parseInt(eventMinute) <= 9) {
|
||||
eventMinute = "0" + parseInt(eventMinute);
|
||||
}
|
||||
// Проверка на пустоту значений Тизера события (изображение, описание, место)
|
||||
|
||||
if(event.image != '')// Start проверяем на пустоту значение переменной Изображение
|
||||
{
|
||||
var eventImage = '<img class="uca_img" src='+event.image+'>';
|
||||
} else {
|
||||
var eventImage = '';
|
||||
}// End проверяем на пустоту значение переменной Изображение
|
||||
|
||||
if(event.description != '')// Start проверяем на пустоту значение переменной Описание
|
||||
{
|
||||
var eventDescription = event.description;
|
||||
} else {
|
||||
var eventDescription = '';
|
||||
}// End проверяем на пустоту значение переменной Описание
|
||||
|
||||
if(event.location != '')// Start проверяем на пустоту значение переменной Место
|
||||
{
|
||||
var eventLocation = '<div class="bg-blue_map uca-date-icon"><span class="uca-date-txt">' + event.location + '</span></div>';
|
||||
} else {
|
||||
var eventLocation = '';
|
||||
}// End проверяем на пустоту значение переменной Место
|
||||
|
||||
if (limit === 0 || limit > i) {
|
||||
// if month or day exist then only show matched events
|
||||
|
||||
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 {
|
||||
moment.locale(eventsOpts.locales.locale);
|
||||
//eventStringDate = eventDay + "/" + eventMonthToShow + "/" + eventYear;
|
||||
eventStringDate = moment(eventDate).format(eventsOpts.dateFormat);
|
||||
var eventTitle;
|
||||
|
||||
if (event.url) {
|
||||
eventTitle = '<a href="'+event.url+'" target="' + eventLinkTarget + '" class="eventCalendar-eventTitle">' + event.title + '</a>';
|
||||
} 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>');
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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');
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
// there is no events on this period
|
||||
if (!events.length) {
|
||||
events.push('<li class="eventCalendar-noEvents"><p>' + eventsOpts.locales.txt_noEvents + '</p></li>');
|
||||
}
|
||||
flags.wrap.find('.eventCalendar-loading').hide();
|
||||
|
||||
flags.wrap.find('.eventCalendar-list')
|
||||
.html(events.join(''));
|
||||
|
||||
flags.wrap.find('.eventCalendar-list').animate({
|
||||
opacity: 1,
|
||||
height: "toggle"
|
||||
}, eventsOpts.moveSpeed);
|
||||
|
||||
|
||||
});
|
||||
setCalendarWidth(flags);
|
||||
}
|
||||
|
||||
function changeMonth(flags, eventsOpts) {
|
||||
flags.wrap.find('.eventCalendar-arrow').click(function(e){
|
||||
e.preventDefault();
|
||||
var lastMonthMove;
|
||||
|
||||
if ($(this).hasClass('eventCalendar-next')) {
|
||||
dateSlider("next", flags, eventsOpts);
|
||||
lastMonthMove = '-=' + flags.directionLeftMove;
|
||||
|
||||
} else {
|
||||
dateSlider("prev", flags, eventsOpts);
|
||||
lastMonthMove = '+=' + flags.directionLeftMove;
|
||||
}
|
||||
|
||||
flags.wrap.find('.eventCalendar-monthWrap.eventCalendar-oldMonth').animate({
|
||||
opacity: eventsOpts.moveOpacity,
|
||||
left: lastMonthMove
|
||||
}, eventsOpts.moveSpeed, function() {
|
||||
flags.wrap.find('.eventCalendar-monthWrap.eventCalendar-oldMonth').remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showError(msg, wrap) {
|
||||
wrap.find('.eventCalendar-list-wrap').html("<span class='eventCalendar-loading eventCalendar-error'>"+msg+"</span>");
|
||||
}
|
||||
|
||||
function setCalendarWidth(flags){
|
||||
// resize calendar width on window resize
|
||||
flags.directionLeftMove = flags.wrap.width();
|
||||
flags.wrap.find('.eventCalendar-monthWrap').width(flags.wrap.width() + 'px');
|
||||
|
||||
flags.wrap.find('.eventCalendar-list-wrap').width(flags.wrap.width() + 'px');
|
||||
|
||||
}
|
||||
|
||||
|
||||
})( jQuery );
|
||||
|
||||
13
js/jquery.eventCalendar.min.js
vendored
Normal file
13
js/jquery.eventCalendar.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2856
js/moment.js
Normal file
2856
js/moment.js
Normal file
File diff suppressed because it is too large
Load Diff
16
lang/bg.php
Normal file
16
lang/bg.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
$select_category = 'Изберете рубрика';
|
||||
$bad_post = 'Грешка в заявката ! ';
|
||||
$uca_locale = 'bg';
|
||||
$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";
|
||||
?>
|
||||
64
lang/bg.txt
Normal file
64
lang/bg.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
[name]
|
||||
MODULE_NAME = "Универсальный календарь событий"
|
||||
MODULE_DESCRIPTION = "<br>Модуль позволяет создавать различные календари событий. <br> Для вывода календаря используйте системный тег <strong>[mod_unicalendar:XXX]</strong>"
|
||||
|
||||
[admin]
|
||||
ModName = "Управление модул Unicalendar"
|
||||
ModTitle = "В този раздел е списъка на всички календари.<br> Както и да създадете нов календар."
|
||||
UCA_LIST = "Списък календари"
|
||||
UCA_NEW = "Създаване на нов календар"
|
||||
UCA_NO_ITEMS = "Не е създаден нито един календар."
|
||||
UCA_TITLE = "Наименование календар"
|
||||
UCA_EVENTS = "Събития в календара"
|
||||
UCA_EVENTS_SELECT = "Изберете типа на събитията в календара"
|
||||
UCA_EVENTS_SELECT_A = "Всички документи от избраната рубрика"
|
||||
UCA_EVENTS_SELECT_AC = "Избор на рубрика"
|
||||
UCA_EVENTS_SELECT_DOC = "Маркирай за избора"
|
||||
UCA_EVENTS_SELECT_B = "Избрани документи от дадената рубрика"
|
||||
UCA_EVENTS_SELECT_C = "Избрани документи без свързване с рубрика"
|
||||
UCA_BTN_CREATE = "Създаване"
|
||||
UCA_CP_TAG = "Таг в системата"
|
||||
UCA_COPY_BUFF = "Копирай тага в буфера"
|
||||
UCA_ACTIONS = "Действия"
|
||||
UCA_DELETE_UNICLN_A = "Сигурни ли сте, че желаете да изтриете този календар?"
|
||||
UCA_LIST_ALLDOC_RUB = "Извежда всички документи от рубриката"
|
||||
UCA_LIST_SELDOC_RUB = "Извежда всички документи от рубрика "
|
||||
UCA_TITLE_WARNING = "Не е попълнено поле Наименование на календар"
|
||||
UCA_EVENTS_WARNING = "Не са зададени събития за този календар..."
|
||||
UCA_SEL_RUB_WARNING = "Не е избрана рубрика!"
|
||||
UCA_SEL_DOC_WARNING = "Не е избран нито един документ!"
|
||||
UCA_SEL_EVENTS_WARNING = "Не е избран типа на събитията за календара!"
|
||||
UCA_OPEN_LIKS = "Събитията в календара се отварят в нов прозорец"
|
||||
UCA_YES = "Да"
|
||||
UCA_NO = "Не"
|
||||
UCA_WEEK_START = "Показва началото на седмицата в календара"
|
||||
UCA_WEEK_START_MONDAY = "От понеделник"
|
||||
UCA_WEEK_START_SUNDAY = "От неделя"
|
||||
UCA_SCROLL_BAR = "Включить полосу прокрутки в событиях"
|
||||
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 = "Марк./Разм. на всички чекбокса"
|
||||
UCA_RELEV = "Актуалност"
|
||||
UCA_ALERT_RELEV_YES = "Ок - данните на календара са актуални"
|
||||
UCA_ALERT_RELEV_BAD = "Внимание - събитията в календара не са актуални! В момента на създаването на календара броят на документите в рубриката са билиповече на брой, отколкото в момента - т.с календара съдържа събития водещи към страници с грешка 404! За да отстраните грешката запишете/редактирайте календара!<br> <strong style=\'color:orange\'>ОТЧЕТ:</strong><br>В рубриката :<br> "
|
||||
UCA_ALERT_RELEV_WAR = "Предупреждение - събитията в календара са неактуални! В момента на създаване на календара в рубриката е имало по-малко документи, отколкото в момента. За да актуализирате календара - направете минете през запис на календара."
|
||||
UCA_ALERT_RELEV_BAD_SD = "Внимание - събитията в календара не са актуални! В момента на създаването на календара са били избрани документи, които в текущия момент не съществуват в рубриката - т.с календара съдържа събития, водещи към страница с грешка 404! За да отстраните - съхранете/редактирайте календара! <br> <strong style=\'color:orange\'>ОТЧЕТ:</strong><br>В рубрика :<br> "
|
||||
UCA_ALERT_RELEV_BAD_SE = "<strong style=\'color:orange\'>,</strong><br> документ(и) с <br><strong style=\'color:orange\'>Id = </strong>"
|
||||
UCA_ALERT_RELEV_BAD_SF = "<strong style=\'color:orange\'> не е открит(и) !</strong>"
|
||||
4
lang/index.php
Normal file
4
lang/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
16
lang/ru.php
Normal file
16
lang/ru.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
$select_category = 'Выбрать рубрику';
|
||||
$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";
|
||||
?>
|
||||
82
lang/ru.txt
Normal file
82
lang/ru.txt
Normal file
@@ -0,0 +1,82 @@
|
||||
[name]
|
||||
MODULE_NAME = "Универсальный календарь событий"
|
||||
MODULE_DESCRIPTION = "<br>Модуль позволяет создавать различные календари событий. <br> Для вывода календаря используйте системный тег <strong>[mod_unicalendar:XXX]</strong>"
|
||||
|
||||
[admin]
|
||||
ModName = "Управление модулем Unicalendar"
|
||||
ModTitle = "В данном разделе находится список всех календарей.<br> Так же, вы можете создать новый календарь.<br><strong style='color:red'> Внимание! </strong><br>Вы не можете создать календарь, если рубрика содержит:<br> a) только два документа - Главная и Ошибка 404 <br> b) только один документ: или Главная или Ошибка 404 <br> В остальных случаях документы <strong style='color:#177BBB'>Главная страница </strong>и <strong style='color:#177BBB'>Ошибка 404 </strong>не будут выводиться при создании календарей."
|
||||
UCA_LIST = "Список календарей"
|
||||
UCA_NEW = "Создать новый календарь"
|
||||
UCA_NO_ITEMS = "В настоящий момент не существует ни одного календаря."
|
||||
UCA_TITLE = "Название календаря"
|
||||
UCA_EVENTS = "События календаря"
|
||||
UCA_EVENTS_SELECT = "Выберите тип событий календаря"
|
||||
UCA_EVENTS_SELECT_A = "Все документы из заданной рубрики"
|
||||
UCA_EVENTS_SELECT_AC = "Выбор рубрики"
|
||||
UCA_EVENTS_SELECT_DOC = "Отметить для выбора"
|
||||
UCA_EVENTS_SELECT_B = "Выбранные документы из заданной рубрики"
|
||||
UCA_EVENTS_SELECT_C = "Выбранные документы без привязки к рубрикам"
|
||||
UCA_BTN_CREATE = "Создать"
|
||||
UCA_CP_TAG = "Тег в системе"
|
||||
UCA_COPY_BUFF = "Скопировать тег в буфер обмена"
|
||||
UCA_ACTIONS = "Действия"
|
||||
UCA_DELETE_UNICLN_A = "Вы уверены, что хотите удалить этот календарь?"
|
||||
UCA_LIST_ALLDOC_RUB = "Выводит все документы из рубрики "
|
||||
UCA_LIST_SELDOC_RUB = "Выводит выбранные документы из рубрики "
|
||||
UCA_TITLE_WARNING = "Не заполнено поле Название календаря"
|
||||
UCA_EVENTS_WARNING = "События для этого календаря не заданы..."
|
||||
UCA_SEL_RUB_WARNING = "Не выбрана рубрика!"
|
||||
UCA_SEL_RUB_ID_DOC = "Вы не можете создать календарь из рубрики, которая либо содержит только два документа: Главная и Ошибка 404, либо только один документ: или Главная или Ошибка 404"
|
||||
UCA_SEL_DOC_WARNING = "Не выбран ни один документ!"
|
||||
UCA_SEL_EVENTS_WARNING = "Не выбран тип событий календаря!"
|
||||
UCA_PUBLIC_DATE = "Формат даты публичной части календаря"
|
||||
UCA_OPEN_LIKS = "Открывать ссылки событий календаря в новом окне"
|
||||
UCA_YES = "Да"
|
||||
UCA_NO = "Нет"
|
||||
UCA_WEEK_START = "Отображать начало недели в календаре"
|
||||
UCA_WEEK_START_MONDAY = "С понедельника"
|
||||
UCA_WEEK_START_SUNDAY = "С воскресенья"
|
||||
UCA_SCROLL_BAR = "Включить полосу прокрутки в событиях"
|
||||
UCA_DESCRIPTION = "Раскрывать содержимое всех событий сразу после загрузки"
|
||||
UCA_EVENTS_LIMIT = "Лимит вывода событий при перелистывании месяцев"
|
||||
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_DATE_EXPIRE = "Дата истечения"
|
||||
UCA_SELECT_ALL_INF = "<span style=\'margin-right:14px;\'>Выбрать все</span>"
|
||||
UCA_SELECT_ALL_INF_CH = "<span class=\'code\'>± чекбоксы</span>"
|
||||
UCA_RELEV = "Актуальность"
|
||||
UCA_ALERT_RELEV_YES = "Ок - данные календаря актуальны"
|
||||
UCA_ALERT_RELEV_BAD = "Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент, это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!<br> <strong style=\'color:orange\'>ОТЧЕТ:</strong><br>В рубрике :<br> "
|
||||
UCA_ALERT_RELEV_WAR = "Предупреждение - события в календаре неактуальны! На момент создания календаря документов в рубрике было меньше, чем на текущий момент. Для устранения - пересохраните календарь."
|
||||
UCA_ALERT_RELEV_BAD_SD = "Внимание - события в календаре неактуальны! На момент создания календаря был(и) выбран(ы) документ(ы), которые(ых) на текущий момент не существует в рубрике. Это приводит к тому, что календарь содержит события, ведущие на страницу с ошибкой 404! Для устранения - пересохраните/отредактируйте календарь!<br> <strong style=\'color:orange\'>ОТЧЕТ:</strong><br>В рубрике :<br> "
|
||||
UCA_ALERT_RELEV_BAD_SE = "<strong style=\'color:orange\'>,</strong><br> документ(ы) с <br><strong style=\'color:orange\'>Id = </strong>"
|
||||
UCA_ALERT_RELEV_BAD_SF = "<strong style=\'color:orange\'> не найден(ы) !</strong>"
|
||||
UCA_SEL_FIELD_BTN = "Выбрать"
|
||||
UCA_SEL_FIELD_DATA_INF = "Выбор полей для создания тизера события"
|
||||
UCA_SEL_FIELD_DATA_TTL = "Название события"
|
||||
UCA_SEL_FIELD_TTL = "Аналогично названию документа (тег < title >)"
|
||||
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> Изображение (Одиночное)\'> </span>"
|
||||
UCA_SEL_FIELD_IMG = "Выбрать поле"
|
||||
UCA_SEL_FIELD_DATA_DSC = "<span style=\'float: left; margin-right: 5px;\'>Описание события</span><span style=\'cursor: help; float: left;\' class=\'toprightDir icon_sprite ico_info\' title=\'Используйте текстовые поля.<br> Предупреждение:<br>Все HTML теги (если они присутствуют в поле) будут вырезаны (естественно только в календаре), в тизере будет выведено не более 255 символов.\'> </span>"
|
||||
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сли вы не планируете указывать место, оставьте это значение пустым (не выбирайте никакого поля).\'> </span>"
|
||||
UCA_SEL_FIELD_PLC = "Выбрать поле"
|
||||
UCA_SEL_FIELD_DATA_STR = "Начало события"
|
||||
UCA_SEL_FIELD_DATA_END = "Завершение события"
|
||||
UCA_SEL_FIELD_SDOC = "Задано документом"
|
||||
79
module.php
Normal file
79
module.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* AVE.cms - Модуль Универсальный календарь событий
|
||||
*
|
||||
* @autor Repellent
|
||||
* @package AVE.cms
|
||||
* @subpackage module_unicalendar
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
if(!defined('BASE_DIR')) exit;
|
||||
|
||||
/**
|
||||
* Публичная часть - вывод календаря
|
||||
*
|
||||
* @param string $id идентификатор календаря
|
||||
*/
|
||||
|
||||
function mod_unicalendar($id)
|
||||
{
|
||||
global $AVE_Template;
|
||||
|
||||
require_once(BASE_DIR . '/modules/unicalendar/class/unicalendar.php');
|
||||
$unicalendar = new Unicalendar;
|
||||
|
||||
// папка с шаблонами
|
||||
$tpl_dir = BASE_DIR . '/modules/unicalendar/templates/';
|
||||
|
||||
// ленги
|
||||
$lang_file = BASE_DIR . '/modules/unicalendar/lang/' . $_SESSION['user_language'] . '.txt';
|
||||
|
||||
$AVE_Template->config_load($lang_file);
|
||||
|
||||
$unicalendar->unicalendarShow($tpl_dir, $id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Админка
|
||||
*/
|
||||
|
||||
if (defined('ACP') && (isset($_REQUEST['moduleaction'])))
|
||||
{
|
||||
// класс
|
||||
require_once(BASE_DIR . '/modules/unicalendar/class/unicalendar.php');
|
||||
$unicalendar = new Unicalendar;
|
||||
|
||||
// папка с шаблонами
|
||||
$tpl_dir = BASE_DIR . '/modules/unicalendar/templates/';
|
||||
|
||||
// ленги
|
||||
$AVE_Template->config_load(BASE_DIR . '/modules/unicalendar/lang/' . $_SESSION['admin_language'] . '.txt', 'admin');
|
||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
|
||||
|
||||
switch($_REQUEST['moduleaction'])
|
||||
{
|
||||
case '1': // Просмотр списка календарей
|
||||
$unicalendar->unicalendarList($tpl_dir);
|
||||
break;
|
||||
case 'new': // Создать новый календарь
|
||||
$unicalendar->unicalendarNew();
|
||||
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': // Удаление календаря
|
||||
$unicalendar->unicalendarDelete(intval($_REQUEST['id']));
|
||||
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');
|
||||
|
||||
?>
|
||||
90
sql.php
Normal file
90
sql.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* AVE.cms - Универсальный календарь событий.
|
||||
*
|
||||
* @autor Repellent
|
||||
* @package AVE.cms
|
||||
* @subpackage module_unicalendar
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
/**
|
||||
* mySQL-запросы для установки, обновления и удаления модуля
|
||||
*/
|
||||
$module_sql_install = array();
|
||||
$module_sql_deinstall = array();
|
||||
$module_sql_update = array();
|
||||
|
||||
//Удаление модуля
|
||||
$module_sql_deinstall[] = "DROP TABLE IF EXISTS `%%PRFX%%_module_unicalendar`";
|
||||
|
||||
//Установка модуля
|
||||
$module_sql_install[] = "CREATE TABLE `%%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_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;
|
||||
";
|
||||
// Обновление таблицы в версии модуля 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`
|
||||
";
|
||||
|
||||
?>
|
||||
584
templates/admin_unicalendar_edit.tpl
Normal file
584
templates/admin_unicalendar_edit.tpl
Normal file
@@ -0,0 +1,584 @@
|
||||
<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&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> <span class="cmsStats">{$unicalendars.id}</span> <span class="doclink">{#UCA_EVENTS#} = </span> <span class="cmsStats">{if $unicalendars.uca_events == 1}{#UCA_LIST_ALLDOC_RUB#} <i id="title_rub"> {$unicalendars.uca_rubric_title|escape}</i>{elseif $unicalendars.uca_events == 2}{#UCA_LIST_SELDOC_RUB#} <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_PUBLIC_DATE#}</td>
|
||||
<td>
|
||||
<input name="uca_date_format" type="hidden" id="uca_date_format" value="{$unicalendars.uca_date_format|escape}"/>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD MMM YYYY" {if $unicalendars.uca_date_format == 'dddd, DD MMM YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD-MM-YYYY" {if $unicalendars.uca_date_format == 'dddd, DD-MM-YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, YYYY-MM-DD" {if $unicalendars.uca_date_format == 'dddd, YYYY-MM-DD'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %Y-%m-%d'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD MMM YYYY" {if $unicalendars.uca_date_format == 'DD MMM YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD-MM-YYYY" {if $unicalendars.uca_date_format == 'DD-MM-YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="YYYY-MM-DD" {if $unicalendars.uca_date_format == 'YYYY-MM-DD'} checked="checked" {/if}>
|
||||
<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}"/>
|
||||
<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">{#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}'>
|
||||
<span>{#UCA_LIST_ALLDOC_RUB#} <span class="cmsStats">{$unicalendars.uca_rubric_title|escape}</span>
|
||||
<a class="btn redBtn" href="javascript:void(0);" onclick="ucaCangeRub();">{#UCA_CHANGE_RUBRIC#}</a></span>
|
||||
</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>
|
||||
<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_PUBLIC_DATE#}</td>
|
||||
<td>
|
||||
<input name="uca_date_format" type="hidden" id="uca_date_format" value="{$unicalendars.uca_date_format|escape}"/>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD MMM YYYY" {if $unicalendars.uca_date_format == 'dddd, DD MMM YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD-MM-YYYY" {if $unicalendars.uca_date_format == 'dddd, DD-MM-YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, YYYY-MM-DD" {if $unicalendars.uca_date_format == 'dddd, YYYY-MM-DD'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %Y-%m-%d'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD MMM YYYY" {if $unicalendars.uca_date_format == 'DD MMM YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD-MM-YYYY" {if $unicalendars.uca_date_format == 'DD-MM-YYYY'} checked="checked" {/if}>
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="YYYY-MM-DD" {if $unicalendars.uca_date_format == 'YYYY-MM-DD'} checked="checked" {/if}>
|
||||
<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}"/>
|
||||
<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">{#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}'>
|
||||
<span>{#UCA_LIST_SELDOC_RUB#} <span class="cmsStats">{$unicalendars.uca_rubric_title|escape}</span>
|
||||
{*<a class="btn redBtn" href="javascript:void(0);" onclick="ucaCangeRub();">{#UCA_CHANGE_RUBRIC#}</a></span>*}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="uca_rub_after_fields"></div>
|
||||
|
||||
|
||||
<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">{#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">
|
||||
<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>
|
||||
<td align='center'>{$unidocs.document_expire|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>
|
||||
<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>
|
||||
{if $unicalendars.uca_events == 1 || $unicalendars.uca_events == 2}// START Если событиями календаря являются все доки из рубрики или выбранные доки из рубрики
|
||||
|
||||
var uca_frub_id = '';
|
||||
$('#i_uca_img_field').val('');
|
||||
$('#i_uca_dsc_field').val('');
|
||||
$('#i_uca_place_field').val('');
|
||||
var uca_img_field = ''; // создаем переменную
|
||||
var i_uca_img_field = ''; // создаем переменную
|
||||
var uca_dsc_field = ''; // создаем переменную
|
||||
var i_uca_dsc_field = ''; // создаем переменную
|
||||
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_frub_id = $('#uca_rubric_id').val();
|
||||
ucaRubFieldsEditAll();
|
||||
|
||||
$('#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);
|
||||
{rdelim}); // END если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
|
||||
|
||||
$('#uca_dsc_field').change(function(){ldelim} // START если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
uca_dsc_field = $('#uca_dsc_field').val();
|
||||
i_uca_dsc_field = $('#i_uca_dsc_field').val(uca_dsc_field);
|
||||
{rdelim}); // END если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
|
||||
$('#uca_place_field').change(function(){ldelim} // START если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
uca_place_field = $('#uca_place_field').val();
|
||||
i_uca_place_field = $('#i_uca_place_field').val(uca_place_field);
|
||||
{rdelim}); // END если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
|
||||
{/if}// END Если событиями календаря являются все доки из рубрики
|
||||
|
||||
{if $unicalendars.uca_events == 2}// START Если событиями календаря являются выбранные доки из рубрики
|
||||
// START получаем данные активных чекбоксов-документов
|
||||
{foreach from=$check_docs item=check_docs}
|
||||
$("#inp_doc_{$check_docs.Id}").attr('checked', 'checked' );// активируем чекбоксы в списке документов
|
||||
{/foreach}
|
||||
// END получаем данные активных чекбоксов-документов
|
||||
|
||||
// START пишем значение активных чекбоксов в input, т.к. календарь мог стать не актуальным с момента его создания до момента редактирования
|
||||
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=')+" ");
|
||||
// END пишем значение активных чекбоксов в input, т.к. календарь мог стать не актуальным с момента его создания до момента редактирования
|
||||
|
||||
// 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 CHECK - отмечаем - снимаем чекбоксы документов по одному и пишем в 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 значение
|
||||
{/if}// END Если событиями календаря являются выбранные доки из рубрики
|
||||
|
||||
|
||||
|
||||
// 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}
|
||||
$('#uca_events_limit').val('');
|
||||
{rdelim});// END обнуляем значение value у input Лимит вывода событий при событии focus
|
||||
|
||||
// START получаем значение радиокнопки формат даты и пишем в input значение
|
||||
$(".u_date_format").on('change', function() {ldelim}
|
||||
$('#uca_date_format').val('');
|
||||
var u_date_format = $('input[name="u_date_format"]:checked').val();
|
||||
$('#uca_date_format').val(u_date_format);
|
||||
{rdelim});// END получаем значение радиокнопки формат даты и пишем в input значение
|
||||
|
||||
// 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 получаем значение радиокнопки Раскрывать содержимое всех событий сразу после загрузки
|
||||
|
||||
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 запрос при клике по кнопке Сменить рубрику
|
||||
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=''><span style='position:relative; top:2px; padding-right:6px;'>{#UCA_LIST_ALLDOC_RUB#}</span><select name='uca_result' id='uca_result' style='width: 300px;'>"+data+"</select>");
|
||||
$('#uca_rub_after_fields').html('');
|
||||
$('select').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});
|
||||
{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('');
|
||||
$('#uca_rub_after_fields').html('');
|
||||
|
||||
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);
|
||||
{if $unicalendars.uca_events == 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_frub_id = $('#uca_rubric_id').val();
|
||||
ucaRubFields();
|
||||
$('#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);
|
||||
{rdelim}); // END если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
|
||||
|
||||
$('#uca_dsc_field').change(function(){ldelim} // START если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
uca_dsc_field = $('#uca_dsc_field').val();
|
||||
i_uca_dsc_field = $('#i_uca_dsc_field').val(uca_dsc_field);
|
||||
{rdelim}); // END если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
|
||||
$('#uca_place_field').change(function(){ldelim} // START если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
uca_place_field = $('#uca_place_field').val();
|
||||
i_uca_place_field = $('#i_uca_place_field').val(uca_place_field);
|
||||
{rdelim}); // END если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
{rdelim} else {ldelim}
|
||||
uca_res_new_rub = '';
|
||||
$('#uca_rub_after_fields').html('');
|
||||
{rdelim};
|
||||
{/if}
|
||||
{rdelim}); // END если был выполнен 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 запрос вывести все поля рубрики
|
||||
|
||||
// START Если произошло событие клик на кнопке Сохранить изменения - отправляем AJAX запрос и пишем в БД данные
|
||||
$("#btn_save_edit").on('click', function() {ldelim}
|
||||
var uca_events = $('#uca_events').val();
|
||||
var uca_title = $('#uca_title').val();
|
||||
var uca_date_format = $('#uca_date_format').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_events_limit = $('#uca_events_limit').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 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 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_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}
|
||||
$('#ed_title').html(uca_title);
|
||||
$('#title_rub').html(' '+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>
|
||||
636
templates/admin_unicalendar_list.tpl
Normal file
636
templates/admin_unicalendar_list.tpl
Normal file
@@ -0,0 +1,636 @@
|
||||
<div class="title"><h5>{#ModName#}</h5></div>
|
||||
<div class="widget" style="margin-top: 0px;">
|
||||
<div class="body">
|
||||
<ul>
|
||||
<li>{#ModTitle#}</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&cp={$sess}">{#MODULES_SUB_TITLE#}</a></li>
|
||||
<li><strong class="code">{#ModName#}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{if $page_nav}
|
||||
<div class="pagination">
|
||||
<ul class="pages">
|
||||
{$page_nav}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="widget first">
|
||||
<ul class="tabs">
|
||||
<li class="activeTab"><a href="#tab1">{#UCA_LIST#}</a></li>
|
||||
<li class=""><a href="#tab2">{#UCA_NEW#}</a></li>
|
||||
</ul>
|
||||
<div class="tab_container">
|
||||
<div id="tab1" class="tab_content" style="display: block;">
|
||||
<form action="" method="post" class="mainForm">
|
||||
<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic settings">
|
||||
<colgroup>
|
||||
<col width="1">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="100">
|
||||
<col width="184">
|
||||
<col width="1">
|
||||
<col width="1">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="noborder">
|
||||
<td>Id</td>
|
||||
<td>{#UCA_TITLE#}</td>
|
||||
<td>{#UCA_EVENTS#}</td>
|
||||
<td>{#UCA_RELEV#}</td>
|
||||
<td>{#UCA_CP_TAG#}</td>
|
||||
<td colspan="3">{#UCA_ACTIONS#}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<form action="" method="post" class="mainForm">
|
||||
{foreach from=$unicalendars item=unicalendar}
|
||||
<tr>
|
||||
<td align="center">
|
||||
<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>
|
||||
</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#} <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#} <i>{$unicalendar.uca_rubric_title|escape}</i></a>
|
||||
{else}<strong>{#UCA_EVENTS_WARNING#}</strong>
|
||||
{/if}
|
||||
</div>
|
||||
</td>
|
||||
<td align="center">
|
||||
{* <input type="hidden" name="uca_count_js_{$unicalendar.id}" id="uca_count_js_{$unicalendar.id}" value="" />
|
||||
<input type="hidden" name="uca_count_real_{$unicalendar.id}" id="uca_count_real_{$unicalendar.id}" value="" /> *}
|
||||
<div id="count_wrap_{$unicalendar.id}" class="toprightDir" style="" title=""></div>
|
||||
</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">
|
||||
<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 align="center">
|
||||
<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>
|
||||
</tr>
|
||||
<script type="text/javascript">
|
||||
// START ПРОВЕРКА АКТУАЛЬНОСТИ ДАННЫХ В КАЛЕНДАРЯХ
|
||||
$.ajax({ldelim}
|
||||
type: 'POST',
|
||||
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
|
||||
async: true,
|
||||
data: {ldelim}check_rel:'check_rel', tstamp: new Date().getTime(), r_id:'{$unicalendar.uca_rubric_id}', udoc_id:'AND {$unicalendar.uca_doc_id}'{rdelim},
|
||||
success: function(data) {ldelim}
|
||||
var old_array = '';// объявляем переменную
|
||||
var uca_trim_id = 'Id=';// объявляем переменную и пишем в нее значение
|
||||
var uca_trim_or = ' OR ';// объявляем переменную и пишем в нее значение
|
||||
var uca_trim_br = ' ';// объявляем переменную и пишем в нее значение
|
||||
var count_old_array = '';// объявляем переменную
|
||||
var count_new_array = '';// объявляем переменную
|
||||
|
||||
old_array1 = str_replace(uca_trim_id, '', '{$unicalendar.uca_doc_id}'); // вырезаем из строки Id=
|
||||
old_array2 = str_replace(uca_trim_or, ',', old_array1);// вырезаем из строки OR
|
||||
old_array3 = str_replace(uca_trim_br, '', old_array2);// вырезаем из строки пробелы
|
||||
old_array = old_array3.split(',');// создаем массив из данных календаря
|
||||
var new_array = data.split(',');// создаем массив из данных пришедших из БД по запросу "актуальность календарей"
|
||||
var diff = $(old_array).not(new_array).get(); // сравниваем массивы и записываем в переменную ОТСУТСТВУЮЩИЕ Id документов, которые содержит календарь
|
||||
count_old_array = old_array.length;// количество элементов в массиве при создании календаря
|
||||
count_new_array = new_array.length;// количество элементов в массиве в текущий момент
|
||||
if (count_old_array == count_new_array && diff == '' {if $unicalendar.uca_events == 2} || count_old_array < count_new_array && diff == '' {/if})// если условие истинно - календарь актуален
|
||||
{ldelim}
|
||||
$('#count_wrap_{$unicalendar.id}').prop('style', 'width:18px;height:18px;background:green;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;');
|
||||
$('#count_wrap_{$unicalendar.id}').prop('title', '{#UCA_ALERT_RELEV_YES#}');// выводим подсказку - Ок - данные календаря актуальны
|
||||
{rdelim}
|
||||
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}
|
||||
{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#}');// выводим подсказку - Внимание - события в календаре неактуальны! На момент создания календаря документов в рубрике было больше, чем на текущий момент...
|
||||
{rdelim};
|
||||
{/if}// завершение условий проверки
|
||||
{rdelim},
|
||||
error: function(xhr, str){ldelim}
|
||||
$.jGrowl("{#SaveError#}", {ldelim}
|
||||
header: '{#SentData#}',
|
||||
theme: 'error'
|
||||
{rdelim});
|
||||
{rdelim}
|
||||
{rdelim}); // END ПРОВЕРКА АКТУАЛЬНОСТИ ДАННЫХ В КАЛЕНДАРЯХ
|
||||
</script>
|
||||
{/foreach}
|
||||
{if !$unicalendars}
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow">{#UCA_NO_ITEMS#}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</form>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div id="tab2" class="tab_content" style="display: none;">
|
||||
<form id="add_unicalendar" name="add_unicalendar" class="mainForm">
|
||||
<table id="tr_uca" cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm">
|
||||
<tr class="noborder">
|
||||
<td width="180">{#UCA_TITLE#}</td>
|
||||
<td>
|
||||
<input placeholder="{#UCA_TITLE#}" name="uca_title" type="text" id="uca_title" value="" style="width:300px" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="noborder">
|
||||
<td width="180">{#UCA_PUBLIC_DATE#}</td>
|
||||
<td>
|
||||
<input name="uca_date_format" type="hidden" id="uca_date_format" value="dddd, DD MMM YYYY"/>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD MMM YYYY" checked="checked">
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, DD-MM-YYYY">
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="dddd, YYYY-MM-DD">
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%A, %Y-%m-%d'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD MMM YYYY">
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d %B %Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="DD-MM-YYYY">
|
||||
<label class="code" style="background: #fff; margin-right: 5px; margin-left: 5px;" for="">{$smarty.now|date_format:'%d-%m-%Y'|pretty_date}</label>
|
||||
<input type="radio" name="u_date_format" class="u_date_format" value="YYYY-MM-DD">
|
||||
<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="true"/>
|
||||
<input type="radio" name="u_link" class="u_link" value="true" checked="checked">
|
||||
<label for="">{#UCA_YES#}</label>
|
||||
<input type="radio" name="u_link" class="u_link" value="false">
|
||||
<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="true"/>
|
||||
<input type="radio" name="u_day" class="u_day" value="true" checked="checked">
|
||||
<label for="">{#UCA_WEEK_START_MONDAY#}</label>
|
||||
<input type="radio" name="u_day" class="u_day" value="false">
|
||||
<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="false"/>
|
||||
<input type="radio" name="u_scroll" class="u_scroll" value="true">
|
||||
<label for="">{#UCA_YES#}</label>
|
||||
<input type="radio" name="u_scroll" class="u_scroll" value="false" checked="checked">
|
||||
<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="false"/>
|
||||
<input type="radio" name="u_descript" class="u_descript" value="true">
|
||||
<label for="">{#UCA_YES#}</label>
|
||||
<input type="radio" name="u_descript" class="u_descript" value="false" checked="checked">
|
||||
<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="5" style="width:32px"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="noborder">
|
||||
<td width="180">{#UCA_EVENTS#}</td>
|
||||
<td>
|
||||
<input type="hidden" name="uca_doc_id" id="uca_doc_id" value="" />
|
||||
<input type="hidden" name="uca_events" id="uca_events" value="" />
|
||||
<select name="uca_events_sel" id="uca_events_sel" style="width: 300px;">
|
||||
<option style="color: #ABABAB;" value="" >{#UCA_EVENTS_SELECT#}</option>
|
||||
<option value="1">{#UCA_EVENTS_SELECT_A#}</option>
|
||||
<option value="2">{#UCA_EVENTS_SELECT_B#}</option>
|
||||
{* <option value="3">{#UCA_EVENTS_SELECT_C#}</option> *}
|
||||
</select>
|
||||
</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_ucasub" class="btn blueBtn" href="javascript:void(0);">{#UCA_BTN_CREATE#}</a>
|
||||
<input name="i_block_create_calendar" type="hidden" id="i_block_create_calendar" value="0"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
{if $page_nav}
|
||||
<div class="pagination">
|
||||
<ul class="pages">
|
||||
{$page_nav}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<script>
|
||||
$('uca_events_sel').styler({ldelim}selectSearch:false, selectVisibleOptions:5{rdelim});// стилизуем селект выбора событий календаря
|
||||
// START обнуляем значение value у input Лимит вывода событий при событии focus
|
||||
$('#uca_events_limit').focus(function(){ldelim}
|
||||
$('#uca_events_limit').val('');
|
||||
{rdelim});// END обнуляем значение value у input Лимит вывода событий при событии focus
|
||||
|
||||
// START Получаем значениe value выбранного option - События календаря
|
||||
$('#uca_events_sel').change(function(){ldelim}
|
||||
$('#uca_events').val('');
|
||||
$('#tr_uca_res' ).remove();
|
||||
$('#tr_uca_res_doc').remove();
|
||||
$('#tr_uca_data').remove();
|
||||
var uca_request = '';
|
||||
var uca_events = $("#uca_events_sel option:selected").val();
|
||||
|
||||
// Если значение value не пустое и выбран тип события "Все документы из заданной рубрики", подставляем значение value в input,
|
||||
// создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу.
|
||||
if (uca_events !='' && uca_events == '1' ){ldelim}
|
||||
$('#uca_rubric_id').val('');
|
||||
$('#uca_rubric_title').val('');
|
||||
$('#uca_events').val(uca_events);
|
||||
$('#tr_uca').after('<table cellpadding="0" cellspacing="0" width="100%" class="tableStatic mainForm" id="uca_after_fields"><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;
|
||||
ucaCall();
|
||||
$('#uca_result').change(function(){ldelim}
|
||||
$('#uca_rubric_id').val('');
|
||||
$('#uca_rubric_title').val('');
|
||||
$('#uca_inp_res').val('');
|
||||
$('#uca_inptxt_res').val('');
|
||||
$('#tr_uca_data').remove();
|
||||
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);
|
||||
|
||||
|
||||
// START выбора полей в рубрике для вывода данных для изображения, описания, места проведения
|
||||
var uca_id_sel_rub = ''; // создаем переменную
|
||||
var uca_title_sel_rub = ''; // создаем переменную
|
||||
var uca_img_field = ''; // создаем переменную
|
||||
var i_uca_img_field = ''; // создаем переменную
|
||||
var uca_dsc_field = ''; // создаем переменную
|
||||
var i_uca_dsc_field = ''; // создаем переменную
|
||||
var uca_place_field = ''; // создаем переменную
|
||||
var i_uca_place_field = ''; // создаем переменную
|
||||
$('#i_uca_img_field').val(''); // очищаем input
|
||||
$('#i_uca_dsc_field').val(''); // очищаем input
|
||||
$('#i_uca_place_field').val(''); // очищаем input
|
||||
uca_id_sel_rub = $('#uca_rubric_id').val();// пишем в переменную Id выбранной рубрики
|
||||
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_frub_id = $('#uca_rubric_id').val();
|
||||
ucaRubFields();
|
||||
$('#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);
|
||||
{rdelim}); // END если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
|
||||
|
||||
$('#uca_dsc_field').change(function(){ldelim} // START если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
uca_dsc_field = $('#uca_dsc_field').val();
|
||||
i_uca_dsc_field = $('#i_uca_dsc_field').val(uca_dsc_field);
|
||||
{rdelim}); // END если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
|
||||
$('#uca_place_field').change(function(){ldelim} // START если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
uca_place_field = $('#uca_place_field').val();
|
||||
i_uca_place_field = $('#i_uca_place_field').val(uca_place_field);
|
||||
{rdelim}); // END если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
|
||||
{rdelim};// END выбора полей в рубрике для вывода данных для изображения, описания, места проведения
|
||||
|
||||
|
||||
{rdelim});
|
||||
{rdelim}// END Если значение value не пустое и выбран тип события "Все документы из заданной рубрики"...
|
||||
|
||||
// Если значение value не пустое и выбран тип события "Выбранные документы из заданной рубрики", подставляем значение value в input,
|
||||
// создаем таблицу, отправляем AJAX запрос и пишем данные в эту таблицу.
|
||||
if (uca_events !='' && uca_events == '2' ){ldelim}
|
||||
$('#tr_uca_data').remove();
|
||||
$('#uca_rubric_id').val('');
|
||||
$('#uca_rubric_title').val('');
|
||||
$('#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_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;
|
||||
ucaCall();
|
||||
$('#uca_result').change(function(){ldelim}
|
||||
var val_rub = $('#uca_result').val();
|
||||
$('#tr_uca_data').remove();
|
||||
$('#tr_uca_res_doc').remove();
|
||||
$('#uca_rubric_id').val('');
|
||||
$('#uca_rubric_title').val('');
|
||||
$('#uca_inp_res').val('');
|
||||
$('#uca_inptxt_res').val('');
|
||||
$('#uca_doc_id').val('');
|
||||
var uca_img_field = ''; // создаем переменную
|
||||
var i_uca_img_field = ''; // создаем переменную
|
||||
var uca_dsc_field = ''; // создаем переменную
|
||||
var i_uca_dsc_field = ''; // создаем переменную
|
||||
var uca_place_field = ''; // создаем переменную
|
||||
var i_uca_place_field = ''; // создаем переменную
|
||||
$('#i_uca_img_field').val(''); // очищаем input
|
||||
$('#i_uca_dsc_field').val(''); // очищаем input
|
||||
$('#i_uca_place_field').val(''); // очищаем input
|
||||
var post_doc = '';
|
||||
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"> {#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>');
|
||||
$('#uca_rubric_id').val(uca_inp_res);
|
||||
$('#uca_rubric_title').val(uca_inptxt_res);
|
||||
uca_doc_request = uca_inp_res;
|
||||
ucaDoc();
|
||||
|
||||
uca_frub_id = $('#uca_rubric_id').val();
|
||||
ucaRubFields();
|
||||
$('#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);
|
||||
{rdelim}); // END если есть действия с селектом "Изображение - выбор поля" пишем ID выбранного в скрытый input id="i_uca_img_field"
|
||||
|
||||
$('#uca_dsc_field').change(function(){ldelim} // START если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
uca_dsc_field = $('#uca_dsc_field').val();
|
||||
i_uca_dsc_field = $('#i_uca_dsc_field').val(uca_dsc_field);
|
||||
{rdelim}); // END если есть действия с селектом "Описание события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_dsc_field"
|
||||
|
||||
$('#uca_place_field').change(function(){ldelim} // START если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
uca_place_field = $('#uca_place_field').val();
|
||||
i_uca_place_field = $('#i_uca_place_field').val(uca_place_field);
|
||||
{rdelim}); // END если есть действия с селектом "Место события - выбор поля" пишем ID выбранного в скрытый input id="i_uca_place_field"
|
||||
//alert(uca_frub_id);
|
||||
{rdelim};
|
||||
{rdelim});
|
||||
{rdelim}// END Если значение value не пустое и выбран тип события "Выбранные документы из заданной рубрики"...
|
||||
|
||||
// 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 запрос вывести все поля рубрики
|
||||
|
||||
// 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 запрос по типу выбранного события - "Все документы из заданной рубрики"
|
||||
|
||||
// START AJAX запрос получаем список документов из выбранной рубрики
|
||||
function ucaDoc() {ldelim}
|
||||
$.ajax({ldelim}
|
||||
type: 'POST',
|
||||
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
|
||||
async: true,
|
||||
data: {ldelim}a:'post_doc',b:uca_doc_request{rdelim},
|
||||
success: function(data) {ldelim}
|
||||
$("#result_doc").after(data);
|
||||
{rdelim},
|
||||
error: function(xhr, str){ldelim}
|
||||
$.jGrowl("{#SaveError#}", {ldelim}
|
||||
header: '{#SentData#}',
|
||||
theme: 'error'
|
||||
{rdelim});
|
||||
{rdelim}
|
||||
{rdelim});
|
||||
{rdelim}; // END AJAX запрос получаем список документов из выбранной рубрики
|
||||
|
||||
{rdelim}); // END Получаем значениe value выбранного option - События календаря
|
||||
|
||||
// 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}
|
||||
$( document ).on('click change', "input:checkbox.my-checkbox", function() {ldelim}
|
||||
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 получаем значение радиокнопки формат даты и пишем в input значение
|
||||
$(".u_date_format").on('change', function() {ldelim}
|
||||
$('#uca_date_format').val('');
|
||||
var u_date_format = $('input[name="u_date_format"]:checked').val();
|
||||
$('#uca_date_format').val(u_date_format);
|
||||
{rdelim});// END получаем значение радиокнопки формат даты и пишем в input значение
|
||||
|
||||
// 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 получаем значение радиокнопки Раскрывать содержимое всех событий сразу после загрузки
|
||||
|
||||
// Если произошло событие на кнопке "Добавить" - записываем в БД
|
||||
$("#btn_ucasub").on('click', function() {ldelim}
|
||||
var msg = $('#add_unicalendar').serialize();
|
||||
var check_fields_title = $('#uca_title').val();
|
||||
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();
|
||||
$('#i_block_create_calendar').val('0');
|
||||
if (check_fields_events == '1' && check_fields_rubric_id !='') // START проверяем и запрещаем создавать календарь, если рубрика содержит только один или два документа, Id которых равны либо главной странице либо странице 404 , либо и то и другое.
|
||||
{ldelim}
|
||||
|
||||
$.ajax({ldelim}// START если условия выше соответствуют - делаем ajax запрос
|
||||
type: 'POST',
|
||||
url: 'index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=events_new&cp={$sess}',
|
||||
async: false,
|
||||
data: {ldelim}allowed_rub:'allowed_rub',allowed_rub_id:check_fields_rubric_id{rdelim},
|
||||
success: function(data) {ldelim}
|
||||
var f_block_create_calendar = '0';//создаем переменную
|
||||
var f_id_str = data.split(',');// преобразуем строку в массив
|
||||
var f_count_str = f_id_str.length;// считаем количество элементов в массиве
|
||||
if (f_count_str == '2' && f_id_str[0] == '1' && f_id_str[1] == {$smarty.const.PAGE_NOT_FOUND_ID} || f_count_str == '1' && f_id_str[0] == '1' || f_count_str == '1' && f_id_str[0] == {$smarty.const.PAGE_NOT_FOUND_ID})// проверка условий
|
||||
{ldelim}
|
||||
f_block_create_calendar = '1'; // пишем в переменную 1, если условия для запрета совпали
|
||||
$('#i_block_create_calendar').val(f_block_create_calendar);
|
||||
{rdelim} else {ldelim}
|
||||
f_block_create_calendar = '0'; // пишем в переменную 0, если условия для запрета не совпали
|
||||
$('#i_block_create_calendar').val(f_block_create_calendar);
|
||||
{rdelim};
|
||||
{rdelim},
|
||||
{rdelim});// END если условия выше соответствуют - делаем ajax запрос
|
||||
{rdelim}; // END проверяем и запрещаем создавать календарь, если рубрика содержит только один или два документа, Id которых равны либо главной странице либо странице 404 , либо и то и другое.
|
||||
var block_create_calendar = $('#i_block_create_calendar').val();
|
||||
|
||||
if (block_create_calendar != '1'){ldelim}// не сохраняем если в рубрике ТОЛЬКО или главная страница или 404 стр. или то и другое.
|
||||
|
||||
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}
|
||||
type: 'POST',
|
||||
url: '{$formaction}',
|
||||
data: msg,
|
||||
success: function(data) {ldelim}
|
||||
document.location.href = "index.php?do=modules&action=modedit&mod=unicalendar&moduleaction=1&cp={$sess}";
|
||||
{rdelim},
|
||||
error: function(xhr, str){ldelim}
|
||||
$.jGrowl("{#SaveError#}", {ldelim}
|
||||
header: '{#SentData#}',
|
||||
theme: 'error'
|
||||
{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}
|
||||
alert("{#UCA_TITLE_WARNING#}");
|
||||
{rdelim};
|
||||
|
||||
{rdelim} else {ldelim}
|
||||
alert("{#UCA_SEL_RUB_ID_DOC#}");
|
||||
{rdelim};
|
||||
|
||||
|
||||
|
||||
{rdelim}); // END Если произошло событие на кнопке "Добавить" - записываем в БД
|
||||
|
||||
// Копируем системные теги при клике в буфер обмена
|
||||
var clipboard = new Clipboard('.copyBtn');
|
||||
|
||||
// Start аналог php функции str_replace
|
||||
function str_replace ( search, replace, subject ) {ldelim}
|
||||
if(!(replace instanceof Array)){ldelim}
|
||||
replace=new Array(replace);
|
||||
if(search instanceof Array){ldelim}
|
||||
while(search.length>replace.length){ldelim}
|
||||
replace[replace.length]=replace[0];
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
if(!(search instanceof Array))search=new Array(search);
|
||||
while(search.length>replace.length){ldelim}
|
||||
replace[replace.length]='';
|
||||
{rdelim}
|
||||
if(subject instanceof Array){ldelim}
|
||||
for(k in subject){ldelim}
|
||||
subject[k]=str_replace(search,replace,subject[k]);
|
||||
{rdelim}
|
||||
return subject;
|
||||
{rdelim}
|
||||
for(var k=0; k<search.length; k++){ldelim}
|
||||
var i = subject.indexOf(search[k]);
|
||||
while(i>-1){ldelim}
|
||||
subject = subject.replace(search[k], replace[k]);
|
||||
i = subject.indexOf(search[k],i);
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
return subject;
|
||||
{rdelim} // END аналог php функции str_replace
|
||||
|
||||
</script>
|
||||
4
templates/index.php
Normal file
4
templates/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
1
templates/unicalendar.tpl
Normal file
1
templates/unicalendar.tpl
Normal file
@@ -0,0 +1 @@
|
||||
<div id="eventCalendar{$id}"></div>
|
||||
Reference in New Issue
Block a user