Index: trunk/dns.cgi
===================================================================
--- trunk/dns.cgi	(revision 13)
+++ trunk/dns.cgi	(revision 15)
@@ -61,5 +61,5 @@
 # default
 #my $perpage = 15;
-my $perpage = 4;
+my $perpage = 3;
 my $offset = ($webvar{offset} ? $webvar{offset} : 0);
 
@@ -78,15 +78,17 @@
 initGlobals($dbh);
 
-# Default page is a login page
-my $page;	# to be initialized as an HTML::Template entity sooner or later
+## Default page is a login page
+#my $page;	# to be initialized as an HTML::Template entity sooner or later
 
 
 
 # decide which page to spit out...
-if (!$webvar{page}) {
-  $page = HTML::Template->new(filename => "$templatedir/login.tmpl");
-} else {
-  $page = HTML::Template->new(filename => "$templatedir/$webvar{page}.tmpl");
-}
+$webvar{page} = 'login' if !$webvar{page};
+#if (!$webvar{page}) {
+#  $page = HTML::Template->new(filename => "$templatedir/login.tmpl");
+#} else {
+#}
+
+my $page = HTML::Template->new(filename => "$templatedir/$webvar{page}.tmpl");
 
 $page->param(sid => $sid);
@@ -176,8 +178,42 @@
 } elsif ($webvar{page} eq 'record') {
   if ($webvar{recact} eq 'new') {
-    $page->param(recact => "Add record to");
+    $page->param(todo => "Add record to");
+    $page->param(recact => "add");
     stdrecs();
+  } elsif ($webvar{recact} eq 'add') {
+
+    my @recargs = ($dbh,$webvar{defrec},$webvar{parentid},$webvar{name},$webvar{type},$webvar{address},$webvar{ttl});
+    if ($webvar{type} == $reverse_typemap{MX} or $webvar{type} == $reverse_typemap{SRV}) {
+      push @recargs, $webvar{distance};
+      if ($webvar{type} == $reverse_typemap{SRV}) {
+        push @recargs, $webvar{weight};
+        push @recargs, $webvar{port};
+      }
+    }
+  # wtf?
+  #  push @recargs, 
+    my ($code,$msg) = addRec(@recargs);
+
+    if ($code eq 'OK') {
+      changepage(page => "reclist", id => $webvar{parentid}, defrec => $webvar{defrec});
+#      showdomain($webvar{defrec},$webvar{parentid});
+  # NB: should **really** redirect here, in case of reload.  >_<  eyowch.
+    } else {
+      $page->param(add_failed => 1);
+      $page->param(errmsg => $msg);
+      stdrecs($webvar{type});	# populate the form... er, mostly.
+      $page->param(name => $webvar{name});
+      $page->param(address => $webvar{address});
+      $page->param(distance => $webvar{distance})
+	if ($webvar{type} == $reverse_typemap{MX} or $webvar{type} == $reverse_typemap{SRV});
+      $page->param(weight => $webvar{weight}) if $webvar{type} == $reverse_typemap{SRV};
+      $page->param(port => $webvar{port}) if $webvar{type} == $reverse_typemap{SRV};
+    }
+
+    $page->param(defrec => $webvar{defrec});
+
   } elsif ($webvar{recact} eq 'edit') {
-    $page->param(recact => "Edit record in");
+
+    $page->param(todo => "Edit record in");
     my $sth = $dbh->prepare("SELECT host,type,val,distance,weight,port,ttl FROM ".
 	($webvar{defrec} eq 'y' ? 'default_' : '')."records WHERE record_id=?");
@@ -322,5 +358,5 @@
 foreach (@debugbits) { print; }
 
-$page->param(grp => $group);
+$page->param(grp => $group) if $webvar{page} ne 'login';
 
 # spit it out
