Commit graph

144 commits

Author SHA1 Message Date
Dan Stillman
884e5474fe Zotero File Storage megacommit
- Group file sync via Zotero File Storage
- Split file syncing into separate modules for ZFS and WebDAV
- Dragging items between libraries copies child notes, snapshots/files, and links based on checkboxes for each (enabled by default) in the Zotero preferences
- Sync errors now trigger an exclamation/error icon separate from the sync icon, with a popup window displaying the error and an option to report it
- Various errors that could cause perpetual sync icon spinning now stop the sync properly
- Zotero.Utilities.md5(str) is now md5(strOrFile, base64)
- doPost(), doHead(), and retrieveSource() now takes a headers parameter instead of requestContentType
- doHead() can now accept an nsIURI (with login credentials), is a background request, and isn't cached
- When library access or file writing access is denied during sync, display a warning and then reset local group to server version
- Perform additional steps (e.g., removing local groups) when switching sync users to prevent errors
- Compare hash as well as mod time when checking for modified local files
- Don't trigger notifications when removing groups from the client
- Clear relation links to items in removed groups
- Zotero.Item.attachmentHash property to get file MD5
- importFromFile() now takes libraryID as a third parameter
- Zotero.Attachments.getNumFiles() returns the number of files in the attachment directory
- Zotero.Attachments.copyAttachmentToLibrary() copies an attachment item, including files, to another library
- Removed Zotero.File.getFileHash() in favor of updated Zotero.Utilities.md5()
- Zotero.File.copyDirectory(dir, newDir) copies all files from dir into newDir
- Preferences shuffling: OpenURL to Advanced, import/export character set options to Export, "Include URLs of paper articles in references" to Styles
- Other stuff I don't remember

Suffice it to say, this could use testing.
2009-09-13 07:23:29 +00:00
Ben Parr
ac79b1d05f Add Zotero Commons feature (integration between Zotero and Internet Archive).
- dropping Zotero items into a bucket puts them in that IA bucket
- double clicking a bucket takes you to that IA bucket

In order to enable Zotero Commons:
1) Get an access key and secret key at http://www.archive.org/account/s3.php
2) Go to about:config
3) Search "commons" (no quotes)
4) Set "extensions.zotero.commons.enabled" to true
5) Enter your S3 access key into "extensions.zotero.commons.accessKey"
6) Enter your S3 secret key into "extensions.zotero.commons.secretKey"
7) Enter your buckets into "extensions.zotero.commons.buckets" as a comma separated list

Note: Steps 4-7 take effect in new windows
2009-08-13 10:56:47 +00:00
Dan Stillman
5f9e39f959 In-memory debug logging, configurable in Advanced pane of preferences, with ability to send output to zotero.org 2009-08-10 16:44:15 +00:00
Dan Stillman
53bd9afeac Remove option to display Zotero pane above browser content
There are times when I am right, when I demonstrate profound foresight sometimes borne out only years down the line. Then there are the other times.
2009-08-09 22:40:42 +00:00
Dan Stillman
6a28e8b040 - Make note font size configurable through preferences
- Make note font configurable through extensions.zotero.note.fontFamily hidden pref (for now)
- Additional CSS rules can be added through extensions.zotero.note.css hidden pref
- Give TinyMCE note body #zotero-tinymce-note id for more specific external customization
- Remove status bar position option from visible preferences...
2009-06-01 08:23:16 +00:00
Dan Stillman
68c6162fc8 - Don't use modifier keys to control tab/window opening behavior when double-clicking items list, because the modifier keys are already bound to behaviors
- Add viewOnDoubleClick hidden pref to disable double-click functionality
2009-06-01 02:53:03 +00:00
Dan Stillman
2d0a197293 - Remember last long tag delimiter
- Select delimiter field when switching to Split mode
- Escape special regexp characters
- Fix a window resize bug
2009-05-30 22:37:28 +00:00
Dan Stillman
481d847951 Long tag fixer tool -- runs automatically if server returns a long tag error, giving the option to split, edit, or delete the offending tag
Needs testing and refinement

