diff --git a/chrome/content/zotero/browser.js b/chrome/content/zotero/browser.js
index 60f0b71308..1dec53d507 100644
--- a/chrome/content/zotero/browser.js
+++ b/chrome/content/zotero/browser.js
@@ -124,48 +124,12 @@ var Zotero_Browser = new function() {
* @return void
*/
function scrapeThisPage(translator) {
- if (Zotero.locked) {
- Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
- var desc = Zotero.localeJoin([
- Zotero.getString('general.operationInProgress'),
- Zotero.getString('general.operationInProgress.waitUntilFinishedAndTryAgain')
- ]);
- Zotero_Browser.progress.addDescription(desc);
- Zotero_Browser.progress.show();
- Zotero_Browser.progress.startCloseTimer(8000);
- return;
+ // Perform translation
+ var tab = _getTabObject(Zotero_Browser.tabbrowser.selectedBrowser);
+ if(tab.page.translators && tab.page.translators.length) {
+ tab.page.translate.setTranslator(translator || tab.page.translators[0]);
+ Zotero_Browser.performTranslation(tab.page.translate);
}
-
- if (!Zotero.stateCheck()) {
- Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
- var desc = Zotero.getString("ingester.scrapeErrorDescription.previousError")
- + ' ' + Zotero.getString("general.restartFirefoxAndTryAgain", Zotero.appName);
- Zotero_Browser.progress.addDescription(desc);
- Zotero_Browser.progress.show();
- Zotero_Browser.progress.startCloseTimer(8000);
- return;
- }
-
- // get libraryID and collectionID
- var libraryID = null, collectionID = null;
- if(ZoteroPane && !Zotero.isConnector) {
- try {
- if (!ZoteroPane.collectionsView.editable) {
- Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
- var desc = Zotero.getString('save.error.cannotMakeChangesToCollection');
- Zotero_Browser.progress.addDescription(desc);
- Zotero_Browser.progress.show();
- Zotero_Browser.progress.startCloseTimer(8000);
- return;
- }
-
- libraryID = ZoteroPane.getSelectedLibraryID();
- collectionID = ZoteroPane.getSelectedCollection(true);
- } catch(e) {}
- }
-
- // translate into specified library and collection
- _getTabObject(Zotero_Browser.tabbrowser.selectedBrowser).translate(libraryID, collectionID, translator);
}
/*
@@ -494,6 +458,134 @@ var Zotero_Browser = new function() {
}), true);
}
+ /**
+ * Translates using the specified translation instance. setTranslator() must already
+ * have been called
+ * @param {Zotero.Translate} translate
+ */
+ this.performTranslation = function(translate, libraryID, collection) {
+ if (Zotero.locked) {
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
+ var desc = Zotero.localeJoin([
+ Zotero.getString('general.operationInProgress'),
+ Zotero.getString('general.operationInProgress.waitUntilFinishedAndTryAgain')
+ ]);
+ Zotero_Browser.progress.addDescription(desc);
+ Zotero_Browser.progress.show();
+ Zotero_Browser.progress.startCloseTimer(8000);
+ return;
+ }
+
+ if (!Zotero.stateCheck()) {
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
+ var desc = Zotero.getString("ingester.scrapeErrorDescription.previousError")
+ + ' ' + Zotero.getString("general.restartFirefoxAndTryAgain", Zotero.appName);
+ Zotero_Browser.progress.addDescription(desc);
+ Zotero_Browser.progress.show();
+ Zotero_Browser.progress.startCloseTimer(8000);
+ return;
+ }
+
+ Zotero_Browser.progress.show();
+ Zotero_Browser.isScraping = true;
+
+ // Get libraryID and collectionID
+ if(libraryID === undefined && ZoteroPane && !Zotero.isConnector) {
+ try {
+ if (!ZoteroPane.collectionsView.editable) {
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
+ var desc = Zotero.getString('save.error.cannotMakeChangesToCollection');
+ Zotero_Browser.progress.addDescription(desc);
+ Zotero_Browser.progress.show();
+ Zotero_Browser.progress.startCloseTimer(8000);
+ return;
+ }
+
+ libraryID = ZoteroPane.getSelectedLibraryID();
+ collection = ZoteroPane.getSelectedCollection(true);
+ } catch(e) {}
+ }
+
+ if(Zotero.isConnector) {
+ Zotero.Connector.callMethod("getSelectedCollection", {}, function(response, status) {
+ if(status !== 200) {
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scraping"));
+ } else {
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapingTo"),
+ "chrome://zotero/skin/treesource-"+(response.id ? "collection" : "library")+".png",
+ response.name+"\u2026");
+ }
+ });
+ } else {
+ var name;
+ if(collection) {
+ name = collection.name;
+ } else if(libraryID) {
+ name = Zotero.Libraries.getName(libraryID);
+ } else {
+ name = Zotero.getString("pane.collections.library");
+ }
+
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapingTo"),
+ "chrome://zotero/skin/treesource-"+(collection ? "collection" : "library")+".png",
+ name+"\u2026");
+ }
+
+ translate.clearHandlers("done");
+ translate.clearHandlers("itemDone");
+
+ translate.setHandler("done", function(obj, returnValue) {
+ if(!returnValue) {
+ Zotero_Browser.progress.show();
+ Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError"));
+ // Include link to Known Translator Issues page
+ var url = "http://www.zotero.org/documentation/known_translator_issues";
+ var linkText = ''
+ + Zotero.getString('ingester.scrapeErrorDescription.linkText') + '';
+ Zotero_Browser.progress.addDescription(Zotero.getString("ingester.scrapeErrorDescription", linkText));
+ Zotero_Browser.progress.startCloseTimer(8000);
+ } else {
+ Zotero_Browser.progress.startCloseTimer();
+ }
+ Zotero_Browser.isScraping = false;
+ });
+
+ var attachmentsMap = new WeakMap();
+
+ translate.setHandler("itemDone", function(obj, dbItem, item) {
+ Zotero_Browser.progress.show();
+ var itemProgress = new Zotero_Browser.progress.ItemProgress(Zotero.ItemTypes.getImageSrc(item.itemType),
+ item.title);
+ itemProgress.setProgress(100);
+ for(var i=0; i'
- + Zotero.getString('ingester.scrapeErrorDescription.linkText') + '';
- Zotero_Browser.progress.addDescription(Zotero.getString("ingester.scrapeErrorDescription", linkText));
- Zotero_Browser.progress.startCloseTimer(8000);
- } else {
- Zotero_Browser.progress.startCloseTimer();
- }
- Zotero_Browser.isScraping = false;
- });
-
- var attachmentsMap = new WeakMap();
-
- this.page.translate.setHandler("itemDone", function(obj, dbItem, item) {
- Zotero_Browser.progress.show();
- var itemProgress = new Zotero_Browser.progress.ItemProgress(Zotero.ItemTypes.getImageSrc(item.itemType),
- item.title);
- itemProgress.setProgress(100);
- for(var i=0; i