Uses Goodread's list of author's books, filtering out the books that are already in the user's library.
Requires the Goodreads dependency and API information.
* Add buttons to show/hide results from Douban & Google
* Trigger search with "Enter" key
* Use Underscore.js template instead of build HTML strings in JavaScript
* Keep click event handler in JavaScript instead of using HTML's `onclick`
* Normalize Douban & Google results
* Update cover image & add cover URL to the form input
Since this is closer to the elements, we can be more sure that we won't have events fire when we don't want them to. For example, if we're viewing the page in a modal, we don't want the event handler living longer than the content itself.
I've been unable to reproduce the issue on macOS with Python 2.7/3.6 and Fedora with Python 2.7, but if it happens for others, then it's worth the change.
Requires the "goodread" module (added to optional-requirements.txt) and an API key
Retrieves Goodreads author information and displays their photo and "about" text
With them shown in a modal, you don't lose your place in the pagination. If the request comes via Ajax, the minimal layout is used. If via a normal request, the full layout is used. That lets you open the details in a new tab and have the full experience, but if you're clicking through the results of a search, you can view many without losing your place.
When using a device that is bothersome to log in on (e.g. a Kindle) you can use a magic link to log in via another device.
Configuration was added and is disabled by default.
Default view still shows the most recently added books, but adds ability to sort by newest/oldest books and books sorted alphabetically (ascending & descending).
I did not include translations for the next text, but they are split up for easy translating and are otherwise ready for translating.