diff --git a/chrome/content/zotero/preferences/preferences.js b/chrome/content/zotero/preferences/preferences.js index 43a018dd7..1b293ed43 100644 --- a/chrome/content/zotero/preferences/preferences.js +++ b/chrome/content/zotero/preferences/preferences.js @@ -131,16 +131,39 @@ function init() function chooseBaseAttachmentPath() { + // Get existing base directory + var oldBasePath = Zotero.Prefs.get('baseAttachmentPath'); + if (oldBasePath) { + var oldBasePathFile = Components.classes["@mozilla.org/file/local;1"] + .createInstance(Components.interfaces.nsILocalFile); + try { + oldBasePathFile.persistentDescriptor = oldBasePath; + } + catch (e) { + Zotero.debug(e, 1); + Components.utils.reportError(e); + oldBasePathFile = null; + } + } + //Prompt user to choose new base path var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"] .createInstance(nsIFilePicker); + if (oldBasePathFile) { + fp.displayDirectory = oldBasePathFile; + } fp.init(window, Zotero.getString('attachmentBasePath.selectDir'), nsIFilePicker.modeGetFolder); fp.appendFilters(nsIFilePicker.filterAll); if (fp.show() != nsIFilePicker.returnOK) { return false; } - var basePathFile = fp.file; + var newBasePathFile = fp.file; + + if (oldBasePathFile && oldBasePathFile.equals(newBasePathFile)) { + Zotero.debug("Base directory hasn't changed"); + return false; + } //Find all current attachments with relative attachment paths var sql = "SELECT itemID FROM itemAttachments WHERE linkMode=? AND path LIKE '" + @@ -152,28 +175,49 @@ function chooseBaseAttachmentPath() { var sql = "SELECT itemID FROM itemAttachments WHERE linkMode=?"; var params=[Zotero.Attachments.LINK_MODE_LINKED_FILE]; var allAttachments = Zotero.DB.columnQuery(sql,params); - var newRelativeAttachmentIDs = []; + var newAttachmentPaths = {}; + var numNewAttachments = 0; + var numOldAttachments = 0; var attachmentFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); - var tempAttachmentID,tempAttachment; - for (var index=0; index -