Commit graph

115 commits

Author SHA1 Message Date
Frank Bennett
523724185c Instantate CSL processor once on drag, changing output mode on the fly 2014-11-09 06:46:37 +09:00
Dan Stillman
db0fa3c33e Async DB megacommit
Promise-based rewrite of most of the codebase, with asynchronous database and file access -- see https://github.com/zotero/zotero/issues/518 for details.

WARNING: This includes backwards-incompatible schema changes.

An incomplete list of other changes:

- Schema overhaul
  - Replace main tables with new versions with updated schema
  - Enable real foreign key support and remove previous triggers
  - Don't use NULLs for local libraryID, which broke the UNIQUE index
    preventing object key duplication. All code (Zotero and third-party)
    using NULL for the local library will need to be updated to use 0
    instead (already done for Zotero code)
  - Add 'compatibility' DB version that can be incremented manually to break DB
    compatibility with previous versions. 'userdata' upgrades will no longer
    automatically break compatibility.
  - Demote creators and tags from first-class objects to item properties
- New API syncing properties
  - 'synced'/'version' properties to data objects
  - 'etag' to groups
  - 'version' to libraries
- Create Zotero.DataObject that other objects inherit from
- Consolidate data object loading into Zotero.DataObjects
- Change object reloading so that only the loaded and changed parts of objects are reloaded, instead of reloading all data from the database (with some exceptions, including item primary data)
- Items and collections now have .parentItem and .parentKey properties, replacing item.getSource() and item.getSourceKey()
- New function Zotero.serial(fn), to wrap an async function such that all calls are run serially
- New function Zotero.Utilities.Internal.forEachChunkAsync(arr, chunkSize, func)
- Add tag selector loading message
- Various API and name changes, since everything was breaking anyway

Known broken things:

- Syncing (will be completely rewritten for API syncing)
- Translation architecture (needs promise-based rewrite)
- Duplicates view
- DB integrity check (from schema changes)
- Dragging (may be difficult to fix)

Lots of other big and little things are certainly broken, particularly with the UI, which can be affected by async code in all sorts of subtle ways.
2014-08-06 22:59:37 -04:00
Dan Stillman
5d32fb90ea Merge branch '4.0'
Conflicts:
	chrome/content/zotero/fileInterface.js
	chrome/content/zotero/overlay.js
	chrome/content/zotero/xpcom/schema.js
	chrome/content/zotero/xpcom/zotero.js
	chrome/content/zotero/zoteroPane.js
	install.rdf
	update.rdf
2013-11-24 16:08:46 -05:00
Simon Kornblith
d927d4148d Don't delete collection on partial import 2013-11-04 23:23:47 -05:00
Simon Kornblith
d842779cae Close transaction before updating progress indicator
Should fix #230
2013-11-04 23:23:47 -05:00
Simon Kornblith
540a54515e Async Zotero.Translators.get* and Zotero.Translate.getTranslators
This mostly works, but there is still much to be done:

- getTranslators() calls in preferences_export.js and quickCopy.js need
  to be made asynchronous
- getTranslators() calls in mimeTypeHandler.js need to be made
  asynchronous. This looks hard, since there is a synchronous Mozilla
  API involved
- I need to test lookup, the connector server, and export more to make
  sure that they actually work
- This API needs to be implemented for the connector and bookmarklet
- Translators should be read off the disk using async IO
2013-08-16 13:48:59 -04:00
Dan Stillman
5787b230f7 Use asynchronous DB and file access for schema checks/updates
This change should improve Firefox startup time. If the Zotero pane is
opened before Zotero has initialized, the pane will be blocked with a
progress bar until it's done. Standalone currently does the same, but it
should be changed to just delay opening the window if possible.

The upgrade wizard has been disabled for schema upgrades, in the hope
that upgrades can be done in a way that won't break compatibility with
earlier versions (or that can at least be done in a way such that we can
put out point releases of the last major version that provide
compatibility during beta/post-upgrade periods).

This patch likely breaks many things, and definitely breaks connector
mode.

This change also removes upgrade steps for databases from Zotero 2.1b2
and earlier. Users with such databases will need to upgrade via Zotero
4.0.x first or delete their data directories and start anew. This should
only affect users who haven't opened Zotero since Nov. 2010.
2013-08-11 21:53:41 -04:00
Simon Kornblith
a7984916ad Protect against pasting HTML-formatted text into QuickFormat dialog 2013-05-24 00:39:19 -04:00
Simon Kornblith
6efe6c5bd6 Move "Automatically abbreviate journal titles" setting to document preferences
The setting is disabled by default for existing documents, but enabled by
default for new documents.
2013-03-27 23:53:38 -04:00
gracile-fr
217929a3ea more localization 2013-02-28 23:31:07 +01:00
Simon Kornblith
bd688f333c Merge branch '3.0' 2013-01-22 23:05:15 -05:00
Simon Kornblith
502f814fc4 Use Zotero.wait() to move progress indicator
This may help with #230
2013-01-21 04:07:07 -05:00
Simon Kornblith
91c3374d6b Merge branch '3.0' and modify recognizePDF.js to use promises
Conflicts:
	chrome/content/zotero/recognizePDF.js
	install.rdf
	update.rdf
