Старый МТФ
В одной и той же категории часть задач может носить разовый характер, а часть — регулярно повторяющийся. Для повторяющихся задач включается флажок "Регулярно" (в данном примере этот ДП имеет ID=111). Важно, чтобы для повторяющихся задач было настроено повторение. Чтобы пользователи при создании таких задач не забывали настраивать повторения, добавляется проверка при нажатии кнопки "Поставить задачу": если на карточке создания новой задачи включен флажок "Регулярно", а настройки повторений не заданы, пользователю выдается предупреждение, задача не создается, и окно создания задачи остается открытым.
Чтобы автоматизировать такую проверку, к карточке создания новой задачи можно добавить JS-вставку:
$(window).on('load', function() {
// Создаем функцию вызывающую старый код кнопки постановки задачи с контекстом
function evalInContext( context, js) {
return function() {
return eval(js);
}.call(context);
}
var ep111 = new ExtParam(111); // Значение ДП "Регулярно"
var submitBtnClickFunc = $('#btnPostTask').attr('onclick'); // Запоминаем настройки события при клике на кнопку постановки задачи
$('#btnPostTask').attr('onclick', ''); // Очищаем событие при клике на кнопку
$('#btnPostTask').click(function() { // Проверяем условия при клике
var tr = typeof getNtfModelTaskTimeSettings();
// Проверяем условие:
// если окно настройки повторений не открывалось вообще, то typeof getNtfModelTaskTimeSettings() будет 'undefined'
// если окно настройки повторений открывалось, но расписание не установлено (не сохранено),
// то typeof getNtfModelTaskTimeSettings() будет 'object', в этом случае надо проверить его свойство .taskRecurrence — оно будет 'null'
if (ep111.val() == 'да' && (tr == 'undefined' || (tr == 'object' && getNtfModelTaskTimeSettings().taskRecurrence == null))) {
// Если выполняется условие отмены, выводим предупреждение
dialogs.alert("Внимание!", "Создание поручений данного вида без расписания повторения запрещено!");
return false;
}
else {
// Если условие не выполняется, запускаем старый код кнопки
PostTaskClick();
}
});
});
Чтобы иконка настройки параметров повторения на панели инструментов была доступна только при включенном флажке "Регулярно", можно добавить такую JS-вставку (на панели инструментов нужная иконка – 6-ая по порядку, с учетом разделителя):
$(window).on('NewTaskLoadFinished', function()
{
var ep111 = new ExtParam(111);
ep111.change(function () {
switch(ep111.val()) {
case 'нет':
$('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
break;
case 'да':
$('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","auto")
break;
default:
$('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
break;
}
});
ep111.change();
});