var LayoutConfiguration = { categories : [], initialized : false, loadingImage : null, menu : null, menuDiv : null, menuIframe : null, portlets : [], showTimer : 0, init : function () { var arrow1 = new Image(); var arrow2 = new Image(); arrow1.src = themeDisplay.getPathThemeImages() + "/arrows/01_down.png"; arrow2.src = themeDisplay.getPathThemeImages() + "/arrows/01_right.png"; var menu = document.getElementById("portal_add_content"); LayoutConfiguration.menu = menu; if (menu != null) { var list = menu.childNodes; for (var i = 0; i < list.length; i++) { if (list[i].className != null && list[i].className.match("portal-add-content")) { LayoutConfiguration.menuDiv = list[i]; } if (list[i].nodeName != null && list[i].nodeName.toLowerCase().match("iframe")) { LayoutConfiguration.menuIframe = list[i]; } } var elems = menu.getElementsByTagName("div"); for (var i = 0; i < elems.length; i++) { if (elems[i].className == "layout_configuration_portlet") { LayoutConfiguration.portlets.push(elems[i]); } else if (elems[i].className == "layout_configuration_category") { LayoutConfiguration.categories.push(elems[i]); } } LayoutConfiguration.initialized = true; jQuery('#layout_configuration_content').trigger('focus').addClass('focus'); } }, toggle : function (plid, ppid, doAsUserId) { if (!LayoutConfiguration.menu) { var url = themeDisplay.getPathMain() + "/portal/render_portlet?p_l_id=" + plid + "&p_p_id=" + ppid + "&doAsUserId=" + doAsUserId + "&p_p_state=exclusive"; var popup = Liferay.Popup({ width: 250, noCenter: true, title: Liferay.Language.get("add-content"), onClose: function() { LayoutConfiguration.menu = null; } }); AjaxUtil.update(url, popup, { onComplete: function() { LayoutConfiguration.init(); Liferay.Util.addInputType(); Liferay.Util.addInputFocus(); } }); } }, startShowTimer : function (word) { if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = 0; } this.showTimer = setTimeout("LayoutConfiguration.showMatching(\"" + word + "\")", 250); }, showMatching : function (word) { var portlets = this.portlets; var categories = this.categories; if (word == "*") { for (var i = 0; i < portlets.length; i++) { portlets[i].style.display = "block"; } for (var i = 0; i < categories.length; i++) { categories[i].style.display = "block"; this.toggleCategory(categories[i].getElementsByTagName("table")[0], "block"); } } else if (word == "") { for (var i = 0; i < categories.length; i++) { categories[i].style.display = "block"; this.toggleCategory(categories[i].getElementsByTagName("table")[0], "none"); } for (var i = 0; i < portlets.length; i++) { portlets[i].style.display = "block"; } } else { word = word.toLowerCase().match(/[a-z,A-Z,0-9]*/g).join(""); for (var i = 0; i < categories.length; i++) { categories[i].style.display = "none"; } for (var i = 0; i < portlets.length; i++) { if (portlets[i].id.toLowerCase().match(word)) { portlets[i].style.display = "block"; this.showCategories(categories, portlets[i].id); } else { portlets[i].style.display = "none"; } } } }, showCategories : function (categories, name) { var colon = name.lastIndexOf(":"); while (colon != -1) { name = name.substr(0, colon); for (var i = 0; i < categories.length; i++) { if (name.match(categories[i].id)) { categories[i].style.display = "block"; this.toggleCategory(categories[i].getElementsByTagName("table")[0], "block"); } } colon = name.lastIndexOf(":"); } }, toggleCategory : function (obj, display) { var parent = obj; while(parent.nodeName.toLowerCase() != "table") { parent = parent.parentNode; } var data = parent.rows[1].cells[0]; var pane = jQuery(".layout_configuration_category_pane:first", data).get(0); var image = obj.getElementsByTagName("img")[0]; var imagePath = themeDisplay.getPathThemeImages(); if (display) { pane.style.display = display; if (display.toLowerCase().match("block")) { image.src = imagePath + "/arrows/01_down.png"; } else { image.src = imagePath + "/arrows/01_right.png"; } } else { if (Liferay.Util.toggle(pane, true)) { image.src = imagePath + "/arrows/01_down.png"; } else { image.src = imagePath + "/arrows/01_right.png"; } } } };