1. 07 Oct, 2015 5 commits
    • Robert Knight's avatar
      Implement the UI for leaving a group · 15b2422a
      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
      15b2422a
    • Nick Stenning's avatar
      Merge pull request #2596 from robertknight/icon_font_fix_2 · 053ec08a
      Nick Stenning authored
      Inline the H icon font
      053ec08a
    • Robert Knight's avatar
      Merge pull request #2594 from hypothesis/fix-groups-race · f0312ef8
      Robert Knight authored
      Fix race for session data on startup
      f0312ef8
    • Robert Knight's avatar
      Inline the H icon font · c3960b8e
      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
      c3960b8e
    • Nick Stenning's avatar
      Fix race for session data on startup · 804def7d
      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.
      804def7d
  2. 06 Oct, 2015 5 commits
  3. 05 Oct, 2015 1 commit
    • Robert Knight's avatar
      Implement new designs for pages for creating, joining and sharing groups · 7d14d217
      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
      7d14d217
  4. 02 Oct, 2015 14 commits
    • Sean Hammond's avatar
      Merge pull request #2576 from robertknight/gh2553-fix_selection_filter · b2200aea
      Sean Hammond authored
      Re-implement filtering of annotations based on the current selection
      b2200aea
    • Robert Knight's avatar
      Re-implement filtering of annotations based on the current selection · e7a14441
      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
      e7a14441
    • Robert Knight's avatar
      Merge pull request #2566 from hypothesis/focus-on-a-group · 2aa5b3f1
      Robert Knight authored
      Implement focus on a group
      2aa5b3f1
    • Sean Hammond's avatar
      Merge pull request #2572 from robertknight/icon_font_fix · 7cc319cc
      Sean Hammond authored
      Fix icon fonts in production builds
      7cc319cc
    • Sean Hammond's avatar
      ddd9cdb0
    • Sean Hammond's avatar
      Add test for route reload on group change · 2200835d
      Sean Hammond authored
      2200835d
    • Sean Hammond's avatar
      Show all annotations on the stream page · 89f2b668
      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.
      89f2b668
    • Nick Stenning's avatar
      Hide threads that belong to a different group · 381371df
      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.
      381371df
    • Sean Hammond's avatar
      Always focus public group if groups feature off · 4749864a
      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.
      4749864a
    • Sean Hammond's avatar
      Rename several variables to isSidebar · 872cff11
      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.
      872cff11
    • Sean Hammond's avatar
      Focus the public group on logout · 389113ad
      Sean Hammond authored
      389113ad
    • Nick Stenning's avatar
      Focus on a group · 4aa56fdd
      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.
      4aa56fdd
    • Sean Hammond's avatar
      Merge pull request #2574 from robertknight/gh2568-safari_missing_urls · 7f1631f6
      Sean Hammond authored
      Avoid String.prototype.startsWith() for compatibility Safari and IE
      7f1631f6
    • Robert Knight's avatar
      Avoid String.prototype.startsWith() for compatibility Safari and IE · 2ec367eb
      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
      2ec367eb
  5. 01 Oct, 2015 6 commits
  6. 30 Sep, 2015 7 commits
  7. 29 Sep, 2015 2 commits
    • Robert Knight's avatar
      Fix an issue where clicking the dropdown arrow in Chrome saved changes · acd8374e
      Robert Knight authored
      In Chrome, clicks on elements inside a disabled <button>
      will not invoke the <button>'s "click" event listeners
      but they will propagate through the button and invoke parent
      element's click handlers. In Firefox however, the click
      event is not propagated.
      
      The fix here is to install the click handler for the main
      part of a dropdown button on the <button> itself, rather than
      the container <div> which holds the main button and
      the dropdown arrow.
      
      Card 89
      acd8374e
    • Robert Knight's avatar
      Correct spacing between 'Post' and 'Cancel' buttons · e3af076b
      Robert Knight authored
      The spacing was lost when the cancel button was moved
      into the <publish-annotation-btn> directive.
      
      Card 89
      e3af076b