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