<script type="text/javascript">
/*
* handleClicks() обрабатывает все клики внутри элементов с аттрибутом “panel”.
* Если пользователь кликнул на ссылке — проверяется аттрибут
* “target” якоря и производится одно из действий:
* “target=_form” — отправка формы через Ajax.request, (в старой версии)
* “target=_submit” — отправка формы form.submit,
* “target=_popup” — открытие popup-окна, (убрано)
* “target=_ajax” — подгрузка ссылки через Ajax.Updater, (убрано)
* “target=_menu” — подгрузка контекстного меню (id блока, содержащего меню, указывается в rel),
* или обычный переход по ссылке.
*/
function handleClicks(e)
{
var element = Event.element(e);
if (element.tagName != 'A')
{
var prev = element.up();
if (prev && prev.tagName == 'A')
{
element = prev;
}
}
if (element && element.tagName == 'A')
{
var link = element.readAttribute('href'),
target = element.readAttribute('target');
if (link.match(/delete/) &&
!window.confirm('<?= $this->lang->line('manage_delete_confirm') ?>'))
{
Event.stop(e);
return false;
}
if (target == '_menu')
{
Event.stop(e);
var menuOptions = $(element.readAttribute('rel'));
if (menuOptions == 'undefined')
{
throw new Error('<?= $this->lang->line('manage_js_menu_is_not_defined') ?>');
}
var position = Position.cumulativeOffset(element);
Control.Modal.open(menuOptions.innerHTML, {
fade : true,
fadeDuration : .1,
opacity : 0,
position : 'relative',
offsetTop : position[1] + 20,
offsetLeft : position[0] + 20
});
}
[COLOR="SeaGreen"]else if (target == '_submit')
{
Event.stop(e);
var form = element.up('form');
if (form)
{
form.submit();
}
else
{
throw new Error('<?= $this->lang->line('manage_js_form_does_not_exists') ?>');
}
}[/COLOR]
if (target == '_ajax')
{
Event.stop(e);
var container = element.readAttribute('rel') || element.up('div.content');
if (container)
{
new Ajax.Updater(container, link, {evalScripts : true});
}
else
{
throw new Error('<?= $this->lang->line('manage_js_container_does_not_exists') ?>');
}
}
}
}
Event.observe(window, 'load', function () {
document.getElementsByClassName('panel').each(function (element) {
Event.observe(element, 'click', handleClicks, false);
});
});
</script>