Handles items with an alternate field that maps to title (like cases)
and items for which the title is usually filled in by updateDisplayTitle()
(like letters).
This is a confusing, bad option, which was already disabled in groups,
and this removes it from personal libraries as well. People seem to be
using it mainly because they think annotations are locked into Zotero if
they don't, which is causing them to ask for this to be done
automatically on every edit, which we don't do because it would result
in constant file syncing and file conflicts [1].
We provide multiple export options for exporting PDFs with annotations,
and people can use those when sharing a file with people who don't use
Zotero. Otherwise, if storing annotations in the file is a priority,
they can use an external reader that's not designed to be tightly
integrated into Zotero.
(As a rare hack, it's of course also possible to export the PDF with
annotations, replace the original file, and import the annotations.)
[1] https://www.zotero.org/support/kb/annotations_in_database
91faa73b19 made getString return the key
instead of throwing on non-en-US locales, so we check if the getString
result is equal to the key even if it doesn't throw.
Fixes#2472.
Just show the key
We still merge strings before pushing betas, but this means it won't
crash for source builds, or if we forget. Not sure why we didn't do this
15 years ago.
`OS.Path.join()` on Windows throws if an integer is passed. Seems like
this would happen on another computer whenever an image annotation is
deleted in a group?
Follow-up to 734057ff9b
This was supposed to allow ZotFile to continue to work but 1) it
contained a bug and 2) another transaction messed things up for ZotFile
anyway, so we'll just fix this in jlegewie/zotfile#593.
The call to _window.addEventListener() might have been causing an error
when _window was null or undefined (no main Zotero window could be
found), which would prevent _windowLoading from being set to true and
the window from being added to the ProgressWindowSet, which might have
caused unpredictable behavior when positioning windows later on.
I could only briefly reproduce the issue, so this is just one idea. The
call to addEventListener on a potentially null _window was definitely a
bug but I don't know if it caused the crash.
This reverts commit 8763190328.
This is caused by the Scite plugin, and it's better to block startup
until this is fixed, since it's wrecking other fields too.
Now it:
1. Strips punctuation at the beginning, no matter what it is.
2. Strips non-dash punctuation in other positions.
3. Trims the result.
This should better prevent numerical ranges from being joined into a
single number that ends up incorrectly being sorted to the very bottom.
- Clarification between focused row and pivot:
- Pivot is only the row from which shift-selection pivots
- Focused row is the one with the border around it
- Fixed an issue where clicking the focused row didn't select it.
Closes#2402
- Allows to create a non-contiguous range-selection with ctrl/cmd+shift.
Closes#2403
Follow-up to 58f515058 with a better approach: if no full-text cache
file, just get text directly without indexing. In the one existing use
of `attachmentText`, attachment merging, this is better anyway, because
we might be deleting the file, so there's no point wasting time
inserting words into the database.
Indexing starts a transaction, which will cause `.attachmentText` to
hang if accessed within another transaction. If a caller wants to make
sure it has attachment text, it should index items first outside a
transaction.
Fixes#2405. This also fixes an issue where Cmd/Ctrl-Shift-N in a
collection like Duplicate Items would open the item type menu on top of
a blank white item pane (since the new item didn't get selected first).
We follow a different merge procedure for each attachment type:
- For PDF attachments, compare by MD5. If no match, get the top 50 words
in the attachment's text and hash those, then check again for a match.
Update references to item keys in notes and annotations.
- For web (snapshot / link) attachments, compare by title and URL.
Prefer a title + URL match but accept a title-only match.
- For other attachment types, keep all attachments from all items being
merged.
Also:
- Move most merge tests from Duplicates to Items#merge(). It just doesn't
make sense to worry about the UI in these.
- Adjust text
- Add "Learn More" button with link to sync documentation for
set-up-sync notification
- Show "Don't Show Again" for set-up-sync even on first display
- Don't perform any action when clicking unlinked text
- Use yellow/orange background instead of blue for notification bar
- Prevent text from wrapping out of the bar at narrow window widths
- Use local variable for observer id
There are two:
- Sync never set up (no username in DB) / set up, but unlinked
- Sync set up but auto-sync disabled and sync not completed in 30 days
Checks are trigged on item adds.
We've been seeing some behavior in `Schema::_migrateUserDataSchema()`
that should be impossible, with conditional blocks totally skipped. I
can't see how this is anything other than either a JS engine bug with
generators or some sort of bug in our version of Bluebird, but with any
luck it will go away by switching everything to async/await.
Since in many locales it would contain slashes and colons, both of which
would be stripped in the filename, leaving long strings of numbers in
the filename
And pass both `authorName` and `lastCreatedByUser` to the PDF reader.
The former can either come from `createdByUser` or be set directly on
the item (for group annotations dragged to personal libraries).
a1267bc fixed repeated re-appending of '@2x' by moving the modified URL
to a local variable, but it still set hasHiDPI to false permanently;
this meant that icons displayed repeatedly in the same window, like the
tab close button, would only use their 2x versions the first time they
were displayed (in the case of tabs, this is the library tab's invisible
close button, so *no* tabs got visible 2x buttons).
This commit moves the HiDPI check and URL modification out of the render
function and instead runs it a single time when i() is first called.
* Tweaked ProgressQueue to accept multiple listeners per event.
Removing listeners now requires specifying which one to remove.
* Decoupled progress queue table into new ProgressQueueTable component
Update `DataObject::isEditable()` to take an optional `op` argument to
test individual operations as opposed to general library editing.
Erasing objects now tests `erase`, and `Item::isEditable()` allows
`erase` for unowned group annotations while disallowing the default
`edit`.
It's still up to the reader to handle this appropriately in the UI and
not allow operations it shouldn't, but this enforces it in the data
layer.
- Show "Export Note…"/"Export Notes…" if only notes or attachments
selected
- Don't show export option if only attachments and no embedded notes
(was previously disabled, and still is if all notes or a mixture of
empty notes and attachments)
Closes#2265
There's also new code for showing a different icon for snapshots, files,
and DOI/URL links, like the web library and iOS app, but it's commented
out for now. The bitmap icons create too much visual noise with the
greater information density and hierarchical tree of the desktop app
(not to mention many more low-DPI displays). We can revisit after
switching to SVGs across the board.
Cmd/Ctrl-Shift-T is now used for reopening a closed tab
This is now a View menu option, so macOS users can assign an
app-specific shortcut key for it. For other platforms that can't do
that, Zutilo could add it, and it will be an option if we add general
key-binding configurability in a future version.
Closes#2281
So that this works for PDFs with external annotations that haven't yet
been processed. Going forward, if we add automatic/background scanning,
we can avoid showing this option if the file hasn't changed and there
are no Zotero annotations, which would probably be the majority of
attachments.
Addresses #2268, but better support for other en-* locales will require
other changes, including `timeStyle` support in `Intl.DateTimeFormat` in
a newer Firefox version, which will let us use a custom `DateTimeFormat`
for dates instead of relying on `toLocaleString()`.
Previously only individual objects from successful requests that
couldn't be processed for some reason would be added to the queue.
`Sync.APIClient.downloadObjects()` now returns clearer and more
consistent results. It now returns an array of promises for objects with
a `keys` array of requested keys and either a `json` array of returned
API JSON objects or an `error` Error, depending on whether the request
succeeded or failed. This makes it easier to detect remotely missing
objects and request failures.
This includes the `Zotero.RDF.getResourceURI()` fix in
zotero/translate@85b39a5be.
This position change here for `this._handleRelated()` for attachments
isn't necessary, since the attachment is already saved and already has
an id, but it's done for consistency with the call for notes (where the
note previously didn't yet have an id).
Institutional login process goes through multiple pages, the URL regexp
is tweaked to be more precise to ensure that no arbitrary URLs are
matched while polling for the final URL with auth code.