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