%doc>
Zone UI
%doc>
%
%
<%attr>
title => 'Zone'
section => 'Management'
%attr>
%
%
<%args>
$id
$user => $ui->get_current_user($r)
$view => undef
$edit => undef
$submit => undef
$bulk_import_data => undef
$import_overwrite => undef
%args>
%
%
<%init>
my $DEBUG = 0;
print '%ARGS is
', Dumper(%ARGS), '
' if $DEBUG;
my $o = Zone->retrieve($id);
unless ( $o ){
$m->comp('/generic/error.mhtml', error=>"Cannot retrieve zone id $id");
}
# Check if user can view this object
my $manager = $ui->get_permission_manager($r);
unless ( $manager && $manager->can($user, "view", $o) ){
$m->comp('/generic/error.mhtml', error=>"You don't have permission to view zone ".$o->name);
}
if ( $submit ){
if ($edit eq 'bulk_import'){
unless ( $bulk_import_data ){
$m->comp('/generic/error.mhtml', error=>"Empty import data");
}
# Do this atomically
eval {
Netdot::Model->do_transaction(sub{
$o->import_records(text=>$bulk_import_data, overwrite=>$import_overwrite)
});
};
if ( my $e = $@ ){
$m->comp('/generic/error.mhtml', error=>$e);
}else{
$submit = 0; # So we display zone below
}
}
}
%init>
% if ( !$submit ){
%###########################################################################
Zone <% $o->name %>
[refresh]
% if ( $manager && $manager->can($user, 'access_admin_section', 'zone.html:buttons') ){
[new]
% }
% if ( $manager && $manager->can($user, 'edit', $o) ){
[edit]
% }
% if ( $manager && $manager->can($user, 'delete', $o) ){
[delete]
% }
[text]
<& /generic/form.mhtml, table=>"Zone", id=>$id, edit=>0 &>
%###########################################################################
% my @headers;
% my @rows;
% my $count = $o->get_record_count();
Record Count
% my $total = 0;
% foreach my $rtype ( sort keys %$count ){
% $total += $count->{$rtype};
% push @headers, uc($rtype);
% push @rows, $count->{$rtype};
% }
% push @headers, '
TOTAL';
% push @rows, $total;
% $m->comp('/generic/attribute_table.mhtml', width=>"4", field_headers=>\@headers, data=>\@rows);
%###########################################################################
%# This zone's records
% if ( my $at = RR->search(name=>'@', zone=>$id)->first ){
% if ( my @a_records = $at->a_records ){
Address Records
<& /generic/sortresults.mhtml, object=>\@a_records &>
% }
% if ( my @nslist = $at->ns_records ){
Name Servers (NS)
<& /generic/sortresults.mhtml, object=>\@nslist &>
% }
% if ( my @mxlist = $at->mx_records ){
Mail Exchangers (MX)
<& /generic/sortresults.mhtml, object=>\@mxlist &>
% }
% }
% # Check if user can access this section
% if ( $manager && $manager->can($user, "access_section", 'zone.html:subnets') ){
%###########################################################################
% my @sz = $o->subnets;
IP Blocks
% if ( $edit eq 'ipblocks' ){
% }else{
% if ( $manager && $manager->can($user, 'access_admin_section', 'zone.html:buttons') ){
[edit]
[add]
% }
% }
<& /generic/sortresults.mhtml, object=>\@sz, withedit=>($edit eq 'ipblocks')? 1 : 0 &>
% }
Records
% if ( $manager && $manager->can($user, 'edit', $o) ){
[add]
[import]
% }
% if ( $view eq 'records' ){
% if ( $edit ne 'records' ){
% if ( $manager && $manager->can($user, 'edit', $o) ){
[edit]
% }
% }
% }else{
[view]
% }
<%perl>
if ( $view eq 'records' || $edit eq 'records' ){
my $records = $o->get_hosts();
print '
';
$m->comp('/management/hostlist.mhtml', records=>$records, withedit=>($edit eq 'records')? 1 : 0, return_args=>"?id=$id", dot_arpa=>$o->is_dot_arpa);
print '
';
print '
';
}
%perl>
Pending Changes
% if ( $view eq 'pending_changes' ){
% }else{
[view]
% }
% if ( $view eq 'pending_changes' ){
% my @pending_changes = HostAudit->search_where(
% { zone => $o->name,
% pending => 1 },
% { order_by => 'tstamp DESC' });
<& /generic/sortresults.mhtml, object=>\@pending_changes, withedit=>0 &>
% }
Recent Changes
% if ( $view eq 'recent_changes' ){
% }else{
[view]
% }
% if ( $view eq 'recent_changes' ){
% my @audit_records = HostAudit->search_where(
% { zone => $o->name },
% { order_by => 'tstamp DESC',
% limit_dialect => 'LimitXY',
% limit => '50' });
<& /generic/sortresults.mhtml, object=>\@audit_records, withedit=>0 &>
% }
% if ( $view eq 'bulk_import' ){
% }
% }