summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorVinnie Okada <vokada@mrvinn.com>2014-10-05 00:53:44 -0500
committerVinnie Okada <vokada@mrvinn.com>2014-10-05 22:15:27 -0500
commit9f0083a96c03ec22b1d9442a9c7530899e633301 (patch)
treef41d0cc9e52728884085745e8cb837457a9f3ff2 /app/assets
parentff43500024f707a435cbcad43eb4d467368aabfe (diff)
downloadgitlab-ce-9f0083a96c03ec22b1d9442a9c7530899e633301.tar.gz
Add task lists to issues and merge requests
Make the Markdown parser recognize "[x]" or "[ ]" at the beginning of a list item and turn it into a checkbox input. Users who can modify the issue or MR can toggle the checkboxes directly or edit the Markdown to manage the tasks. Task status is also displayed in the MR and issue lists.
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/issue.js.coffee24
-rw-r--r--app/assets/javascripts/merge_request.js.coffee23
-rw-r--r--app/assets/stylesheets/generic/common.scss3
-rw-r--r--app/assets/stylesheets/generic/lists.scss4
4 files changed, 54 insertions, 0 deletions
diff --git a/app/assets/javascripts/issue.js.coffee b/app/assets/javascripts/issue.js.coffee
index 36935a0a159..f2b531fb2b1 100644
--- a/app/assets/javascripts/issue.js.coffee
+++ b/app/assets/javascripts/issue.js.coffee
@@ -6,4 +6,28 @@ class Issue
$(".issue-box .inline-update").on "change", "#issue_assignee_id", ->
$(this).submit()
+ if $("a.btn-close").length
+ $("li.task-list-item input:checkbox").prop("disabled", false)
+
+ $(".task-list-item input:checkbox").on "click", ->
+ is_checked = $(this).prop("checked")
+ if $(this).is(":checked")
+ state_event = "task_check"
+ else
+ state_event = "task_uncheck"
+
+ mr_url = $("form.edit-issue").first().attr("action")
+ mr_num = mr_url.match(/\d+$/)
+ task_num = 0
+ $("li.task-list-item input:checkbox").each( (index, e) =>
+ if e == this
+ task_num = index + 1
+ )
+
+ $.ajax
+ type: "PATCH"
+ url: mr_url
+ data: "issue[state_event]=" + state_event +
+ "&issue[task_num]=" + task_num
+
@Issue = Issue
diff --git a/app/assets/javascripts/merge_request.js.coffee b/app/assets/javascripts/merge_request.js.coffee
index 4c9f20ae6fa..203c721c30c 100644
--- a/app/assets/javascripts/merge_request.js.coffee
+++ b/app/assets/javascripts/merge_request.js.coffee
@@ -17,6 +17,8 @@ class MergeRequest
disableButtonIfEmptyField '#commit_message', '.accept_merge_request'
+ if $("a.close-mr-link").length
+ $("li.task-list-item input:checkbox").prop("disabled", false)
# Local jQuery finder
$: (selector) ->
@@ -72,6 +74,27 @@ class MergeRequest
this.$('.remove_source_branch_in_progress').hide()
this.$('.remove_source_branch_widget.failed').show()
+ this.$(".task-list-item input:checkbox").on "click", ->
+ is_checked = $(this).prop("checked")
+ if $(this).is(":checked")
+ state_event = "task_check"
+ else
+ state_event = "task_uncheck"
+
+ mr_url = $("form.edit-merge_request").first().attr("action")
+ mr_num = mr_url.match(/\d+$/)
+ task_num = 0
+ $("li.task-list-item input:checkbox").each( (index, e) =>
+ if e == this
+ task_num = index + 1
+ )
+
+ $.ajax
+ type: "PATCH"
+ url: mr_url
+ data: "merge_request[state_event]=" + state_event +
+ "&merge_request[task_num]=" + task_num
+
activateTab: (action) ->
this.$('.merge-request-tabs li').removeClass 'active'
this.$('.tab-content').hide()
diff --git a/app/assets/stylesheets/generic/common.scss b/app/assets/stylesheets/generic/common.scss
index 803219a2e86..cd2f4e45e3c 100644
--- a/app/assets/stylesheets/generic/common.scss
+++ b/app/assets/stylesheets/generic/common.scss
@@ -356,3 +356,6 @@ table {
font-size: 42px;
}
+.task-status {
+ margin-left: 10px;
+}
diff --git a/app/assets/stylesheets/generic/lists.scss b/app/assets/stylesheets/generic/lists.scss
index d347ab2c2e4..2653bfbf831 100644
--- a/app/assets/stylesheets/generic/lists.scss
+++ b/app/assets/stylesheets/generic/lists.scss
@@ -122,3 +122,7 @@ ul.bordered-list {
}
}
}
+
+li.task-list-item {
+ list-style-type: none;
+}