portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tay...@apache.org
Subject svn commit: r500088 - in /portals/jetspeed-2/trunk/applications/j2-admin/src: java/org/apache/jetspeed/portlets/ java/org/apache/jetspeed/portlets/selector/ webapp/WEB-INF/view/selectors/
Date Fri, 26 Jan 2007 01:57:49 GMT
Author: taylor
Date: Thu Jan 25 17:57:48 2007
New Revision: 500088

URL: http://svn.apache.org/viewvc?view=rev&rev=500088
Log:
https://issues.apache.org/jira/browse/JS2-635
In the portlet selector.count against the portlet doesn't match with number of that portlet
on the same page
Paging functionality implemented as well.

contribution from Vivek Kumar

Modified:
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/PortletInfo.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
    portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/selectors/category-portlet-selector.vm

Modified: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/PortletInfo.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/PortletInfo.java?view=diff&rev=500088&r1=500087&r2=500088
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/PortletInfo.java
(original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/PortletInfo.java
Thu Jan 25 17:57:48 2007
@@ -31,8 +31,9 @@
     String displayName;
     String description;
     String image;
+    int count;
     
-    public PortletInfo(String name, String displayName, String description)
+	public PortletInfo(String name, String displayName, String description)
     {
         this.name = name;
         this.displayName = displayName;
@@ -47,6 +48,16 @@
         this.image = image;
     }
     
+    public PortletInfo(String name, String displayName, String description, String image,int
count)
+    {
+        this.name = name;
+        this.displayName = displayName;
+        this.description = description;
+        this.image = image;
+        this.count = count;
+    }
+    
+    
     /**
      * @return Returns the description.
      */
@@ -86,4 +97,23 @@
     {
         this.image = image;
     }
+    /**
+	 * @return the count
+	 */
+	public int getCount() {
+		return count;
+	}
+
+	/**
+	 * @param count the count to set
+	 */
+	public void setCount(int count) {
+		this.count = count;
+	}
+
+	public Object clone() throws CloneNotSupportedException {
+		return new PortletInfo(this.name,this.displayName,this.description,this.image,this.count);
+	}
+	
+	
 }

