Files @ ae5ac36cdf83
Branch filter:

Location: kallithea/rhodecode/templates/changeset/changeset_file_comment.html

Mads Kiilerich
pull request: use unionrepo instead of outgoing

This makes it possible to look the 'moving target' symbols up in the right repo.

Using a revset with the right revisions also removes the need for pruning
changesets that are outside the requested range.

It will also not be confused by changesets that for some reason has been pulled
to the repo but haven't been merged yet. They are going to be 'merged' by the
'pull' request and should thus be a part of what is reviewed.
## -*- coding: utf-8 -*-
## usage:
## <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
## ${comment.comment_block(co)}
##
<%def name="comment_block(co)">
  <div class="comment" id="comment-${co.comment_id}" line="${co.line_no}">
    <div class="comment-wrapp">
      <div class="meta">
        <div style="float:left"> <img src="${h.gravatar_url(co.author.email, 20)}" /> </div>
          <div class="user">
              ${co.author.username}
          </div>
          <div class="date">
              ${h.age(co.modified_at)} <a class="permalink" href="#comment-${co.comment_id}">&para;</a>
          </div>
        %if co.status_change:
           <div  style="float:left" class="changeset-status-container">
             <div style="float:left;padding:0px 2px 0px 2px"><span style="font-size: 18px;">&rsaquo;</span></div>
             <div title="${_('Changeset status')}" class="changeset-status-lbl"> ${co.status_change[0].status_lbl}</div>
             <div class="changeset-status-ico"><img src="${h.url(str('/images/icons/flag_status_%s.png' % co.status_change[0].status))}" /></div>
           </div>
        %endif

       <div style="float:left;padding:3px 0px 0px 5px">
        <span class="">
         %if co.pull_request:
            <a href="${h.url('pullrequest_show',repo_name=co.pull_request.other_repo.repo_name,pull_request_id=co.pull_request.pull_request_id)}">
            %if co.status_change:
              ${_('Status change from pull request #%s') % co.pull_request.pull_request_id}
            %else:
              ${_('Comment from pull request #%s') % co.pull_request.pull_request_id}
            %endif
            </a>
         %endif
        </span>
       </div>

      %if h.HasPermissionAny('hg.admin', 'repository.admin')() or co.author.user_id == c.rhodecode_user.user_id:
        <div class="buttons">
          <span onClick="deleteComment(${co.comment_id})" class="delete-comment ui-btn">${_('Delete')}</span>
        </div>
      %endif
      </div>
      <div class="text">
          ${h.rst_w_mentions(co.text)|n}
      </div>
    </div>
  </div>
</%def>


<%def name="comment_inline_form()">
<div id='comment-inline-form-template' style="display:none">
  <div class="comment-inline-form ac">
  %if c.rhodecode_user.username != 'default':
    <div class="overlay"><div class="overlay-text">${_('Submitting...')}</div></div>
      ${h.form('#', class_='inline-form')}
      <div class="clearfix">
          <div class="comment-help">${_('Commenting on line {1}.')}
          ${(_('Comments parsed using %s syntax with %s support.') % (
                 ('<a href="%s">RST</a>' % h.url('rst_help')),
                   ('<span style="color:#003367" class="tooltip" title="%s">@mention</span>' % _('Use @username inside this text to send notification to this RhodeCode user'))
               )
            )|n
           }
          </div>
            <div class="mentions-container" id="mentions_container_{1}"></div>
            <textarea id="text_{1}" name="text" class="yui-ac-input"></textarea>
      </div>
      <div class="comment-button">
      <input type="hidden" name="f_path" value="{0}">
      <input type="hidden" name="line" value="{1}">
      ${h.submit('save', _('Comment'), class_='ui-btn save-inline-form')}
      ${h.reset('hide-inline-form', _('Cancel'), class_='ui-btn hide-inline-form')}
      </div>
      ${h.end_form()}
  %else:
      ${h.form('')}
      <div class="clearfix">
          <div class="comment-help">
            ${_('You need to be logged in to comment.')} <a href="${h.url('login_home',came_from=h.url.current())}">${_('Login now')}</a>
          </div>
      </div>
      <div class="comment-button">
      ${h.reset('hide-inline-form', _('Hide'), class_='ui-btn hide-inline-form')}
      </div>
      ${h.end_form()}
  %endif
  </div>
</div>
</%def>


## generates inlines taken from c.comments var
<%def name="inlines()">
    <div class="comments-number">${ungettext("%d comment", "%d comments", len(c.comments)) % len(c.comments)} ${ungettext("(%d inline)", "(%d inline)", c.inline_cnt) % c.inline_cnt}</div>
    %for path, lines in c.inline_comments:
        % 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>

## generate inline comments and the main ones
<%def name="generate_comments(include_pr=False)">
<div class="comments">
    <div id="inline-comments-container">
    ## generate inlines for this changeset
     ${inlines()}
    </div>

    %for co in c.comments:
        <div id="comment-tr-${co.comment_id}">
          ## only render comments that are not from pull request, or from
          ## pull request and a status change
          %if not co.pull_request or (co.pull_request and co.status_change) or include_pr:
          ${comment_block(co)}
          %endif
        </div>
    %endfor
</div>
</%def>

## MAIN COMMENT FORM
<%def name="comments(post_url, cur_status, close_btn=False, change_status=True)">

<div class="comments">
    %if c.rhodecode_user.username != 'default':
    <div class="comment-form ac">
        ${h.form(post_url)}
        <strong>${_('Leave a comment')}</strong>
        <div class="clearfix">
            <div class="comment-help">
                ${(_('Comments parsed using %s syntax with %s support.') % (('<a href="%s">RST</a>' % h.url('rst_help')),
                  '<span style="color:#003367" class="tooltip" title="%s">@mention</span>' %
                  _('Use @username inside this text to send notification to this RhodeCode user')))|n}
              %if change_status:
                | <label for="show_changeset_status_box" class="tooltip" title="${_('Check this to change current status of code-review for this changeset')}"> ${_('change status')}</label>
                  <input style="vertical-align: bottom;margin-bottom:-2px" id="show_changeset_status_box" type="checkbox" name="change_changeset_status" />
              %endif
            </div>
            %if change_status:
            <div id="status_block_container" class="status-block" style="display:none">
                %for status,lbl in c.changeset_statuses:
                    <div class="">
                        <img src="${h.url('/images/icons/flag_status_%s.png' % status)}" /> <input ${'checked="checked"' if status == cur_status else ''}" type="radio" class="status_change_radio" name="changeset_status" id="${status}" value="${status}">
                        <label for="${status}">${lbl}</label>
                    </div>
                %endfor
            </div>
            %endif
            <div class="mentions-container" id="mentions_container"></div>
             ${h.textarea('text')}
        </div>
        <div class="comment-button">
        ${h.submit('save', _('Comment'), class_="ui-btn large")}
        %if close_btn and change_status:
           ${h.submit('save_close', _('Comment and close'), class_='ui-btn blue large %s' % ('hidden' if cur_status in ['not_reviewed','under_review'] else ''))}
        %endif
        </div>
        ${h.end_form()}
    </div>
    %endif
</div>
<script>
YUE.onDOMReady(function () {
   MentionsAutoComplete('text', 'mentions_container', _USERS_AC_DATA, _GROUPS_AC_DATA);

   // changeset status box listener
   YUE.on(YUD.get('show_changeset_status_box'),'change',function(e){
       if(e.currentTarget.checked){
           YUD.setStyle('status_block_container','display','');
       }
       else{
           YUD.setStyle('status_block_container','display','none');
       }
   })
   YUE.on(YUQ('.status_change_radio'), 'change',function(e){
       var val = e.currentTarget.value;
       if (val == 'approved' || val == 'rejected') {
           YUD.removeClass('save_close', 'hidden');
       }else{
           YUD.addClass('save_close', 'hidden');
       }
   })

});
</script>
</%def>