[PATCH 6 of 7] frontend: change comment workflow

Thomas De Schampheleire patrickdepinguin at gmail.com
Wed Apr 22 14:16:10 EDT 2015


On Tue, Apr 14, 2015 at 6:03 PM, Jan Heylen <heyleke at gmail.com> wrote:
> # 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')}

With respect to terminology: I would not use the word 'draft' on its
own, but rather use 'draft comment', since 'draft' just means that
something is not final, but could apply to 'draft pull request',
'draft paper', ...

> +              %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")}

comments should be lowercase here

>              <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 ''}">


Best regards,
Thomas


More information about the kallithea-general mailing list