Handle Post



Requests like edit and links answer forms which allow some fields of the db record to be updated. Here we handle a post by merging whatever fields were present on the form with those in the db.

  sub HandlePost {
    $title = $CookedInput{post};
    &CookSpaces;
    &RequestLock;
    dbmopen(%db, $DataBase , 0666) || &AbortScript("can't open $DataBase for update\n");
    %old = &RetrievePage($title);
    &BackupCopy;
    for (keys(%CookedInput)) {
        next if /post/ || /form/ || /title/;
        $old{$_} = $CookedInput{$_} if $CookedInput{$_};
    }
    &ReplacePage($title, *old);

Update recent changes. Remove the title if it appears; add today's date unless it appears; then add the title and host that posted it.

A blank after $title in the search avoids matching pages that only began with $title. -- DaveSmith August 23, 1997

Removed one of the \n's after $DateToday to save some vertical space. The leading \n ensures that there's a blank line between dates if $title gets moved. --DaveSmith 12/29/97

    %rc = &RetrievePage(RecentChanges);
    $rc{text} =~ s/\t\* $title .*\n//;
    $rc{text} .= "\n$DateToday\n" unless $rc{text} =~ /$DateToday/;
    $rc{text} .= "\t* $title . . . . . . $ENV{REMOTE_HOST}\n";
    &ReplacePage(RecentChanges, *rc);
I think this assignment should go here instead...--TomStambaugh
    $anchor = &AsAnchor($title);
    dbmclose(%db);
    &ReleaseLock;

Report success with a short thank you and a reference to the new page.

    print <<EOF ;
      <head><title>Thanks for $title Edits</title></head>
      <body>
        Thank you for editing $anchor.<br>
        Your careful attention to detail is much appreciated.<br>
        <img src="$SignatureUrl"><br>
        p.s. Be sure to <em>Reload</em> your old pages.<br>
      </body>
    EOF
  }

 

Last edited November 21, 2001
Return to WelcomeVisitors