Show intro text for My Publications in middle pane when no items
ZoteroPane.setItemsPaneMessage() and setItemPaneMessage() can now optionally take a DOM node instead of a string. Closes #705
This commit is contained in:
parent
db33163a99
commit
fc6c113f25
8 changed files with 83 additions and 20 deletions
|
@ -246,7 +246,7 @@
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#zotero-item-pane-message {
|
#zotero-item-pane-message-box description {
|
||||||
color: #7f7f7f;
|
color: #7f7f7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
<deck id="zotero-item-pane-content" selectedIndex="0" flex="1">
|
<deck id="zotero-item-pane-content" selectedIndex="0" flex="1">
|
||||||
<!-- Center label (for zero or multiple item selection) -->
|
<!-- Center label (for zero or multiple item selection) -->
|
||||||
<groupbox id="zotero-item-pane-groupbox" pack="center" align="center">
|
<groupbox id="zotero-item-pane-groupbox" pack="center" align="center">
|
||||||
<label id="zotero-item-pane-message"/>
|
<vbox id="zotero-item-pane-message-box"/>
|
||||||
</groupbox>
|
</groupbox>
|
||||||
|
|
||||||
<!-- Regular item -->
|
<!-- Regular item -->
|
||||||
|
|
|
@ -234,10 +234,38 @@ Zotero.ItemTreeView.prototype.setTree = Zotero.Promise.coroutine(function* (tree
|
||||||
this.expandMatchParents();
|
this.expandMatchParents();
|
||||||
|
|
||||||
if (this._ownerDocument.defaultView.ZoteroPane_Local) {
|
if (this._ownerDocument.defaultView.ZoteroPane_Local) {
|
||||||
|
// For My Publications, show intro text in middle pane if no items
|
||||||
|
if (this.collectionTreeRow && this.collectionTreeRow.isPublications() && !this.rowCount) {
|
||||||
|
let doc = this._ownerDocument;
|
||||||
|
let ns = 'http://www.w3.org/1999/xhtml'
|
||||||
|
let div = doc.createElementNS(ns, 'div');
|
||||||
|
let p = doc.createElementNS(ns, 'p');
|
||||||
|
p.textContent = Zotero.getString('publications.intro.text1', ZOTERO_CONFIG.DOMAIN_NAME);
|
||||||
|
div.appendChild(p);
|
||||||
|
|
||||||
|
p = doc.createElementNS(ns, 'p');
|
||||||
|
p.textContent = Zotero.getString('publications.intro.text2');
|
||||||
|
div.appendChild(p);
|
||||||
|
|
||||||
|
p = doc.createElementNS(ns, 'p');
|
||||||
|
let html = Zotero.getString('publications.intro.text3');
|
||||||
|
// Convert <b> tags to placeholders
|
||||||
|
html = html.replace('<b>', ':b:').replace('</b>', ':/b:');
|
||||||
|
// Encode any other special chars, which shouldn't exist
|
||||||
|
html = Zotero.Utilities.htmlSpecialChars(html);
|
||||||
|
// Restore bold text
|
||||||
|
html = html.replace(':b:', '<strong>').replace(':/b:', '</strong>');
|
||||||
|
p.innerHTML = html; // AMO note: markup from hard-coded strings and filtered above
|
||||||
|
div.appendChild(p);
|
||||||
|
|
||||||
|
content = div;
|
||||||
|
doc.defaultView.ZoteroPane_Local.setItemsPaneMessage(content);
|
||||||
|
}
|
||||||
|
else {
|
||||||
this._ownerDocument.defaultView.ZoteroPane_Local.clearItemsPaneMessage();
|
this._ownerDocument.defaultView.ZoteroPane_Local.clearItemsPaneMessage();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Select a queued item from selectItem()
|
|
||||||
if (this.collectionTreeRow && this.collectionTreeRow.itemToSelect) {
|
if (this.collectionTreeRow && this.collectionTreeRow.itemToSelect) {
|
||||||
var item = this.collectionTreeRow.itemToSelect;
|
var item = this.collectionTreeRow.itemToSelect;
|
||||||
yield this.selectItem(item['id'], item['expand']);
|
yield this.selectItem(item['id'], item['expand']);
|
||||||
|
|
|
@ -3047,22 +3047,25 @@ var ZoteroPane = new function()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function setItemsPaneMessage(msg, lock) {
|
function setItemsPaneMessage(content, lock) {
|
||||||
var elem = document.getElementById('zotero-items-pane-message-box');
|
var elem = document.getElementById('zotero-items-pane-message-box');
|
||||||
|
|
||||||
if (elem.getAttribute('locked') == 'true') {
|
if (elem.getAttribute('locked') == 'true') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (elem.hasChildNodes()) {
|
elem.textContent = '';
|
||||||
elem.removeChild(elem.firstChild);
|
if (typeof content == 'string') {
|
||||||
}
|
let contentParts = content.split("\n\n");
|
||||||
var msgParts = msg.split("\n\n");
|
for (let part of contentParts) {
|
||||||
for (var i=0; i<msgParts.length; i++) {
|
|
||||||
var desc = document.createElement('description');
|
var desc = document.createElement('description');
|
||||||
desc.appendChild(document.createTextNode(msgParts[i]));
|
desc.appendChild(document.createTextNode(part));
|
||||||
elem.appendChild(desc);
|
elem.appendChild(desc);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
elem.appendChild(content);
|
||||||
|
}
|
||||||
|
|
||||||
// Make message permanent
|
// Make message permanent
|
||||||
if (lock) {
|
if (lock) {
|
||||||
|
@ -3084,11 +3087,22 @@ var ZoteroPane = new function()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.setItemPaneMessage = function (msg) {
|
this.setItemPaneMessage = function (content) {
|
||||||
document.getElementById('zotero-item-pane-content').selectedIndex = 0;
|
document.getElementById('zotero-item-pane-content').selectedIndex = 0;
|
||||||
|
|
||||||
var label = document.getElementById('zotero-item-pane-message');
|
var elem = document.getElementById('zotero-item-pane-message-box');
|
||||||
label.value = msg;
|
elem.textContent = '';
|
||||||
|
if (typeof content == 'string') {
|
||||||
|
let contentParts = content.split("\n\n");
|
||||||
|
for (let part of contentParts) {
|
||||||
|
let desc = document.createElement('description');
|
||||||
|
desc.appendChild(document.createTextNode(part));
|
||||||
|
elem.appendChild(desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
elem.appendChild(content);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1052,6 +1052,10 @@ styles.editor.output.individualCitations = Individual Citations
|
||||||
styles.editor.output.singleCitation = Single Citation (with position "first")
|
styles.editor.output.singleCitation = Single Citation (with position "first")
|
||||||
styles.preview.instructions = Select one or more items in Zotero and click the "Refresh" button to see how these items are rendered by the installed CSL citation styles.
|
styles.preview.instructions = Select one or more items in Zotero and click the "Refresh" button to see how these items are rendered by the installed CSL citation styles.
|
||||||
|
|
||||||
|
publications.intro.text1 = My Publications allows you to create a list of your own work and share it on your profile page on %S. You can add notes about each item and even share PDFs or other files under a license you specify.
|
||||||
|
publications.intro.text2 = To add items, drag them from another library. You’ll be able to choose whether to include attached notes and files.
|
||||||
|
publications.intro.text3 = <b>Only add work you yourself have created</b>, and only include files if you have the rights to distribute them publicly and wish to do so.
|
||||||
|
|
||||||
publications.sharing.keepRightsField = Keep the existing Rights field
|
publications.sharing.keepRightsField = Keep the existing Rights field
|
||||||
publications.sharing.keepRightsFieldWhereAvailable = Keep the existing Rights field where available
|
publications.sharing.keepRightsFieldWhereAvailable = Keep the existing Rights field where available
|
||||||
publications.cc.moreInfo.text = Be sure you have read the Creative Commons %S before placing your work under a CC license. Note that the license you apply cannot be revoked, even if you later choose different terms or cease publishing the work.
|
publications.cc.moreInfo.text = Be sure you have read the Creative Commons %S before placing your work under a CC license. Note that the license you apply cannot be revoked, even if you later choose different terms or cease publishing the work.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#zotero-item-pane-message {
|
.zotero-item-pane-message-box description {
|
||||||
padding: 0 2em;
|
padding: 0 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -226,6 +226,23 @@
|
||||||
min-width: 290px;
|
min-width: 290px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Used for intro text for My Publications */
|
||||||
|
#zotero-items-pane-message-box {
|
||||||
|
overflow-y: auto;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
#zotero-items-pane-message-box div {
|
||||||
|
padding: 0 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#zotero-items-pane-message-box p {
|
||||||
|
max-width: 800px;
|
||||||
|
font-size: 1.2em;
|
||||||
|
line-height: 1.7em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
#zotero-item-pane
|
#zotero-item-pane
|
||||||
{
|
{
|
||||||
width: 338px;
|
width: 338px;
|
||||||
|
|
|
@ -76,7 +76,7 @@ describe("ZoteroPane", function() {
|
||||||
|
|
||||||
// Unselected, with no items in view
|
// Unselected, with no items in view
|
||||||
assert.equal(
|
assert.equal(
|
||||||
doc.getElementById('zotero-item-pane-message').value,
|
doc.getElementById('zotero-item-pane-message-box').textContent,
|
||||||
Zotero.getString('pane.item.unselected.zero', 0)
|
Zotero.getString('pane.item.unselected.zero', 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ describe("ZoteroPane", function() {
|
||||||
skipSelect: true
|
skipSelect: true
|
||||||
});
|
});
|
||||||
assert.equal(
|
assert.equal(
|
||||||
doc.getElementById('zotero-item-pane-message').value,
|
doc.getElementById('zotero-item-pane-message-box').textContent,
|
||||||
Zotero.getString('pane.item.unselected.singular', 1)
|
Zotero.getString('pane.item.unselected.singular', 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ describe("ZoteroPane", function() {
|
||||||
skipSelect: true
|
skipSelect: true
|
||||||
});
|
});
|
||||||
assert.equal(
|
assert.equal(
|
||||||
doc.getElementById('zotero-item-pane-message').value,
|
doc.getElementById('zotero-item-pane-message-box').textContent,
|
||||||
Zotero.getString('pane.item.unselected.plural', 2)
|
Zotero.getString('pane.item.unselected.plural', 2)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ describe("ZoteroPane", function() {
|
||||||
zp.itemsView.rememberSelection([itemID1, itemID2]);
|
zp.itemsView.rememberSelection([itemID1, itemID2]);
|
||||||
yield promise;
|
yield promise;
|
||||||
assert.equal(
|
assert.equal(
|
||||||
doc.getElementById('zotero-item-pane-message').value,
|
doc.getElementById('zotero-item-pane-message-box').textContent,
|
||||||
Zotero.getString('pane.item.selected.multiple', 2)
|
Zotero.getString('pane.item.selected.multiple', 2)
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue