Author: taylor
Date: Mon Dec 21 04:07:14 2015
New Revision: 1721082

URL: http://svn.apache.org/viewvc?rev=1721082&view=rev
Log:
JS2-1348: implemented 2 new portlets, search and search results

Added:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/PortletToPageMap.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchInfo.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchResultsPortlet.java
      - copied, changed from r1709948, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/SearchResources.properties
      - copied, changed from r1709942, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search-results.jsp
      - copied, changed from r1709947, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp
Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp

Added: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/PortletToPageMap.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/PortletToPageMap.java?rev=1721082&view=auto
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/PortletToPageMap.java
 (added)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/PortletToPageMap.java
 Mon Dec 21 04:07:14 2015
@@ -0,0 +1,52 @@
+package org.apache.jetspeed.portlets.search;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by dtaylor on 12/5/15.
+ */
+public class PortletToPageMap {
+    private Map<String, List<String>> portletMap;
+    private Map<String, List<String>> contentMap;
+
+    public PortletToPageMap() {
+        portletMap = new ConcurrentHashMap<>();
+        contentMap = new ConcurrentHashMap<>();
+    }
+
+    public void putPortlet(String portlet, String pagePath) {
+        List<String> pages = portletMap.get(portlet);
+        if (pages == null) {
+            pages = new ArrayList<>();
+            portletMap.put(portlet, pages);
+        }
+        pages.add(pagePath);
+    }
+
+    public void putContent(String contentPath, String pagePath) {
+        List<String> pages = contentMap.get(contentPath);
+        if (pages == null) {
+            pages = new ArrayList<>();
+            contentMap.put(contentPath, pages);
+        }
+        pages.add(pagePath);
+    }
+
+    public List<String> getPortlet(String portlet) {
+        return portletMap.get(portlet);
+    }
+    public List<String> getContent(String portlet) {
+        return contentMap.get(portlet);
+    }
+
+    public int portletSize() {
+        return portletMap.size();
+    }
+
+    public int contentSize() {
+        return contentMap.size();
+    }
+}

