FormExtensibleSet/js: improve behaviour

This commit is contained in:
Thomas Gelf 2016-03-09 08:41:34 +01:00
parent 04f16008fe
commit c1343131fb
2 changed files with 65 additions and 4 deletions

View File

@ -164,7 +164,7 @@ class Zend_View_Helper_FormExtensibleSet extends Zend_View_Helper_FormElement
{
$v = $this->view;
return '<input type="submit" class="related-action"'
return '<input type="submit" class="related-action action-add"'
. ' name="' . $name . '_ADD"'
. ' value="&#xe805;"'
. ' title="' . $v->translate('Remove this entry') . '"'
@ -176,7 +176,7 @@ class Zend_View_Helper_FormExtensibleSet extends Zend_View_Helper_FormElement
{
$v = $this->view;
return '<input type="submit" class="related-action"'
return '<input type="submit" class="related-action action-remove"'
. ' name="' . $name . '_' . $cnt . '__REMOVE' . '"'
. ' value="&#xe804;"'
. ' title="' . $v->translate('Remove this entry') . '"'
@ -188,7 +188,7 @@ class Zend_View_Helper_FormExtensibleSet extends Zend_View_Helper_FormElement
{
$v = $this->view;
return '<input type="submit" class="related-action"'
return '<input type="submit" class="related-action action-move-up"'
. ' name="' . $name . '_' . $cnt . '__MOVE_UP"'
. ' value="&#xe825;"'
. ' title="' . $v->translate('Move up') . '"'
@ -200,7 +200,7 @@ class Zend_View_Helper_FormExtensibleSet extends Zend_View_Helper_FormElement
{
$v = $this->view;
return '<input type="submit" class="related-action"'
return '<input type="submit" class="related-action action-move-down"'
. ' name="' . $name . '_' . $cnt . '__MOVE_DOWN"'
. ' value="&#xe828;"'
. ' title="' . $v->translate('Move down') . '"'

View File

@ -20,11 +20,72 @@
*/
this.module.on('rendered', this.rendered);
this.module.on('click', 'fieldset > legend', this.toggleFieldset);
this.module.on('click', 'input.related-action', this.extensibleSetAction);
this.module.on('focus', 'form input', this.formElementFocus);
this.module.on('focus', 'form select', this.formElementFocus);
this.module.icinga.logger.debug('Director module initialized');
},
extensibleSetAction: function(ev)
{
var el = ev.currentTarget;
if (el.name.match(/__MOVE_UP$/)) {
var $li = $(el).closest('li');
var $prev = $li.prev()
if ($prev.length) {
$prev.before($li.detach());
this.fixRelatedActions($li.closest('ul'));
}
ev.preventDefault();
ev.stopPropagation();
return false;
} else if (el.name.match(/__MOVE_DOWN$/)) {
var $li = $(el).closest('li');
var $next = $li.next()
if ($next.length && ! $next.find('.extend-set').length) {
$next.after($li.detach());
this.fixRelatedActions($li.closest('ul'));
}
ev.preventDefault();
ev.stopPropagation();
return false;
} else if (el.name.match(/__MOVE_REMOVE$/)) {
// TODO: skipping for now, wasn't able to prevent web2 form
// submission once removed
return;
var $li = $(el).closest('li').remove();
this.fixRelatedActions($li.closest('ul'));
ev.preventDefault();
ev.stopPropagation();
return false;
}
},
fixRelatedActions: function($ul)
{
var $uls = $ul.find('li');
var last = $uls.length -2;
$uls.each(function (idx, li) {
var $li = $(li);
if (idx === 0) {
$li.find('.action-move-up').attr('disabled', 'disabled');
if (last === 0) {
$li.find('.action-move-down').attr('disabled', 'disabled');
} else {
$li.find('.action-move-down').removeAttr('disabled');
}
} else if (idx === last) {
$li.find('.action-move-up').removeAttr('disabled');
$li.find('.action-move-down').attr('disabled', 'disabled');
} else {
$li.find('.action-move-up').removeAttr('disabled');
$li.find('.action-move-down').removeAttr('disabled');
}
});
},
formElementFocus: function(ev)
{
var $input = $(ev.currentTarget);