From 05fb9ee82657bf281215f8eb30f7f042b44c6d93 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Nov 2010 11:14:02 -0700 Subject: [PATCH] Content server: Allow direct navigation to a set of books in the book list. Fixes #7453 (Paginating of Content Server) --- resources/content_server/browse/browse.css | 19 ++++++++++++ resources/content_server/browse/browse.html | 1 + resources/content_server/browse/browse.js | 23 ++++++++++++++ src/calibre/library/server/browse.py | 34 +++++++++++++++++---- 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/resources/content_server/browse/browse.css b/resources/content_server/browse/browse.css index 1243795e55..75832e47f9 100644 --- a/resources/content_server/browse/browse.css +++ b/resources/content_server/browse/browse.css @@ -355,6 +355,25 @@ h2.library_name { color: red; } +#booklist > #pagelist { display: none; } + +#goto_page_dialog ul { + list-style-type: none; + font-size: medium; +} + +#goto_page_dialog li { + margin-bottom: 1.5ex; +} + +#goto_page_dialog a { + text-decoration: none; + color: blue; +} + +#goto_page_dialog a:hover { + color: red; +} #booklist .left .ui-button-text { font-size: medium; diff --git a/resources/content_server/browse/browse.html b/resources/content_server/browse/browse.html index 6d4c79c4c9..de78e432d7 100644 --- a/resources/content_server/browse/browse.html +++ b/resources/content_server/browse/browse.html @@ -96,5 +96,6 @@
+
diff --git a/resources/content_server/browse/browse.js b/resources/content_server/browse/browse.js index e0585a9afd..2d9bc01082 100644 --- a/resources/content_server/browse/browse.js +++ b/resources/content_server/browse/browse.js @@ -202,6 +202,23 @@ function previous_page() { else last_page(); } +function gp_internal(id) { + var gp = $('#goto_page_dialog'); + gp.dialog('close'); + var elem = $("#booklist #" + id); + load_page(elem); +} + +function goto_page() { + var gp = $('#goto_page_dialog'); + var pl = $('#booklist > #pagelist'); + gp.html(pl.html()); + gp.dialog('option', 'title', pl.attr('title')); + gp.dialog('option', 'height', $(window).height() - 100); + gp.dialog('open'); + +} + function load_page(elem) { if (elem.is(":visible")) return; var ld = elem.find('.load_data'); @@ -251,6 +268,12 @@ function booklist(hide_sort) { modal: true, show: 'slide' }); + $("#goto_page_dialog").dialog({ + autoOpen: false, + modal: true, + show: 'slide' + }); + first_page(); } diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index 5609416273..db5c83689b 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -43,18 +43,33 @@ def render_book_list(ids, prefix, suffix=''): # {{{
''' - rpages = [] + pagelist_template = u'''\ +
+ +
+ ''' + rpages, lpages = [], [] for i, x in enumerate(pages): pg, pos = x ld = xml(json.dumps(pg), True) + start, end = pos+1, pos+len(pg) rpages.append(page_template.format(i, ld, xml(_('Loading, please wait')) + '…', - start=pos+1, end=pos+len(pg), prefix=prefix)) + start=start, end=end, prefix=prefix)) + lpages.append(' '*20 + (u'
  • ' + '{start} to {end}
  • ').format(start=start, end=end, + id='page%d'%i)) rpages = u'\n\n'.join(rpages) + lpages = u'\n'.join(lpages) + pagelist = pagelist_template.format(pages=lpages) templ = u'''\

    {0} {suffix}

    +
    {pagelist}
    {navbar}
    @@ -64,24 +79,31 @@ def render_book_list(ids, prefix, suffix=''): # {{{
    ''' - + gp_start = gp_end = '' + if len(pages) > 1: + gp_start = '' % \ + (_('Go to') + '…') + gp_end = '' navbar = u'''\ '''.format(first=_('First'), last=_('Last'), previous=_('Previous'), - next=_('Next'), num=num) + next=_('Next'), num=num, gp_start=gp_start, gp_end=gp_end) return templ.format(_('Browsing %d books')%num, suffix=suffix, - pages=rpages, navbar=navbar) + pages=rpages, navbar=navbar, pagelist=pagelist, + goto=xml(_('Go to'), True) + '…') # }}}