2013-01-21 01:04:05 -05:00
Dan Stillman
a3f7f97e02 Fix broken Note/Citation option in "Create Bibiography" 2012-12-20 01:21:36 -05:00
Simon Kornblith
73f775950d Merge branch '3.0'
Conflicts:
	chrome/content/zotero/xpcom/cite.js
2012-11-08 09:40:18 -05:00
Simon Kornblith
39c1024461 Copy citation list to clipboard, instead of multiple item citation 2012-11-06 01:35:36 -05:00
Simon Kornblith
cdd637f3ec Save citation lists instead of multiple item citations 2012-11-06 01:00:17 -05:00
Dan Stillman
3a9483070e Merge branch '3.0'
Conflicts:
	chrome/content/zotero/tinymce/plugins/paste/editor_plugin.js
	chrome/content/zotero/xpcom/translation/translate_firefox.js
	chrome/content/zotero/zoteroPane.js
	install.rdf
	update.rdf
2012-11-01 22:14:08 -04:00
Dan Stillman
079b767974 Closes #44, Allow generating citations via right-click
Currently generates multi-source citations for multiple items for note
styles, but a list of note citations might be better.

Also, context menu option is unchanged, since it becomes very long if
you add "Citation/Bibliography".
2012-11-01 21:47:10 -04:00
Simon Kornblith
450f15cda7 Fix a typo in previous commit and guard against attempts to import from clipboard into a read-only collection (although eventually we should just disable the menu item) 2012-06-11 00:26:47 -04:00
Simon Kornblith
57fe0f65ee Kill extensions.zotero.import.createNewCollection.fromFile and extensions.zotero.import.createNewCollection.fromClipboard preferences.
Imports from file via cog menu now always create a new collection, as before. Imports from clipboard never create a new collection.
2012-06-11 00:20:24 -04:00
Simon Kornblith
68365e2297 Allow user to control whether files are imported into a new collection.
Adds three new preferences controlling whether a new collection is created upon import:
- extensions.zotero.import.createNewCollection.fromFile
	Controls whether a new collection is created by import from cog menu
- extensions.zotero.import.createNewCollection.fromClipboard
	Controls whether a new collection is created by import from clipboard
- extensions.zotero.import.createNewCollection.fromFileOpenHandler
	Controls whether a new collection is created when import is initiated by
	double-clicking a file or by dragging it over Zotero. This preference applies only to
	Zotero Standalone, and is configurable in the dialog that appears asking the user
	to confirm the import.

