Files @ d79f3505549e
Branch filter:

Location: kallithea/rhodecode/templates/pullrequests/pullrequest_show.html - annotation

Marcin Kuzminski
whitespace cleanup
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
79818f546538
f29469677319
58737dee17f1
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
f29469677319
58c529332e7e
0b2214604c74
d5e42c00f3c1
58737dee17f1
58737dee17f1
58737dee17f1
58737dee17f1
d79f3505549e
58737dee17f1
acc05c33cc0c
7224882c4059
7224882c4059
7224882c4059
7224882c4059
cb40b3f6428c
7224882c4059
7224882c4059
7224882c4059
7224882c4059
c3e471704838
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
7224882c4059
b1822f4a85ca
b1822f4a85ca
b1822f4a85ca
0b86972de820
b1822f4a85ca
7224882c4059
acc05c33cc0c
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
2ab2eed4a70a
cd2aa3a36d76
81bbb8086f03
2ab2eed4a70a
2ab2eed4a70a
81bbb8086f03
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
0dfe7eaf21cb
7224882c4059
acc05c33cc0c
8eab81115660
c2a206162062
4d3032431d4f
3f50a5e8fc4d
4d3032431d4f
1fd3c043c025
4d3032431d4f
4d3032431d4f
4d3032431d4f
c2a206162062
4d3032431d4f
685ebc84c2e9
4d3032431d4f
c2a206162062
685ebc84c2e9
c2a206162062
c2a206162062
c2a206162062
c2a206162062
c2a206162062
685ebc84c2e9
c2a206162062
c2a206162062
c2a206162062
c2a206162062
c2a206162062
4d3032431d4f
4d3032431d4f
4d3032431d4f
4d3032431d4f
4d3032431d4f
4d3032431d4f
4d3032431d4f
c2a206162062
1af36014d96f
685ebc84c2e9
4d3032431d4f
4d3032431d4f
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
c2a206162062
3f50a5e8fc4d
c2a206162062
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
d5e42c00f3c1
3f50a5e8fc4d
706b9f84ade3
3f50a5e8fc4d
706b9f84ade3
cb40b3f6428c
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
3f50a5e8fc4d
d5e42c00f3c1
3f50a5e8fc4d
3f50a5e8fc4d
74364824c1e1
3f50a5e8fc4d
3f50a5e8fc4d
cb40b3f6428c
d5e42c00f3c1
3f50a5e8fc4d
3f50a5e8fc4d
cb40b3f6428c
3f50a5e8fc4d
74364824c1e1
3f50a5e8fc4d
3f50a5e8fc4d
d5e42c00f3c1
d5e42c00f3c1
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
cb40b3f6428c
a0adf8db1416
3f50a5e8fc4d
cb40b3f6428c
cb40b3f6428c
cb40b3f6428c
cb40b3f6428c
fe2bb88bf7ac
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
c2a206162062
1af36014d96f
c2a206162062
c2a206162062
1bc579bcd67a
1bc579bcd67a
1bc579bcd67a
a0adf8db1416
d5e42c00f3c1
58c529332e7e
aad51f79d040
d5e42c00f3c1
58c529332e7e
58c529332e7e
58c529332e7e
58c529332e7e
58c529332e7e
c77d5c6358eb
58c529332e7e
a0adf8db1416
a0adf8db1416
a0adf8db1416
b4f401524060
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
a0adf8db1416
68f9c216377d
3f50a5e8fc4d
cb40b3f6428c
3f50a5e8fc4d
a0adf8db1416
a0adf8db1416
a0adf8db1416
f29469677319
f29469677319
f29469677319
<%inherit file="/base/base.html"/>

<%def name="title()">
    ${c.repo_name} ${_('Pull request #%s') % c.pull_request.pull_request_id}
</%def>

<%def name="breadcrumbs_links()">
    ${h.link_to(_(u'Home'),h.url('/'))}
    &raquo;
    ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
    &raquo;
    ${_('Pull request #%s') % c.pull_request.pull_request_id}
</%def>

<%def name="main()">