Modified: portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java?view=diff&rev=500088&r1=500087&r2=500088
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
(original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
Thu Jan 25 17:57:48 2007
@@ -22,6 +22,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
@@ -49,6 +50,11 @@
 import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
 import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
 import org.apache.jetspeed.om.common.preference.PreferenceComposite;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.Node;
 import org.apache.jetspeed.portlets.CategoryInfo;
 import org.apache.jetspeed.portlets.PortletInfo;
 import org.apache.jetspeed.search.ParsedObject;
@@ -78,10 +84,14 @@
     protected final static String PORTLETS = "category.selector.portlets";
     protected final static String CATEGORIES = "category.selector.categories";
     protected final static String PAGE = "category.selector.page";
-    public final static String JSPAGE = "jspage";
+    private final  String JSPAGE = "jspage";
+	private final String CATEGORY = "category";
+	private final String PAGENUMNER = "pageNumber";
+	private final String FILTER = "filter";
     
     protected PortletRegistry registry;
     protected SearchEngine searchEngine;
+    protected PageManager pageManager;
     protected Random rand;
     
     public void init(PortletConfig config)
@@ -99,16 +109,39 @@
         {
             throw new PortletException("Failed to find the Search Engine on portlet initialization");
         }
+        pageManager = (PageManager)context.getAttribute(CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (null == pageManager)
+        {
+            throw new PortletException("Failed to find the Page Manager on portlet initialization");
+        }        
         rand = new Random( 19580427 );
     }
     
     public void doView(RenderRequest request, RenderResponse response)
             throws PortletException, IOException
     {
-        PortletPreferences prefs = request.getPreferences();
-        this.getContext(request).put("Columns", prefs.getValue("Columns", "4"));
-        this.getContext(request).put("Rows", prefs.getValue("Rows", "6"));
-        this.getContext(request).put("portlets", retrievePortlets(request, null));
+    	String category = "All";
+    	String pageNumber = "";	
+		String row = "";		
+		String columns = "";
+		int portletPerPages=0;
+    	PortletPreferences prefs = request.getPreferences();
+		category = request.getParameter(CATEGORY);
+		pageNumber = request.getParameter(PAGENUMNER);
+		String filter = request.getParameter(FILTER);
+		columns = prefs.getValue("Columns", "4");
+		row = prefs.getValue("Rows", "6");
+		portletPerPages = Integer.parseInt(columns) * Integer.parseInt(row);
+		if (category == null || category.equals("")) category = "All";
+		if (pageNumber == null || pageNumber.equals("")) pageNumber = "1";
+		if (filter == null ||  filter.equals("")) filter = null;
+		CategoryResult result = getPortlets(request, category, pageNumber, portletPerPages, filter);
+        this.getContext(request).put("Columns", columns);
+        this.getContext(request).put("Rows", row);
+        this.getContext(request).put("pageNumber", pageNumber);
+        this.getContext(request).put("category", category);
+        this.getContext(request).put("portlets", mergePortletCount(result.getList(),request));
+        this.getContext(request).put("Count", new Integer(result.getResultSize()));
         this.getContext(request).put("categories", retrieveCategories(request));
         processPage(request);
         super.doView(request, response);
@@ -125,8 +158,7 @@
         {
             request.getPortletSession().setAttribute(PAGE, page);
         }
-        this.getContext(request).put(JSPAGE, page);
-        
+        this.getContext(request).put(JSPAGE, page);        
     }
     
     public List retrieveCategories(RenderRequest request)
@@ -191,7 +223,7 @@
     public List retrievePortlets(RenderRequest request, String filter)
     {
         List portletsList = (List)request.getPortletSession().getAttribute(PORTLETS);
-        if (portletsList != null)
+        if (filter == null && portletsList != null)
         {
             return portletsList;
         }        
@@ -218,11 +250,41 @@
             }
         }            
         Collections.sort(list, this);
-        request.getPortletSession().setAttribute(PORTLETS, list);
+        if(filter == null ) request.getPortletSession().setAttribute(PORTLETS, list);
         return list;
     }
-
     
