Merge branch '3.0'
Conflicts: chrome/content/zotero/xpcom/storage/webdav.js chrome/content/zotero/zoteroPane.js chrome/skin/default/zotero/preferences.css
This commit is contained in:
commit
059460a5d2
|
@ -254,9 +254,8 @@
|
||||||
<label value="George Mason University"/>
|
<label value="George Mason University"/>
|
||||||
<label value="Fairfax, VA, USA"/>
|
<label value="Fairfax, VA, USA"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<label class="subhead" value="&zotero.directors;"/>
|
<label class="subhead" value="&zotero.director;"/>
|
||||||
<vbox class="subcontent">
|
<vbox class="subcontent">
|
||||||
<label value="Dan Cohen"/>
|
|
||||||
<label value="Sean Takats"/>
|
<label value="Sean Takats"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<label class="subhead" value="&zotero.developers;"/>
|
<label class="subhead" value="&zotero.developers;"/>
|
||||||
|
@ -264,16 +263,12 @@
|
||||||
<label value="Dan Stillman"/>
|
<label value="Dan Stillman"/>
|
||||||
<label value="Simon Kornblith"/>
|
<label value="Simon Kornblith"/>
|
||||||
<label value="Faolan Cheslack-Postava"/>
|
<label value="Faolan Cheslack-Postava"/>
|
||||||
<label value="Fred Gibbs"/>
|
|
||||||
</vbox>
|
|
||||||
<label class="subhead" value="Community Support:"/><!-- TODO: localize -->
|
|
||||||
<vbox class="subcontent">
|
|
||||||
<label value="Debbie Maron"/>
|
|
||||||
</vbox>
|
</vbox>
|
||||||
<label class="subhead" value="&zotero.about.localizations;"/>
|
<label class="subhead" value="&zotero.about.localizations;"/>
|
||||||
<vbox class="subcontent">
|
<vbox class="subcontent">
|
||||||
<vbox id="zotero-translators-list"/>
|
<vbox id="zotero-translators-list"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
<label class="text-link" href="http://www.zotero.org/support/credits_and_acknowledgments" value="&zotero.moreCreditsAndAcknowledgements;"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox id="column2">
|
<vbox id="column2">
|
||||||
<label class="subhead" value="Citation & Bibliography Processing"/>
|
<label class="subhead" value="Citation & Bibliography Processing"/>
|
||||||
|
@ -292,10 +287,6 @@
|
||||||
<label class="text-link" href="http://www.dbai.tuwien.ac.at/user/pollak/webpagedump/" value="WebPageDump (snapshot code)"/>
|
<label class="text-link" href="http://www.dbai.tuwien.ac.at/user/pollak/webpagedump/" value="WebPageDump (snapshot code)"/>
|
||||||
<label class="text-link" href="http://www.foolabs.com/xpdf/" value="Xpdf (pdftotext)"/>
|
<label class="text-link" href="http://www.foolabs.com/xpdf/" value="Xpdf (pdftotext)"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<label class="subhead" value="&zotero.executiveProducer;"/>
|
|
||||||
<vbox class="subcontent">
|
|
||||||
<label value="Roy Rosenzweig"/>
|
|
||||||
</vbox>
|
|
||||||
<label class="subhead" value="&zotero.thanks;"/>
|
<label class="subhead" value="&zotero.thanks;"/>
|
||||||
<vbox class="subcontent">
|
<vbox class="subcontent">
|
||||||
<label class="text-link" href="http://www.mellon.org/" value="Andrew W. Mellon Foundation"/>
|
<label class="text-link" href="http://www.mellon.org/" value="Andrew W. Mellon Foundation"/>
|
||||||
|
|
|
@ -328,11 +328,9 @@ Zotero.Attachments = new function(){
|
||||||
// if it fails
|
// if it fails
|
||||||
//
|
//
|
||||||
// TODO: index later
|
// TODO: index later
|
||||||
var timer = Components.classes["@mozilla.org/timer;1"].
|
setTimeout(function() {
|
||||||
createInstance(Components.interfaces.nsITimer);
|
|
||||||
timer.initWithCallback({notify: function() {
|
|
||||||
Zotero.Fulltext.indexItems([itemID]);
|
Zotero.Fulltext.indexItems([itemID]);
|
||||||
}}, 1000, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
|
}, 1000);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
// Clean up
|
// Clean up
|
||||||
|
@ -612,10 +610,9 @@ Zotero.Attachments = new function(){
|
||||||
// we'll index it later if it fails
|
// we'll index it later if it fails
|
||||||
//
|
//
|
||||||
// TODO: index later
|
// TODO: index later
|
||||||
var timer = Components.classes["@mozilla.org/timer;1"].
|
setTimeout(function () {
|
||||||
createInstance(Components.interfaces.nsITimer);
|
f();
|
||||||
timer.initWithCallback({notify: f}, 1000,
|
}, 1000);
|
||||||
Components.interfaces.nsITimer.TYPE_ONE_SHOT);
|
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
// Clean up
|
// Clean up
|
||||||
|
@ -652,10 +649,9 @@ Zotero.Attachments = new function(){
|
||||||
Zotero.Notifier.trigger('add', 'item', itemID);
|
Zotero.Notifier.trigger('add', 'item', itemID);
|
||||||
|
|
||||||
// Wait a second before indexing (see note above)
|
// Wait a second before indexing (see note above)
|
||||||
var timer = Components.classes["@mozilla.org/timer;1"].
|
setTimeout(function () {
|
||||||
createInstance(Components.interfaces.nsITimer);
|
f();
|
||||||
timer.initWithCallback({notify: f}, 1000,
|
}, 1000);
|
||||||
Components.interfaces.nsITimer.TYPE_ONE_SHOT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Caution: Take care using this itemID. The notifier may not yet have been called,
|
// Caution: Take care using this itemID. The notifier may not yet have been called,
|
||||||
|
|
|
@ -1366,7 +1366,8 @@ Zotero.Integration.Fields.prototype.addEditCitation = function(field, callback)
|
||||||
|
|
||||||
if(!session.bibliographyHasChanged) {
|
if(!session.bibliographyHasChanged) {
|
||||||
for(var i=0, n=citation.citationItems.length; i<n; i++) {
|
for(var i=0, n=citation.citationItems.length; i<n; i++) {
|
||||||
if(session.citationsByItemID[citation.citationItems[i].itemID].length == 1) {
|
if(session.citationsByItemID[citation.citationItems[i].itemID] &&
|
||||||
|
session.citationsByItemID[citation.citationItems[i].itemID].length == 1) {
|
||||||
session.bibliographyHasChanged = true;
|
session.bibliographyHasChanged = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2148,7 +2148,7 @@ Zotero.SearchConditions = new function(){
|
||||||
doesNotContain: true
|
doesNotContain: true
|
||||||
},
|
},
|
||||||
table: 'itemData',
|
table: 'itemData',
|
||||||
field: 'STRFTIME("%Y", SUBSTR(value, 1, 10))',
|
field: 'SUBSTR(value, 1, 4)',
|
||||||
special: true
|
special: true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -615,15 +615,37 @@ Zotero.Sync.Storage.Module.WebDAV = (function () {
|
||||||
|
|
||||||
var msg = Zotero.getString('sync.storage.error.webdav.sslCertificateError', host)
|
var msg = Zotero.getString('sync.storage.error.webdav.sslCertificateError', host)
|
||||||
+ " " + Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo');
|
+ " " + 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 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
Zotero.Sync.Storage.EventManager.error(msg);
|
Zotero.Sync.Storage.EventManager.error(e);
|
||||||
}
|
}
|
||||||
else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
else if ((secInfo.securityState & Ci.nsIWebProgressListener.STATE_IS_BROKEN) == Ci.nsIWebProgressListener.STATE_IS_BROKEN) {
|
||||||
var msg = Zotero.localeJoin([
|
var msg = Zotero.getString('sync.storage.error.webdav.sslConnectionError', host) +
|
||||||
Zotero.getString('sync.storage.error.webdav.sslConnectionError', host),
|
Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo');
|
||||||
Zotero.getString('sync.storage.error.webdav.loadURLForMoreInfo')
|
var e = new Zotero.Error(
|
||||||
]);
|
msg,
|
||||||
Zotero.Sync.Storage.EventManager.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 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
Zotero.Sync.Storage.EventManager.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3328,6 +3328,8 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
var xmlDeletedNode = doc.createElement('deleted');
|
var xmlDeletedNode = doc.createElement('deleted');
|
||||||
var inserted = false;
|
var inserted = false;
|
||||||
|
|
||||||
|
var defaultLibraryID = Zotero.libraryID;
|
||||||
|
|
||||||
for each(var syncObject in Zotero.Sync.syncObjects) {
|
for each(var syncObject in Zotero.Sync.syncObjects) {
|
||||||
var Type = syncObject.singular; // 'Item'
|
var Type = syncObject.singular; // 'Item'
|
||||||
var Types = syncObject.plural; // 'Items'
|
var Types = syncObject.plural; // 'Items'
|
||||||
|
@ -3352,7 +3354,7 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var n = doc.createElement(type);
|
var n = doc.createElement(type);
|
||||||
n.setAttribute('libraryID', parseInt(libraryID) ? parseInt(libraryID) : Zotero.libraryID);
|
n.setAttribute('libraryID', parseInt(libraryID) ? parseInt(libraryID) : defaultLibraryID);
|
||||||
n.setAttribute('key', key);
|
n.setAttribute('key', key);
|
||||||
xmlDeletedObjectsNode.appendChild(n);
|
xmlDeletedObjectsNode.appendChild(n);
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,6 +102,62 @@ Zotero.Utilities.Internal = {
|
||||||
ascii.push(String.fromCharCode(tens + (tens > 9 ? 87 : 48)) + String.fromCharCode(ones + (ones > 9 ? 87 : 48)));
|
ascii.push(String.fromCharCode(tens + (tens > 9 ? 87 : 48)) + String.fromCharCode(ones + (ones > 9 ? 87 : 48)));
|
||||||
}
|
}
|
||||||
return ascii.join('');
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2643,7 +2643,7 @@ var ZoteroPane = new function()
|
||||||
* (e.g. meta-click == new background tab, meta-shift-click == new front tab,
|
* (e.g. meta-click == new background tab, meta-shift-click == new front tab,
|
||||||
* shift-click == new window, no modifier == frontmost tab
|
* shift-click == new window, no modifier == frontmost tab
|
||||||
*/
|
*/
|
||||||
function loadURI(uris, event, data) {
|
function loadURI(uris, event) {
|
||||||
if(typeof uris === "string") {
|
if(typeof uris === "string") {
|
||||||
uris = [uris];
|
uris = [uris];
|
||||||
}
|
}
|
||||||
|
@ -3377,18 +3377,24 @@ var ZoteroPane = new function()
|
||||||
|
|
||||||
if (!externalViewer) {
|
if (!externalViewer) {
|
||||||
var url = 'zotero://attachment/' + itemID + '/';
|
var url = 'zotero://attachment/' + itemID + '/';
|
||||||
this.loadURI(url, event, { attachmentID: itemID});
|
this.loadURI(url, event);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Some platforms don't have nsILocalFile.launch, so we just load it and
|
// Some platforms don't have nsILocalFile.launch, so we just
|
||||||
// let the Firefox external helper app window handle it
|
// let the Firefox external helper app window handle it
|
||||||
try {
|
try {
|
||||||
file.launch();
|
file.launch();
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
Zotero.debug("launch() not supported -- passing file to loadURI()");
|
Zotero.debug("launch() not supported -- passing file to loadUrl()");
|
||||||
var fileURL = item.getLocalFileURL();
|
|
||||||
this.loadURI(fileURL);
|
var uri = Components.classes["@mozilla.org/network/standard-url;1"].
|
||||||
|
createInstance(Components.interfaces.nsIURI);
|
||||||
|
uri.spec = attachment.getLocalFileURL();
|
||||||
|
|
||||||
|
var nsIEPS = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].
|
||||||
|
getService(Components.interfaces.nsIExternalProtocolService);
|
||||||
|
nsIEPS.loadUrl(uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<!ENTITY zotero.version "version">
|
<!ENTITY zotero.version "version">
|
||||||
<!ENTITY zotero.createdby "Created By:">
|
<!ENTITY zotero.createdby "Created By:">
|
||||||
|
<!ENTITY zotero.director "Director:">
|
||||||
<!ENTITY zotero.directors "Directors:">
|
<!ENTITY zotero.directors "Directors:">
|
||||||
<!ENTITY zotero.developers "Developers:">
|
<!ENTITY zotero.developers "Developers:">
|
||||||
<!ENTITY zotero.alumni "Alumni:">
|
<!ENTITY zotero.alumni "Alumni:">
|
||||||
|
@ -7,4 +8,5 @@
|
||||||
<!ENTITY zotero.about.additionalSoftware "Third-Party Software and Standards:">
|
<!ENTITY zotero.about.additionalSoftware "Third-Party Software and Standards:">
|
||||||
<!ENTITY zotero.executiveProducer "Executive Producer:">
|
<!ENTITY zotero.executiveProducer "Executive Producer:">
|
||||||
<!ENTITY zotero.thanks "Special Thanks:">
|
<!ENTITY zotero.thanks "Special Thanks:">
|
||||||
<!ENTITY zotero.about.close "Close">
|
<!ENTITY zotero.about.close "Close">
|
||||||
|
<!ENTITY zotero.moreCreditsAndAcknowledgements "More Credits & Acknowledgements">
|
|
@ -163,7 +163,7 @@
|
||||||
<!ENTITY zotero.preferences.locate.description "Description">
|
<!ENTITY zotero.preferences.locate.description "Description">
|
||||||
<!ENTITY zotero.preferences.locate.name "Name">
|
<!ENTITY zotero.preferences.locate.name "Name">
|
||||||
<!ENTITY zotero.preferences.locate.locateEnginedescription "A Lookup Engine extends the capability of the Locate drop down in the Info pane. By enabling Lookup Engines in the list below they will be added to the drop down and can be used to locate resources from your library on the web.">
|
<!ENTITY zotero.preferences.locate.locateEnginedescription "A Lookup Engine extends the capability of the Locate drop down in the Info pane. By enabling Lookup Engines in the list below they will be added to the drop down and can be used to locate resources from your library on the web.">
|
||||||
<!ENTITY zotero.preferences.locate.addDescription "To add a Lookup Engine that is not on the list, visit the desired search engine in your browser and select 'Add' from the Firefox Search Bar. When you reopen this preference pane you will have the option to enable the new Lookup Engine.">
|
<!ENTITY zotero.preferences.locate.addDescription "To add a Lookup Engine that is not on the list, visit the desired search engine in your browser and select "Add" from Zotero's Locate menu.">
|
||||||
<!ENTITY zotero.preferences.locate.restoreDefaults "Restore Defaults">
|
<!ENTITY zotero.preferences.locate.restoreDefaults "Restore Defaults">
|
||||||
|
|
||||||
<!ENTITY zotero.preferences.charset "Character Encoding">
|
<!ENTITY zotero.preferences.charset "Character Encoding">
|
||||||
|
|
|
@ -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.sslCertificateError = SSL certificate error connecting to %S.
|
||||||
sync.storage.error.webdav.sslConnectionError = SSL connection 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.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.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.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.
|
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.
|
||||||
|
|
|
@ -37,7 +37,7 @@ dialog
|
||||||
|
|
||||||
#zotero-translators-list {
|
#zotero-translators-list {
|
||||||
margin: .3em 0;
|
margin: .3em 0;
|
||||||
height: 7.3em;
|
height: 9em;
|
||||||
overflow: -moz-scrollbars-vertical;
|
overflow: -moz-scrollbars-vertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ radio[pane]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Links within messages */
|
/* Links within messages */
|
||||||
description label[class=zotero-text-link], label label[class=zotero-text-link]
|
description label[class=zotero-text-link], label[class=zotero-text-link]
|
||||||
{
|
{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,6 @@ const xpcomFilesLocal = [
|
||||||
'data/relations',
|
'data/relations',
|
||||||
'data/tag',
|
'data/tag',
|
||||||
'data/tags',
|
'data/tags',
|
||||||
'date',
|
|
||||||
'db',
|
'db',
|
||||||
'duplicates',
|
'duplicates',
|
||||||
'enstyle',
|
'enstyle',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user