OLD | NEW |
(Empty) | |
| 1 [define title]Issue [issue.local_id][end] |
| 2 [define category_css]css/ph_detail.css[end] |
| 3 [include "../framework/master-header.ezt" "showtabs"] |
| 4 |
| 5 [define any_visible_deleted]false[end] |
| 6 [for comments] |
| 7 [if-any comments.can_delete_bool] |
| 8 [if-any comments.is_deleted_bool] |
| 9 [define any_visible_deleted]true[end] |
| 10 [end] |
| 11 [end] |
| 12 [end] |
| 13 |
| 14 [if-any page_perms.EditIssue page_perms.EditIssueSummary page_perms.EditIssueSta
tus page_perms.EditIssueOwner page_perms.EditIssueCc] |
| 15 [define offer_make_changes]yes[end] |
| 16 [else] |
| 17 [define offer_make_changes][end] |
| 18 [end] |
| 19 |
| 20 <div id="color_control" class="[if-any issue.is_open][else]closed_colors[end]"> |
| 21 |
| 22 <table width="100%" cellpadding="0" cellspacing="0" border="0" class="issuepage"
id="meta-container"> |
| 23 |
| 24 <tbody class="collapse"> [# collapse/expand controls undelete-able comments] |
| 25 <tr> |
| 26 <td nowrap="nowrap" class="vt h3 issuemetaheader" style="min-width:8em"> |
| 27 [define user_can_star]false[end] |
| 28 [if-any page_perms.SetStar] |
| 29 [if-any read_only][else] |
| 30 [define user_can_star]true[end] |
| 31 <a class="star" id="star" |
| 32 style="color:[if-any starred]cornflowerblue[else]gray[end]" |
| 33 title="[if-any starred]Un-s[else]S[end]tar this issue"> |
| 34 [if-any starred]★[else]☆[end] |
| 35 </a> |
| 36 [end] |
| 37 [end] |
| 38 <a href="detail?id=[issue.local_id]">Issue [issue.local_id]</a> |
| 39 |
| 40 [if-any page_perms.FlagSpam] |
| 41 <a class="spamflag" id="flag_spam" |
| 42 style="float:right; color:[if-any issue.flagged_spam_bool]red[else]gray[en
d]" |
| 43 title="[if-any issue.flagged_spam_bool]Un-f[else]F[end]lag as spam"> |
| 44 [if-any issue.flagged_spam_bool]⚑[else]⚐[end] |
| 45 </a> |
| 46 <form action="flagspam.do" method="post" id="spam_form" style="display:none
"> |
| 47 <input type="hidden" name="token" value="[flag_spam_token]"> |
| 48 <input type="hidden" name="id" value="[issue.local_id]"> |
| 49 <input type="hidden" name="spam" value="[if-any issue.flagged_spam_bool]fa
lse[else]true[end]"> |
| 50 </form> |
| 51 [end] |
| 52 </td> |
| 53 <td width="90%" class="vt issueheader" style="border-right: 2px solid white"> |
| 54 [if-any issue.flagged_spam_bool]<div style="border:1px solid red; background
:#fdd; padding:1em">You have reported this issue as spam. To undo this, click th
e flag again.</div>[end] |
| 55 <span class="h3" style="padding-left:4px">[issue.summary]</span> |
| 56 </td> |
| 57 <td class="issueheader"> |
| 58 [if-any flipper.show] |
| 59 <div class="pagination"> |
| 60 [if-any flipper.prev_url]<a href="[flipper.prev_url]" title="Prev">‹
Prev</a>[else][end] |
| 61 [flipper.current] of [flipper.total_count] |
| 62 [if-any flipper.next_url]<a href="[flipper.next_url]" title="Next">Next &rs
aquo;</a>[else][end] |
| 63 </div>[end] |
| 64 </td> |
| 65 </tr> |
| 66 <tr> |
| 67 <td nowrap="nowrap" class="issuemetaheader"> |
| 68 Starred by [issue.star_count] |
| 69 [is issue.star_count "1"] user [else] users [end] |
| 70 </td> |
| 71 <td class="issueheader" style="padding-left:6px; border-right: 2px solid white
"> |
| 72 [if-any description.creator_role]<span class="role_label">Project Member</
span>[end] |
| 73 Reported by |
| 74 [include "../framework/user-link.ezt" description.creator], |
| 75 <span class="date" title="[description.date_tooltip] UTC">[description.dat
e_string][description.date_relative]</span> |
| 76 [# Note: initial issue description cannot have come via email] |
| 77 </td> |
| 78 <td align="center" nowrap="nowrap" class="issueheader"> |
| 79 [if-any back_to_list_url] |
| 80 <a href="[back_to_list_url]">Back to list</a> |
| 81 [end] |
| 82 </td> |
| 83 </tr> |
| 84 |
| 85 |
| 86 <tr> |
| 87 <td id="issuemeta"> |
| 88 [if-any noisy] |
| 89 <br> |
| 90 Comments by non-members will not trigger notification emails to users who st
arred this issue. |
| 91 [end] |
| 92 <div id="meta-float"> |
| 93 [include "issue-meta-part.ezt" "show make changes below"] |
| 94 |
| 95 [is any_visible_deleted "true"] |
| 96 <br><br> |
| 97 <div style="text-align:right; margin-right:.3em; font-size:90%"> |
| 98 <a class="ifCollapse toggleCollapse" href="#" |
| 99 style="white-space:nowrap">Show deleted comments</a> |
| 100 <a class="ifExpand toggleCollapse" href="#" |
| 101 style="white-space:nowrap">Hide deleted comments</a> |
| 102 </div> |
| 103 [end] |
| 104 |
| 105 </div> |
| 106 </td> |
| 107 <td class="vt issuedescription" width="100%" id="cursorarea" colspan="2"> |
| 108 [include "issue-comments-part.ezt" "show-delete-comment-link"] |
| 109 </td> |
| 110 </tr> |
| 111 |
| 112 [if-any read_only][else] |
| 113 [if-any logged_in_user][else] |
| 114 <tr> |
| 115 <td colspan="2"></td> |
| 116 <td class="vt issuecomment"> |
| 117 <span class="indicator">►</span> <a href="[login_url]" |
| 118 >Sign in</a> to add a comment |
| 119 </td> |
| 120 </tr> |
| 121 [end] |
| 122 [end] |
| 123 </tbody> |
| 124 </table> |
| 125 <br> |
| 126 |
| 127 [include "../framework/footer-script.ezt"] |
| 128 |
| 129 [define user_can_comment]false[end] |
| 130 [if-any read_only][else] |
| 131 [if-any page_perms.AddIssueComment] |
| 132 [include "issue-update-form.ezt"] |
| 133 [define user_can_comment]true[end] |
| 134 [end] |
| 135 [end] |
| 136 |
| 137 |
| 138 </div> [# end color_control] |
| 139 |
| 140 [# Form used to submit comment soft delete and undelete changes.] |
| 141 <form name="delcom" action="delComment.do?q=[query]&can=[can]&groupby=[f
ormat "url"][groupby][end]&sort=[format "url"][sortspec][end]&colspec=[f
ormat "url"][colspec][end]" method="POST"> |
| 142 <input type="hidden" name="sequence_num" value=""> |
| 143 <input type="hidden" name="mode" value=""> |
| 144 <input type="hidden" name="id" value="[issue.local_id]"> |
| 145 <input type="hidden" name="token" value="[delComment_form_token]"> |
| 146 </form> |
| 147 |
| 148 [# Form used to flag/unflag comments as spam.] |
| 149 <form name="flagcom" action="flagspam.do" method="post"> |
| 150 <input type="hidden" name="comment_id" value=""> |
| 151 <input type="hidden" name="sequence_num" value=""> |
| 152 <input type="hidden" name="spam" value=""> |
| 153 <input type="hidden" name="id" value="[issue.local_id]"> |
| 154 <input type="hidden" name="token" value="[flag_spam_token]"> |
| 155 </form> |
| 156 |
| 157 |
| 158 <div id="helparea"></div> |
| 159 |
| 160 <script type="text/javascript" nonce="[nonce]"> |
| 161 runOnLoad(function() { |
| 162 _fetchOptions('[projectname]', 'issueOptions', |
| 163 CS_env.token, [project.cached_content_timestamp]); |
| 164 _fetchUserProjects(false); |
| 165 |
| 166 _onload(); |
| 167 |
| 168 function delComment(sequence_num, delete_mode) { |
| 169 var f = document.forms[[]"delcom"]; |
| 170 f.sequence_num.value = sequence_num; |
| 171 f.mode.value = delete_mode; |
| 172 [# TODO(jrobbins): submit in a subframe,XHR or ask user before losing commen
t in-progress ] |
| 173 var loading = $('comment-action-loading-' + sequence_num); |
| 174 loading.style.display = 'inline'; |
| 175 f.submit(); |
| 176 return false; |
| 177 } |
| 178 |
| 179 _floatMetadata(); |
| 180 |
| 181 if ($("star")) |
| 182 $("star").addEventListener("click", function (event) { |
| 183 _TKR_toggleStar($("star"), "[projectname]", [issue.local_id], null, "[set
_star_token]"); |
| 184 _TKR_syncStarIcons($("star"), "star2"); |
| 185 }); |
| 186 |
| 187 var delCommentElements = document.getElementsByClassName("delComment"); |
| 188 for (var i = 0; i < delCommentElements.length; ++i) { |
| 189 var el = delCommentElements[[]i]; |
| 190 el.addEventListener("click", function(event) { |
| 191 var sequence = event.target.getAttribute("data-sequence"); |
| 192 var mode = event.target.getAttribute("data-mode"); |
| 193 delComment(sequence, mode); |
| 194 event.preventDefault(); |
| 195 }); |
| 196 } |
| 197 |
| 198 function flagComment(comment_id, sequence_num, isSpam) { |
| 199 var f = document.forms[[]"flagcom"]; |
| 200 f.comment_id.value = comment_id; |
| 201 f.sequence_num.value = sequence_num; |
| 202 f.spam.value = isSpam.toLowerCase() == "false"; |
| 203 |
| 204 var loading = $('comment-action-loading-' + sequence_num); |
| 205 loading.style.display = 'inline'; |
| 206 |
| 207 f.submit(); |
| 208 return false; |
| 209 } |
| 210 |
| 211 var flagCommentElements = document.getElementsByClassName("flagComment"); |
| 212 for (var i = 0; i < flagCommentElements.length; ++i) { |
| 213 var el = flagCommentElements[[]i]; |
| 214 el.addEventListener("click", function(event) { |
| 215 var id = event.target.getAttribute("data-id"); |
| 216 var sequence = event.target.getAttribute("data-sequence"); |
| 217 var isSpam = event.target.getAttribute("data-spam"); |
| 218 flagComment(id, sequence, isSpam); |
| 219 event.preventDefault(); |
| 220 }); |
| 221 } |
| 222 |
| 223 window.userMadeChanges = false; |
| 224 var inputs = document.querySelectorAll('input[type~="text"], textarea'); |
| 225 for (var i = 0; i < inputs.length; i++) { |
| 226 var el = inputs[[]i]; |
| 227 el.addEventListener("input", function(event) { |
| 228 if (event.target.id != "searchq") { |
| 229 userMadeChanges = true; |
| 230 } |
| 231 }); |
| 232 } |
| 233 |
| 234 window.onbeforeunload = function() { |
| 235 if (userMadeChanges || TKR_isDirty) { |
| 236 return "You have unsaved changes. Leave this page and discard them?"; |
| 237 } |
| 238 }; |
| 239 |
| 240 |
| 241 |
| 242 }); |
| 243 </script> |
| 244 |
| 245 <script type="text/javascript" defer src="/static/third_party/js/kibbles-1.3.3.c
omp.js" nonce="[nonce]"></script> |
| 246 <script type="text/javascript" nonce="[nonce]"> |
| 247 runOnLoad(function() { |
| 248 _setupKibblesOnDetailPage( |
| 249 [if-any back_to_list_url]'[format "js"][back_to_list_url][end]'[else]'[projec
t_home_url]/issues/list'[end], |
| 250 '[project_home_url]/issues/entry', |
| 251 '[if-any flipper.show][if-any flipper.prev_url][format "js"][flipper.prev_url
][end][end][end]', |
| 252 '[if-any flipper.show][if-any flipper.next_url][format "js"][flipper.next_url
][end][end][end]', |
| 253 '[projectname]', [issue.local_id], |
| 254 [user_can_comment], [user_can_star], '[set_star_token]'); |
| 255 }); |
| 256 </script> |
| 257 |
| 258 |
| 259 [include "../framework/master-footer.ezt"] |
OLD | NEW |