+
+    private List mergePortletCount(List sysPortlets,
+			RenderRequest request) {
+		List list = new ArrayList();
+		int sPortletCnt = 0;
+		Iterator iterator;
+		String usrPortletName = null;
+		PortletInfo tmpPortletInfo = null;
+		String portletName;
+		try {
+			Map usrPortlet = getUserPortlet(getPage(request));
+			sPortletCnt = sysPortlets.size();
+			for (int si = 0; si < sPortletCnt; si++) {
+				tmpPortletInfo = (PortletInfo)((PortletInfo)sysPortlets.get(si)).clone(); 
+				portletName = tmpPortletInfo.getName();
+				iterator = usrPortlet.keySet().iterator();
+				while (iterator.hasNext()) {
+					usrPortletName = (String) iterator.next();
+					if (usrPortletName.equalsIgnoreCase(portletName)) {
+						tmpPortletInfo.setCount(((Integer)usrPortlet.get(usrPortletName)).intValue());
+					}
+				}
+				list.add(tmpPortletInfo);
+				tmpPortletInfo = null;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return list;
+	}
+
     
     /**
      * Filters portlets being added to the based on security checks and layout criteria
@@ -437,8 +499,8 @@
             actionResponse.setRenderParameter(JSPAGE, page);
         }
         else
-        {
-            String reset = request.getParameter("reset");        
+        {            
+        	String reset = request.getParameter("reset");        
             if (reset != null && reset.equals("true"))
             {
                 PortletSession session = request.getPortletSession();
@@ -572,4 +634,130 @@
         processPage(request);
         super.doEdit(request, response);
     }
+    
+    private CategoryResult getPortlets(RenderRequest request,
+			String category, String pageNumber, int portletPerPages,String filter) {
+		List list = new ArrayList();
+		List tmpList = null;
+		List catList = null;
+		Iterator iterator = null;
+		int portletCount = 0;
+		CategoryInfo catInfo = null;
+		int strtCnt = getStartRow(pageNumber, portletPerPages);
+		int endCnt = getEndRow(pageNumber, portletPerPages);
+		try {			
+			if (category.equalsIgnoreCase("all")) {				
+				tmpList = retrievePortlets(request, filter);
+				portletCount = tmpList.size();
+				if (endCnt > portletCount)
+					endCnt = portletCount;
+				for (int index = strtCnt; index < endCnt; index++) {
+					list.add(tmpList.get(index));
+				}
+			} else if (category.equalsIgnoreCase("search")) {
+				tmpList = retrievePortlets(request, filter);
+				portletCount = tmpList.size();
+				if (endCnt > portletCount)
+					endCnt = portletCount;
+				for (int index = strtCnt; index < endCnt; index++) {
+					list.add(tmpList.get(index));
+				}
+			} else {
+				tmpList =  retrieveCategories(request);
+				iterator = tmpList.iterator();
+				while (iterator.hasNext()) {
+					catInfo = (CategoryInfo) iterator.next();
+					if (catInfo.getName().equalsIgnoreCase(category)) {
+						catList = catInfo.getPortlets();
+						break;
+					}
+				}
+				portletCount = catList.size();
+				if (endCnt > portletCount)
+					endCnt = portletCount;
+				for (int index = strtCnt; index < endCnt; index++) {
+					list.add(catList.get(index));
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return new CategoryResult(list, portletCount);
+	}
+    
+    
+	private int getStartRow(String sPageNumber, int portletPerPages) {
+		int iPageNumber = Integer.parseInt(sPageNumber);
+		return (iPageNumber - 1) * portletPerPages;
+	}
+
+	private int getEndRow(String sPageNumber,int portletPerPages) {
+		int iPageNumber = Integer.parseInt(sPageNumber);
+		return iPageNumber * portletPerPages;
+	}
+	private Map getUserPortlet(Page page) {
+		int portletCount = 0;
+		Map map = new HashMap();
+		try {
+			Fragment fragment;
+			Iterator it = page.getRootFragment().getFragments().iterator();
+			while (it.hasNext()) {
+				fragment = (Fragment) it.next();
+				if (map.containsKey(fragment.getName())) {
+					portletCount =((Integer) map.get(fragment.getName())).intValue();				
+					map.put(fragment.getName(), new Integer(portletCount + 1));					
+				} else {
+					map.put(fragment.getName(), new Integer(1));
+				}
+			}
+		} catch (Exception e) {
+			System.out.println(e.getMessage());
+			e.printStackTrace();
+		}
+		return map;
+	}
+	private Page getPage(RenderRequest request) throws Exception
+	{
+		String user = request.getUserPrincipal().getName();
+		String page = request.getParameter("jspage");
+		String path;
+		if (page.equals("/")) page= Node.PATH_SEPARATOR + Folder.FALLBACK_DEFAULT_PAGE;
+		if (user.equals("admin"))
+		{
+			path  = page;
+		}else
+		{
+			path  = Folder.USER_FOLDER  + user + page;
+		}
+		return pageManager.getPage(path);                 
+
+	}
+	class CategoryResult {
+		List list;
+
+		int resultSize;
+
+		/**
+		 * @param list
+		 * @param resultSize
+		 */
+		public CategoryResult(List list, int resultSize) {
+			this.list = list;
+			this.resultSize = resultSize;
+		}
+
+		/**
+		 * @return the list
+		 */
+		public List getList() {
+			return list;
+		}
+
+		/**
+		 * @return the resultSize
+		 */
+		public int getResultSize() {
+			return resultSize;
+		}
+	}
 }

