- 09 Oct, 2015 1 commit
-
-
Robert Knight authored
* Implement design change to allow a user to change the privacy setting for an annotation even if the annotation cannot yet be published because no tags or text have been entered. * Disable the hover state for the main section of the button when it is disabled. T-125
-
- 08 Oct, 2015 4 commits
-
-
Nick Stenning authored
Replace %20 with space when displaying filenames etc
-
Sean Hammond authored
-
Nick Stenning authored
Remove special-handling of pre-groups annotations
-
Nick Stenning authored
T88 - Add ability to leave groups
-
- 07 Oct, 2015 5 commits
-
-
Robert Knight authored
Add a new cancel/leave icon next to private groups in the groups list and invoke groups.leave() when clicked. Leaving a group invokes the as-yet-unimplemented 'POST /groups/<id>/leave' endpoint on the server. T-88
-
Nick Stenning authored
Inline the H icon font
-
Robert Knight authored
Fix race for session data on startup
-
Robert Knight authored
The previous fix to use an absolute URL to the icon font did not work in the Chrome extension because the base path for assets was different. The proper solution here will involve refactoring the CSS build pipeline and possibly automatically inlining font URLs in the process. I did not just add a preprocessor to inline all URLs because that would also have affected fonts in katex.min.css and added significantly to the size of the CSS bundle. This commit reverts back to the previous solution of inlining just the icon font. See #2571
-
Nick Stenning authored
Several parts of the application require access to the session data fetched from the server when rendering. On first page load we don't have this data (something we can fix in the future by inlining the data with the viewer HTML) and this resulted in a race between the session data load triggered by `checkAuthentication` (in config/identity.js) and the query sent to the server by `WidgetController`, which needs to know the current focused group id. Fix this by ensuring that the first load of session data is complete before switching views -- achieved by adding an item to the list of dependencies passed to `$routeProvider`. This works, but results in multiple requests for session data in quick succession, because `checkAuthentication` runs while the view is loading. To resolve this problem, we add a straightforward TTL check to the `session.load()` method, and only make a new request if the data is more than 5m old. Session data will be overwritten as normal whenever session mutating methods (`session.login()`, `session.logout()`) etc. are called. Fixes #2590.
-
- 06 Oct, 2015 5 commits
-
-
Nick Stenning authored
Pulling the server-side template and rendering it with swig is bound to break if we change the way the form is rendered on the server-side (as I am in the process of doing). So, convert this from a sort-of-integrated test to a unit test.
-
Robert Knight authored
Extract the WebSocket client into its own module and add tests
-
Robert Knight authored
In preparation for adding additional push notification types, separate out the client into its own module and add tests. T-105
-
Nick Stenning authored
Do not show vendored PDF.js in language stats
-
Nick Stenning authored
Group landing pages redesign
-
- 05 Oct, 2015 1 commit
-
-
Robert Knight authored
* Implement new look for the Create, Join and Share groups pages. The forms are functional without JS but contain a small amount of JS logic for enhancements such as selecting the content of the share pane. * Merge the 'Login to join' and 'Join' pages into a single form. The only difference between the two is that when the user is not signed in, the button label changes from 'Join <Group Name>' to 'Sign in to join <Group Name>' which redirects to the login page. * Create a new site.scss file which is intended to contain only styling for the website and a site-bundle.js bundle which contains JS code used only for the site. * Extract out the button styles used by <dropdown-menu-btn> into a separate .scss file for re-use * Add additional colors used by the new group forms to variables.scss. To avoid the problems with naming that arise when trying to insert additional colors into a list with names like 'light', 'lighter' etc. I'm starting to use http://chir.ag/projects/name-that-color for memorable names. * Start to use a '$color-' prefix for colors, in preparation for extracting colors into their own file. Card 93
-
- 02 Oct, 2015 14 commits
-
-
Sean Hammond authored
Re-implement filtering of annotations based on the current selection
-
Robert Knight authored
44edb50b18f5cd1a78aae32384551c74e6c19304 removed filtering of annotations when there was a selection alongside other changes. This re-introduces the check to see whether there is a selection and if so whether an annotation is in the selected set when determining whether to show a thread. Fixes #2553
-
Robert Knight authored
Implement focus on a group
-
Sean Hammond authored
Fix icon fonts in production builds
-
Sean Hammond authored
-
Sean Hammond authored
-
Sean Hammond authored
The stream page was broken - showing only annotations from the group that was focused the last time the user was using the sidebar. Fix it to show annotations from all groups.
-
Nick Stenning authored
When switching between groups (and reloading the angular view more generally) drafts are persisted. But we don't want to display drafts for groups other than the one currently focused, because otherwise we'll end up in a position where we can see annotations published to another group. This commit adds an additional condition to `ThreadController#shouldShow`: if the thread root annotation has a group set, and that group doesn't match the focused group id, then the thread will be hidden.
-
Sean Hammond authored
Always focus the Public / __world__ group if the groups feature is toggled off. When the groups feature was off a group other than Public might have been retrieved from the browser's localStorage (this could only happen if the groups feature had previously been on for the user) and the wrong annotations would be shown in the sidebar.
-
Sean Hammond authored
Replace `isSidebar`, `isEmbedded`, `annotation-embedded`, `annotationEmbedded` and `embedded` with a single `isSidebar` variable. - Rename `isEmbedded` in AppController to `isSidebar`. - Rename `embedded` in AnnotationController to `isSidebar`, it just passes the value of `AppController`'s `isSidebar` into `annotation.html`. - Rename the `annotation-embedded`/`annotationEmbedded` variable that is used to pass `isSidebar` (was `isEmbedded`) into `AnnotationController`, rename it to `is-sidebar` / `isSidebar`. - Delete the duplicate `isSidebar` variable from `WidgetController`'s scope, `WidgetController`'s templates can simply access `AppController`'s `isSidebar` from the scope. Note that there's another variable, `isStream`, that's actually true when we're either in the sidebar or on the stream page, but not when we're on individual annotation pages. This is used to show/hide the "Sorted by newest, oldest, location" menu which appears in the sidebar or stream but not on individual annotation pages (the "location" option in this menu only appears when in the sidebar not on the stream). This commit leaves the `isStream` variable alone. So the `isSidebar` variable is now used to show/hide the following elements: - The share dialog (share this page on twitter etc) is shown in the top bar, only when in the sidebar (and not on the `/stream` page or on individual annotation pages). - The group list dropdown menu, shown in the top bar only when in the sidebar. - The "location" entry in the sort menu (sorted by newest, oldest, location) shown only when in the sidebar. - The "citation" on annotations that says which page was annotated (the 'on "Example Document" (example.com)' in the annotation's title), is shown only when _not_ in the sidebar.
-
Sean Hammond authored
-
Nick Stenning authored
When a user clicks on a group name in the "scope selector" dropdown menu, we want to filter the visible annotations by group. This commit implements a rather inefficient but functional approach to this, simply reloading the angular view. In addition, we make sure that the initial annotation load includes a filter on the currently-focused group, and we discard non-focused-group annotations coming in over the websocket.
-
Sean Hammond authored
Avoid String.prototype.startsWith() for compatibility Safari and IE
-
Robert Knight authored
Links to source document URIs were broken under Safari <= 8 and other browsers as well due to reliance on the String.prototype.startsWith() API This issue went unnoticed in Karma/PhantomJS tests because Karma was primed with the complete set of polyfills from the js-polyfills library, including many (all?) ES6 polyfills. This same set of polyfills was_not_ used in the browser build however. This commit fixes the original issue by using 'indexOf()' instead of 'startsWith()' and reduces the likelihood of such problems going unnoticed during testing by using a much more minimal set of polyfills under PhantomJS. The alternative approach would be to go in the opposite direction and polyfill any ES6 APIs in the browser. However, we need to be careful about code bloat, so the approach taken here is the more conservative option. Fixes #2568
-
- 01 Oct, 2015 6 commits
-
-
Robert Knight authored
Show filenames of local documents with titles
-
Robert Knight authored
As described in GH #2571, URL rebasing is broken in the CSS asset pipeline, so relative URLs in CSS files under styles/vendor are incorrect. Previously icomoon.css worked because one of the font variants (TTF) was inlined as a data URL. This broken in the previous update which had only the relative .woff URL. This commit patches the issue by using an absolute URL in the icomoon.css file. It will be fixed properly in the CSS build as part of moving that out of the Python web app. See #2571
-
Sean Hammond authored
When the annotated document is a local (file://) document and it has a title, then show the filename in place of the domain on the annotation card. For example: seanh on "Document Title" (filename.pdf) In cases where the document has no title then the filename would already have been used in place of "Document Title" so don't repeat it in (...)'s. For remote documents the domain name is shown in (...)'s instead and the document title is hyperlinked so the people can see the full URL by hovering over the link.
-
Sean Hammond authored
Consolidate thread show/hide logic into ThreadController
-
Nick Stenning authored
This template conditional is notorious for accumulating extra terms, so this commit rolls it into ThreadController where it can be more easily tested.
-
Nick Stenning authored
T89 combined scope save btn
-
- 30 Sep, 2015 4 commits
-
-
Robert Knight authored
When changing permissions via the dropdown menu, the changed permissions were applied to the _domain model_ representing the saved annotation instead of the _view model_ representing the current annotation being edited. The change to the domain model triggered a reset of the view model via AnnotationController.render(), losing any unsaved edits. This commit makes AnnotationController.setPrivacy() apply permissions changes to the view model in the same way as other edits in the annotation view. These then only take effect when the 'Post to' button is clicked. Fixes #2567
-
Robert Knight authored
Instead of patching the upstream UI Bootstrap build, add a wrapper around it which stubs the $templateRequest service and wraps the Angular 1.2x implementation of $animate.(add|remove)Class with one which returns a Promise as UI Bootstrap expects. When the app is upgraded to Angular 1.3x+, the 'ui-bootstrap-custom' module can just be removed. Card 89
-
Sean Hammond authored
When transforming old-style comments, handle null targets
-
Sean Hammond authored
Make activation created_by/valid_until fields nullable
-