- Also fixes server unlock after sync errors
2009-05-29 11:49:55 +00:00
Dan Stillman
f73e2ceb58 Closes #955, Don't generate bibliography when dragging many items
Default limit set to 50, configurable in the Export pane
2009-05-18 19:51:36 +00:00
Dan Stillman
1532a1dd14 Addresses #635, In-content translator
Adds "Import from Clipboard" Actions menu option, based on original patch from en205

Also available via keyboard shortcut (Cmd-Shift-V/Ctrl-Alt-V)
2009-05-06 01:45:57 +00:00
Simon Kornblith
ac53f35056 Adds RTF scan feature. this could probably use some more testing. Acceptable citations are in the form
(Smith, 2006)
The database is scanned for each citation, and positioning is adjusted automatically for footnotes. Currently, this won't work with names with accents, but I'll get to that.
2009-05-01 11:46:07 +00:00
Simon Kornblith
9ca461c59b Proxy system overhaul
- Only one preference for recognizing proxies for transparent redirection
- Blacklists sites and http://%h/%p
- Fixes to EZProxy

This will clear all existing proxies from Zotero
2009-03-23 19:55:57 +00:00
Dan Stillman
dd230b278b Closes #972, Keep additional backups of zotero.sqlite
Closes #984, Switch database backup to use mozIStorageConnection.backupDB()
2009-02-23 02:34:40 +00:00
Dan Stillman
26e6125450 - More efficient purging logic -- instead of purging all objects whenever an item is deleted, flag just the object type and do the necessary purge when the Zotero pane is next opened. This also fixes a sync error edge case due to purging during synced item deletions.
- Disable unresponsive script warning during items list refresh
- Zotero.UnresponsiveScriptIndicator.disable() now returns true if it disables the indicator and false if it was already disabled
2009-02-18 03:09:39 +00:00
Dan Stillman
e36b41f6c2 Display trash can all the time, unless showTrashWhenEmpty is set to false
- Icon isn't currently reset to empty state when all trashed items are removed
- Dragging doesn't yet work

Addresses #513
2009-01-31 06:19:14 +00:00
Dan Stillman
337b16361a Merge [3617-3838] from branch to trunk 2008-11-30 20:18:48 +00:00
Dan Stillman
340f54c8b0 Add X-Zotero-Version header to HTTP requests to zotero.org 2008-09-16 20:11:27 +00:00
Dan Stillman
ecfc44ee57 Closes #1166, Add http access to WebDAV 2008-09-09 15:19:22 +00:00
Dan Stillman
f37d724a9e Merged revisions 3080-3081,3084,3087-3088,3090,3092,3099-3103,3113-3114,3132,3134-3143,3145,3148-3151,3154-3159,3165,3174,3194,3234-3235,3239-3240,3244,3246-3254,3258-3262,3268,3270,3274,3279,3286-3288,3294-3295 from 1.0 branch via svnmerge 2008-09-01 01:54:00 +00:00
Dan Stillman
a8bb8dae40 Adds WebDAV file sync
- Still experimental and incomplete, with no lock support and not much error handling

Also:

- New expiry date for sync functions
- Attachment character set was being dropped during syncing
- Possibly improves sizing issues with preferences window
- Fixes problems with attachment filenames with extended characters
- Fixes some problem with tags that I don't remember
- Makes XMLHTTPRequest calls are now background requests (no auth windows or other prompts)
- Z.U.HTTP.doOptions() now takes an nsIURI instead of a URL spec
- New methods:
  - Zotero.Utilities.rand(min, max)
  - Zotero.Utilities.probability(x)
  - Zotero.Utilities.Base64.encode(str) and decode(str)
  - Zotero.getTempDirectory()
  - Zotero.Date.dateToISO(date) - convert JS Date object to ISO 8601 UTC date/time
  - Zotero.Date.isoToDate(isoDate) - convert an ISO 8601 UTC date/time to a JS Date object
