OLD | NEW |
(Empty) | |
| 1 [define title]Field [field_def.field_name][end] |
| 2 [define category_css]css/ph_detail.css[end] |
| 3 [include "../framework/master-header.ezt" "showtabs"] |
| 4 |
| 5 <a href="/p/[projectname]/adminLabels">‹ Back to field list</a><br><br> |
| 6 |
| 7 |
| 8 <h4>Custom field</h4> |
| 9 |
| 10 <form action="detail.do" method="POST"> |
| 11 <input type="hidden" name="token" value="[form_token]"> |
| 12 <input type="hidden" name="field" value="[field_def.field_name]"> |
| 13 |
| 14 <table cellspacing="8" class="rowmajor vt"> |
| 15 <tr> |
| 16 <th width="1%">Name:</th> |
| 17 <td> |
| 18 [if-any uneditable_name] |
| 19 <input type="hidden" name="name" value="[field_def.field_name]"> |
| 20 [field_def.field_name] |
| 21 [else][if-any allow_edit] |
| 22 <input name="name" value="[field_def.field_name]" size="30" class="acob"
> |
| 23 [else] |
| 24 [field_def.field_name] |
| 25 [end][end] |
| 26 </td> |
| 27 </tr> |
| 28 |
| 29 <tr> |
| 30 <th>Description:</th> |
| 31 <td> |
| 32 [if-any allow_edit] |
| 33 <textarea name="docstring" rows="4" cols="75">[field_def.docstring]</tex
tarea> |
| 34 [else] |
| 35 [field_def.docstring] |
| 36 [end] |
| 37 </td> |
| 38 </tr> |
| 39 |
| 40 <tr> |
| 41 <th>Type:</th> |
| 42 [# TODO(jrobbins): make field types editable someday.] |
| 43 <td>[field_def.type_name]</td> |
| 44 </tr> |
| 45 |
| 46 [is field_def.field_name "Type"][else] |
| 47 <tr> |
| 48 <th>Applicable:</th> |
| 49 <td>When issue type is: |
| 50 [if-any allow_edit] |
| 51 <select id="applicable_type" name="applicable_type"> |
| 52 <option value="" [is initial_applicable_type ""]selected="selected"[en
d]>Anything</option> |
| 53 <option disabled="disabled">----</option> |
| 54 [for well_known_issue_types] |
| 55 <option value="[well_known_issue_types]" [is initial_applicable_type
well_known_issue_types]selected="selected"[end]>[well_known_issue_types]</optio
n> |
| 56 [end] |
| 57 </select> |
| 58 [else] |
| 59 [initial_applicable_type] |
| 60 [end] |
| 61 [# TODO(jrobbins): editable applicable_predicate.] |
| 62 </td> |
| 63 </tr> |
| 64 [end] |
| 65 |
| 66 <tr> |
| 67 <th>Required:</th> |
| 68 <td> |
| 69 [if-any allow_edit] |
| 70 <input type="checkbox" id="is_required" name="is_required" class="acob" |
| 71 [if-any field_def.is_required_bool]checked="checked"[end]> |
| 72 <label for="is_required">Required when applicable</label> |
| 73 [else] |
| 74 [if-any field_def.is_required_bool]Yes[else]No[end] |
| 75 [end] |
| 76 </td> |
| 77 </tr> |
| 78 |
| 79 <tr> |
| 80 <th>Multivalued:</th> |
| 81 <td> |
| 82 [if-any allow_edit] |
| 83 <input type="checkbox" name="is_multivalued" class="acob" |
| 84 [if-any field_def.is_multivalued_bool]checked="checked"[end]> |
| 85 [else] |
| 86 [if-any field_def.is_multivalued_bool]Yes[else]No[end] |
| 87 [end] |
| 88 </td> |
| 89 </tr> |
| 90 |
| 91 [# TODO(jrobbins): dynamically display validation info as field type is edited
.] |
| 92 [is field_def.type_name "ENUM_TYPE"] |
| 93 <tr> |
| 94 <th>Choices:</th> |
| 95 <td> |
| 96 [if-any allow_edit] |
| 97 <textarea name="choices" rows="10" cols="75" style="tab-size:18"> |
| 98 [for field_def.choices][field_def.choices.name_padded][if-any field_def.choices.
docstring]	= [end][field_def.choices.docstring] |
| 99 [end] |
| 100 </textarea> |
| 101 [else] |
| 102 <table cellspacing="4" cellpadding="0" style="padding: 2px; border:2px
solid #eee"> |
| 103 [for field_def.choices] |
| 104 <tr> |
| 105 <td>[field_def.choices.name]</td> |
| 106 <td>[if-any field_def.choices.docstring]= [end][field_def.choice
s.docstring]</td> |
| 107 </tr> |
| 108 [end] |
| 109 </table> |
| 110 [end] |
| 111 </td> |
| 112 </tr> |
| 113 [end] |
| 114 |
| 115 [is field_def.type_name "INT_TYPE"] |
| 116 <tr id="int_row"> |
| 117 <th>Validation:</th> |
| 118 <td> |
| 119 Min value: |
| 120 <input type="number" name="min_value" style="text-align:right; width: 4e
m" |
| 121 value="[field_def.min_value]" class="acob" |
| 122 [if-any allow_edit][else]disabled="disabled"[end]> |
| 123 Max value: |
| 124 <input type="number" name="max_value" style="text-align:right; width: 4e
m" |
| 125 value="[field_def.max_value]" class="acob" |
| 126 [if-any allow_edit][else]disabled="disabled"[end]><br> |
| 127 </td> |
| 128 </tr> |
| 129 [end] |
| 130 |
| 131 [is field_def.type_name "STR_TYPE"] |
| 132 <tr id="str_row"> |
| 133 <th>Validation:</th> |
| 134 <td> |
| 135 Regex: <input type="text" name="regex" size="30" value="[field_def.regex
]" class="acob"><br> |
| 136 </td> |
| 137 </tr> |
| 138 [end] |
| 139 |
| 140 [is field_def.type_name "USER_TYPE"] |
| 141 <tr id="user_row"> |
| 142 <th>Validation:</th> |
| 143 <td> |
| 144 <input type="checkbox" name="needs_member" id="needs_member" class="acob
" |
| 145 [if-any allow_edit][else]disabled="disabled"[end] |
| 146 [if-any field_def.needs_member_bool]checked="checked"[end]> |
| 147 <label for="needs_member">User must be a project member</label><br> |
| 148 <span id="needs_perm_span" style="margin-left:1em">Required permission: |
| 149 <input type="text" name="needs_perm" id="needs_perm" size="20" |
| 150 value="[field_def.needs_perm]" autocomplete="off" class="acob" |
| 151 [if-any allow_edit][else]disabled="disabled"[end]></span><br> |
| 152 </td> |
| 153 </tr> |
| 154 <tr id="user_row2"> |
| 155 <th>Permissions:</th> |
| 156 <td> |
| 157 The users named in this field is granted this permission on this issue:<
br> |
| 158 [# TODO(jrobbins): one-click way to specify View vs. EditIssue vs. any c
ustom perm.] |
| 159 <input type="text" name="grants_perm" id="grants_perm" class="acob" |
| 160 size="20" value="[field_def.grants_perm]" autocomplete="off" |
| 161 [if-any allow_edit][else]disabled[end]> |
| 162 </td> |
| 163 </tr> |
| 164 <tr id="user_row3"> |
| 165 <th>Notification:</th> |
| 166 <td> |
| 167 The users named in this field will be notified via email whenever:<br> |
| 168 <select name="notify_on" [if-any allow_edit][else]disabled[end] |
| 169 class="acrob"> |
| 170 <option value="never" [is field_def.notify_on "0"]selected="selected"[
end] |
| 171 >No notifications</option> |
| 172 <option value="any_comment" [is field_def.notify_on "1"]selected="sele
cted"[end] |
| 173 >Any change or comment is added</option> |
| 174 </select> |
| 175 </td> |
| 176 </tr> |
| 177 [end] |
| 178 |
| 179 <th>Admins:</th> |
| 180 <td> |
| 181 [if-any allow_edit] |
| 182 <input id="member_admins" name="admin_names" size="75" value="[initial_a
dmins]" |
| 183 autocomplete="off" class="acob"> |
| 184 <span class="fielderror" style="margin-left:1em"> |
| 185 [if-any errors.field_admins][errors.field_admins][end] |
| 186 </span> |
| 187 [else] |
| 188 [for field_def.admins] |
| 189 <div>[include "../framework/user-link.ezt" field_def.admins]</div> |
| 190 [end] |
| 191 [end] |
| 192 </td> |
| 193 </tr> |
| 194 |
| 195 |
| 196 <tr> |
| 197 <td></td> |
| 198 <td> |
| 199 [if-any allow_edit] |
| 200 <input type="submit" name="submit" value="Submit changes"> |
| 201 <input type="submit" name="deletefield" value="Delete Field" |
| 202 style="margin-left:2em" id="deletefield"> |
| 203 [end] |
| 204 </td> |
| 205 </tr> |
| 206 |
| 207 </table> |
| 208 </form> |
| 209 |
| 210 |
| 211 [include "../framework/footer-script.ezt"] |
| 212 |
| 213 <script type="text/javascript" nonce="[nonce]"> |
| 214 runOnLoad(function() { |
| 215 _fetchOptions('[projectname]', 'issueOptions', |
| 216 CS_env.token, [project.cached_content_timestamp]); |
| 217 |
| 218 _onload(); |
| 219 |
| 220 var needs_perm_span = document.getElementById('needs_perm_span'); |
| 221 var needs_perm = document.getElementById('needs_perm'); |
| 222 var needs_member = document.getElementById('needs_member'); |
| 223 function enableNeedsPerm(enable) { |
| 224 needs_perm_span.style.color = enable ? 'inherit' : '#999'; |
| 225 needs_perm.disabled = enable ? '' : 'disabled'; |
| 226 if (!enable) needs_perm.value = ''; |
| 227 } |
| 228 [if-any allow_edit] |
| 229 if (needs_perm) |
| 230 enableNeedsPerm(needs_member.checked); |
| 231 [end] |
| 232 |
| 233 if ($("deletefield")) { |
| 234 $("deletefield").addEventListener("click", function(event) { |
| 235 var msg = ("Are you sure you want to delete [field_def.field_name]?\n" + |
| 236 "This operation cannot be undone. " + |
| 237 "[is field_def.type_name "ENUM_TYPE"]\nEnum values will be re
tained on issues as labels.[end]"); |
| 238 if (!confirm(msg)) |
| 239 event.preventDefault(); |
| 240 }); |
| 241 } |
| 242 |
| 243 var acobElements = document.getElementsByClassName("acob"); |
| 244 for (var i = 0; i < acobElements.length; ++i) { |
| 245 var el = acobElements[[]i]; |
| 246 el.addEventListener("focus", function(event) { |
| 247 _acrob(null); |
| 248 _acof(event); |
| 249 }); |
| 250 } |
| 251 |
| 252 if ($("needs_member")) { |
| 253 $("needs_member").addEventListener("change", function(event) { |
| 254 enableNeedsPerm($("needs_member").checked); |
| 255 }); |
| 256 } |
| 257 }); |
| 258 </script> |
| 259 |
| 260 [include "../framework/master-footer.ezt"] |
OLD | NEW |