[PATCH 6 of 7] frontend: change comment workflow

Jan Heylen heyleke at gmail.com
Tue Apr 14 12:03:44 EDT 2015


# HG changeset patch
# User Jan Heylen <heyleke at gmail.com>
# Date 1428986395 -7200
#      Tue Apr 14 06:39:55 2015 +0200
# Node ID b1b3c859230ce5997f7820788dd331748e277525
# Parent  48a64173a2187e3ea2822df54b3d0096176e76e3
frontend: change comment workflow

This changes the workflow from one-comment-at-a-time to giving-draft-comments-and-a-final-judgement.
Only after the final judgement, the drafts are changed into comments and an email notification is send.
The internal notification model is untouched.

diff -r 48a64173a218 -r b1b3c859230c kallithea/config/routing.py
--- a/kallithea/config/routing.py	Sat Mar 28 08:12:49 2015 +0100
+++ b/kallithea/config/routing.py	Tue Apr 14 06:39:55 2015 +0200
@@ -662,6 +662,16 @@
                 controller='changeset', action='preview_comment',
                 conditions=dict(function=check_repo, method=["POST"]))
 
+    rmap.connect('changeset_comment_draft',
+                 '/{repo_name:.*?}/changeset-comment-draft/{revision}',
+                controller='changeset', revision='tip', action='draft',
+                conditions=dict(function=check_repo, method=["POST"]))
+
+    rmap.connect('pullrequest_comment_draft',
+                 '/{repo_name:.*?}/pullrequest-comment-draft/{pull_request_id}',
+                controller='changeset', action='draft',
+                conditions=dict(function=check_repo, method=["POST"]))
+
     rmap.connect('changeset_comment_delete',
                  '/{repo_name:.*?}/changeset-comment-delete/{comment_id}',
                 controller='changeset', action='delete_comment',
diff -r 48a64173a218 -r b1b3c859230c kallithea/public/js/base.js
--- a/kallithea/public/js/base.js	Sat Mar 28 08:12:49 2015 +0100
+++ b/kallithea/public/js/base.js	Tue Apr 14 06:39:55 2015 +0200
@@ -706,6 +706,7 @@
         $('#edit-btn_'+lineno).show();
         $('#preview-container_'+lineno).show();
         $('#preview-btn_'+lineno).hide();
+        $('#draft-btn_'+lineno).hide();
 
         var url = pyroutes.url('changeset_comment_preview', {'repo_name': REPO_NAME});
         var post_data = {'text': text};
@@ -714,11 +715,37 @@
             $('#preview-box_'+lineno).removeClass('unloaded');
         })
     })
