communigate pro provisioning, 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 ( $svc_domain->max_accounts ) {
66   <TR>
67     <TD ALIGN="right">Maximum number of Accounts</TD>
68     <TD BGCOLOR="#ffffff"><% $svc_domain->max_accounts %></TD>
69   </TR>
70 % }
71
72 <TR>
73   <TD ALIGN="right">Catch all email</TD>
74   <TD BGCOLOR="#ffffff"><% $email ? "<B>$email</B>" : '<I>(none)</I>' %>
75 % if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain catchall') ) {
76      <A HREF="<% ${p} %>misc/catchall.cgi?<% $svcnum %>">(change)</A>
77 % }
78   </TD>
79 </TR>
80
81 </TABLE></TD></TR></TABLE>
82 <BR>
83
84 <SCRIPT>
85   function areyousure(href, message) {
86     if ( confirm(message) == true )
87       window.location.href = href;
88   }
89   function slave_areyousure() {
90     return confirm("Remove all records and slave from " + document.SlaveForm.recdata.value + "?");
91   }
92 </SCRIPT>
93
94 DNS records
95 % my @records; if ( @records = $svc_domain->domain_record ) { 
96
97   <% include('/elements/table-grid.html') %>
98
99 % my $bgcolor1 = '#eeeeee';
100 %     my $bgcolor2 = '#ffffff';
101 %     my $bgcolor = $bgcolor2;
102
103   <tr>
104     <th CLASS="grid" BGCOLOR="#cccccc">Zone</th>
105     <th CLASS="grid" BGCOLOR="#cccccc">Type</th>
106     <th CLASS="grid" BGCOLOR="#cccccc">Data</th>
107   </tr>
108
109 % foreach my $domain_record ( @records ) {
110 %       my $type = $domain_record->rectype eq '_mstr'
111 %                    ? "(slave)"
112 %                    : $domain_record->recaf. ' '. $domain_record->rectype;
113
114
115     <tr>
116       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $domain_record->reczone %></td>
117       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $type %></td>
118       <td CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $domain_record->recdata %>
119
120 % unless ( $domain_record->rectype eq 'SOA'
121 %          || ! $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice')
122 %        ) { 
123 %   ( my $recdata = $domain_record->recdata ) =~ s/"/\\'\\'/g;
124       (<A HREF="javascript:areyousure('<%$p%>misc/delete-domain_record.cgi?<%$domain_record->recnum%>', 'Delete \'<% $domain_record->reczone %> <% $type %> <% $recdata %>\' ?' )">delete</A>)
125 % } 
126       </td>
127     </tr>
128
129
130 %   if ( $bgcolor eq $bgcolor1 ) {
131 %      $bgcolor = $bgcolor2;
132 %    } else {
133 %      $bgcolor = $bgcolor1;
134 %    }
135
136 % } 
137
138   </table>
139 % } 
140
141 % if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice') ) {
142     <FORM METHOD="POST" ACTION="<%$p%>edit/process/domain_record.cgi">
143       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
144       <INPUT TYPE="text" NAME="reczone"> 
145       <INPUT TYPE="hidden" NAME="recaf" VALUE="IN"> IN 
146       <SELECT NAME="rectype">
147 %       foreach (qw( A NS CNAME MX PTR TXT) ) { 
148           <OPTION VALUE="<%$_%>"><%$_%></OPTION>
149 %       } 
150       </SELECT>
151       <INPUT TYPE="text" NAME="recdata">
152       <INPUT TYPE="submit" VALUE="Add record">
153     </FORM>
154
155     <FORM NAME="SlaveForm" METHOD="POST" ACTION="<%$p%>edit/process/domain_record.cgi">
156       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
157 %     if ( @records ) { 
158          Delete all records and 
159 %     } 
160       Or slave from nameserver IP 
161       <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
162       <INPUT TYPE="hidden" NAME="reczone" VALUE="@"> 
163       <INPUT TYPE="hidden" NAME="recaf" VALUE="IN">
164       <INPUT TYPE="hidden" NAME="rectype" VALUE="_mstr">
165       <INPUT TYPE="text" NAME="recdata">
166       <INPUT TYPE="submit" VALUE="Slave domain" onClick="return slave_areyousure()">
167     </FORM>
168
169 % }
170 <BR>
171
172 % my ( $settings, $defaults ) = $svc_domain->export_getsettings;
173 % if ( keys %$settings ) {
174
175 %# XXX a way to label this "Communigate pro settings".. just a config maybe
176   External settings
177   <% ntable('#cccccc',2) %>
178
179 %   foreach my $key ( keys %$settings ) {
180       <TR>
181         <TD ALIGN="right"><% $key |h %></TD>
182         <TD BGCOLOR="<% $defaults->{$key} ? '#eeeeee' : '#ffffff' %>">
183           <% $defaults->{$key} ? '<I>' : '<B>' %>
184           <% $settings->{$key} |h %>
185           <% $defaults->{$key} ? '</I>' : '</B>' %>
186         </TD>
187       </TR>
188 %   }
189
190   </TABLE>
191   <BR>
192
193 % }
194
195 <% joblisting({'svcnum'=>$svcnum}, 1) %>
196
197 <% include('/elements/footer.html') %>
198 <%init>
199
200 die "access denied"
201   unless $FS::CurrentUser::CurrentUser->access_right('View customer services');
202
203 my $conf = new FS::Conf;
204
205 my($query) = $cgi->keywords;
206 $query =~ /^(\d+)$/;
207 my $svcnum = $1;
208 my $svc_domain = qsearchs({
209   'select'    => 'svc_domain.*',
210   'table'     => 'svc_domain',
211   'addl_from' => ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
212                  ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
213                  ' LEFT JOIN cust_main USING ( custnum ) ',
214   'hashref'   => {'svcnum'=>$svcnum},
215   'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql(
216                             'null_right' => 'View/link unlinked services'
217                           ),
218 });
219 die "Unknown svcnum" unless $svc_domain;
220
221 my $cust_svc = qsearchs('cust_svc',{'svcnum'=>$svcnum});
222 my $pkgnum = $cust_svc->getfield('pkgnum');
223 my($cust_pkg, $custnum, $display_custnum);
224 if ($pkgnum) {
225   $cust_pkg = qsearchs('cust_pkg', {'pkgnum'=>$pkgnum} );
226   $custnum = $cust_pkg->custnum;
227   $display_custnum = $cust_pkg->cust_main->display_custnum;
228 } else {
229   $cust_pkg = '';
230   $custnum = '';
231 }
232
233 my $part_svc = qsearchs('part_svc',{'svcpart'=> $cust_svc->svcpart } );
234 die "Unknown svcpart" unless $part_svc;
235
236 my $email = '';
237 if ($svc_domain->catchall) {
238   my $svc_acct = qsearchs('svc_acct',{'svcnum'=> $svc_domain->catchall } );
239   die "Unknown svcpart" unless $svc_acct;
240   $email = $svc_acct->email;
241 }
242
243 my $domain = $svc_domain->domain;
244
245 my $status = 'Unknown';
246 my %ops = ();
247
248 my @exports = $part_svc->part_export();
249
250 my $registrar;
251 my $export;
252
253 # Find the first export that does domain registration
254 foreach (@exports) {
255         $export = $_ if $_->can('registrar');
256 }
257 # If we have a domain registration export, get the registrar object
258 if ($export) {
259         $registrar = $export->registrar;
260         my $domstat = $export->get_status( $svc_domain );
261         if (defined($domstat->{'message'})) {
262                 $status = $domstat->{'message'};
263         } elsif (defined($domstat->{'unregistered'})) {
264                 $status = 'Not registered';
265                 $ops{'register'} = "Register";
266         } elsif (defined($domstat->{'status'})) {
267                 $status = $domstat->{'status'} . ' ' . $domstat->{'contact_email'} . ' ' . $domstat->{'last_update_time'};
268         } elsif (defined($domstat->{'expdate'})) {
269                 $status = "Expires " . $domstat->{'expdate'};
270                 $ops{'renew'} = "Renew";
271                 $ops{'revoke'} = "Revoke";
272         } else {
273                 $status = $domstat->{'reason'};
274                 $ops{'transfer'} = "Transfer";
275         }
276 }
277
278 </%init>