diff --git a/resources/content_server/browse/browse.css b/resources/content_server/browse/browse.css
index e7242fce6d..03a3694eb4 100644
--- a/resources/content_server/browse/browse.css
+++ b/resources/content_server/browse/browse.css
@@ -482,5 +482,10 @@ h2.library_name {
border: none
}
+.details #random_button {
+ display:block
+}
+
+
/* }}} */
diff --git a/resources/content_server/browse/browse.js b/resources/content_server/browse/browse.js
index 6783f83a1d..c6914467fa 100644
--- a/resources/content_server/browse/browse.js
+++ b/resources/content_server/browse/browse.js
@@ -324,9 +324,15 @@ function show_details(a_dom) {
function book() {
hidesort();
$('.details .left img').load(function() {
+ var rb = $('#random_button');
+ rb.button();
var img = $('.details .left img');
var height = $('#main').height();
- height = Math.max(height, img.height() + 100);
+ var bh = 0;
+ if (rb.length > 0) {
+ bh = rb.height();
+ }
+ height = Math.max(height, img.height() + bh + 100);
$('#main').height(height);
});
}
diff --git a/resources/content_server/browse/details.html b/resources/content_server/browse/details.html
index bbcab841dc..af237a3e93 100644
--- a/resources/content_server/browse/details.html
+++ b/resources/content_server/browse/details.html
@@ -1,6 +1,7 @@

+ {random}
{formats}
diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py
index 697e725884..c520e42f34 100644
--- a/src/calibre/library/server/browse.py
+++ b/src/calibre/library/server/browse.py
@@ -5,7 +5,7 @@ __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal
'
__docformat__ = 'restructuredtext en'
-import operator, os, json, re
+import operator, os, json, re, time
from binascii import hexlify, unhexlify
from collections import OrderedDict
@@ -819,7 +819,7 @@ class BrowseServer(object):
raw = json.dumps('\n'.join(summs), ensure_ascii=True)
return raw
- def browse_render_details(self, id_):
+ def browse_render_details(self, id_, add_random_button=False):
try:
mi = self.db.get_metadata(id_, index_is_id=True)
except:
@@ -886,11 +886,18 @@ class BrowseServer(object):
u' ') % (xml(c[0]),
c[1]) for c in comments]
comments = u''%('\n\n'.join(comments))
+ random = ''
+ if add_random_button:
+ href = '%s/browse/random?v=%s'%(
+ self.opts.url_prefix, time.time())
+ random = '
%s' % (
+ xml(href, True), xml(_('Choose another random book'), True),
+ xml(_('Another random book')))
return self.browse_details_template.format(
id=id_, title=xml(mi.title, True), fields=fields,
get_url=args['get_url'], fmt=args['fmt'],
- formats=args['formats'], comments=comments)
+ formats=args['formats'], comments=comments, random=random)
@Endpoint(mimetype='application/json; charset=utf-8')
def browse_details(self, id=None):
@@ -908,7 +915,7 @@ class BrowseServer(object):
import random
book_id = random.choice(self.db.search_getting_ids(
'', self.search_restriction))
- ans = self.browse_render_details(book_id)
+ ans = self.browse_render_details(book_id, add_random_button=True)
return self.browse_template('').format(
title='', script='book();', main=ans)