| {%extends "change_base.html"%} |
| |
| {%block change_body%} |
| |
| {%if last_patchset.draft_count%} |
| <div class="error"> |
| You have <b>{{last_patchset.draft_count}} draft</b> |
| comment{{last_patchset.draft_count|pluralize}}. Drafts are not viewable by others; |
| use <a class="novisit" href="{%url codereview.views.publish change.key.id%}"> |
| Publish Comments & Approvals</a> ('m') to let others view them. |
| </div> |
| {%endif%} |
| |
| |
| <div class="toggled_section"> |
| <h2><a id="change-description-pointer" |
| href="javascript:M_toggleSection('change-description')" |
| class="toggled_section_pointer opentriangle"> |
| Description</a></h2> |
| <div id="change-description"> |
| <table width="100%" style=""><tr><td style="vertical-align: top;"> |
| {%if change.description%} |
| <pre class="change_description">{{change.description|wordwrap:80|urlize}}</pre> |
| {%endif%}</td><td style="vertical-align: top;" align="right"> |
| <table class="change_details"> |
| <tr class="first"> |
| <th>Project</th> |
| <td>{{change.dest_project.name}}</td> |
| </tr> |
| <tr> |
| <th>Branch</th> |
| <td>{{change.dest_branch.short_name}}</td> |
| </tr> |
| <tr> |
| <th>Uploaded</th> |
| <td>{{change.created|timesince}} ago<br /> |
| by {{change.owner|show_user}}</td> |
| </tr> |
| <tr class="last"> |
| <th>Modified</th> |
| <td>{{change.modified|timesince}} ago</td> |
| </tr> |
| </table> |
| </td></tr> |
| </table> |
| </div> |
| </div> |
| |
| <div class="toggled_section"> |
| <h2> |
| <a id="ps-dependson-pointer" |
| href="javascript:M_toggleSection('ps-dependson')" |
| class="toggled_section_pointer {%if show_dependencies %}opentriangle{% endif %}"> |
| Dependencies |
| </a> |
| </h2> |
| <div id="ps-dependson" |
| style="{%if not show_dependencies %}display:none{% endif %}"> |
| {{dependencies_table}} |
| </div> |
| </div> |
| |
| <div class="toggled_section"> |
| <h2> |
| <a id="ps-approvals-pointer" |
| href="javascript:M_toggleSection('ps-approvals')" |
| class="toggled_section_pointer opentriangle"> |
| Approvals |
| </a> |
| </h2> |
| <div id="ps-approvals" style="padding-left:4px;"> |
| <table class="change_info_table" cellpadding="0" cellspacing="0" border="0" id=""> |
| <tr> |
| <th class="leftmost" colspan="2">Reviewer</th> |
| <th class="score">Verified</th> |
| <th class="score rightmost">Code review</th> |
| <th class="hint"></th> |
| </tr> |
| <tr> |
| <td>{{change.owner|show_user}}</td> |
| <td></td> |
| <td class="score">{%if author_status.verified %}<img src="/static/check.png">{%endif%}</td> |
| <td class="score">{{author_status.lgtm|review_status_icons}}</td> |
| <td class="hint">{% ifequal author_status.lgtm "lgtm" %}Self approved.{% endifequal %}</td> |
| </tr> |
| {% for rs in review_status %} |
| <tr> |
| <td>{{rs.user|show_user}}</td> |
| <td>{{rs.user_type}}</td> |
| <td class="score">{%if rs.verified %}<img src="/static/check.png">{%endif%}</td> |
| <td class="score">{{rs.lgtm|review_status_icons}}</td> |
| <td class="hint">{{rs.lgtm|review_status_text}}</font> |
| </tr> |
| {% endfor %} |
| </table> |
| |
| {%if user%} |
| <table class="change_actions"><tr> |
| <td class="action"> |
| <form method="get" action="{%url codereview.views.publish change.key.id%}"> |
| <input type="submit" value="Publish Comments & Approvals" /> |
| </form> |
| </td> |
| |
| <td class="action"> |
| <form action="{{merge_url}}" method="post"> |
| {{merge_url|form_xsrf}} |
| <input type="submit" |
| {%if show_submit_button %}{%else%}disabled{%endif%} |
| value="{%if show_submit_button %}Submit Patch Set {{last_patchset.id}}{%else%}Can't Submit{%endif%}"/> |
| </form> |
| <div class="change_status"> |
| {%if last_patchset and not last_patchset.complete%} |
| Patch Set Still Uploading |
| {%endif%} |
| {%if change.is_submitted%} |
| {%if change.merged%} |
| Merged |
| {%else%} |
| Merge Pending |
| {%endif%} |
| {%else%} |
| {%if ready_to_submit%} |
| {%if show_submit_button%} |
| {%else%} |
| Ready to submit |
| {%endif%} |
| {%else%} |
| <ul> |
| {%if last_patchset and not last_patchset.complete%} |
| <li>Patch Set Still Uploading</li> |
| {%endif%} |
| {%if is_rejected %} |
| <li>Change Rejected</li> |
| {%endif%} |
| {%if not is_approved %} |
| <li>Needs Code Review</li> |
| {%endif%} |
| {%if not is_verified %} |
| <li>Needs Verification</li> |
| {%endif%} |
| </ul> |
| {%endif%} |
| {%endif%} |
| </td> |
| |
| <td class="action"> |
| {%if show_more_options %} |
| <script type="text/javascript"> |
| </script> |
| <input type="button" id="more_options" value="More options..." |
| onclick="show_confirmation_dialog('more_options', 'more_options_div');" /> |
| <table id="more_options_div" style="display: none;" class="more_options_dialog"> |
| <tr><th colspan="2"> |
| More options |
| </td></tr> |
| {%if show_edit_reviewers_button %} |
| <tr><td> |
| <form action="{{reviewers_url}}" method="get" style="display: inline;"> |
| <input type="submit" value="Edit reviewers..."> |
| </form> |
| </td> |
| <td> |
| Edit the reviewers for this change. |
| </td></tr> |
| {% endif %} |
| {%if show_add_reviewers_button %} |
| <tr><td> |
| <form action="{{reviewers_url}}" method="get" style="display: inline;"> |
| <input type="submit" value="Add reviewers..."> |
| </form> |
| </td> |
| <td> |
| Add reviewers to this change. |
| </td></tr> |
| {% endif %} |
| {%if show_remove_self_button %} |
| <tr><td> |
| <form action="{{remove_self_url}}" method="post" style="display: inline;"> |
| {{remove_self_url|form_xsrf}} |
| <input type="submit" value="Remove my review"> |
| </form> |
| </td> |
| <td> |
| Remove yourself as a reviewer, will also remove any positive or |
| negative scores. |
| </td></tr> |
| {% endif %} |
| <tr><td> |
| <form action="{{delete_url}}" method="post" style="display: inline;"> |
| {{delete_url|form_xsrf}} |
| <input type="submit" value="Delete"> |
| </form> |
| </td> |
| <td> |
| Delete this change<br/><b>(there is no undo!)</b> |
| <br/> |
| </td></tr> |
| <tr><td colspan=2> |
| <input type="button" value="Cancel" |
| onclick="hide_confirmation_dialog('more_options', 'more_options_div');" /> |
| </td></tr> |
| </table> |
| {%endif%} |
| </td> |
| </tr></table> |
| {%endif%} |
| </div> |
| </div> |
| |
| {%for patchset in patchsets%} |
| <div class="toggled_section"> |
| <h2> |
| <a id="ps-{{patchset.key.id}}-pointer" |
| href="javascript:M_togglePatchSetSection('{{change.key.id}}','{{patchset.key.id}}')" |
| class="toggled_section_pointer {%if forloop.last%}opentriangle{%endif%}"> |
| Patch Set {{patchset.id}}</a> |
| <font style="font-weight: normal; font-size: 12px;"> |
| <a href="{{patchset|patchset_browse_url}}">{{patchset.revision_hash}}</a></font> |
| </h2> |
| {%if forloop.last%} |
| <div id="ps-{{patchset.key.id}}"> |
| {%include "patchset.html"%} |
| </div> |
| {%else%} |
| <div id="ps-{{patchset.key.id}}" |
| style="display:none"> |
| </div> |
| {%endif%} |
| </div> |
| {%endfor%} |
| |
| {%if messages%} |
| <div class="toggled_section"> |
| <h2> |
| <a id="messages-pointer" |
| href="javascript:M_toggleSection('messages')" |
| class="toggled_section_pointer opentriangle"> |
| Messages |
| </a> |
| </h2> |
| |
| {%if messages%}<div><i>Total messages: {{messages|length}}</i></div>{%endif%} |
| |
| <div id="messages"> |
| <div style="margin-bottom: .5em;"> |
| <a href="javascript:M_showAllComments('cl', {{messages|length}})"> |
| Expand All Messages</a> |
| | |
| <a href="javascript:M_hideAllComments('cl', {{messages|length}})"> |
| Collapse All Messages</a> |
| </div> |
| |
| {%for message in messages%} |
| <div class="message"> |
| <div class="header"> |
| <table border="0" width="100%" cellspacing="0" cellpadding="0"> |
| <tr class="comment_title" |
| onclick="M_switchChangelistComment({{forloop.counter0}})"> |
| <td style="padding-left: 5px; white-space: nowrap;"> |
| <b>{{message.sender|real_name}}</b> |
| </td> |
| <td> |
| <table style="table-layout:fixed; white-space: nowrap;" |
| width="100%"> |
| <tr> |
| <td> |
| <div style="white-space: nowrap; overflow: hidden;{%if forloop.last%} visibility: hidden;{%endif%}" |
| class="extra" |
| id="cl-preview-{{forloop.counter0}}"> |
| {{message.text|truncatewords:15}} |
| </div> |
| </td> |
| </tr> |
| </table> |
| </td> |
| <td align="right" style="white-space: nowrap; padding-right: 5px;"> |
| {{message.date|timesince}} ago |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| <div id="cl-comment-{{forloop.counter0}}" |
| {%if forloop.last%}{%else%}style="display: none;"{%endif%}> |
| <div class="message-body"> |
| <pre name="cl-message-{{forloop.counter0}}" |
| >{{message.text|wordwrap:80|urlize}}</pre> |
| </div> |
| </div> |
| |
| </div> |
| {%endfor%} |
| |
| |
| <div> |
| <a href="javascript:M_showAllComments('cl', {{messages|length}})"> |
| Expand All Messages</a> |
| | |
| <a href="javascript:M_hideAllComments('cl', {{messages|length}})"> |
| Collapse All Messages</a> |
| </div> |
| |
| </div> |
| </div> |
| {%endif%} |
| |
| |
| <script language="JavaScript" type="text/javascript"> |
| <!-- |
| document.onkeypress = function(evt) { return M_changelistKeyPress(evt); } |
| // --> |
| </script> |
| |
| |
| {%if user%} |
| <div style="display:none;"> |
| <form method="POST" action="{{reply_url}}" id="message-reply-form"> |
| <div> |
| <textarea rows="7" cols="70" name="message"></textarea> |
| </div> |
| {{reply_url|form_xsrf}} |
| <input type="hidden" name="message_only" value="1" /> |
| <input type="submit" value="Send Message" /> |
| <input type="button" value="Discard" name="discard" /> |
| <input type="checkbox" name="send_mail" value="1" |
| id="message-reply-send-mail" checked="checked" /> |
| <label>Send mail to reviewers</label> |
| </form> |
| </div> |
| <a id="resizer" class="resizer" style="display:none;cursor:pointer"> |
| <img src="/static/zippyplus.gif"> |
| </a> |
| {%endif%} |
| |
| {%endblock%} |