Added: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchInfo.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchInfo.java?rev=1721082&view=auto
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchInfo.java
 (added)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchInfo.java
 Mon Dec 21 04:07:14 2015
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.portlets.search;
+
+/**
+ * Created by dtaylor on 12/4/15.
+ */
+public class SearchInfo {
+
+    private String title;
+    private String type;
+    private String key;
+    private Float score;
+    private String description;
+    private String link;
+
+    public SearchInfo(String title, String type, String key, Float score, 
String description, String link) {
+        this.title = title;
+        this.type = type;
+        this.key = key;
+        this.score = score;
+        this.description = description;
+        this.link = link;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public Float getScore() {
+        return score;
+    }
+
+    public void setScore(Float score) {
+        this.score = score;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+}

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java?rev=1721082&r1=1721081&r2=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
 Mon Dec 21 04:07:14 2015
@@ -17,16 +17,36 @@
 package org.apache.jetspeed.portlets.search;
 
 import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.administration.PortalAdministration;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.FragmentDefinition;
+import org.apache.jetspeed.om.page.FragmentReference;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.portlet.PortletDefinition;
+import org.apache.jetspeed.om.portlet.Preference;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.Node;
+import org.apache.jetspeed.page.document.NodeSet;
+import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchEngine;
+import org.apache.jetspeed.search.SearchResults;
 import org.apache.portals.bridges.common.GenericServletPortlet;
 
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletContext;
 import javax.portlet.PortletException;
+import javax.portlet.PortletSession;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * Jetspeed Search Portlet
@@ -34,27 +54,193 @@ import java.io.IOException;
  * @author <a href="mailto:tay...@apache.org";>David Sean Taylor</a>
  * @version $Id$
  */
-public class SearchPortlet extends GenericServletPortlet
-{
+public class SearchPortlet extends GenericServletPortlet {
+    public static final String SEARCH_KEY = "SEARCH_KEY";
+    public static final String SEARCH_RESULTS = "SEARCH_RESULTS";
+    public static final String DEFAULT_SEARCH_RESULTS_PAGE = 
"/search/results.psml";
+
     private SearchEngine searchEngine;
+    private PortalAdministration admin;
+    private PageManager pageManager;
+    private PortletRegistry portletRegistry;
+
+    private String filePreference;
+    private String portletClass;
+    private String mountPoint;
 
-    public void init(PortletConfig config) throws PortletException
-    {
+    public void init(PortletConfig config) throws PortletException {
         super.init(config);
         PortletContext context = getPortletContext();
         searchEngine = (SearchEngine) 
context.getAttribute(CommonPortletServices.CPS_SEARCH_COMPONENT);
-        if (searchEngine == null)
-                throw new PortletException(
-                        "Could not get instance of portal Search Engine 
component");
+        if (searchEngine == null) {
+            throw new PortletException(
+                    "Could not get instance of portal Search Engine 
component");
+        }
+        admin = (PortalAdministration) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_PORTAL_ADMINISTRATION);
+        if (null == admin) {
+            throw new PortletException(
+                    "Failed to find the Portal Administration on portlet 
initialization");
+        }
+        pageManager = (PageManager) 
context.getAttribute(CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (pageManager == null)
+            throw new PortletException(
+                    "Could not get instance of portal PageManager component");
+        portletRegistry = (PortletRegistry) 
context.getAttribute(CommonPortletServices.CPS_REGISTRY_COMPONENT);
+        if (portletRegistry == null)
+            throw new PortletException(
+                    "Could not get instance of portal PortletRegistry 
component");
+        filePreference = config.getInitParameter("FilePreference");
+        portletClass = config.getInitParameter("PortletClass");
+        mountPoint = config.getInitParameter("MountPoint");
+
     }
 
     public void doView(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException
-    {    
-        RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
+            throws PortletException, IOException {
         String viewPage = getPortletConfig().getInitParameter("ViewPage");
         getPortletContext().getRequestDispatcher(viewPage).include(request, 
response);
-        // TODO: complete this portlet
     }
 
+    @Override
+    public void processAction(ActionRequest request, ActionResponse 
actionResponse) throws PortletException, IOException {
+        String jsSearch = request.getParameter("jsSearch");
+        if (jsSearch == null) {
+            jsSearch = "";
+        }
+        SearchResults searchResults = searchEngine.search(jsSearch);
+        List<SearchInfo> searchInfoResults = new ArrayList<>();
+        for (ParsedObject result : searchResults.getResults()) {
+            if (result.getType().equals("url")) {
+                int index = result.getTitle().indexOf(mountPoint);
+                if (index > -1) {
+                    String key = result.getTitle().substring(index);
+                    if (key != null) {
+                        List<String> links = 
getPortletToPageMap().getContent(key);
+                        String link = getBestLink(links);
+                        searchInfoResults.add(new SearchInfo(key, 
result.getType(), link, result.getScore(), result.getDescription(),
+                                admin.getPortalURL(request, actionResponse, 
link)));
+                    }
+                }
+            } else {
+                String key = 
result.getKey().substring(result.getKey().indexOf("::") + 2);
+                List<String> links = getPortletToPageMap().getPortlet(key);
+                String link = getBestLink(links);
+                searchInfoResults.add(new SearchInfo(result.getTitle(), 
result.getType(), key, result.getScore(), result.getDescription(),
+                        admin.getPortalURL(request, actionResponse, link)));
+            }
+        }
+        request.getPortletSession().setAttribute(SEARCH_RESULTS, 
searchInfoResults, PortletSession.APPLICATION_SCOPE);
+        request.getPortletSession().setAttribute(SEARCH_KEY, jsSearch, 
PortletSession.APPLICATION_SCOPE);
+        String redirect = admin.getPortalURL(request, actionResponse, 
DEFAULT_SEARCH_RESULTS_PAGE);
+        actionResponse.sendRedirect(redirect);
+    }
+
+    private static PortletToPageMap map = null;
+
+    private PortletToPageMap getPortletToPageMap() {
+        if (map == null) {
+            System.out.println(".... starting loading of portlet page map");
+            long start = System.currentTimeMillis();
+            map = buildPortletToPageMap();
+            System.out.println(".... completed loading of " + 
map.portletSize() + " portlet page map in " + (System.currentTimeMillis() - 
start) + " ms");
+        }
+        return map;
+    }
+
+    /**
+     * Build a map of portlets to pages where they exist
+     *
+     * @return
+     */
+    private synchronized PortletToPageMap buildPortletToPageMap() {
+        PortletToPageMap map = new PortletToPageMap();
+        try {
+            Folder root = pageManager.getFolder("/");
+            traverse(root, map);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return map;
+    }
+
+    private void traverse(Folder folder, PortletToPageMap map) {
+        try {
+            for (Node node : folder.getAll()) {
+                switch (node.getType()) {
+                    case Folder.FOLDER_TYPE:
+                        traverse((Folder) node, map);
+                        break;
+                    case Page.DOCUMENT_TYPE:
+                        visitPortlets((Fragment) ((Page) 
node).getRootFragment(), map, node.getPath());
+                        break;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void visitPortlets(Fragment root, PortletToPageMap map, String 
pagePath) {
+        try {
+            for (BaseFragmentElement f : root.getFragments()) {
+                if (f instanceof FragmentReference) {
+                    FragmentReference fragmentReference = (FragmentReference) 
f;
+                    NodeSet definitions = 
pageManager.getFragmentDefinitions(pageManager.getFolder("/"));
+                    Iterator<Node> it = definitions.iterator();
+                    while (it.hasNext()) {
+                        Node n = it.next();
+                        Fragment fragment = (Fragment) ((FragmentDefinition) 
n).getRootFragment();
+                        String contentPath = 
getContentFilePath(fragment.getName());
+                        if (contentPath != null) {
+                            map.putContent(contentPath, pagePath);
+                        } else {
+                            map.putPortlet(fragment.getName(), pagePath);
+                        }
+                    }
+                } else {
+                    Fragment fragment = (Fragment) f;
+                    String contentPath = 
getContentFilePath(fragment.getName());
+                    if (contentPath != null) {
+                        map.putContent(contentPath, pagePath);
+                    } else {
+                        map.putPortlet(fragment.getName(), pagePath);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private String getContentFilePath(String uniqueName) {
+        PortletDefinition portlet = 
portletRegistry.getPortletDefinitionByUniqueName(uniqueName);
+        if (portlet != null) {
+            if (portlet.getPortletClass().equals(portletClass)) {
+                Preference pref = 
portlet.getPortletPreferences().getPortletPreference(filePreference);
+                if (pref != null) {
+                    List<String> values = pref.getValues();
+                    if (values.size() > 0) {
+                        return values.get(0);
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    private String getBestLink(List<String> links) {
+        if (links == null || links.size() == 0) {
+            return "/";
+        }
+        String best = links.get(0);
+        for (String link: links) {
+            if (link.startsWith("/_")) {
+                continue;
+            }
+            best = link;
+        }
+        return best;
+    }
 }

Copied: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchResultsPortlet.java
 (from r1709948, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java)
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchResultsPortlet.java?p2=portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchResultsPortlet.java&p1=portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java&r1=1709948&r2=1721082&rev=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchPortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/search/SearchResultsPortlet.java
 Mon Dec 21 04:07:14 2015
@@ -17,16 +17,18 @@
 package org.apache.jetspeed.portlets.search;
 
 import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.search.SearchEngine;
 import org.apache.portals.bridges.common.GenericServletPortlet;
 
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletContext;
 import javax.portlet.PortletException;
+import javax.portlet.PortletSession;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Jetspeed Search Portlet
@@ -34,27 +36,31 @@ import java.io.IOException;
  * @author <a href="mailto:tay...@apache.org";>David Sean Taylor</a>
  * @version $Id$
  */
-public class SearchPortlet extends GenericServletPortlet
-{
+public class SearchResultsPortlet extends GenericServletPortlet {
+    public static final String SEARCH_PAGE_MAP = "searchPageMap";
     private SearchEngine searchEngine;
 
-    public void init(PortletConfig config) throws PortletException
-    {
+    public void init(PortletConfig config) throws PortletException {
         super.init(config);
         PortletContext context = getPortletContext();
         searchEngine = (SearchEngine) 
context.getAttribute(CommonPortletServices.CPS_SEARCH_COMPONENT);
         if (searchEngine == null)
-                throw new PortletException(
-                        "Could not get instance of portal Search Engine 
component");
+            throw new PortletException(
+                    "Could not get instance of portal Search Engine 
component");
     }
 
     public void doView(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException
-    {    
-        RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
+            throws PortletException, IOException {
+
         String viewPage = getPortletConfig().getInitParameter("ViewPage");
+        List<SearchInfo> results = (List<SearchInfo>) 
request.getPortletSession().getAttribute(SearchPortlet.SEARCH_RESULTS, 
PortletSession.APPLICATION_SCOPE);
+        if (results == null) {
+            results = new ArrayList<>();
+        }
+        String searchKey = (String) 
request.getPortletSession().getAttribute(SearchPortlet.SEARCH_KEY, 
PortletSession.APPLICATION_SCOPE);
+        request.setAttribute(SearchPortlet.SEARCH_KEY, searchKey);
+        request.setAttribute(SearchPortlet.SEARCH_RESULTS, results);
         getPortletContext().getRequestDispatcher(viewPage).include(request, 
response);
-        // TODO: complete this portlet
     }
 
-}
+}
\ No newline at end of file

Copied: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/SearchResources.properties
 (from r1709942, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties)
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/SearchResources.properties?p2=portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/SearchResources.properties&p1=portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties&r1=1709942&r2=1721082&rev=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/search/resources/SearchResources.properties
 Mon Dec 21 04:07:14 2015
@@ -16,42 +16,8 @@
 # $Id$
 #
 
-spaces.label.name = Name
-spaces.label.title = Title
-spaces.label.description = Description
-spaces.label.owner = Owner
-spaces.label.security = Security
-spaces.label.theme = Theme
-spaces.table.title = Spaces
-spaces.label.edit = Edit
-spaces.label.delete = Delete
-spaces.label.add = Add Space
-spaces.label.edit.current = Edit Current Space
-spaces.label.save = Save
-spaces.label.cancel = Cancel
-spaces.message.forbidden = You are not allowed to edit the current space.
-spaces.message.confirm.delete = Are you sure to delete this item?
-
-spaces.pages.label.nodeType.folder = Folder
-spaces.pages.label.nodeType..psml = Page
-spaces.pages.label.nodeType..link = Link
-spaces.pages.label.add = Add
-spaces.pages.label.rename = Rename
-spaces.pages.label.documentOrdering = Document Ordering
-spaces.pages.label.changeUrl = Change URL
-spaces.pages.label.delete = Delete
-spaces.pages.label.move = Move
-spaces.pages.label.copy = Copy
-spaces.pages.label.space.title = {0}
-spaces.pages.label.template = Template
-spaces.pages.label.close = Close
-spaces.pages.label.ok = OK
-spaces.pages.label.cancel = Cancel
-spaces.pages.message.prompt.title = Please enter the title.
-spaces.pages.message.prompt.url = Please enter the URL.
-spaces.pages.message.confirm.delete = Are you sure to delete this item?
-spaces.pages.message.confirm.choosefolder = Choose a target folder.
-spaces.pages.message.confirm.move = Are you sure to move this item?
-spaces.pages.message.confirm.copy = Are you sure to copy this item?
-spaces.pages.message.choose.different.target = Please choose a different 
target folder from the current folder.
-spaces.pages.message.choose.existing.target = There already exists the same 
item in the target folder.
+search.label.title = Title
+search.label.type = Type
+search.label.name = Name
+search.label.score = Score
+search.label.description = Description

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml?rev=1721082&r1=1721081&r2=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
 Mon Dec 21 04:07:14 2015
@@ -2865,6 +2865,20 @@
         <name>ViewPage</name>
         <value>/WEB-INF/view/search/search.jsp</value>
     </init-param>
+
+    <init-param>
+      <name>FilePreference</name>
+      <value>file</value>
+    </init-param>
+    <init-param>
+      <name>PortletClass</name>
+      <value>org.apache.portals.gems.file.FilePortlet</value>
+    </init-param>
+    <init-param>
+      <name>MountPoint</name>
+      <value>/WEB-INF</value>
+    </init-param>
+
     <supports>
       <mime-type>text/html</mime-type>
       <portlet-mode>VIEW</portlet-mode>
@@ -2876,6 +2890,26 @@
     </portlet-info>
   </portlet>
 
+  <portlet>
+    <description>Search Results Portlet</description>
+    <portlet-name>SearchResultsPortlet</portlet-name>
+    <display-name>Search Results Portlet</display-name>
+    
<portlet-class>org.apache.jetspeed.portlets.search.SearchResultsPortlet</portlet-class>
+    <init-param>
+      <name>ViewPage</name>
+      <value>/WEB-INF/view/search/search-results.jsp</value>
+    </init-param>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <portlet-info>
+      <title>Search Results</title>
+      <keywords>search,find,results,searchresults</keywords>
+    </portlet-info>
+  </portlet>
+
   <custom-portlet-mode>
     <description>Custom About Mode</description>
     <portlet-mode>about</portlet-mode>

Copied: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search-results.jsp
 (from r1709947, 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp)
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search-results.jsp?p2=portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search-results.jsp&p1=portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp&r1=1709947&r2=1721082&rev=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search-results.jsp
 Mon Dec 21 04:07:14 2015
@@ -15,13 +15,46 @@ See the License for the specific languag
 limitations under the License.
 
 --%>
+<%@page contentType="text/html" %>
 <%@page import="java.util.List"%>
-<%@page import="org.apache.jetspeed.page.document.Node"%>
-<%@page 
import="org.apache.jetspeed.portlets.spaces.BreadcrumbMenu.BreadcrumbMenuItem" 
%>
-<%@ page contentType="text/html" %>
-<%@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
+<%@page import="org.apache.jetspeed.portlets.spaces.SpaceBean"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"; prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/portlet"; prefix="portlet"%>
 <portlet:defineObjects/>
+<fmt:setBundle 
basename="org.apache.jetspeed.portlets.search.resources.SearchResources" />
+
+<form id='jsSearchList' method="POST" action='<portlet:actionURL/>'>
+    <table width='100%'>
+        <tr>
+            <th class="portlet-section-subheader"><fmt:message 
key="search.label.title"/></th>
+            <th class="portlet-section-subheader"><fmt:message 
key="search.label.type"/></th>
+            <th class="portlet-section-subheader"><fmt:message 
key="search.label.name"/></th>
+            <th class="portlet-section-subheader"><fmt:message 
key="search.label.score"/></th>
+            <th class="portlet-section-subheader"><fmt:message 
key="search.label.description"/></th>
+        </tr>
+        <c:forEach var="item" items="${SEARCH_RESULTS}" varStatus="status">
+            <c:choose>
+                <c:when test="${status.index % 2 == 0}">
+                    <c:set var="styleClass" 
value="'portlet-section-alternate'" />
+                </c:when>
+                <c:otherwise>
+                    <c:set var="styleClass" value="'portlet-section-body'" />
+                </c:otherwise>
+            </c:choose>
+            <tr>
+                <td class="${styleClass}">
+                    <a href="${item.link}">${item.title}</a>
+                </td>
+                <td class="${styleClass}">${item.type}</td>
+                <td class="${styleClass}">${item.key}</td>
+                <td class="${styleClass}">${item.score}</td>
+                <td class="${styleClass}">${item.description}</td>
+            </tr>
+        </c:forEach>
+        <tr>
+            <th class="portlet-section-header" colspan="5"></th>
+        </tr>
+    </table>
+</form>
 
-<input id="jsSearch" type="search" style='font-size: 8pt' 
placeholder='Search'/>
\ No newline at end of file

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp?rev=1721082&r1=1721081&r2=1721082&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/search/search.jsp
 Mon Dec 21 04:07:14 2015
@@ -24,4 +24,18 @@ limitations under the License.
 <%@ taglib uri="http://java.sun.com/portlet"; prefix="portlet"%>
 <portlet:defineObjects/>
 
-<input id="jsSearch" type="search" style='font-size: 8pt' 
placeholder='Search'/>
\ No newline at end of file
+<c:if test="${renderRequest.getUserPrincipal() != null}">
+<script type="text/javascript" language="javascript">
+    function submitJetspeedSearch(event) {
+        if (event.which == 13 || event.keyCode == 13) {
+            
document.getElementById("<portlet:namespace/>-jetspeedSearchForm").submit();
+            return false;
+        }
+        return true;
+    };
+</script>
+
+<form id='<portlet:namespace/>=-jetspeedSearchForm' method="POST" 
action="<portlet:actionURL/>">
+    <input id="jsSearch" name='jsSearch' type="search" style='font-size: 8pt' 
placeholder='Search' onkeypress="return submitJetspeedSearch(event)" />
+</form>
+</c:if>
\ No newline at end of file



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

Reply via email to