diff --git a/chrome/content/zotero/preferences/preferences_advanced.js b/chrome/content/zotero/preferences/preferences_advanced.js index 1891b4a7f1..bb6178dfec 100644 --- a/chrome/content/zotero/preferences/preferences_advanced.js +++ b/chrome/content/zotero/preferences/preferences_advanced.js @@ -50,18 +50,6 @@ Zotero_Preferences.Advanced = { document.getElementById('baseAttachmentPath').addEventListener('syncfrompreference', () => Zotero_Preferences.Attachment_Base_Directory.updateUI()); - document.getElementById('data-dir').addEventListener('syncfrompreference', (event) => { - event.target.value = this.onDataDirLoad(); - }); - - document.getElementById('data-dir').addEventListener('synctopreference', () => { - this.onDataDirUpdate(); - }); - - document.getElementById('data-dir-path').addEventListener('syncfrompreference', (event) => { - event.target.value = this.getDataDirPath(); - }); - this.onDataDirLoad(); document.getElementById('fulltext-rebuildIndex').setAttribute('label', @@ -350,64 +338,46 @@ Zotero_Preferences.Advanced = { onDataDirLoad: function () { - var useDataDir = Zotero.Prefs.get('useDataDir'); - var dataDir = Zotero.Prefs.get('lastDataDir') || Zotero.Prefs.get('dataDir'); var currentDir = Zotero.DataDirectory.dir; - var defaultDataDir = Zotero.DataDirectory.defaultDir; if (Zotero.forceDataDir) { document.getElementById('command-line-data-dir-path').textContent = currentDir; document.getElementById('command-line-data-dir').hidden = false; - document.getElementById('data-dir').hidden = true; } - // Change "Use profile directory" label to home directory location unless using profile dir - if (useDataDir || currentDir == defaultDataDir) { - document.getElementById('default-data-dir').setAttribute( - 'label', Zotero.getString('dataDir.default', Zotero.DataDirectory.defaultDir) - ); - } - - // Don't show custom data dir as in-use if set to the default - if (dataDir == defaultDataDir) { - useDataDir = false; - } - - document.getElementById('data-dir-path').setAttribute('disabled', !useDataDir); document.getElementById('migrate-data-dir').setAttribute( 'hidden', !Zotero.DataDirectory.canMigrate() ); - - return useDataDir; + + let revertToDefaultDir = document.getElementById("reset-data-dir"); + revertToDefaultDir.hidden = this._usingDefaultDataDir(); + revertToDefaultDir.setAttribute('data-l10n-args', `{"tooltiptext": "${Zotero.DataDirectory.defaultDir}"}`); + this.setDataDirInput(); }, - onDataDirUpdate: Zotero.Promise.coroutine(function* (forceNew) { - var radiogroup = document.getElementById('data-dir'); - var newUseDataDir = radiogroup.selectedIndex == 1; - - if (!forceNew && newUseDataDir && !this._usingDefaultDataDir()) { - return; - } + dataDirUpdate: Zotero.Promise.coroutine(function* (isCustomSelection) { + if (!isCustomSelection && this._usingDefaultDataDir()) return; // This call shows a filepicker if needed, forces a restart if required, and does nothing if // cancel was pressed or value hasn't changed yield Zotero.DataDirectory.choose( true, - !newUseDataDir, + !isCustomSelection, () => Zotero.launchURL('https://www.zotero.org/support/zotero_data') ); - radiogroup.selectedIndex = this._usingDefaultDataDir() ? 0 : 1; }), - chooseDataDir: function() { - let radiogroup = document.getElementById('data-dir'); - if (radiogroup.selectedIndex == 0) { - radiogroup.selectedIndex = 1; + setDataDirInput: async function () { + var filefield = document.getElementById('data-dir-path'); + var path = Zotero.Prefs.get('dataDir'); + if (path && await IOUtils.exists(path)) { + filefield.style.backgroundImage = 'url(moz-icon://' + Zotero.File.pathToFileURI(path) + '?size=16)'; + filefield.value = path; } else { - this.onDataDirUpdate(true); + filefield.value = ''; } }, diff --git a/chrome/content/zotero/preferences/preferences_advanced.xhtml b/chrome/content/zotero/preferences/preferences_advanced.xhtml index a8ba365eca..1be28e8462 100644 --- a/chrome/content/zotero/preferences/preferences_advanced.xhtml +++ b/chrome/content/zotero/preferences/preferences_advanced.xhtml @@ -67,6 +67,7 @@ readonly="true" flex="1" tabindex="0" + class="directory-path" aria-labelledby="baseAttachmentPathLabel"/>