/** * @provides javelin-behavior-user-menu * @requires javelin-behavior */ JX.behavior('user-menu', function(config) { var node = JX.$(config.menuID); var list = JX.$H(config.menu.items).getFragment().firstChild; var menu = new JX.PHUIXDropdownMenu(node); menu.listen('open', function() { menu.setContent(list); }); // When the user navigates to a new page, we may need to update the links // to documentation in the menu. JX.Stratcom.listen('quicksand-redraw', null, function(e) { var data = e.getData(); var new_help = data.newResponse.helpItems; var nodes; if (new_help) { nodes = JX.$H(new_help.items).getFragment().firstChild.children; } else { nodes = []; } var ii; var tail = []; for (ii = list.children.length - 1; ii >= 0; ii--) { var node = list.children[ii]; // Remove any old help items. if (JX.Stratcom.hasSigil(node.firstChild, 'help-item')) { JX.DOM.remove(node); } // Place the logout items aside, if any exist. if (JX.Stratcom.hasSigil(node.firstChild, 'logout-item')) { JX.DOM.remove(node); tail.push(node); } } while (nodes.length) { list.appendChild(nodes[0]); } tail.reverse(); for (ii = 0; ii < tail.length; ii++) { list.appendChild(tail[ii]); } }); });