Adds a 'foreground' flag to Zotero.HTTP.promise() options
Also, can now pass successCodes: false to always resolve the promise and never
throw UnexpectedStatusException
It's not clear when this became an issue, but our usual background HTTP
requests (set that way to avoid triggering auth prompts when saving from
websites) weren't triggering proxy authentication dialogs, which was breaking
most network activity in Standalone. To fix this, we now make a foreground
request at startup to a file on S3 and resolve the Zotero.proxyAuthComplete
promise when we're done. Any network requests that want to wait for proxy
authentication can wait for that promise.
This behavior can be disabled via the triggerProxyAuthentication hidden pref.
It's possible for filesEditable in the DB to be set to 1 even if
editable is 0. We generally check editable first anyway, but let's be
safe.
Also make editable/filesEditable return booleans instead of numbers
Two changes needed to cope with shift-enter being pressed both
with and without changes to current creator row
Signed-off-by: J Richard Snape <rsnape@dmu.ac.uk>
Dual boot and VM setups worked, but only absolute paths were synced,
because syncing uses attachmentPath, which was resolving relative paths
itself (#51). attachmentPath now returns what's in the database (as it
did originally), and getFile() does the resolving instead.
This means that anything relying on attachmentPath directly needs to be
aware that it might get a placeholder-prefixed relative path.
Otherwise, the bottom of the document preferences window can be
cut off the first time it is displayed. A styleChanged event is still
fired after setting the selection.
This fixes the problem for attached files. I assume this is still a
problem for importSnapshotFromFile(), which uses copyTo() on a
directory. For that we'd need a copyDirectoryToUnique() function that
shortened the names of all files in the directory.
cloudme.com and maybe box.com appear to have stopped sending a
Last-Modified header for files, causing Zotero to skip the file download
step. Instead of relying on that, we now save a random id to the
lastsync file and just use that as an ETag.
Also migrate lastsync to lastsync.txt, which might be supported better
on some other broken WebDAV servers.
Corrects a tiny bug where pressing minus button to remove an unsaved creator row creates incorrect behaviour in the plus button in preceding row. Done in preparation for a fix I have locally for issue #251. Please advise if I have your preferred workflow wrong.
Corrects a tiny bug where pressing minus button to remove an unsaved creator row creates incorrect behaviour in the plus button in preceding row. Done in preparation for a fix I have locally for issue #251. Please advise if I have your preferred workflow wrong.
- Catch additional errors on Windows (too-long paths, maybe aliases)
- Fix "Show File" button (which didn't show in some cases, at least on
Windows)
- Clarify error message
And probably other locales.
(Also, there must be a better way to deal with bottom elements getting
cut off than these extra <separator/> elements that result in extra
space when they're not needed.)
Deleted files are purged at the end of every sync, without any delay.
(If there's a conflict, it will be resolved before the file is deleted.)
Orphaned files are deleted once every 10 days, since it's a potentially
expensive operation for the server.
When the user follows a link from a proxy-by-port EZProxy to another
proxy-by-port EZProxy, we make an additional request to the target site
with no cookies. This yields a redirect to the EZProxy login page. We
use the query parameters to determine the true domain of the site.
Previously, we allowed the redirect to continue, and used the same code we
use to detect EZProxy logins to map the proxied domain to the true domain.
This caused duplicate requests to providers and apparently infinite loops.
We now read the query parameter directly from the redirect to the EZProxy
login page and then cancel the request so that the redirect doesn't get
followed.
The changeset also improves logging of proxy-related information.
See https://forums.zotero.org/discussion/28505/ for further discussion.
When the user follows a link from a proxy-by-port EZProxy to another
proxy-by-port EZProxy, we make an additional request to the target site
with no cookies. This yields a redirect to the EZProxy login page. We
use the query parameters to determine the true domain of the site.
Previously, we allowed the redirect to continue, and used the same code we
use to detect EZProxy logins to map the proxied domain to the true domain.
This caused duplicate requests to providers and apparently infinite loops.
We now read the query parameter directly from the redirect to the EZProxy
login page and then cancel the request so that the redirect doesn't get
followed.
The changeset also improves logging of proxy-related information.
See https://forums.zotero.org/discussion/28505/ for further discussion.
The hidden column caused collection names to be cut off unnecessarily,
and the extra icons were overly distracting. For now, just show the
first error that comes in in the main sync error panel, along with the
library name.
Prefpanes are now in separate overlays, which fixes the age-old resizing
bug when switching between panes (at least on OS X) that varied
depending on the initial pane. Code has also been moved into
pane-specific files and objects, with strict mode enabled. When calling
code from another pane (e.g., for a UI update in another pane), first
check whether the Zotero_Preferences.[Pane] object exists--if it doesn't
then nothing needs to be called.
This change breaks the word integration plugin pref overlays, which
hopefully can be rewritten to work with either overlay format.
There is a good chance that this breaks some other things in the
preferences too.
Fixes#243
When sorting by Title, empty titles get sorted to the top of the items
list for visibility, but when sorting by another column and using the
title as a secondary/tertiary sort, empty titles should get sorted last
so that new empty items go to the end of the list rather than the
middle.
This is a little weird, and the alternative would be to just always sort
empty titles last even when sorting by Title, but this preserves the
current behavior for Title sorting. (Before f0f6772b01 titles weren't
used for secondary sorting at all, so there's no precedent for
title-sorting behavior when sorting by another column.)
Addresses #275
This is super annoying, but I can't seem to stop the separator row from
being selected in seltype="single" mode (where isSelectable() isn't
called). Until we have a better solution, at least clear the items list
and avoid an error.
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)