BEGIN { use CGI ':all'; use XML::Simple; use XML::LibXML; use Data::Dumper; use File::Copy; use Tie::IxHash; my $htmlfile = "whiteboard.html"; my $xmlfile = "whiteboard.xml"; tie %$xml, "Tie::IxHash", %{XMLin($xmlfile, SuppressEmpty => undef, )}; #no forcearray needed here because we know the elements don't double. if ( (!(param("Apply Edit"))) && (!(param("Cancel"))) ) #so if the page is a first load, or a change in selection, or the "Clear" button was pressed { print header(); print start_html( -title => "Edit Whiteboard", -bgcolor => 'purple' ) ; print font( { -color => 'yellow' } ), h1("Whiteboard Editor"); print h5("Type <br> to create a new line in the webpage display."); print start_form(); @keys = keys( %{ $xml->{name} } ); print popup_menu( -name => 'selname', -values => \@keys, -align => 'top', -onChange => "submit();" ); if ( param('selname') ) { if ( param("Clear") ) { param( 'thenote', "" ); } else { param( 'thenote', "" ); #we need this to clear the note if it's already blank, otherwise the #text from the defined note will persist param( 'thenote', $xml->{name}->{ param('selname') }->{note} ); } print textarea( -name => 'thenote', -rows => 10, -columns => 55 ); } else { param( 'thenote', $xml->{name}->{ $keys[0] }->{note} ); print textarea( -name => 'thenote', -rows => 10, -columns => 55 ); } print br(), br(), submit("Apply Edit"), "\t ", submit("Cancel"), "\t ", submit("Clear"); print end_form(); my $mtime = localtime( ( stat "edit.pl" )[9] ); print hr(), font( { -size => '-1' }, "Modified $mtime", br(), "Created and maintained by Terry Tate, Office Linebacker" ); print end_html(); } #end if !param else { #this is a repost #### if ( param("Apply Edit") ) { #print header(); #if the "Apply Edit" button was pushed my $note; if (!(param("thenote"))) {$note=" ";} else{ $note = param("thenote"); } $xml->{name}->{ param('selname') }->{note} = $note || die "assignment operator failed."; print XMLout( $xml, OutputFile => $xmlfile, NoAttr => 1, SuppressEmpty => undef ) || die "XMLout busted: $! ."; my $title = "Whiteboard" || die "Can't assign title"; open( OUTFILE, ">", $htmlfile ) || die "Can't open $htmlfile for writing."; select(OUTFILE) || die "can't select OUTFILE"; print start_html( -title => $title, -style => { 'src' => 'basic.css' } )|| die "Can't print start_html"; print "
"; print h3( a( { href => "../" }, "MFST" ) ); print h1( "Whiteboard", span($title) ); print "
"; print "
"; print ""; print ""; my $counter = 0; foreach $i (keys( %{ $xml->{name} } )) { if (!($xml->{name}->{$i}->{note})){ $xml->{name}->{$i}->{note}=" "; } if ( $counter == 0 ) { print "\n\n\n"; } else { print "\n\n\n"; } ++$counter; } print "

Name

Location/Notes

$i

$xml->{name}->{$i}->{note}

$i

$xml->{name}->{$i}->{note}

"; print "

Edit Whiteboard

"; print end_html(); close(OUTFILE); select STDOUT; #rename( $htmlfile2, $htmlfile ) || die "Can't rename HTML file"; print redirect( 'whiteboard.html'); } #end else elsif (param("Cancel")) { print redirect( 'whiteboard.html'); } else { #should be nothing else it could be, but just in case print header(), start_html(), "YOU HAVE REACHED THIS PAGE IN ERROR",end_html(); } } #end else } #end begin