If a file doesn't exist locally it won't be downloaded until opened, but
if a file does exist locally and has been modified remotely the latest
version will be downloaded at sync time regardless of the file sync
mode. (If a locally existing file has been updated remotely, just
opening it won't currently download the latest version. You have to
sync. This may change in the future.)
- Remove all "Selected" from "Selected Item", because that's how a context menu works
- Change "Remove Selected Item" to "Remove Item from Collection" (fixes#122)
- Change "Delete Selected Item from Library" to "Move Item to Trash")
- Change "Remove" on Duplicate/Unfiled Items to "Hide" (fixes#122)
- Change "Create Parent Item from Selected Item" to "Create Parent Item"
On OS X, the checked state of <menuitem type="checkbox"/> still doesn't
work right if set before the menu is opened. To get around this, the
state is now set manually in onpopupshown(). There's an annoying delay
before the UI update, but this is better than nothing.
Always show colored tags at the top of the tag selector, regardless of
whether they're in the current scope. If not, they're shown with reduced
opacity (as an equivalent to the gray style for out-of-scope tags in
Display All Tags mode). As a corollary, colored tags are now shown even
if they have no associated items and will remain until they're
explicitly deleted.
Also:
- Don't show outline on out-of-scope tags in "Display All Tags" mode
Previously any unused numbers were still available for key navigation, but I
think it's too easy hit the wrong key that way, and getting moved to another
part of the items list is annoying.
Use the Notifier for all tags box updates to ensure that it always updates.
Also fix the tag count and some other things.
Post-tab focus still isn't 100% correct in all situations, but it's real close.
- Clear per-library error icon on new sync
- Pass upload errors through to end
- Don't make WebDAV verification error a global failure
- Some other things
- Improvements to #20, with the tags box switching to a multiline
textbox in the style of #164 on a multiline paste or Shift-Return. In
the multiline box, Return is a newline and Shift-Return saves
- Allow tabbing through tags via keyboard (and keep the last empty
textbox open on tab, so you can hold down the tab key to get all the
way to the end)
- Fix various post-update focusing issues (though the wrong textbox is
still selected for some multiline updates via Tab/Shift-Tab)
- Make (single-line) tag entering much faster by not reloading the whole
tags list and just placing the new tag in the correct sorted position.
This could be made even faster with tag selector optimizations.
- Allow the Add button to focus when switching to the Tags pane (and the
same for the Related pane, for good measure)
Initialize the note editor with the default directionality based on the current locale, and add a single button for the opposite direction that functions as a toggle. This avoids needing two buttons.
We should also add locales to TinyMCE, but we can do that separately.
Closes#157
While the attachment icon helps with on-demand download, a count is
probably more useful for notes, and between tag colors and the two
dot columns things were getting a little Dance Dance Revolution.
- New tag colors support, with the ability to assign colors to up to 6
tags per library. Tags with colors assigned will show up at the top of
the tag selector and can be added to (and removed from) selected items
by pressing the 1-6 keys on the keyboard. The tags will show up as
color swatches before an item's title in the items list.
- Synced settings, with Notifier triggers when they change and
accessible via the API (currently restricted on the server to
'tagColors', but available for other things upon request)
- Silent DB upgrades for backwards-compatible changes. We'll do
something fancier with async DB queries in 4.0, but this will work for
changes that can be made without breaking compatibility with older
clients, like the creation of new tables. The 'userdata' value is
capped at 76, while further increments go to 'userdata2'.
TODO:
- Try to avoid jitter when redrawing swatches
- Optimize tag color images for retina displays
- Redo attachment dots in flat style?
- Clear all colors from an item with 0 (as in Thunderbird), but I don't
think we can do this without undo
- If attachment exists at same relative path in new base directory,
leave it alone so that it continues to work.
- If attachment doesn't exist in new base directory, revert it to an
absolute path.
- If new base directory is an ancestor or descendant of the previous
base directory, adjust relative paths below the new directory so that
they keep working.
- More dialog changes
- Select current base directory in file picker when changing directory
- Always use .persistentDescriptor instead of initWithPath(), though it
probably doesn't matter, and wrap in try/catch in case the old setting
is broken in some way.
- New function Zotero.File.directoryContains(dir, file), since
nsIFile.contains() isn't recursive
- Don't use a private Zotero.Item property from outside to force path changes.
- Changed placeholder to just "attachments:" for consistency with "storage:"
- Reworked dialog text
- Use a fancier (and undocumented) filefield XUL element for path
- A few small code tweaks
Translator updates and broken translator reporting both make automatic
requests to zotero.org, but the version pref is just adding a header
with the Zotero version on existing requests.
With any storage service backed by S3 or another eventually consistent
storage service, there will be a short delay between when files
are uploaded and when they're available, so show a more helpful message
and allow the verification to pass. (Any IIS servers configured not to
serve extensionless files will also fail, but that's probably much
rarer at this point.)
We should also just retry the request on a 404, but that will have to
happen on master.
Addresses #115
beginUpdateBatch() doesn't suppress select events, so various batch
operations were triggering lots of extra selects.
This hopefully fixes the long hang some people were seeing when making
changes with an open quick search (which I was only able to reproduce in
Standalone).
- Some item changes were putting data in the wrong form into extraData,
which was keeping it from being passed through in notifications.
- For item modifications, set a 'changed' object, keyed by itemID, with
just the fields that changed as keys and their old values. For
deletes, keep the 'old' object for now, since sync relies on it.
- Remove item.serialize() for all item changes except deletions, which
should speed up writes (and which will leave extraData empty for some
changes).
- Currently only item fields, creators, related items ('related'), and
'parentItem' are added to 'changed'.
Closes#220
For at least one Windows user, a .docx file was being interpreted as
text/plain. Instead of relying entirely on the system, hard-code some
extensions we know. (More can be added.)
Also:
- Determine MIME type when opening files instead of using stored type,
since we might have gotten smarter
- Remove references to configOptions, displayOptions, and hiddenPrefs
from connector/translator.js. We can't rely on them to be set in
Zotero.Translator since https://repo.zotero.org/repo/metadata doesn't
provide them, but we shouldn't need them until we get the translator
code anyway.
- Don't serve configOptions, displayOptions, and hiddenPrefs from Zotero
Standalone server. There's no point in serving anything that
https://repo.zotero.org/repo/metadata doesn't.
- Alias the translator metadata loaded into the sandbox as
Zotero.Translate._translatorInfo. Use this to get configOptions and
hiddenPrefs.
- "v" browserSupport indicates that a translator can be run through
translation-server, not that translation-server is required.
This obviates the need for zotero/zotero-connectors#4.