##// END OF EJS Templates
pull requests throw an error if parent of fork didn't have any changesets yet. Now it's filter out from list of available sources
pull requests throw an error if parent of fork didn't have any changesets yet. Now it's filter out from list of available sources

File last commit:

r2907:0b86972d beta
r2933:07d620f6 beta
Show More
pullrequest_show.html
199 lines | 8.4 KiB | text/html | HtmlLexer
<%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.link_to(c.repo_name,h.url('changelog_home',repo_name=c.repo_name))}
&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>${_('Title')}: ${c.pull_request.title}</h3>
<div class="form">
<div id="summary" class="fields">
<div class="field">
<div class="label-summary">
<label>${_('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>
</div>
<div style="white-space:pre-wrap;padding:3px 3px 5px 20px">${h.literal(c.pull_request.description)}</div>
<div style="padding:4px 4px 10px 20px">
<div>${_('Created on')}: ${h.fmt_date(c.pull_request.created_on)}</div>
</div>
<div style="min-height:160px">
##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">${_('Incoming changesets')}</div>
<%include file="/compare/compare_cs.html" />
## FILES
<div style="font-size:1.1em;font-weight: bold;clear:both;padding-top:10px">${_('Files affected')}</div>
<div class="cs_files">
%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>
</div>
</div>
## REVIEWERS
<div style="float:left; border-left:1px dashed #eee">
<h4>${_('Pull request reviewers')}</h4>
<div id="reviewers" style="padding:0px 0px 0px 15px">
## members goes here !
<div class="group_members_wrap">
<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')})</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.author.user_id == c.rhodecode_user.user_id):
<span class="delete_icon action_button" onclick="removeReviewer(${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 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')}</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};
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__')}";
AJAX_UPDATE_PULLREQUEST = "${url('pullrequest_update',repo_name=c.repo_name,pull_request_id=c.pull_request.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
## 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()}
% 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)}
%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){
var reviewers_ids = [];
var ids = YUQ('#review_members input');
for(var i=0; i<ids.length;i++){
var id = ids[i].value
reviewers_ids.push(id);
}
updateReviewers(reviewers_ids);
})
})
</script>
</div>
</%def>