Improve UI for entering domain records
[regano.git] / Regano / root / src / registrar / domain / manage.tt
blob2bc799408275dc7e8574373e0ef8f495a1988cc3
1 [%# <!-- This -*- HTML -*- template is part of Regano.
2          Regano is free software and may be redistributed and/or modified
3          under the same terms as Perl itself. --> ~%]
5 [% META
6    title = 'Regano Domain Management'
7    style = "body { z-index: 1; }
8 .has-help { position: relative; top: 0; left: 0; }
9 .has-help > .help {
10     background-color: white;
11     border: 1px solid black;
12     display: none;
13     position: absolute;
14     top: -100%;
15     left: 100%;
16     width: 120%;
17     z-index: 2;
19 .has-help > .help > p {
20     background-color: #def;
21     border: 1px solid black;
23 .has-help:hover > .help { display: block }
25 .infotable .infotop { text-align: center }
26 .infotable th { text-align: right }
27 .infotable td { text-align: center }
29 td > table { width: 100% }
30 td > input[type='text'] { width: 100% }
31 " %]
32 [%~ navPage = [ 'registrar' 'domain' domain_name ] ~%]
33 [%# <!-- To be wrapped inside "main-copy" div. --> -%]
34 <h1>[% regano.config.InstanceName | html %] registry &mdash; Manage Domain &mdash; [% name %]</h1>
36 [% IF status -%]
37 <div style="margin: 3em; text-align: center">
38   [% FOREACH message IN status -%]
39   [% SWITCH message.0 -%]
40   [%   CASE "dberr" -%]
41   <div class="notify_errors">
42     The database reported an error: [% message.1 %]
43   </div>
44   [%   CASE "default_ttl_changed" %]
45   <div class="notify_success">
46     The default TTL for [% name %] has been changed.
47   </div>
48   [%   CASE "edit_in_progress" %]
49   <div class="notify_notes">
50     <p>The displayed records reflect edits in this session that have not yet
51     been published.</p>
52     <p><a href="[% regano.uri_for_action('/zone/index',name) %]">Currently
53     published records for this zone</a></p>
54   </div>
55   [%   CASE "publish_error" -%]
56   <div class="notify_errors">
57     An error occurred while publishing record [% message.1 %]: [% message.2 %]
58   </div>
59   [% END ~%]
60   [% END ~%]
61 </div>
62 [% END ~%]
64 <form action="[% regano.uri_for_action('/registrar/domain/manage') %]" method="POST">
65   <input type="hidden" name="domain_name" value="[% name %]">
66   <table class="infotable" style="margin: 1em auto">
67     <tr>
68       <th class="infotop" colspan="6">[% name %]</th>
69     </tr>
70     <tr>
71       <td rowspan="7" style="visibility: hidden"></td>
72       <th colspan="2">Status</th>
73       <td [%= SWITCH domain.status ~%]
74           [%~  CASE "REGISTERED" ~%] style="color: green"
75           [%~  CASE "EXPIRED"    ~%] style="color: red"
76           [%~ END %] colspan="3">[% domain.status %]
77         [%~ IF domain.status == "EXPIRED" ~%]
78         <input type="submit" name="action" value="Renew Now">
79         [%~ END ~%]
80       </td>
81     </tr>
82     <tr>
83       <th colspan="2">Expiration</th>
84       <td colspan="3">[% domain.expiration %]</td>
85     </tr>
86     <tr>
87       <th colspan="2">Registered</th>
88       <td colspan="3">[% domain.registered %]</td>
89     </tr>
90     <tr>
91       <th colspan="2">Last Modified</th>
92       <td colspan="3">[% domain.last_update %]</td>
93     </tr>
94     <tr>
95       <th colspan="2" rowspan="2">Actions</th>
96       <td colspan="3">
97         <div class="has-help">
98           <input type="submit" name="action" value="Renew">
99           <div class="help">
100             <p>Renewing a domain extends the expiration to one full domain
101               term from now.</p>
102           </div>
103         </div>
104       </td>
105     </tr>
106     <tr>
107       <td colspan="3">
108         <div class="has-help">
109           <input type="submit" name="action" value="Release">
110           <div class="help">
111             <p>Releasing a domain causes the registration to expire
112               immediately.  You can still change your mind within the
113               expiration grace period, but the domain will be available for
114               anyone to register after that.</p>
115           </div>
116         </div>
117       </td>
118     </tr>
119     <tr>
120       <th colspan="2"><label for="default-ttl">Default TTL</label></th>
121       <td colspan="3">
122         <div class="has-help">
123           <input type="text" id="default-ttl" size="20"
124                  name="default_ttl" value="[% domain.default_ttl %]">
125           <input type="submit" name="action" value="Update TTL">
126           <div class="help">
127             <p>The default TTL is used for records that do not specify a
128               TTL.  The TTL is the amount of time that a cached copy of the
129               record remains valid.  Any of the formats accepted by the
130               database may be used to enter a value.  Intervals less than a
131               day are displayed as HH:MM:SS.</p>
132           </div>
133         </div>
134       </td>
135     </tr>
136     <tr><th colspan="6" class="infotop">Records</th></tr>
137     <tr>
138       <th>Delete</th>
139       <th colspan="2">Position</th>
140       <td colspan="2">
141         <input type="text" name="del_record_seq_no" value="1" size="4">
142       </td>
143       <td style="text-align: right">
144         <input type="submit" name="action" value="Delete Record">
145       </td>
146     </tr>
147     <tr><td colspan="6"></td></tr>
148     <tr>
149       <td>
150         <input type="text" name="ins_record_seq_no" value="1" size="4">
151       </td>
152       <td>
153         <input type="text" name="ins_record_name" value="" size="10">
154       </td>
155       <th colspan="2" style="text-align: center">Insert</th>
156       <td>
157         <select name="ins_record_type" size="1">
158           [% FOREACH type IN regano.config.RRTypes %]
159           [% IF type == "SOA" && records.0.type == "SOA" %]
160           <!-- no more than one SOA record per zone -->
161           [% ELSE %]
162           <option[% IF type == 'A' =%]
163                     selected[% END %]>[% type %]</option>
164           [% END %]
165           [% END %]
166         </select>
167       </td>
168       <td style="text-align: left">
169         <input type="submit" name="action" value="Insert Record">
170       </td>
171     </tr>
172     <tr>
173       <th class="infotop">Seq</th>
174       <th class="infotop">Name</th>
175       <th class="infotop">TTL</th>
176       <th class="infotop">Class</th>
177       <th class="infotop">Type</th>
178       <td style="border:none; background: none; text-align: right">
179         <input type="submit" name="action" value="Update">
180       </td>
181     </tr>
182     [% FOREACH record IN records %]
183     <tr>
184       <td>
185         [% IF record.type == "SOA" %]
186         0
187         <input type="hidden" name="zone_r0_seq_no" value="0">
188         [% ELSE %]
189         <input type="text" size="2"
190                name="zone_r[% record.seq_no %]_seq_no"
191                value="[% record.seq_no %]">
192         [% END %]
193       </td>
194       <td>
195         [% IF record.type == "SOA" %]
196         @
197         [% ELSE %]
198         <input type="text" size="10"
199                name="zone_r[% record.seq_no %]_name"
200                value="[% record.name %]">
201         [% END %]
202       </td>
203       <td>
204         <input type="text" size="5"
205                name="zone_r[% record.seq_no %]_ttl"
206                value="[% record.ttl %]">
207       </td>
208       <td>IN</td>
209       <td>
210         [% IF record.type == "SOA" %]
211         SOA
212         <input type="hidden" name="zone_r0_type" value="SOA">
213         [% ELSE %]
214         <select name="zone_r[% record.seq_no %]_type" size="1">
215           [% FOREACH type IN regano.config.RRTypes %]
216           [% IF type != "SOA" %]
217           <option[% IF type == record.type =%]
218                     selected[% END %]>[% type %]</option>
219           [% END %]
220           [% END %]
221         </select>
222         [% END %]
223       </td>
224       <td>
225         [% SWITCH record.type %]
226         [%   CASE ["A", "AAAA"] %]
227         <input type="text"
228                name="zone_r[% record.seq_no %]_data"
229                value="[% record.data.address %]">
230         [%   CASE ["CNAME", "DNAME", "NS", "PTR"] %]
231         <input type="text"
232                name="zone_r[% record.seq_no %]_data"
233                value="[% record.data.name %]">
234         [%   CASE ["SPF", "TXT"] %]
235         <input type="text"
236                name="zone_r[% record.seq_no %]_data"
237                value="[% record.data.text %]">
238         [%   CASE "DS" %]
239         <table>
240           <tr>
241             <th>Key Tag</th>
242             <td>
243               <input type="text"
244                      name="zone_r[% record.seq_no %]_data_DS_key_tag"
245                      value="[% record.data.key_tag %]">
246             </td>
247           </tr>
248           <tr>
249             <th>Algorithm</th>
250             <td>
251               <input type="text"
252                      name="zone_r[% record.seq_no %]_data_DS_algorithm"
253                      value="[% record.data.algorithm %]">
254             </td>
255           </tr>
256           <tr>
257             <th>Digest Type</th>
258             <td>
259               <input type="text"
260                      name="zone_r[% record.seq_no %]_data_DS_digest_type"
261                      value="[% record.data.digest_type %]">
262             </td>
263           </tr>
264           <tr>
265             <th>Digest</th>
266             <td>
267               <input type="text"
268                      name="zone_r[% record.seq_no %]_data_DS_digest"
269                      value="[% record.data.digest %]">
270             </td>
271           </tr>
272         </table>
273         [%   CASE "MX" %]
274         <table>
275           <tr>
276             <th>Preference</th>
277             <td>
278               <input type="text"
279                      name="zone_r[% record.seq_no %]_data_MX_preference"
280                      value="[% record.data.preference %]">
281             </td>
282           </tr>
283           <tr>
284             <th>Exchange</th>
285             <td>
286               <input type="text"
287                      name="zone_r[% record.seq_no %]_data_MX_exchange"
288                      value="[% record.data.exchange %]">
289             </td>
290           </tr>
291         </table>
292         [%   CASE "SRV" %]
293         <table>
294           <tr>
295             <th>Priority</th>
296             <td>
297               <input type="text"
298                      name="zone_r[% record.seq_no %]_data_SRV_priority"
299                      value="[% record.data.priority %]">
300             </td>
301           </tr>
302           <tr>
303             <th>Weight</th>
304             <td>
305               <input type="text"
306                      name="zone_r[% record.seq_no %]_data_SRV_weight"
307                      value="[% record.data.weight %]">
308             </td>
309           </tr>
310           <tr>
311             <th>Port</th>
312             <td>
313               <input type="text"
314                      name="zone_r[% record.seq_no %]_data_SRV_port"
315                      value="[% record.data.port %]">
316             </td>
317           </tr>
318           <tr>
319             <th>Target</th>
320             <td>
321               <input type="text"
322                      name="zone_r[% record.seq_no %]_data_SRV_target"
323                      value="[% record.data.target %]">
324             </td>
325           </tr>
326         </table>
327         [%   CASE "SOA" %]
328         <table>
329           <tr>
330             <th>Master</th>
331             <td>
332               [% IF name.match('^@+') %]
333               <input type="text"
334                      name="zone_r0_data_SOA_master"
335                      value="[% record.data.master %]">
336               [% ELSE %]
337               [% record.data.master %]
338               <input type="hidden"
339                      name="zone_r0_data_SOA_master"
340                      value="[% record.data.master %]">
341               [% END %]
342             </td>
343           </tr>
344           <tr>
345             <th>Mailbox</th>
346             <td>
347               <input type="text"
348                      name="zone_r0_data_SOA_mbox"
349                      value="[% record.data.mbox %]">
350             </td>
351           </tr>
352           <tr>
353             <th>Refresh</th>
354             <td>
355               <input type="text"
356                      name="zone_r0_data_SOA_refresh"
357                      value="[% record.data.refresh %]">
358             </td>
359           </tr>
360           <tr>
361             <th>Retry</th>
362             <td>
363               <input type="text"
364                      name="zone_r0_data_SOA_retry"
365                      value="[% record.data.retry %]">
366             </td>
367           </tr>
368           <tr>
369             <th>Expire</th>
370             <td>
371               <input type="text"
372                      name="zone_r0_data_SOA_expire"
373                      value="[% record.data.expire %]">
374             </td>
375           </tr>
376           <tr>
377             <th>Minimum TTL</th>
378             <td>
379               <input type="text"
380                      name="zone_r0_data_SOA_minimum"
381                      value="[% record.data.minimum %]">
382             </td>
383           </tr>
384         </table>
385         [%   CASE DEFAULT %]
386         <p style="color: red; font-weight: bold">
387           BUG: unknown record type [% record.type %]
388         </p>
389         [% END %]
390       </td>
391     </tr>
392     [% END %]
393     <tr>
394       <td colspan="6" style="border:none; background:none">
395         <input type="submit" name="action" value="Cancel Edit">
396         <input type="reset" value="Reset Form">
397         <input type="submit" name="action" value="Reload from database">
398         <input type="submit" name="action" value="Update">
399         <input type="submit" name="action" value="Publish">
400       </td>
401     </tr>
402   </table>
403 </form>
405 <!--  LocalWords:  regano InstanceName html navPage FOREACH infotable infotop
406  -->
407 <!--  LocalWords:  th px td ttl HH CNAME DNAME DS MX PTR SRV TXT RRTypes SOA
408  -->
409 <!--  LocalWords:  AAAA mbox dberr
410  -->