blob: 3e1e4472d7c640b044e63f690ffdce3aff0ecd49 [file] [log] [blame]
<%@ taglib uri="http://jakarta.apache.org/jspwiki.tld" prefix="wiki" %>
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ page import="com.ecyrd.jspwiki.log.Logger" %>
<%@ page import="com.ecyrd.jspwiki.log.LoggerFactory" %>
<%@ page import="com.ecyrd.jspwiki.*" %>
<%@ page import="com.ecyrd.jspwiki.ui.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.Collection" %>
<%@ page import="org.apache.commons.lang.*" %>
<%@ page import="org.apache.jspwiki.api.WikiPage" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="com.ecyrd.jspwiki.auth.*" %>
<%@ page import="com.ecyrd.jspwiki.auth.permissions.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
<%@ taglib uri="http://stripes.sourceforge.net/stripes.tld" prefix="stripes" %>
<%@ page import="com.ecyrd.jspwiki.search.SearchResult" %>
<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.SearchActionBean" event="find" id="wikiActionBean" />
<%!
public void jspInit()
{
wiki = WikiEngine.getInstance( getServletConfig() );
}
Logger log = LoggerFactory.getLogger("JSPWikiSearch");
WikiEngine wiki;
%>
<%
/* ********************* actual start ********************* */
/* FIXME: too much hackin on this level -- should better happen in toplevel jsp's */
/* Create wiki context and check for authorization */
WikiContext wikiContext = wiki.createContext( request, WikiContext.FIND );
String query = request.getParameter( "query");
if( (query != null) && ( !query.trim().equals("") ) )
{
try
{
Collection list = wiki.findPages( query );
// Filter down to only those that we actually have a permission to view
AuthorizationManager mgr = wiki.getAuthorizationManager();
ArrayList items = new ArrayList();
for( Iterator i = list.iterator(); i.hasNext(); )
{
SearchResult r = (SearchResult)i.next();
JCRWikiPage p = r.getPage();
PagePermission pp = new PagePermission( p, PagePermission.VIEW_ACTION );
try
{
if( mgr.checkPermission( wikiContext.getWikiSession(), pp ) )
{
items.add( r );
}
}
catch( Exception e ) { log.error( "Searching for page "+p, e ); }
}
pageContext.setAttribute( "searchresults", items, PageContext.REQUEST_SCOPE );
}
catch( Exception e )
{
wikiContext.getWikiSession().addMessage( e.getMessage() );
}
}
%>
<%
int startitem = 0; // first item to show
int maxitems = 20; // number of items to show in result
String parm_start = request.getParameter( "start");
if( parm_start != null ) startitem = Integer.parseInt( parm_start ) ;
Collection list = (Collection)pageContext.getAttribute( "searchresults", PageContext.REQUEST_SCOPE );
if( startitem == -1 ) maxitems = list.size(); //show all
%>
<wiki:SearchResults>
<h4><fmt:message key="find.heading.results"><fmt:param><c:out value="${param.query}" /></fmt:param></fmt:message></h4>
<p>
<fmt:message key="find.externalsearch" />
<a class="external" href="http://www.google.com/search?q=<c:out value='${param.query}' />" title="Google Search '<c:out value='${param.query}' />'" target="_blank">Google</a><img class="outlink" src="images/out.png" alt="" />
|
<a class="external" href="http://en.wikipedia.org/wiki/Special:Search?search=<c:out value='${param.query}' />" title="Wikipedia Search '<c:out value='${param.query}' />'" target="_blank">Wikipedia</a><img class="outlink" src="images/out.png" alt="" />
</p>
<wiki:SetPagination start="${param.start}" total="<%=list.size()%>" pagesize="20" maxlinks="9" fmtkey="info.pagination" onclick="$('start').value=%s; SearchBox.runfullsearch();" />
<div class="graphBars">
<div class="zebra-table">
<table class="wikitable">
<tr>
<th align="left"><fmt:message key="find.results.page" /></th>
<th align="left"><fmt:message key="find.results.score" /></th>
</tr>
<wiki:SearchResultIterator id="searchref" start="${param.start}" maxItems="<%=maxitems%>">
<tr>
<td><wiki:LinkTo><wiki:PageName/></wiki:LinkTo></td>
<td><span class="gBar"><%= searchref.getScore() %></span></td>
</tr>
<c:if test="${param.details == 'on'}">
<%
String[] contexts = searchref.getContexts();
if( (contexts != null) && (contexts.length > 0) )
{
%>
<tr class="odd">
<td colspan="2">
<div class="fragment">
<%
for (int i = 0; i < contexts.length; i++)
{
%>
<%= (i > 0 ) ? "<span class='fragment_ellipsis'> ... </span>" : "" %>
<%= contexts[i] %>
<%
}
%>
</div>
</td>
</tr>
<%
}
%>
</c:if><%-- details --%>
</wiki:SearchResultIterator>
<wiki:IfNoSearchResults>
<tr>
<td class="nosearchresult" colspan="2"><fmt:message key="find.noresults" /></td>
</tr>
</wiki:IfNoSearchResults>
</table>
</div>
</div>
${pagination}
</wiki:SearchResults>