diff --git a/resources/jacket/template.xhtml b/resources/jacket/template.xhtml
index 413ca6419c..d71499a2d7 100644
--- a/resources/jacket/template.xhtml
+++ b/resources/jacket/template.xhtml
@@ -12,7 +12,8 @@
+ change {series.roman} to {series}. You can also access the raw series name and number
+ using {series.name}, {series.number} or {series.roman_number} -->
{series.roman} |
diff --git a/src/calibre/ebooks/oeb/transforms/jacket.py b/src/calibre/ebooks/oeb/transforms/jacket.py
index 36a08a1266..2161f57ceb 100644
--- a/src/calibre/ebooks/oeb/transforms/jacket.py
+++ b/src/calibre/ebooks/oeb/transforms/jacket.py
@@ -169,13 +169,17 @@ class Series(unicode):
def __new__(self, series, series_index):
if series and series_index is not None:
- roman = _('Number {1} of {0}').format(
+ roman = _('{1} of {0}').format(
escape(series), escape(fmt_sidx(series_index, use_roman=True)))
- series = escape(series + ' [%s]'%fmt_sidx(series_index, use_roman=False))
+ combined = _('{1} of {0}').format(
+ escape(series), escape(fmt_sidx(series_index, use_roman=False)))
else:
- series = roman = escape(series or u'')
- s = unicode.__new__(self, series)
+ combined = roman = escape(series or u'')
+ s = unicode.__new__(self, combined)
s.roman = roman
+ s.name = escape(series or u'')
+ s.number = escape(fmt_sidx(series_index or 1.0, use_roman=False))
+ s.roman_number = escape(fmt_sidx(series_index or 1.0, use_roman=True))
return s
@@ -252,12 +256,17 @@ def render_jacket(mi, output_profile,
searchable_tags=' '.join(escape(t)+'ttt' for t in tags.tags_list),
)
for key in mi.custom_field_keys():
+ m = mi.get_user_metadata(key, False) or {}
try:
display_name, val = mi.format_field_extended(key)[:2]
- key = key.replace('#', '_')
- args[key] = escape(val)
- args[key+'_label'] = escape(display_name)
- except:
+ dkey = key.replace('#', '_')
+ dt = m.get('datatype')
+ if dt == 'series':
+ args[dkey] = Series(mi.get(key), mi.get(key + '_index'))
+ else:
+ args[dkey] = escape(val)
+ args[dkey+'_label'] = escape(display_name)
+ except Exception:
# if the val (custom column contents) is None, don't add to args
pass