Zotero Item History [plugin]
I am pleased to announce a Firefox add-on that extends the Zotero client user interface with per-collection browsing history.
(Edit: for use with Zotero 2.1.6 or above.)
As those who have seen my office (or indeed the code I have written) can attest, I do not have a flair for organization. Zotero provides at least four separate ways of ferreting meaning out of a library: search; tag filtering; related-items links; and free-form browsing within a library or collection. Now that, with the advice and assistance of many, I have at last gotten the citeproc-js processor into a stable condition, research beckons -- and I can see that the prospects for replicating my office inside my Zotero library are better than even.
I've tried to fend off disorder in advance with this plugin. Without any special action by the user, it tracks the items visited from the starting point of a particular collection. It works sort of like this:
The plugin can be installed by clicking on the following link to the Zotero Item History XPI. Feel free to post a note here if you have difficulties; I can't guarantee full support, but it should work on all platforms.
I've put the source code under the AGPL, and I will put a copy online fairly soon. Quite a bit of work was needed to get this external tool to smoothly shadow the Zotero interface, [1] and it might provide a starting point for building similar extensions to support other workflows.
[1] Let's hope that "was" in this sentence doesn't beg to be changed to "would have been".
(Edit: for use with Zotero 2.1.6 or above.)
As those who have seen my office (or indeed the code I have written) can attest, I do not have a flair for organization. Zotero provides at least four separate ways of ferreting meaning out of a library: search; tag filtering; related-items links; and free-form browsing within a library or collection. Now that, with the advice and assistance of many, I have at last gotten the citeproc-js processor into a stable condition, research beckons -- and I can see that the prospects for replicating my office inside my Zotero library are better than even.
I've tried to fend off disorder in advance with this plugin. Without any special action by the user, it tracks the items visited from the starting point of a particular collection. It works sort of like this:
- Each collection or smart search and each top-level library or group has its own separate history list.
- To keep things sparse and comprehensible, items are added to a given history list only once.
- For the same reason, clicks on child items will only add their parents.
- Items outside the "governing" collection (i.e. items removed from the collection after being first viewed there, or those added via a "Related" link, without explicitly selecting a separate collection in the left panel) are presented seamlessly as part of the navigable collection-based history list.
- A "Select all" context menu option makes it easy to capture the items in a collection history and (say) drop them into a freshly minted collection if desired.
The plugin can be installed by clicking on the following link to the Zotero Item History XPI. Feel free to post a note here if you have difficulties; I can't guarantee full support, but it should work on all platforms.
I've put the source code under the AGPL, and I will put a copy online fairly soon. Quite a bit of work was needed to get this external tool to smoothly shadow the Zotero interface, [1] and it might provide a starting point for building similar extensions to support other workflows.
[1] Let's hope that "was" in this sentence doesn't beg to be changed to "would have been".
Ubuntu and Firefox 4.0.1
(Edit: Oops. Ubuntu, you say. Hmm. Which version?)
Not sure what information you need for this to be any help ? Let me know what I can provide and how.
We'll get there, though.
More luck on the Ubuntu 11.04 machine :
Error: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIFileOutputStream.init]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/components/nsSessionStore.js :: sss_writeFile :: line 3975" data: no]
Source File: resource://gre/components/nsSessionStore.js
Line: 3975
Error: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIFileOutputStream.init]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/components/nsSessionStore.js :: sss_writeFile :: line 3975" data: no]
Source File: resource://gre/components/nsSessionStore.js
Line: 3975
Hope that's relevant - it certainly appeared just after the error.
Really looking forward to this plugin - thanks for the hard work!
wget http://gsl-nagoya-u.net/http/pub/zotero-item-history.xpi
then, visiting the Firefox profile extension directory, adding a subdirectory "zotero-item-history@mystery-lab.com":
mkdir ~/.firefox/mozilla/<funny_chars>/extensions/zotero-item-history@mystery-lab.com
then putting the plugin there and unzipping it. If Firefox will run it from that point, we can narrow this down to a security issue, under Linux at least.
(Edit: I haven't been able to find a reference on the Net that exactly reflects this error. The module failing can apparently be associated with local file permissions issues, encryption service denials, and antivirus protections. I suspect the latter, but don't really know. Before tackling the issue, I'll try to get better information on whether it is permissible, in the Firefox architecture, for one plugin to install software in a directory created by another. If that's okay, then maybe it's just a matter of trusted signing or something.)
Also tried the manual installation approach but keep coming up against the fact that the shell claims that extensions directory is read-only and no amount of sudo will sort it out. My rather limited skills in command-line wizardry probably don't help, but I can't create the directory to put the .xpi into it
Also, I think you should be able to tap into Zotero's debug logger if you want to-- if you have access to the Zotero object, then you have access to things like the debug function.
I've pushed a fresh copy to the same URL that may work a bit better. I've borrowed some more install logic from Zotero, eased a restriction to Firefox 4 (it may work with 3.6, I'm not sure), and made the attachment of "listeners" to the Zotero UI a little more robust. The plugin will also try to issue debugging output via Zotero.debug, if it's available.
Working on class prep this morning, I see that the buttons stay inactive under one combination of conditions: if Zotero is set to Tab mode and Firefox is restarted, and then Zotero is changed to Pane mode, the buttons stay inactive until a return to Tab mode.
The other way around -- starting with default Pane mode, and then switching to Tab mode -- seems to work in both modes. The mode switch is a great mystery to me, but I'll keep an eye on this and see if I can work out what the deal is with that one combination.
See how it goes; I'm hopeful that this one will get you going.
Thanks again!
Enjoy!
(And thanks all around for the patient feedback during debugging.)