You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2009/11/20 20:03:28 UTC
svn commit: r882673 - in
/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox:
toolbox-portlets.jsp toolbox.jsp
Author: woonsan
Date: Fri Nov 20 19:03:23 2009
New Revision: 882673
URL: http://svn.apache.org/viewvc?rev=882673&view=rev
Log:
JS2-1057: Implementing filtering by search query and category selection.
Removed:
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox-portlets.jsp
Modified:
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp?rev=882673&r1=882672&r2=882673&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp Fri Nov 20 19:03:23 2009
@@ -36,47 +36,16 @@
<c:set var="portalContextPath" value="/"/>
</c:if>
-<script language="javascript" type="text/javascript">
-var <portlet:namespace/>tabs = null;
-function <portlet:namespace/>showTab(tabId) {
- if (<portlet:namespace/>tabs == null) {
- <portlet:namespace/>tabs = new Array();
- <portlet:namespace/>tabs['portletsTab'] = document.getElementById('<portlet:namespace/>portletsTab');
- <portlet:namespace/>tabs['layoutsTab'] = document.getElementById('<portlet:namespace/>layoutsTab');
- <portlet:namespace/>tabs['themesTab'] = document.getElementById('<portlet:namespace/>themesTab');
- <portlet:namespace/>tabs['widgetsTab'] = document.getElementById('<portlet:namespace/>widgetsTab');
- }
- for (var key in <portlet:namespace/>tabs) {
- if (key == tabId) {
- <portlet:namespace/>tabs[key].style.display = "";
- } else {
- <portlet:namespace/>tabs[key].style.display = "none";
- }
- }
-}
-function <portlet:namespace/>category_onchange(sel) {
- var url = '<portlet:resourceURL id="/WEB-INF/view/toolbox/toolbox-portlets.jsp"/>';
- // TODO: ajax call to retrieve portlets info
-}
-function <portlet:namespace/>toggleCategory(cat) {
- var div = document.getElementById('<portlet:namespace/>PortletsOf' + cat);
- if (div) {
- div.style.display = (div.style.display == "none" ? "" : "none");
- }
-}
-
-</script>
-
<table style="border-collapse: collapse; width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
<tr>
<td class="portlet-section-subheader" colspan='10'>
- <a href="javascript:<portlet:namespace/>showTab('portletsTab');">Portlets</a>
+ <a href="#" id="<portlet:namespace/>portletsTabAction">Portlets</a>
|
- <a href="javascript:<portlet:namespace/>showTab('layoutsTab');">Layout</a>
+ <a href="#" id="<portlet:namespace/>layoutsTabAction">Layout</a>
|
- <a href="javascript:<portlet:namespace/>showTab('themesTab');">Theme</a>
+ <a href="#" id="<portlet:namespace/>themesTabAction">Theme</a>
|
- <a href="javascript:<portlet:namespace/>showTab('widgetsTab');">Widgets</a>
+ <a href="#" id="<portlet:namespace/>widgetsTabAction">Widgets</a>
</td>
</tr>
</table>
@@ -95,7 +64,7 @@
<tr>
<td class="portlet-section-subheader" colspan='10'>
- <select onchange="return <portlet:namespace/>category_onchange(this);">
+ <select id="<portlet:namespace/>categories">
<option value="">All categories</option>
<c:forEach var="category" items="${categories}">
<option value="${category.name}">${category.name}</option>
@@ -106,10 +75,7 @@
<tr>
<td>
- <div style="height: 400px; overflow: auto;">
- <table id="<portlet:namespace/>portletsTable" class="portlet-panel-portlets" style="border-collapse: collapse; width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
- </table>
- </div>
+ <div id="<portlet:namespace/>portletItemsPanel" style="height: 400px; overflow: auto;"></div>
</td>
</tr>
@@ -119,22 +85,24 @@
</form>
</table>
-<table id="<portlet:namespace/>portletItemTemplate" style="display: none; border-collapse: collapse; width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
- <tr>
- <td rowspan="2" width="20%" class="portlet-section-body">
- <img src='${portalContextPath}' />
- </td>
- <td width="80%" class="portlet-section-body">
- <div>#</span>
- </td>
- </tr>
- <tr>
- <td class="portlet-section-body">
- <a href="#">Preview</a>
- <a href="#">Add</a>
- </td>
- </tr>
-</table>
+<div id="<portlet:namespace/>portletItemTemplate" style="display: none">
+ <table style="border-collapse: collapse; width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
+ <tr>
+ <td rowspan="2" width="20%" class="portlet-section-body">
+ <img src='${portalContextPath}' />
+ </td>
+ <td width="80%" class="portlet-section-body">
+ <div>#</span>
+ </td>
+ </tr>
+ <tr>
+ <td class="portlet-section-body">
+ <a href="#">Preview</a>
+ <a href="#">Add</a>
+ </td>
+ </tr>
+ </table>
+</div>
<table id="<portlet:namespace/>layoutsTab" style="display: none; border-collapse: collapse; width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
<tr>
@@ -201,10 +169,21 @@
<script language="javascript">
YUI(yuiConfig).use('io', 'dataschema-json', 'node-base', function(Y) {
+
+ function switchTab(e) {
+ var tabId = e.target.get("id");
+
+ Y.Node.one("#<portlet:namespace/>portletsTab").setStyle("display", (tabId == "<portlet:namespace/>portletsTabAction" ? "" : "none"));
+ Y.Node.one("#<portlet:namespace/>layoutsTab").setStyle("display", (tabId == "<portlet:namespace/>layoutsTabAction" ? "" : "none"));
+ Y.Node.one("#<portlet:namespace/>themesTab").setStyle("display", (tabId == "<portlet:namespace/>themesTabAction" ? "" : "none"));
+ Y.Node.one("#<portlet:namespace/>widgetsTab").setStyle("display", (tabId == "<portlet:namespace/>widgetsTabAction" ? "" : "none"));
+
+ e.halt();
+ }
+
var onLoadPortletComplete = function(id, o, args) {
var id = id; // Transaction ID.
var data = o.responseText; // Response data.
- var portletsTable = Y.Node.one("#<portlet:namespace/>portletsTable");
var schemaPortletList = {
metaFields: {status:"status", action:"action"},
resultListLocator: "portlets",
@@ -228,6 +207,11 @@
return;
}
+ var portletsPanel = Y.Node.one("#<portlet:namespace/>portletItemsPanel");
+ var clonedPortletsPanel = portletsPanel.cloneNode(false);
+ portletsPanel.get("parentNode").replaceChild(clonedPortletsPanel, portletsPanel);
+ portletsPanel = clonedPortletsPanel;
+
var templatePanel = Y.Node.one("#<portlet:namespace/>portletItemTemplate");
var results = dataOut.results;
for (var i = 0; i < results.length; i++) {
@@ -247,29 +231,46 @@
clone.all("a").item(1).set("href", addActionURL);
</c:if>
- // TODO: add handlers for add and preview
- // TODO: limit # of portlets to n...
- // TODO: support paging...
+ // TODO: add handlers for preview
+
clone.set("id", "<portlet:namespace/>portletItem-" + item.name);
- portletsTable.appendChild(clone);
+ portletsPanel.appendChild(clone);
}
};
- var loadPortlets = function() {
- var uri = document.location.href;
- uri = uri.replace("/ui/", "/ajaxapi/").replace(/#$/, "");
- uri += "?action=getportlets&format=json";
- var filter = Y.Node.one("#<portlet:namespace/>query").get("value");
- if (filter) {
- uri += "&filter=" + filter;
+ var loadPortletsInCategory = function(e) {
+ var categories = Y.Node.getDOMNode(e.target);
+ var category = categories.options[categories.selectedIndex].value;
+ var uri = "${portalContextPath}/ajaxapi/?action=getportlets&format=json";
+ if (category) {
+ uri += "&filter=" + category;
}
Y.on('io:complete', onLoadPortletComplete, this, []);
var request = Y.io(uri);
+
+ Y.Node.one("#<portlet:namespace/>query").set("value", "");
+ }
+
+ var loadPortletsByQuery = function(e) {
+ var query = Y.Node.one("#<portlet:namespace/>query").get("value");
+ var uri = "${portalContextPath}/ajaxapi/?action=getportlets&format=json";
+ if (query) {
+ uri += "&filter=" + query;
+ }
+ Y.on('io:complete', onLoadPortletComplete, this, []);
+ var request = Y.io(uri);
+
+ Y.Node.getDOMNode(Y.Node.one("#<portlet:namespace/>categories")).selectedIndex = 0;
};
- Y.on("click", loadPortlets, "#<portlet:namespace/>search");
+ Y.on("click", switchTab, "#<portlet:namespace/>portletsTabAction");
+ Y.on("click", switchTab, "#<portlet:namespace/>layoutsTabAction");
+ Y.on("click", switchTab, "#<portlet:namespace/>themesTabAction");
+ Y.on("click", switchTab, "#<portlet:namespace/>widgetsTabAction");
+ Y.on("change", loadPortletsInCategory, "#<portlet:namespace/>categories");
+ Y.on("click", loadPortletsByQuery, "#<portlet:namespace/>search");
- loadPortlets();
+ loadPortletsByQuery("");
});
</script>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org