source: trunk/newpage.cgi @ 336

Last change on this file since 336 was 336, checked in by Earle Martin, 18 years ago

Added language code to questions in Build.PL and TT vars in scripts.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1#!/usr/local/bin/perl
2
3use warnings;
4use strict;
5
6use CGI;
7use Config::Tiny;
8use OpenGuides::Template;
9use OpenGuides::Utils;
10use URI::Escape;
11
12my @badchars = qw( & ? );
13push @badchars, '#'; # Avoid warning about possible comments in qw()
14
15my $q = CGI->new;
16my $config = Config::Tiny->read('wiki.conf');
17my $wiki = OpenGuides::Utils->make_wiki_object( config => $config );
18
19my $pagename = $q->param("pagename") || "";
20$pagename =~ s/^\s*//;
21$pagename =~ s/\s*$//;
22
23my $action = $q->param("action") || "";
24
25if ( $action eq "makepage" ) {
26    make_page();
27} else {
28    show_form();
29}
30
31exit 0;
32
33sub show_form {
34    print OpenGuides::Template->output( wiki     => $wiki,
35                                        config   => $config,
36                                        template => "newpage.tt",
37                                        vars     => {
38                                            not_editable     => 1,
39                                            disallowed_chars => \@badchars,
40                                            pagename         => $pagename }
41    );
42}
43
44sub make_page {
45    # Ensure pagename not blank.
46    unless ( $pagename ) {
47        print OpenGuides::Template->output(
48            wiki     => $wiki,
49            config   => $config,
50            template => "error.tt",
51            vars     => { not_editable => 1,
52                          message      => "Please enter a page name!",
53                          return_url   => "newpage.cgi" } );
54        exit 0;
55    }
56
57    # Ensure pagename valid.
58    my %badhash = map { $_ => 1 } @badchars;
59    my @naughty;
60    foreach my $i ( 0 .. (length $pagename) - 1 ) {
61        my $char = substr( $pagename, $i, 1 );
62        push @naughty, $char if $badhash{$char};
63    }
64    if ( scalar @naughty ) {
65        my $message = "Page name $pagename contains disallowed characters";
66        print OpenGuides::Template->output(
67            wiki     => $wiki,
68            config   => $config,
69            template => "error.tt",
70            vars     => {
71                pagename     => $pagename,
72                not_editable => 1,
73                message      => $message,
74                return_url   => "newpage.cgi?pagename=" . uri_escape($pagename)
75            }
76        );
77        exit 0;
78    }
79
80    # Hurrah, we're OK.
81    my $node_param = $wiki->formatter->node_name_to_node_param($pagename);
82    print "Location: ".$config->{_}->{script_url}.$config->{_}->{script_name}."?action=edit;id=$node_param\n\n";
83    exit 0;
84}
85
86
Note: See TracBrowser for help on using the repository browser.