Closes #19, [papercuts] (26) Clipboard import into an open collection
2012-06-10 11:05:39 -04:00
Simon Kornblith
867760e0be pushEventQueue removed in Fx 14 (https://bugzilla.mozilla.org/show_bug.cgi?id=719154) 2012-04-02 18:09:10 -04:00
Simon Kornblith
67e6cbfede Fix repaint 2012-02-06 12:44:38 -05:00
Simon Kornblith
50330d9a78 Move repaint code to fileInterface.js, because there's only one use of it 2012-01-31 03:34:06 -05:00
Simon Kornblith
943d2cd5de Remove a couple of repaints 2012-01-31 03:31:29 -05:00
Simon Kornblith
026bce81a8 Use Zotero.repaint() in callbacks instead of calling Zotero.wait() during translation to reduce non-determinism 2011-09-20 06:23:44 +00:00
Simon Kornblith
4666ae972c - Move Zotero.Utilities.Internal and Zotero.Utilities.Translate to separate files
- IE compatibility for translation core
2011-08-31 23:25:48 +00:00
Simon Kornblith
05f9d2cd6f Open reference formats and CSL files on double-click (currently only on OS X) 2011-08-17 04:51:43 +00:00
Simon Kornblith
1774962de9 - Refactor Zotero.Translate save process. There are now itemSaving and itemDone handlers. The itemSaving handler is called as soon as the translator returns an item, but before it's saved to the database. The itemDone handler is called when the item is saved. This allows us to show a grayed-out item icon in the connector while the item is saving to server, and then un-gray it when it is saved to the server.
- Move Zotero.randomString() to Zotero.Utilities
- Fix import of collections (broken by recent commits)
2011-07-04 09:08:49 +00:00
Simon Kornblith
49e309bb85 remove another window.loadURI 2011-05-31 04:58:07 +00:00
Dan Stillman
51f8c11ea0 Switch client code license to Affero GPL version 3 2011-05-18 18:34:22 +00:00
Simon Kornblith
7da0313a8b use ZoteroPane_Local everywhere we possibly can 2011-03-24 23:23:11 +00:00
Simon Kornblith
83d98dae19 - fix broken QuickCopy export
- fix dragging issues caused by Zotero.wait()
2011-02-22 18:30:31 +00:00
Simon Kornblith
5246248159 generate a citation list when using "Create Bibliography" context menu options if the selected style does not define a bibliographny 2011-02-12 04:36:37 +00:00
Simon Kornblith
9d50ee9317 closes #1750: Show determinate progress bars for import/export 2011-02-03 07:04:14 +00:00
Simon Kornblith
259c286db7 - fix export when dataMode is undefined (translate architecture should assume plain text)
- don't use "null" as a file extension
2011-01-17 07:42:22 +00:00
Simon Kornblith
dd5942c538 fix handling of files without extensions 2010-11-07 07:38:50 +00:00
Simon Kornblith
352158b48c - add ZU.deepCopy()
- fix attachment export/import
- make Translator return a copy of displayOptions or configOptions objects
- adjust file export functions for above change
2010-11-07 03:13:58 +00:00
Simon Kornblith
983673e354 - don't export duplicate items
- don't export top-level collection name
- use file name for name of collection when importing
2010-11-06 22:20:53 +00:00
Dan Stillman
749b13bc02 Replace nsIPrompt with nsIPromptService for Fx4 compatibility 2010-09-20 06:10:06 +00:00
Dan Stillman
1a7629a589 Closes #1710, Clipboard citation copy w/Ctrl-Alt-A always Ibid.
Frank's patch
2010-08-09 01:55:50 +00:00
Simon Kornblith
63f346b504 closes #1609, Bibliography printing broken
this currently leaks a hidden browser object, since deleting it seems to cause the print command to fail. this may not be a big issue, since this feature is used so rarely anyways...
2010-08-01 20:34:29 +00:00
Simon Kornblith
bd0a4a3b96 Use citeproc-js as CSL parser. There is an issue with multiple citations in numbered styles that I will probably need Frank's help to track down, but otherwise, this seems to work. Many things are completely untested, including EndNote style support. Currently requires CSL 1.0 styles. In the near future, I hope to use the XSLT stylesheet to transform CSL 0.8 to CSL 1.0.
closes #1650: suppress author does not work for multiple sources
closes #1505: Edit Biblography Button Strips Year Disambiguation
closes #1503: Editing a bibliography resets all reference numbers to 1 (new)
closes #1262: Broken pluralization with et al. + other issues
closes #1238: Localize quotation marks
closes #1191: Harmonize 'plural/pluralize' label attribute with CSL schema
closes #1154: Only one works page numbers are added to the citation are when citing multiple works by the same author
closes #1097: Disambiguation issues
closes #1083: Defect in IEEE CSL with Multiple Citations
closes #993: more sophisticated subsequent-author-substitute
closes #833: text-transform doesn't work with name
2010-05-30 11:25:25 +00:00
Dan Stillman
61e9ace79e Display a clearer error message attempting to import an unsupported file format, with a button pointing to http://zotero.org/support/kb/importing 2010-02-08 18:00:09 +00:00
Dan Stillman
7150d38cf1 Addresses #1475, Localize add-on strings
Localizes most (though not quite all) of the new unlocalized strings, hopefully without breaking anything
2009-12-30 07:22:53 +00:00
Dan Stillman
94e279e034 ECL 1.0 -> GPLv3 2009-12-28 09:47:49 +00:00
Dan Stillman
401f766e9a - Fix broken charset detection and full-text indexing during import on trunk
- Fix collection refresh after import
2009-09-14 06:13:04 +00:00
Dan Stillman
89dbc278bd New method Zotero.updateZoteroPaneProgressMeter(percentage) for updating the overlay progress meter 2009-08-09 19:39:32 +00:00
Dan Stillman
96345a3aa8 Don't hang UI when importing files
- File import now uses a translucent overlay over Zotero pane with a progress meter that doesn't hang
- New method Zotero.wait(timeout) to allow synchronous code to wait for events on main thread to be processed until timeout is reached
- Wait status can be tested with Zotero.waiting property
- Zotero.showZoteroPaneProgressBar(msg, determinate) locks Zotero and creates overlay with progress meter
- Code that might trigger via timers or external UI should check Zotero.lock

Lock checks so far:

- Translator save icon and RIS/Refer import display error if triggered while locked
- Browser content context menu options are now in a Zotero submenu and are disabled when Zotero is locked
- Sync, repository, and DB backup timers check for lock and bail
- If a new window is opened, Zotero pane can't be opened and display an error message until lock is released

Probably need to check lock in word processor integration code and advanced search window

Also:

- New method Zotero.sleep(ms) (currently unused) to allow synchronous code to sleep and allow events on main thread to be processed
2009-08-08 07:38:34 +00:00
Dan Stillman
41f3c3a261 Greatly increase import speed (by ~38% in testing) by consolidating collection inserts 2009-07-27 09:17:42 +00:00
Dan Stillman
91459f95f7 2.0b3 megacommit
- Support for group libraries
- General support for multiple libraries of different types
- Streamlined sync support
  - Using solely libraryID and key rather than itemID, and removed all itemID-changing code
  - Combined two requests for increased performance and decreased server load
  - Added warning on user account change
  - Provide explicit error message on SSL failure
- Removed snapshot and link toolbar buttons and changed browser context menu options and drags to create parent items + snapshots
- Closes #786, Add numPages field
- Fixes #1063, Duplicate item with tags broken in Sync Preview
- Added better purging of deleted tags
- Added local user key before first sync
- Add clientDateModified to all objects for more flexibility in syncing
- Added new triples-based Relation object type, currently used to store links between items copied between local and group libraries
- Updated zotero.org translator for groups
- Additional trigger-based consistency checks
- Fixed broken URL drag in Firefox 3.5
- Disabled zeroconf menu option (no longer functional)

Developer-specific changes:

- Overhauled data layer
  - Data object constructors no longer take arguments (return to 1.0-like API)
  - Existing objects can be retrieved by setting id or library/key properties
  - id/library/key must be set for new objects before other fields
- New methods:
  - ZoteroPane.getSelectedLibraryID()
  - ZoteroPane.getSelectedGroup(asID)
  - ZoteroPane.addItemFromDocument(doc, itemType, saveSnapshot)
  - ZoteroPane.addItemFromURL(url, itemType)
  - ZoteroPane.canEdit()
  - Zotero.CollectionTreeView.selectLibrary(libraryID)
  - New Zotero.URI methods
- Changed methods
  - Many data object methods now take a libraryID
  - ZoteroPane.addAttachmentFromPage(link, itemID)
- Removed saveItem and saveAttachments parameters from Zotero.Translate constructor
- translate() now takes a libraryID, null for local library, or false to not save items (previously on constructor)
- saveAttachments is now a translate() parameter
- Zotero.flattenArguments() better handles passed objects
- Zotero.File.getFileHash() (not currently used)
2009-05-14 18:23:40 +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
f06ce2705c implements Zotero.Styles and Zotero.Style using flat files 2008-09-11 21:29:05 +00:00
Dan Stillman
0f71fdbc35 Merged revisions 2989,2994,2996-2999,3001,3003-3004,3007,3010,3012,3015-3016,3026-3029,3036-3038,3040-3041,3046,3048,3050,3052,3054-3055,3057-3058,3066,3069-3073 from 1.0 branch via svnmerge 2008-07-22 05:45:32 +00:00
Dan Stillman
5f45009a18 Fixes #1071, Create bibliography from collection fails 2008-07-16 01:19:05 +00:00
Dan Stillman
35e9f3b3b7 Fix export from saved search content menu on trunk, changing ZoteroItemPane.getSortedItems() to return Item objects unless asIDs is passed (like getSelectedItems()) 2008-06-17 20:39:26 +00:00
Dan Stillman
77133f465c - Saved search syncing, with automatic latest-wins conflict resolution
- Last sync time displayed in sync button tooltip
- Various and sundry bug fixes

DB must be re-upgraded from 1.0
2008-06-02 09:15:43 +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
Simon Kornblith
28d91b1309 closes #969, Export not working under FF3 2008-03-25 15:35:54 +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
35ff52f2e8 Merged 1.0 branch back to trunk 2007-10-23 07:11:59 +00:00
Simon Kornblith
cbe7c086e1 closes #336, Some metadata fields are not exported with notes and attachments
closes #165, verify import/export can carry all data for all fields and item types
closes #168, make sure MODS import works with files from external sources
2006-10-05 08:45:44 +00:00
Dan Stillman
026b37169a Closes #63, Add ECL license info to source code
Added on all non-trivial files -- be sure to copy over XML or JS version as appropriate for new files
2006-10-04 17:16:56 +00:00
Dan Stillman
b5ad390070 Not done yet 2006-10-02 23:46:36 +00:00
Renamed from chrome-temporary/chromeFiles/content/zotero/fileInterface.js (Browse further)