{"action":"created","comment":{"url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/comments/32734151","id":32734151,"diff_hunk":"@@ -258,35 +257,94 @@ Supported types include (class names):\n \n \n \n-        <div id=\"workspace-tickets\" tal:define=\"tasks view/tasks\">\n-          <tal:no-tasks condition=\"not: tasks\">\n+        <div id=\"workspace-tickets\" tal:define=\"tasks context/tasks\">\n+          <div class=\"button-bar functions\" id=\"tasks-functions\">\n+\n+            <div class=\"quick-functions\">\n+              <a title=\"Create new task\"\n+                 class=\"create-document pat-modal icon-doc-text\" data-pat-modal=\"class: large\" data-pat-inject=\"source:#content\"\n+                 tal:attributes=\"href string:${ws/absolute_url}/add_task\"\n+                 tal:condition=\"view/can_add\">Create task</a>\n+            </div>\n+          </div>\n+          <tal:no-tasks condition=\"python:not ws.is_case and not tasks \">\n             <p i18n:translate=\"no-task-found\">No tasks created yet</p>\n           </tal:no-tasks>\n-          <tal:tasks condition=\"tasks\">\n-            <form action=\"#\"\n+          <tal:tasks condition=\"python:ws.is_case or tasks\">\n+            <form method=\"post\" class=\"pat-autosubmit pat-inject\"\n                   tal:define=\"ws view/workspace\"\n-                  tal:attributes=\"action string:${ws/absolute_url}/@@sidebar.default\"\n-                  method=\"post\" class=\"pat-autosubmit pat-inject\" data-pat-inject=\"target: #workspace-settings > .tabs-content; source: #workspace-settings > .tabs-content && target: #document-content::before; source: .sidebar-status-message\">\n-              <fieldset class=\"object-list tasks pat-checklist\">\n-                <tal:task repeat=\"task tasks\">\n-                  <br/>\n-                  <label>\n-                    <input type=\"hidden\" name=\"current-tasks:list\" tal:attributes=\"value python: task['id']\"/>\n-                    <input type=\"checkbox\" name=\"active-tasks:list\"\n-                           tal:attributes=\"value python: task['id']\"\n-                           tal:condition=\"python: task['checked']\" checked=\"checked\"/>\n-                    <input type=\"checkbox\" name=\"active-tasks:list\"\n-                           tal:attributes=\"value python: task['id']\"\n-                           tal:condition=\"python: not task['checked']\"/>\n-                    <a href=\"#\"\n-                       tal:attributes=\"title python: task['title'];\n-                                       href python: task['url']\"\n-                       tal:content=\"python:task['content']\"></a>\n+                  tal:attributes=\"action string:${ws/absolute_url}/@@sidebar.default#global-statusmessage\">\n+\n+              <tal:workspace_tasks tal:condition=\"not: ws/is_case\">\n+                <fieldset class=\"object-list tasks pat-checklist\">\n+                  <tal:task repeat=\"task tasks\">\n+                    <br/>\n+                    <label>\n+                      <input type=\"hidden\" name=\"current-tasks:list\" tal:attributes=\"value task/id\"/>\n+                      <input type=\"checkbox\" name=\"active-tasks:list\"\n+                             tal:attributes=\"value task/id;\n+                                             checked python: 'checked' if task['checked'] else ''\"\n+                             />\n+                      <a class=\"pat-inject\"\n+                         tal:attributes=\"title task/title;\n+                                         href python: task['url']+'#document-body'\"\n+                         tal:content=\"task/title\"/>\n+                    </label>\n+                  </tal:task>\n+                </fieldset>\n+              </tal:workspace_tasks>\n+\n+              <tal:case_tasks condition=\"ws/is_case\"\n+                              define=\"milestones ws_view/metromap_sequence | nothing;\n+                                      token context/@@authenticator/token;\">\n+                <tal:milestone repeat=\"milestone milestones\">\n+\n+                  <fieldset class=\"object-list tasks pat-checklist pat-collapsible closed\" data-pat-collapsible=\"store: local\"\n+                            tal:attributes=\"id string:milestone-${milestone}\">\n+                    <h4 class=\"section-label state-finished\" tal:content=\"python:milestones[milestone]['title']\"/>\n+                    <tal:task repeat=\"task python:tasks[milestone]\">\n+                      <label>\n+                        <input type=\"hidden\" name=\"current-tasks:list\" tal:attributes=\"value task/id\"/>\n+                        <input type=\"checkbox\" name=\"active-tasks:list\"\n+                               tal:attributes=\"value task/id;\n+                                               checked python:'checked' if task['checked'] else ''\"\n+                               />\n+\n+                        <a class=\"pat-inject\"\n+                           tal:attributes=\"title task/title; href string:${task/url}#document-body\"","path":"src/ploneintranet/workspace/browser/tiles/templates/sidebar.pt","position":98,"original_position":98,"commit_id":"8b2aaafea220662dc720e80d5898db067bec48f3","original_commit_id":"8b2aaafea220662dc720e80d5898db067bec48f3","user":{"login":"mattss","id":1155400,"avatar_url":"https://avatars.githubusercontent.com/u/1155400?v=3","gravatar_id":"","url":"https://api.github.com/users/mattss","html_url":"https://github.com/mattss","followers_url":"https://api.github.com/users/mattss/followers","following_url":"https://api.github.com/users/mattss/following{/other_user}","gists_url":"https://api.github.com/users/mattss/gists{/gist_id}","starred_url":"https://api.github.com/users/mattss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattss/subscriptions","organizations_url":"https://api.github.com/users/mattss/orgs","repos_url":"https://api.github.com/users/mattss/repos","events_url":"https://api.github.com/users/mattss/events{/privacy}","received_events_url":"https://api.github.com/users/mattss/received_events","type":"User","site_admin":false},"body":"See prev pat-inject comment.","created_at":"2015-06-18T14:17:56Z","updated_at":"2015-06-18T14:17:56Z","html_url":"https://github.com/ploneintranet/ploneintranet/pull/286#discussion_r32734151","pull_request_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286","_links":{"self":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/comments/32734151"},"html":{"href":"https://github.com/ploneintranet/ploneintranet/pull/286#discussion_r32734151"},"pull_request":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286"}}},"pull_request":{"url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286","id":37467364,"html_url":"https://github.com/ploneintranet/ploneintranet/pull/286","diff_url":"https://github.com/ploneintranet/ploneintranet/pull/286.diff","patch_url":"https://github.com/ploneintranet/ploneintranet/pull/286.patch","issue_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/286","number":286,"state":"open","locked":false,"title":"Case","user":{"login":"pilz","id":138906,"avatar_url":"https://avatars.githubusercontent.com/u/138906?v=3","gravatar_id":"","url":"https://api.github.com/users/pilz","html_url":"https://github.com/pilz","followers_url":"https://api.github.com/users/pilz/followers","following_url":"https://api.github.com/users/pilz/following{/other_user}","gists_url":"https://api.github.com/users/pilz/gists{/gist_id}","starred_url":"https://api.github.com/users/pilz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pilz/subscriptions","organizations_url":"https://api.github.com/users/pilz/orgs","repos_url":"https://api.github.com/users/pilz/repos","events_url":"https://api.github.com/users/pilz/events{/privacy}","received_events_url":"https://api.github.com/users/pilz/received_events","type":"User","site_admin":false},"body":"This branch contains the metromap code. Because it integrates with tasks, it also contains improvements to ploneintranet.todo. And because we play through a whole use case, it touches many places in the system like fixing injections, polishing modals etc. Therefore this became a bit too big. I hope the next improvements will not be forced so much into broad territory and we can do smaller more specialised ones.\r\n","created_at":"2015-06-11T14:12:08Z","updated_at":"2015-06-18T14:17:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e9fa7921dce76bbd153d5055571d822e7b9760d8","assignee":{"login":"mattss","id":1155400,"avatar_url":"https://avatars.githubusercontent.com/u/1155400?v=3","gravatar_id":"","url":"https://api.github.com/users/mattss","html_url":"https://github.com/mattss","followers_url":"https://api.github.com/users/mattss/followers","following_url":"https://api.github.com/users/mattss/following{/other_user}","gists_url":"https://api.github.com/users/mattss/gists{/gist_id}","starred_url":"https://api.github.com/users/mattss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattss/subscriptions","organizations_url":"https://api.github.com/users/mattss/orgs","repos_url":"https://api.github.com/users/mattss/repos","events_url":"https://api.github.com/users/mattss/events{/privacy}","received_events_url":"https://api.github.com/users/mattss/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286/commits","review_comments_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286/comments","review_comment_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/286/comments","statuses_url":"https://api.github.com/repos/ploneintranet/ploneintranet/statuses/8b2aaafea220662dc720e80d5898db067bec48f3","head":{"label":"ploneintranet:case","ref":"case","sha":"8b2aaafea220662dc720e80d5898db067bec48f3","user":{"login":"ploneintranet","id":5967787,"avatar_url":"https://avatars.githubusercontent.com/u/5967787?v=3","gravatar_id":"","url":"https://api.github.com/users/ploneintranet","html_url":"https://github.com/ploneintranet","followers_url":"https://api.github.com/users/ploneintranet/followers","following_url":"https://api.github.com/users/ploneintranet/following{/other_user}","gists_url":"https://api.github.com/users/ploneintranet/gists{/gist_id}","starred_url":"https://api.github.com/users/ploneintranet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ploneintranet/subscriptions","organizations_url":"https://api.github.com/users/ploneintranet/orgs","repos_url":"https://api.github.com/users/ploneintranet/repos","events_url":"https://api.github.com/users/ploneintranet/events{/privacy}","received_events_url":"https://api.github.com/users/ploneintranet/received_events","type":"Organization","site_admin":false},"repo":{"id":32069595,"name":"ploneintranet","full_name":"ploneintranet/ploneintranet","owner":{"login":"ploneintranet","id":5967787,"avatar_url":"https://avatars.githubusercontent.com/u/5967787?v=3","gravatar_id":"","url":"https://api.github.com/users/ploneintranet","html_url":"https://github.com/ploneintranet","followers_url":"https://api.github.com/users/ploneintranet/followers","following_url":"https://api.github.com/users/ploneintranet/following{/other_user}","gists_url":"https://api.github.com/users/ploneintranet/gists{/gist_id}","starred_url":"https://api.github.com/users/ploneintranet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ploneintranet/subscriptions","organizations_url":"https://api.github.com/users/ploneintranet/orgs","repos_url":"https://api.github.com/users/ploneintranet/repos","events_url":"https://api.github.com/users/ploneintranet/events{/privacy}","received_events_url":"https://api.github.com/users/ploneintranet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ploneintranet/ploneintranet","description":"Pre-integrated Intranet suite for Plone","fork":false,"url":"https://api.github.com/repos/ploneintranet/ploneintranet","forks_url":"https://api.github.com/repos/ploneintranet/ploneintranet/forks","keys_url":"https://api.github.com/repos/ploneintranet/ploneintranet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ploneintranet/ploneintranet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ploneintranet/ploneintranet/teams","hooks_url":"https://api.github.com/repos/ploneintranet/ploneintranet/hooks","issue_events_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/events{/number}","events_url":"https://api.github.com/repos/ploneintranet/ploneintranet/events","assignees_url":"https://api.github.com/repos/ploneintranet/ploneintranet/assignees{/user}","branches_url":"https://api.github.com/repos/ploneintranet/ploneintranet/branches{/branch}","tags_url":"https://api.github.com/repos/ploneintranet/ploneintranet/tags","blobs_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/refs{/sha}","trees_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ploneintranet/ploneintranet/statuses/{sha}","languages_url":"https://api.github.com/repos/ploneintranet/ploneintranet/languages","stargazers_url":"https://api.github.com/repos/ploneintranet/ploneintranet/stargazers","contributors_url":"https://api.github.com/repos/ploneintranet/ploneintranet/contributors","subscribers_url":"https://api.github.com/repos/ploneintranet/ploneintranet/subscribers","subscription_url":"https://api.github.com/repos/ploneintranet/ploneintranet/subscription","commits_url":"https://api.github.com/repos/ploneintranet/ploneintranet/commits{/sha}","git_commits_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/commits{/sha}","comments_url":"https://api.github.com/repos/ploneintranet/ploneintranet/comments{/number}","issue_comment_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/comments{/number}","contents_url":"https://api.github.com/repos/ploneintranet/ploneintranet/contents/{+path}","compare_url":"https://api.github.com/repos/ploneintranet/ploneintranet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ploneintranet/ploneintranet/merges","archive_url":"https://api.github.com/repos/ploneintranet/ploneintranet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ploneintranet/ploneintranet/downloads","issues_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues{/number}","pulls_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls{/number}","milestones_url":"https://api.github.com/repos/ploneintranet/ploneintranet/milestones{/number}","notifications_url":"https://api.github.com/repos/ploneintranet/ploneintranet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ploneintranet/ploneintranet/labels{/name}","releases_url":"https://api.github.com/repos/ploneintranet/ploneintranet/releases{/id}","created_at":"2015-03-12T09:53:38Z","updated_at":"2015-05-21T13:42:23Z","pushed_at":"2015-06-18T13:18:56Z","git_url":"git://github.com/ploneintranet/ploneintranet.git","ssh_url":"git@github.com:ploneintranet/ploneintranet.git","clone_url":"https://github.com/ploneintranet/ploneintranet.git","svn_url":"https://github.com/ploneintranet/ploneintranet","homepage":"","size":58633,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":28,"forks":4,"open_issues":28,"watchers":6,"default_branch":"master"}},"base":{"label":"ploneintranet:master","ref":"master","sha":"099c7e80a16e0250b81b95646ba3e24c932d9b29","user":{"login":"ploneintranet","id":5967787,"avatar_url":"https://avatars.githubusercontent.com/u/5967787?v=3","gravatar_id":"","url":"https://api.github.com/users/ploneintranet","html_url":"https://github.com/ploneintranet","followers_url":"https://api.github.com/users/ploneintranet/followers","following_url":"https://api.github.com/users/ploneintranet/following{/other_user}","gists_url":"https://api.github.com/users/ploneintranet/gists{/gist_id}","starred_url":"https://api.github.com/users/ploneintranet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ploneintranet/subscriptions","organizations_url":"https://api.github.com/users/ploneintranet/orgs","repos_url":"https://api.github.com/users/ploneintranet/repos","events_url":"https://api.github.com/users/ploneintranet/events{/privacy}","received_events_url":"https://api.github.com/users/ploneintranet/received_events","type":"Organization","site_admin":false},"repo":{"id":32069595,"name":"ploneintranet","full_name":"ploneintranet/ploneintranet","owner":{"login":"ploneintranet","id":5967787,"avatar_url":"https://avatars.githubusercontent.com/u/5967787?v=3","gravatar_id":"","url":"https://api.github.com/users/ploneintranet","html_url":"https://github.com/ploneintranet","followers_url":"https://api.github.com/users/ploneintranet/followers","following_url":"https://api.github.com/users/ploneintranet/following{/other_user}","gists_url":"https://api.github.com/users/ploneintranet/gists{/gist_id}","starred_url":"https://api.github.com/users/ploneintranet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ploneintranet/subscriptions","organizations_url":"https://api.github.com/users/ploneintranet/orgs","repos_url":"https://api.github.com/users/ploneintranet/repos","events_url":"https://api.github.com/users/ploneintranet/events{/privacy}","received_events_url":"https://api.github.com/users/ploneintranet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ploneintranet/ploneintranet","description":"Pre-integrated Intranet suite for Plone","fork":false,"url":"https://api.github.com/repos/ploneintranet/ploneintranet","forks_url":"https://api.github.com/repos/ploneintranet/ploneintranet/forks","keys_url":"https://api.github.com/repos/ploneintranet/ploneintranet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ploneintranet/ploneintranet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ploneintranet/ploneintranet/teams","hooks_url":"https://api.github.com/repos/ploneintranet/ploneintranet/hooks","issue_events_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/events{/number}","events_url":"https://api.github.com/repos/ploneintranet/ploneintranet/events","assignees_url":"https://api.github.com/repos/ploneintranet/ploneintranet/assignees{/user}","branches_url":"https://api.github.com/repos/ploneintranet/ploneintranet/branches{/branch}","tags_url":"https://api.github.com/repos/ploneintranet/ploneintranet/tags","blobs_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/refs{/sha}","trees_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ploneintranet/ploneintranet/statuses/{sha}","languages_url":"https://api.github.com/repos/ploneintranet/ploneintranet/languages","stargazers_url":"https://api.github.com/repos/ploneintranet/ploneintranet/stargazers","contributors_url":"https://api.github.com/repos/ploneintranet/ploneintranet/contributors","subscribers_url":"https://api.github.com/repos/ploneintranet/ploneintranet/subscribers","subscription_url":"https://api.github.com/repos/ploneintranet/ploneintranet/subscription","commits_url":"https://api.github.com/repos/ploneintranet/ploneintranet/commits{/sha}","git_commits_url":"https://api.github.com/repos/ploneintranet/ploneintranet/git/commits{/sha}","comments_url":"https://api.github.com/repos/ploneintranet/ploneintranet/comments{/number}","issue_comment_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/comments{/number}","contents_url":"https://api.github.com/repos/ploneintranet/ploneintranet/contents/{+path}","compare_url":"https://api.github.com/repos/ploneintranet/ploneintranet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ploneintranet/ploneintranet/merges","archive_url":"https://api.github.com/repos/ploneintranet/ploneintranet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ploneintranet/ploneintranet/downloads","issues_url":"https://api.github.com/repos/ploneintranet/ploneintranet/issues{/number}","pulls_url":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls{/number}","milestones_url":"https://api.github.com/repos/ploneintranet/ploneintranet/milestones{/number}","notifications_url":"https://api.github.com/repos/ploneintranet/ploneintranet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ploneintranet/ploneintranet/labels{/name}","releases_url":"https://api.github.com/repos/ploneintranet/ploneintranet/releases{/id}","created_at":"2015-03-12T09:53:38Z","updated_at":"2015-05-21T13:42:23Z","pushed_at":"2015-06-18T13:18:56Z","git_url":"git://github.com/ploneintranet/ploneintranet.git","ssh_url":"git@github.com:ploneintranet/ploneintranet.git","clone_url":"https://github.com/ploneintranet/ploneintranet.git","svn_url":"https://github.com/ploneintranet/ploneintranet","homepage":"","size":58633,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":28,"forks":4,"open_issues":28,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286"},"html":{"href":"https://github.com/ploneintranet/ploneintranet/pull/286"},"issue":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/286"},"comments":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/issues/286/comments"},"review_comments":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286/comments"},"review_comment":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/pulls/286/commits"},"statuses":{"href":"https://api.github.com/repos/ploneintranet/ploneintranet/statuses/8b2aaafea220662dc720e80d5898db067bec48f3"}}}}