Showing 3 changed files with 116 additions and 24 deletions
+4 -2
templates/include/issue_comment_icon.html.ep
... ...
@@ -11,5 +11,7 @@
11 11
   <i class="issue-icon-add-numbered-list icon icon-th-list" title="Add a numbered list"></i>
12 12
   <span style="margin-left:10px"></span>
13 13
   <i class="issue-icon-mension-user icon icon-user" title="Directory mension a user"></i>
14
-  <i class="issue-icon-reference-issue icon icon-bookmark" title="Reference a issue or pull request"></i>
15
-</div>
14
+  <!--
15
+    <i class="issue-icon-reference-issue icon icon-bookmark" title="Reference a issue or pull request"></i>
16
+  -->
17
+</div>
+54 -18
templates/include/issue_message.html.ep
... ...
@@ -12,26 +12,62 @@
12 12
   my $can_modify = $is_my_project || $is_my_comment;
13 13
 %>
14 14
 
15
-<div class="issue-message <%= $is_owner_comment ? 'issue-message-owner' : '' %>" id="delete-<%= $issue_message->{row_id} %>">
16
-  <div class="issue-message-header <%= $is_owner_comment ? 'issue-message-header-owner' : '' %>">
17
-    <div class="issue-message-header-left">
18
-      <b><%= $issue_message->{'user.id'} %></b> <span style="color:#767676;">commented <%= $api->age_string($issue_message->{create_time}) %></span>
19
-    </div>
20
-    <div class="issue-message-header-right">
21
-      % if ($is_owner_comment) {
22
-        <div class="issue-message-owner-label">Owner</div>
23
-      % }
24
-      % if ($issue_message->{number} != 1) {
15
+<div class="issue-message-row-id" id="row-<%= $issue_message->{row_id} %>">
16
+  <div class="issue-message <%= $is_owner_comment ? 'issue-message-owner' : '' %>">
17
+    <div class="issue-message-header <%= $is_owner_comment ? 'issue-message-header-owner' : '' %>">
18
+      <div class="issue-message-header-left">
19
+        <b><%= $issue_message->{'user.id'} %></b> <span style="color:#767676;">commented <%= $api->age_string($issue_message->{create_time}) %></span>
20
+      </div>
21
+      <div class="issue-message-header-right">
22
+        % if ($is_owner_comment) {
23
+          <div class="issue-message-owner-label">Owner</div>
24
+        % }
25 25
         % if ($can_modify) {
26
-          <div class="icon-remove">
27
-            <a href="javascript:void(0)" class="issue-message-delete-btn"><i class="icon icon-remove"></i></a>
28
-          </div>
26
+          <a href="javascript:void(0)" class="issue-message-edit-btn"><i class="icon icon-pencil" style="margin-right:6px"></i></a>
29 27
         % }
30
-      % }
28
+        % if ($issue_message->{number} != 1) {
29
+          % if ($can_modify) {
30
+            <div class="icon-remove">
31
+              <a href="javascript:void(0)" class="issue-message-delete-btn"><i class="icon icon-remove"></i></a>
32
+            </div>
33
+          % }
34
+        % }
35
+      </div>
36
+    </div>
37
+    <div class="issue-message-body markdown-body" style="padding:10px">
38
+      <%== $api->markdown($issue_message->{message}) %>
31 39
     </div>
32 40
   </div>
33
-  <div class="issue-message-body markdown-body" style="padding:10px">
34
-    <%== $api->markdown($issue_message->{message}) %>
35
-  </div>
41
+  
42
+  % if ($can_modify) {
43
+    <div class="issue-message-update" style="display:none;margin-bottom:20px;">
44
+      <div class="issue-add-comment">
45
+        <form action="<%= url_for %>" method="post">
46
+          <%= hidden_field 'op' %>
47
+          <div class="issue-add-comment-header">
48
+            <div id="write-tab" class="issue-add-comment-header-tab"><a href="javascript:void(0)">Write</a></div>
49
+            <div id="preview-tab" class="issue-add-comment-header-tab"><a class="disable" href="javascript:void(0)">Preview</a></div>
50
+            %= include '/include/issue_comment_icon';
51
+          </div>
52
+          <div class="issue-add-comment-body">
53
+            <div id="write-area" class="issue-add-comment-message">
54
+              %= $issue_message->{message};
55
+              <%= text_area 'message' => $issue_message->{message} %>
56
+            </div>
57
+            <div id="preview-area" class="issue-add-comment-preview markdown-body" style="padding:10px">
58
+            </div>
59
+            <div class="issue-add-comment-bottom">
60
+              <div class="issue-add-comment-button-left">
61
+                Styling with Markdown is supported
62
+              </div>
63
+              <div class="issue-add-comment-button">
64
+                <button class="issue-message-update-cancel btn" onclick="javascript:void(0)" >Cancel</button>
65
+                <input type="submit" value="Update comment" onclick="$(this).closest('form').find('[name=op]').val('update-comment'); $(this).closest('form').submit();" class="btn btn-success"> 
66
+              </div>
67
+            </div>
68
+          </div>
69
+        </form>
70
+      </div>
71
+    </div>
72
+  % }
36 73
 </div>
