home *** CD-ROM | disk | FTP | other *** search
/ ftp.sunet.sepub/pictures / 2014.11.ftp.sunet.se-pictures.tar / ftp.sunet.se / pub / pictures / ACiD-artpacks / www / mirrors / acheron / discus_admin_116439176 / source / src-board-subs-3 < prev    next >
Text File  |  1999-01-29  |  34KB  |  630 lines

  1. # FILE: src-board-subs-3
  2. #-------------------------------------------------------------------------------
  3. # This script is copyright (c) 1998 by DiscusWare, LLC, all rights reserved.
  4. # Its use is subject to the license agreement that can be found at the following
  5. # URL:  http://www.chem.hope.edu/discus/license
  6. #-------------------------------------------------------------------------------
  7.  
  8. #---SEPARATOR---#
  9. sub page_mgr_1 {
  10.     local ($username, $param_in) = @_;
  11.     local ($append,$owntopic,$tc);
  12.     &header;
  13.     $ts = "Page Manager" if $param_in == 0;
  14.     $ts = "Access Manager" if $param_in == 2;
  15.     print "<html><head><title>$ts</title>\n";
  16.     print "<SCRIPT LANGUAGE=\"JavaScript\">\n";
  17.     print "<!--\n";
  18.     print "function setStatus(msg) {\n";
  19.     print "  window.status=msg\n";
  20.     print "  return true\n";
  21.     print "}\n";
  22.     print "//-->\n";
  23.     print "</SCRIPT>\n";
  24.     print "</head>\n";
  25.     print "<body bgcolor=\"ffffff\" text=\"000000\" link=\"0000FF\" ";
  26.     print "vlink=\"0000FF\" ";
  27.     print "onLoad=\"window.defaultStatus='$ts: Topic Selection'\">\n";
  28.     print "$fs<FONT SIZE=3><CENTER><B>$ts</B></CENTER></FONT>\n";
  29.     $append = "?username=$username";
  30.     $tc = 0;
  31.     print "<HR>\n";
  32.     print "<b>Select one of the following topics ";
  33.     print "to edit:</B>\n" if $param_in == 0;
  34.     print "to modify access/posting privileges:</B>\n" if $param_in == 2;
  35.     print "<p>\n";
  36.     open (FILE, "$message_dir/board-topics.html") || &error_message("File Error", "Could not open top file (board-topics.html): <PRE>$!</PRE>! ");
  37.     @lines = <FILE>;
  38.     close(FILE);
  39.     print "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0><TR BGCOLOR=c0c0c0><TD> </TD><TD WIDTH=100%><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Topic</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Group</B></TD><TD> </TD></TR>\n";
  40.     $bgcolor = "ffffcc";
  41.     foreach $line (@lines) {
  42.         if ($line =~ /<!-Top: (\d+)-!>/) {
  43.             $filenumber = $1;
  44.             $tc += 1;
  45.             $string = "//$filenumber/$filenumber.$ext";
  46.             &extract("$string");
  47.             if (&verify_owner($owner,$username)) {
  48.                 print "<TR BGCOLOR=$bgcolor><TD BGCOLOR=c0c0c0> </TD><TD>";
  49.                 print "$fs<A HREF=\"$cgiurlm$append&HTTP_REFERER=//$filenumber/";
  50.                 $str = &JavaScript_prepare($topic_name);
  51.                 print "$filenumber.$ext&action=page_editor\" onMouseOver=\"" if $param_in == 0;
  52.                 print "$filenumber.$ext&action=access_mgr_2\" onMouseOver=\"" if $param_in == 2;
  53.                 print "return setStatus('Edit $str')\">$topic_name</A></FONT>" if $param_in == 0;
  54.                 print "return setStatus('Edit access/posting privileges of $str')\">$topic_name</A></FONT>" if $param_in == 2;
  55.                 print "</TD><TD>$fs\u$owner</FONT></TD><TD BGCOLOR=c0c0c0> </TD></TR>\n";
  56.                 $owntopic = 1;
  57.                 if ($bgcolor eq "ffffff") {
  58.                     $bgcolor = "ffffcc";
  59.                 } else {
  60.                     $bgcolor = "ffffff";
  61.                 }
  62.             }
  63.         }
  64.     }
  65.     if ($owntopic == 0 && $param_in == 0) {
  66.         print "<TR BGCOLOR=c0c0c0><TD> </TD><TD COLSPAN=2>$fs", "You aren't authorized to edit any topics!!!\n";
  67.         if ($tc == 0 && $username eq $superuser) {
  68.             print "<P>Note that this is because there are not any topics created yet.  You need\n";
  69.             print "to use the 'Board Manager' to create topics.  For more information,\n";
  70.             print "consult the <A HREF=\"$html_url/board-admin-instr-03.html\"";
  71.             print " TARGET=Admin_Main>Superuser Getting Started Tutorial</A>!<P>\n";
  72.         }
  73.         print "</TD><TD> </TD></TR></TABLE>\n";
  74.     } else {
  75.         print "<TR BGCOLOR=c0c0c0><TD COLSPAN=4> </TD></TR></TABLE>\n";
  76.     }
  77.     print "</BODY></HTML>\n";
  78.     exit(0);
  79. }
  80.  
  81. #---SEPARATOR---#
  82. #REQ:get_date_time
  83.  
  84. sub page_mgr_2 {
  85.     local ($page_referer,$username) = @_;
  86.     local ($str,$key,$line,@parent);
  87.     &extract($page_referer);
  88.     open (ME, "$message_dir/$topic_number/$me_number.$ext") if -e "$message_dir/$topic_number/$me_number.$ext";
  89.     open (ME, "$secdir/$topic_number/$me_number.$ext") if !-e "$message_dir/$topic_number/$me_number.$ext";
  90.     local (@me) = <ME>;
  91.     close (ME);
  92.     $count = 0;
  93.     $messagecount = 0;
  94.     foreach $line (@me) {
  95.         $count += 1 if $line =~ /<!-Top:/ || $line =~ /<!-URL:/;
  96.         $messagecount += 1 if $line =~ /<!-Post:/;
  97.     }
  98.     $str = &JavaScript_prepare($me_name);
  99.     &header;
  100.     print "<HTML><HEAD><TITLE>Page Manager: $str</TITLE>\n";
  101.     print "<SCRIPT LANGUAGE=\"JavaScript\">\n";
  102.     print "<!--\n";
  103.     print "function setStatus(msg) {\n";
  104.     print "  window.status=msg\n";
  105.     print "  return true\n";
  106.     print "}\n";
  107.     print "function subact(action, number, name1) {\n";
  108.     print "  document.sf.SELECTION.value = action + number;\n";
  109.     print "  if (action == 'delete') {\n";
  110.     print "    var m = confirm(\"Are you sure you want to delete \" + name1 + \"?\");\n";
  111.     print "    if (m == true) {\n";
  112.     print "      document.sf.submit();\n";
  113.     print "    }\n";
  114.     print "  } else {\n";
  115.     print "    document.sf.submit()\n";
  116.     print "  }\n";
  117.     print "}\n";
  118.     print "function msgact(action, number, name1) {\n";
  119.     print "  document.mf.SELECTION.value = action + number;\n";
  120.     print "  if (action == 'delete') {\n";
  121.     print "    var m = confirm(\"Are you sure you want to delete \" + name1 + \"?\");\n";
  122.     print "    if (m == true) {\n";
  123.     print "      document.mf.submit();\n";
  124.     print "    }\n";
  125.     print "  } else {\n";
  126.     print "    document.mf.submit()\n";
  127.     print "  }\n";
  128.     print "}\n";
  129.     print "function recompute() {\n";
  130.     print "  if (document.layout.element1.checked == true && document.layout.element2.checked == false && document.layout.element3.checked == false && document.layout.element4.checked == false && document.layout.element5.checked == false && document.layout.element6.checked == false) {\n";
  131.     print "    document.layout.pgtype[0].checked = true;\n";
  132.     print "    return true;\n";
  133.     print "  }\n";
  134.     print "  if (document.layout.element1.checked == true && document.layout.element2.checked == true && document.layout.element3.checked == false && document.layout.element4.checked == false && document.layout.element5.checked == false && document.layout.element6.checked == false) {\n";
  135.     print "    document.layout.pgtype[1].checked = true;\n";
  136.     print "    return true;\n";
  137.     print "  }\n";
  138.     print "  if (document.layout.element1.checked == false && document.layout.element2.checked == false && document.layout.element3.checked == false && document.layout.element4.checked == true && document.layout.element5.checked == true && document.layout.element6.checked == false) {\n";
  139.     print "    document.layout.pgtype[2].checked = true;\n";
  140.     print "    return true;\n";
  141.     print "  }\n";
  142.     print "  document.layout.pgtype[3].checked = true;\n";
  143.     print "  return true;\n";
  144.     print "}\n";
  145.     print "function marktos(num,count,dir) {\n";
  146.     print "  if (count == 1) {\n";
  147.     print "    var c = document.sf.MARK.checked;\n";
  148.     print "    document.sf.MARK.checked = 1-c;\n";
  149.     print "  } else {\n";
  150.     print "    var c = document.sf.MARK[num].checked;\n";
  151.     print "    if (dir==1) {\n";
  152.     print "      for (var i=0; i<=num; i++) {\n";
  153.     print "        document.sf.MARK[i].checked = 1-c;\n";
  154.     print "      }\n";
  155.     print "    }\n";
  156.     print "    if (dir==0) {\n";
  157.     print "      for (var i=num; i<count; i++) {\n";
  158.     print "        document.sf.MARK[i].checked = 1-c;\n";
  159.     print "      }\n";
  160.     print "    }\n";
  161.     print "  }\n";
  162.     print "}\n";
  163.     print "function marktom(num,count,dir) {\n";
  164.     print "  if (count == 1) {\n";
  165.     print "    var c = document.mf.MARK.checked;\n";
  166.     print "    document.mf.MARK.checked = 1-c;\n";
  167.     print "  } else {\n";
  168.     print "    var c = document.mf.MARK[num].checked;\n";
  169.     print "    if (dir==1) {\n";
  170.     print "      for (var i=0; i<=num; i++) {\n";
  171.     print "        document.mf.MARK[i].checked = 1-c;\n";
  172.     print "      }\n";
  173.     print "    }\n";
  174.     print "    if (dir==0) {\n";
  175.     print "      for (var i=num; i<count; i++) {\n";
  176.     print "        document.mf.MARK[i].checked = 1-c;\n";
  177.     print "      }\n";
  178.     print "    }\n";
  179.     print "  }\n";
  180.     print "}\n";
  181.     print "//-->\n";
  182.     print "</SCRIPT>\n";
  183.     print "</HEAD>\n";
  184.     print '<BODY BGCOLOR="ffffff" TEXT="000000" LINK="0000FF" VLINK="0000FF" ';
  185.     print 'onLoad="window.defaultStatus =', "'$str';recompute()\">\n";
  186.     print "$fs\n";
  187.     print "<FONT SIZE=3><CENTER><B>$me_name</B></CENTER></FONT>\n";
  188.     print "<HR><STRONG>\n";
  189.     local (@array) = ("$topic_number:$topic_name");
  190.     foreach $key (sort by_number keys(%level_number)) {
  191.         push (@array, "$level_number{$key}:$level_name{$key}");
  192.     }
  193.     print "<A HREF=\"$cgiurlm?username=$username&action=mgr_1";
  194.     print "&HTTP_REFERER=$page_referer\" onMouseOver=\"return setStatus('";
  195.     print "Return to topic selection screen')\">Page Manager</A>:\n";
  196.     foreach $line (@array) {
  197.         ($number,$name) = split(/:/, $line, 2);
  198.         if ($number != $me_number) {
  199.             print "<A HREF=\"$cgiurlm?username=$username&action=page_editor";
  200.             print "&HTTP_REFERER=//$topic_number/$number.$ext\" onMouseOver=\"return ";
  201.             $str = &JavaScript_prepare($name);
  202.             print "setStatus('Return to editing $str')\">";
  203.         }
  204.         print "$name";
  205.         print "</A>:\n" if $number != $me_number;
  206.     }
  207.     print "</STRONG><HR>\n";
  208.     print "<TABLE WIDTH=100% BGCOLOR=#ffffcc CELLSPACING=0 CELLPADDING=0>\n";
  209.     print "<TR><TD VALIGN=TOP WIDTH=75%>$fs";
  210.     print "<CENTER><B>Quick Navigation</B></CENTER><BR>";
  211.     print "\n";
  212.     print "<IMG SRC=\"$html_url/icons/tree_g.gif\" HEIGHT=16 WIDTH=20> ";
  213.     print "(<A HREF=\"$script_url/show.$cgi_extension?$topic_number/";
  214.     print "$me_number.$ext\" onMouseOver=\"return setStatus('Go to this ";
  215.     print "page on the board')\" TARGET=_top>";
  216.     print "Go to this page on the board</A>)<BR>\n";
  217.     print "<IMG SRC=\"$html_url/icons/tree_g.gif\" HEIGHT=16 WIDTH=20> ";
  218.     print "(";
  219.     print "<A HREF=\"$cgiurlm?username=$username&action=graphic_browser";
  220.     print "&HTTP_REFERER=$page_referer\" onMouseOver=\"return setStatus('";
  221.     print "Select page to edit using graphical tree')\">Show all subtopics</A>)<BR>\n";
  222.     if ($parent_number > 0 && $parent_number != $me_number) {
  223.         open (PARENT, "$message_dir/$topic_number/$parent_number.$ext") if -e "$message_dir/$topic_number/$parent_number.$ext";
  224.         open (PARENT, "$secdir/$topic_number/$parent_number.$ext") if !-e "$message_dir/$topic_number/$parent_number.$ext";
  225.         @parent = <PARENT>;
  226.         close (PARENT);
  227.         print "<IMG SRC=\"$html_url/icons/tree_h.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP> ";
  228.     } else {
  229.         print "<IMG SRC=\"$html_url/icons/tree_h.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP> (Top Level)<BR>\n";
  230.         @parent = ("<!-Top: $me_number-!><LI><A>$me_name</A>");
  231.     }
  232.     foreach $line (@parent) {
  233.         $lastnum = $1 if $line =~ /<!-Top: (\d+)-!>/;
  234.     }
  235.     $lastflag1 = 0;
  236.     $lastflag2 = 0;
  237.     foreach $line (@parent) {
  238.         if ($line =~ /<!--Me: (\d+)\/(.*)-->/) {
  239.             $num = $1; $name2 = $2;
  240.             $name2 =~ s/<[^>]*>//g;
  241.             $l = $name2;
  242.             while ($l =~ m|&#(\d+);|) {
  243.                 $l = join("", $`, pack("c", $1), $');
  244.             }
  245.             $name = $l;
  246.             if (length($name) > 25) { 
  247.                 $name = substr($l, 0, 25);
  248.                 $name .= "...";
  249.             }
  250.             $name = &JavaScript_prepare($name, 1);
  251.             $str = &JavaScript_prepare($name2);
  252.             print "<A HREF=\"$cgiurlm?username=$username&action=page_editor";
  253.             print "&HTTP_REFERER=//$topic_number/$num.$ext\" onMouseOver=\"return ";
  254.             print "setStatus('Return to parent page: $str')\">$name</A><BR>\n";
  255.         } elsif ($line =~ /<!-Top: (\d+)-!><LI>([^>]*)>(.*)<\/A>/) {
  256.             $num = $1; $name2 = $3;
  257.             $name2 =~ s/<[^>]*>//g;
  258.             $l = $name2;
  259.             while ($l =~ m|&#(\d+);|) {
  260.                 $l = join("", $`, pack("c", $1), $');
  261.             }
  262.             $name = $l;
  263.             if (length($name) > 25) { 
  264.                 $name = substr($l, 0, 25);
  265.                 $name .= "...";
  266.             }
  267.             $name = &JavaScript_prepare($name, 1);
  268.             $str = &JavaScript_prepare($name2);
  269.             print "<IMG SRC=\"$html_url/icons/tree_e.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $num != $lastnum;
  270.             print "<IMG SRC=\"$html_url/icons/tree_f.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $num == $lastnum;
  271.             $lastflag1 = 1 if $num == $lastnum;
  272.             if ($num != $me_number) {
  273.                 print "<IMG SRC=\"$html_url/icons/tree_g.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP> <A HREF=\"$cgiurlm?username=$username&action=page_editor";
  274.                 print "&HTTP_REFERER=//$topic_number/$num.$ext\" onMouseOver=\"return ";
  275.                 print "setStatus('Go to sister page: $str')\">$name</A><BR>\n";
  276.             } else {
  277.                 print "<IMG SRC=\"$html_url/icons/tree_h.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP> $name<BR>\n";
  278.                 undef @me_children;
  279.                 foreach $line (@me) {
  280.                     $lastme = $1 if $line =~ /<!-Top: (\d+)-!>/;
  281.                 }
  282.                 foreach $line (@me) {
  283.                     if ($line =~ /<!-Top: (\d+)-!><LI>([^>]*)>(.*)<\/A>/) {
  284.                         $num = $1; $name2 = $3;
  285.                         push (@me_children,"$num:$name2");
  286.                         $l = $name2;
  287.                         while ($l =~ m|&#(\d+);|) {
  288.                             $l = join("", $`, pack("c", $1), $');
  289.                         }
  290.                         $name = $l;
  291.                         if (length($name) > 25) { 
  292.                             $name = substr($l, 0, 25);
  293.                             $name .= "...";
  294.                         }
  295.                         $name = &JavaScript_prepare($name, 1);
  296.                         $str = &JavaScript_prepare($name2);
  297.                         print "<IMG SRC=\"$html_url/icons/tree_i.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $lastflag1 == 0;
  298.                         print "<IMG SRC=\"$html_url/icons/tree_j.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $lastflag1 == 1;
  299.                         print "<IMG SRC=\"$html_url/icons/tree_e.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $lastme != $num;
  300.                         print "<IMG SRC=\"$html_url/icons/tree_f.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP>" if $lastme == $num;
  301.                         print "<IMG SRC=\"$html_url/icons/tree_g.gif\" HEIGHT=16 WIDTH=20 ALIGN=TOP> <A HREF=\"$cgiurlm?username=$username&action=page_editor&HTTP_REFERER=$topic_number/$num.$ext\" onMouseOver=\"return setStatus('Enter child page: $str')\">$name</A><BR>\n";
  302.                     } elsif ($line =~ /<!-URL: (\d+)-!><LI><A HREF="([^"]*)"[^>]*>(.*)<\/A><\/LI><P>\n/) {
  303.                         push (@me_children, "0$1:$2!$3");
  304.                     }
  305.                 }
  306.             }
  307.         }
  308.     }
  309.     print "</FONT></TD>\n";
  310.     print "<TD WIDTH=25% VALIGN=TOP ALIGN=CENTER>$fs\n";
  311.     print "";
  312.     print "<B>Quick Options</B><BR><BR>\n";
  313.     print "[<A HREF=\"#Announcement\">Announcement</A>]<BR>\n" if $param =~ /Announcement/;
  314.     print "[<A HREF=\"#Subtopics\">Subtopics</A>]<BR>\n" if $param =~ /Sub/;
  315.     print "[<A HREF=\"#AddSubtopic\">Add a Subtopic</A>]<BR>\n" if $param =~ /Sub/;
  316.     print "[<A HREF=\"#AboutMessage\">About Message</A>]<BR>\n" if $param =~ /About/;
  317.     print "[<A HREF=\"#Messages\">Messages</A>]<BR>\n" if $param =~ /Message/;
  318.     print "[<A HREF=\"#AddMessage\">Add a Message</A>]<BR>\n" if $param =~ /Message/;
  319.     print "[<A HREF=\"#Layout\">Page Layout</A>]<BR>\n";
  320.     print "</TD></TR></TABLE>\n";
  321.     if ($param =~ /Announcement/) {
  322.         print "<HR><A NAME=\"Announcement\"><H3>Announcement</H3>\n";
  323.         $announce = ""; $flag = 0;
  324.         foreach $line (@me) {
  325.             if ($line =~ /<!--Announcement Source:/) {
  326.                 $flag = 1;
  327.             } elsif ($line =~ /^-->/) {
  328.                 $flag = 0;
  329.             } elsif ($flag == 1) {
  330.                 $announce .= $line;
  331.             }
  332.         }
  333.         $announce =~ s/\s+$//g; $announce =~ s/^\s+//g;
  334.         $announce = &unescape($announce) unless $announce =~ /\s/;
  335.         $announce =~ s/</</g;
  336.         $announce =~ s/>/>/g;
  337.         print "<FORM ACTION=\"$cgiurl1\" METHOD=POST>\n";
  338.         print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"announce_message\">\n";
  339.         print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  340.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  341.         print "<TABLE BORDER=1 BGCOLOR=ffffcc WIDTH=100%><TR><TD>$fs", "Enter the text for your "Announcement" in the area below.</FONT><P>\n";
  342.         print "<TEXTAREA WRAP=VIRTUAL NAME=message ROWS=6 COLS=60>$announce</TEXTAREA><P>\n";
  343.         print "<INPUT TYPE=SUBMIT name=submit VALUE=\"Preview/Save Message\">\n";
  344.         print "</TD></TR></TABLE><BR>\n";
  345.         print "</FORM>\n";
  346.     }
  347.     if ($param =~ /Sub/) {
  348.         undef @seennum;
  349.         print "<HR><A NAME=\"Subtopics\"><H3>Subtopics</H3>\n";
  350.         print "<FORM ACTION=\"$cgiurl1\" METHOD=POST NAME=sf>\n";
  351.         print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"subtopics\">\n";
  352.         print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  353.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  354.         print "<INPUT TYPE=HIDDEN NAME=SELECTION VALUE=\"\">\n";
  355.         print "<A NAME=\"tops\">\n";
  356.         print "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0>\n";
  357.         $c = "ffffcc";
  358.         print "<TR ALIGN=CENTER BGCOLOR=c0c0c0><TD> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Order</B></FONT></TD><TD> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Mark</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Del</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Mov</B></FONT></TD><TD BGCOLOR=c0c0c0> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Prop</B></FONT></TD><TD BGCOLOR=c0c0c0> </TD><TD ALIGN=LEFT><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Subtopic</B></FONT></TD><TD> </TD></TR>\n";
  359.         foreach $thing (@me_children) {
  360.             if ($thing =~ /^(\d+):(.*)/) {
  361.                 $num = $1;
  362.                 $name = $2;
  363.                 push (@seennum, $num);
  364.             }
  365.         }
  366.         $ctr = 0; $ct = scalar(@me_children);
  367.         foreach $thing (@me_children) {
  368.             if ($thing =~ /^(\d+):(.*)/) {
  369.                 $num = $1;
  370.                 $name = $2;
  371.                 if ($num =~ /^0/) {
  372.                     ($url,$descr) = split(/!/, $name, 2);
  373.                     $link = 1;
  374.                 } else {
  375.                     $link = 0;
  376.                     $descr = $name;
  377.                 }
  378.                 print "<TR VALIGN=CENTER ALIGN=CENTER BGCOLOR=#$c><TD BGCOLOR=c0c0c0> </TD>";
  379.                 $counter += 1;
  380.                 if ($c eq "ffffcc") {
  381.                     $c = "ffffff";
  382.                 } else {
  383.                     $c = "ffffcc";
  384.                 }
  385.                 print "<TD ALIGN=LEFT><INPUT TYPE=TEXT NAME=ORDER$num VALUE=$counter SIZE=3></TD>";
  386.                 print "<TD BGCOLOR=c0c0c0> </TD>\n";
  387.                 print "<TD>";
  388.                 print "<A HREF=\"#\" onClick=\"marktos($ctr, $ct, 1);return false\" onMouseOver=\"return setStatus('Toggle marks at and above this point')\"><IMG SRC=\"$html_url/icons/mark_up.gif\" HEIGHT=12 WIDTH=12 BORDER=0></A> ";
  389.                 print "<A HREF=\"#\" onClick=\"marktos($ctr, $ct, 0);return false\" onMouseOver=\"return setStatus('Toggle marks at and below this point')\"><IMG SRC=\"$html_url/icons/mark_down.gif\" HEIGHT=12 WIDTH=12 BORDER=0></A> ";
  390.                 print "<INPUT TYPE=CHECKBOX NAME=MARK VALUE=$num>  </TD>";
  391.                 $name2 = &JavaScript_prepare($descr); $ctr++;
  392.                 print "<TD><A HREF=\"javascript:subact('delete', '$num', '$name2')\" onMouseOver=\"return setStatus('Delete this subtopic')\"><IMG SRC=\"$html_url/icons/delete_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  393.                 print "<TD><A HREF=\"javascript:subact('move', '$num', '$name2')\" onMouseOver=\"return setStatus('Move this subtopic')\"><IMG SRC=\"$html_url/icons/move_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  394.                 print "<TD BGCOLOR=c0c0c0> </TD>\n";
  395.                 print "<TD><A HREF=\"javascript:subact('properties', '$num', '$name2')\" onMouseOver=\"return setStatus('Set properties for this subtopic (rename)')\"><IMG SRC=\"$html_url/icons/properties_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>" if !$link;
  396.                 print "<TD><A HREF=\"javascript:subact('properties', '$num', '$name2')\" onMouseOver=\"return setStatus('Set properties for this link (rename, link URL)')\"><IMG SRC=\"$html_url/icons/properties_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>" if $link;
  397.                 print "<TD BGCOLOR=c0c0c0> </TD>\n";
  398.                 print "<TD WIDTH=100% ALIGN=LEFT>$fs\n";
  399.                 if ($link) {
  400.                     print "$descr<BR><A HREF=\"$url\" TARGET=_blank>$url</A></FONT>";
  401.                 } else {
  402.                     print "<A HREF=\"$cgiurlm?username=$username&action=page_editor";
  403.                     print "&HTTP_REFERER=$topic_number/$num.$ext\" onMouseOver=\"return ";
  404.                     $str = &JavaScript_prepare($name);
  405.                     print "setStatus('Edit this subtopic: $str')\">$name</A>";
  406.                 }
  407.                 print "</TD><TD BGCOLOR=c0c0c0> </TD>";
  408.                 print "</TR>\n";
  409.             }
  410.         }
  411.         if ($counter > 0) {
  412.             print "<TR BGCOLOR=#ccccff ALIGN=CENTER>";
  413.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  414.             print "<TD><A HREF=\"javascript:subact('reorder', 'all', '')\" onMouseOver=\"return setStatus('Reorder subtopics')\"><IMG SRC=\"$html_url/icons/reorder_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  415.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  416.             print "<TD ALIGN=LEFT><FONT FACE=\"Verdana,Arial\" SIZE=2><B>(Marked)</B></TD>";
  417.             print "<TD><A HREF=\"javascript:subact('delete', 'all', 'all marked subtopics')\" onMouseOver=\"return setStatus('Delete all marked subtopics')\"><IMG SRC=\"$html_url/icons/delete_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  418.             print "<TD><A HREF=\"javascript:subact('move', 'all', 'all marked subtopics')\" onMouseOver=\"return setStatus('Move all marked subtopics')\"><IMG SRC=\"$html_url/icons/move_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  419.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  420.             print "<TD> </TD>";
  421.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  422.             print "<TD> </TD>";
  423.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  424.             print "</TR>\n";
  425.         }
  426.         print "<TR BGCOLOR=c0c0c0><TD COLSPAN=11> </TD></TR></TABLE>\n";
  427.         print "</FORM>\n";
  428.         print "<HR><A NAME=\"AddSubtopic\"><H3>Add a Subtopic</H3>\n";
  429.         print "<FORM ACTION=\"$cgiurl1\" METHOD=POST NAME=asf>\n";
  430.         print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"add_subtopic\">\n";
  431.         print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  432.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  433.         print "<TABLE BGCOLOR=ffffcc BORDER=1 WIDTH=100%><TR><TD>";
  434.         print "<TABLE WIDTH=100%><TR><TD>", $fs, "Name:</TD><TD><INPUT TYPE=TEXT SIZE=50 NAME=subtopic></TD></TR></TABLE>\n";
  435.         print "<TABLE WIDTH=100%>\n";
  436.         print "<TR><TD>$fs", "<INPUT TYPE=RADIO NAME='type' VALUE=\"page\" CHECKED onClick=\"document.asf.linktype[0].checked=false;document.asf.linktype[1].checked=false;document.asf.linktype[2].checked=false;document.asf.url.value='N/A';if (!document.asf.pagetype[0].checked && !document.asf.pagetype[1].checked && !document.asf.pagetype[2].checked) {document.asf.pagetype[0].checked = true}\"> New discussion page:</TD><TD>$fs<INPUT TYPE=RADIO NAME='type' VALUE=\"link\" onClick=\"if (document.asf.url.value == 'N/A') {document.asf.url.value='http://'};document.asf.pagetype[0].checked=false;document.asf.pagetype[1].checked=false;document.asf.pagetype[2].checked=false;if (!document.asf.linktype[0].checked && !document.asf.linktype[1].checked && !document.asf.linktype[2].checked) {document.asf.linktype[0].checked = true}\"> Link to external document:</TD></TR>\n";
  437.         print "<TR><TD VALIGN=TOP>$fs", "   <INPUT TYPE=RADIO NAME=pagetype VALUE=privateindex CHECKED onClick=\"document.asf.type[0].checked=true;document.asf.type[0].click()\">Private Index<BR>\n";
  438.         print "   <INPUT TYPE=RADIO NAME=pagetype VALUE=publicindex onClick=\"document.asf.type[0].checked=true;document.asf.type[0].click()\">Public Index<BR>\n";
  439.         print "   <INPUT TYPE=RADIO NAME=pagetype VALUE=message onClick=\"document.asf.type[0].checked=true;document.asf.type[0].click()\">Message Page<P>\n";
  440.         print "   <INPUT TYPE=CHECKBOX NAME=jumpin VALUE=1 CHECKED> Edit new subtopic once created\n";
  441.         print "</TD><TD VALIGN=TOP>";
  442.         print "$fs   <INPUT TYPE=RADIO NAME=linktype VALUE=rightframe onClick=\"document.asf.type[1].checked=true;document.asf.type[1].click()\">Right frame<BR>\n";
  443.         print "   <INPUT TYPE=RADIO NAME=linktype VALUE=top onClick=\"document.asf.type[1].checked=true;document.asf.type[1].click()\">Top (replace board)<BR>\n";
  444.         print "   <INPUT TYPE=RADIO NAME=linktype VALUE=new onClick=\"document.asf.type[1].checked=true;document.asf.type[1].click()\">New browser window<BR><BR>\n";
  445.         print "URL:</FONT> <INPUT TYPE=TEXT NAME=url VALUE=\"N/A\" SIZE=25 onChange=\"document.asf.type[1].checked=true;document.asf.type[1].click()\"><BR>\n";
  446.         print "</TD></TR>\n";
  447.         print "<TR><TD COLSPAN=2><BR><INPUT TYPE=SUBMIT NAME=submit VALUE=\"Add this Subtopic\"></TD></TR></TABLE>\n";
  448.         print "</TD></TR></TABLE></FORM>\n";
  449.     }
  450.     if ($param =~ /About/) {
  451.         print "<HR><A NAME=\"AboutMessage\"><H3>About Message</H3>\n";
  452.         $aboutmessage = ""; $flag = 0;
  453.         foreach $line (@me) {
  454.             if ($line =~ /<!--Source:/) {
  455.                 $flag = 1;
  456.             } elsif ($line =~ /^-->/) {
  457.                 $flag = 0;
  458.             } elsif ($flag == 1) {
  459.                 $aboutmessage .= $line;
  460.             }
  461.         }
  462.         $aboutmessage =~ s/\s+$//g; $aboutmessage =~ s/^\s+//g;
  463.         $aboutmessage = &unescape($aboutmessage) unless $aboutmessage =~ /\s/;
  464.         $aboutmessage =~ s/</</g;
  465.         $aboutmessage =~ s/>/>/g;
  466.         print "<FORM ACTION=\"$cgiurl1\" METHOD=POST>\n";
  467.         print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"about_message\">\n";
  468.         print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  469.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  470.         print "<TABLE BORDER=1 BGCOLOR=ffffcc WIDTH=100%><TR><TD>$fs", "Enter the text for your "About Message" in the area below.</FONT><P>\n";
  471.         print "<TEXTAREA WRAP=VIRTUAL NAME=message ROWS=6 COLS=60>$aboutmessage</TEXTAREA><P>\n";
  472.         print "<INPUT TYPE=SUBMIT name=submit VALUE=\"Preview/Save Message\">\n";
  473.         print "</TD></TR></TABLE><BR>\n";
  474.         print "</FORM>\n";
  475.     }
  476.     if ($param =~ /Message/) {
  477.         undef %message;
  478.         undef @messageorder;
  479.         $flag = 0;
  480.         $ct = 0;
  481.         foreach $line (@me) {
  482.             if ($line =~ /<!-Post: (\d+)-!>/) {
  483.                 $flag = $1; $ct += 1;
  484.                 push (@messageorder, $flag);
  485.             } elsif ($line =~ /<!-\/Post/) {
  486.                 $flag = 0;
  487.             } elsif ($flag != 0) {
  488.                 $message{$flag} .= $line;
  489.             }
  490.         }
  491.         $ctr = 0;
  492.         print "<HR><A NAME=\"Messages\"><H3>Messages</H3>\n";
  493.         print "<FORM ACTION=\"$cgiurl1\" METHOD=POST NAME=mf>\n";
  494.         print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"messages\">\n";
  495.         print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  496.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  497.         print "<INPUT TYPE=HIDDEN NAME=SELECTION VALUE=\"\">\n";
  498.         print "<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0>\n";
  499.         $c = "ffffcc";
  500.         print "<TR ALIGN=CENTER BGCOLOR=c0c0c0><TD> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Order</B></FONT></TD><TD> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Mark</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Del</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Mov</B></FONT></TD><TD BGCOLOR=c0c0c0> </TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Edit</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>View</B></FONT></TD><TD><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Info</B></FONT></TD><TD BGCOLOR=c0c0c0> </TD><TD ALIGN=LEFT><FONT FACE=\"Verdana,Arial\" SIZE=1><B>Message</B></FONT></TD><TD> </TD></TR>\n";
  501.         $count = 0;
  502.         open (LOG, "$admin_dir/log.txt");
  503.         @log = <LOG>;
  504.         close (LOG);
  505.         $counter = 0;
  506.         foreach $num (@messageorder) {
  507.             print "<TR VALIGN=CENTER ALIGN=CENTER BGCOLOR=#$c><TD BGCOLOR=c0c0c0> </TD>";
  508.             $counter += 1;
  509.             ($info) = grep(/^$num;/, @log);
  510.             ($numb, $by, $time, $where, $ipaddr, $iphost, $actualtext, $postby) = split(/;/, $info);
  511.             if ($by eq "public user:MODERATOR") {
  512.                 $by = "Public User";
  513.             }
  514.             $text = $message{$num};
  515.             @text = split(/\n/, $text);
  516.             shift (@text);
  517.             $postbyline = shift(@text);
  518.             if ($postby eq "") {
  519.                 if ($postbyline =~ m|<FONT SIZE="?-1"?>By <B>(.*)</B> on <B>(.*)</B>:</FONT><P>|) {
  520.                     $postby = &remove_html($1);
  521.                     $postby =~ s/\([^\)]*\)//g;
  522.                 } else {
  523.                     $postby = &remove_html($postbyline);
  524.                     $postby =~ s/\([^\)]*\)//g;
  525.                 }
  526.             } else {
  527.                 $postby = &unescape($postby);
  528.                 $postby = &remove_html($postby);
  529.                 $postby =~ s/\([^\)]*\)//g;
  530.             }                
  531.             $actualtext = join(" ", @text);
  532.             $actualtext =~ s/\n/ /g;
  533.             $preview = &remove_html($actualtext, 1);
  534.             $preview .= " ";
  535.             if ($preview =~ m|^(.{0,40})\s|) {
  536.                 $preview = $1;
  537.             } else {
  538.                 $preview = substr($preview, 0, 40);
  539.             }
  540.             $ts = &get_date_time("short", $time);
  541.             print "<TD ALIGN=LEFT><INPUT TYPE=TEXT NAME=ORDER$num VALUE=$counter SIZE=3></TD>";
  542.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  543.             print "<TD>";
  544.             $pb = &JavaScript_prepare($postby);
  545.             $pb =~ s/\s+$//;
  546.             print "<A HREF=\"#\" onClick=\"marktom($ctr, $ct, 1);return false\" onMouseOver=\"return setStatus('Toggle marks at and above this point')\"><IMG SRC=\"$html_url/icons/mark_up.gif\" HEIGHT=12 WIDTH=12 BORDER=0></A> ";
  547.             print "<A HREF=\"#\" onClick=\"marktom($ctr, $ct, 0);return false\" onMouseOver=\"return setStatus('Toggle marks at and below this point')\"><IMG SRC=\"$html_url/icons/mark_down.gif\" HEIGHT=12 WIDTH=12 BORDER=0></A> ";
  548.             $ctr++;
  549.             print "<INPUT TYPE=CHECKBOX NAME=MARK VALUE=$num>  </TD>";
  550.             print "<TD><A HREF=\"javascript:msgact('delete', '$num', 'message number $counter, by $postby on $ts')\" onMouseOver=\"return setStatus('Delete this message')\"><IMG SRC=\"$html_url/icons/delete_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  551.             print "<TD><A HREF=\"javascript:msgact('move', '$num', '')\" onMouseOver=\"return setStatus('Move this message')\"><IMG SRC=\"$html_url/icons/move_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  552.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  553.             print "<TD><A HREF=\"javascript:msgact('edit', '$num', '')\" onMouseOver=\"return setStatus('Edit this message')\"><IMG SRC=\"$html_url/icons/edit_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  554.             print "<TD><A HREF=\"$cgiurlm?username=$FORM{'username'}&action=viewmessage&HTTP_REFERER=/$FORM{'HTTP_REFERER'}&num=$num\" onMouseOver=\"return setStatus('View this message')\"><IMG SRC=\"$html_url/icons/view_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  555.             print "<TD><A HREF=\"javascript:alert('POST INFORMATION\\nPosted by: $by\\nIP Address: $ipaddr\\nIP Host: $iphost')\" onMouseOver=\"return setStatus('View information for this message')\"><IMG SRC=\"$html_url/icons/info_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  556.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  557.             print "<TD ALIGN=LEFT><FONT FACE=\"Verdana,Arial\" SIZE=1>$postby [";
  558.             print "$ts]<BR>$preview</FONT></TD>";
  559.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  560.             print "</TR>\n";
  561.             if ($c eq "ffffcc") {
  562.                 $c = "ffffff";
  563.             } else {
  564.                 $c = "ffffcc";
  565.             }
  566.         }
  567.         if ($counter > 0) {
  568.             print "<TR BGCOLOR=#ccccff ALIGN=CENTER>";
  569.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  570.             print "<TD><A HREF=\"javascript:msgact('reorder', 'all', '')\" onMouseOver=\"return setStatus('Reorder messages')\"><IMG SRC=\"$html_url/icons/reorder_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  571.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  572.             print "<TD ALIGN=LEFT><FONT FACE=\"Verdana,Arial\" SIZE=2><B>(Marked)</B></TD>";
  573.             print "<TD><A HREF=\"javascript:msgact('delete', 'all', 'all marked messages')\" onMouseOver=\"return setStatus('Delete all marked messages')\"><IMG SRC=\"$html_url/icons/delete_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  574.             print "<TD><A HREF=\"javascript:msgact('move', 'all', 'all marked messages')\" onMouseOver=\"return setStatus('Move all marked messages')\"><IMG SRC=\"$html_url/icons/move_icon.gif\" HEIGHT=25 WIDTH=25 BORDER=1></A></TD>";
  575.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  576.             print "<TD COLSPAN=3> </TD>";
  577.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  578.             print "<TD> </TD>";
  579.             print "<TD BGCOLOR=c0c0c0> </TD>\n";
  580.             print "</TR>\n";
  581.         }
  582.         print "<TR BGCOLOR=c0c0c0><TD COLSPAN=13> </TD></TR></TABLE>\n";
  583.         print "</FORM>\n";
  584.         print "<HR><A NAME=\"AddMessage\"><H3>Add a Message</H3>\n";
  585.         print "<FORM ACTION=\"$script_url/board-post.$cgi_extension\" METHOD=POST>\n";
  586.         print "<TABLE BORDER=1 BGCOLOR=ffffcc WIDTH=100%><TR><TD>$fs", "Enter the text for your message in the area below.</FONT><P>\n";
  587.         print "<TEXTAREA NAME=message ROWS=12 COLS=55 WRAP=VIRTUAL>";
  588.         print "</TEXTAREA><P>\n";
  589.         print "<INPUT TYPE=checkbox NAME=Anon VALUE=\"on\">$fs Post message as "Anonymous"</FONT><BR><BR>\n";
  590.         print "<INPUT TYPE=submit NAME=submit VALUE=\"Preview/Post Message\">\n";
  591.         print "<INPUT TYPE=hidden NAME=name VALUE=\"$FORM{'username'}\">\n";
  592.         print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  593.         print "<INPUT TYPE=HIDDEN NAME=isitok VALUE=okiedokie>\n";
  594.         print "</TD></TR></TABLE></FORM>\n";
  595.     }
  596.     print "<HR>\n";
  597.     print "<A NAME=\"Layout\"><H3>Page Layout</H3>\n";
  598.     undef %params;
  599.     $params{subtopic} = "CHECKED" if $param =~ /Sub/;
  600.     $params{create} = "CHECKED"  if $param =~ /Create/;
  601.     $params{messages} = "CHECKED"  if $param =~ /Message/;
  602.     $params{about} = "CHECKED"  if $param =~ /About/;
  603.     $params{add} = "CHECKED"  if $param =~ /Add/;
  604.     $params{announce} = "CHECKED"  if $param =~ /Announcement/;
  605.     undef %t;
  606.     print "<FORM ACTION=\"$cgiurl1\" METHOD=POST NAME=layout>\n";
  607.     print "<INPUT TYPE=HIDDEN NAME=action VALUE=\"change_layout\">\n";
  608.     print "<INPUT TYPE=HIDDEN NAME=username VALUE=\"$username\">\n";
  609.     print "<INPUT TYPE=HIDDEN NAME=HTTP_REFERER VALUE=\"$page_referer\">\n";
  610.     print '<TABLE WIDTH=100% BORDER=1 BGCOLOR=ffffcc><TR><TD>';
  611.     print "<TABLE><TR><TD VALIGN=TOP>$fs", "<U>Available Templates</U>:<P>\n";
  612.     print "<INPUT TYPE=RADIO NAME=pgtype onClick=\"document.layout.element1.checked=true;document.layout.element2.checked=false;document.layout.element3.checked=false;document.layout.element4.checked=false;document.layout.element5.checked=false;document.layout.element6.checked=false\"> Private Index<BR>\n";
  613.     print "<INPUT TYPE=RADIO NAME=pgtype onClick=\"document.layout.element1.checked=true;document.layout.element2.checked=true;document.layout.element3.checked=false;document.layout.element4.checked=false;document.layout.element5.checked=false;document.layout.element6.checked=false\"> Public Index<BR>\n";
  614.     print "<INPUT TYPE=RADIO NAME=pgtype onClick=\"document.layout.element1.checked=false;document.layout.element2.checked=false;document.layout.element3.checked=false;document.layout.element4.checked=true;document.layout.element5.checked=true;document.layout.element6.checked=false\"> Message Page<BR>\n";
  615.     print "<INPUT TYPE=RADIO NAME=pgtype onClick=\"document.layout.element1.focus()\"> Custom Layout</TD>";
  616.     print "<TD>   </TD>\n";
  617.     print "<TD VALIGN=TOP>$fs", "<U>Discussion Elements</U>:<P>\n";
  618.     print "<INPUT TYPE=CHECKBOX NAME=element6 onClick=\"recompute()\" $params{announce}> Announcement<BR>\n";
  619.     print "<INPUT TYPE=CHECKBOX NAME=element1 onClick=\"recompute()\" $params{subtopic}> List of subtopics<BR>\n";
  620.     print "<INPUT TYPE=CHECKBOX NAME=element2 onClick=\"if (document.layout.element2.checked) {document.layout.element1.checked = true};recompute()\" $params{create}> "Create New Conversation" button<BR>\n";
  621.     print "<INPUT TYPE=CHECKBOX NAME=element3 onClick=\"recompute()\" $params{about}> About message<BR>\n";
  622.     print "<INPUT TYPE=CHECKBOX NAME=element4 onClick=\"recompute()\" $params{messages}> Messages<BR>\n";
  623.     print "<INPUT TYPE=CHECKBOX NAME=element5 onClick=\"if (document.layout.element5.checked) {document.layout.element4.checked = true};recompute()\" $params{add}> "Add a Message" form<BR>\n";
  624.     print "</TD></TR></TABLE><P>\n";
  625.     print "<INPUT TYPE=SUBMIT VALUE=\"Save Page Layout\"></TD></TR></TABLE>\n";
  626.     print "</FORM>\n";
  627.     print "</BODY></HTML>\n";
  628.     exit(0);
  629. }
  630.