Add domain registration operations to the View Domain screen, if the domain
[freeside.git] / httemplate / view / svc_domain.cgi
1 <% include("/elements/header.html",'Domain View', menubar(
2   ( ( $pkgnum || $custnum )
3     ? ( "View this customer (#$display_custnum)" => "${p}view/cust_main.cgi?$custnum",
4       )
5     : ( "Delete this (unaudited) domain" =>
6           "javascript:areyousure('${p}misc/cancel-unaudited.cgi?$svcnum', 'Delete $domain and all records?' )" )
7   )
8 )) %>
9
10 <% include('/elements/error.html') %>
11
12 Service #<% $svcnum %>
13 <BR>Service: <B><% $part_svc->svc %></B>
14 <BR>Domain name: <B><% $domain %></B>
15 % if ($export) {
16 <BR>Status: <B><% $status %></B>
17 %   if ( $FS::CurrentUser::CurrentUser->access_right('Change customer service') ) {
18 %     if ( defined($ops{'register'}) ) {
19     <A HREF="<% ${p} %>edit/process/domreg.cgi?op=register&svcnum=<% $svcnum %>">Register at <% $registrar->{'name'} %></A>&nbsp;
20 %     }
21 %     if ( defined($ops{'transfer'}) ) {
22     <A HREF="<% ${p} %>edit/process/domreg.cgi?op=transfer&svcnum=<% $svcnum %>">Transfer to <% $registrar->{'name'} %></A>&nbsp;
23 %     }
24 %     if ( defined($ops{'renew'}) ) {
25     <FORM NAME="Renew" METHOD="POST" ACTION="<% ${p} %>edit/process/domreg.cgi">
26       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
27       <INPUT TYPE="hidden" NAME="op" VALUE="renew">
28       <SELECT NAME="period">
29 %       foreach (1..10) { 
30           <OPTION VALUE="<%$_%>"><%$_%> year<% $_ > 1 ? 's' : '' %></OPTION>
31 %       } 
32       </SELECT>
33       <INPUT TYPE="submit" VALUE="Renew">&nbsp;
34     </FORM>
35 %     }
36 %     if ( defined($ops{'revoke'}) ) {
37     <A HREF="<% ${p} %>edit/process/domreg.cgi?op=revoke&svcnum=<% $svcnum %>">Revoke</A>
38 %     }
39 %   }
40 % }
41
42 % if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain catchall') ) {
43     <BR>Catch all email <A HREF="<% ${p} %>misc/catchall.cgi?<% $svcnum %>">(change)</A>:
44 % } else {
45     <BR>Catch all email:
46 % }
47
48 <% $email ? "<B>$email</B>" : "<I>(none)<I>" %>
49 <BR><BR><A HREF="<% ${p} %>misc/whois.cgi?custnum=<%$custnum%>;svcnum=<%$svcnum%>;domain=<%$domain%>">View whois information.</A>
50 <BR><BR>
51 <SCRIPT>
52   function areyousure(href, message) {
53     if ( confirm(message) == true )
54       window.location.href = href;
55   }
56   function slave_areyousure() {
57     return confirm("Remove all records and slave from " + document.SlaveForm.recdata.value + "?");
58   }
59 </SCRIPT>
60
61 % my @records; if ( @records = $svc_domain->domain_record ) { 
62
63   <% include('/elements/table-grid.html') %>
64
65 % my $bgcolor1 = '#eeeeee';
66 %     my $bgcolor2 = '#ffffff';
67 %     my $bgcolor = $bgcolor2;
68
69   <tr>
70     <th CLASS="grid" BGCOLOR="#cccccc">Zone</th>
71     <th CLASS="grid" BGCOLOR="#cccccc">Type</th>
72     <th CLASS="grid" BGCOLOR="#cccccc">Data</th>
73   </tr>
74
75 % foreach my $domain_record ( @records ) {
76 %       my $type = $domain_record->rectype eq '_mstr'
77 %                    ? "(slave)"
78 %                    : $domain_record->recaf. ' '. $domain_record->rectype;
79
80
81     <tr>
82       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $domain_record->reczone %></td>
83       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $type %></td>
84       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $domain_record->recdata %>
85
86 % unless ( $domain_record->rectype eq 'SOA'
87 %          || ! $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice')
88 %        ) { 
89 %   ( my $recdata = $domain_record->recdata ) =~ s/"/\\'\\'/g;
90       (<A HREF="javascript:areyousure('<%$p%>misc/delete-domain_record.cgi?<%$domain_record->recnum%>', 'Delete \'<% $domain_record->reczone %> <% $type %> <% $recdata %>\' ?' )">delete</A>)
91 % } 
92       </td>
93     </tr>
94
95
96 %   if ( $bgcolor eq $bgcolor1 ) {
97 %      $bgcolor = $bgcolor2;
98 %    } else {
99 %      $bgcolor = $bgcolor1;
100 %    }
101
102 % } 
103
104   </table>
105 % } 
106
107 % if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice') ) {
108     <BR>
109     <FORM METHOD="POST" ACTION="<%$p%>edit/process/domain_record.cgi">
110       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
111       <INPUT TYPE="text" NAME="reczone"> 
112       <INPUT TYPE="hidden" NAME="recaf" VALUE="IN"> IN 
113       <SELECT NAME="rectype">
114 %       foreach (qw( A NS CNAME MX PTR TXT) ) { 
115           <OPTION VALUE="<%$_%>"><%$_%></OPTION>
116 %       } 
117       </SELECT>
118       <INPUT TYPE="text" NAME="recdata">
119       <INPUT TYPE="submit" VALUE="Add record">
120     </FORM>
121
122     <BR><BR>
123     or
124     <BR><BR>
125
126     <FORM NAME="SlaveForm" METHOD="POST" ACTION="<%$p%>edit/process/domain_record.cgi">
127       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
128 %     if ( @records ) { 
129          Delete all records and 
130 %     } 
131       Slave from nameserver IP 
132       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
133       <INPUT TYPE="hidden" NAME="reczone" VALUE="@"> 
134       <INPUT TYPE="hidden" NAME="recaf" VALUE="IN">
135       <INPUT TYPE="hidden" NAME="rectype" VALUE="_mstr">
136       <INPUT TYPE="text" NAME="recdata">
137       <INPUT TYPE="submit" VALUE="Slave domain" onClick="return slave_areyousure()">
138     </FORM>
139
140 % }
141
142 <BR><BR>
143
144 <% joblisting({'svcnum'=>$svcnum}, 1) %>
145
146 <% include('/elements/footer.html') %>
147 <%init>
148
149 die "access denied"
150   unless $FS::CurrentUser::CurrentUser->access_right('View customer services');
151
152 my($query) = $cgi->keywords;
153 $query =~ /^(\d+)$/;
154 my $svcnum = $1;
155 my $svc_domain = qsearchs({
156   'select'    => 'svc_domain.*',
157   'table'     => 'svc_domain',
158   'addl_from' => ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
159                  ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
160                  ' LEFT JOIN cust_main USING ( custnum ) ',
161   'hashref'   => {'svcnum'=>$svcnum},
162   'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
163 });
164 die "Unknown svcnum" unless $svc_domain;
165
166 my $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum});
167 my $pkgnum = $cust_svc->getfield('pkgnum');
168 my($cust_pkg, $custnum, $display_custnum);
169 if ($pkgnum) {
170   $cust_pkg = qsearchs('cust_pkg', {'pkgnum'=>$pkgnum} );
171   $custnum = $cust_pkg->custnum;
172   $display_custnum = $cust_pkg->cust_main->display_custnum;
173 } else {
174   $cust_pkg = '';
175   $custnum = '';
176 }
177
178 my $part_svc = qsearchs('part_svc',{'svcpart'=> $cust_svc->svcpart } );
179 die "Unknown svcpart" unless $part_svc;
180
181 my $email = '';
182 if ($svc_domain->catchall) {
183   my $svc_acct = qsearchs('svc_acct',{'svcnum'=> $svc_domain->catchall } );
184   die "Unknown svcpart" unless $svc_acct;
185   $email = $svc_acct->email;
186 }
187
188 my $domain = $svc_domain->domain;
189
190 my $status = 'Unknown';
191 my %ops = ();
192
193 my @exports = $part_svc->part_export();
194
195 my $registrar;
196 my $export;
197
198 # Find the first export that does domain registration
199 foreach (@exports) {
200         $export = $_ if $_->can('registrar');
201 }
202 # If we have a domain registration export, get the registrar object
203 if ($export) {
204         $registrar = $export->registrar;
205         my $domstat = $export->get_status( $svc_domain );
206         if (defined($domstat->{'message'})) {
207                 $status = $domstat->{'message'};
208         } elsif (defined($domstat->{'unregistered'})) {
209                 $status = 'Not registered';
210                 $ops{'register'} = "Register";
211         } elsif (defined($domstat->{'status'})) {
212                 $status = $domstat->{'status'} . ' ' . $domstat->{'contact_email'} . ' ' . $domstat->{'last_update_time'};
213         } elsif (defined($domstat->{'expdate'})) {
214                 $status = "Expires " . $domstat->{'expdate'};
215                 $ops{'renew'} = "Renew";
216                 $ops{'revoke'} = "Revoke";
217         } else {
218                 $status = $domstat->{'reason'};
219                 $ops{'transfer'} = "Transfer";
220         }
221 }
222
223 </%init>