From 263eb508cc2af710f96835d53f63ac9375a75e66 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Wed, 19 Jun 2013 13:37:50 -0400 Subject: [PATCH] Remove field codes for empty bibliographies when refreshing This happens when a user inserts a bibliography in the middle of a paragraph and doesn't fully delete it. Also remove unused code for deleting citations from the document. --- chrome/content/zotero/xpcom/integration.js | 43 ++++++---------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js index e69ddb449..a12fae8c0 100644 --- a/chrome/content/zotero/xpcom/integration.js +++ b/chrome/content/zotero/xpcom/integration.js @@ -1234,6 +1234,7 @@ Zotero.Integration.Document.prototype.setDocPrefs = function() { // Refresh contents fieldGetter = new Zotero.Integration.Fields(me._session, me._doc); + fieldGetter.ignoreEmptyBibliography = false; return fieldGetter.updateSession().fail(Zotero.Integration.onFieldError) .then(fieldGetter.updateDocument.bind( fieldGetter, FORCE_CITATIONS_RESET_TEXT, true, true)); @@ -1260,6 +1261,7 @@ Zotero.Integration.Document.JSEnumerator.prototype.getNext = function() { Zotero.Integration.Fields = function(session, doc) { this._session = session; this._doc = doc; + this.ignoreEmptyBibliography = true; } /** @@ -1489,10 +1491,14 @@ Zotero.Integration.Fields.prototype._processFields = function(i) { throw e; } } - } else if(type === INTEGRATION_TYPE_BIBLIOGRAPHY && field.getText().trim() !== "") { - this._bibliographyFields.push(field); - if(!this._session.bibliographyData && !this._bibliographyData) { - this._bibliographyData = content; + } else if(type === INTEGRATION_TYPE_BIBLIOGRAPHY) { + if(this.ignoreEmptyBibliography && field.getText().trim() === "") { + this._removeCodeFields[i] = true; + } else { + this._bibliographyFields.push(field); + if(!this._session.bibliographyData && !this._bibliographyData) { + this._bibliographyData = content; + } } } } @@ -2487,33 +2493,6 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index) return citation; } -/** - * Marks a citation for removal - */ -Zotero.Integration.Session.prototype.deleteCitation = function(index) { - var oldCitation = (this.citationsByIndex[index] ? this.citationsByIndex[index] : false); - this.citationsByIndex[index] = {properties:{"delete":true}}; - - if(oldCitation && oldCitation.citationItems & oldCitation.properties.added) { - // clear out old citations if necessary - for each(var citationItem in oldCitation.citationItems) { - if(this.citationsByItemID[citationItem.id]) { - var indexInItemID = this.citationsByItemID[citationItem.id].indexOf(oldCitation); - if(indexInItemID !== -1) { - this.citationsByItemID[citationItem.id] = this.citationsByItemID[citationItem.id].splice(indexInItemID, 1); - if(this.citationsByItemID[citationItem.id].length == 0) { - delete this.citationsByItemID[citationItem.id]; - } - } - } - } - } - Zotero.debug("Integration: Deleting old citationID "+oldCitation.citationID); - if(oldCitation.citationID) delete this.citeprocCitationIDs[oldCitation.citationID]; - - this.updateIndices[index] = true; -} - /** * Gets integration bibliography */ @@ -2654,7 +2633,7 @@ Zotero.Integration.Session.prototype._updateCitations = function() { index = parseInt(index); var citation = this.citationsByIndex[index]; - if(!citation) continue; + if(!citation || citation.properties.delete) continue; if(this.formatCitation(index, citation)) { this.bibliographyHasChanged = true; }