/browse: Add permalink for every book

This commit is contained in:
Kovid Goyal 2010-10-16 13:23:24 -06:00
parent a490b3fbed
commit c5ebc3e5a3
4 changed files with 44 additions and 12 deletions

View File

@ -417,12 +417,12 @@ h2.library_name {
margin-bottom: 2ex; margin-bottom: 2ex;
} }
#book_details_dialog .details a { .details .right .formats a {
color: blue; color: blue;
text-decoration: none; text-decoration: none;
} }
#book_details_dialog .details a:hover { .details .right .formats a:hover {
color: red; color: red;
} }

View File

@ -235,8 +235,10 @@ function load_page(elem) {
elem.show(); elem.show();
} }
function hidesort() {$("#content > .sort_select").hide();}
function booklist(hide_sort) { function booklist(hide_sort) {
if (hide_sort) $("#content > .sort_select").hide(); if (hide_sort) hidesort();
var test = $("#booklist #page0").html(); var test = $("#booklist #page0").html();
if (!test) { if (!test) {
$("#booklist").html(render_error("No books found")); $("#booklist").html(render_error("No books found"));
@ -275,3 +277,13 @@ function show_details(a_dom) {
} }
// }}} // }}}
function book() {
hidesort();
$('.details .left img').load(function() {
var img = $('.details .left img');
var height = $('#main').height();
height = Math.max(height, img.height() + 100);
$('#main').height(height);
});
}

View File

@ -8,6 +8,7 @@
<span class="rating_container">{stars}</span> <span class="rating_container">{stars}</span>
<span class="series">{series}</span> <span class="series">{series}</span>
<a href="#" onclick="show_details(this); return false;" title="{details_tt}">{details}</a> <a href="#" onclick="show_details(this); return false;" title="{details_tt}">{details}</a>
<a href="/browse/book/{id}" title="{permalink_tt}">{permalink}</a>
</div> </div>
<div class="title"><strong>{title}</strong></div> <div class="title"><strong>{title}</strong></div>
<div class="authors">{authors}</div> <div class="authors">{authors}</div>

View File

@ -197,6 +197,8 @@ class BrowseServer(object):
self.browse_search) self.browse_search)
connect('browse_details', base_href+'/details/{id}', connect('browse_details', base_href+'/details/{id}',
self.browse_details) self.browse_details)
connect('browse_book', base_href+'/book/{id}',
self.browse_book)
connect('browse_category_icon', base_href+'/icon/{name}', connect('browse_category_icon', base_href+'/icon/{name}',
self.browse_icon) self.browse_icon)
@ -589,23 +591,19 @@ class BrowseServer(object):
args['series'] = args['series'] args['series'] = args['series']
args['details'] = xml(_('Details'), True) args['details'] = xml(_('Details'), True)
args['details_tt'] = xml(_('Show book details'), True) args['details_tt'] = xml(_('Show book details'), True)
args['permalink'] = xml(_('Permalink'), True)
args['permalink_tt'] = xml(_('A permanent link to this book'), True)
summs.append(self.browse_summary_template.format(**args)) summs.append(self.browse_summary_template.format(**args))
return json.dumps('\n'.join(summs), ensure_ascii=False) return json.dumps('\n'.join(summs), ensure_ascii=False)
@Endpoint(mimetype='application/json; charset=utf-8') def browse_render_details(self, id_):
def browse_details(self, id=None):
try:
id_ = int(id)
except:
raise cherrypy.HTTPError(404, 'invalid id: %r'%id)
try: try:
mi = self.db.get_metadata(id_, index_is_id=True) mi = self.db.get_metadata(id_, index_is_id=True)
except: except:
ans = _('This book has been deleted') return _('This book has been deleted')
else: else:
args, fmt, fmts, fname = self.browse_get_book_args(mi, id_) args, fmt, fmts, fname = self.browse_get_book_args(mi, id_)
args['formats'] = '' args['formats'] = ''
@ -646,13 +644,34 @@ class BrowseServer(object):
u'<div class="comment">%s</div></div>') % (xml(c[0]), u'<div class="comment">%s</div></div>') % (xml(c[0]),
c[1]) for c in comments] c[1]) for c in comments]
comments = u'<div class="comments">%s</div>'%('\n\n'.join(comments)) comments = u'<div class="comments">%s</div>'%('\n\n'.join(comments))
ans = self.browse_details_template.format(id=id_,
return self.browse_details_template.format(id=id_,
title=xml(mi.title, True), fields=fields, title=xml(mi.title, True), fields=fields,
formats=args['formats'], comments=comments) formats=args['formats'], comments=comments)
@Endpoint(mimetype='application/json; charset=utf-8')
def browse_details(self, id=None):
try:
id_ = int(id)
except:
raise cherrypy.HTTPError(404, 'invalid id: %r'%id)
ans = self.browse_render_details(id_)
return json.dumps(ans, ensure_ascii=False) return json.dumps(ans, ensure_ascii=False)
@Endpoint()
def browse_book(self, id=None, category_sort=None):
try:
id_ = int(id)
except:
raise cherrypy.HTTPError(404, 'invalid id: %r'%id)
ans = self.browse_render_details(id_)
return self.browse_template('').format(
title='', script='book();', main=ans)
# }}} # }}}