RCUE Navigation

https://fedorahosted.org/freeipa/ticket/3902
This commit is contained in:
Petr Vobornik
2013-10-11 17:19:40 +02:00
committed by Martin Kosek
parent 99bdfe8ac3
commit b69d30072a
5 changed files with 50 additions and 245 deletions

View File

@@ -194,172 +194,6 @@ textarea[readonly] {
word-wrap: break-word;
}
/* ---- Navigation ---- */
.navigation {
position: absolute;
top: 34px;
left: 6px;
right: 6px;
height: 102px;
}
.navigation ul {
list-style-type: none;
}
.navigation .submenu li {
float: left;
position: relative;
list-style: none;
white-space:nowrap;
}
/*
.navigation.tabs-3 {
height: 150px;
}*/
.submenu {
width: 100%;
/* min-height: 4em;
background: transparent;*/
}
/* ---- Navigation level 1 ---- */
.menu-level-1 > ul {
height: 38px;
padding: 34px 0 0;
margin: 0;
/* border: none;*/
}
.menu-level-1 > ul > li {
height: 36px;
padding: 0 18px;
border: 1px solid #A0A0A0;
border-bottom:none;
background-image: url(images/mainnav-tab-off.png);
margin: 0 0.4em 0 0;
text-align: center;
vertical-align:baseline;
}
.menu-level-1 > ul > li.ui-state-hover,
.menu-level-1 > ul > li:hover {
background: url(images/hover-tab.png);
}
.menu-level-1 > ul > li.selected {
padding-bottom: 1px;
background-image: url(images/mainnav-tab-on.png);
}
.menu-level-1 > ul > li > a {
font-family: "Overpass Bold","Liberation Sans", Arial, sans-serif;
min-width: 5em;
line-height: 38px;
color: #858585;
margin: 0 auto;
text-align:center;
font-size:1.5em;
text-shadow: 1px 1px 0 #FFFFFF;
}
.menu-level-1 > ul > li.selected > a {
color: #1e5e05;
}
/* ---- Navigation level 2 ---- */
.menu-level-2 {
display: block;
border-width: 0;
padding: 0 0 0 0;
background-color: transparent;
}
.menu-level-2 > ul {
padding: 5px 24px 1px;
margin: 0;
height: 25px;
}
.menu-level-2 > ul > li {
width: auto;
margin: 0;
color: white;
padding-top: 3px;
}
.menu-level-2 > ul > li.selected {
background: url(images/nav-arrow.png) no-repeat scroll center 2.1em transparent !important;
height: 31px;
border: none;
margin: 0;
}
.menu-level-2 > ul > li > a {
width:auto;
padding: 0.3em 0.8em ;
-moz-border-radius: 2em !important;
-webkit-border-radius: 2em !important;
border-radius: 2em !important;
color: #333333;
font-size: 1em;
font-family: "Liberation Sans", Arial, Sans;
margin: 0 0.3em;
}
.menu-level-2 > ul > li.selected > a,
.menu-level-2 > ul > li > a:hover {
background-color:#EEEEEE;
color: #164304;
text-shadow: 1px 1px 0 #FFFFFF;
}
/* ---- Navigation level 3 ---- */
.menu-level-3 {
height: 28px;
}
.menu-level-3 > ul {
padding: 0 22px 0.1em;
}
.menu-level-3 > ul > li {
margin: 0 2.4em 1px 0;
}
.menu-level-3 > ul > li > a {
width: auto;
margin: 0;
padding: 0.3em 0 0.3em 0;
font-family: "Overpass", "Liberation Sans", Arial, sans-serif;
font-size: 1.2em;
text-transform: uppercase;
color: #858585;
}
.menu-level-3 > ul > li.selected > a {
font-family: "Overpass Bold", "Liberation Sans", Arial, sans-serif;
color: #1e5e05;
}
/* ---- Content ---- */
.content {
position: absolute;
top: 151px;
left: 6px;
right: 6px;
bottom: 10px;
}
.content.nav-space-3 {
top: 175px;
}
/* ---- Entity ---- */
.entity {

View File

@@ -106,6 +106,7 @@ return declare([Evented],
if (!item.title) item.title = facet.title;
}
item.hidden = !!item.hidden;
item.selected = false;
// check parent

View File

@@ -107,7 +107,7 @@ define(['dojo/_base/declare',
this._render_header();
this.menu_node = this.menu_widget.render();
construct.place(this.menu_node, this.domNode);
construct.place(this.menu_node, this.header_node);
this.content_node = construct.create('div', {
'class': 'content'
@@ -116,7 +116,7 @@ define(['dojo/_base/declare',
_render_header: function() {
this.header_node = construct.create('div', {
'class': 'header'
'class': 'header rcue'
}, this.domNode);
// logo

View File

@@ -30,8 +30,9 @@ define(['dojo/_base/declare',
'dojo/query',
'dojo/Evented',
'dojo/on',
'../jquery',
'../ipa'], function(declare, array, lang, dom, construct, prop, dom_class,
dom_style, attr, query, Evented, on, IPA) {
dom_style, attr, query, Evented, on, $, IPA) {
return declare([Evented], {
/**
@@ -86,7 +87,7 @@ define(['dojo/_base/declare',
'class': 'navbar-inner'
}, this.domNode);
if (this.menu) {
this._render_children(null, this.innerNode, 1);
this._render_children(null, null, this.innerNode, 1);
}
return this.domNode;
},
@@ -101,9 +102,12 @@ define(['dojo/_base/declare',
_render_level_container: function(node, level) {
var lvl_class = this._get_lvl_class(level);
var type_cls = 'nav';
if (level === 2) type_cls = 'persistent';
if (level > 2) type_cls = 'dropdown-menu';
var cont = construct.create('ul', {
'class': 'nav ' + lvl_class
'class': type_cls + ' ' + lvl_class
}, node);
return cont;
},
@@ -115,20 +119,33 @@ define(['dojo/_base/declare',
var self = this;
var click_handler = function(event) {
if (event.defaultPrevented) return;
self.item_clicked(menu_item, event);
event.preventDefault();
};
var li_node = construct.create('li', {
var item_node = construct.create('li', {
'data-name': menu_item.name,
click: click_handler
}, container);
});
var a_node = construct.create('a', {}, item_node);
var a_node = construct.create('a', {}, li_node);
this._update_item(menu_item, li_node);
var children = this._get_children(menu_item);
if (level > 1 && children.total > 0) {
dom_class.add(item_node, 'dropdown-submenu');
dom_class.add(a_node, 'dropdown-toggle');
prop.set(item_node, 'onclick', undefined);
attr.set(a_node, 'data-toggle', 'dropdown');
attr.set(a_node, 'data-target', '#');
$(a_node).dropdown();
}
this._update_item(menu_item, item_node);
// create submenu
this._render_children(menu_item, container, level + 1);
this._render_children(menu_item, children, item_node, level + 1);
construct.place(item_node, container);
},
/**
@@ -140,11 +157,11 @@ define(['dojo/_base/declare',
* @param {HTMLElement} container
* @param {number} level
*/
_render_children: function(menu_item, container, level) {
_render_children: function(menu_item, children, container, level) {
var name = menu_item ? menu_item.name : null;
var children = this.menu.items.query({ parent: name },
{ sort: [{attribute:'position'}]});
if (children === null) {
children = this._get_children(menu_item);
}
if (children.total > 0) {
var item_container = this._render_level_container(container, level);
@@ -157,59 +174,12 @@ define(['dojo/_base/declare',
}
},
// /**
// * Render children of menu_item
// * Top level items are rendered if menu_items is null
// *
// * @protected
// * @param {navigation.MenuItem|null} menu_item
// * @param {HTMLElement} node
// * @param {number} level
// */
// _render_children2: function (menu_item, node, level) {
//
// var self = this;
// var name = menu_item ? menu_item.name : null;
// var children = this.menu.items.query({ parent: name },
// { sort: [{attribute:'position'}]});
//
// var lvl_class = this._get_lvl_class(level);
//
// if (children.total > 0) {
// var menu_node = construct.create('div', {
// 'class': 'submenu ' + lvl_class
// //style: { display: 'none' }
// });
//
// if (menu_item) {
// attr.set(menu_node, 'data-item', menu_item.name);
// }
//
// var ul_node = construct.create('ul', null, menu_node);
//
// array.forEach(children, function(menu_item) {
//
// var click_handler = function(event) {
// self.item_clicked(menu_item, event);
// event.preventDefault();
// };
//
// var li_node = construct.create('li', {
// 'data-name': menu_item.name,
// click: click_handler
// }, ul_node);
//
// var a_node = construct.create('a', {}, li_node);
//
// this._update_item(menu_item, li_node);
//
// // create submenu
// this._render_children(menu_item, menu_node, level + 1);
// }, this);
//
// construct.place(menu_node, node);
// }
// },
_get_children: function(menu_item) {
var name = menu_item ? menu_item.name : null;
var children = this.menu.items.query({ parent: name, hidden: false },
{ sort: [{attribute:'position'}]});
return children;
},
_get_lvl_class: function(level) {
return this.level_class + '-' + level;
@@ -238,7 +208,7 @@ define(['dojo/_base/declare',
}
dom_class.toggle(li_node, 'disabled', !!menu_item.disabled);
dom_class.toggle(li_node, 'selected', menu_item.selected);
dom_class.toggle(li_node, 'active', menu_item.selected);
dom_style.set(li_node, {
display: menu_item.hidden ? 'none': 'default'
});

View File

@@ -103,8 +103,8 @@ class test_navigation(UI_driver):
self.navigate_by_menu('identity/netgroup', False)
self.navigate_by_menu('identity/service', False)
if self.has_dns():
self.navigate_by_menu('identity/dns/dnsconfig', True)
self.navigate_by_menu('identity/dns', False)
self.navigate_by_menu('identity/dns/dnsconfig', False)
self.navigate_by_menu('identity/dns/dnszone', False)
else:
self.assert_menu_item('identity/dns', False)
@@ -116,32 +116,32 @@ class test_navigation(UI_driver):
self.navigate_by_menu('policy')
self.navigate_by_menu('policy/hbac', False)
self.navigate_by_menu('policy/hbac/hbacsvc', False)
self.navigate_by_menu('policy/hbac/hbacrule', False)
self.navigate_by_menu('policy/hbac/hbacsvcgroup', False)
self.navigate_by_menu('policy/hbac/hbactest', False)
self.navigate_by_menu('policy/hbac/hbacrule')
self.navigate_by_menu('policy/hbac/hbacsvcgroup')
self.navigate_by_menu('policy/hbac/hbactest')
self.navigate_by_menu('policy/sudo', False)
self.navigate_by_menu('policy/sudo/sudorule', False)
self.navigate_by_menu('policy/sudo/sudocmd', False)
self.navigate_by_menu('policy/sudo/sudocmdgroup', False)
self.navigate_by_menu('policy/sudo/sudocmd')
self.navigate_by_menu('policy/sudo/sudocmdgroup')
self.navigate_by_menu('policy/automount', False)
self.navigate_by_menu('policy/pwpolicy', False)
self.navigate_by_menu('policy/krbtpolicy', False)
self.navigate_by_menu('policy/selinuxusermap', False)
self.navigate_by_menu('policy/automember', False)
self.navigate_by_menu('policy/automember/amhostgroup', False)
self.navigate_by_menu('policy/automember/amgroup', False)
self.navigate_by_menu('policy/automember/amhostgroup')
self.navigate_by_menu('policy/automember/amgroup')
self.navigate_by_menu('ipaserver')
self.navigate_by_menu('ipaserver/rolebased', False)
self.navigate_by_menu('ipaserver/rolebased/privilege', False)
self.navigate_by_menu('ipaserver/rolebased/role', False)
self.navigate_by_menu('ipaserver/rolebased/permission', False)
self.navigate_by_menu('ipaserver/rolebased/role')
self.navigate_by_menu('ipaserver/rolebased/permission')
self.navigate_by_menu('ipaserver/selfservice', False)
self.navigate_by_menu('ipaserver/delegation', False)
self.navigate_by_menu('ipaserver/idrange', False)
if self.has_trusts():
self.navigate_by_menu('ipaserver/trusts', False)
self.navigate_by_menu('ipaserver/trusts/trust', False)
self.navigate_by_menu('ipaserver/trusts/trustconfig', False)
self.navigate_by_menu('ipaserver/trusts/trustconfig')
else:
self.assert_menu_item('ipaserver/trusts', False)
self.navigate_by_menu('ipaserver/config', False)