a_MeR
Гуру форума
- Регистрация
- 26 Апр 2009
- Сообщения
- 154
- Реакции
- 78
- Автор темы
- #1
SJ Contact Ajax - аякс модуль обратной связи с возможностью указать дату (например, для записи на приём), включить капчу,вывести google-карту и некоторые другие дополнительные информационные поля.
Для просмотра ссылки Войдиили Зарегистрируйся| Для просмотра ссылки Войди или Зарегистрируйся
Модуль хорош тем, что в нём есть сразу многое, при этом основным его недостатком можно назвать отсутствие возможности гибкой настройки (управление опциями реализовано по минимуму).
На практике пришлось столкнулся с необходимостью убрать поле "дата" (применимо для всех обязательных полей). Для решения данного вопроса перепробовал разные варианты, в итоге опишу рабочий:
Модифицируем следующий файлы:
1) делаем поле "дата" необязательным для заполнения, для этого
удаляем из modules\mod_sj_contact_ajax\tmpl\default_js.php следующий код:
case "date":
var re = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
if (!re.test(value)) {
result.valid = false;
result.mes = "Please enter a valid date";
}
saveValidationState(input, result.valid);
showValidationMessage(input, result);
break;
а также удаляем строчку:
var dateValid = $date.data("validated");
и все такие конструкции: && dateValid и такие || $date_value == ''
а также такой блок:
var timer5 = 0;
$date.on("blur", function () {
if (timer5) {
clearTimeout(timer5);
timer5 = 0;
}
timer5 = setTimeout(function () {
validateInput($date, "date");
}, 1000);
});
var timer6 = 0;
$date.on("keyup", function () {
if (timer6) {
clearTimeout(timer6);
timer6 = 0;
}
timer6 = setTimeout(function () {
validateInput($date, "date");
}, 1000);
});
и еще несколько строчек:
if ($date_value == '') {
validateInput($date, "date");
}
2) Убираем из формы отображение поля "дата", для этого
удаляем из modules\mod_sj_contact_ajax\tmpl\default.php следующий код:
<div class="el-control">
<label for="cainput_date"><?php echo JText::_('DATE_LABEL'); ?></label>
<input type="text" autocomplete="off" name="cainput_date" class="el-input" id="cainput_date"
placeholder="<?php echo JText::_('DATE_LABEL'); ?>">
<span class="ca-tooltip" title="" data-toggle="tooltip"
data-original-title="<?php echo JText::_('DATE_ERROR'); ?>">
<i class="icon-exclamation-sign el-error"></i>
</span>
<i class="icon-ok-sign el-ok"></i>
</div>
__________________________________
Во многих квикстартах от SmartAddons, где используется данный модуль, созданы отдельные шаблоны для sj contact ajax, которые хранятся в папке \templates\ваш_шаблон\html\mod_sj_contact_ajax\, и обычно называются theme1.php, theme1_js.php, то есть это файлы, в которых нужно внести аналогичные правки.
Надеюсь, данное описание кому-то пригодится
Для просмотра ссылки Войди
Модуль хорош тем, что в нём есть сразу многое, при этом основным его недостатком можно назвать отсутствие возможности гибкой настройки (управление опциями реализовано по минимуму).
На практике пришлось столкнулся с необходимостью убрать поле "дата" (применимо для всех обязательных полей). Для решения данного вопроса перепробовал разные варианты, в итоге опишу рабочий:
Модифицируем следующий файлы:
1) делаем поле "дата" необязательным для заполнения, для этого
удаляем из modules\mod_sj_contact_ajax\tmpl\default_js.php следующий код:
case "date":
var re = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
if (!re.test(value)) {
result.valid = false;
result.mes = "Please enter a valid date";
}
saveValidationState(input, result.valid);
showValidationMessage(input, result);
break;
а также удаляем строчку:
var dateValid = $date.data("validated");
и все такие конструкции: && dateValid и такие || $date_value == ''
а также такой блок:
var timer5 = 0;
$date.on("blur", function () {
if (timer5) {
clearTimeout(timer5);
timer5 = 0;
}
timer5 = setTimeout(function () {
validateInput($date, "date");
}, 1000);
});
var timer6 = 0;
$date.on("keyup", function () {
if (timer6) {
clearTimeout(timer6);
timer6 = 0;
}
timer6 = setTimeout(function () {
validateInput($date, "date");
}, 1000);
});
и еще несколько строчек:
if ($date_value == '') {
validateInput($date, "date");
}
2) Убираем из формы отображение поля "дата", для этого
удаляем из modules\mod_sj_contact_ajax\tmpl\default.php следующий код:
<div class="el-control">
<label for="cainput_date"><?php echo JText::_('DATE_LABEL'); ?></label>
<input type="text" autocomplete="off" name="cainput_date" class="el-input" id="cainput_date"
placeholder="<?php echo JText::_('DATE_LABEL'); ?>">
<span class="ca-tooltip" title="" data-toggle="tooltip"
data-original-title="<?php echo JText::_('DATE_ERROR'); ?>">
<i class="icon-exclamation-sign el-error"></i>
</span>
<i class="icon-ok-sign el-ok"></i>
</div>
__________________________________
Во многих квикстартах от SmartAddons, где используется данный модуль, созданы отдельные шаблоны для sj contact ajax, которые хранятся в папке \templates\ваш_шаблон\html\mod_sj_contact_ajax\, и обычно называются theme1.php, theme1_js.php, то есть это файлы, в которых нужно внести аналогичные правки.
Надеюсь, данное описание кому-то пригодится
Вложения
Последнее редактирование: