Commit graph

6394 commits

Author SHA1 Message Date
Aurimas Vinckevicius
dcd65d087c Add object key/ID validation. Centralize key generation/checking. 2014-08-12 00:26:26 -05:00
Aurimas Vinckevicius
e1f59482c4 Add Zotero.Utilities.defineProperty convenience method
Use this to create enumerable properties in object prototypes.
2014-08-12 00:24:02 -05:00
Aurimas Vinckevicius
c5a532c789 Add option to print stack with debug messages 2014-08-12 00:24:01 -05:00
Dan Stillman
15d10d18a7 Use async DB queries for schema integrity check
Addresses #521
2014-08-11 02:23:00 -04:00
Dan Stillman
ae8f871f20 Fix flash of "No items in this view" when switching collections 2014-08-11 00:40:43 -04:00
Dan Stillman
40f111832c Fix error double-clicking on unopened regular items 2014-08-11 00:40:35 -04:00
Dan Stillman
f358975153 Closes #526, Asyncify database backup
When a database backup is in progress, all other DB operations are paused until
it's done.
2014-08-10 20:21:40 -04:00
Dan Stillman
f1ed5f1f03 Remove obsolete file (Zotero.Tag no longer exists) 2014-08-10 15:00:08 -04:00
Dan Stillman
89833e2da7 Use 'Zotero' object instead of this._zotero in autocomplete 2014-08-10 14:54:41 -04:00
Dan Stillman
00484c5e69 Closes #527, Asyncify autocomplete 2014-08-10 14:52:03 -04:00
Dan Stillman
9441627e74 Allow StopIteration in queryAsync() to cancel query
And catch other errors and throw StopIteration so that they stop the
search. (Non-StopIteration errors in onRow don't stop Sqlite.jsm
queries. We were logging them but then re-throwing them, which didn't do
anything.)
2014-08-10 14:15:46 -04:00
Dan Stillman
31502de08f Zotero.DB updates
- Fix ES5 generator in executeFile()
- Remove deferred in executeAsyncStatement()
- Remove obsolete properties and wait level check
2014-08-10 02:10:03 -04:00
Dan Stillman
f5896dbb8d Remove synchronous database methods
This required doing additional caching at startup (e.g., item types and fields)
so that various methods can remain synchronous.

This lets us switch back to using the current Sqlite.jsm. Previously we were
bundling the Fx24 version, which avoided freezes with locking_mode=EXCLUSIVE
with both sync and async queries.

Known broken things:

  - Autocomplete
  - Database backup
  - UDFs (e.g., REGEXP function used in Zotero.DB.getNextName())
2014-08-09 18:10:32 -04:00
Dan Stillman
86bc20c4e9 Remove unnecessary conditionals in Zotero.DataObject constructor 2014-08-08 17:44:19 -04:00
Dan Stillman
380668cc60 Changes to item and file retrieval methods
- Zotero.Item.prototype.getFilePath() is now synchronous, with a separate async getFilePathAsync()

- getFile() no longer takes a skipExistsCheck parameter, since that shouldn't happen synchronously

- Zotero.Items.getByLibraryAndKey() is now synchronous again, with a
  separate Zotero.Items.getByLibraryAndKeyAsync() - I haven't fully
  tested this, so I'm not sure if there will need to be any async
  calls.

- Some of the full-text indexing functions now take file paths instead of nsIFile objects

- Zotero.File.getContentsAsync() can now take a string path as well
2014-08-08 17:43:26 -04:00
Dan Stillman
e33dc815a0 Log the error for file launch() failure, in case it's relevant 2014-08-07 18:29:32 -04:00
Dan Stillman
cb6fae694c Fix attachment file mtime in right pane 2014-08-07 16:03:17 -04:00
Dan Stillman
ab36dda6e7 Restore loading of renamed styles
Didn't end up on this branch somehow
2014-08-07 15:01:59 -04:00
Dan Stillman
1ca2100cf0 Add timing to tag selector 2014-08-07 15:01:32 -04: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
4ea5e2d426 Update code to use 0 instead of NULL for libraryID 2014-08-06 22:14:59 -04:00
Dan Stillman
368e568fe1 Don't load saved search list for every collection row 2014-08-06 22:14:59 -04:00
Dan Stillman
7c958f4bd3 Show "Loading items list..." in middle pane on window load
Otherwise with async loading the pane appears blank before the message appears
2014-08-06 22:14:58 -04:00
Dan Stillman
b20a2e153b Fix Services.wm call 2014-08-06 22:14:58 -04:00
Dan Stillman
84882c8ecf Include actual error in "There was an error starting Zotero." dialog
And use a proper title
2014-08-06 22:14:58 -04:00
Dan Stillman
b7cba469f0 Add pause() method to ConcurrentCaller
Delay running any new functions for the specified time
2014-08-06 22:14:58 -04:00
Dan Stillman
fe83d4db72 Document options.headers property for Zotero.HTTP.promise() 2014-08-06 22:14:58 -04:00
Dan Stillman
16e4aa0516 Remove Zotero.join() 2014-08-06 22:14:58 -04:00
Dan Stillman
51713c8030 ConcurrentCaller updates 2014-08-06 22:14:58 -04:00
Dan Stillman
3a7042e527 Zotero.Utilities.forEachChunk(arr, chunkSize, func)
Run a function on chunks of a given size of an array's elements and
return an array with the return values from the successive runs.
2014-08-06 22:14:58 -04:00
Dan Stillman
feb47caa6b Merge branch '4.0'
Conflicts:
	chrome/content/zotero/xpcom/translation/translate.js
2014-08-06 22:13:05 -04:00
Simon Kornblith
9219100901 Another Fx 32 translation fix 2014-07-23 18:05:56 -04:00
Dan Stillman
6f1b488380 Merge pull request #515 from aurimasv/sort-initP
Don't ignore initial punctuation when sorting
2014-07-23 02:05:29 -04:00
Aurimas Vinckevicius
638d29972c Don't ignore initial punctuation when sorting
Also, change sorting sensitivity to "base"
Closes #514
2014-07-23 00:18:48 -05:00
Dan Stillman
15108eea3f Fix intermittent source file deletion when dragging files in on Windows
(at least, if this is caused by what I think it was caused by)

https://forums.zotero.org/discussion/38486/
2014-07-20 15:56:55 -04:00
Dan Stillman
3b5bd45433 Further Windows drag-and-drop comment rewriting 2014-07-20 13:16:56 -04:00
Dan Stillman
717a440156 Clarify comment for Windows drag-and-drop mess 2014-07-20 02:50:00 -04:00
Dan Stillman
b8f69d6281 Fix Quick Copy drag to Chrome textareas on Windows
Possibly to other places as well (but not Notepad, which doesn't work
from Firefox or Chrome either)

Unfortunately this requires going back to 'copy' cursor feedback when
dragging, even when Shift is used. We can only choose one on Windows (as
far as I can tell), and we were previously using the unadorned 'move'.
2014-07-20 02:16:25 -04:00
Dan Stillman
7d74344b7d Restore highlighting of collection row during drag on Windows 2014-07-20 02:16:20 -04:00
Dan Stillman
36c5dceff4 Merge branch '4.0'
Conflicts:
	chrome/content/zotero/browser.js
	chrome/content/zotero/longTagFixer.js
	chrome/content/zotero/xpcom/schema.js
	chrome/content/zotero/xpcom/utilities.js
	chrome/content/zotero/xpcom/zotero.js
	install.rdf
	update.rdf
2014-07-15 22:17:27 -04:00
Dan Stillman
813f55d024 Natural sorting of numbers ("1" < "2" < "10")
This needs testing to see if it has any other unwanted effects.

Closes Trac ticket 1031
2014-07-08 09:47:03 -04:00
Simon Kornblith
87a0df43d8 Fix some more Fx 32 issues
Ref https://forums.zotero.org/discussion/37885/
2014-07-06 14:07:00 -04:00
Simon Kornblith
d9720f18a9 Update to citeproc-js 1.0.536 2014-07-06 08:50:13 -04:00
Dan Stillman
60f3419900 Update version 2014-06-27 14:14:44 -04:00
Dan Stillman
532ebc5239 Fix for startup error w/weird locale language tags ("de-CH@currency=EUR")
https://forums.zotero.org/discussion/37901

And just return a noop sorter on failure instead of breaking
2014-06-27 09:36:11 -04:00
Dan Stillman
4a677240d3 Don't use Intl until Fx30, since it's missing in Iceweasel 29
And nsICollation isn't broken on OS X until 30
2014-06-27 01:12:25 -04:00
Dan Stillman
479598b80c Update versions 2014-06-25 17:35:02 -04:00
Dan Stillman
d66a6f6680 Ignore punctuation when sorting
This sorts "St. A" before "St B". I don't know if we want this.
2014-06-25 12:24:31 -04:00
Dan Stillman
979e62714c Fix startup errors in some non-English locales in Fx30 on OS X
nsICollation broke for some locales. (Testing requires changing the
language setting in Language & Region and then restarting the computer.
The change seems to not fully go into effect until then, even though the
UI changes.) This is fixed in Nightly, but we can work around it by
using the new Intl.Collator.
2014-06-25 12:22:04 -04:00
Dan Stillman
9f379c99e0 Update submodules and repotime 2014-06-24 17:48:37 -04:00