summaryrefslogtreecommitdiffstats
path: root/webapp/templates/change.html
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/templates/change.html')
-rw-r--r--webapp/templates/change.html310
1 files changed, 310 insertions, 0 deletions
diff --git a/webapp/templates/change.html b/webapp/templates/change.html
new file mode 100644
index 0000000000..3a2ff07629
--- /dev/null
+++ b/webapp/templates/change.html
@@ -0,0 +1,310 @@
+{%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+Mail Comments</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>
+ <th>Project</th>
+ <td>{{change.dest_project.name}}</td>
+ </tr>
+ <tr>
+ <th>Branch</th>
+ <td>{{change.dest_branch.short_name}}</td>
+ </tr>
+ <tr>
+ <th>Created</th>
+ <td>{{change.created|timesince}} ago by {{change.owner|show_user}}</td>
+ </tr>
+ <tr>
+ <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 %}">
+ <table class="change-list">
+ {%include "change_heading.html"%}
+ <tr><th colspan="8" class="header-title">Depends On</th></tr>
+ {%if not depends_on%}
+ <tr><td colspan="8" class="disabled">(None)</td></tr>
+ {%else%}
+ {%for change in depends_on%}
+ {%include "change_row.html"%}
+ {%endfor%}
+ {%endif%}
+
+ <tr><th colspan="8" class="header-title">Needed By</th></tr>
+ {%if not needed_by%}
+ <tr><td colspan="8" class="disabled">(None)</td></tr>
+ {%else%}
+ {%for change in needed_by%}
+ {%include "change_row.html"%}
+ {%endfor%}
+ {%endif%}
+ </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">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 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 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+Mail Comments" />
+ </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 user_can_submit%}
+ {%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>
+
+ {%ifequal change.owner user %}
+ <td class="action">
+ <form method="get" action="{%url codereview.views.edit change.key.id%}">
+ <input type="submit" value="Edit Change"/>
+ </form>
+ </td>
+ {%endifequal%}
+ </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}}
+ {%if patchset.message%}: {{patchset.message}}{%endif%}
+ </a>
+ </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 class="message-actions">
+ {%if user%}
+ <a href="javascript:M_replyToMessage('{{forloop.counter0}}', '{{message.date|date:"Y/m/d H:i:s"}}', '{{message.sender|real_name:"x"}}')"
+ id="message-reply-href-{{forloop.counter0}}">Reply</a>
+ <div class="message-reply" id="message-reply-{{forloop.counter0}}"
+ style="display:none;"></div>
+ {%else%}
+ <a href="{{sign_in}}">Sign in</a> to reply to this message.
+ {%endif%}
+ </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%}