commit b0157efd23426361791a2aeaa90fe8549cb27351
parent eb7556533adb53aec89184e824d705a9720cc3ed
Author: Adomas Ven <adomas.ven@gmail.com>
Date: Thu, 14 Jul 2016 21:17:56 +0300
Clone feed item if no translators available (#1061)
Diffstat:
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/chrome/content/zotero/xpcom/data/feedItem.js b/chrome/content/zotero/xpcom/data/feedItem.js
@@ -208,6 +208,7 @@ Zotero.FeedItem.prototype.toggleRead = Zotero.Promise.coroutine(function* (state
* @return {Promise<FeedItem|Item>} translated feed item
*/
Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (libraryID, collectionID) {
+ Zotero.debug("Translating feed item " + this.id + " with URL " + this.getField('url'), 2);
if (Zotero.locked) {
Zotero.debug('Zotero locked, skipping feed item translation');
return;
@@ -224,9 +225,8 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar
translate.clearHandlers("itemDone");
translate.setHandler("done", win.Zotero_Browser.progress.Translation.doneHandler);
translate.setHandler("itemDone", win.Zotero_Browser.progress.Translation.itemDoneHandler());
- let collection;
if (collectionID) {
- collection = yield Zotero.Collections.getAsync(collectionID);
+ var collection = yield Zotero.Collections.getAsync(collectionID);
}
win.Zotero_Browser.progress.show();
win.Zotero_Browser.progress.Translation.scrapingTo(libraryID, collection);
@@ -249,8 +249,28 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar
translate.getTranslators();
let translators = yield deferred.promise;
if (!translators || !translators.length) {
- Zotero.debug("No translators detected for feed item " + this.id + " with URL " + this.getField('url'), 2);
- throw new Zotero.Error("No translators detected for feed item " + this.id + " with URL " + this.getField('url'))
+ Zotero.debug("No translators detected for feed item " + this.id + " with URL " + this.getField('url') +
+ ' -- cloning item instead', 2);
+ let dbItem = this.clone(libraryID);
+ if (collectionID) {
+ dbItem.addToCollection(collectionID);
+ }
+ yield dbItem.saveTx();
+
+ let item = {title: dbItem.getField('title'), itemType: dbItem.itemType};
+
+ // Add snapshot
+ if (Zotero.Libraries.get(libraryID).filesEditable) {
+ item.attachments = [{title: "Snapshot"}];
+ yield Zotero.Attachments.importFromDocument({
+ document: doc,
+ parentItemID: dbItem.id
+ });
+ }
+
+ win.Zotero_Browser.progress.Translation.itemDoneHandler()(null, null, item);
+ win.Zotero_Browser.progress.Translation.doneHandler(null, true);
+ return;
}
translate.setTranslator(translators[0]);