37
-          
+58 -4
templates/include/js/issue.html.ep
... ...
@@ -40,19 +40,73 @@ $('#preview-tab').on('click', function () {
40 40
 // Click delete button
41 41
 $('.issue-message-delete-btn').on('click', function () {
42 42
   if (window.confirm('Are you sure you want to delete this?')) {
43
-    var issue_message = $(this).closest('.issue-message');
44
-    var issue_message_row_id_str = issue_message.attr('id');
43
+    var issue_message_row_id_div = $(this).closest('.issue-message-row-id');
44
+    var issue_message_row_id_str = issue_message_row_id_div.attr('id');
45 45
     
46
-    var issue_message_row_id = (issue_message_row_id_str.match(/delete-(.+)/))[1];
46
+    var issue_message_row_id = (issue_message_row_id_str.match(/row-(.+)/))[1];
47 47
     $.post('<%= url_for %>', {op : 'api-delete-issue-message', issue_message_row_id : issue_message_row_id}, function (result) {
48 48
       if (result.success) {
49
-        $(issue_message).fadeOut();
49
+        $('#row-' + issue_message_row_id).fadeOut();
50 50
       }
51 51
     });
52 52
   }
53 53
 });
54
+$('.issue-message-edit-btn').on('click', function () {
55
+  var issue_message_row_id_div = $(this).closest('.issue-message-row-id');
56
+  var issue_message_row_id_str = issue_message_row_id_div.attr('id');
57
+  
58
+  var issue_message_row_id = (issue_message_row_id_str.match(/row-(.+)/))[1];
59
+  
60
+  $('#row-' + issue_message_row_id).find('.issue-message').css('display', 'none');
61
+  $('#row-' + issue_message_row_id).find('.issue-message-update').css('display', 'block');
62
+});
63
+$('.issue-message-update-cancel').on('click', function () {
64
+  var issue_message_row_id_div = $(this).closest('.issue-message-row-id');
65
+  var issue_message_row_id_str = issue_message_row_id_div.attr('id');
66
+  
67
+  var issue_message_row_id = (issue_message_row_id_str.match(/row-(.+)/))[1];
68
+  
69
+  $('#row-' + issue_message_row_id).find('.issue-message').css('display', 'block');
70
+  $('#row-' + issue_message_row_id).find('.issue-message-update').css('display', 'none');
71
+  
72
+  return false;
73
+});
74
+
54 75
 
76
+// Comment icon
77
+$('.issue-icon-add-header-text').on('click', function () {
78
+  var textarea = $(this).closest('form').find('textarea');
79
+  insertAtCaret(textarea, "# ");
80
+});
55 81
 $('.issue-icon-add-bold-text').on('click', function () {
56 82
   var textarea = $(this).closest('form').find('textarea');
57 83
   insertAtCaret(textarea, "****");
58 84
 });
85
+$('.issue-icon-add-italic-text').on('click', function () {
86
+  var textarea = $(this).closest('form').find('textarea');
87
+  insertAtCaret(textarea, "__");
88
+});
89
+$('.issue-icon-insert-quote').on('click', function () {
90
+  var textarea = $(this).closest('form').find('textarea');
91
+  insertAtCaret(textarea, "> ");
92
+});
93
+$('.issue-icon-insert-code').on('click', function () {
94
+  var textarea = $(this).closest('form').find('textarea');
95
+  insertAtCaret(textarea, "``");
96
+});
97
+$('.issue-icon-add-link').on('click', function () {
98
+  var textarea = $(this).closest('form').find('textarea');
99
+  insertAtCaret(textarea, "[](url)");
100
+});
101
+$('.issue-icon-add-bulleted-list').on('click', function () {
102
+  var textarea = $(this).closest('form').find('textarea');
103
+  insertAtCaret(textarea, "- ");
104
+});
105
+$('.issue-icon-add-numbered-list').on('click', function () {
106
+  var textarea = $(this).closest('form').find('textarea');
107
+  insertAtCaret(textarea, "1. ");
108
+});
109
+$('.issue-icon-mension-user').on('click', function () {
110
+  var textarea = $(this).closest('form').find('textarea');
111
+  insertAtCaret(textarea, "@");
112
+});