1package CGI::Kwiki::CGI; 2$VERSION = '0.16'; 3use strict; 4use base 'CGI::Kwiki'; 5use CGI::Kwiki ':char_classes'; 6 7sub all { 8 my ($self) = @_; 9 return ( 10 CGI::Vars(), 11 page_id => $self->page_id, 12 map { ($_, $self->{$_}) } 13 grep { not /^(cgi|config|driver)$/ } keys %$self 14 ); 15} 16 17sub wiki_text { 18 my ($self) = shift; 19 if (not defined $self->{wiki_text}) { 20 $self->{wiki_text} = CGI::param('wiki_text'); 21 $self->{wiki_text} =~ s/\015\012/\n/g; 22 $self->{wiki_text} =~ s/\015/\n/g; 23 $self->{wiki_text} =~ s/\n*\z/\n/; 24 $self->{wiki_text} = '' if $self->{wiki_text} eq "\n"; 25 $self->decode($self->{wiki_text}); 26 } 27 return $self->{wiki_text} 28} 29 30sub action { 31 my ($self) = shift; 32 if (@_) { 33 $self->{action} = shift; 34 return $self; 35 } 36 my $action = CGI::param('action') || ''; 37 $action = '' if $action =~ /[^$WORD]/; 38 return $action || 'display'; 39} 40 41sub page_id { 42 my ($self) = shift; 43 if (@_) { 44 $self->{page_id} = shift; 45 return $self; 46 } 47 return $self->{page_id} 48 if defined $self->{page_id}; 49 my $page_id = ''; 50 my $query_string = CGI::query_string(); 51 $query_string =~ s/%([0-9a-fA-F]{2})/pack("H*", $1)/ge; 52 $self->decode($query_string); 53 if ($query_string =~ /^keywords=([$ALPHANUM\-:]+)$/) { 54 $page_id = $1; 55 } 56 elsif ($self->action eq 'search') { 57 $page_id = $self->search eq '' ? $self->loc('SiteMap') : $self->loc('SearchResults'); 58 } 59 else { 60 $page_id = CGI::param('page_id') || 61 $self->config->top_page || 62 ''; 63 $self->decode($page_id); 64 } 65 $page_id = '' if $page_id =~ /[^$ALPHANUM\-\:]/; 66 return $page_id || $self->config->top_page || ''; 67} 68 69sub blog_id { 70 my ($self) = shift; 71 my $query_string = CGI::query_string(); 72 my $blog_id = ($query_string =~ /^keywords=(\d{14})$/) ? $1 : ''; 73 return $blog_id; 74} 75 76sub button { 77 my ($self) = shift; 78 my %params = $self->all; 79 while (my ($k, $v) = each %params) { 80 return uc($1) if $k =~ /^button-(\w+)$/; 81 } 82} 83 84use vars qw($AUTOLOAD); 85sub AUTOLOAD { 86 my $param = $AUTOLOAD; 87 $param =~ s/.*://; 88 my ($self) = shift; 89 if (@_) { 90 $self->{$param} = shift; 91 return $self; 92 } 93 my $value = $self->get_raw($param); 94 $value =~ s/[^$WORD\-\:\.\,\|\ ]//g; 95 return $value; 96} 97 98sub get_raw { 99 my ($self, $param) = @_; 100 my $value = defined $self->{$param} 101 ? $self->{$param} 102 : CGI::param($param); 103 $value = '' unless defined $value; 104 $self->decode($value); 105 return $value; 106} 107 1081; 109 110__END__ 111 112=head1 NAME 113 114CGI::Kwiki::CGI - CGI Base Class for CGI::Kwiki 115 116=head1 DESCRIPTION 117 118See installed kwiki pages for more information. 119 120=head1 AUTHOR 121 122Brian Ingerson <INGY@cpan.org> 123 124=head1 COPYRIGHT 125 126Copyright (c) 2003. Brian Ingerson. All rights reserved. 127 128This program is free software; you can redistribute it and/or modify it 129under the same terms as Perl itself. 130 131See http://www.perl.com/perl/misc/Artistic.html 132 133=cut 134