<div class="box">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
        %if c.pull_request.is_closed():
        <div style="padding:10px; font-size:22px;width:100%;text-align: center; color:#88D882">${_('Closed %s') % (h.age(c.pull_request.updated_on))} ${_('with status %s') % h.changeset_status_lbl(c.current_changeset_status)}</div>
        %endif
    <h3>
    %if c.pull_request.is_closed():
        <img src="${h.url('/images/icons/lock_go.png')}" title="${_('Closed')}"/>
    %endif
    <img src="${h.url('/images/icons/flag_status_%s.png' % str(c.pull_request.last_review_status))}" />
    ${_('Title')}: ${c.pull_request.title}</h3>

    <div class="form">
      <div id="summary" class="fields">
         <div class="field">
          <div class="label-summary">
              <label>${_('Review status')}:</label>
          </div>
          <div class="input">
            <div class="changeset-status-container" style="float:none;clear:both">
            %if c.current_changeset_status:
              <div title="${_('Pull request status')}" class="changeset-status-lbl">${h.changeset_status_lbl(c.current_changeset_status)}</div>
              <div class="changeset-status-ico" style="padding:1px 4px"><img src="${h.url('/images/icons/flag_status_%s.png' % c.current_changeset_status)}" /></div>
            %endif
            </div>
          </div>
         </div>
         <div class="field">
          <div class="label-summary">
              <label>${_('Still not reviewed by')}:</label>
          </div>
          <div class="input">
            % if len(c.pull_request_pending_reviewers) > 0:
                <div class="tooltip" title="${h.tooltip(','.join([x.username for x in c.pull_request_pending_reviewers]))}">${ungettext('%d reviewer', '%d reviewers',len(c.pull_request_pending_reviewers)) % len(c.pull_request_pending_reviewers)}</div>
            %else:
                <div>${_('pull request was reviewed by all reviewers')}</div>
            %endif
          </div>
         </div>
         <div class="field">
          <div class="label-summary">
              <label>${_('Origin repository')}:</label>
          </div>
          <div class="input">
              <div>
             ##%if h.is_hg(c.pull_request.org_repo):
             ##  <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
             ##%elif h.is_git(c.pull_request.org_repo):
             ##  <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
             ##%endif
              <span class="spantag">${c.pull_request.org_ref_parts[0]}: ${c.pull_request.org_ref_parts[1]}</span>
              <span><a href="${h.url('summary_home', repo_name=c.pull_request.org_repo.repo_name)}">${c.pull_request.org_repo.clone_url()}</a></span>
              </div>
          </div>
         </div>
         <div class="field">
          <div class="label-summary">
              <label>${_('Summary')}:</label>
          </div>
          <div class="input">
              <div style="white-space:pre-wrap">${h.literal(c.pull_request.description)}</div>
          </div>
         </div>
         <div class="field">
          <div class="label-summary">
              <label>${_('Created on')}:</label>
          </div>
          <div class="input">
              <div>${h.fmt_date(c.pull_request.created_on)}</div>
          </div>
         </div>
      </div>
    </div>

    <div style="overflow: auto;">
      ##DIFF
      <div class="table" style="float:left;clear:none">
          <div id="body" class="diffblock">
              <div style="white-space:pre-wrap;padding:5px">${_('Compare view')}</div>
          </div>
          <div id="changeset_compare_view_content">
              ##CS
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${ungettext('Showing %s commit','Showing %s commits', len(c.cs_ranges)) % len(c.cs_ranges)}</div>
              <%include file="/compare/compare_cs.html" />

              ## FILES
              <div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">

              % if c.limited_diff:
                  ${ungettext('%s file changed', '%s files changed', len(c.files)) % len(c.files)}
              % else:
                  ${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.files)) % (len(c.files),c.lines_added,c.lines_deleted)}:
              %endif

              </div>
              <div class="cs_files">
                %if not c.files:
                   <span class="empty_data">${_('No files')}</span>
                %endif
                %for fid, change, f, stat in c.files:
                    <div class="cs_${change}">
                      <div class="node">${h.link_to(h.safe_unicode(f),h.url.current(anchor=fid))}</div>
                      <div class="changes">${h.fancy_file_stats(stat)}</div>
                    </div>
                %endfor
              </div>
              % if c.limited_diff:
                <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}" onclick="return confirm('${_("confirm to show potentially huge diff")}')">${_('Show full diff')}</a></h5>
              % endif
          </div>
      </div>
      ## REVIEWERS
       <div style="float:left; border-left:1px dashed #eee">
       <h4>${_('Pull request reviewers')}</h4>
        <div id="reviewers" style="padding:0px 0px 5px 10px">
          ## members goes here !
          <div class="group_members_wrap" style="min-height:45px">
            <ul id="review_members" class="group_members">
            %for member,status in c.pull_request_reviewers:
              <li id="reviewer_${member.user_id}">
                <div class="reviewers_member">
                    <div style="float:left;padding:0px 3px 0px 0px" class="tooltip" title="${h.tooltip(h.changeset_status_lbl(status[0][1].status if status else 'not_reviewed'))}">
                      <img src="${h.url(str('/images/icons/flag_status_%s.png' % (status[0][1].status if status else 'not_reviewed')))}"/>
                    </div>
                  <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(member.email,14)}"/> </div>
                  <div style="float:left">${member.full_name} (${_('owner') if c.pull_request.user_id == member.user_id else _('reviewer')})</div>
                  <input type="hidden" value="${member.user_id}" name="review_members" />
                  %if not c.pull_request.is_closed() and (h.HasPermissionAny('hg.admin', 'repository.admin')() or c.pull_request.user_id == c.rhodecode_user.user_id):
                  <span class="delete_icon action_button" onclick="removeReviewMember(${member.user_id})"></span>
                  %endif
                </div>
              </li>
            %endfor
            </ul>
          </div>
          %if not c.pull_request.is_closed():
          <div class='ac'>
            %if h.HasPermissionAny('hg.admin', 'repository.admin')() or c.pull_request.author.user_id == c.rhodecode_user.user_id:
            <div class="reviewer_ac">
               ${h.text('user', class_='yui-ac-input')}
               <span class="help-block">${_('Add or remove reviewer to this pull request.')}</span>
               <div id="reviewers_container"></div>
            </div>
            <div style="padding:0px 10px">
             <span id="update_pull_request" class="ui-btn xsmall">${_('save changes')}</span>
            </div>
            %endif
          </div>
          %endif
        </div>
       </div>
    </div>
    <script>
    var _USERS_AC_DATA = ${c.users_array|n};
    var _GROUPS_AC_DATA = ${c.users_groups_array|n};
    // TODO: switch this to pyroutes
    AJAX_COMMENT_URL = "${url('pullrequest_comment',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id)}";
    AJAX_COMMENT_DELETE_URL = "${url('pullrequest_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";

    pyroutes.register('pullrequest_comment', "${url('pullrequest_comment',repo_name='%(repo_name)s',pull_request_id='%(pull_request_id)s')}", ['repo_name', 'pull_request_id']);
    pyroutes.register('pullrequest_comment_delete', "${url('pullrequest_comment_delete',repo_name='%(repo_name)s',comment_id='%(comment_id)s')}", ['repo_name', 'comment_id']);
    pyroutes.register('pullrequest_update', "${url('pullrequest_update',repo_name='%(repo_name)s',pull_request_id='%(pull_request_id)s')}", ['repo_name', 'pull_request_id']);

    </script>

    ## diff block
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
    %for fid, change, f, stat in c.files:
      ${diff_block.diff_block_simple([c.changes[fid]])}
    %endfor
    % if c.limited_diff:
      <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}" onclick="return confirm('${_("confirm to show potentially huge diff")}')">${_('Show full diff')}</a></h4>
    % endif


    ## template for inline comment form
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
    ${comment.comment_inline_form()}

    ## render comments and inlines
    ${comment.generate_comments(include_pr=True)}

    % if not c.pull_request.is_closed():
      ## main comment form and it status
      ${comment.comments(h.url('pullrequest_comment', repo_name=c.repo_name,
                                pull_request_id=c.pull_request.pull_request_id),
                                c.current_changeset_status,
                                close_btn=True, change_status=c.allowed_to_change_status)}
    %endif

    <script type="text/javascript">
      YUE.onDOMReady(function(){
          PullRequestAutoComplete('user', 'reviewers_container', _USERS_AC_DATA, _GROUPS_AC_DATA);

          YUE.on(YUQ('.show-inline-comments'),'change',function(e){
              var show = 'none';
              var target = e.currentTarget;
              if(target.checked){
                  var show = ''
              }
              var boxid = YUD.getAttribute(target,'id_for');
              var comments = YUQ('#{0} .inline-comments'.format(boxid));
              for(c in comments){
                 YUD.setStyle(comments[c],'display',show);
              }
              var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
              for(c in btns){
                  YUD.setStyle(btns[c],'display',show);
               }
          })

          YUE.on(YUQ('.line'),'click',function(e){
              var tr = e.currentTarget;
              injectInlineForm(tr);
          });

          // inject comments into they proper positions
          var file_comments = YUQ('.inline-comment-placeholder');
          renderInlineComments(file_comments);

          YUE.on(YUD.get('update_pull_request'),'click',function(e){
              updateReviewers(undefined, "${c.repo_name}", "${c.pull_request.pull_request_id}");
          })
      })
    </script>

</div>

</%def>