AVE.CMS v3.28
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

960 lines
24 KiB

/*
* jQuery windowResizeFix
*
*/
(function($) {
if (document.windowResizeFixFired) {
return;
}
document.windowResizeFixFired = true;
var $window = $(window),
_wWidth = $window.width(),
_wHeight = $window.height();
$window.on('resize',
function(event) {
var _nWidth = $window.width(),
_nHeight = $window.height();
if (_wWidth == _nWidth && _wHeight == _nHeight) {
event.preventDefault();
event.stopImmediatePropagation();
return;
}
_wWidth = _nWidth;
_wHeight = _nHeight;
});
})(jQuery);
function browse_uploads(target, width, height, scrollbar) {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.8;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.8;
if (typeof scrollbar == 'undefined') var scrollbar = 0;
var targetVal = document.getElementById(target).value;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
window.open('index.php?do=browser&type=image&target=' + target + '&tval=' + targetVal, 'imgpop', 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height + ',scrollbars=' + scrollbar + ',resizable=1');
}
function browse_dirs(target, width, height, scrollbar) {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.8;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.8;
if (typeof scrollbar == 'undefined') var scrollbar = 0;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
window.open('index.php?do=browser&type=directory&target=' + target, 'imgpop', 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height + ',scrollbars=' + scrollbar + ',resizable=1');
}
function windowOpen(url, width, height, scrollbar, winname) {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.8;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.8;
if (typeof scrollbar == 'undefined') var scrollbar = 1;
if (typeof winname == 'undefined') var winname = 'pop';
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
window.open(url, winname, 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height + ',scrollbars=' + scrollbar + ',resizable=1').focus();
}
function openLinkWindow(target, doc, document_alias) {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.6;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.6;
if (typeof doc == 'undefined') var doc = 'Title';
if (typeof scrollbar == 'undefined') var scrollbar = 1;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
window.open('index.php?doc=' + doc + '&target=' + target + '&document_alias=' + document_alias + '&do=docs&action=showsimple&cp={$sess}&pop=1', 'pop', 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height + ',scrollbars=' + scrollbar + ',resizable=1');
}
function openFileWindow(target, id, document_alias) {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.6;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.6;
if (typeof doc == 'undefined') var doc = 'Title';
if (typeof scrollbar == 'undefined') var scrollbar = 1;
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
window.open('index.php?do=browser&id=' + id + '&type=file&target=navi&cp={$sess}', 'pop', 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height + ',scrollbars=' + scrollbar + ',resizable=1');
}
// Функция-плагин для включения tipsy сразу для всех классов внутри элемента
(function($) {
$.fn.addTipsy = function() {
this.find(' .topDir').tipsy({
fade: false,
gravity: 's',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .topleftDir').tipsy({
fade: false,
gravity: 'se',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .toprightDir').tipsy({
fade: false,
gravity: 'sw',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .botDir').tipsy({
fade: false,
gravity: 'n',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .bottomDir').tipsy({
fade: false,
gravity: 'n',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .botleftDir').tipsy({
fade: false,
gravity: 'ne',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .botrightDir').tipsy({
fade: false,
gravity: 'nw',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .leftDir').tipsy({
fade: false,
gravity: 'e',
opacity: 0.9,
live: true,
delayOut: 0
});
this.find(' .rightDir').tipsy({
fade: false,
gravity: 'w',
opacity: 0.9,
live: true,
delayOut: 0
});
};
})(jQuery);
/**
* Плагин для подключения сортировки к таблице
*
* @param mixed items селектор для сортируемых элементов default: 'tr'
* @param mixed handle селектор для элемента, который активирует перетаскивание default: '.ico_move'
* @param string url адрес, куда будет отправлена последовательность элементов
* @param string key имя массива $_GET[key] default: 'sort'
* @param string attr имя аттрибута, по которому считываются id элементов default: 'data-id'
* @param string success текст, которые показывает всплывашка в случае успеха default: 'Порядок сохранён'
*/
(function($) {
$.fn.tableSortable = function(options) {
options = $.extend({}, $.fn.tableSortable.defaults, options);
this.sortable({
items: options.items,
axis: 'y',
cursor: 'move',
tolerance: 'pointer',
handle: options.handle,
helper: 'clone',
placeholder: 'sortable-placeholder',
start: function(event, ui) {
// задаём placeholder
$(this).find(' .sortable-placeholder').html(ui.item.html()).css({
'opacity': 0.2
});
// назначаем колонкам ширину
origTd = $(this).find(' .sortable-placeholder td');
ui.helper.find(' td').each(function(index, element) {
$(element).width(origTd.eq(index).width());
});
},
stop: function(event, ui) {
// удаляем ширину колонок
ui.item.find(' tr:first td').each(function(index, element) {
$(element).width('');
});
},
update: function(event, ui) {
// отправляем результаты сортировки
sorted = $(this).sortable('serialize', {
key: options.key + '[]',
attribute: options.attr
});
$.ajax({
url: options.url + '&' + sorted,
dataType: 'json',
success: function(data) {
if (options.success == true) {
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
}
}
});
}
});
};
$.fn.tableSortable.defaults = {
items: 'tr',
handle: '.ico_move',
url: 'index.php?',
key: 'sort',
attr: 'data-id',
success: false
};
})(jQuery);
//===== Tabs =====//
$.fn.simpleTabs = function()
{
$("ul.tabs li").click(function()
{
$(this).parent().parent().find("ul.tabs li").removeClass("activeTab");
$(this).addClass("activeTab");
$(this).parent().parent().find(".tab_content").hide();
var activeTab = $(this).find("a").attr("href");
$(activeTab).show();
$('.CodeMirror').each(function(i, el)
{
el.CodeMirror.refresh();
});
AveAdmin.select_form();
AveAdmin.sticky_panel_refresh();
return false;
});
};
$.fn.extend({
limit: function(limit, element) {
var interval, f;
var self = $(this);
$(this).focus(function() {
interval = window.setInterval(substring, 100)
});
$(this).blur(function() {
clearInterval(interval);
substring()
});
substringFunction = "function substring(){ var val = $(self).val();var length = val.length;if(length > limit){$(self).val($(self).val().substring(0,limit));}";
if (typeof element != 'undefined') substringFunction += "if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}";
substringFunction += "}";
eval(substringFunction);
substring()
}
});
// Запускаем после загрузки документа
$(function() {
$(document)
.ajaxStart(function() {
NProgress.start();
})
.ajaxStop(function() {
NProgress.done();
});
// настройка аякса
$.ajaxSetup({
cache: false,
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatus, {
theme: 'error'
});
} else if (jqXHR.status == 404) {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatus404, {
theme: 'error'
});
} else if (jqXHR.status == 401) {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatus401, {
theme: 'error'
});
} else if (jqXHR.status == 500) {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatus500, {
theme: 'error'
});
} else if (exception === 'parsererror') {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatusJSON, {
theme: 'error'
});
} else if (exception === 'timeout') {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatusTimeOut, {
theme: 'error'
});
} else if (exception === 'abort') {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatusAbort, {
theme: 'error'
});
} else {
$.alerts._overlay('hide');
$.jGrowl(ajaxErrorStatusMess + jqXHR.responseText, {
theme: 'error'
});
}
}
});
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.7;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.7;
//===== Dynamic Tables =====//
oTable = $('#dinamTable').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aaSorting": [
[0, "desc"]
],
"sDom": '<""f>t<"F"lp>'
});
//===== Information boxes =====//
$(".hideit").click(function() {
$(this).fadeOut(400);
});
$("div[class^='widget']").simpleTabs(); //Run function on any div with class name of "Simple Tabs"
});
var AveAdmin = {
initialized: false,
initialize: function() {
if (this.initialized) return;
this.initialized = true;
this.build();
this.events();
},
build: function() {
this.toggleMenu();
this.clear_cache();
this.clear_cache_sess();
this.clear_cache_thumb();
this.clear_revisions();
this.clear_counter();
this.cache_show();
this.main_form();
this.select_form();
this.sticky_panel();
this.customInput();
this.fancy_box();
this.fancy_frame();
this.tooltip();
this.place_holder();
this.collapsible_elements();
},
events: function() {
this.a_actions();
this.drop_down();
this.collapsible_select();
this.confirm_logout();
this.confirm_delete();
this.ui_totop();
this.modalDialog();
this.trim();
},
ajax: function() {
this.select_form();
this.main_form();
this.place_holder();
//this.modalDialog();
},
//UItoTop
ui_totop: function() {
$().UItoTop({
easingType: 'easeOutQuart'
});
},
toggleMenu: function() {
if ($("[id^='toggle']").length) {
$.each(["LeftMenu"], function(key, value) {
//Считываем cookie
var toggle = $.cookie(value);
//Проверяем cookie
if (toggle == 'hidden') {
$(".leftNav").addClass("hidden");
$(".dd_page").css("display", "");
} else {
$("#leftNav_show span").addClass("close");
$(".dd_page").css("display", "none");
}
$("[id='toggle-" + this + "']").click(function() {
if ($(".leftNav").hasClass('hidden')) {
$(".dd_page").css("display", "none");
$(".leftNav").removeClass('hidden').addClass('visible');
$("#leftNav_show span").addClass("close");
$.cookie(value, 'visible');
} else {
$(".dd_page").css("display", "");
$(".leftNav").removeClass('visible').addClass('hidden');
$("#leftNav_show span").removeClass("close");
$.cookie(value, 'hidden');
}
});
});
}
},
//Окно очистки кэша
clear_cache: function() {
$(".clearCache").click(function(event) {
event.preventDefault();
var title = clearCacheTitle;
var confirm = clearCacheConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.alerts._overlay('hide');
$.alerts._overlay('show');
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=clearcache&ajax=run',
type: 'POST',
dataType: "json",
data: ({
templateCache: 1,
templateCompiledTemplate: 1,
moduleCache: 1,
sqlCache: 1
}),
success: function(data) {
$.alerts._overlay('hide');
$.jGrowl(data[0], {
theme: data[1]
});
$('#cachesize').html('0 Kb');
$('.cachesize').html('0 Kb');
}
});
}
}
);
});
},
//Collapsible elements management
collapsible_elements: function() {
var width = $("div.content").width();
$('.opened').collapsible({
defaultOpen: 'opened',
cssOpen: 'inactive',
cssClose: 'normal',
speed: 5,
loadOpen: function(elem, opts) {
elem.next().show();
},
loadClose: function(elem, opts) {
elem.next().hide();
}
});
$('.closed').collapsible({
defaultOpen: '',
cssOpen: 'inactive',
cssClose: 'normal',
speed: 5,
loadOpen: function(elem, opts) {
elem.next().show();
},
loadClose: function(elem, opts) {
elem.next().hide();
}
});
setTimeout(function() {
AveAdmin.sticky_panel_refresh();
AveAdmin.select_form();
}, 10);
},
//Окно очистки кэша + Сессий
clear_cache_sess: function() {
$(".clearCacheSess").click(function(event) {
event.preventDefault();
var title = clearCacheSessTitle;
var confirm = clearCacheSessConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.alerts._overlay('hide');
$.alerts._overlay('show');
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=clearcache&ajax=run',
type: 'POST',
dataType: "json",
data: ({
templateCache: 1,
templateCompiledTemplate: 1,
moduleCache: 1,
sqlCache: 1,
sessionUsers: 1
}),
success: function(data) {
$.alerts._overlay('hide');
$.jGrowl(data[0], {
theme: data[1]
});
$('#cachesize').html('0 Kb');
$('.cachesize').html('0 Kb');
}
});
}
}
);
});
},
//Окно очистки ревизий документов
clear_revisions: function() {
$(".clearRev").click(function(event) {
event.preventDefault();
var title = clearRevTitle;
var confirm = clearRevConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=clearrevision&ajax=run',
type: 'POST',
dataType: "json",
success: function(data) {
$.alerts._overlay('hide');
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
}
});
}
}
);
});
},
//Окно очистки ревизий документов
clear_counter: function() {
$(".clearCount").click(function(event) {
event.preventDefault();
var title = clearCountTitle;
var confirm = clearCountConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=clearcounter&ajax=run',
type: 'POST',
dataType: "json",
success: function(data) {
$.alerts._overlay('hide');
$.jGrowl(data['message'], {
header: data['header'],
theme: data['theme']
});
}
});
}
}
);
});
},
//Окно очистки миниатюр изображений
clear_cache_thumb: function() {
$(".clearThumb").click(function(event) {
event.preventDefault();
var title = clearThumbTitle;
var confirm = clearThumbConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=clearthumb&ajax=run',
type: 'POST',
dataType: "json",
success: function(data) {
$.alerts._overlay('hide');
$.jGrowl(data[0], {
theme: data[1]
});
}
});
}
}
);
});
},
//Показать размер кэша
cache_show: function() {
$("#cacheShow").click(function(event, x) {
event.preventDefault();
var title = cacheShowTitle;
var confirm = cacheShowConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.alerts._overlay('hide');
$.alerts._overlay('show');
$.ajax({
url: ave_path + 'admin/index.php?do=settings&sub=showcache&ajax=run',
type: 'POST',
dataType: "json",
data: ({
showCache: 1
}),
success: function(data) {
$.alerts._overlay('hide');
$('#cachesize').html(data[0]);
}
});
}
}
);
});
},
//Окно удаления едемента
confirm_delete: function() {
$(document).on('click' , '.ConfirmDelete', function(event) {
event.preventDefault();
var href = $(this).attr('href');
var title = $(this).attr('dir');
var confirm = $(this).attr('name');
jConfirm(
confirm,
title,
function(b) {
if (b) {
$.alerts._overlay('show');
window.location = href;
}
}
);
});
},
//Выход
confirm_logout: function() {
$(".ConfirmLogOut").click(function(event) {
event.preventDefault();
var href = $(this).attr('href');
var title = logoutTitle;
var confirm = logoutConfirm;
jConfirm(
confirm,
title,
function(b) {
if (b) window.location = href;
}
);
});
},
//Прилипающая панель с кнопками
sticky_panel_refresh: function() {
if ($("#saveBtn").length > 0) {
$("#saveBtn").trigger('refresh');
var offset = $('#saveBtn').offset(); //Положение кнопок на странице
var width = $("div.content").width(); //ширина
if ($(document).scrollTop() < offset.top - $(window).height()) {
$('.saveBtn').addClass('fixedBtn').css({
"width": width - 20
});
} else {
$('.saveBtn').removeClass('fixedBtn').removeAttr('style');
}
}
},
//Прилипающая панель с кнопками
sticky_panel: function() {
if ($("#saveBtn").length > 0) {
var offset = $('#saveBtn').offset(); //Положение кнопок на странице
var width = $("div.content").width(); //ширина
if ($(document).scrollTop() < offset.top - $(window).height()) {
$('.saveBtn').addClass('fixedBtn').css({
"width": width - 20
});
}
$(window).scroll(function() {
var offset = $('#saveBtn').offset(); //Положение кнопок на странице
var scroll_top = $(document).scrollTop(); //высота прокрученной области
var window_height = $(window).height(); //высота окна браузера
var width = $("div.content").width(); //ширина
if (scroll_top < offset.top - window_height) {
$('.saveBtn').addClass('fixedBtn').css({
"width": width - 20
});
} else {
$('.saveBtn').removeClass('fixedBtn').removeAttr('style');
}
});
$(window).on(
'resize',
function() {
$(window).resize(function() {
var width = $("div.content").width(); //ширина
$('.saveBtn').css({
"width": width - 20
});
});
}
);
}
},
//Custom single file input
customInput: function() {
$("input[type=file].input_file").nicefileinput({
label: 'Выбрать...'
});
},
// jQuery UI Dialog
modalDialog: function() {
$('a.openDialog').on('click', function(event) {
event.preventDefault();
var idDialog = ($(this).attr('data-dialog')) ? $(this).attr('data-dialog') : '';
var ajaxDialog = $('<div id="ajax-dialog' + '-' + idDialog + '" style="display:none;" class="ajax-dialog"></div>').appendTo('body');
var dialogTitle = ($(this).attr('data-title')) ? $(this).attr('data-title') : 'Modal';
var dialogModal = ($(this).attr('data-modal')) ? $(this).attr('data-modal') : false;
var dialogHref = ($(this).attr('href')) ? $(this).attr('href') : 'index.php';
var dialogWidth = ($(this).attr('data-width')) ? $(this).attr('data-width') : undefined;
var dialogHeight = ($(this).attr('data-height')) ? $(this).attr('data-height') : undefined;
var dialogTemplate = ($(this).attr('data-template')) ? $(this).attr('data-template') : '&onlycontent=1';
if (typeof dialogWidth == 'undefined' || dialogWidth == '') var dialogWidth = $(window).width() * 0.9;
if (typeof dialogHeight == 'undefined' || dialogHeight == '') var dialogHeight = $(window).height() * 0.8;
ajaxDialog.dialog({
autoOpen: false,
modal: dialogModal,
dialogClass: 'fixed-dialog',
close: function(event, ui) {
$(this).dialog('destroy').remove();
}
});
$('#' + ajaxDialog.attr('id')).load(dialogHref + dialogTemplate, function() {
ajaxDialog.dialog("option", "title", dialogTitle);
if (typeof(dialogWidth) !== "undefined") {
ajaxDialog.dialog("option", "width", dialogWidth);
ajaxDialog.dialog("option", "height", dialogHeight);
}
ajaxDialog.dialog("open");
});
return false;
});
},
//функция-аналог trim в php
trim: function() {
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
},
//Tooltip
tooltip: function() {
$('body').addTipsy();
},
// Fancybox
fancy_box: function() {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.8;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.7;
$("a.fancy").fancybox({
padding: 0,
margin: '30px',
autoScale: true,
speedIn: 100,
speedOut: 100,
overlayOpacity: 0.5,
overlayColor: "#000",
centerOnScroll: true,
width: width,
height: height
});
},
// Fancybox
fancy_frame: function() {
if (typeof width == 'undefined' || width == '') var width = screen.width * 0.8;
if (typeof height == 'undefined' || height == '') var height = screen.height * 0.7;
$("a.iframe").fancybox({
padding: 0,
margin: 0,
width: width,
height: height,
autoScale: true,
speedIn: 100,
speedOut: 100,
overlayOpacity: 0.5,
overlayColor: "#000",
centerOnScroll: true
});
},
select_form: function() {
setTimeout(function() {
$(".mainForm select").styler({
selectVisibleOptions: 5,
selectSearch: false
});
$(".mainForm select").trigger('refresh');
}, 100);
},
collapsible_select: function () {
$('.head.closed').on('click', function(){
AveAdmin.select_form();
});
},
// Преобразование форм
main_form: function() {
$(".mainForm").jqTransform({
imgPath: "../images"
});
},
// Placeholder for all browsers
place_holder: function() {
$('input[placeholder], textarea[placeholder]').placeholder();
},
// A transactions
a_actions: function() {
$('.actions a').hover(function() {
$(this).animate({
opacity: 1.0
}, 100);
}, function() {
$(this).animate({
opacity: 0.5
}, 100);
});
},
// DropDown menu
drop_down: function() {
$(".dropdown").on("mouseenter mouseleave", function(event) {
var ul = $(this).children("ul");
ul.stop(true, true);
if (event.type === "mouseenter") {
ul.slideToggle(10);
} else {
ul.hide(10);
}
});
}
};
$(document).keydown(function(event) {
var numberOfOptions = $("#rubric_id > option").length;
var selectedIndex = $("#rubric_id option:selected").val();
switch (event.keyCode) {
case 38: // UP Key
if (selectedIndex > 0) {
$("#rubric_id").val(parseInt($("#rubric_id option:selected").val()) - 1);
}
break;
case 40: // DOWN Key
if (selectedIndex < numberOfOptions - 1) {
$("#rubric_id").val(parseInt($("#rubric_id option:selected").val()) + 1);
}
break;
}
});
$(document).ready(function() {
AveAdmin.initialize();
});