mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-31 01:34:09 +02:00
Merge branch 'bugfix/always-use-the-jquery-find-method-w/-node-context-10704'
fixes #10704
This commit is contained in:
commit
626afbd5ec
@ -49,7 +49,7 @@ EOT;
|
|||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $closeTpl = <<< 'EOT'
|
private $closeTpl = <<< 'EOT'
|
||||||
<li class="dropdown" style="float: right;">
|
<li style="float: right;">
|
||||||
<a href="#" title="{TITLE}" aria-label="{TITLE}" class="close-container-control">
|
<a href="#" title="{TITLE}" aria-label="{TITLE}" class="close-container-control">
|
||||||
<i aria-hidden="true" class="icon-cancel"></i>
|
<i aria-hidden="true" class="icon-cancel"></i>
|
||||||
</a>
|
</a>
|
||||||
|
@ -10,11 +10,9 @@
|
|||||||
Icinga.EventListener.call(this, icinga);
|
Icinga.EventListener.call(this, icinga);
|
||||||
this.on('click', '#menu a', this.linkClicked, this);
|
this.on('click', '#menu a', this.linkClicked, this);
|
||||||
this.on('click', '#menu tr[href]', this.linkClicked, this);
|
this.on('click', '#menu tr[href]', this.linkClicked, this);
|
||||||
this.on('mouseenter', 'li.dropdown', this.dropdownHover, this);
|
|
||||||
this.on('mouseleave', 'li.dropdown', this.dropdownLeave, this);
|
|
||||||
this.on('mouseenter', '#menu > nav > ul > li', this.menuTitleHovered, this);
|
this.on('mouseenter', '#menu > nav > ul > li', this.menuTitleHovered, this);
|
||||||
this.on('mouseleave', '#sidebar', this.leaveSidebar, this);
|
this.on('mouseleave', '#sidebar', this.leaveSidebar, this);
|
||||||
this.on('rendered', this.onRendered, this);
|
this.on('rendered', '#menu', this.onRendered, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The DOM-Path of the active item
|
* The DOM-Path of the active item
|
||||||
@ -35,9 +33,11 @@
|
|||||||
this.hovered = null;
|
this.hovered = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {HTMLElement}
|
* The menu
|
||||||
|
*
|
||||||
|
* @type {jQuery}
|
||||||
*/
|
*/
|
||||||
this.element = null;
|
this.$menu = null;
|
||||||
};
|
};
|
||||||
Navigation.prototype = new Icinga.EventListener();
|
Navigation.prototype = new Icinga.EventListener();
|
||||||
|
|
||||||
@ -49,16 +49,18 @@
|
|||||||
Navigation.prototype.onRendered = function(e) {
|
Navigation.prototype.onRendered = function(e) {
|
||||||
var _this = e.data.self;
|
var _this = e.data.self;
|
||||||
|
|
||||||
this.element = e.target;
|
if (! _this.$menu) {
|
||||||
|
_this.$menu = $(e.target);
|
||||||
|
}
|
||||||
|
|
||||||
if (! _this.active) {
|
if (! _this.active) {
|
||||||
// There is no stored menu item, therefore it is assumed that this is the first rendering
|
// There is no stored menu item, therefore it is assumed that this is the first rendering
|
||||||
// of the navigation after the page has been opened.
|
// of the navigation after the page has been opened.
|
||||||
|
|
||||||
// initialise the menu selected by the backend as active.
|
// initialise the menu selected by the backend as active.
|
||||||
var $menus = $('#menu li.active', e.target);
|
var $active = _this.$menu.find('li.active');
|
||||||
if ($menus.length) {
|
if ($active.length) {
|
||||||
$menus.each(function() {
|
$active.each(function() {
|
||||||
_this.setActive($(this));
|
_this.setActive($(this));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -147,17 +149,17 @@
|
|||||||
Navigation.prototype.setActiveByUrl = function(url) {
|
Navigation.prototype.setActiveByUrl = function(url) {
|
||||||
|
|
||||||
// try to active the first item that has an exact URL match
|
// try to active the first item that has an exact URL match
|
||||||
this.setActive($('#menu [href="' + url + '"]'));
|
this.setActive(this.$menu.find('[href="' + url + '"]'));
|
||||||
|
|
||||||
// the url may point to the search field, which must be activated too
|
// the url may point to the search field, which must be activated too
|
||||||
if (! this.active) {
|
if (! this.active) {
|
||||||
this.setActive($('#menu form[action="' + this.icinga.utils.parseUrl(url).path + '"]'));
|
this.setActive(this.$menu.find('form[action="' + this.icinga.utils.parseUrl(url).path + '"]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// some urls may have custom filters which won't match any menu item, in that case search
|
// some urls may have custom filters which won't match any menu item, in that case search
|
||||||
// for a menu item that points to the base action without any filters
|
// for a menu item that points to the base action without any filters
|
||||||
if (! this.active) {
|
if (! this.active) {
|
||||||
this.setActive($('#menu [href="' + this.icinga.utils.parseUrl(url).path + '"]').first());
|
this.setActive(this.$menu.find('[href="' + this.icinga.utils.parseUrl(url).path + '"]').first());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -179,10 +181,10 @@
|
|||||||
*/
|
*/
|
||||||
Navigation.prototype.clear = function() {
|
Navigation.prototype.clear = function() {
|
||||||
// menu items
|
// menu items
|
||||||
$('#menu li.active', this.element).removeClass('active');
|
this.$menu.find('li.active').removeClass('active');
|
||||||
|
|
||||||
// search fields
|
// search fields
|
||||||
$('#menu input.active', this.element).removeClass('active');
|
this.$menu.find('input.active').removeClass('active');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -350,23 +352,6 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Navigation.prototype.dropdownHover = function () {
|
|
||||||
$(this).addClass('hover');
|
|
||||||
};
|
|
||||||
|
|
||||||
Navigation.prototype.dropdownLeave = function (event) {
|
|
||||||
var $li = $(this),
|
|
||||||
_this = event.data.self;
|
|
||||||
setTimeout(function () {
|
|
||||||
// TODO: make this behave well together with keyboard navigation
|
|
||||||
try {
|
|
||||||
if (!$li.is('li:hover') /*&& ! $li.find('a:focus')*/) {
|
|
||||||
$li.removeClass('hover');
|
|
||||||
}
|
|
||||||
} catch(e) { /* Bypass because if IE8 */ }
|
|
||||||
}, 300);
|
|
||||||
_this.hovered = null;
|
|
||||||
};
|
|
||||||
Icinga.Behaviors.Navigation = Navigation;
|
Icinga.Behaviors.Navigation = Navigation;
|
||||||
|
|
||||||
}) (Icinga, jQuery);
|
}) (Icinga, jQuery);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user