Refactor drafting and authentication interactions
Make changes to allow multiple top-level drafts, drafting before authenticating, keeping drafts while performing page searches, and replying to search results. - Factor out the userAuthorize option passed to the Permissions plugin into a local function in controllers.coffee. - Only load the Permissions plugin when logged in so that the plugin options do not leak information about the last logged in user and unattributed drafts have no user or permissions field. - When switching to highlight mode, show the sidebar and flash an info message informing the user that they will need to log in before annotations are saved, but don't prohibit highlighting. - Simplify the logic in the guest for highlight mode by offloading work to the annotation controller. The "inject" property is no longer needed. The annotation controller saves drafts of highlights if they have no user and persists them to the server as soon as the user is set. - When logging in, the app controller simply loops through all the drafts are publishes 'beforeAnnotationUpdated' to give the Permissions plugin a chance to fire. - When initializing the Store plugin, don't perform any search at all when not logged in. This change makes "single player" mode work even before logging in. - Allow hiding the sidebar when editing. Simplify the guest code that no longer needs to track the sidebar state by listening for 'annotationEditorHide' and 'annotationEditorSubmit' and the corresponding sidebar code that fired these. They're nonsensical now because there isn't exactly one "editor". - Remove the concept of an 'ongoing edit' entirely, simplifying the sidebar code even further. Any number of edits are allowed and top level ones are not treated specially.
Showing
Please register or sign in to comment