You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by my...@apache.org on 2010/08/29 20:10:57 UTC
svn commit: r990613 [4/4] - in /sling/trunk/contrib/explorers/jquery: ./
src/main/resources/libs/sling/explorer/css/
src/main/resources/libs/sling/explorer/js/
src/main/resources/libs/sling/servlet/default/explorer/
src/main/resources/libs/sling/servle...
Added: sling/trunk/contrib/explorers/jquery/src/main/resources/libs/sling/servlet/default/explorer/search.esp
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/jquery/src/main/resources/libs/sling/servlet/default/explorer/search.esp?rev=990613&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/jquery/src/main/resources/libs/sling/servlet/default/explorer/search.esp (added)
+++ sling/trunk/contrib/explorers/jquery/src/main/resources/libs/sling/servlet/default/explorer/search.esp Sun Aug 29 18:10:56 2010
@@ -0,0 +1,144 @@
+<%--
+/*
+ * 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.
+ */
+--%>
+<%--
+
+--%>
+<%
+var entriesPerPage = 10;
+var session = request.resourceResolver.adaptTo(Packages.javax.jcr.Session);
+if ( session )
+{
+ var expression = request.getParameter("expression");
+ var language = request.getParameter("language");
+ var page = parseInt(request.getParameter("page") || 1);
+ var queryManager = session.getWorkspace().getQueryManager();
+%>
+Query results:
+<ul>
+<%
+ var countExpression = expression; // must contain an 'order by' clause
+ var knownNumberOfHits = false;
+ if ( !countExpression.toLowerCase().match(/order\s*by/) )
+ {
+ /* this switch does not seem to work...
+ switch ( language ) {
+ case 'JCR-SQL2' :
+ countExpression += ' order by [jcr:score] desc';
+ break;
+ case 'xpath' :
+ countExpression += ' order by @jcr:score descending';
+ break;
+ default:
+ }; // switch
+ */
+ if ( language == 'JCR-SQL2' ) {
+ countExpression += ' order by [jcr:score] desc';
+ }
+ if ( language == 'xpath' ) {
+ countExpression += ' order by @jcr:score descending';
+ }
+ }
+ var overallEntryCount = 'unknown';
+ if ( countExpression.toLowerCase().match(/order\s*by/) )
+ {
+ var countQuery = queryManager.createQuery( countExpression , language );
+ var results = countQuery.execute();
+ overallEntryCount = results.getRows().getSize();
+ knownNumberOfHits = true;
+ }
+ %>
+ <br/>Hits: <%= overallEntryCount %><br/>
+ <%
+
+ var query = queryManager.createQuery( expression, language );
+ query.setOffset( (page - 1) * entriesPerPage );
+ query.setLimit(entriesPerPage);
+ var results = query.execute();
+ var ri = results.getRows(); // RowIterator
+ var count = 0;
+ while ( ri.hasNext() ) {
+ var row = ri.nextRow(); // row
+ var score = row.getScore(); // double
+ /*
+ var values = row.getValues();
+ var excerpt = '';
+ for (idx in values)
+ {
+ excerpt += (values[idx]).getString();
+ }
+ */
+ var resourceType = '';
+ var node = row.getNode();
+ if ( node && node.hasProperty( 'sling:resourceType' ) ) {
+ resourceType = node.getProperty('sling:resourceType');
+ }
+%>
+<li>
+<a href="#" onclick="skip_to('<%= row.getPath() %>', '<%= resourceType %>')"><%= row.getPath() %></a> (score: <%= score %>)
+</li>
+<%
+ count++;
+ } // while
+ var moreToCome = (count == entriesPerPage);
+ if ( knownNumberOfHits )
+ {
+ var lastPage = Math.round(overallEntryCount / entriesPerPage) + (((overallEntryCount % 10) < 5 && (overallEntryCount % 10) > 0) ? 1 : 0);
+ moreToCome = ((lastPage > 0) && lastPage != page);
+ }
+
+%>
+</ul>
+<div id="page_navigation">
+<% if (page > 1) { %>
+ <a href="#" id="first_page" title="first page">|<</a>
+ <a href="#" id="previous_page" title="previous page">
+ <%= ((page - 2) * entriesPerPage) + 1 %>..<%= ((page - 1) * entriesPerPage) %>
+ </a>
+<script>
+$('#previous_page').click( function(e) {
+ search('<%= language %>', '<%= expression %>', <%= page - 1 %> );
+});
+$('#first_page').click( function(e) {
+ search('<%= language %>', '<%= expression %>', 1 );
+});
+</script>
+<% } %>
+<%= ((page - 1) * entriesPerPage) + 1 %>..<%= ((page - 1) * entriesPerPage) + count %>
+<% if ( moreToCome ) { %>
+<a href="#" id="next_page" title="next page">
+<%= (page * entriesPerPage) + 1 %>..<%= ((page + 1) * entriesPerPage) %>
+</a>
+<% if (lastPage) { %>
+<a href="#" id="last_page">>|</a>
+<% } %>
+</div>
+<script>
+$('#next_page').click( function(e) {
+ search('<%= language %>', '<%= expression %>', <%= page + 1 %> );
+});
+$('#last_page').click( function(e) {
+ search('<%= language %>', '<%= expression %>', <%= lastPage %> );
+});
+</script>
+<% } %>
+<%
+} // if
+%>