fx-compat: Correct create[XUL]Element[NS]() calls
This fixes the dictionary manager and various other places where a XUL element was being created with createElement(), and also simplifies a lot of createElementNS(HTML_NS, ...) calls. This might cause some minor regressions but everything tested has worked. Not touching preferences (#2659) or bindings.
This commit is contained in:
parent
8b7d959781
commit
f81b4b071f
26 changed files with 103 additions and 110 deletions
|
@ -124,7 +124,7 @@ var Scaffold = new function () {
|
|||
var primaryTypes = ['book', 'bookSection', 'conferencePaper', 'journalArticle', 'magazineArticle', 'newspaperArticle'];
|
||||
for (let type of types) {
|
||||
if (primaryTypes.includes(type)) continue;
|
||||
var menuitem = document.createElement('menuitem');
|
||||
var menuitem = document.createXULElement('menuitem');
|
||||
menuitem.setAttribute('label', type);
|
||||
menuitem.addEventListener('command', () => {
|
||||
Scaffold.addTemplate('templateNewItem', type);
|
||||
|
|
|
@ -223,7 +223,7 @@ var CollectionTree = class CollectionTree extends LibraryTree {
|
|||
const treeRow = this.getRow(index);
|
||||
|
||||
// Div creation and content
|
||||
let div = oldDiv || document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
let div = oldDiv || document.createElement('div');
|
||||
div.innerHTML = "";
|
||||
|
||||
// Classes
|
||||
|
@ -245,13 +245,13 @@ var CollectionTree = class CollectionTree extends LibraryTree {
|
|||
div.style.paddingInlineStart = (CHILD_INDENT * depth) + 'px';
|
||||
|
||||
// Create a single-cell for the row (for the single-column layout)
|
||||
let cell = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let cell = document.createElement('span');
|
||||
cell.className = "cell label primary";
|
||||
|
||||
// Twisty/spacer
|
||||
let twisty;
|
||||
if (this.isContainerEmpty(index)) {
|
||||
twisty = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
twisty = document.createElement('span');
|
||||
if (Zotero.isMac && treeRow.isHeader()) {
|
||||
twisty.classList.add("spacer-header");
|
||||
}
|
||||
|
@ -275,14 +275,14 @@ var CollectionTree = class CollectionTree extends LibraryTree {
|
|||
icon.classList.add('cell-icon');
|
||||
|
||||
// Label
|
||||
let label = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let label = document.createElement('span');
|
||||
label.innerText = treeRow.getName();
|
||||
label.className = 'cell-text';
|
||||
|
||||
// Editing input
|
||||
div.classList.toggle('editing', treeRow == this._editing);
|
||||
if (treeRow == this._editing) {
|
||||
label = document.createElementNS("http://www.w3.org/1999/xhtml", 'input');
|
||||
label = document.createElement('input');
|
||||
label.className = 'cell-text';
|
||||
label.setAttribute("size", 5);
|
||||
label.value = treeRow.editingName;
|
||||
|
@ -2116,12 +2116,12 @@ var CollectionTree = class CollectionTree extends LibraryTree {
|
|||
iconClsName = iconClsName || "IconTreesource" + collectionType;
|
||||
|
||||
if (collectionType == 'Separator') {
|
||||
return document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
return document.createElement('span');
|
||||
}
|
||||
|
||||
var icon = getDOMIcon(iconClsName);
|
||||
if (!icon) {
|
||||
return document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
return document.createElement('span');
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
|
|
@ -211,7 +211,7 @@ module.exports.getDOMElement = function (icon) {
|
|||
Zotero.debug(`Attempting to get non-existant icon ${icon}`);
|
||||
return "";
|
||||
}
|
||||
let div = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
let div = document.createElement('div');
|
||||
div.innerHTML = renderToStaticMarkup(React.createElement(module.exports[icon]));
|
||||
domElementCache[icon] = div.firstChild;
|
||||
return domElementCache[icon].cloneNode(true);
|
||||
|
|
|
@ -41,7 +41,7 @@ function getImageByStatus(status) {
|
|||
else if (status === Zotero.ProgressQueue.ROW_SUCCEEDED) {
|
||||
return getDOMElement('IconTick');
|
||||
}
|
||||
return document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
return document.createElement('span');
|
||||
}
|
||||
|
||||
const ProgressQueueTable = ({ onActivate = noop, progressQueue }) => {
|
||||
|
@ -59,7 +59,7 @@ const ProgressQueueTable = ({ onActivate = noop, progressQueue }) => {
|
|||
div.innerHTML = "";
|
||||
}
|
||||
else {
|
||||
div = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
div = document.createElement('div');
|
||||
div.className = "row";
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ const ProgressQueueTable = ({ onActivate = noop, progressQueue }) => {
|
|||
|
||||
for (let column of columns) {
|
||||
if (column.dataKey === 'success') {
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell icon ${column.className}`;
|
||||
span.appendChild(getImageByStatus(row.status));
|
||||
div.appendChild(span);
|
||||
|
|
|
@ -1009,7 +1009,7 @@ class VirtualizedTable extends React.Component {
|
|||
xulElem.setAttribute('tooltip', 'html-tooltip');
|
||||
}
|
||||
if (document.querySelector('tooltip#html-tooltip')) return;
|
||||
let tooltip = document.createElement('tooltip');
|
||||
let tooltip = document.createXULElement('tooltip');
|
||||
tooltip.id = 'html-tooltip';
|
||||
tooltip.addEventListener('popupshowing', function(e) {
|
||||
let tooltipTitleNode = document.tooltipNode.closest('div *[title], iframe *[title], browser *[title]');
|
||||
|
@ -1019,7 +1019,13 @@ class VirtualizedTable extends React.Component {
|
|||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
document.documentElement.appendChild(tooltip);
|
||||
|
||||
let popupset = document.querySelector('popupset');
|
||||
if (!popupset) {
|
||||
popupset = document.createXULElement('popupset');
|
||||
document.documentElement.appendChild(popupset);
|
||||
}
|
||||
popupset.appendChild(tooltip);
|
||||
}
|
||||
|
||||
_setAlternatingRows() {
|
||||
|
@ -1246,7 +1252,7 @@ class VirtualizedTable extends React.Component {
|
|||
}
|
||||
|
||||
_getRenderedTextHeight() {
|
||||
let div = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
let div = document.createElement('div');
|
||||
div.style.visibility = "hidden";
|
||||
div.textContent = "Zotero";
|
||||
document.documentElement.appendChild(div);
|
||||
|
@ -1419,7 +1425,7 @@ var Columns = class {
|
|||
this._columnStyleMap[column.dataKey] = ruleIndex;
|
||||
}
|
||||
} else {
|
||||
this._stylesheet = document.createElementNS("http://www.w3.org/1999/xhtml", 'style');
|
||||
this._stylesheet = document.createElement('style');
|
||||
this._stylesheet.className = stylesheetClass;
|
||||
document.children[0].appendChild(this._stylesheet);
|
||||
this._columnStyleMap = {};
|
||||
|
@ -1579,14 +1585,14 @@ var Columns = class {
|
|||
};
|
||||
|
||||
function renderCell(index, data, column) {
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell ${column.className}`;
|
||||
span.innerText = data;
|
||||
return span;
|
||||
}
|
||||
|
||||
function renderCheckboxCell(index, data, column) {
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell checkbox ${column.className}`;
|
||||
span.setAttribute('role', 'checkbox');
|
||||
span.setAttribute('aria-checked', data);
|
||||
|
@ -1604,7 +1610,7 @@ function makeRowRenderer(getRowData) {
|
|||
div.innerHTML = "";
|
||||
}
|
||||
else {
|
||||
div = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
div = document.createElement('div');
|
||||
div.className = "row";
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ module.exports = class {
|
|||
*/
|
||||
initialize() {
|
||||
const { targetElement } = this;
|
||||
this.innerElem = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
this.innerElem = document.createElement('div');
|
||||
this.innerElem.className = "windowed-list";
|
||||
|
||||
targetElement.appendChild(this.innerElem);
|
||||
|
|
|
@ -345,7 +345,7 @@ Zotero.TagSelector = class TagSelectorContainer extends React.PureComponent {
|
|||
}
|
||||
|
||||
getFontInfo() {
|
||||
var elem = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
|
||||
var elem = document.createElement("div");
|
||||
elem.className = 'tag-selector-item';
|
||||
elem.style.position = 'absolute';
|
||||
elem.style.opacity = 0;
|
||||
|
@ -381,7 +381,7 @@ Zotero.TagSelector = class TagSelectorContainer extends React.PureComponent {
|
|||
*/
|
||||
getTextWidth(text, font) {
|
||||
// re-use canvas object for better performance
|
||||
var canvas = this.canvas || (this.canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"));
|
||||
var canvas = this.canvas || (this.canvas = document.createElement("canvas"));
|
||||
var context = canvas.getContext("2d");
|
||||
context.font = font;
|
||||
// Add a little more to make sure we don't crop
|
||||
|
|
|
@ -30,8 +30,6 @@ var ReactDOM = require('react-dom');
|
|||
var NotesList = require('components/itemPane/notesList').default;
|
||||
|
||||
var ZoteroContextPane = new function () {
|
||||
const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
||||
|
||||
var _tabCover;
|
||||
var _contextPane;
|
||||
var _contextPaneInner;
|
||||
|
@ -489,7 +487,7 @@ var ZoteroContextPane = new function () {
|
|||
var listBox = document.createXULElement('vbox');
|
||||
listBox.style.display = 'flex';
|
||||
listBox.setAttribute('flex', '1');
|
||||
var listInner = document.createElementNS(HTML_NS, 'div');
|
||||
var listInner = document.createElement('div');
|
||||
listInner.className = 'notes-list-container';
|
||||
// Otherwise it can be focused with tab
|
||||
listInner.tabIndex = -1;
|
||||
|
@ -742,11 +740,11 @@ var ZoteroContextPane = new function () {
|
|||
node.querySelector('.zotero-context-pane-editor-parent-line').innerHTML = '';
|
||||
var parentItem = item.parentItem;
|
||||
if (parentItem) {
|
||||
var container = document.createElementNS(HTML_NS, 'div');
|
||||
var img = document.createElementNS(HTML_NS, 'img');
|
||||
var container = document.createElement('div');
|
||||
var img = document.createElement('img');
|
||||
img.src = Zotero.ItemTypes.getImageSrc(parentItem.itemType);
|
||||
img.className = 'parent-item-type';
|
||||
var title = document.createElementNS(HTML_NS, 'div');
|
||||
var title = document.createElement('div');
|
||||
title.append(parentItem.getDisplayTitle());
|
||||
title.className = 'parent-title';
|
||||
container.append(img, title);
|
||||
|
|
|
@ -27,8 +27,6 @@
|
|||
|
||||
// eslint-disable-next-line camelcase, no-unused-vars
|
||||
var Zotero_Dictionary_Manager = new function () {
|
||||
const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
||||
|
||||
var installed;
|
||||
var updateMap;
|
||||
|
||||
|
@ -72,10 +70,10 @@ var Zotero_Dictionary_Manager = new function () {
|
|||
var listbox = document.getElementById('dictionaries');
|
||||
for (let d of list) {
|
||||
let name = d.name;
|
||||
let li = document.createElement('richlistitem');
|
||||
let div = document.createElementNS(HTML_NS, 'div');
|
||||
let li = document.createXULElement('richlistitem');
|
||||
let div = document.createElement('div');
|
||||
|
||||
let checkbox = document.createElementNS(HTML_NS, 'input');
|
||||
let checkbox = document.createElement('input');
|
||||
checkbox.type = 'checkbox';
|
||||
checkbox.id = d.locale;
|
||||
// Store properties on element
|
||||
|
@ -91,7 +89,7 @@ var Zotero_Dictionary_Manager = new function () {
|
|||
}
|
||||
checkbox.setAttribute('tabindex', -1);
|
||||
|
||||
let label = document.createElementNS(HTML_NS, 'label');
|
||||
let label = document.createElement('label');
|
||||
label.setAttribute('for', d.locale);
|
||||
// Add " (update available)"
|
||||
if (updateMap.has(d.id)) {
|
||||
|
|
|
@ -79,7 +79,7 @@ window.addEventListener(
|
|||
);
|
||||
|
||||
function createContentAreaContextMenuItem(name) {
|
||||
let item = document.createElement('menuitem');
|
||||
let item = document.createXULElement('menuitem');
|
||||
item.id = 'context-' + name.toLowerCase();
|
||||
item.setAttribute('label', Zotero.Intl.strings[name + 'Cmd.label']);
|
||||
item.setAttribute('accesskey', Zotero.Intl.strings[name + 'Cmd.accesskey']);
|
||||
|
@ -88,18 +88,18 @@ function createContentAreaContextMenuItem(name) {
|
|||
}
|
||||
|
||||
function createContentAreaContextMenu() {
|
||||
let menupopup = document.createElement('menupopup');
|
||||
let menupopup = document.createXULElement('menupopup');
|
||||
menupopup.id = 'contentAreaContextMenu';
|
||||
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('undo'));
|
||||
let undoSep = document.createElement('menuseparator');
|
||||
let undoSep = document.createXULElement('menuseparator');
|
||||
undoSep.id = 'context-sep-undo';
|
||||
menupopup.appendChild(undoSep);
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('cut'));
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('copy'));
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('paste'));
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('delete'));
|
||||
let pasteSep = document.createElement('menuseparator');
|
||||
let pasteSep = document.createXULElement('menuseparator');
|
||||
pasteSep.id = 'context-sep-paste';
|
||||
menupopup.appendChild(pasteSep);
|
||||
menupopup.appendChild(createContentAreaContextMenuItem('selectAll'));
|
||||
|
|
|
@ -2331,8 +2331,6 @@
|
|||
// don't overlap.
|
||||
if (!this._updateRetracted) {
|
||||
this._updateRetracted = Zotero.serial(async function (item) {
|
||||
var htmlNS = 'http://www.w3.org/1999/xhtml';
|
||||
|
||||
var show = Zotero.Retractions.isRetracted(item);
|
||||
if (!show) {
|
||||
this._id('retraction-box').hidden = true;
|
||||
|
@ -2363,8 +2361,8 @@
|
|||
elem.hidden = false;
|
||||
elem.textContent = '';
|
||||
for (let reason of data.reasons) {
|
||||
let dt = document.createElementNS(htmlNS, 'dt');
|
||||
let dd = document.createElementNS(htmlNS, 'dd');
|
||||
let dt = document.createElement('dt');
|
||||
let dd = document.createElement('dd');
|
||||
|
||||
dt.textContent = reason;
|
||||
dd.textContent = Zotero.Retractions.getReasonDescription(reason);
|
||||
|
@ -2385,7 +2383,7 @@
|
|||
if (data.doi || data.pmid) {
|
||||
let div = this._id('retraction-notice');
|
||||
div.textContent = '';
|
||||
let a = document.createElementNS(htmlNS, 'a');
|
||||
let a = document.createElement('a');
|
||||
a.textContent = Zotero.getString('retraction.notice');
|
||||
if (data.doi) {
|
||||
a.href = 'https://doi.org/' + data.doi;
|
||||
|
@ -2405,13 +2403,13 @@
|
|||
div.hidden = false;
|
||||
div.textContent = '';
|
||||
|
||||
let p = document.createElementNS(htmlNS, 'p');
|
||||
let p = document.createElement('p');
|
||||
p.textContent = Zotero.getString('retraction.details');
|
||||
|
||||
let ul = document.createElementNS(htmlNS, 'ul');
|
||||
let ul = document.createElement('ul');
|
||||
for (let url of data.urls) {
|
||||
let li = document.createElementNS(htmlNS, 'li');
|
||||
let a = document.createElementNS(htmlNS, 'a');
|
||||
let li = document.createElement('li');
|
||||
let a = document.createElement('a');
|
||||
url = url.replace(/^http:/, 'https:');
|
||||
a.href = url;
|
||||
a.textContent = url;
|
||||
|
@ -2438,7 +2436,7 @@
|
|||
creditElem.appendChild(document.createTextNode(part.text));
|
||||
}
|
||||
else if (part.type == 'link') {
|
||||
let a = document.createElementNS(htmlNS, 'a');
|
||||
let a = document.createElement('a');
|
||||
a.href = part.attributes.href;
|
||||
a.textContent = part.text;
|
||||
creditElem.appendChild(a);
|
||||
|
|
|
@ -286,7 +286,7 @@
|
|||
var label = this.createValueElement(name, tabindex);
|
||||
|
||||
if (this.editable) {
|
||||
var remove = document.createElement("label");
|
||||
var remove = document.createXULElement("label");
|
||||
remove.setAttribute('value', '-');
|
||||
remove.setAttribute('class', 'zotero-clicky zotero-clicky-minus');
|
||||
remove.setAttribute('tabindex', -1);
|
||||
|
@ -371,7 +371,7 @@
|
|||
|
||||
|
||||
createValueElement(valueText, tabindex) {
|
||||
var valueElement = document.createElement("label");
|
||||
var valueElement = document.createXULElement("label");
|
||||
valueElement.setAttribute('fieldname', 'tag');
|
||||
valueElement.setAttribute('flex', 1);
|
||||
valueElement.className = 'zotero-box-label';
|
||||
|
|
|
@ -256,8 +256,7 @@ var Zotero_Import_Wizard = {
|
|||
catch (e) {
|
||||
if (e.message == 'Encrypted Mendeley database') {
|
||||
let url = 'https://www.zotero.org/support/kb/mendeley_import';
|
||||
let HTML_NS = 'http://www.w3.org/1999/xhtml'
|
||||
let elem = document.createElementNS(HTML_NS, 'div');
|
||||
let elem = document.createElement('div');
|
||||
elem.innerHTML = `The selected Mendeley database cannot be read, likely because it `
|
||||
+ `is encrypted. See <a href="${url}" class="text-link">How do I import a `
|
||||
+ `Mendeley library into Zotero?</a> for more information.`
|
||||
|
|
|
@ -117,7 +117,7 @@ var Zotero_Citation_Dialog = new function () {
|
|||
var locator = locators[value];
|
||||
var locatorLabel = Zotero.getString('citation.locator.'+locator.replace(/\s/g,''));
|
||||
// add to list of labels
|
||||
var child = document.createElement("menuitem");
|
||||
var child = document.createXULElement("menuitem");
|
||||
child.setAttribute("value", value);
|
||||
child.setAttribute("label", locatorLabel);
|
||||
label_list.appendChild(child);
|
||||
|
|
|
@ -122,7 +122,7 @@ var Zotero_QuickFormat = new function () {
|
|||
var locatorLabel = Zotero.getString('citation.locator.'+locator.replace(/\s/g,''));
|
||||
|
||||
// add to list of labels
|
||||
var child = document.createElement("menuitem");
|
||||
var child = document.createXULElement("menuitem");
|
||||
child.setAttribute("value", locator);
|
||||
child.setAttribute("label", locatorLabel);
|
||||
labelList.appendChild(child);
|
||||
|
@ -620,7 +620,7 @@ var Zotero_QuickFormat = new function () {
|
|||
|
||||
var publicationTitle = item.getField("publicationTitle", false, true);
|
||||
if(publicationTitle) {
|
||||
var label = document.createElement("label");
|
||||
var label = document.createXULElement("label");
|
||||
label.setAttribute("value", publicationTitle);
|
||||
label.setAttribute("crop", "end");
|
||||
label.style.fontStyle = "italic";
|
||||
|
@ -652,7 +652,7 @@ var Zotero_QuickFormat = new function () {
|
|||
if(i != 0) str += ", ";
|
||||
|
||||
if(typeof node === "object") {
|
||||
var label = document.createElement("label");
|
||||
var label = document.createXULElement("label");
|
||||
label.setAttribute("value", str);
|
||||
label.setAttribute("crop", "end");
|
||||
infoHbox.appendChild(label);
|
||||
|
@ -666,7 +666,7 @@ var Zotero_QuickFormat = new function () {
|
|||
if(nodes.length && (!str.length || str[str.length-1] !== ".")) str += ".";
|
||||
}
|
||||
|
||||
var label = document.createElement("label");
|
||||
var label = document.createXULElement("label");
|
||||
label.setAttribute("value", str);
|
||||
label.setAttribute("crop", "end");
|
||||
label.setAttribute("flex", "1");
|
||||
|
@ -677,13 +677,13 @@ var Zotero_QuickFormat = new function () {
|
|||
* Creates an item to be added to the item list
|
||||
*/
|
||||
function _buildListItem(item) {
|
||||
var titleNode = document.createElement("label");
|
||||
var titleNode = document.createXULElement("label");
|
||||
titleNode.setAttribute("class", "citation-dialog title");
|
||||
titleNode.setAttribute("flex", "1");
|
||||
titleNode.setAttribute("crop", "end");
|
||||
titleNode.setAttribute("value", item.getDisplayTitle());
|
||||
|
||||
var infoNode = document.createElement("hbox");
|
||||
var infoNode = document.createXULElement("hbox");
|
||||
infoNode.setAttribute("class", "citation-dialog info");
|
||||
_buildItemDescription(item, infoNode);
|
||||
|
||||
|
@ -703,7 +703,7 @@ var Zotero_QuickFormat = new function () {
|
|||
* Creates a list separator to be added to the item list
|
||||
*/
|
||||
function _buildListSeparator(labelText, loading) {
|
||||
var titleNode = document.createElement("label");
|
||||
var titleNode = document.createXULElement("label");
|
||||
titleNode.setAttribute("class", "citation-dialog separator-title");
|
||||
titleNode.setAttribute("flex", "1");
|
||||
titleNode.setAttribute("crop", "end");
|
||||
|
|
|
@ -41,7 +41,6 @@ const CHILD_INDENT = 12;
|
|||
const COLORED_TAGS_RE = new RegExp("^[0-" + Zotero.Tags.MAX_COLORED_TAGS + "]{1}$");
|
||||
const COLUMN_PREFS_FILEPATH = OS.Path.join(Zotero.Profile.dir, "treePrefs.json");
|
||||
const EMOJI_RE = /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu;
|
||||
const HTML_NS = "http://www.w3.org/1999/xhtml";
|
||||
const ATTACHMENT_STATE_LOAD_DELAY = 150; //ms
|
||||
|
||||
var ItemTree = class ItemTree extends LibraryTree {
|
||||
|
@ -132,7 +131,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
this._itemTreeLoadingDeferred.resolve();
|
||||
// Create an element where we can create drag images to be displayed next to the cursor while dragging
|
||||
// since for multiple item drags we need to display all the elements
|
||||
let elem = this._dragImageContainer = document.createElementNS(HTML_NS, "div");
|
||||
let elem = this._dragImageContainer = document.createElement("div");
|
||||
elem.style.width = "100%";
|
||||
elem.style.height = "2000px";
|
||||
elem.style.position = "absolute";
|
||||
|
@ -2621,7 +2620,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
if (this._titleMarkup.hasOwnProperty(token)) {
|
||||
let markup = this._titleMarkup[token];
|
||||
if (markup.beginsTag) {
|
||||
let node = document.createElementNS(HTML_NS, markup.beginsTag);
|
||||
let node = document.createElement(markup.beginsTag);
|
||||
if (markup.style) {
|
||||
Object.assign(node.style, markup.style);
|
||||
}
|
||||
|
@ -2663,14 +2662,14 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
}
|
||||
|
||||
_renderPrimaryCell(index, data, column) {
|
||||
let span = document.createElementNS(HTML_NS, 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell ${column.className}`;
|
||||
span.classList.add('primary');
|
||||
|
||||
// Add twisty, icon, tag swatches and retraction indicator
|
||||
let twisty;
|
||||
if (this.isContainerEmpty(index)) {
|
||||
twisty = document.createElementNS(HTML_NS, 'span');
|
||||
twisty = document.createElement('span');
|
||||
twisty.classList.add("spacer-twisty");
|
||||
}
|
||||
else {
|
||||
|
@ -2716,7 +2715,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
Zotero.debug(e, 1);
|
||||
}
|
||||
|
||||
let textSpan = document.createElementNS(HTML_NS, 'span');
|
||||
let textSpan = document.createElement('span');
|
||||
let textWithFullStop = this._renderItemTitle(data, textSpan);
|
||||
if (!textWithFullStop.match(/\.$/)) {
|
||||
textWithFullStop += '.';
|
||||
|
@ -2735,7 +2734,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
}
|
||||
|
||||
_renderHasAttachmentCell(index, data, column) {
|
||||
let span = document.createElementNS(HTML_NS, 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell ${column.className}`;
|
||||
|
||||
if (this.collectionTreeRow.isTrash()) return span;
|
||||
|
@ -2865,7 +2864,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
div.innerHTML = "";
|
||||
}
|
||||
else {
|
||||
div = document.createElementNS(HTML_NS, 'div');
|
||||
div = document.createElement('div');
|
||||
div.className = "row";
|
||||
}
|
||||
|
||||
|
@ -2878,7 +2877,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
if (this._dropRow == index) {
|
||||
let span;
|
||||
if (Zotero.DragDrop.currentOrientation != 0) {
|
||||
span = document.createElementNS(HTML_NS, 'span');
|
||||
span = document.createElement('span');
|
||||
span.className = Zotero.DragDrop.currentOrientation < 0 ? "drop-before" : "drop-after";
|
||||
div.appendChild(span);
|
||||
} else {
|
||||
|
@ -3252,13 +3251,12 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
|
||||
if (this.collectionTreeRow && !this.rowCount) {
|
||||
let doc = this._ownerDocument;
|
||||
let ns = 'http://www.w3.org/1999/xhtml';
|
||||
let div;
|
||||
|
||||
// My Library and no groups
|
||||
if (this.collectionTreeRow.isLibrary() && !Zotero.Groups.getAll().length) {
|
||||
div = doc.createElementNS(ns, 'div');
|
||||
let p = doc.createElementNS(ns, 'p');
|
||||
div = doc.createElement('div');
|
||||
let p = doc.createElement('p');
|
||||
let html = Zotero.getString(
|
||||
'pane.items.intro.text1',
|
||||
[
|
||||
|
@ -3271,7 +3269,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
p.innerHTML = html;
|
||||
div.appendChild(p);
|
||||
|
||||
p = doc.createElementNS(ns, 'p');
|
||||
p = doc.createElement('p');
|
||||
html = Zotero.getString(
|
||||
'pane.items.intro.text2',
|
||||
[
|
||||
|
@ -3290,7 +3288,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
p.innerHTML = html;
|
||||
div.appendChild(p);
|
||||
|
||||
p = doc.createElementNS(ns, 'p');
|
||||
p = doc.createElement('p');
|
||||
html = Zotero.getString('pane.items.intro.text3', [Zotero.clientName]);
|
||||
// Encode special chars, which shouldn't exist
|
||||
html = Zotero.Utilities.htmlSpecialChars(html);
|
||||
|
@ -3323,17 +3321,17 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
}
|
||||
// My Publications
|
||||
else if (this.collectionTreeRow.isPublications()) {
|
||||
div = doc.createElementNS(ns, 'div');
|
||||
div = doc.createElement('div');
|
||||
div.className = 'publications';
|
||||
let p = doc.createElementNS(ns, 'p');
|
||||
let p = doc.createElement('p');
|
||||
p.textContent = Zotero.getString('publications.intro.text1', window.ZOTERO_CONFIG.DOMAIN_NAME);
|
||||
div.appendChild(p);
|
||||
|
||||
p = doc.createElementNS(ns, 'p');
|
||||
p = doc.createElement('p');
|
||||
p.textContent = Zotero.getString('publications.intro.text2');
|
||||
div.appendChild(p);
|
||||
|
||||
p = doc.createElementNS(ns, 'p');
|
||||
p = doc.createElement('p');
|
||||
let html = Zotero.getString('publications.intro.text3');
|
||||
// Convert <b> tags to placeholders
|
||||
html = html.replace('<b>', ':b:').replace('</b>', ':/b:');
|
||||
|
@ -3821,7 +3819,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
var icon = getDOMElement(iconClsName);
|
||||
if (!icon) {
|
||||
Zotero.debug('Could not find tree icon for "' + itemType + '"');
|
||||
return document.createElementNS(HTML_NS, 'span');
|
||||
return document.createElement('span');
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
@ -3832,7 +3830,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
}
|
||||
|
||||
_getTagSwatch(tag, color) {
|
||||
let span = document.createElementNS(HTML_NS, 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = 'tag-swatch';
|
||||
// If only emoji, display directly
|
||||
//
|
||||
|
|
|
@ -280,21 +280,21 @@ var Zotero_Publications_Dialog = new function () {
|
|||
var div = currentPage.getElementsByAttribute('class', 'license-description')[0];
|
||||
}
|
||||
else {
|
||||
let hbox = document.createElement('hbox');
|
||||
let hbox = document.createXULElement('hbox');
|
||||
hbox.align = "center";
|
||||
groupbox.appendChild(hbox);
|
||||
|
||||
var icon = document.createElement('image');
|
||||
var icon = document.createXULElement('image');
|
||||
icon.className = 'license-icon';
|
||||
icon.setAttribute('style', 'width: 88px');
|
||||
hbox.appendChild(icon);
|
||||
|
||||
let sep = document.createElement('separator');
|
||||
let sep = document.createXULElement('separator');
|
||||
sep.orient = 'vertical';
|
||||
sep.setAttribute('style', 'width: 10px');
|
||||
hbox.appendChild(sep);
|
||||
|
||||
var div = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
|
||||
var div = document.createElement('div');
|
||||
div.className = 'license-description';
|
||||
div.setAttribute('style', 'width: 400px');
|
||||
hbox.appendChild(div);
|
||||
|
|
|
@ -702,7 +702,7 @@ var Zotero_RTFScan = new function() {
|
|||
div.innerHTML = "";
|
||||
}
|
||||
else {
|
||||
div = document.createElementNS("http://www.w3.org/1999/xhtml", 'div');
|
||||
div = document.createElement('div');
|
||||
div.className = "row";
|
||||
}
|
||||
|
||||
|
@ -721,15 +721,15 @@ var Zotero_RTFScan = new function() {
|
|||
{ passive: true });
|
||||
}
|
||||
else {
|
||||
twisty = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
twisty = document.createElement('span');
|
||||
twisty.classList.add("spacer-twisty");
|
||||
}
|
||||
|
||||
let textSpan = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let textSpan = document.createElement('span');
|
||||
textSpan.className = "cell-text";
|
||||
textSpan.innerText = row[column.dataKey] || "";
|
||||
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell primary ${column.className}`;
|
||||
span.appendChild(twisty);
|
||||
span.appendChild(textSpan);
|
||||
|
@ -737,7 +737,7 @@ var Zotero_RTFScan = new function() {
|
|||
div.appendChild(span);
|
||||
}
|
||||
else if (column.dataKey == 'action') {
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell action ${column.className}`;
|
||||
if (row.parent) {
|
||||
if (row.action) {
|
||||
|
@ -753,7 +753,7 @@ var Zotero_RTFScan = new function() {
|
|||
div.appendChild(span);
|
||||
}
|
||||
else {
|
||||
let span = document.createElementNS("http://www.w3.org/1999/xhtml", 'span');
|
||||
let span = document.createElement('span');
|
||||
span.className = `cell ${column.className}`;
|
||||
span.innerText = row[column.dataKey] || "";
|
||||
div.appendChild(span);
|
||||
|
|
|
@ -128,7 +128,7 @@ var Zotero_Tag_Color_Chooser = new function() {
|
|||
var msg = Zotero.getString('tagColorChooser.numberKeyInstructions');
|
||||
var matches = msg.match(/(.+)\$NUMBER(.+)/);
|
||||
|
||||
var num = document.createElement('label');
|
||||
var num = document.createXULElement('label');
|
||||
num.id = 'number-key';
|
||||
num.setAttribute('value', parseInt(tagPosition.value) + 1);
|
||||
|
||||
|
|
|
@ -826,7 +826,7 @@ Zotero.Tags = new function() {
|
|||
.getService(Components.interfaces.nsIAppShellService)
|
||||
.hiddenDOMWindow;
|
||||
var doc = win.document;
|
||||
var canvas = doc.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
|
||||
var canvas = doc.createElement('canvas');
|
||||
|
||||
var width = extraImageWidth
|
||||
+ (retracted
|
||||
|
|
|
@ -475,7 +475,7 @@ class PDFRenderer {
|
|||
return new Promise((resolve) => {
|
||||
this._browser = Zotero.Browser.createHiddenBrowser();
|
||||
let doc = this._browser.ownerDocument;
|
||||
let container = doc.createElement('hbox');
|
||||
let container = doc.createXULElement('hbox');
|
||||
container.style.position = 'fixed';
|
||||
container.style.zIndex = '-1';
|
||||
container.append(this._browser);
|
||||
|
|
|
@ -32,7 +32,6 @@ if (!Zotero.Sync) {
|
|||
// Initialized as Zotero.Sync.Runner in zotero.js
|
||||
Zotero.Sync.Runner_Module = function (options = {}) {
|
||||
const stopOnError = false;
|
||||
const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
||||
|
||||
Zotero.defineProperty(this, 'enabled', {
|
||||
get: () => {
|
||||
|
@ -1692,7 +1691,7 @@ Zotero.Sync.Runner_Module = function (options = {}) {
|
|||
if (_tooltipMessages.length) {
|
||||
_currentTooltipMessages.textContent = '';
|
||||
for (let message of _tooltipMessages) {
|
||||
let elem = _currentTooltipMessages.ownerDocument.createElementNS(HTML_NS, 'p');
|
||||
let elem = _currentTooltipMessages.ownerDocument.createElement('p');
|
||||
elem.textContent = message;
|
||||
_currentTooltipMessages.appendChild(elem);
|
||||
}
|
||||
|
|
|
@ -1678,7 +1678,7 @@ Zotero.Utilities.Internal = {
|
|||
var selectedIndex = 0;
|
||||
var i = 0;
|
||||
for (let library of libraries) {
|
||||
let menuitem = menulist.ownerDocument.createElement('menuitem');
|
||||
let menuitem = menulist.ownerDocument.createXULElement('menuitem');
|
||||
menuitem.value = library.libraryID;
|
||||
menuitem.setAttribute('label', library.name);
|
||||
menupopup.appendChild(menuitem);
|
||||
|
@ -1694,14 +1694,13 @@ Zotero.Utilities.Internal = {
|
|||
|
||||
|
||||
buildLibraryMenuHTML: function (select, libraries, selectedLibraryID) {
|
||||
var namespaceURI = 'http://www.w3.org/1999/xhtml';
|
||||
while (select.hasChildNodes()) {
|
||||
select.removeChild(select.firstChild);
|
||||
}
|
||||
var selectedIndex = 0;
|
||||
var i = 0;
|
||||
for (let library of libraries) {
|
||||
let option = select.ownerDocument.createElementNS(namespaceURI, 'option');
|
||||
let option = select.ownerDocument.createElement('option');
|
||||
option.setAttribute('value', library.libraryID);
|
||||
option.setAttribute('data-editable', library.editable ? 'true' : 'false');
|
||||
option.setAttribute('data-filesEditable', library.filesEditable ? 'true' : 'false');
|
||||
|
|
|
@ -1453,8 +1453,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
* @return void
|
||||
*/
|
||||
this.showZoteroPaneProgressMeter = function (msg, determinate, icon, modalOnly) {
|
||||
const HTML_NS = "http://www.w3.org/1999/xhtml"
|
||||
|
||||
// If msg is undefined, keep any existing message. If false/null/"", clear.
|
||||
// The message is also cleared when the meters are hidden.
|
||||
_progressMessage = msg = (msg === undefined ? _progressMessage : msg) || "";
|
||||
|
@ -1489,7 +1487,7 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
let id = 'zotero-pane-progressmeter';
|
||||
let progressMeter = doc.getElementById(id);
|
||||
if (!progressMeter) {
|
||||
progressMeter = doc.createElementNS(HTML_NS, 'progress');
|
||||
progressMeter = doc.createElement('progress');
|
||||
progressMeter.id = id;
|
||||
}
|
||||
if (determinate) {
|
||||
|
@ -1647,10 +1645,10 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
button.id = 'zotero-tb-search-menu-button';
|
||||
button.setAttribute('type', 'menu');
|
||||
|
||||
var menupopup = document.createElement('menupopup');
|
||||
var menupopup = document.createXULElement('menupopup');
|
||||
|
||||
for (var i in modes) {
|
||||
var menuitem = document.createElement('menuitem');
|
||||
var menuitem = document.createXULElement('menuitem');
|
||||
menuitem.setAttribute('id', prefix + i);
|
||||
menuitem.setAttribute('label', modes[i].label);
|
||||
menuitem.setAttribute('name', 'searchMode');
|
||||
|
|
|
@ -3248,7 +3248,7 @@ var ZoteroPane = new function()
|
|||
if (eligibleAttachments.length > 1) {
|
||||
show.add(m.createNoteFromAnnotationsMenu);
|
||||
for (let attachment of attachmentsWithAnnotations) {
|
||||
let menuitem = document.createElement('menuitem');
|
||||
let menuitem = document.createXULElement('menuitem');
|
||||
menuitem.setAttribute('label', attachment.getDisplayTitle());
|
||||
menuitem.onclick = () => {
|
||||
ZoteroPane.createNoteFromAnnotationsForAttachment(attachment);
|
||||
|
@ -3626,7 +3626,7 @@ var ZoteroPane = new function()
|
|||
if (typeof content == 'string') {
|
||||
let contentParts = content.split("\n\n");
|
||||
for (let part of contentParts) {
|
||||
let desc = document.createElement('description');
|
||||
let desc = document.createXULElement('description');
|
||||
desc.appendChild(document.createTextNode(part));
|
||||
elem.appendChild(desc);
|
||||
}
|
||||
|
|
|
@ -191,14 +191,14 @@ ZoteroPluginInstaller.prototype = {
|
|||
showPreferences: function(document) {
|
||||
this.prefPaneDoc = document;
|
||||
var isInstalled = this.isInstalled(),
|
||||
groupbox = document.createElement("groupbox");
|
||||
groupbox = document.createXULElement("groupbox");
|
||||
groupbox.id = this._addon.EXTENSION_DIR;
|
||||
|
||||
var caption = document.createElement("caption");
|
||||
var caption = document.createXULElement("caption");
|
||||
caption.setAttribute("label", this._addon.APP);
|
||||
groupbox.appendChild(caption);
|
||||
|
||||
var description = document.createElement("description");
|
||||
var description = document.createXULElement("description");
|
||||
description.style.width = "45em";
|
||||
description.appendChild(document.createTextNode(
|
||||
isInstalled ?
|
||||
|
@ -206,9 +206,9 @@ ZoteroPluginInstaller.prototype = {
|
|||
Zotero.getString('zotero.preferences.wordProcessors.notInstalled', this._addon.APP)));
|
||||
groupbox.appendChild(description);
|
||||
|
||||
var hbox = document.createElement("hbox");
|
||||
var hbox = document.createXULElement("hbox");
|
||||
hbox.setAttribute("pack", "center");
|
||||
var button = document.createElement("button"),
|
||||
var button = document.createXULElement("button"),
|
||||
addon = this._addon;
|
||||
button.setAttribute("label",
|
||||
(isInstalled ?
|
||||
|
|
Loading…
Reference in a new issue