В файле /js/xtables.js
находятся js
функции xTables.
Плагин jQuery, который запускает таймер в милисекундах в переданном селекторе.
jQuery("#sometimer").xtTimer();
Плагин jQuery, который инициализирует поля input, textarea по переданному селектору, добавляя символ крестика справа для очистки поля и ограничение количества символов, если оно передано в качестве параметра.
В качестве параметра может быть передано число для ограничения количества символов, допустимых к вводу в это поле. Это число будет показываться после поля ввода и меняться в соответствии с количеством уже введенных символов.
Поле ввода должно быть обернуто в div, в котором поле ввода должно быть первым дочерним элементом. При необходимости использования label для такого поля, он должен быть вынесен за пределы этого div.
<div class="form-group">
<input id="someinput" class="form-control">
</div>
jQuery("#someinput").xtInitInput(250);
Функция для шифрования данных в полях ввода на клиенте.
Осуществляется с использованием библиотеки https://github.com/travist/jsencrypt.
Нужно поместить данные полей ввода, которые необходимо зашифровать, в массив и передать его вместе с открытым ключом
в качестве аргументов в данную функцию.
var inputs = [];
inputs.push(login.val(), pass.val());
var inputsCrypted = xtables.inputsCrypt(inputs, pubKey);
login.val(inputsCrypted[0]);
pass.val(inputsCrypted[1]);
Используется для передачи данных методом POST на сервером через ajax запрос. Автоматически добавляет csrf-токен. В метод передаются:
url
- адрес, по которому нужно передать запрос; если будет добавлен абсолютный адрес, содержащий
http
или //
, то для безопасности csrf-токен добавлен не будет;
data
необязательно - объект с передаваемыми данными;
params
необязательно - параметры jQuery.ajax(),
например, success (что делать после выполнения запроса); по умолчанию после выполнения запроса
вызывается метод xtables.serverReplyHandle()
.
xtables.ajax('/some/url', {name: 'some name', else_val: 'some else data'});
xtables.ajax('/some/url',
{
name: 'some name',
else_val: 'some else data'
},
{
success: function(data) {
// some action
}
});
В фукнцию xtables.startAjDi()
нужно передать агрументы в json:
url
- обязательно адрес на том же или другом домене;
data
- необязательно данные, которые будет переданы на сервер;
refresh
- необязательно
время в секундах, через которое должна происходить перезагрузка аякс конетейнера;
reloadBundles
- необязательно
массив с именами селекторов, аякс контейнеры которых должны быть перезагружены (reload без
новых параметров) после выполнения запроса (обычный массив, не json), или строка с именами селекторов через запятую;
history
- необязательно
url адрес для помещения его в историю браузера для обеспечения ajax навигации
xtables.startAjDi({
url: '/some/url',
data: {
some: 'some data',
else: 1
},
refresh: 0,
reloadBundles: ['#selector1', '#selector2'],
history: '/some/new/url'
});
Эта функция используется для перезагрузки аякс контейнера по имени селектора. Если в фукнцию будут переданы url, data, то произойдет обновление данных ajax dispatcher. Если будет только сообщен селектор, то произойдет простая перезагрузка.
selector
- обязательно наименование селектора по правилам CSS (#, .);
url
- необязательно адрес;
data
- необязательно данные, которые будет переданы на сервер.
xtables.ajDiBundle('#someId');
// or
xtables.ajDiBundle('#someId', '/some/url', {
some: 'some data',
else: 1
});
Эта функция предназначена для перезагрузки ранее загруженного аякс диспетчера. В функцию должны быть переданы именованные параметры:
num
- обязательно
имя аякс диспетчера;
url
- необязательно
адрес на том же или другом домене для изменения соответствующего параметра в ранее загруженном
аякс диспетчере, для простой перезагрузки вводить адрес не нужно;
data
- необязательно
данные, которые заменят передающиеся данных аякс диспетчером данные, для простой перезагрузки вводить
этот параметр не нужно;
history
- необязательно
url адрес для помещения его в историю браузера для обеспечения ajax навигации
xtables.reloadAjDi({num: 'ajDi234'});
// OR
xtables.reloadAjDi({
num: 'ajDi234', // some ajDi name
url: '/some/url',
data: {
some: 'some data',
else: 1
},
history: '/some/new/url'
});
Производит разбор ответа сервера, поступающего, как правило, как результат выполнения ajax запроса.
Выполняет:
http
или /
и не является json, то
производит перенаправление по указанному адресу:
modal_spsign
), то
загружает его;
Устанавливает значение куки. Кука с сессионным идентификатором не доступна через js.
cname
- имя куки;
cvalue
- значение куки;
exdays
- количество дней в течение, которого должна сохраняться куки;
если не указано, то будет создана сессионная кука, удаляющаюся при закрытии браузера;
path
- на какую часть домена распространяется кука, по умолчанию на все адреса домена.
Получение значения куки по имени. Кука с сессионным идентификатором не доступна через js. В случае, если кука с таким именем не будет найдена, то будет возвращена пустая строка. В функцию нужно передать только имя куки.
С сервера на клиент передаются настройки в файле /tmp/xtables.settings.json
.
Дополнительные настройки могут быть определены в файле /config/js-css-meta.php
в параметре xtables_js_settings
(см. HeadConnector).
Для обеспечения выполнения функции гарантировано только после загрузки данных настроек с сервера, если
какие-то из них используются в функции, можно обернуть ее выполнение в xtables.onSettingsReady(toDo)
,
куда в качестве параметра нужно передать функцию. Ее выполнение будет отложено, если настройки еще не прогрузились.
xtables.onSettingsReady(function() {
// some code ... with any xtables.settings params
});
Для подгрузки с сервера диаграммы с использованием js библиотеки flot может быть использована данная функция, в которую нужно передать:
cssId
- имя CSS идентификатора, куда должна быть подгружена диаграмма;
url
- путь, по которому должны быть получены данные для диаграммы;
preloader
- необязательно
прелоадер в html тегах, который должен отображаться пока
диаграмма не будет загружена.
xtables.plot('#some-id', '/some/url');
Для управления указателями прокрутки страницы вверх и вниз можно использовать данную функцию,
в которую можно передать css идентификаторы указателей.
По умолчанию, если они не определены, то используются идентификаторы
#to-top
, #to-bottom
.
xtables.lang
- текущий язык, получается из куки lang
, по умолчанию ru;
xtables.csrfToken
- csrf-токен авторизованного пользователя;
xtables.width
- ширина экрана (используется в связи с тем, что window.outerWidth
может не отображаться в мобильных браузерах;
xtables.height
- ширина экрана (используется в связи с тем, что window.outerHeight
может не отображаться в мобильных браузерах;
xtables.background
- фон экрана;
xtables.preloaderInicon
- изображение для показа в период ожидания ответа на ajax запрос