Closes#318, Use word index if available to narrow search scope of fulltext scanner
Closes#420, Delete local version of remote scrapers with priority 0 on update
- Changed ZoteroPane.buildItemContextMenu() to make updates easier
- Changed inTransaction repository update delay to 10 minutes
- Fix fulltext search of text files with MIME types that don't begin with 'text/'
- ZoteroPane.setItemsPaneMessage(msg) and ZoteroPane.clearItemsPaneMessage()
- New textbox binding conditional-timed-textbox to run a test (e.g. on the value) before triggering command
- Fulltext content search now supports ANY/ALL instead of just AND (I think)
adds abstract support to JSTOR and ProQuest translators
adds abstract support to RIS translator
uses dcterms "abstract" property in Zotero RDF for abstract export
Dan S's recommendations for handling the bibliography are now implemented. "article" is the default type mapping, and we use Zotero.CreatorTypes.getPrimaryIDForType to determine which type to treat as the author.
- closes#351, scrapers with PDF downloads should use downloadAssociatedFiles instead of automaticSnapshots
there are some problems with snapshot titles. see bug #436.
- closes#430, Amazon translator causing utilities.js to throw exception
- officially deprecated Zotero.Utilities.getNodeString() (use doc.evaluate and nodeValue or textContent instead, or access attributes directly; these options take the nearly the same amount of code, should be faster, and don't unnecessarily bloat our utilities)
- updated word integration to the latest version
His note:
1. adds the conference paper item type (currently only exported to BibTeX as inproceedings)
2. Fixes bug with editor names in BibTeX export
3. Provides more intelligent naming for entities in BibTeX exports. Previously items would be named something like Wagstrom2006, Wagstrom2006-1, etc. However, I noticed that this ordering could get changed around pretty easily in the export process, resulting in bad references in articles. We can't really be having that now can we? The keys are now take the first word of the title, stripping out a few common words. For example, If I had a paper called "Zoteros impact on time to author scholarly papers", it would have a key of "wagstrom_zotero_2006", which is much more constant.
There was still an editor field bug after Patrick's patch that I corrected, and author and editor fields seem to be handled properly now.
Also addresses #384, option to prevent escaping of curly brackets in BibTeX output
I believe this patch actually now prevents escaping of curly braces by default, however (according to Simon) it should still be based on a pref or option of some kind
Right-click option "Show in Library" for items in collections and saved searches
Other changes:
- Fixed error when focusing a collection with no items
- selectItem() now takes an inLibrary option to always use the Library even if the item is in the current collection
- Reworked buildCollectionContextMenu() to be much easier to change (will do the same for buildItemContextMenu() eventually) -- this required moving some DTD strings to properties, which I only did for en-US now, but I'll do it for the other locales we have as well
Improves tabbing between UI panes, including into metadata fields
Still some quirks and things that don't work but should (e.g. ctrl-tab to cycle through tabs in metadata pane and ability to add new creators via the keyboard), but better
I'm doing this manually with Notifier.begin(true)/commit(unlock) instead of putting them all in a DB transaction since Item.erase() erases files too, so rolling back previous deletes would be bad
Notice the finally {...} block -- this ensures that the event queue is unlocked even if there's an error deleting (or else notifications would break until Firefox was restarted)
Other changes:
- Zotero.Items.erase() now supports multiple items and the recursive flag to erase children
- Fixed a few JS strict warnings in the items view
unlock = Zotero.Notifier.begin(lock)
Zotero.Notifier.commit(unlock)
Zotero.Notifier.reset()
Zotero.DB.addCallback(type, callback)
begin(), commit() and reset() are added to beginTransaction(), commitTransaction() and rollbackTransaction(), respectively, on startup, so notifications are now automatically queued during DB transactions -- this has the potential to make complex operations dramatically faster
begin() can also be called manually -- pass true to indicate that intermediate commit()'s (e.g. called from commitTransaction()) shouldn't run the event queue, and pass the value returned to the matching commit() call. (The return value of commit() will be true if it is the first begin() to request a lock and false otherwise -- this allows multiple begin(true) calls to be nested without the nested ones triggering notification.
This does make trigger() order a bit less predictable, but I'm ordering events and types (e.g. calling modify events after add and before delete) in an attempt to avoid problems. We'll see if this works or we need a more sophisticated ordering/grouping scheme.
For launch(), we just send the file through the Firefox's external helper app dialog. For reveal(), we display the path pre-selected in a window so the user can quickly copy it into another window (e.g. a terminal).
- Only use saveDocument() for text/html snapshots
- Add 'application/xhtml+xml' and 'application/xml' as native MIME types
- When loading attachment, check recorded MIME type first before detecting
Added "Save Link As Zotero Snapshot" and "Save Image As Zotero Snapshot" options to the browser content context menu where appropriate
Other fixes:
- Implemented standalone image and plugin snapshots the right way (as opposed to the fairly broken way from yesterday)
- Only natively handled files are loaded into a hidden browser when using importFromURL() -- plugin files are now saved directly with saveURI()
- indexDocument() doesn't try to index non-text files
Notes:
- There's no feedback when saving large files, which will likely be a bit confusing for users -- one option would be to put the transfer into the downloads window, though that's a little weird.
- I suspect this will fix the reported JSTOR PDF download issue (http://forums.zotero.org/discussion/217/), though I don't currently have a way of testing it.
N.B.: Some changes from plan on ticket
New methods:
Item.setAbstract(true|false) -- make a note an abstract (and clear existing abstract if there is one for source item) or clear abstract status
Item.isAbstract() -- returns true if note is an abstract, false if not
Item.getAbstract() - get itemID of child abstract note or false if none
ZoteroPane.toggleAbstractForSelectedItem()
Changed methods:
Item.updateNoteCache(text, isAbstract)
Notes.add(note, sourceItemID, isAbstract)
Item.setSource() -- moving abstract note to another source with an existing abstract or setting as an independent note will make note not abstract
Other changes:
- Context menu options in items pane: "Set note as abstract" and "Unset note as abstract"
- Child notes are now displayed before child attachments so that abstract will be first
- Don't try to get MIME type from extension if extension is blank
- Add text/css to native text types, even if snapshots add some html tags (why is that?)
- Get rid of extraneous "this." prefixes
Apparently nsIWebBrowserPersist's nsIWebProgressListener never reaches STOP_STOP and STATE_IS_NETWORK in onStateChange() for plugin-handled files, so the import process wasn't completing. I'm now using onProgressChange() for such files.
Also:
- Moved DB commits out of callbacks so that transactions aren't left open if the progress listener never completes
- Blocked attempts to call snapshots on plugin files with file:// URLs, since they're one case where the listener doesn't work properly
- Added Zotero.MIME.hasNativeHandler() to be able to distinguish between natively handled files and plugin-handled files.
- Fixed a couple bugs that might have made prevented snapshots from working properly