2008-08-31 23:36:01 +00:00
Simon Kornblith
c77fe5462a references #831, transparent EZProxy support
changes default behavior. transparent redirection is now enabled by default, and a caution dialog appears when proxies are first accessed. when transparent redirection is turned off, no dialog appears, and proxies get saved automatically. when the user switches transparent redirection on, there is a warning that s/he should check that there are only trusted proxies in the list. i'm not sure how well i've worded the messages, so feel free to suggest better alternatives.
also, a bit of jsdoc cleanup on proxy.js
2008-08-21 05:46:54 +00:00
Dan Stillman
102d74bb14 Add reminder to add new hidden prefs to hidden prefs page 2008-08-14 18:19:39 +00:00
Dan Stillman
4524115bf4 Disable tag cloud by default 2008-08-08 19:41:58 +00:00
Asa Kusuma
005375cc33 Adds tag cloud feature. Use about:config to turn on. 2008-08-08 19:39:06 +00:00
Simon Kornblith
09e8249db8 closes #743, Support non-EZproxy proxies
closes #831, transparent EZProxy support
adds a proxy pane to the preferences
asks before saving proxies to the DB (to avoid the potential phishing risk #831 would otherwise pose)
2008-07-28 11:11:12 +00:00
Dan Stillman
20d649ee42 Auto-sync on first open of Zotero pane after starting Firefox 2008-07-01 20:39:20 +00:00
Dan Stillman
245954b876 Add extensions.zotero.dbLockExclusive pref to control SQLite exclusive locking (default true)
Set to false to allow external access while Firefox is running
2008-06-25 00:21:37 +00:00
Dan Stillman
97f214c9dc Merged revisions 2710-2712,2714-2716,2718-2728,2730-2731,2734,2736-2738,2740-2750,2752-2753,2755,2758-2768,2770-2779,2782,2789-2790,2794,2797-2802,2804,2808-2810,2812,2814-2824,2826-2832,2834-2835 via svnmerge from 1.0 branch 2008-06-11 08:55:59 +00:00
Dan Stillman
00c2b14d6c Adds rudimentary Zeroconf support to Zotero (a.k.a. "Z(ot)eroconf")
- Inspired by Dan Chudnov's Python/MODS-based Zeroconf demo at THATcamp
- Enabled by extensions.zotero.zeroconf.enabled (off by default)
- Currently supports only OS X (tested on Leopard, not sure about earlier versions)
- Uses Apple's dns-sd and mDNS command-client clients, but should be able to be extended to other clients, though a native library would be far superior
- Discovery is on-demand for now via Actions menu ("Search for Shared Libraries")
- Includes rudimentary web server (code copied from integration.js) that serves items as sync XML -- no authentication yet!
- Only supports top-level items
- Remote libraries show up in left pane (under remote computer name, for now)
- Items can be dragged into collections (but not the library yet, for some reason)
- On first run, might cause a long pause and the "This file was downloaded from the Internet" message on Leopard -- can't manage to get around the quarantine for the script file that we need to access stdout from Firefox
- Needs a lot of work, and without a real JS (or otherwise Mozilla-native) Zeroconf library we can't do proper discovery without intermittent polling
- But it works, at least for me

Also includes some data/sync-layer changes that I needed along the way (and that we'll need for shared collections of any type)
2008-06-03 05:26:30 +00:00
Dan Stillman
3de1789f26 Initial Zotero 1.5 Megacommit
Apologies for the massive (and, due to data_access.js splitting, difficult-to-follow) commit. Please note that external code that accesses the data layer may need to be tweaked for compatibility. Here's a comprehensive-as-possible changelog:

- Added server sync functionality (incomplete)
- Overhaul of data layer
  - Split data_access.js into separate files (item.js, items.js, creator.js, etc.)
  - Made creators and collections first-class objects, similar to items
  - Constructors now take id as first parameter, e.g. new Zotero.Item(1234, 'book'), to allow explicit id setting and id changing
  - Made various data layer operations (including attachment fields) require a save() rather than making direct DB changes
  - Better handling of unsaved objects
    - Item.setCreator() now takes creator objects instead of creator ids, and Item.save() will auto-save unsaved creators
    - clone() now works on unsaved objects
  - Newly created object instances are now disabled after save() to force refetch of globally accessible instance using Zotero.(Items|Creators|etc.).get()
  - Added secondary lookup key to data objects
  - Deprecated getID() and getItemType() methods in favor of .id and .itemTypeID properties
  - toArray() deprecated in favor of serialize(), which has a somewhat modified format
  - Added support for multiple creators with identical data -- currently unimplemented in interface and most of data layer
  - Added Item.diff() for comparing item metadata
- Database changes
  - Added SQLite triggers to enforce foreign key constraints
  - Added Zotero.DB.transactionVacuum flag to run a VACUUM after a transaction
  - Added Zotero.DB.transactionDate, .transactionDateTime, and transactionTimestamp to retrieve consistent timestamps for entire transaction
  - Properly store 64-bit integers
  - Set PRAGMA locking_mode=EXCLUSIVE on database
  - Set SQLite page size to 4096 on new databases
  - Set SQLite page cache to 8MB
  - Do some database cleanup and integrity checking on migration from 1.0 branch
  - Removed IF NOT EXISTS from userdata.sql CREATE statements -- userdata.sql is now processed only on DB initialization
  - Removed itemNoteTitles table and moved titles into itemNotes
- Abstracted metadata edit box and note box into flexible XBL bindings with various modes, including read-only states
- Massive speed-up of item tree view
- Several fixes from 1.0 branch for Fx3 compatibility
- Added Notifier observer to log delete events for syncing
- Zotero.Utilities changes
  - New methods getSQLDataType() and md5()
  - Removed onError from Zotero.Utilities.HTTP.doGet()
  - Don't display more than 1024 characters in doPost() debug output
  - Don't display passwords in doPost() debug output
- Added Zotero.Notifier.untrigger() -- currently unused
- Added Zotero.reloadDataObjects() to reset all in-memory objects
- Added |chars| parameter to Zotero.randomString(len, chars)
- Added Zotero.Date.getUnixTimestamp() and Date.toUnixTimestamp(JSDate)
- Adjusted zotero-service.js to simplify file inclusion

Various things (such as tags) are temporarily broken.
2008-05-04 08:32:48 +00:00
Dan Stillman
200cca74a6 Merged revisions 1986,1988-1990,1996,1998,2000-2004,2006,2008-2010,2013,2020-2028,2032-2034,2037,2039,2044-2049,2052-2056,2059,2065-2066,2068-2072,2075,2077-2079,2081,2083-2084,2086,2088-2094,2096,2099,2101,2103-2104,2107-2110,2115,2118,2120-2122,2126-2128,2131,2140,2142-2145,2149-2153,2155-2159,2165,2167-2168,2170-2171,2173-2176,2179-2183,2185-2186 via svnmerge from
https://www.zotero.org/svn/extension/branches/1.0
2008-01-30 09:53:19 +00:00
Dan Stillman
e2cb3a699a Merge r1802-1983 from branch to trunk 2007-12-02 05:45:07 +00:00
Dan Stillman
35ff52f2e8 Merged 1.0 branch back to trunk 2007-10-23 07:11:59 +00:00
Dan Stillman
10efae5822 Don't set (currently unused) downloadAssociatedFiles pref 2006-10-05 17:22:47 +00:00
Dan Stillman
088027d640 Added automaticSnapshots pref, and changed Create New Item From Current Page button to obey pref
At least some scrapers (NYT and WashPo, for sure) should be updated to follow this pref

Addresses #327, Scrapers should either take snapshots or use URL field
2006-10-04 22:59:07 +00:00
Dan Stillman
1cd51be497 Sorry, it was now or never, and now is better:
Changed "Scholar" to "Zotero", everywhere

Apologies to anyone with working copy changes, but there are probably the fewer at this moment than there will be again.

Hopefully this won't break anything, though existing prefs will be lost. I avoided scholar.google.com--if you know any other legitimate "scholar"s in the code, be sure to fix them once I'm done here.

This is a multi-commit change--there's at least one more coming. *Do not update to this version! It won't work!*
2006-10-02 23:15:27 +00:00
Simon Kornblith
d4576d3d55 addresses #69, notification system for broken scrapers
thanks to Dan for his help on the repository side of things
2006-09-09 00:12:09 +00:00
Simon Kornblith
26668a6e73 closes #194, EBSCO translator
closes #160, cache regular expressions
closes #188, rewrite MARC handling functions

MARC-based translators should now produce item types besides "book." right now, artwork, film, and manuscript are available. MARC also has codes for various types of audio (speech, music, etc.) and maps.
the EBSCO translator does not yet produce attachments. i sent them an email because their RIS export is invalid (the URLs come after the "end of record" field) and i'm waiting to see if they'll fix it before i try to fix it myself.
the EBSCO translator is unfortunately a bit slow, because it has to make 5 requests in order to get RIS export. the alternative (scraping individual item pages) would be even slower.
regular expression caching can be turned off by disabling extensions.scholar.cacheTranslatorData in about:config. if you leave it on, you'll have to restart Firefox after updating translators.
2006-08-19 18:58:09 +00:00
Simon Kornblith
10ba568ee8 closes #39, auto-ingest of associated files (as recognizable)
closes #3, Overflow metadata dumps into "extra" field

add "extra" data where such data is useful and conveniently accessible (not available for XML-based export or MARC formats yet)
add links to permanent URLs
download associated files from full text sources (if extensions.scholar.downloadAssociatedFiles preference is enabled)
fix WorldCat translator
improve InnoPAC translator (it now works on Georgetown search results pages, albeit slowly, because it must first realize the catalog is misconfigured)
tag items from SIRSI and WorldCat
return to putting the full lengths of books into "pages," because some citation styles require it
fix COinS (broken a few revisions ago)
2006-08-17 07:56:01 +00:00
Simon Kornblith
3edb6e0286 closes #86, steal EndNote download links
Scholar should now attempt to process citation information from EndNote download links (MIME types application/x-endnote-refer and application/x-research-info-systems). in situations where Scholar cannot process the information, a standard helper app dialog will appear. this behavior is controlled by the preference extensions.scholar.parseEndNoteMIMETypes.
2006-08-08 21:17:07 +00:00
Simon Kornblith
56769079b0 addresses #83, figure out how to implement OpenURL
Scholar.OpenURL.resolve(item) returns the URL that retrieves an item from the user's OpenURL resolver. this means we can implement a "find in my library" feature.
Scholar.OpenURL.discoverResolvers() returns a list of available resolvers for the user's current location (by IP address).
2006-08-06 21:59:50 +00:00
David Norton
8427ebdf2a Fixes #114, Preference for Scholar location (top, bottom).
(I had to go a little roundabout way of doing it, as you can't use the overlay-related positioning attributes on-the-fly)
2006-07-19 16:14:27 +00:00
David Norton
27025befef Added "Disable automatic scraper updates" preference. (Up to Dan to implement this) 2006-06-21 22:31:52 +00:00
David Norton
7aecfd5190 Added basic preferences support.
Removed all trace of 'object' from sidebar.js.

More code renaming.
2006-05-18 18:39:55 +00:00