diff --git a/htroot/yacy/ui/css/jquery.pagination.css b/htroot/yacy/ui/css/jquery.pagination.css new file mode 100644 index 000000000..bf7d28d1d --- /dev/null +++ b/htroot/yacy/ui/css/jquery.pagination.css @@ -0,0 +1,31 @@ +.pagination { + font-size: 1em; + margin-left: 26px; + margin-top: 25px; +} + +.pagination a { + text-decoration: none; + border: solid 1px #AAE; + color: #15B; +} + +.pagination a, .pagination span { + display: block; + float: left; + padding: 0.3em 0.5em; + margin-right: 5px; + margin-bottom: 5px; +} + +.pagination .current { + background: #26B; + color: #fff; + border: solid 1px #AAE; +} + +.pagination .current.prev, .pagination .current.next{ + color:#999; + border-color:#999; + background:#fff; +} diff --git a/htroot/yacy/ui/index.html b/htroot/yacy/ui/index.html index 0ba68e630..6f6a4107a 100644 --- a/htroot/yacy/ui/index.html +++ b/htroot/yacy/ui/index.html @@ -9,7 +9,8 @@ - + + @@ -18,9 +19,12 @@ + @@ -75,9 +82,9 @@    - + - + diff --git a/htroot/yacy/ui/js/jquery.pagination.js b/htroot/yacy/ui/js/jquery.pagination.js new file mode 100644 index 000000000..9e6603fef --- /dev/null +++ b/htroot/yacy/ui/js/jquery.pagination.js @@ -0,0 +1,166 @@ +/** + * This jQuery plugin displays pagination links inside the selected elements. + * + * @author Gabriel Birke (birke *at* d-scribe *dot* de) + * @version 1.1 + * @param {int} maxentries Number of entries to paginate + * @param {Object} opts Several options (see README for documentation) + * @return {Object} jQuery Object + */ +jQuery.fn.pagination = function(maxentries, opts){ + opts = jQuery.extend({ + items_per_page:10, + num_display_entries:10, + current_page:0, + num_edge_entries:0, + link_to:"#", + prev_text:"Prev", + next_text:"Next", + ellipse_text:"...", + prev_show_always:true, + next_show_always:true, + callback:function(){return false;} + },opts||{}); + + return this.each(function() { + /** + * Calculate the maximum number of pages + */ + function numPages() { + return Math.ceil(maxentries/opts.items_per_page); + } + + /** + * Calculate start and end point of pagination links depending on + * current_page and num_display_entries. + * @return {Array} + */ + function getInterval() { + var ne_half = Math.ceil(opts.num_display_entries/2); + var np = numPages(); + var upper_limit = np-opts.num_display_entries; + var start = current_page>ne_half?Math.max(Math.min(current_page-ne_half, upper_limit), 0):0; + var end = current_page>ne_half?Math.min(current_page+ne_half, np):Math.min(opts.num_display_entries, np); + return [start,end]; + } + + /** + * This is the event handling function for the pagination links. + * @param {int} page_id The new page number + */ + function pageSelected(page_id, evt){ + current_page = page_id; + drawLinks(); + var continuePropagation = opts.callback(page_id, panel); + if (!continuePropagation) { + if (evt.stopPropagation) { + evt.stopPropagation(); + } + else { + evt.cancelBubble = true; + } + } + return continuePropagation; + } + + /** + * This function inserts the pagination links into the container element + */ + function drawLinks() { + panel.empty(); + var interval = getInterval(); + var np = numPages(); + // This helper function returns a handler function that calls pageSelected with the right page_id + var getClickHandler = function(page_id) { + return function(evt){ return pageSelected(page_id,evt); } + } + // Helper function for generating a single link (or a span tag if it'S the current page) + var appendItem = function(page_id, appendopts){ + page_id = page_id<0?0:(page_id"+(appendopts.text)+""); + } + else + { + var lnk = $(""+(appendopts.text)+"") + .bind("click", getClickHandler(page_id)) + .attr('href', opts.link_to.replace(/__id__/,page_id)); + + + } + if(appendopts.classes){lnk.addClass(appendopts.classes);} + panel.append(lnk); + } + // Generate "Previous"-Link + if(opts.prev_text && (current_page > 0 || opts.prev_show_always)){ + appendItem(current_page-1,{text:opts.prev_text, classes:"prev"}); + } + // Generate starting points + if (interval[0] > 0 && opts.num_edge_entries > 0) + { + var end = Math.min(opts.num_edge_entries, interval[0]); + for(var i=0; i"+opts.ellipse_text+"").appendTo(panel); + } + } + // Generate interval links + for(var i=interval[0]; i 0) + { + if(np-opts.num_edge_entries > interval[1]&& opts.ellipse_text) + { + jQuery(""+opts.ellipse_text+"").appendTo(panel); + } + var begin = Math.max(np-opts.num_edge_entries, interval[1]); + for(var i=begin; i 0) { + pageSelected(current_page - 1); + return true; + } + else { + return false; + } + } + this.nextPage = function(){ + if(current_page < numPages()-1) { + pageSelected(current_page+1); + return true; + } + else { + return false; + } + } + // When all initialisation is done, draw the links + drawLinks(); + }); +} + + diff --git a/htroot/yacy/ui/result.html b/htroot/yacy/ui/result.html index 01b085174..be614e893 100644 --- a/htroot/yacy/ui/result.html +++ b/htroot/yacy/ui/result.html @@ -1,4 +1,64 @@ +#(input)# + :: + + :: +#(/input)# + +#(num-results)# + :: +

No Results.

+ :: +

No Results. (length of search words must be at least 3 characters)

+ :: + + :: +#(/num-results)#
+ #(resultTable)#::#(/resultTable)# #{results}# @@ -8,7 +68,8 @@ $.get("/yacy/ui/ritem.html?rss=false&item=#[item]#&eventID=#[eventID]#", function(html) { $(id).append(html); $(id).trigger("update"); - }); + }); + return false; }); #{/results}# @@ -20,4 +81,3 @@ - diff --git a/htroot/yacy/ui/ritem.html b/htroot/yacy/ui/ritem.html index e4ea68e6c..ed761b966 100644 --- a/htroot/yacy/ui/ritem.html +++ b/htroot/yacy/ui/ritem.html @@ -1,11 +1,11 @@ #(content)#:: -
-

- - #[description]#

-

#[snippet]#

-

#[urlname]#

-
+
+

+ + #[description]#

+

#[snippet]#

+

#[urlname]#

+
:: #{items}#
MediaURL