From d185190c618b8388d749853e7637ee2909598ced Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 25 Dec 2022 04:32:03 +0530 Subject: [PATCH] Content server: Fix identifiers from third party metadata download plugins not becoming clickable links on the book details page --- src/pyj/book_list/book_details.pyj | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/pyj/book_list/book_details.pyj b/src/pyj/book_list/book_details.pyj index 947f628e68..6afdf57085 100644 --- a/src/pyj/book_list/book_details.pyj +++ b/src/pyj/book_list/book_details.pyj @@ -267,26 +267,17 @@ def render_metadata(mi, table, book_id, iframe_css): # {{{ def process_identifiers(field, fm, name, val): - def ids_sorter(url_map, k): - x = url_map[k] - if not x: - return '' + def ids_sorter(x): return (x[0] or '').toLowerCase() - if val: - keys = Object.keys(val) - if keys.length: - td = E.td() - url_map = {k:v'[text, url]' for text, k, val, url in mi.urls_from_identifiers or v'[]'} - for k in sorted(keys, key=ids_sorter.bind(None, url_map)): - idval = val[k] - x = url_map[k] - if x: - if td.childNodes.length: - td.appendChild(document.createTextNode(', ')) - td.appendChild(E.a(class_='blue-link', title='{}:{}'.format(k, idval), target='_new', href=x[1], x[0])) + if val and mi.urls_from_identifiers and mi.urls_from_identifiers.length > 0: + td = E.td() + for text, k, idval, url in sorted(mi.urls_from_identifiers or v'[]', key=ids_sorter): if td.childNodes.length: - table.appendChild(E.tr(E.td(name + ':'), td)) + td.appendChild(document.createTextNode(', ')) + td.appendChild(E.a(class_='blue-link', title='{}:{}'.format(k, idval), target='_new', href=url, text)) + if td.childNodes.length: + table.appendChild(E.tr(E.td(name + ':'), td)) def process_size(field, fm, name, val): if val: