##// END OF EJS Templates
user-groups: fix potential problem with group sync of external plugins....
user-groups: fix potential problem with group sync of external plugins. - when using external plugin we used to check for a parameter that set the sync mode. The problem is we only checked if the flag was there. So toggling sync on and off set the value and then left the key still set but with None. This confused the sync and thought the group should be synced !

File last commit:

r2105:4ad1a937 default
r2143:4314e88b default
Show More
pullrequest_show.mako
866 lines | 41.0 KiB | application/x-mako | MakoHtmlLexer
templating: use .mako as extensions for template files.
r1282 <%inherit file="/base/base.mako"/>
pr-versioning: implemented versioning for pull requests....
r1368 <%namespace name="base" file="/base/base.mako"/>
templating: use .mako as extensions for template files.
r1282
<%def name="title()">
${_('%s Pull Request #%s') % (c.repo_name, c.pull_request.pull_request_id)}
%if c.rhodecode_name:
&middot; ${h.branding(c.rhodecode_name)}
%endif
</%def>
<%def name="breadcrumbs_links()">
<span id="pr-title">
${c.pull_request.title}
%if c.pull_request.is_closed():
(${_('Closed')})
%endif
</span>
<div id="pr-title-edit" class="input" style="display: none;">
${h.text('pullrequest_title', id_="pr-title-input", class_="large", value=c.pull_request.title)}
</div>
</%def>
<%def name="menu_bar_nav()">
${self.menu_items(active='repositories')}
</%def>
<%def name="menu_bar_subnav()">
${self.repo_menu(active='showpullrequest')}
</%def>
<%def name="main()">
html: fixed found syntax problems
r1283
templating: use .mako as extensions for template files.
r1282 <script type="text/javascript">
// TODO: marcink switch this to pyroutes
pull-requests: migrated code from pylons to pyramid
r1974 AJAX_COMMENT_DELETE_URL = "${h.route_path('pullrequest_comment_delete',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id,comment_id='__COMMENT_ID__')}";
templating: use .mako as extensions for template files.
r1282 templateContext.pull_request_data.pull_request_id = ${c.pull_request.pull_request_id};
</script>
<div class="box">
comments: use unified aggregation of comments counters....
r1332
templating: use .mako as extensions for template files.
r1282 <div class="title">
${self.repo_page_title(c.rhodecode_db_repo)}
</div>
${self.breadcrumbs()}
<div class="box pr-summary">
comments: use unified aggregation of comments counters....
r1332
templating: use .mako as extensions for template files.
r1282 <div class="summary-details block-left">
html: fixed found syntax problems
r1283 <% summary = lambda n:{False:'summary-short'}.get(n) %>
templating: use .mako as extensions for template files.
r1282 <div class="pr-details-title">
pull-request: extended default reviewers functionality....
r1769 <a href="${h.route_path('pull_requests_global', pull_request_id=c.pull_request.pull_request_id)}">${_('Pull request #%s') % c.pull_request.pull_request_id}</a> ${_('From')} ${h.format_date(c.pull_request.created_on)}
templating: use .mako as extensions for template files.
r1282 %if c.allowed_to_update:
<div id="delete_pullrequest" class="pull-right action_button ${'' if c.allowed_to_delete else 'disabled' }" style="clear:inherit;padding: 0">
% if c.allowed_to_delete:
forms: unified usage of h.secure_form. Make sure we ALWAYS pass in...
r2105 ${h.secure_form(h.route_path('pullrequest_delete', repo_name=c.pull_request.target_repo.repo_name, pull_request_id=c.pull_request.pull_request_id), request=request)}
templating: use .mako as extensions for template files.
r1282 ${h.submit('remove_%s' % c.pull_request.pull_request_id, _('Delete'),
pull-request: extended default reviewers functionality....
r1769 class_="btn btn-link btn-danger no-margin",onclick="return confirm('"+_('Confirm to delete this pull request')+"');")}
templating: use .mako as extensions for template files.
r1282 ${h.end_form()}
% else:
${_('Delete')}
% endif
</div>
<div id="open_edit_pullrequest" class="pull-right action_button">${_('Edit')}</div>
<div id="close_edit_pullrequest" class="pull-right action_button" style="display: none;padding: 0">${_('Cancel')}</div>
%endif
</div>
<div id="summary" class="fields pr-details-content">
<div class="field">
<div class="label-summary">
pull-request: extended default reviewers functionality....
r1769 <label>${_('Source')}:</label>
templating: use .mako as extensions for template files.
r1282 </div>
<div class="input">
<div class="pr-origininfo">
## branch link is only valid if it is a branch
<span class="tag">
%if c.pull_request.source_ref_parts.type == 'branch':
changelog: ported to pyramid views.
r1931 <a href="${h.route_path('repo_changelog', repo_name=c.pull_request.source_repo.repo_name, _query=dict(branch=c.pull_request.source_ref_parts.name))}">${c.pull_request.source_ref_parts.type}: ${c.pull_request.source_ref_parts.name}</a>
templating: use .mako as extensions for template files.
r1282 %else:
${c.pull_request.source_ref_parts.type}: ${c.pull_request.source_ref_parts.name}
%endif
</span>
<span class="clone-url">
repo-summary: re-implemented summary view as pyramid....
r1785 <a href="${h.route_path('repo_summary', repo_name=c.pull_request.source_repo.repo_name)}">${c.pull_request.source_repo.clone_url()}</a>
templating: use .mako as extensions for template files.
r1282 </span>
pull-requests: show common ancestor inside pull-request view....
r1594 <br/>
% if c.ancestor_commit:
${_('Common ancestor')}:
repo-commits: ported changeset code into pyramid views....
r1951 <code><a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=c.ancestor_commit.raw_id)}">${h.show_id(c.ancestor_commit)}</a></code>
pull-requests: show common ancestor inside pull-request view....
r1594 % endif
templating: use .mako as extensions for template files.
r1282 </div>
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976 %if h.is_hg(c.pull_request.source_repo):
<% clone_url = 'hg pull -r {} {}'.format(h.short_id(c.source_ref), c.pull_request.source_repo.clone_url()) %>
%elif h.is_git(c.pull_request.source_repo):
<% clone_url = 'git pull {} {}'.format(c.pull_request.source_repo.clone_url(), c.pull_request.source_ref_parts.name) %>
%endif
<div class="">
<input type="text" class="input-monospace pr-pullinfo" value="${clone_url}" readonly="readonly">
<i class="tooltip icon-clipboard clipboard-action pull-right pr-pullinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the pull url')}"></i>
templating: use .mako as extensions for template files.
r1282 </div>
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976
templating: use .mako as extensions for template files.
r1282 </div>
</div>
<div class="field">
<div class="label-summary">
<label>${_('Target')}:</label>
</div>
<div class="input">
<div class="pr-targetinfo">
## branch link is only valid if it is a branch
<span class="tag">
%if c.pull_request.target_ref_parts.type == 'branch':
changelog: ported to pyramid views.
r1931 <a href="${h.route_path('repo_changelog', repo_name=c.pull_request.target_repo.repo_name, _query=dict(branch=c.pull_request.target_ref_parts.name))}">${c.pull_request.target_ref_parts.type}: ${c.pull_request.target_ref_parts.name}</a>
templating: use .mako as extensions for template files.
r1282 %else:
${c.pull_request.target_ref_parts.type}: ${c.pull_request.target_ref_parts.name}
%endif
</span>
<span class="clone-url">
repo-summary: re-implemented summary view as pyramid....
r1785 <a href="${h.route_path('repo_summary', repo_name=c.pull_request.target_repo.repo_name)}">${c.pull_request.target_repo.clone_url()}</a>
templating: use .mako as extensions for template files.
r1282 </span>
</div>
</div>
</div>
## Link to the shadow repository.
<div class="field">
<div class="label-summary">
<label>${_('Merge')}:</label>
</div>
<div class="input">
% if not c.pull_request.is_closed() and c.pull_request.shadow_merge_ref:
%if h.is_hg(c.pull_request.target_repo):
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976 <% clone_url = 'hg clone --update {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
templating: use .mako as extensions for template files.
r1282 %elif h.is_git(c.pull_request.target_repo):
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976 <% clone_url = 'git clone --branch {} {} pull-request-{}'.format(c.pull_request.shadow_merge_ref.name, c.shadow_clone_url, c.pull_request.pull_request_id) %>
templating: use .mako as extensions for template files.
r1282 %endif
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976 <div class="">
<input type="text" class="input-monospace pr-mergeinfo" value="${clone_url}" readonly="readonly">
<i class="tooltip icon-clipboard clipboard-action pull-right pr-mergeinfo-copy" data-clipboard-text="${clone_url}" title="${_('Copy the clone url')}"></i>
</div>
templating: use .mako as extensions for template files.
r1282 % else:
pull-requests: add copy helpers into pull requests clone/pull url inputs.
r1976 <div class="">
${_('Shadow repository data not available')}.
</div>
templating: use .mako as extensions for template files.
r1282 % endif
</div>
</div>
<div class="field">
<div class="label-summary">
<label>${_('Review')}:</label>
</div>
<div class="input">
%if c.pull_request_review_status:
<div class="${'flag_status %s' % c.pull_request_review_status} tooltip pull-left"></div>
<span class="changeset-status-lbl tooltip">
%if c.pull_request.is_closed():
${_('Closed')},
%endif
${h.commit_status_lbl(c.pull_request_review_status)}
</span>
translation: unified usage of pluralize function ungettext....
r1945 - ${_ungettext('calculated based on %s reviewer vote', 'calculated based on %s reviewers votes', len(c.pull_request_reviewers)) % len(c.pull_request_reviewers)}
templating: use .mako as extensions for template files.
r1282 %endif
</div>
</div>
<div class="field">
<div class="pr-description-label label-summary">
<label>${_('Description')}:</label>
</div>
<div id="pr-desc" class="input">
<div class="pr-description">${h.urlify_commit_message(c.pull_request.description, c.repo_name)}</div>
</div>
<div id="pr-desc-edit" class="input textarea editor" style="display: none;">
<textarea id="pr-description-input" size="30">${c.pull_request.description}</textarea>
</div>
</div>
<div class="field">
pr-versioning: implemented versioning for pull requests....
r1368 <div class="label-summary">
<label>${_('Versions')}:</label>
</div>
<% outdated_comm_count_ver = len(c.inline_versions[None]['outdated']) %>
<% general_outdated_comm_count_ver = len(c.comment_versions[None]['outdated']) %>
templating: use .mako as extensions for template files.
r1282
<div class="pr-versions">
% if c.show_version_changes:
pr-versioning: implemented versioning for pull requests....
r1368 <% outdated_comm_count_ver = len(c.inline_versions[c.at_version_num]['outdated']) %>
<% general_outdated_comm_count_ver = len(c.comment_versions[c.at_version_num]['outdated']) %>
pr-versioning: link-changes
r1369 <a id="show-pr-versions" class="input" onclick="return versionController.toggleVersionView(this)" href="#show-pr-versions"
translation: unified usage of pluralize function ungettext....
r1945 data-toggle-on="${_ungettext('{} version available for this pull request, show it.', '{} versions available for this pull request, show them.', len(c.versions)).format(len(c.versions))}"
pr-versioning: implemented versioning for pull requests....
r1368 data-toggle-off="${_('Hide all versions of this pull request')}">
translation: unified usage of pluralize function ungettext....
r1945 ${_ungettext('{} version available for this pull request, show it.', '{} versions available for this pull request, show them.', len(c.versions)).format(len(c.versions))}
pr-versioning: link-changes
r1369 </a>
templating: use .mako as extensions for template files.
r1282 <table>
## SHOW ALL VERSIONS OF PR
<% ver_pr = None %>
comments: use unified aggregation of comments counters....
r1332
comments: properly show version of pull request into added comments....
r1286 % for data in reversed(list(enumerate(c.versions, 1))):
comments: use unified aggregation of comments counters....
r1332 <% ver_pos = data[0] %>
<% ver = data[1] %>
<% ver_pr = ver.pull_request_version_id %>
pr-versioning: implemented versioning for pull requests....
r1368 <% display_row = '' if c.at_version and (c.at_version_num == ver_pr or c.from_version_num == ver_pr) else 'none' %>
comments: properly show version of pull request into added comments....
r1286
pr-versioning: implemented versioning for pull requests....
r1368 <tr class="version-pr" style="display: ${display_row}">
<td>
<code>
pull-requests: migrated code from pylons to pyramid
r1974 <a href="${request.current_route_path(_query=dict(version=ver_pr or 'latest'))}">v${ver_pos}</a>
pr-versioning: implemented versioning for pull requests....
r1368 </code>
</td>
comments: use unified aggregation of comments counters....
r1332 <td>
pr-versioning: implemented versioning for pull requests....
r1368 <input ${'checked="checked"' if c.from_version_num == ver_pr else ''} class="compare-radio-button" type="radio" name="ver_source" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
<input ${'checked="checked"' if c.at_version_num == ver_pr else ''} class="compare-radio-button" type="radio" name="ver_target" value="${ver_pr or 'latest'}" data-ver-pos="${ver_pos}"/>
</td>
<td>
<% review_status = c.review_versions[ver_pr].status if ver_pr in c.review_versions else 'not_reviewed' %>
<div class="${'flag_status %s' % review_status} tooltip pull-left" title="${_('Your review status at this version')}">
</div>
</td>
<td>
% if c.at_version_num != ver_pr:
comments: use unified aggregation of comments counters....
r1332 <i class="icon-comment"></i>
pr-versioning: implemented versioning for pull requests....
r1368 <code class="tooltip" title="${_('Comment from pull request version {0}, general:{1} inline:{2}').format(ver_pos, len(c.comment_versions[ver_pr]['at']), len(c.inline_versions[ver_pr]['at']))}">
pr-versioning: ux better selectors
r1370 G:${len(c.comment_versions[ver_pr]['at'])} / I:${len(c.inline_versions[ver_pr]['at'])}
comments: use unified aggregation of comments counters....
r1332 </code>
% endif
</td>
<td>
pr-versioning: implemented versioning for pull requests....
r1368 ##<code>${ver.source_ref_parts.commit_id[:6]}</code>
comments: use unified aggregation of comments counters....
r1332 </td>
<td>
pull-requests: show version age component should use local dates.
r1451 ${h.age_component(ver.updated_on, time_is_local=True)}
comments: use unified aggregation of comments counters....
r1332 </td>
</tr>
templating: use .mako as extensions for template files.
r1282 % endfor
<tr>
pr-versioning: ux better selectors
r1370 <td colspan="6">
<button id="show-version-diff" onclick="return versionController.showVersionDiff()" class="btn btn-sm" style="display: none"
data-label-text-locked="${_('select versions to show changes')}"
data-label-text-diff="${_('show changes between versions')}"
data-label-text-show="${_('show pull request for this version')}"
>
${_('select versions to show changes')}
pr-versioning: implemented versioning for pull requests....
r1368 </button>
templating: use .mako as extensions for template files.
r1282 </td>
pr-versioning: implemented versioning for pull requests....
r1368 </tr>
templating: use .mako as extensions for template files.
r1282
pr-versioning: implemented versioning for pull requests....
r1368 ## show comment/inline comments summary
<%def name="comments_summary()">
<tr>
<td colspan="6" class="comments-summary-td">
comments: use unified aggregation of comments counters....
r1332
% if c.at_version:
<% inline_comm_count_ver = len(c.inline_versions[c.at_version_num]['display']) %>
<% general_comm_count_ver = len(c.comment_versions[c.at_version_num]['display']) %>
${_('Comments at this version')}:
% else:
<% inline_comm_count_ver = len(c.inline_versions[c.at_version_num]['until']) %>
<% general_comm_count_ver = len(c.comment_versions[c.at_version_num]['until']) %>
${_('Comments for this pull request')}:
% endif
pr-versioning: implemented versioning for pull requests....
r1368
comments: use unified aggregation of comments counters....
r1332 %if general_comm_count_ver:
<a href="#comments">${_("%d General ") % general_comm_count_ver}</a>
templating: use .mako as extensions for template files.
r1282 %else:
comments: use unified aggregation of comments counters....
r1332 ${_("%d General ") % general_comm_count_ver}
templating: use .mako as extensions for template files.
r1282 %endif
%if inline_comm_count_ver:
, <a href="#" onclick="return Rhodecode.comments.nextComment();" id="inline-comments-counter">${_("%d Inline") % inline_comm_count_ver}</a>
%else:
, ${_("%d Inline") % inline_comm_count_ver}
%endif
comments: use unified aggregation of comments counters....
r1332 %if outdated_comm_count_ver:
, <a href="#" onclick="showOutdated(); Rhodecode.comments.nextOutdatedComment(); return false;">${_("%d Outdated") % outdated_comm_count_ver}</a>
templating: use .mako as extensions for template files.
r1282 <a href="#" class="showOutdatedComments" onclick="showOutdated(this); return false;"> | ${_('show outdated comments')}</a>
<a href="#" class="hideOutdatedComments" style="display: none" onclick="hideOutdated(this); return false;"> | ${_('hide outdated comments')}</a>
%else:
comments: use unified aggregation of comments counters....
r1332 , ${_("%d Outdated") % outdated_comm_count_ver}
templating: use .mako as extensions for template files.
r1282 %endif
</td>
</tr>
pr-versioning: implemented versioning for pull requests....
r1368 </%def>
${comments_summary()}
templating: use .mako as extensions for template files.
r1282 </table>
% else:
pr-versioning: implemented versioning for pull requests....
r1368 <div class="input">
templating: use .mako as extensions for template files.
r1282 ${_('Pull request versions not available')}.
pr-versioning: implemented versioning for pull requests....
r1368 </div>
<div>
<table>
${comments_summary()}
</table>
</div>
templating: use .mako as extensions for template files.
r1282 % endif
</div>
</div>
<div id="pr-save" class="field" style="display: none;">
<div class="label-summary"></div>
<div class="input">
pull-request: extended default reviewers functionality....
r1769 <span id="edit_pull_request" class="btn btn-small no-margin">${_('Save Changes')}</span>
templating: use .mako as extensions for template files.
r1282 </div>
</div>
</div>
</div>
<div>
## AUTHOR
<div class="reviewers-title block-right">
<div class="pr-details-title">
pull-requests: expose author in creation view to be consistent with show view.
r1786 ${_('Author of this pull request')}
templating: use .mako as extensions for template files.
r1282 </div>
</div>
<div class="block-right pr-details-content reviewers">
<ul class="group_members">
<li>
${self.gravatar_with_user(c.pull_request.author.email, 16)}
</li>
</ul>
</div>
pull-request: extended default reviewers functionality....
r1769
## REVIEW RULES
<div id="review_rules" style="display: none" class="reviewers-title block-right">
<div class="pr-details-title">
${_('Reviewer rules')}
%if c.allowed_to_update:
<span id="close_edit_reviewers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span>
%endif
</div>
<div class="pr-reviewer-rules">
## review rules will be appended here, by default reviewers logic
</div>
<input id="review_data" type="hidden" name="review_data" value="">
</div>
templating: use .mako as extensions for template files.
r1282 ## REVIEWERS
<div class="reviewers-title block-right">
<div class="pr-details-title">
${_('Pull request reviewers')}
%if c.allowed_to_update:
pull-request: extended default reviewers functionality....
r1769 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
templating: use .mako as extensions for template files.
r1282 %endif
</div>
</div>
<div id="reviewers" class="block-right pr-details-content reviewers">
## members goes here !
<input type="hidden" name="__start__" value="review_members:sequence">
<ul id="review_members" class="group_members">
pull-request: extended default reviewers functionality....
r1769 %for member,reasons,mandatory,status in c.pull_request_reviewers:
<li id="reviewer_${member.user_id}" class="reviewer_entry">
templating: use .mako as extensions for template files.
r1282 <div class="reviewers_member">
<div class="reviewer_status tooltip" title="${h.tooltip(h.commit_status_lbl(status[0][1].status if status else 'not_reviewed'))}">
<div class="${'flag_status %s' % (status[0][1].status if status else 'not_reviewed')} pull-left reviewer_member_status"></div>
</div>
<div id="reviewer_${member.user_id}_name" class="reviewer_name">
${self.gravatar_with_user(member.email, 16)}
</div>
<input type="hidden" name="__start__" value="reviewer:mapping">
<input type="hidden" name="__start__" value="reasons:sequence">
%for reason in reasons:
<div class="reviewer_reason">- ${reason}</div>
<input type="hidden" name="reason" value="${reason}">
%endfor
<input type="hidden" name="__end__" value="reasons:sequence">
<input id="reviewer_${member.user_id}_input" type="hidden" value="${member.user_id}" name="user_id" />
pull-request: extended default reviewers functionality....
r1769 <input type="hidden" name="mandatory" value="${mandatory}"/>
templating: use .mako as extensions for template files.
r1282 <input type="hidden" name="__end__" value="reviewer:mapping">
pull-request: extended default reviewers functionality....
r1769 % if mandatory:
<div class="reviewer_member_mandatory_remove">
<i class="icon-remove-sign"></i>
</div>
<div class="reviewer_member_mandatory">
dan
tooltip: use consistent h.tooltip usage to set tooltips.
r1843 <i class="icon-lock" title="${h.tooltip(_('Mandatory reviewer'))}"></i>
pull-request: extended default reviewers functionality....
r1769 </div>
% else:
%if c.allowed_to_update:
<div class="reviewer_member_remove action_button" onclick="reviewersController.removeReviewMember(${member.user_id}, true)" style="visibility: hidden;">
<i class="icon-remove-sign" ></i>
</div>
%endif
% endif
templating: use .mako as extensions for template files.
r1282 </div>
</li>
%endfor
</ul>
<input type="hidden" name="__end__" value="review_members:sequence">
pull-request: extended default reviewers functionality....
r1769
%if not c.pull_request.is_closed():
<div id="add_reviewer" class="ac" style="display: none;">
%if c.allowed_to_update:
% if not c.forbid_adding_reviewers:
<div id="add_reviewer_input" class="reviewer_ac">
${h.text('user', class_='ac-input', placeholder=_('Add reviewer or reviewer group'))}
<div id="reviewers_container"></div>
</div>
% endif
<div class="pull-right">
<button id="update_pull_request" class="btn btn-small no-margin">${_('Save Changes')}</button>
</div>
%endif
</div>
templating: use .mako as extensions for template files.
r1282 %endif
</div>
</div>
</div>
<div class="box">
##DIFF
<div class="table" >
<div id="changeset_compare_view_content">
##CS
% if c.missing_requirements:
<div class="box">
<div class="alert alert-warning">
<div>
<strong>${_('Missing requirements:')}</strong>
${_('These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled.')}
</div>
</div>
</div>
% elif c.missing_commits:
<div class="box">
<div class="alert alert-warning">
<div>
<strong>${_('Missing commits')}:</strong>
${_('This pull request cannot be displayed, because one or more commits no longer exist in the source repository.')}
${_('Please update this pull request, push the commits back into the source repository, or consider closing this pull request.')}
</div>
</div>
</div>
% endif
pr-versioning: implemented versioning for pull requests....
r1368
<div class="compare_view_commits_title">
% if not c.compare_mode:
% if c.at_version_pos:
<h4>
${_('Showing changes at v%d, commenting is disabled.') % c.at_version_pos}
</h4>
% endif
templating: use .mako as extensions for template files.
r1282
<div class="pull-left">
<div class="btn-group">
<a
class="btn"
href="#"
onclick="$('.compare_select').show();$('.compare_select_hidden').hide(); return false">
translation: unified usage of pluralize function ungettext....
r1945 ${_ungettext('Expand %s commit','Expand %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
templating: use .mako as extensions for template files.
r1282 </a>
<a
class="btn"
href="#"
onclick="$('.compare_select').hide();$('.compare_select_hidden').show(); return false">
translation: unified usage of pluralize function ungettext....
r1945 ${_ungettext('Collapse %s commit','Collapse %s commits', len(c.commit_ranges)) % len(c.commit_ranges)}
templating: use .mako as extensions for template files.
r1282 </a>
</div>
</div>
<div class="pull-right">
% if c.allowed_to_update and not c.pull_request.is_closed():
pull-request: extended default reviewers functionality....
r1769 <a id="update_commits" class="btn btn-primary no-margin pull-right">${_('Update commits')}</a>
templating: use .mako as extensions for template files.
r1282 % else:
<a class="tooltip btn disabled pull-right" disabled="disabled" title="${_('Update is disabled for current view')}">${_('Update commits')}</a>
% endif
</div>
pr-versioning: implemented versioning for pull requests....
r1368 % endif
</div>
pull-requests: fixed small UI issues in case of missing commits inside a Pull request.
r1287
templating: use .mako as extensions for template files.
r1282 % if not c.missing_commits:
pr-versioning: implemented versioning for pull requests....
r1368 % if c.compare_mode:
% if c.at_version:
<h4>
${_('Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled').format(ver_from=c.from_version_pos, ver_to=c.at_version_pos if c.at_version_pos else 'latest')}:
</h4>
<div class="subtitle-compare">
${_('commits added: {}, removed: {}').format(len(c.commit_changes_summary.added), len(c.commit_changes_summary.removed))}
</div>
<div class="container">
<table class="rctable compare_view_commits">
<tr>
<th></th>
<th>${_('Time')}</th>
<th>${_('Author')}</th>
<th>${_('Commit')}</th>
<th></th>
<th>${_('Description')}</th>
</tr>
% for c_type, commit in c.commit_changes:
% if c_type in ['a', 'r']:
<%
if c_type == 'a':
cc_title = _('Commit added in displayed changes')
elif c_type == 'r':
cc_title = _('Commit removed in displayed changes')
else:
cc_title = ''
%>
<tr id="row-${commit.raw_id}" commit_id="${commit.raw_id}" class="compare_select">
<td>
<div class="commit-change-indicator color-${c_type}-border">
dan
tooltip: use consistent h.tooltip usage to set tooltips.
r1843 <div class="commit-change-content color-${c_type} tooltip" title="${h.tooltip(cc_title)}">
pr-versioning: implemented versioning for pull requests....
r1368 ${c_type.upper()}
</div>
</div>
</td>
<td class="td-time">
${h.age_component(commit.date)}
</td>
<td class="td-user">
${base.gravatar_with_user(commit.author, 16)}
</td>
<td class="td-hash">
<code>
repo-commits: ported changeset code into pyramid views....
r1951 <a href="${h.route_path('repo_commit', repo_name=c.target_repo.repo_name, commit_id=commit.raw_id)}">
pr-versioning: implemented versioning for pull requests....
r1368 r${commit.revision}:${h.short_id(commit.raw_id)}
</a>
${h.hidden('revisions', commit.raw_id)}
</code>
</td>
<td class="expand_commit" data-commit-id="${commit.raw_id}" title="${_( 'Expand commit message')}">
<div class="show_more_col">
<i class="show_more"></i>
</div>
</td>
<td class="mid td-description">
<div class="log-container truncate-wrap">
<div class="message truncate" id="c-${commit.raw_id}" data-message-raw="${commit.message}">
${h.urlify_commit_message(commit.message, c.repo_name)}
</div>
</div>
</td>
</tr>
% endif
% endfor
</table>
</div>
<script>
$('.expand_commit').on('click',function(e){
var target_expand = $(this);
var cid = target_expand.data('commitId');
if (target_expand.hasClass('open')){
$('#c-'+cid).css({
'height': '1.5em',
'white-space': 'nowrap',
'text-overflow': 'ellipsis',
'overflow':'hidden'
});
target_expand.removeClass('open');
}
else {
$('#c-'+cid).css({
'height': 'auto',
'white-space': 'pre-line',
'text-overflow': 'initial',
'overflow':'visible'
});
target_expand.addClass('open');
}
});
</script>
% endif
% else:
<%include file="/compare/compare_commits.mako" />
% endif
html: fixed found syntax problems
r1283 <div class="cs_files">
pull-requests: fixed small UI issues in case of missing commits inside a Pull request.
r1287 <%namespace name="cbdiffs" file="/codeblocks/diffs.mako"/>
${cbdiffs.render_diffset_menu()}
${cbdiffs.render_diffset(
c.diffset, use_comments=True,
collapse_when_files_over=30,
disable_new_comments=not c.allowed_to_comment,
deleted_files_comments=c.deleted_files_comments)}
</div>
% else:
## skipping commits we need to clear the view for missing commits
<div style="clear:both;"></div>
% endif
templating: use .mako as extensions for template files.
r1282
</div>
</div>
## template for inline comment form
<%namespace name="comment" file="/changeset/changeset_file_comment.mako"/>
## render general comments
comments: use unified aggregation of comments counters....
r1332
<div id="comment-tr-show">
<div class="comment">
pull-request: introduced new merge-checks....
r1334 % if general_outdated_comm_count_ver:
comments: use unified aggregation of comments counters....
r1332 <div class="meta">
pull-request: introduced new merge-checks....
r1334 % if general_outdated_comm_count_ver == 1:
${_('there is {num} general comment from older versions').format(num=general_outdated_comm_count_ver)},
pr-versioning: link-changes
r1369 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show it')}</a>
pull-request: introduced new merge-checks....
r1334 % else:
${_('there are {num} general comments from older versions').format(num=general_outdated_comm_count_ver)},
pr-versioning: link-changes
r1369 <a href="#show-hidden-comments" onclick="$('.comment-general.comment-outdated').show(); $(this).parent().hide(); return false;">${_('show them')}</a>
comments: use unified aggregation of comments counters....
r1332 % endif
</div>
pull-request: introduced new merge-checks....
r1334 % endif
comments: use unified aggregation of comments counters....
r1332 </div>
</div>
${comment.generate_comments(c.comments, include_pull_request=True, is_pull_request=True)}
templating: use .mako as extensions for template files.
r1282
% if not c.pull_request.is_closed():
pull-request: introduced new merge-checks....
r1334 ## merge status, and merge action
<div class="pull-request-merge">
<%include file="/pullrequests/pullrequest_merge_checks.mako"/>
</div>
templating: use .mako as extensions for template files.
r1282 ## main comment form and it status
pull-requests: migrated code from pylons to pyramid
r1974 ${comment.comments(h.route_path('pullrequest_comment_create', repo_name=c.repo_name,
pull_request_id=c.pull_request.pull_request_id),
templating: use .mako as extensions for template files.
r1282 c.pull_request_review_status,
is_pull_request=True, change_status=c.allowed_to_change_status)}
%endif
<script type="text/javascript">
if (location.hash) {
var result = splitDelimitedHash(location.hash);
comments: use unified aggregation of comments counters....
r1332 var line = $('html').find(result.loc);
// show hidden comments if we use location.hash
if (line.hasClass('comment-general')) {
$(line).show();
} else if (line.hasClass('comment-inline')) {
$(line).show();
var $cb = $(line).closest('.cb');
$cb.removeClass('cb-collapsed')
}
templating: use .mako as extensions for template files.
r1282 if (line.length > 0){
offsetScroll(line, 70);
}
}
comments: use unified aggregation of comments counters....
r1332
pr-versioning: implemented versioning for pull requests....
r1368 versionController = new VersionController();
versionController.init();
pull-request: extended default reviewers functionality....
r1769 reviewersController = new ReviewersController();
pr-versioning: implemented versioning for pull requests....
r1368
templating: use .mako as extensions for template files.
r1282 $(function(){
pull-request: extended default reviewers functionality....
r1769
templating: use .mako as extensions for template files.
r1282 // custom code mirror
var codeMirrorInstance = initPullRequestsCodeMirror('#pr-description-input');
var PRDetails = {
editButton: $('#open_edit_pullrequest'),
closeButton: $('#close_edit_pullrequest'),
deleteButton: $('#delete_pullrequest'),
viewFields: $('#pr-desc, #pr-title'),
editFields: $('#pr-desc-edit, #pr-title-edit, #pr-save'),
init: function() {
var that = this;
this.editButton.on('click', function(e) { that.edit(); });
this.closeButton.on('click', function(e) { that.view(); });
},
edit: function(event) {
this.viewFields.hide();
this.editButton.hide();
this.deleteButton.hide();
this.closeButton.show();
this.editFields.show();
codeMirrorInstance.refresh();
},
view: function(event) {
this.editButton.show();
this.deleteButton.show();
this.editFields.hide();
this.closeButton.hide();
this.viewFields.show();
}
};
var ReviewersPanel = {
editButton: $('#open_edit_reviewers'),
closeButton: $('#close_edit_reviewers'),
pull-request: extended default reviewers functionality....
r1769 addButton: $('#add_reviewer'),
removeButtons: $('.reviewer_member_remove,.reviewer_member_mandatory_remove,.reviewer_member_mandatory'),
templating: use .mako as extensions for template files.
r1282
init: function() {
pull-request: extended default reviewers functionality....
r1769 var self = this;
this.editButton.on('click', function(e) { self.edit(); });
this.closeButton.on('click', function(e) { self.close(); });
templating: use .mako as extensions for template files.
r1282 },
edit: function(event) {
this.editButton.hide();
this.closeButton.show();
this.addButton.show();
this.removeButtons.css('visibility', 'visible');
pull-request: extended default reviewers functionality....
r1769 // review rules
reviewersController.loadReviewRules(
${c.pull_request.reviewer_data_json | n});
templating: use .mako as extensions for template files.
r1282 },
close: function(event) {
this.editButton.show();
this.closeButton.hide();
this.addButton.hide();
this.removeButtons.css('visibility', 'hidden');
pull-request: extended default reviewers functionality....
r1769 // hide review rules
reviewersController.hideReviewRules()
templating: use .mako as extensions for template files.
r1282 }
};
PRDetails.init();
ReviewersPanel.init();
showOutdated = function(self){
comments: use unified aggregation of comments counters....
r1332 $('.comment-inline.comment-outdated').show();
templating: use .mako as extensions for template files.
r1282 $('.filediff-outdated').show();
$('.showOutdatedComments').hide();
$('.hideOutdatedComments').show();
};
hideOutdated = function(self){
comments: use unified aggregation of comments counters....
r1332 $('.comment-inline.comment-outdated').hide();
templating: use .mako as extensions for template files.
r1282 $('.filediff-outdated').hide();
$('.hideOutdatedComments').hide();
$('.showOutdatedComments').show();
};
pull-request: introduced new merge-checks....
r1334 refreshMergeChecks = function(){
pull-requests: migrated code from pylons to pyramid
r1974 var loadUrl = "${request.current_route_path(_query=dict(merge_checks=1))}";
pull-request: introduced new merge-checks....
r1334 $('.pull-request-merge').css('opacity', 0.3);
pull-requests: add explicit CLOSE pr action instead of closed status from selector....
r1445 $('.action-buttons-extra').css('opacity', 0.3);
pull-request: introduced new merge-checks....
r1334 $('.pull-request-merge').load(
pull-requests: add explicit CLOSE pr action instead of closed status from selector....
r1445 loadUrl, function() {
pull-request: introduced new merge-checks....
r1334 $('.pull-request-merge').css('opacity', 1);
pull-requests: add explicit CLOSE pr action instead of closed status from selector....
r1445
$('.action-buttons-extra').css('opacity', 1);
injectCloseAction();
pull-request: introduced new merge-checks....
r1334 }
);
};
pull-requests: add explicit CLOSE pr action instead of closed status from selector....
r1445 injectCloseAction = function() {
var closeAction = $('#close-pull-request-action').html();
var $actionButtons = $('.action-buttons-extra');
// clear the action before
$actionButtons.html("");
$actionButtons.html(closeAction);
};
closePullRequest = function (status) {
// inject closing flag
$('.action-buttons-extra').append('<input type="hidden" class="close-pr-input" id="close_pull_request" value="1">');
$(generalCommentForm.statusChange).select2("val", status).trigger('change');
$(generalCommentForm.submitForm).submit();
};
templating: use .mako as extensions for template files.
r1282 $('#show-outdated-comments').on('click', function(e){
var button = $(this);
var outdated = $('.comment-outdated');
if (button.html() === "(Show)") {
button.html("(Hide)");
outdated.show();
} else {
button.html("(Show)");
outdated.hide();
}
});
$('.show-inline-comments').on('change', function(e){
var show = 'none';
var target = e.currentTarget;
if(target.checked){
show = ''
}
var boxid = $(target).attr('id_for');
var comments = $('#{0} .inline-comments'.format(boxid));
var fn_display = function(idx){
$(this).css('display', show);
};
$(comments).each(fn_display);
var btns = $('#{0} .inline-comments-button'.format(boxid));
$(btns).each(fn_display);
});
$('#merge_pull_request_form').submit(function() {
if (!$('#merge_pull_request').attr('disabled')) {
$('#merge_pull_request').attr('disabled', 'disabled');
}
return true;
});
$('#edit_pull_request').on('click', function(e){
var title = $('#pr-title-input').val();
var description = codeMirrorInstance.getValue();
editPullRequest(
"${c.repo_name}", "${c.pull_request.pull_request_id}",
title, description);
});
$('#update_pull_request').on('click', function(e){
pull-request: lock button when updating reviewers to forbid multi-submit....
r1578 $(this).attr('disabled', 'disabled');
$(this).addClass('disabled');
pull-request: force update pull-request in case of the target repo reference changes....
r1595 $(this).html(_gettext('Saving...'));
pull-request: extended default reviewers functionality....
r1769 reviewersController.updateReviewers(
"${c.repo_name}", "${c.pull_request.pull_request_id}");
templating: use .mako as extensions for template files.
r1282 });
$('#update_commits').on('click', function(e){
var isDisabled = !$(e.currentTarget).attr('disabled');
pull-request: force update pull-request in case of the target repo reference changes....
r1595 $(e.currentTarget).attr('disabled', 'disabled');
$(e.currentTarget).addClass('disabled');
$(e.currentTarget).removeClass('btn-primary');
templating: use .mako as extensions for template files.
r1282 $(e.currentTarget).text(_gettext('Updating...'));
if(isDisabled){
pull-request: extended default reviewers functionality....
r1769 updateCommits(
"${c.repo_name}", "${c.pull_request.pull_request_id}");
templating: use .mako as extensions for template files.
r1282 }
});
// fixing issue with caches on firefox
$('#update_commits').removeAttr("disabled");
$('.show-inline-comments').on('click', function(e){
var boxid = $(this).attr('data-comment-id');
var button = $(this);
if(button.hasClass("comments-visible")) {
$('#{0} .inline-comments'.format(boxid)).each(function(index){
$(this).hide();
});
button.removeClass("comments-visible");
} else {
$('#{0} .inline-comments'.format(boxid)).each(function(index){
$(this).show();
});
button.addClass("comments-visible");
}
});
pull-request: introduced new merge-checks....
r1334
// register submit callback on commentForm form to track TODOs
window.commentFormGlobalSubmitSuccessCallback = function(){
refreshMergeChecks();
};
pull-requests: add explicit CLOSE pr action instead of closed status from selector....
r1445 // initial injection
injectCloseAction();
pull-request: introduced new merge-checks....
r1334
pull-request: extended default reviewers functionality....
r1769 ReviewerAutoComplete('#user');
templating: use .mako as extensions for template files.
r1282 })
</script>
</div>
</div>
</%def>