+    $('#draft-btn_'+lineno).click(function(e){
+        var text = $('#text_'+lineno).val();
+        if(!text){
+            return
+        }
+        $('#preview-box_'+lineno).addClass('unloaded');
+        $('#preview-box_'+lineno).html(_TM['Loading ...']);
+        $('#edit-container_'+lineno).hide();
+        $('#edit-btn_'+lineno).show();
+        $('#preview-container_'+lineno).show();
+        $('#draft-btn_'+lineno).hide();
+        $('#preview-btn_'+lineno).hide();
+
+        var url = AJAX_DRAFT_URL;
+        var post_data = {
+                'text': text,
+                'f_path': f_path,
+                'line': lineno
+        };
+        ajaxPOST(url, post_data, function(json_data){
+            $tr.removeClass('form-open');
+            $form.remove();
+            _renderInlineComment(json_data);
+        })
+    })
     $('#edit-btn_'+lineno).click(function(e){
         $('#edit-container_'+lineno).show();
         $('#edit-btn_'+lineno).hide();
         $('#preview-container_'+lineno).hide();
         $('#preview-btn_'+lineno).show();
+        $('#draft-btn_'+lineno).show();
     })
 
     setTimeout(function(){
diff -r 48a64173a218 -r b1b3c859230c kallithea/templates/changeset/changeset.html
--- a/kallithea/templates/changeset/changeset.html	Sat Mar 28 08:12:49 2015 +0100
+++ b/kallithea/templates/changeset/changeset.html	Tue Apr 14 06:39:55 2015 +0200
@@ -28,6 +28,7 @@
     var _GROUPS_AC_DATA = ${c.user_groups_array|n};
     AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
     AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
+    AJAX_DRAFT_URL = "${url('changeset_comment_draft',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
     </script>
     <div class="table">
         <div class="diffblock">
diff -r 48a64173a218 -r b1b3c859230c kallithea/templates/changeset/changeset_file_comment.html
--- a/kallithea/templates/changeset/changeset_file_comment.html	Sat Mar 28 08:12:49 2015 +0100
+++ b/kallithea/templates/changeset/changeset_file_comment.html	Tue Apr 14 06:39:55 2015 +0200
@@ -24,14 +24,22 @@
               ${_('Status change from pull request')}
               <a href="${co.pull_request.url()}">"${co.pull_request.title or _("No title")}"</a>:
             %else:
-              ${_('Comment from pull request')}
+              %if co.draft:
+	              ${_('Draft from pull request')}
+              %else:
+                ${_('Comment from pull request')}
+              %endif
               <a href="${co.pull_request.url()}">"${co.pull_request.title or _("No title")}"</a>
             %endif
          %else:
             %if co.status_change:
               ${_('Status change on changeset')}:
             %else:
-              ${_('Comment on changeset')}
+              %if co.draft:
+                ${_('Draft on changeset')}
+              %else:
+                ${_('Comment on changeset')}
+              %endif
             %endif
          %endif
         </span>
@@ -85,8 +93,9 @@
         <div class="submitting-overlay">${_('Submitting ...')}</div>
         <input type="hidden" name="f_path" value="{0}">
         <input type="hidden" name="line" value="{1}">
-        ${h.submit('save', _('Comment'), class_='btn btn-small save-inline-form')}
+        <!-- ${h.submit('save', _('Comment'), class_='btn btn-small save-inline-form')} -->
         ${h.reset('hide-inline-form', _('Cancel'), class_='btn btn-small hide-inline-form')}
+        <div id="draft-btn_{1}" class="draft-btn btn btn-small">${_('Save')}</div>
         <div id="preview-btn_{1}" class="preview-btn btn btn-small">${_('Preview')}</div>
         <div id="edit-btn_{1}" class="edit-btn btn btn-small" style="display:none">${_('Edit')}</div>
       </div>
@@ -132,6 +141,16 @@
             </div>
         %endfor
     %endfor
+    %for path, lines in c.drafts:
+        % for line,comments in lines.iteritems():
+            <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${h.safeid(h.safe_unicode(path))}">
+            %for co in comments:
+                ${comment_block(co)}
+            %endfor
+            </div>
+        %endfor
+    %endfor
+
 
 </%def>
 
@@ -144,7 +163,11 @@
     </div>
 
     %for co in c.comments:
+        %if co.draft:
+        <div id="draft-tr-${co.comment_id}">
+        %else:
         <div id="comment-tr-${co.comment_id}">
+        %endif
           ${comment_block(co)}
         </div>
     %endfor
@@ -202,7 +225,7 @@
         </div>
 
         <div class="comment-button">
-            ${h.submit('save', _('Comment'), class_="btn")}
+            ${h.submit('save', _('Commit all Comments'), class_="btn")}
             <div id="preview-btn" class="preview-btn btn">${_('Preview')}</div>
             <div id="edit-btn" class="edit-btn btn" style="display:none">${_('Edit')}</div>
         </div>
@@ -239,7 +262,7 @@
        }
        var post_data = {'text': _text};
        $('#preview-box').addClass('unloaded');
-       $('#preivew-box').html(_TM['Loading ...']);
+       $('#preview-box').html(_TM['Loading ...']);
        $('#edit-container').hide();
        $('#edit-btn').show();
        $('#preview-container').show();
diff -r 48a64173a218 -r b1b3c859230c kallithea/templates/pullrequests/pullrequest_show.html
--- a/kallithea/templates/pullrequests/pullrequest_show.html	Sat Mar 28 08:12:49 2015 +0100
+++ b/kallithea/templates/pullrequests/pullrequest_show.html	Tue Apr 14 06:39:55 2015 +0200
@@ -22,7 +22,11 @@
   <div class="title">
     ${self.breadcrumbs()}
   </div>
-
+    <script>
+    AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,pull_request=c.pull_request.pull_request_id)}";
+    AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
+    AJAX_DRAFT_URL = "${url('pullrequest_comment_draft',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id)}";
+    </script>
   ${h.form(url('pullrequest_post', repo_name=c.repo_name, pull_request_id=c.pull_request.pull_request_id), method='post', id='pull_request_form')}
     <div class="form pr-box" style="float: left">
       <div class="pr-details-title ${'closed' if c.pull_request.is_closed() else ''}">


More information about the kallithea-general mailing list