commit 263eb508cc2af710f96835d53f63ac9375a75e66
parent 2a9d1d269345274fb193b2f4e03756146430c3d7
Author: Simon Kornblith <simon@simonster.com>
Date: Wed, 19 Jun 2013 13:37:50 -0400
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.
Diffstat:
1 file changed, 11 insertions(+), 32 deletions(-)
diff --git 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;
+ }
}
}
}
@@ -2488,33 +2494,6 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index)
}
/**
- * 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
*/
Zotero.Integration.Session.prototype.getBibliography = function() {
@@ -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;
}