www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 4f87dd13230f23ad5b17baeb150a8a45ce9484ff
parent b4ac8b949e04f4a6c6e48baaab2beeb7105e57d5
Author: Dan Stillman <dstillman@zotero.org>
Date:   Tue, 23 Sep 2008 02:11:56 +0000

Merged r3351-3450 from 1.0 branch


Diffstat:
Mchrome/content/zotero/addCitationDialog.js | 27++++++++++++++++++++++-----
Mchrome/content/zotero/addCitationDialog.xul | 2+-
Mchrome/content/zotero/overlay.js | 80+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mchrome/content/zotero/webpagedump/domsaver.js | 16++++++++++++++++
Mchrome/content/zotero/xpcom/integration.js | 4++--
Mchrome/content/zotero/xpcom/itemTreeView.js | 12++++++++++++
Mchrome/content/zotero/xpcom/style.js | 12++++++------
Mchrome/locale/en-US/zotero/zotero.properties | 11+++++++----
8 files changed, 110 insertions(+), 54 deletions(-)

diff --git a/chrome/content/zotero/addCitationDialog.js b/chrome/content/zotero/addCitationDialog.js @@ -73,8 +73,8 @@ var Zotero_Citation_Dialog = new function () { if(io.citation.sortable) { _sortCheckbox = document.getElementById("keepSorted"); _sortCheckbox.hidden = false; - _sortCheckbox.checked = true; - io.citation.properties.sort = true; + if(io.citation.properties.sort === undefined) io.citation.properties.sort = true; + _sortCheckbox.checked = io.citation.properties.sort; } // load locators @@ -345,10 +345,27 @@ var Zotero_Citation_Dialog = new function () { */ function accept() { _getCitation(); - if(_previewShown && io.citation.citationItems.length // if a citation is selected - && document.getElementById('editor').value != _originalHTML) { // and citation has been edited - io.citation.properties.custom = document.getElementById('editor').value; + var isCustom = _previewShown && io.citation.citationItems.length // if a citation is selected + && document.getElementById('editor').value != _originalHTML // and citation has been edited + + if(isCustom) { + var citation = document.getElementById('editor').value + } else { + var citation = (io.citation.citationItems.length ? io.previewFunction() : ""); + } + + if(Zotero.Utilities.prototype.trim(citation) == "") { + var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] + .getService(Components.interfaces.nsIPromptService); + var insert = promptService.confirm(window, + Zotero.getString("integration.emptyCitationWarning.title"), + Zotero.getString("integration.emptyCitationWarning.body")); + if(!insert) return false; } + + if(isCustom) io.citation.properties.custom = citation; + + return true; } /* diff --git a/chrome/content/zotero/addCitationDialog.xul b/chrome/content/zotero/addCitationDialog.xul @@ -33,7 +33,7 @@ width="600" height="450" onload="Zotero_Citation_Dialog.load();" onunload="doUnload();" - ondialogaccept="Zotero_Citation_Dialog.accept();" + ondialogaccept="return Zotero_Citation_Dialog.accept();" ondialogcancel="Zotero_Citation_Dialog.cancel();" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" diff --git a/chrome/content/zotero/overlay.js b/chrome/content/zotero/overlay.js @@ -1534,36 +1534,39 @@ var ZoteroPane = new function() m.attachLink, m.sep2, m.duplicateItem); // If all items can be reindexed, or all items can be recognized, show option - var items = this.getSelectedItems(); - var canIndex = true; - var canRecognize = true; - for (var i=0; i<items.length; i++) { - if (!Zotero.Fulltext.canReindex(items[i].id)) { - canIndex = false; + if (Zotero.Fulltext.pdfConverterIsRegistered()) { + var items = this.getSelectedItems(); + var canIndex = true; + var canRecognize = true; + for (var i=0; i<items.length; i++) { + if (!Zotero.Fulltext.canReindex(items[i].id)) { + canIndex = false; + } + if(!Zotero_RecognizePDF.canRecognize(items[i])) { + canRecognize = false; + } + if(!canIndex && !canRecognize) { + break; + } } - - if(!Zotero_RecognizePDF.canRecognize(items[i])) { - canRecognize = false; + if (canIndex) { + show.push(m.reindexItem); } - - if(!canIndex && !canRecognize) { - break; + else { + hide.push(m.reindexItem); + } + if (canRecognize) { + show.push(m.recognizePDF); + } + else { + hide.push(m.recognizePDF); + } + if (canIndex || canRecognize) { + show.push(m.sep4); + } + else { + hide.push(m.sep4); } - } - if (canIndex) { - show.push(m.reindexItem); - } else { - hide.push(m.reindexItem); - } - if (canRecognize) { - show.push(m.recognizePDF); - } else { - hide.push(m.recognizePDF); - } - if(canIndex || canRecognize) { - show.push(m.sep4); - } else { - hide.push(m.sep4); } } // Single item selected @@ -1593,24 +1596,29 @@ var ZoteroPane = new function() if (item.isAttachment()) { var showSep4 = false; hide.push(m.duplicateItem); - // If not linked URL, show reindex line - if (Zotero.Fulltext.canReindex(item.id)) { - show.push(m.reindexItem); - showSep4 = true; - } else { - hide.push(m.reindexItem); + if (Zotero.Fulltext.pdfConverterIsRegistered()) { + // If not linked URL, show reindex line + if (Zotero.Fulltext.canReindex(item.id)) { + show.push(m.reindexItem); + showSep4 = true; + } + else { + hide.push(m.reindexItem); + } } if (Zotero_RecognizePDF.canRecognize(item)) { show.push(m.recognizePDF); showSep4 = true; - } else { + } + else { hide.push(m.recognizePDF); } - if(showSep4) { + if (showSep4) { show.push(m.sep4); - } else { + } + else { hide.push(m.sep4); } } diff --git a/chrome/content/zotero/webpagedump/domsaver.js b/chrome/content/zotero/webpagedump/domsaver.js @@ -641,6 +641,22 @@ var wpdDOMSaver = { } if ( aCSS.href != null && aCSS.href.indexOf("chrome") == 0 ) return ""; var flag = ""; + + // Added by Dan S. for Zotero + // + // Make sure cssRules is accessible -- it might not be if a <link> + // element appears within <body> instead of <head> + try { + aCSS.cssRules + } + catch (e) { + var msg = "Unable to access cssRules property of " + aCSS.href + + " in wpdDOMSaver.processCSSRecursively()"; + Zotero.debug(msg, 2); + Components.utils.reportError(msg); + return ""; + } + for ( var i=0; i<aCSS.cssRules.length; i++ ) { if ( aCSS.cssRules[i].type == 1 || aCSS.cssRules[i].type == 4 ) { if (flag=="") { diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js @@ -843,13 +843,13 @@ Zotero.Integration.Session.prototype.resetRequest = function() { * generates a field from a citation object */ Zotero.Integration.Session._acceptableTypes = ["string", "boolean", "number"]; -Zotero.Integration.Session._saveProperties = ["custom"]; +Zotero.Integration.Session._saveProperties = ["custom", "sort"]; Zotero.Integration.Session.prototype.getCitationField = function(citation) { var type, field = ""; for(var j=0; j<Zotero.Integration.Session._saveProperties.length; j++) { var property = Zotero.Integration.Session._saveProperties[j]; - if(citation.properties[property]) { + if(citation.properties[property] || citation.properties[property] === false) { field += ',"'+property+'":'+Zotero.JSON.serialize(citation.properties[property]); } } diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js @@ -791,8 +791,20 @@ Zotero.ItemTreeView.prototype.cycleHeader = function(column) this.selection.selectEventsSuppressed = true; var savedSelection = this.saveSelection(); + if (savedSelection.length == 1) { + var pos = this._itemRowMap[savedSelection[0]] - this._treebox.getFirstVisibleRow(); + } this.sort(); this.rememberSelection(savedSelection); + // If single row was selected, try to keep it in the same place + if (savedSelection.length == 1) { + var newRow = this._itemRowMap[savedSelection[0]]; + // Calculate the last row that would give us a full view + var fullTop = Math.max(0, this._dataItems.length - this._treebox.getPageLength()); + // Calculate the row that would give us the same position + var consistentTop = Math.max(0, newRow - pos); + this._treebox.scrollToRow(Math.min(fullTop, consistentTop)); + } this._treebox.invalidate(); this.selection.selectEventsSuppressed = false; } diff --git a/chrome/content/zotero/xpcom/style.js b/chrome/content/zotero/xpcom/style.js @@ -160,7 +160,7 @@ Zotero.Styles = new function() { } if(!xml || error) { - if(!hidden) alert(Zotero.getString('styles.installErrorURI', loadURI)); + if(!hidden) alert(Zotero.getString('styles.installError', loadURI)); if(error) throw error; return false; } @@ -181,7 +181,7 @@ Zotero.Styles = new function() { if(link.@rel == "source") { source = link.@href.toString(); if(source == styleID) { - if(!hidden) alert(Zotero.getString('styles.installErrorURI', loadURI)); + if(!hidden) alert(Zotero.getString('styles.installError', loadURI)); throw "Style with ID "+this.styleID+" references itself as source"; } break; @@ -231,9 +231,9 @@ Zotero.Styles = new function() { .getService(Components.interfaces.nsIPromptService); if(existingTitle) { - var text = Zotero.getString('styles.updateStyleURI', [existingTitle, title, loadURI]); + var text = Zotero.getString('styles.updateStyle', [existingTitle, title, loadURI]); } else { - var text = Zotero.getString('styles.installStyleURI', [title, loadURI]); + var text = Zotero.getString('styles.installStyle', [title, loadURI]); } var index = ps.confirmEx(null, '', @@ -261,12 +261,12 @@ Zotero.Styles = new function() { if(success) { _completeInstall(style, styleID, destFile, existingFile, styleFile); } else { - if(!hidden) alert(Zotero.getString('styles.installSourceErrorURI', [loadURI, source])); + if(!hidden) alert(Zotero.getString('styles.installSourceError', [loadURI, source])); throw error; } }); } else { - if(!hidden) alert(Zotero.getString('styles.installSourceErrorURI', [loadURI, source])); + if(!hidden) alert(Zotero.getString('styles.installSourceError', [loadURI, source])); throw "Source CSL URI is invalid"; } } else { diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties @@ -494,11 +494,14 @@ integration.regenerate.saveBehavior = Always follow this selection. integration.deleteCitedItem.title = Are you sure you want to remove this reference? integration.deleteCitedItem.body = This reference is cited in the text of your document. Deleting it will remove all citations. -styles.installStyleURI = Install style "%1$S" from %2$S? -styles.updateStyleURI = Update existing style "%1$S" with "%2$S" from %3$S? +integration.emptyCitationWarning.title = Blank Citation +integration.emptyCitationWarning.body = The citation you have specified would be empty in the currently selected style. Are you sure you want to add it? + +styles.installStyle = Install style "%1$S" from %2$S? +styles.updateStyle = Update existing style "%1$S" with "%2$S" from %3$S? styles.installed = The style "%S" was installed successfully. -styles.installErrorURI = %S does not appear to be a valid CSL file. -styles.installSourceErrorURI = %1$S references an invalid or non-existent CSL file at %2$S as its source. +styles.installError = %S does not appear to be a valid CSL file. +styles.installSourceError = %1$S references an invalid or non-existent CSL file at %2$S as its source. styles.deleteStyle = Are you sure you want to delete the style "%1$S"? styles.deleteStyles = Are you sure you want to delete the selected styles?