Fix Add Item by Identifier (and search translation in general)
This commit is contained in:
parent
741ca99c10
commit
a6caa14412
|
@ -141,7 +141,7 @@ var Zotero_Lookup = new function () {
|
||||||
if(collection) collection.addItem(item.id);
|
if(collection) collection.addItem(item.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
translate.translate(libraryID);
|
translate.translate({ libraryID });
|
||||||
});
|
});
|
||||||
})(item);
|
})(item);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1196,6 +1196,9 @@ Zotero.Translate.Base.prototype = {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var me = this;
|
||||||
|
var deferred = Zotero.Promise.defer()
|
||||||
|
|
||||||
if(!this.translator || !this.translator.length) {
|
if(!this.translator || !this.translator.length) {
|
||||||
Zotero.debug("Translate: translate called without specifying a translator. Running detection first.");
|
Zotero.debug("Translate: translate called without specifying a translator. Running detection first.");
|
||||||
this.setHandler('translators', function(me, translators) {
|
this.setHandler('translators', function(me, translators) {
|
||||||
|
@ -1203,11 +1206,11 @@ Zotero.Translate.Base.prototype = {
|
||||||
me.complete(false, "Could not find an appropriate translator");
|
me.complete(false, "Could not find an appropriate translator");
|
||||||
} else {
|
} else {
|
||||||
me.setTranslator(translators);
|
me.setTranslator(translators);
|
||||||
Zotero.Translate.Base.prototype.translate.call(me, options);
|
deferred.resolve(Zotero.Translate.Base.prototype.translate.call(me, options));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.getTranslators();
|
this.getTranslators();
|
||||||
return;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._currentState = "translate";
|
this._currentState = "translate";
|
||||||
|
@ -1220,8 +1223,7 @@ Zotero.Translate.Base.prototype = {
|
||||||
this._waitingForSave = false;
|
this._waitingForSave = false;
|
||||||
|
|
||||||
// Attach handlers for promise
|
// Attach handlers for promise
|
||||||
var me = this,
|
var me = this;
|
||||||
deferred = Zotero.Promise.defer();
|
|
||||||
var doneHandler = function (obj, returnValue) {
|
var doneHandler = function (obj, returnValue) {
|
||||||
if (returnValue) deferred.resolve(me.newItems);
|
if (returnValue) deferred.resolve(me.newItems);
|
||||||
me.removeHandler("done", doneHandler);
|
me.removeHandler("done", doneHandler);
|
||||||
|
@ -1235,7 +1237,6 @@ Zotero.Translate.Base.prototype = {
|
||||||
this.setHandler("done", doneHandler);
|
this.setHandler("done", doneHandler);
|
||||||
this.setHandler("error", errorHandler);
|
this.setHandler("error", errorHandler);
|
||||||
|
|
||||||
var me = this;
|
|
||||||
if(typeof this.translator[0] === "object") {
|
if(typeof this.translator[0] === "object") {
|
||||||
// already have a translator object, so use it
|
// already have a translator object, so use it
|
||||||
this._loadTranslator(this.translator[0]).then(function() { me._translateTranslatorLoaded() });
|
this._loadTranslator(this.translator[0]).then(function() { me._translateTranslatorLoaded() });
|
||||||
|
@ -2428,8 +2429,11 @@ Zotero.Translate.Search.prototype.setTranslator = function(translator) {
|
||||||
* translation fails
|
* translation fails
|
||||||
*/
|
*/
|
||||||
Zotero.Translate.Search.prototype.complete = function(returnValue, error) {
|
Zotero.Translate.Search.prototype.complete = function(returnValue, error) {
|
||||||
if(this._currentState == "translate" && (!this.newItems || !this.newItems.length)
|
if(this._currentState == "translate"
|
||||||
&& this.translator.length) { //length is 0 only when translate was called without translators
|
&& (!this.newItems || !this.newItems.length)
|
||||||
|
&& !this._savingItems
|
||||||
|
//length is 0 only when translate was called without translators
|
||||||
|
&& this.translator.length) {
|
||||||
Zotero.debug("Translate: Could not find a result using "+this.translator[0].label, 3);
|
Zotero.debug("Translate: Could not find a result using "+this.translator[0].label, 3);
|
||||||
if(error) Zotero.debug(this._generateErrorString(error), 3);
|
if(error) Zotero.debug(this._generateErrorString(error), 3);
|
||||||
if(this.translator.length > 1) {
|
if(this.translator.length > 1) {
|
||||||
|
|
|
@ -405,7 +405,7 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||||
var wrappedObj = obj.wrappedJSObject || obj;
|
var wrappedObj = obj.wrappedJSObject || obj;
|
||||||
wrappedObj.__exposedProps__ = {"parseFromString":"r"};
|
wrappedObj.__exposedProps__ = {"parseFromString":"r"};
|
||||||
wrappedObj.parseFromString = function(str, contentType) {
|
wrappedObj.parseFromString = function(str, contentType) {
|
||||||
var xhr = sandbox.XMLHttpRequest();
|
var xhr = new sandbox.XMLHttpRequest();
|
||||||
xhr.open("GET", "data:"+contentType+";charset=utf-8,"+encodeURIComponent(str), false);
|
xhr.open("GET", "data:"+contentType+";charset=utf-8,"+encodeURIComponent(str), false);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
if (!xhr.responseXML) throw new Error("error parsing XML");
|
if (!xhr.responseXML) throw new Error("error parsing XML");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user