commit 931ba556e144deb8f2045d25a2352b8446fc7441
parent 18bd1855dc44de9172aa2a3558e108e61fd943d7
Author: Simon Kornblith <simon@simonster.com>
Date: Fri, 1 Jul 2011 19:39:06 +0000
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...)
Diffstat:
2 files changed, 27 insertions(+), 23 deletions(-)
diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js
@@ -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) {
+ 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();
- 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();
}
+ 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") {
diff --git a/translators/COinS.js b/translators/COinS.js
@@ -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});