Modified: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/selectors/category-portlet-selector.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/selectors/category-portlet-selector.vm?view=diff&rev=500088&r1=500087&r2=500088
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/selectors/category-portlet-selector.vm
(original)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/selectors/category-portlet-selector.vm
Thu Jan 25 17:57:48 2007
@@ -15,15 +15,20 @@
 *#
 #set ($refreshLink = $renderResponse.createActionURL())
 $refreshLink.setParameter("reset","true")
+#set ($renderLink = $renderResponse.createRenderURL())
+#set ($pagePath = $renderRequest.getParameter("jspage"))
 <!-- Search Form -->
 <form id='jsSelectorForm' onSubmit='return false;' style="height:21px; padding: 2px; margin:10px">
 <table>
 <tr>
 <td nowrap class="portlet-section-alternate" align="right">Search for portlets:&nbsp;</td>
 <td nowrap class="portlet-section-alternate">
-<input type="text" name="searchString" id="searchString" size="40" value="$!searchString"
class="portlet-form-field-label">    
+<input type="text" name="filter" id="searchString" size="40" value="$!searchString" class="portlet-form-field-label">
   
 <input type="submit" value="Search" onClick='javascript:performSearch();'>
 <input type="submit" value="Refresh" onClick="javascript:performRefresh()">
+<input type="hidden" value="$category" id="category" name="category">
+<input type="hidden" value="$pageNumber" id="pageNumber" name="pageNumber">
+<input type="hidden" value="$pagePath" id="pageNumber" name="jspage">
 </td>
 <td nowrap>
 <a href='' id='previousButton'><img style="border:none" src="images/portlets/go-previous.png"></a>
@@ -34,21 +39,35 @@
 
 <table id='ctable' cellspacing="5" cellpadding="5" style="margin:10px">
 </table>
+<table id='pagtable' border="1" cellspacing="10" cellpadding="1" align="center">
+    <tr>
+        <td>
+            <table id='pagtable1' border="1" cellspacing="10" cellpadding="1">
+            </table>
+        </td>
+        <td>
+            <table id='pagtable2' border="1" cellspacing="10" cellpadding="1">
+            </table>
+        </td>
+        <td>
+            <table id='pagtable3' border="1" cellspacing="10" cellpadding="1">
+            </table>
+        </td>    
+</table>
 <table id='ptable' border="1" cellspacing="10" cellpadding="1">
 </table>
 <script language="JavaScript" type="text/javascript">
-function PortletInfo(name, display, desc, image)
+function PortletInfo(name, display, desc, image, count)
 {
   this.name = name;
   this.display = display;
   this.desc = desc;
   this.image = image;
-  this.count = 0;
+  this.count = count;
 }
 function CategoryInfo(name)
 {
    this.name = name;
-   this.portlets = new Array();
 }
 function performRefresh()
 {
@@ -56,100 +75,26 @@
    searchForm.action = "$refreshLink";
    searchForm.submit();
 }
