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