diff --git a/chrome/content/zotero/bindings/itembox.xml b/chrome/content/zotero/bindings/itembox.xml index 80df2452e8..b1b2c81342 100644 --- a/chrome/content/zotero/bindings/itembox.xml +++ b/chrome/content/zotero/bindings/itembox.xml @@ -2384,134 +2384,138 @@ Retraction Watch' - ); - let parts = Zotero.Utilities.parseMarkup(text); - for (let part of parts) { - if (part.type == 'text') { - creditElem.appendChild(document.createTextNode(part.text)); - } - else if (part.type == 'link') { + // Links + if (data.urls.length) { + let div = this._id('retraction-links'); + div.hidden = false; + div.textContent = ''; + + let p = document.createElementNS(htmlNS, 'p'); + p.textContent = Zotero.getString('retraction.details'); + + let ul = document.createElementNS(htmlNS, 'ul'); + for (let url of data.urls) { + let li = document.createElementNS(htmlNS, 'li'); let a = document.createElementNS(htmlNS, 'a'); - a.href = part.attributes.href; - a.textContent = part.text; - creditElem.appendChild(a); + url = url.replace(/^http:/, 'https:'); + a.href = url; + a.textContent = url; + li.appendChild(a); + ul.appendChild(li); + } + + div.appendChild(p); + div.appendChild(ul); + } + else { + this._id('retraction-links').hidden = true; + } + + let creditElem = this._id('retraction-credit'); + if (!creditElem.childNodes.length) { + let text = Zotero.getString( + 'retraction.credit', + 'Retraction Watch' + ); + let parts = Zotero.Utilities.parseMarkup(text); + for (let part of parts) { + if (part.type == 'text') { + creditElem.appendChild(document.createTextNode(part.text)); + } + else if (part.type == 'link') { + let a = document.createElementNS(htmlNS, 'a'); + a.href = part.attributes.href; + a.textContent = part.text; + creditElem.appendChild(a); + } } } - } - - let hideElem = this._id('retraction-hide'); - hideElem.firstChild.textContent = Zotero.getString('retraction.replacedItem.hide'); - hideElem.hidden = !allowHiding; - hideElem.firstChild.onclick = (event) => { - ZoteroPane.promptToHideRetractionForReplacedItem(this.item); - }; - - Zotero.Utilities.Internal.updateHTMLInXUL(this._id('retraction-box')); - }.bind(this))(); + + let hideElem = this._id('retraction-hide'); + hideElem.firstChild.textContent = Zotero.getString('retraction.replacedItem.hide'); + hideElem.hidden = !allowHiding; + hideElem.firstChild.onclick = (event) => { + ZoteroPane.promptToHideRetractionForReplacedItem(item); + }; + + Zotero.Utilities.Internal.updateHTMLInXUL(this._id('retraction-box')); + }.bind(this)); + } + + return this._updateRetracted(this.item); ]]>