Don't require a callback to getTranslators, and ask for the translators handler instead, which is already compatible with 2.1. (Not sure what I was thinking last night...)

This commit is contained in:
Simon Kornblith 2011-07-01 19:39:06 +00:00
parent 18bd1855dc
commit 931ba556e1
2 changed files with 29 additions and 25 deletions

View file

@ -211,22 +211,24 @@ Zotero.Translate.Sandbox = {
}
};
var translatorsHandlerSet = false;
safeTranslator.getTranslators = function(callback) {
if(callback) {
translate.incrementAsyncProcesses();
translation.clearHandlers("translators");
translation.setHandler("translators", function(obj, translators) {
translate.decrementAsyncProcesses();
callback(translators);
});
translation.getTranslators();
} else if(Zotero.isConnector) {
throw new Error("Translator must pass a callback to getTranslatorObject() to "+
"operate in this translation environment.");
} else {
Zotero.debug("Translate: COMPAT WARNING: Translator must pass a callback to getTranslators() to operate in connector");
return translation.getTranslators();
if(!translation._handlers["translators"] || !translation._handlers["translators"].length) {
if(Zotero.isConnector) {
throw new Error('Translator must register a "translators" handler to '+
'call getTranslators() in this translation environment.');
} else {
translate._debug('COMPAT WARNING: Translator must register a "translators" handler to '+
'call getTranslators() in connector');
}
}
if(!translatorsHandlerSet) {
translation.setHandler("translators", function() {
translate.decrementAsyncProcesses();
});
}
translate.incrementAsyncProcesses();
return translation.getTranslators();
};
var doneHandlerSet = false;
@ -244,7 +246,7 @@ Zotero.Translate.Sandbox = {
if(callback) {
translate.incrementAsyncProcesses();
} else {
Zotero.debug("Translate: COMPAT WARNING: Translator must pass a callback to getTranslatorObject() to operate in connector");
translate._debug("COMPAT WARNING: Translator must pass a callback to getTranslatorObject() to operate in connector");
}
var haveTranslatorFunction = function(translator) {
@ -401,7 +403,7 @@ Zotero.Translate.Sandbox = {
}
return false;
} else {
translate._debug("Translate: COMPAT WARNING: No callback was provided for "+
translate._debug("COMPAT WARNING: No callback was provided for "+
"Zotero.selectItems(). When executed outside of Firefox, a selectItems() call "+
"will require that this translator to be called multiple times.", 1);
@ -432,7 +434,7 @@ Zotero.Translate.Sandbox = {
"_itemDone":function(translate, item) {
if(!item.itemType) {
item.itemType = "webpage";
Zotero.debug("Translate: WARNING: No item type specified");
translate._debug("WARNING: No item type specified");
}
if(item.type == "attachment" || item.type == "note") {

View file

@ -3,13 +3,13 @@
"label": "COinS",
"creator": "Simon Kornblith",
"target": "",
"minVersion": "2.2",
"minVersion": "2.1",
"maxVersion": "",
"priority": 300,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcs",
"lastUpdated": "2011-07-01 05:16:13"
"lastUpdated": "2011-07-01 19:16:28"
}
function detectWeb(doc, url) {
@ -58,10 +58,8 @@ function retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc) {
search.setHandler("done", function() {
retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc);
});
search.setSearch(item);
// look for translators
search.getTranslators(function(translators) {
search.setHandler("translators", function(obj, translators) {
if(translators.length) {
search.setTranslator(translators);
search.translate();
@ -69,6 +67,9 @@ function retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc) {
retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc);
}
});
search.setSearch(item);
search.getTranslators();
} else {
completeCOinS(newItems, couldUseFullItems, doc);
Zotero.done();
@ -124,9 +125,7 @@ function completeItems(newItems, useIndices, couldUseFullItems, doc) {
// call next
completeItems(newItems, useIndices, couldUseFullItems);
});
search.setSearch(newItems[i]);
var translators = search.getTranslators(function(translators) {
search.setHandler("translators", function(obj, translators) {
if(translators.length) {
search.setTranslator(translators);
search.translate();
@ -138,6 +137,9 @@ function completeItems(newItems, useIndices, couldUseFullItems, doc) {
completeItems(newItems, useIndices, couldUseFullItems);
}
});
search.setSearch(newItems[i]);
search.getTranslators();
} else {
// add doc as attachment
newItems[i].attachments.push({document:doc});