www

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

commit fe97d33e38de38e09d8d5d568e90ffd99e8098ee
parent 0456e5d3be76c00a09f64720c42d89d956ab88ef
Author: Dan Stillman <dstillman@zotero.org>
Date:   Sat, 17 Dec 2011 16:13:37 -0500

Display "Load WebDAV URL" button in Verify Server error

Allows for easier Standalone cert override (I hope -- not yet tested)

Diffstat:
Mchrome/content/zotero/xpcom/storage/webdav.js | 48+++++++++++++++++++++++++++++++++---------------
Mchrome/content/zotero/xpcom/utilities_internal.js | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mchrome/locale/en-US/zotero/zotero.properties | 1+
3 files changed, 90 insertions(+), 15 deletions(-)

diff --git a/chrome/content/zotero/xpcom/storage/webdav.js b/chrome/content/zotero/xpcom/storage/webdav.js @@ -1095,11 +1095,7 @@ Zotero.Sync.Storage.Session.WebDAV.prototype.checkServerCallback = function (uri // If there's an error, just display that if (e) { - promptService.alert( - window, - Zotero.getString('general.error'), - e.toString() - ); + Zotero.Utilities.Internal.errorPrompt(Zotero.getString('general.error'), e); return false; } @@ -1645,9 +1641,11 @@ Zotero.Sync.Storage.Session.WebDAV.prototype._checkResponse = function (req, obj if (!channel instanceof Ci.nsIChannel) { obj.onError('No HTTPS channel available'); } + var secInfo = channel.securityInfo; if (secInfo instanceof Ci.nsITransportSecurityInfo) { secInfo.QueryInterface(Ci.nsITransportSecurityInfo); + if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_INSECURE) == Ci.nsIWebProgressListener.STATE_IS_INSECURE) { var host = 'host'; try { @@ -1657,20 +1655,40 @@ Zotero.Sync.Storage.Session.WebDAV.prototype._checkResponse = function (req, obj Zotero.debug(e); } - var msg = Zotero.localeJoin([ - Zotero.getString('sync.storage.error.webdav.sslCertificateError', host), - Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo') - ]); + var msg = Zotero.getString('sync.storage.error.webdav.sslCertificateError', host) + + " " + Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo'); + var e = new Zotero.Error( + msg, + 0, + { + dialogText: msg, + dialogButtonText: Zotero.getString('sync.storage.error.webdav.loadURL'), + dialogButtonCallback: function () { + var zp = Zotero.getActiveZoteroPane(); + zp.loadURI(channel.URI.spec, { shiftKey: true }); + } + } + ); - obj.onError(msg); + obj.onError(e); return; } else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) { - var msg = Zotero.localeJoin([ - Zotero.getString('sync.storage.error.webdav.sslConnectionError', host), - Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo') - ]); - obj.onError(msg); + var msg = Zotero.getString('sync.storage.error.webdav.sslConnectionError', host) + + Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo'); + var e = new Zotero.Error( + msg, + 0, + { + dialogText: msg, + dialogButtonText: Zotero.getString('sync.storage.error.webdav.loadURL'), + dialogButtonCallback: function () { + var zp = Zotero.getActiveZoteroPane(); + zp.loadURI(channel.URI.spec, { shiftKey: true }); + } + } + ); + obj.onError(e); return; } } diff --git a/chrome/content/zotero/xpcom/utilities_internal.js b/chrome/content/zotero/xpcom/utilities_internal.js @@ -102,6 +102,62 @@ Zotero.Utilities.Internal = { ascii.push(String.fromCharCode(tens + (tens > 9 ? 87 : 48)) + String.fromCharCode(ones + (ones > 9 ? 87 : 48))); } return ascii.join(''); + }, + + + /** + * Display a prompt from an error with custom buttons and a callback + */ + "errorPrompt":function(title, e) { + var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] + .getService(Components.interfaces.nsIPromptService); + var message, buttonText, buttonCallback; + + if (e.data) { + if (e.data.dialogText) { + message = e.data.dialogText; + } + if (typeof e.data.dialogButtonText != 'undefined') { + buttonText = e.data.dialogButtonText; + buttonCallback = e.data.dialogButtonCallback; + } + } + if (!message) { + if (e.message) { + message = e.message; + } + else { + message = e; + } + } + + if (typeof buttonText == 'undefined') { + buttonText = Zotero.getString('errorReport.reportError'); + buttonCallback = function () { + win.ZoteroPane.reportErrors(); + } + } + // If secondary button is explicitly null, just use an alert + else if (buttonText === null) { + ps.alert(null, title, message); + return; + } + + var buttonFlags = ps.BUTTON_POS_0 * ps.BUTTON_TITLE_OK + + ps.BUTTON_POS_1 * ps.BUTTON_TITLE_IS_STRING; + var index = ps.confirmEx( + null, + title, + message, + buttonFlags, + "", + buttonText, + "", null, {} + ); + + if (index == 1) { + setTimeout(function () { buttonCallback(); }, 1); + } } } diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties @@ -681,6 +681,7 @@ sync.storage.error.webdav.insufficientSpace = A file upload failed due to insuf sync.storage.error.webdav.sslCertificateError = SSL certificate error connecting to %S. sync.storage.error.webdav.sslConnectionError = SSL connection error connecting to %S. sync.storage.error.webdav.loadURLForMoreInfo = Load your WebDAV URL in the browser for more information. +sync.storage.error.webdav.loadURL = Load WebDAV URL sync.storage.error.zfs.personalQuotaReached1 = You have reached your Zotero File Storage quota. Some files were not uploaded. Other Zotero data will continue to sync to the server. sync.storage.error.zfs.personalQuotaReached2 = See your zotero.org account settings for additional storage options. sync.storage.error.zfs.groupQuotaReached1 = The group '%S' has reached its Zotero File Storage quota. Some files were not uploaded. Other Zotero data will continue to sync to the server.