www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 0ea89d975540ae212a69f261442192b9a4bd24b7
parent f37a225a30e2212420e2eb3cda29b33068a34298
Author: Simon Kornblith <simon@simonster.com>
Date:   Tue, 26 Jun 2012 19:40:33 -0400

Fix importing RIS/refer

Diffstat:
Mchrome/content/zotero/browser.js | 278++++++++++++++++++++++++++++++++++++++-----------------------------------------
Mchrome/content/zotero/xpcom/mimeTypeHandler.js | 28+---------------------------
2 files changed, 134 insertions(+), 172 deletions(-)

diff --git 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; - } - - 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) {} + // 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); } - - // 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 = '<a href="' + url + '" tooltiptext="' + url + '">' + + Zotero.getString('ingester.scrapeErrorDescription.linkText') + '</a>'; + 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<item.attachments.length; i++) { + var attachment = item.attachments[i]; + attachmentsMap.set(attachment, + new Zotero_Browser.progress.ItemProgress( + Zotero.Utilities.determineAttachmentIcon(attachment), + attachment.title, itemProgress)); + } + + // add item to collection, if one was specified + if(collection) { + collection.addItem(dbItem.id); + } + }); + + translate.setHandler("attachmentProgress", function(obj, attachment, progress, error) { + var itemProgress = attachmentsMap.get(attachment); + if(progress === false) { + itemProgress.setError(); + } else { + itemProgress.setProgress(progress); + if(progress === 100) { + itemProgress.setIcon(Zotero.Utilities.determineAttachmentIcon(attachment)); + } + } + }); + + translate.translate(libraryID); + } + ////////////////////////////////////////////////////////////////////////////// // @@ -661,110 +753,6 @@ Zotero_Browser.Tab.prototype._attemptLocalFileImport = function(doc) { } /* - * translate a page - * - * @param {Integer} libraryID - * @param {Integer} collectionID - */ -Zotero_Browser.Tab.prototype.translate = function(libraryID, collectionID, translator) { - if(this.page.translators && this.page.translators.length) { - Zotero_Browser.progress.show(); - Zotero_Browser.isScraping = true; - - if(collectionID) { - var collection = Zotero.Collections.get(collectionID); - } - else { - var collection = false; - } - - 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"); - } - - var me = this; - - // use first translator available - this.page.translate.setTranslator(translator ? translator : this.page.translators[0]); - - this.page.translate.clearHandlers("done"); - this.page.translate.clearHandlers("itemDone"); - - this.page.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 = '<a href="' + url + '" tooltiptext="' + url + '">' - + Zotero.getString('ingester.scrapeErrorDescription.linkText') + '</a>'; - 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<item.attachments.length; i++) { - var attachment = item.attachments[i]; - attachmentsMap.set(attachment, - new Zotero_Browser.progress.ItemProgress( - Zotero.Utilities.determineAttachmentIcon(attachment), - attachment.title, itemProgress)); - } - - // add item to collection, if one was specified - if(collection) { - collection.addItem(dbItem.id); - } - }); - - this.page.translate.setHandler("attachmentProgress", function(obj, attachment, progress, error) { - var itemProgress = attachmentsMap.get(attachment); - if(progress === false) { - itemProgress.setError(); - } else { - itemProgress.setProgress(progress); - if(progress === 100) { - itemProgress.setIcon(Zotero.Utilities.determineAttachmentIcon(attachment)); - } - } - }); - - this.page.translate.translate(libraryID); - } -} - -/* * returns the URL of the image representing the translator to be called on the * current page, or false if the page cannot be scraped */ diff --git a/chrome/content/zotero/xpcom/mimeTypeHandler.js b/chrome/content/zotero/xpcom/mimeTypeHandler.js @@ -135,47 +135,21 @@ Zotero.MIMETypeHandler = new function () { var frontWindow = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]. getService(Components.interfaces.nsIWindowWatcher).activeWindow; - if (Zotero.locked) { - frontWindow.Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError")); - var desc = Zotero.localeJoin([ - Zotero.getString('general.operationInProgress'), Zotero.getString('general.operationInProgress.waitUntilFinishedAndTryAgain') - ]); - frontWindow.Zotero_Browser.progress.addDescription(desc); - frontWindow.Zotero_Browser.progress.show(); - frontWindow.Zotero_Browser.progress.startCloseTimer(8000); - return; - } - // attempt to import through Zotero.Translate var translation = new Zotero.Translate("import"); translation.setLocation(uri); translation.setString(string); - frontWindow.Zotero_Browser.progress.show(); - var libraryID = null; - var collection = null; - try { - libraryID = frontWindow.ZoteroPane.getSelectedLibraryID(); - collection = frontWindow.ZoteroPane.getSelectedCollection(); - } catch(e) {} - translation.setHandler("itemDone", function(obj, dbItem, item) { - frontWindow.Zotero_Browser.itemDone(obj, dbItem, item, collection); - }); - translation.setHandler("done", function(obj, item) { - frontWindow.Zotero_Browser.finishScraping(obj, item, collection); - }); - // attempt to retrieve translators var translators = translation.getTranslators(); if(!translators.length) { // we lied. we can't really translate this file. - frontWindow.Zotero_Browser.progress.close(); throw "No translator found for handled RIS, Refer or ISI file" } // translate using first available translation.setTranslator(translators[0]); - translation.translate(libraryID); + frontWindow.Zotero_Browser.performTranslation(translation); } /**