-function displayPortlets(cat)
-{                                             
-   if (cat == null)
-   {
-      cat = "All"; // TODO: localize
-   }
-   var currentPortlets = selectorPortlets;
-
-   for (i=0; i < this.categories.length; i++)
-   {
-       if (this.categories[i].name == cat)
-       {
-          catPortlets = this.categories[i].portlets;
-          break;
-       }
-   }
-    var ptable = document.getElementById('ptable');
-    while (ptable.hasChildNodes())
-    {
-      ptable.removeChild(ptable.lastChild);
-    }
-    var portletCount = 0;
-    var rowCount = 0;
-    var columns = $Columns;
-    var outerRow = null;
-    // TODO: rows
-    for (iz = 0; iz <  catPortlets.length; iz++)
-    {         
-         var cellIndex = portletCount % columns;
-         if (cellIndex == 0)
-         {
-             outerRow = ptable.insertRow(rowCount);
-             rowCount = rowCount + 1;
-         }
-         var cell = outerRow.insertCell(cellIndex);            
-         var pt1 = document.createElement("table");
-         var row0 = pt1.insertRow(0);
-         var c0 = row0.insertCell(0);
-         var c1 = row0.insertCell(1);
-         c1.setAttribute("style","font-size: 9pt; color: blue;");
-         //c1.setAttribute("class","portlet-selector-title");
-         var image = new Image();
-
-         image.src = currentPortlets[catPortlets[iz]].image;
-
-         c0.appendChild(image);
-         c1.innerHTML = currentPortlets[catPortlets[iz]].display;
-        
-         var pt2 = document.createElement("table");
-         var row1 = pt2.insertRow(0);
-         c0 = row1.insertCell(0);
-         c0.setAttribute("style","font-size: 8pt; color: green;");
-         //c0.setAttribute("class","portlet-selector-text");
-         c0.innerHTML = currentPortlets[catPortlets[iz]].desc;
-         
-         var pt3 = document.createElement("table");
-         var row3 = pt3.insertRow(0);
-         c0 = row3.insertCell(0);
-         c0.setAttribute("style","font-size: 8pt; color: blue;");
-         var a = document.createElement("a");
-         a.innerHTML = "Add"; // TODO: localize
-         a.href = "javascript:addPortletToPage(" + "\"" + currentPortlets[catPortlets[iz]].name
+ "\"" + ")";
-         c0.appendChild(a);
-         c1 = row3.insertCell(1);
-         c1.innerHTML = "Count: " + currentPortlets[catPortlets[iz]].count; // TODO: localize
-         c1.setAttribute("style","font-size: 8pt; color: blue;");
-         c1.setAttribute("id", currentPortlets[catPortlets[iz]].name);
-
-         cell.appendChild(pt1);
-         cell.appendChild(pt2);
-         cell.appendChild(pt3);
-         portletCount = portletCount + 1;
-    }
-    highlightSelectedCategory(cat);
-}
-function addPortletToPage(theNewPortlet)
+function addPortletToPage(theNewPortlet,pID)
 {                                                      
    //dojo.widget.byId("AddPortletDialog").hide();   
    var portletDef = new jetspeed.om.PortletDef( theNewPortlet );   
    var pagePath = jetspeed.url.basePortalUrl() + jetspeed.url.path.AJAX_API + getReturnPagePath();
    jetspeed.addNewPortletDefinition( portletDef, null, pagePath, getAddToLayoutId() );
-   selectorPortlets[theNewPortlet].count = selectorPortlets[theNewPortlet].count + 1;
+   selectorPortlets[pID].count = parseInt(selectorPortlets[pID].count) + 1;
    var cell = document.getElementById(theNewPortlet);
    if (cell != null)
    {
-      cell.innerHTML = "Count: " + selectorPortlets[theNewPortlet].count; // TODO: localize
+      cell.innerHTML = "Count: " + selectorPortlets[pID].count; // TODO: localize
    }   
 }
 function performSearch()
 {
-   var ix = this.categories.length-1;
-   this.categories[ix].portlets = new Array();    
-   var searchString = document.getElementById("searchString").value;
-   jetspeed.searchForPortletDefinitions(searchString, searchFinishedFunction);
+    var searchForm = document.getElementById('jsSelectorForm');	
+    	document.getElementById("category").value = 'Search';
+    document.getElementById("pageNumber").value='1';
+    searchForm.action = "$renderLink";
+    searchForm.submit();
 }
 function searchFinishedFunction(domainObjects, portletList)
 {
@@ -175,51 +120,216 @@
              a.setAttribute("style", "font-weight:normal");
     }
 }
