{"action":"closed","number":2577,"pull_request":{"url":"https://api.github.com/repos/hypothesis/h/pulls/2577","id":46660913,"html_url":"https://github.com/hypothesis/h/pull/2577","diff_url":"https://github.com/hypothesis/h/pull/2577.diff","patch_url":"https://github.com/hypothesis/h/pull/2577.patch","issue_url":"https://api.github.com/repos/hypothesis/h/issues/2577","number":2577,"state":"closed","locked":false,"title":"Group landing pages redesign","user":{"login":"robertknight","id":2458,"avatar_url":"https://avatars.githubusercontent.com/u/2458?v=3","gravatar_id":"","url":"https://api.github.com/users/robertknight","html_url":"https://github.com/robertknight","followers_url":"https://api.github.com/users/robertknight/followers","following_url":"https://api.github.com/users/robertknight/following{/other_user}","gists_url":"https://api.github.com/users/robertknight/gists{/gist_id}","starred_url":"https://api.github.com/users/robertknight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robertknight/subscriptions","organizations_url":"https://api.github.com/users/robertknight/orgs","repos_url":"https://api.github.com/users/robertknight/repos","events_url":"https://api.github.com/users/robertknight/events{/privacy}","received_events_url":"https://api.github.com/users/robertknight/received_events","type":"User","site_admin":false},"body":"This implements the new landing pages for groups. I still want to reorganize and tidy up the commits in this PR but I'm posting the PR now to review the design/flow and also to get feedback on the proposed mechanism to optimize the 'Join a Group' flow.\r\n\r\n * The 'Join Group X' and 'Login to Join Group X' pages have been merged into a single template,\r\n   as the designs are the same.\r\n * ~~To improve the common flow where a user who is not signed in and quite likely not signed up\r\n    receives a link, the 'Login to Join Group X' page subscribes to an event service. The event\r\n    service is currently a basic queue which polls a JSON array stored in localStorage\r\n    at a slow interval. When the user signs in, an event is added to this queue and the \"Login to Join\"\r\n    tab picks this up and automatically refreshes. I was thinking of using the same mechanism to\r\n    refresh the groups list in any open tabs after the user creates a new group.~~ _Edit: We decided\r\n    to approach this differently. Currently the user must refresh the 'Sign in to join' page to see\r\n    the join link_\r\n * The basic functionality of the groups pages does not require JS, but for nicities like auto-refreshing\r\n    the page, client-side validation of the group name form etc, there is a new bundle `site-bundle.js`\r\n    which contains site (rather than app)-specific code. Likewise there is also a new `site.scss`\r\n    file which contains styling that is only used for pages on the site, rather than pulling in all of the\r\n    app styling\r\n * To help achieve consistency in the design, I've extended the color palette in `variables.scss`. Since the grays\r\n     were previously named 'gray-light', 'gray-lighter' etc. trying to fit new names into this namespace\r\n     would have been awkward. To solve this, I used [this handy tool](http://chir.ag/projects/name-that-color) to come up with descriptive and grep-able names for the new colors from the design.\r\n\r\nThe flow now looks like this.\r\n\r\n**1. User clicks 'New Group'**\r\n\r\n![t93-1-create-group-initial](https://cloud.githubusercontent.com/assets/2458/10253094/6cd5d69a-6933-11e5-81d8-66e291281cf1.png)\r\n\r\n**2. User fills out the group name and possibly clicks the info link**\r\n\r\n![t93-2-create_group_filled](https://cloud.githubusercontent.com/assets/2458/10253103/79d631b4-6933-11e5-82bf-a79dc271058a.png)\r\n![t93-3-create-group-explained](https://cloud.githubusercontent.com/assets/2458/10253108/7fae03f0-6933-11e5-8316-77ba713e1fcb.png)\r\n\r\n**3. User clicks the 'Create Group' button and gets taken to the share page**\r\n\r\n![t93-4-share-group](https://cloud.githubusercontent.com/assets/2458/10253118/91bdce5e-6933-11e5-8a7c-3260922ab7d7.png)\r\n\r\n**4. A user who is not logged in receives and visits the link**\r\n\r\n![t93-5-join-group-not-logged-in](https://cloud.githubusercontent.com/assets/2458/10253141/a8b02558-6933-11e5-8c7a-911d4e46a9ae.png)\r\n\r\n**5. The 'Sign in' button opens the [login page](https://hypothes.is/login) in another tab. Once the user has signed in, (or created an account and then signed in), the original 'Join Group' tab will automatically refresh:**\r\n\r\n![t93-6-join-group-signed-in](https://cloud.githubusercontent.com/assets/2458/10253166/cd3b212a-6933-11e5-9459-11718dc0de3d.png)\r\n\r\n**6. Once the user clicks 'Join Group', they get taken to the share page (step 3 above)**\r\n\r\n\r\n\r\n\r\n\r\n\r\n","created_at":"2015-10-02T17:32:43Z","updated_at":"2015-10-06T11:23:42Z","closed_at":"2015-10-06T11:23:42Z","merged_at":"2015-10-06T11:23:42Z","merge_commit_sha":"935a5417db960a1cdd33260ae1e20570e06df776","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/hypothesis/h/pulls/2577/commits","review_comments_url":"https://api.github.com/repos/hypothesis/h/pulls/2577/comments","review_comment_url":"https://api.github.com/repos/hypothesis/h/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hypothesis/h/issues/2577/comments","statuses_url":"https://api.github.com/repos/hypothesis/h/statuses/1dd1383231dadb7dc271232b7f202314d62e01f9","head":{"label":"robertknight:t93-create_group_refresh","ref":"t93-create_group_refresh","sha":"1dd1383231dadb7dc271232b7f202314d62e01f9","user":{"login":"robertknight","id":2458,"avatar_url":"https://avatars.githubusercontent.com/u/2458?v=3","gravatar_id":"","url":"https://api.github.com/users/robertknight","html_url":"https://github.com/robertknight","followers_url":"https://api.github.com/users/robertknight/followers","following_url":"https://api.github.com/users/robertknight/following{/other_user}","gists_url":"https://api.github.com/users/robertknight/gists{/gist_id}","starred_url":"https://api.github.com/users/robertknight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robertknight/subscriptions","organizations_url":"https://api.github.com/users/robertknight/orgs","repos_url":"https://api.github.com/users/robertknight/repos","events_url":"https://api.github.com/users/robertknight/events{/privacy}","received_events_url":"https://api.github.com/users/robertknight/received_events","type":"User","site_admin":false},"repo":{"id":38578279,"name":"h","full_name":"robertknight/h","owner":{"login":"robertknight","id":2458,"avatar_url":"https://avatars.githubusercontent.com/u/2458?v=3","gravatar_id":"","url":"https://api.github.com/users/robertknight","html_url":"https://github.com/robertknight","followers_url":"https://api.github.com/users/robertknight/followers","following_url":"https://api.github.com/users/robertknight/following{/other_user}","gists_url":"https://api.github.com/users/robertknight/gists{/gist_id}","starred_url":"https://api.github.com/users/robertknight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robertknight/subscriptions","organizations_url":"https://api.github.com/users/robertknight/orgs","repos_url":"https://api.github.com/users/robertknight/repos","events_url":"https://api.github.com/users/robertknight/events{/privacy}","received_events_url":"https://api.github.com/users/robertknight/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/robertknight/h","description":"The Internet, peer reviewed.","fork":true,"url":"https://api.github.com/repos/robertknight/h","forks_url":"https://api.github.com/repos/robertknight/h/forks","keys_url":"https://api.github.com/repos/robertknight/h/keys{/key_id}","collaborators_url":"https://api.github.com/repos/robertknight/h/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/robertknight/h/teams","hooks_url":"https://api.github.com/repos/robertknight/h/hooks","issue_events_url":"https://api.github.com/repos/robertknight/h/issues/events{/number}","events_url":"https://api.github.com/repos/robertknight/h/events","assignees_url":"https://api.github.com/repos/robertknight/h/assignees{/user}","branches_url":"https://api.github.com/repos/robertknight/h/branches{/branch}","tags_url":"https://api.github.com/repos/robertknight/h/tags","blobs_url":"https://api.github.com/repos/robertknight/h/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/robertknight/h/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/robertknight/h/git/refs{/sha}","trees_url":"https://api.github.com/repos/robertknight/h/git/trees{/sha}","statuses_url":"https://api.github.com/repos/robertknight/h/statuses/{sha}","languages_url":"https://api.github.com/repos/robertknight/h/languages","stargazers_url":"https://api.github.com/repos/robertknight/h/stargazers","contributors_url":"https://api.github.com/repos/robertknight/h/contributors","subscribers_url":"https://api.github.com/repos/robertknight/h/subscribers","subscription_url":"https://api.github.com/repos/robertknight/h/subscription","commits_url":"https://api.github.com/repos/robertknight/h/commits{/sha}","git_commits_url":"https://api.github.com/repos/robertknight/h/git/commits{/sha}","comments_url":"https://api.github.com/repos/robertknight/h/comments{/number}","issue_comment_url":"https://api.github.com/repos/robertknight/h/issues/comments{/number}","contents_url":"https://api.github.com/repos/robertknight/h/contents/{+path}","compare_url":"https://api.github.com/repos/robertknight/h/compare/{base}...{head}","merges_url":"https://api.github.com/repos/robertknight/h/merges","archive_url":"https://api.github.com/repos/robertknight/h/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/robertknight/h/downloads","issues_url":"https://api.github.com/repos/robertknight/h/issues{/number}","pulls_url":"https://api.github.com/repos/robertknight/h/pulls{/number}","milestones_url":"https://api.github.com/repos/robertknight/h/milestones{/number}","notifications_url":"https://api.github.com/repos/robertknight/h/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/robertknight/h/labels{/name}","releases_url":"https://api.github.com/repos/robertknight/h/releases{/id}","created_at":"2015-07-05T17:52:44Z","updated_at":"2015-07-05T17:52:46Z","pushed_at":"2015-10-06T10:26:51Z","git_url":"git://github.com/robertknight/h.git","ssh_url":"git@github.com:robertknight/h.git","clone_url":"https://github.com/robertknight/h.git","svn_url":"https://github.com/robertknight/h","homepage":"https://hypothes.is/","size":18956,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hypothesis:master","ref":"master","sha":"56c311a7faecd12437e950fabaa2716b638b06c3","user":{"login":"hypothesis","id":1243215,"avatar_url":"https://avatars.githubusercontent.com/u/1243215?v=3","gravatar_id":"","url":"https://api.github.com/users/hypothesis","html_url":"https://github.com/hypothesis","followers_url":"https://api.github.com/users/hypothesis/followers","following_url":"https://api.github.com/users/hypothesis/following{/other_user}","gists_url":"https://api.github.com/users/hypothesis/gists{/gist_id}","starred_url":"https://api.github.com/users/hypothesis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hypothesis/subscriptions","organizations_url":"https://api.github.com/users/hypothesis/orgs","repos_url":"https://api.github.com/users/hypothesis/repos","events_url":"https://api.github.com/users/hypothesis/events{/privacy}","received_events_url":"https://api.github.com/users/hypothesis/received_events","type":"Organization","site_admin":false},"repo":{"id":3910945,"name":"h","full_name":"hypothesis/h","owner":{"login":"hypothesis","id":1243215,"avatar_url":"https://avatars.githubusercontent.com/u/1243215?v=3","gravatar_id":"","url":"https://api.github.com/users/hypothesis","html_url":"https://github.com/hypothesis","followers_url":"https://api.github.com/users/hypothesis/followers","following_url":"https://api.github.com/users/hypothesis/following{/other_user}","gists_url":"https://api.github.com/users/hypothesis/gists{/gist_id}","starred_url":"https://api.github.com/users/hypothesis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hypothesis/subscriptions","organizations_url":"https://api.github.com/users/hypothesis/orgs","repos_url":"https://api.github.com/users/hypothesis/repos","events_url":"https://api.github.com/users/hypothesis/events{/privacy}","received_events_url":"https://api.github.com/users/hypothesis/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hypothesis/h","description":"The Internet, peer reviewed.","fork":false,"url":"https://api.github.com/repos/hypothesis/h","forks_url":"https://api.github.com/repos/hypothesis/h/forks","keys_url":"https://api.github.com/repos/hypothesis/h/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hypothesis/h/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hypothesis/h/teams","hooks_url":"https://api.github.com/repos/hypothesis/h/hooks","issue_events_url":"https://api.github.com/repos/hypothesis/h/issues/events{/number}","events_url":"https://api.github.com/repos/hypothesis/h/events","assignees_url":"https://api.github.com/repos/hypothesis/h/assignees{/user}","branches_url":"https://api.github.com/repos/hypothesis/h/branches{/branch}","tags_url":"https://api.github.com/repos/hypothesis/h/tags","blobs_url":"https://api.github.com/repos/hypothesis/h/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hypothesis/h/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hypothesis/h/git/refs{/sha}","trees_url":"https://api.github.com/repos/hypothesis/h/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hypothesis/h/statuses/{sha}","languages_url":"https://api.github.com/repos/hypothesis/h/languages","stargazers_url":"https://api.github.com/repos/hypothesis/h/stargazers","contributors_url":"https://api.github.com/repos/hypothesis/h/contributors","subscribers_url":"https://api.github.com/repos/hypothesis/h/subscribers","subscription_url":"https://api.github.com/repos/hypothesis/h/subscription","commits_url":"https://api.github.com/repos/hypothesis/h/commits{/sha}","git_commits_url":"https://api.github.com/repos/hypothesis/h/git/commits{/sha}","comments_url":"https://api.github.com/repos/hypothesis/h/comments{/number}","issue_comment_url":"https://api.github.com/repos/hypothesis/h/issues/comments{/number}","contents_url":"https://api.github.com/repos/hypothesis/h/contents/{+path}","compare_url":"https://api.github.com/repos/hypothesis/h/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hypothesis/h/merges","archive_url":"https://api.github.com/repos/hypothesis/h/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hypothesis/h/downloads","issues_url":"https://api.github.com/repos/hypothesis/h/issues{/number}","pulls_url":"https://api.github.com/repos/hypothesis/h/pulls{/number}","milestones_url":"https://api.github.com/repos/hypothesis/h/milestones{/number}","notifications_url":"https://api.github.com/repos/hypothesis/h/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hypothesis/h/labels{/name}","releases_url":"https://api.github.com/repos/hypothesis/h/releases{/id}","created_at":"2012-04-02T19:56:59Z","updated_at":"2015-10-05T07:38:38Z","pushed_at":"2015-10-06T11:23:42Z","git_url":"git://github.com/hypothesis/h.git","ssh_url":"git@github.com:hypothesis/h.git","clone_url":"https://github.com/hypothesis/h.git","svn_url":"https://github.com/hypothesis/h","homepage":"https://hypothes.is/","size":46917,"stargazers_count":491,"watchers_count":491,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":125,"mirror_url":null,"open_issues_count":137,"forks":125,"open_issues":137,"watchers":491,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hypothesis/h/pulls/2577"},"html":{"href":"https://github.com/hypothesis/h/pull/2577"},"issue":{"href":"https://api.github.com/repos/hypothesis/h/issues/2577"},"comments":{"href":"https://api.github.com/repos/hypothesis/h/issues/2577/comments"},"review_comments":{"href":"https://api.github.com/repos/hypothesis/h/pulls/2577/comments"},"review_comment":{"href":"https://api.github.com/repos/hypothesis/h/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hypothesis/h/pulls/2577/commits"},"statuses":{"href":"https://api.github.com/repos/hypothesis/h/statuses/1dd1383231dadb7dc271232b7f202314d62e01f9"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"nickstenning","id":3602,"avatar_url":"https://avatars.githubusercontent.com/u/3602?v=3","gravatar_id":"","url":"https://api.github.com/users/nickstenning","html_url":"https://github.com/nickstenning","followers_url":"https://api.github.com/users/nickstenning/followers","following_url":"https://api.github.com/users/nickstenning/following{/other_user}","gists_url":"https://api.github.com/users/nickstenning/gists{/gist_id}","starred_url":"https://api.github.com/users/nickstenning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nickstenning/subscriptions","organizations_url":"https://api.github.com/users/nickstenning/orgs","repos_url":"https://api.github.com/users/nickstenning/repos","events_url":"https://api.github.com/users/nickstenning/events{/privacy}","received_events_url":"https://api.github.com/users/nickstenning/received_events","type":"User","site_admin":false},"comments":4,"review_comments":3,"commits":2,"additions":525,"deletions":117,"changed_files":27}}