#! /usr/bin/perl -w # Emily Wu's Website # rebuild.cgi: The web page rebuilder. # Copyright (c) 2006-2021 imacat. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Author: imacat # First written: 2006-04-04 use 5.008; use strict; use warnings; use lib $ENV{"DOCUMENT_ROOT"} . qw(/magicat/lib/perl5); use Selima::emily; local $SIG{"__DIE__"} = \&http_500; my $d = new Selima::Destroy; # Prototype declaration sub main(); sub check_get(); sub check_post(); sub html_page($); initenv(-restricted => 1, -lastmod => 1, -page_param => {"keywords" => N_("rebuild pages")}); main; exit 0; sub main() { local ($_, %_); my ($error, $success, $processor); # If the request is a GET query if ($ENV{"REQUEST_METHOD"} ne "POST") { $error = check_get; # If an error occurs if (defined $error) { html_page $error; # Display the page } else { html_page retrieve_status; } # If a form was POSTed from the client } else { $error = check_post; # If an error occurs if (defined $error) { error_redirect $error; # Else, save the data } else { $processor = new Selima::Processor::Rebuild($POST); $success = $processor->process; success_redirect $success; } } return; } # check_get: Check the GET arguments sub check_get() { # Nothing to check here # OK return; } # check_post: Check the POSTed form sub check_post() { local ($_, %_); my ($checker, $error); # Run the checker $checker = new Selima::Checker::Rebuild(curform); $error = $checker->check(qw(type)); return $error if defined $error; # OK return; } # html_page: Display the page sub html_page($) { local ($_, %_); my ($status, $FORM); $status = $_[0]; $FORM = new Selima::Form::Rebuild($status); html_header $FORM->{"title"}; html_errmsg $status; $FORM->html; html_footer; return; }