Content server: Remove special characters from filenames in download links to accomodate broken browsers like the one in the Kindle

This commit is contained in:
Kovid Goyal 2010-09-25 13:14:33 -06:00
parent 98954896e0
commit cf0f7def1c
3 changed files with 9 additions and 3 deletions

View File

@ -54,7 +54,7 @@ function render_book(book) {
formats = book.attr("formats").split(",");
if (formats.length > 0) {
for (i=0; i < formats.length; i++) {
title += '<a title="Download in '+formats[i]+' format" class="format" href="'+format_url(formats[i], id, book.attr("title"))+'">'+formats[i]+'</a>, ';
title += '<a title="Download in '+formats[i]+' format" class="format" href="'+format_url(formats[i], id, book.attr("safe_title"))+'">'+formats[i]+'</a>, ';
}
title = title.slice(0, title.length-2);
title += '&nbsp;({0}&nbsp;MB)&nbsp;'.format(size);

View File

@ -18,6 +18,7 @@ from calibre.ebooks.metadata import fmt_sidx
from calibre.constants import __appname__
from calibre import human_readable
from calibre.utils.date import utcfromtimestamp, format_date
from calibre.utils.filenames import ascii_filename
def CLASS(*args, **kwargs): # class is a reserved word in Python
kwargs['class'] = ' '.join(args)
@ -110,11 +111,13 @@ def build_index(books, num, search, sort, order, start, total, url_base, CKEYS):
data = TD()
last = None
for fmt in book['formats'].split(','):
a = ascii_filename(book['authors'])
t = ascii_filename(book['title'])
s = SPAN(
A(
fmt.lower(),
href='/get/%s/%s-%s_%d.%s' % (fmt, book['authors'],
book['title'], book['id'], fmt)
href='/get/%s/%s-%s_%d.%s' % (fmt, a, t,
book['id'], fmt)
),
CLASS('button'))
s.tail = u'\u202f' # &nbsp;

View File

@ -16,6 +16,7 @@ from calibre.ebooks.metadata import fmt_sidx
from calibre.constants import preferred_encoding
from calibre import isbytestring
from calibre.utils.date import format_date
from calibre.utils.filenames import ascii_filename
E = ElementMaker()
@ -88,6 +89,8 @@ class XMLServer(object):
y = format_tag_string(y, ',')
kwargs[x] = serialize(y) if y else ''
kwargs['safe_title'] = ascii_filename(kwargs['title'])
c = kwargs.pop('comments')
CFM = self.db.field_metadata