-function initializePortletSelector()
+function createPagination(Pagenumber,PageCount)
 {
-    categories[0] = new CategoryInfo("All");
-    #foreach ( $portlet in $portlets )
-    selectorPortlets["$portlet.Name"] = new PortletInfo("$portlet.Name", "$!portlet.DisplayName",
"$!portlet.Description", "$!portlet.Image");
-    #set ($count = $velocityCount - 1)
-    categories[0].portlets[$count] = "$portlet.Name";
-    #end
-    #foreach ( $cat in $categories)
-    categories[$velocityCount] = new CategoryInfo("$cat.Name");
-    #set ($icount = $velocityCount)
-    #foreach ( $portlet in $cat.Portlets )
-    #set ($jcount = $velocityCount - 1)
-    categories[$icount].portlets[$jcount] = "$portlet.Name";
-    #end
-    #end
-    var ctable = document.getElementById('ctable');
-    var row = ctable.insertRow(0);
-    for(i=0; i<categories.length; i++)
-    {    
-         var c1 = row.insertCell(i);
-         var a = document.createElement("a");
-         a.innerHTML = categories[i].name;
-         a.href = "javascript:displayPortlets(" + "\"" + categories[i].name + "\"" + ")";
-         a.setAttribute("style", "font-weight:normal");
-         c1.appendChild(a);
+    var pagtable1 = document.getElementById('pagtable1');   
+    while (pagtable1.hasChildNodes())
+    {
+      pagtable1.removeChild(pagtable1.lastChild);
     }
-     categories[categories.length] = new CategoryInfo("Search"); // TODO: localize
-     var c1 = row.insertCell(i);
-     var a = document.createElement("a");
-     a.innerHTML = categories[i].name;
-     a.href = "javascript:displayPortlets(" + "\"" + categories[i].name + "\"" + ")";
-     a.setAttribute("style", "font-weight:normal");
-     c1.appendChild(a);
-     var c2 = row.insertCell(i+1);
-     var a2 = document.createElement("a");
-     a2.innerHTML = "[Go Back]";  // TODO: localize
-     // TODO: determine if JETSPEED or DESKTOP 
-     a2.href = getReturnURL();
-     a2.setAttribute("style", "font-weight:normal");
-     c2.appendChild(a2);
-     var prevButton = document.getElementById("previousButton");
-     prevButton.setAttribute('href', getReturnURL());
-     displayPortlets("All");
+    var pagtable3 = document.getElementById('pagtable3');   
+    while (pagtable3.hasChildNodes())
+    {
+      pagtable3.removeChild(pagtable3.lastChild);
+    }
+    
+    var pagtable = document.getElementById('pagtable2');   
+    while (pagtable.hasChildNodes())
+    {
+      pagtable.removeChild(pagtable.lastChild);
+    }    
+    var pgRoww = null;
+    var pgCol=null;
+    var a = null;    
+    pgRoww = pagtable1.insertRow(0);
+    pgCol = pgRoww.insertCell(0);
+    if (Pagenumber != 1)
+    {
+        a = document.createElement("a");
+        a.innerHTML = 'Previous';
+        a.href = "javascript:displayPortlets(" + "\"" + (Pagenumber-1)+ "\"" + ")";
+        pgCol.appendChild(a);              
+        pgCol = pgRoww.insertCell(1);    
+        a = document.createElement("a");
+        a.innerHTML = 'First';
+        a.href = "javascript:displayPortlets(" + "\"" + 1+ "\"" + ")";
+        pgCol.appendChild(a);              
+    }
+    
+    if (PageCount > 1)
+    {
+        var pgRoww = pagtable.insertRow(0);
+        var pgCol=null;
+        var a = null;  
+        for(iz=0;iz<PageCount;iz++)
+        {
+            pgCol = pgRoww.insertCell(iz);
+            if (Pagenumber != iz+1){
+                a = document.createElement("a");
+                a.innerHTML = iz+1;
+                a.href = "javascript:displayPortlets(" + "\"" + (iz+1) + "\"" + ")";
+                pgCol.appendChild(a);       
+            }else{
+                pgCol.innerHTML = (iz+1);
+            }       
+         }
+     }
+    pgRoww = pagtable3.insertRow(0);
+    pgCol = pgRoww.insertCell(0);
+    if (Pagenumber != PageCount)
+    {
+        if (PageCount > 1)	
+        {
+			          a = document.createElement("a");
+          			a.innerHTML = 'Last';
+          			a.href = "javascript:displayPortlets(" + "\"" + PageCount+ "\"" + ")";
+          			pgCol.appendChild(a);              
+          			pgCol = pgRoww.insertCell(1);   
+          			a = document.createElement("a");    
+          			a.innerHTML = 'Next';
+          			a.href = "javascript:displayPortlets(" + "\"" + (parseInt(Pagenumber)+1)+ "\""
+ ")";
+          			pgCol.appendChild(a);              
+        		}
+    }
+}
+
+function categoriesBar()
+{
+	  categories[0] = new CategoryInfo("All");    
+  #foreach ( $cat in $categories)
+  		  categories[$velocityCount] = new CategoryInfo("$cat.Name");
+    		#set ($icount = $velocityCount)
+  #end
+  var ctable = document.getElementById('ctable');
+  var row = ctable.insertRow(0);
+  for(i=0; i<categories.length; i++)
+  {    
+    var c1 = row.insertCell(i);
+    var a = document.createElement("a");
+    a.innerHTML = categories[i].name;
+    a.href = "javascript:displayCategorties(" + "\"" + categories[i].name + "\"" + ")";
+    a.setAttribute("style", "font-weight:normal");
+    c1.appendChild(a);
+  }
+  categories[categories.length] = new CategoryInfo("Search"); // TODO: localize
+  var c1 = row.insertCell(i);
+  var a = document.createElement("a");
+  a.innerHTML = categories[i].name;
+  a.href = "javascript:displayCategorties(" + "\"" + categories[i].name + "\"" + ")";
+  a.setAttribute("style", "font-weight:normal");
+  c1.appendChild(a);
+  var c2 = row.insertCell(i+1);
+  var a2 = document.createElement("a");
+  a2.innerHTML = "[Go Back]";  // TODO: localize
+  // TODO: determine if JETSPEED or DESKTOP 
+  a2.href = getReturnURL();
+  a2.setAttribute("style", "font-weight:normal");
+  c2.appendChild(a2);
+  var prevButton = document.getElementById("previousButton");
+  prevButton.setAttribute('href', getReturnURL());
 }
+function displayGridPortlet()
+{
+  //var currentPortlets = selectorPortlets;
+  	//getting portlet table and deleting all items
+  	//befor adding the new
+  	var ptable = document.getElementById('ptable');
+  while (ptable.hasChildNodes())
+  {
+      ptable.removeChild(ptable.lastChild);
+  }
+  	var outerRow = null;
+  	var iz = 0;
+  	var ri = 0;
+  	var ci = 0;
+  //for(ri=0;ri<$Rows;ri++)
+		  //alert(' s ' +  selectorPortlets.length);
+  		while(iz<selectorPortlets.length)
+		  {
+    			//alert('cret  iz ' + iz);	
+    			//alert('cret  row ' + ci);	
+    			if (iz > 0)
+    			{
+      				//alert('cret  row ' + iz % $Columns);	
+      				if (iz % $Columns ==0)
+      				{
+        ri =  ri+1;
+        					ci = 0;
+        					outerRow = ptable.insertRow(ri);								
+      				}
+    			}
+    			else
+    			{
+      					outerRow = ptable.insertRow(ri);								
+    			}		
+		   		 var cell = outerRow.insertCell(ci);            
+   				 // Creating the image and Name table		
+	   			 var pt1 = document.createElement("table");
+				    var row0 = pt1.insertRow(0);
+				    var c0 = row0.insertCell(0);
+   				 var c1 = row0.insertCell(1);
+				    c1.setAttribute("style","font-size: 9pt; color: blue;");
+				    var image = new Image();
+				    image.src = selectorPortlets[iz].image;
+	   			 c0.appendChild(image);
+   				 c1.innerHTML = selectorPortlets[iz].display;
+				 
+   				 // Creating description table
+   				 var pt2 = document.createElement("table");
+   				 var row1 = pt2.insertRow(0);
+   				 c0 = row1.insertCell(0);
+				    c0.setAttribute("style","font-size: 8pt; color: green;");
+   				 c0.innerHTML = selectorPortlets[iz].desc;
+				 
+   				 // Creating the Add link and count table
+   				 var pt3 = document.createElement("table");
+   				 var row3 = pt3.insertRow(0);
+   				 c0 = row3.insertCell(0);
+   				 c0.setAttribute("style","font-size: 8pt; color: blue;");
+   				 var a = document.createElement("a");
+   				 a.innerHTML = "Add"; // TODO: localize
+   				 a.href = "javascript:addPortletToPage("+"\""+selectorPortlets[iz].name+"\""+",\""
+ iz + "\")";
+   				 c0.appendChild(a);
+   				 c1 = row3.insertCell(1);
+   				 // TODO: localize
+   				 c1.innerHTML = "Count: " + selectorPortlets[iz].count;
+   				 c1.setAttribute("style","font-size: 8pt; color: blue;");
+   				 c1.setAttribute("id", selectorPortlets[iz].name);
+
+   				 //Adding the final tables in Cell
+   				 cell.appendChild(pt1);
+   				 cell.appendChild(pt2);
+   				 cell.appendChild(pt3);
+    				iz=iz+1;
+    				ci =  ci + 1;
+  			//}
+		  }
+}
+function initializePortletSelector()
+{
+  categoriesBar();
+  	var pageCount = getPageCount($Count,$Columns*$Rows);	
+  	displayGridPortlet();
+  	createPagination($pageNumber,pageCount);
+  	highlightSelectedCategory('$category');
+}
+function displayCategorties(category)
+{
+  	renderPage(category,1);
+}
+function displayPortlets(pageNumber)
+{
+	renderPage(document.getElementById("category").value,pageNumber);
+}
+function renderPage(category,pageNumber)
+{
+	document.getElementById("category").value = category;
+    document.getElementById("pageNumber").value=pageNumber;
+    var searchForm = document.getElementById('jsSelectorForm');
+    searchForm.action = "$renderLink";
+    searchForm.submit();
+}
+
 function getReturnPagePath()
 {
    var jsPagePath = jetspeed.url.getQueryParameter( document.location.href, "jspage" );
@@ -227,6 +337,15 @@
       jsPagePath = "";
    return jsPagePath;
 }
+function getPageCount(portletCount,portletPerPage)
+{
+		  var tmp = Math.floor(portletCount / portletPerPage);
+		  if (portletCount % portletPerPage > 0) {
+			    return (tmp + 1);
+  		} else {
+    			return (tmp);
+  		}
+}
 function getAddToLayoutId()
 {
    var jsLayoutId = jetspeed.url.getQueryParameter( document.location.href, "jslayoutid"
);
@@ -236,8 +355,12 @@
 {
    return jetspeed.url.basePortalUrl() + jetspeed.url.path.JETSPEED + jetspeed.url.servletPath()
+ getReturnPagePath();
 }
-
 window.selectorPortlets = new Array();
 window.categories = new Array();
+#set ($count = 0)
+#foreach ( $portlet in $portlets )
+   selectorPortlets[$count] = new PortletInfo("$portlet.Name", "$!portlet.DisplayName", "$!portlet.Description",
"$!portlet.Image", "$!portlet.Count");
+   #set ($count = $count + 1)
+#end
 dojo.addOnLoad( window.initializePortletSelector );
 </script>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message