{"action":"created","comment":{"url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/comments/40748066","id":40748066,"diff_hunk":"@@ -78,48 +77,62 @@ export default class AddonUpload extends React.Component {\n     const fileSize = toFixedDown(this.state.fileSize / divisor, 2);\n \n     return (\n-      <div>\n+      <div className=\"addon-upload\">\n         <form className=\"form-inline\" onSubmit={this.handleSubmit}>\n-          <label htmlFor=\"submission-addon--zip\">Add-on ZIP File:</label>\n-\n-          <FileReaderInput as=\"buffer\" accept=\".zip\"\n-                           id=\"submission-addon--zip\"\n-                           onChange={this.handleChange}>\n-            <div className=\"form-inline--file-input\"\n-                 data-file-input--has-data={!!this.state.fileName}>\n-              {this.state.fileName ?\n-               `${this.state.fileName} (${fileSize}${unit})` :\n-               'Select a File...'}\n-            </div>\n-         </FileReaderInput>\n-\n-          <button type=\"submit\" disabled={this.props.isSubmitting}>\n-            {this.props.isSubmitting ? 'Processing...' : 'Submit'}\n-          </button>\n-\n-          {this.state.isShowingMessageBox &&\n-            <textarea\n-              onChange={this.handleMessageChange}\n-              placeholder=\"Attach submission notes for reviewers...\"\n-              rows=\"10\" value={this.state.message}/>\n-          }\n-        </form>\n \n-        {this.props.uploadLoaded &&\n-         this.props.uploadLoaded < this.props.uploadTotal &&\n-          <div>\n-            <h3>Uploading your Firefox OS Add-on</h3>\n-            <ProgressBar loadedSize={this.props.uploadLoaded / divisor}\n-                         totalSize={this.props.uploadTotal / divisor}\n-                         unit={unit}/>\n+          <div className={classnames({\n+            'field': true,\n+            'field--error': !!this.props.validationErrorMessage\n+          })}>\n+            <label htmlFor=\"submission-addon--zip\">Add-on:</label>\n+            <FileReaderInput as=\"buffer\" accept=\".zip\"\n+                             id=\"submission-addon--zip\"\n+                             onChange={this.handleChange}>\n+              <div className=\"form-inline--file-input\"\n+                   data-file-input--has-data={!!this.state.fileName}>\n+                {this.state.fileName ?\n+                 `${this.state.fileName} (${fileSize}${unit})` :\n+                 'Select file...'}\n+              </div>\n+            </FileReaderInput>\n+            <p className=\"form-msg form-msg--help\">\n+              Must be packaged as a .zip file. Learn more about <a\n+              href=\"https://developer.mozilla.org/docs/Mozilla/Firefox_OS/Add-ons#The_anatomy_of_a_Firefox_OS_add-on\">\n+                packaging Firefox OS add-ons\n+              </a>.\n+            </p>\n+            {this.props.validationErrorMessage &&\n+              <p className=\"form-msg form-msg--error\">\n+                {this.props.validationErrorMessage}\n+              </p>\n+            }\n+          </div>\n+\n+          <div className=\"field\">\n+            <label htmlFor=\"note\">Reviewer note:</label>\n+            <textarea onChange={this.handleMessageChange} id=\"note\">\n+              {this.state.message}\n+            </textarea>\n+            <p className=\"form-msg form-msg--help\">\n+              Include any information that might be helpful for add-on\n+              reviewers while they look at your add-on.\n+            </p>\n           </div>\n-        }\n \n-        {this.props.validationErrorMessage &&\n-          <p className=\"form-msg--error\">\n-            {this.props.validationErrorMessage}\n-          </p>\n-        }\n+          <div className=\"field field--buttons\">\n+            <button type=\"submit\"\n+                    disabled={!this.state.fileName || this.props.isSubmitting}>\n+              {this.props.isSubmitting ? 'Uploading...' : 'Submit'}\n+            </button>\n+            {this.props.uploadLoaded &&\n+             this.props.uploadLoaded < this.props.uploadTotal &&\n+                <ProgressBar loadedSize={this.props.uploadLoaded / divisor}\n+                             totalSize={this.props.uploadTotal / divisor}\n+                             unit={unit}/>\n+            }\n+          </div>\n+        </form>\n+","path":"src/media/js/addon/components/upload.js","position":121,"original_position":121,"commit_id":"7fe0d67a62df018b43f02a7a89f30a0cc42a53c3","original_commit_id":"7fe0d67a62df018b43f02a7a89f30a0cc42a53c3","user":{"login":"ngokevin","id":674727,"avatar_url":"https://avatars.githubusercontent.com/u/674727?v=3","gravatar_id":"","url":"https://api.github.com/users/ngokevin","html_url":"https://github.com/ngokevin","followers_url":"https://api.github.com/users/ngokevin/followers","following_url":"https://api.github.com/users/ngokevin/following{/other_user}","gists_url":"https://api.github.com/users/ngokevin/gists{/gist_id}","starred_url":"https://api.github.com/users/ngokevin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ngokevin/subscriptions","organizations_url":"https://api.github.com/users/ngokevin/orgs","repos_url":"https://api.github.com/users/ngokevin/repos","events_url":"https://api.github.com/users/ngokevin/events{/privacy}","received_events_url":"https://api.github.com/users/ngokevin/received_events","type":"User","site_admin":false},"body":"extra line here","created_at":"2015-09-30T00:34:41Z","updated_at":"2015-09-30T00:34:41Z","html_url":"https://github.com/mozilla/marketplace-content-tools/pull/41#discussion_r40748066","pull_request_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41","_links":{"self":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/comments/40748066"},"html":{"href":"https://github.com/mozilla/marketplace-content-tools/pull/41#discussion_r40748066"},"pull_request":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41"}}},"pull_request":{"url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41","id":46349197,"html_url":"https://github.com/mozilla/marketplace-content-tools/pull/41","diff_url":"https://github.com/mozilla/marketplace-content-tools/pull/41.diff","patch_url":"https://github.com/mozilla/marketplace-content-tools/pull/41.patch","issue_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/41","number":41,"state":"open","locked":false,"title":"Clean up the addon submission form.","user":{"login":"chuckharmston","id":23885,"avatar_url":"https://avatars.githubusercontent.com/u/23885?v=3","gravatar_id":"","url":"https://api.github.com/users/chuckharmston","html_url":"https://github.com/chuckharmston","followers_url":"https://api.github.com/users/chuckharmston/followers","following_url":"https://api.github.com/users/chuckharmston/following{/other_user}","gists_url":"https://api.github.com/users/chuckharmston/gists{/gist_id}","starred_url":"https://api.github.com/users/chuckharmston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuckharmston/subscriptions","organizations_url":"https://api.github.com/users/chuckharmston/orgs","repos_url":"https://api.github.com/users/chuckharmston/repos","events_url":"https://api.github.com/users/chuckharmston/events{/privacy}","received_events_url":"https://api.github.com/users/chuckharmston/received_events","type":"User","site_admin":false},"body":"r? @ngokevin \r\n\r\nThis commit probably needs some cleanup itself, but I'm tired and want to get this out there tonight.\r\n\r\nVideo of it in action: http://chuck.mn/2N3K0j3D2P1O\r\n\r\n<img width=\"1192\" alt=\"screen shot 2015-09-29 at 6 25 56 pm\" src=\"https://cloud.githubusercontent.com/assets/23885/10181601/8f036c36-66d7-11e5-991a-b2387a84b012.png\">\r\n","created_at":"2015-09-30T00:26:24Z","updated_at":"2015-09-30T00:34:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"51f2081da45e3eda49f6a7205bb04f6a47f169bd","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41/commits","review_comments_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41/comments","review_comment_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/41/comments","statuses_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/statuses/7fe0d67a62df018b43f02a7a89f30a0cc42a53c3","head":{"label":"chuckharmston:submit-ux","ref":"submit-ux","sha":"7fe0d67a62df018b43f02a7a89f30a0cc42a53c3","user":{"login":"chuckharmston","id":23885,"avatar_url":"https://avatars.githubusercontent.com/u/23885?v=3","gravatar_id":"","url":"https://api.github.com/users/chuckharmston","html_url":"https://github.com/chuckharmston","followers_url":"https://api.github.com/users/chuckharmston/followers","following_url":"https://api.github.com/users/chuckharmston/following{/other_user}","gists_url":"https://api.github.com/users/chuckharmston/gists{/gist_id}","starred_url":"https://api.github.com/users/chuckharmston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuckharmston/subscriptions","organizations_url":"https://api.github.com/users/chuckharmston/orgs","repos_url":"https://api.github.com/users/chuckharmston/repos","events_url":"https://api.github.com/users/chuckharmston/events{/privacy}","received_events_url":"https://api.github.com/users/chuckharmston/received_events","type":"User","site_admin":false},"repo":{"id":41451773,"name":"marketplace-content-tools","full_name":"chuckharmston/marketplace-content-tools","owner":{"login":"chuckharmston","id":23885,"avatar_url":"https://avatars.githubusercontent.com/u/23885?v=3","gravatar_id":"","url":"https://api.github.com/users/chuckharmston","html_url":"https://github.com/chuckharmston","followers_url":"https://api.github.com/users/chuckharmston/followers","following_url":"https://api.github.com/users/chuckharmston/following{/other_user}","gists_url":"https://api.github.com/users/chuckharmston/gists{/gist_id}","starred_url":"https://api.github.com/users/chuckharmston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuckharmston/subscriptions","organizations_url":"https://api.github.com/users/chuckharmston/orgs","repos_url":"https://api.github.com/users/chuckharmston/repos","events_url":"https://api.github.com/users/chuckharmston/events{/privacy}","received_events_url":"https://api.github.com/users/chuckharmston/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chuckharmston/marketplace-content-tools","description":"Tools for submitting content to the Firefox Marketplace.","fork":true,"url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools","forks_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/forks","keys_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/teams","hooks_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/hooks","issue_events_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/issues/events{/number}","events_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/events","assignees_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/assignees{/user}","branches_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/branches{/branch}","tags_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/tags","blobs_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/languages","stargazers_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/stargazers","contributors_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/contributors","subscribers_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/subscribers","subscription_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/subscription","commits_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/contents/{+path}","compare_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/merges","archive_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/downloads","issues_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/issues{/number}","pulls_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/labels{/name}","releases_url":"https://api.github.com/repos/chuckharmston/marketplace-content-tools/releases{/id}","created_at":"2015-08-26T21:54:14Z","updated_at":"2015-08-26T21:54:14Z","pushed_at":"2015-09-30T00:24:47Z","git_url":"git://github.com/chuckharmston/marketplace-content-tools.git","ssh_url":"git@github.com:chuckharmston/marketplace-content-tools.git","clone_url":"https://github.com/chuckharmston/marketplace-content-tools.git","svn_url":"https://github.com/chuckharmston/marketplace-content-tools","homepage":null,"size":25029,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":"mozilla:master","ref":"master","sha":"fe8c777a3963bb7cf3b6f20127fb64047437faf2","user":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"repo":{"id":36391468,"name":"marketplace-content-tools","full_name":"mozilla/marketplace-content-tools","owner":{"login":"mozilla","id":131524,"avatar_url":"https://avatars.githubusercontent.com/u/131524?v=3","gravatar_id":"","url":"https://api.github.com/users/mozilla","html_url":"https://github.com/mozilla","followers_url":"https://api.github.com/users/mozilla/followers","following_url":"https://api.github.com/users/mozilla/following{/other_user}","gists_url":"https://api.github.com/users/mozilla/gists{/gist_id}","starred_url":"https://api.github.com/users/mozilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozilla/subscriptions","organizations_url":"https://api.github.com/users/mozilla/orgs","repos_url":"https://api.github.com/users/mozilla/repos","events_url":"https://api.github.com/users/mozilla/events{/privacy}","received_events_url":"https://api.github.com/users/mozilla/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mozilla/marketplace-content-tools","description":"Tools for submitting content to the Firefox Marketplace.","fork":false,"url":"https://api.github.com/repos/mozilla/marketplace-content-tools","forks_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/forks","keys_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/teams","hooks_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/hooks","issue_events_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/events{/number}","events_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/events","assignees_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/assignees{/user}","branches_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/branches{/branch}","tags_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/tags","blobs_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/languages","stargazers_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/stargazers","contributors_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/contributors","subscribers_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/subscribers","subscription_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/subscription","commits_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/contents/{+path}","compare_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/merges","archive_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/downloads","issues_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues{/number}","pulls_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/labels{/name}","releases_url":"https://api.github.com/repos/mozilla/marketplace-content-tools/releases{/id}","created_at":"2015-05-27T19:45:33Z","updated_at":"2015-08-28T20:49:48Z","pushed_at":"2015-09-30T00:26:25Z","git_url":"git://github.com/mozilla/marketplace-content-tools.git","ssh_url":"git@github.com:mozilla/marketplace-content-tools.git","clone_url":"https://github.com/mozilla/marketplace-content-tools.git","svn_url":"https://github.com/mozilla/marketplace-content-tools","homepage":null,"size":25859,"stargazers_count":2,"watchers_count":2,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":3,"forks":4,"open_issues":3,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41"},"html":{"href":"https://github.com/mozilla/marketplace-content-tools/pull/41"},"issue":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/41"},"comments":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/issues/41/comments"},"review_comments":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41/comments"},"review_comment":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/pulls/41/commits"},"statuses":{"href":"https://api.github.com/repos/mozilla/marketplace-content-tools/statuses/7fe0d67a62df018b43f02a7a89f30a0cc42a53c3"}}}}