diff --git a/chrome/content/zotero/addCitationDialog.js b/chrome/content/zotero/addCitationDialog.js index 52fc0e152..8bcbb760f 100644 --- a/chrome/content/zotero/addCitationDialog.js +++ b/chrome/content/zotero/addCitationDialog.js @@ -258,7 +258,7 @@ var Zotero_Citation_Dialog = new function () { * Sorts the list of citations */ function sortCitation() { - io.citation.properties.sort = _sortCheckbox.checked; + io.citation.properties.sort = _sortCheckbox && _sortCheckbox.checked; if(_sortCheckbox.checked) { _getCitation(); diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js index 679471294..1afa3f102 100644 --- a/chrome/content/zotero/xpcom/integration.js +++ b/chrome/content/zotero/xpcom/integration.js @@ -1088,6 +1088,16 @@ Zotero.Integration.Session.prototype.editCitation = function(index, citation) { var me = this; var io = new function() { this.wrappedJSObject = this; } + // if there's already a citation, make sure we have item IDs in addition to keys + if(citation) { + for each(var citationItem in citation.citationItems) { + if(citationItem.key && !citationItem.itemID) { + var item = Zotero.Items.getByKey([citationItem.key]); + if(item) citationItem.itemID = item.itemID; + } + } + } + // create object to hold citation io.citation = (citation ? citation.clone() : this.style.createCitation()); io.citation.properties.index = parseInt(index, 10);