- Support RDF in connector
- getTranslatorObject() now exports the "Export" object if one exists. In Firefox, it continues to export other objects otherwise. In Chrome/Safari, it will only export do* and detect*.
This commit is contained in:
parent
178eda0c9d
commit
ea5a94e860
2 changed files with 27 additions and 7 deletions
|
@ -253,6 +253,7 @@ Zotero.Translate.Sandbox = {
|
||||||
translate._debug("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 sandbox;
|
||||||
var haveTranslatorFunction = function(translator) {
|
var haveTranslatorFunction = function(translator) {
|
||||||
translation.translator[0] = translator;
|
translation.translator[0] = translator;
|
||||||
if(!translation._loadTranslator(translator)) throw new Error("Translator could not be loaded");
|
if(!translation._loadTranslator(translator)) throw new Error("Translator could not be loaded");
|
||||||
|
@ -269,6 +270,9 @@ Zotero.Translate.Sandbox = {
|
||||||
var innerSandboxURI = ioService.newURI(typeof translation._sandboxLocation === "object" ?
|
var innerSandboxURI = ioService.newURI(typeof translation._sandboxLocation === "object" ?
|
||||||
translation._sandboxLocation.location : translation._sandboxLocation, null, null);
|
translation._sandboxLocation.location : translation._sandboxLocation, null, null);
|
||||||
|
|
||||||
|
Zotero.debug(outerSandboxURI.spec);
|
||||||
|
Zotero.debug(innerSandboxURI.spec);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
secMan.checkSameOriginURI(outerSandboxURI, innerSandboxURI, false);
|
secMan.checkSameOriginURI(outerSandboxURI, innerSandboxURI, false);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -279,9 +283,19 @@ Zotero.Translate.Sandbox = {
|
||||||
|
|
||||||
translation._prepareTranslation();
|
translation._prepareTranslation();
|
||||||
setDefaultHandlers(translate, translation);
|
setDefaultHandlers(translate, translation);
|
||||||
|
sandbox = translation._sandboxManager.sandbox;
|
||||||
|
if(sandbox.Export) {
|
||||||
|
sandbox.Export.Zotero = sandbox.Zotero;
|
||||||
|
sandbox = sandbox.Export;
|
||||||
|
} else {
|
||||||
|
translate._debug("COMPAT WARNING: "+translate.translator[0].label+" does "+
|
||||||
|
"not export any properties. Only detect"+translate._entryFunctionSuffix+
|
||||||
|
" and do"+translate._entryFunctionSuffix+" will be available in "+
|
||||||
|
"connectors.");
|
||||||
|
}
|
||||||
|
|
||||||
if(callback) {
|
if(callback) {
|
||||||
callback(translation._sandboxManager.sandbox);
|
callback(sandbox);
|
||||||
translate.decrementAsyncProcesses();
|
translate.decrementAsyncProcesses();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -296,7 +310,7 @@ Zotero.Translate.Sandbox = {
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.Translators.get(translation.translator[0], haveTranslatorFunction);
|
Zotero.Translators.get(translation.translator[0], haveTranslatorFunction);
|
||||||
if(!Zotero.isConnector) return translation._sandboxManager.sandbox;
|
if(!Zotero.isConnector) return sandbox;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1073,7 +1087,7 @@ Zotero.Translate.Base.prototype = {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this._sandboxManager.eval("var translatorInfo = "+translator.code,
|
this._sandboxManager.eval("var translatorInfo = "+translator.code,
|
||||||
["detect"+this._entryFunctionSuffix, "do"+this._entryFunctionSuffix]);
|
["detect"+this._entryFunctionSuffix, "do"+this._entryFunctionSuffix, "Export"]);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
if(translator.logError) {
|
if(translator.logError) {
|
||||||
translator.logError(e.toString());
|
translator.logError(e.toString());
|
||||||
|
|
|
@ -40,8 +40,6 @@ var n = {
|
||||||
|
|
||||||
var callNumberTypes = [n.dcterms+"LCC", n.dcterms+"DDC", n.dcterms+"UDC"];
|
var callNumberTypes = [n.dcterms+"LCC", n.dcterms+"DDC", n.dcterms+"UDC"];
|
||||||
|
|
||||||
var defaultUnknownType = "book";
|
|
||||||
|
|
||||||
// gets the first result set for a property that can be encoded in multiple
|
// gets the first result set for a property that can be encoded in multiple
|
||||||
// ontologies
|
// ontologies
|
||||||
function getFirstResults(node, properties, onlyOneString) {
|
function getFirstResults(node, properties, onlyOneString) {
|
||||||
|
@ -301,7 +299,7 @@ function importItem(newItem, node, type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!newItem.itemType) {
|
if(!newItem.itemType) {
|
||||||
newItem.itemType = defaultUnknownType;
|
newItem.itemType = Export.defaultUnknownType;
|
||||||
}
|
}
|
||||||
|
|
||||||
// regular author-type creators
|
// regular author-type creators
|
||||||
|
@ -633,4 +631,12 @@ function doImport() {
|
||||||
newCollection.complete();
|
newCollection.complete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Export doImport and defaultUnknownType to other translators
|
||||||
|
*/
|
||||||
|
var Export = {
|
||||||
|
"doImport":doImport,
|
||||||
|
"defaultUnknownType":"book"
|
||||||
|
};
|
Loading…
Add table
Add a link
Reference in a new issue