diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-03-08 14:30:15 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-03-08 14:30:15 +0000 |
| commit | a420ba2fd04bb2adce1c693fc8d296f332bdd95c (patch) | |
| tree | 625f296d92a0f370b6fe16e8fd3d15aa4c4ba4d7 /lib | |
| parent | 3d506c66cc8ec133730edddeaff4bd2ffd8a129b (diff) | |
| download | xxv-a420ba2fd04bb2adce1c693fc8d296f332bdd95c.tar.gz xxv-a420ba2fd04bb2adce1c693fc8d296f332bdd95c.tar.bz2 | |
Charset UTF8 Support. Run 'xxvd --utf8' to use encoding utf8 as data charset.
Diffstat (limited to 'lib')
37 files changed, 240 insertions, 207 deletions
diff --git a/lib/Bundle/Xxv.pm b/lib/Bundle/Xxv.pm index 59fb94b..aa1be5c 100644 --- a/lib/Bundle/Xxv.pm +++ b/lib/Bundle/Xxv.pm @@ -29,6 +29,7 @@ DBD::mysql DBI Digest::MD5 Digest::HMAC_MD5 +Encode Event GD Getopt::Long diff --git a/lib/Tools.pm b/lib/Tools.pm index a6e9e8c..44823cc 100644 --- a/lib/Tools.pm +++ b/lib/Tools.pm @@ -5,6 +5,10 @@ package Tools; use FindBin qw($RealBin); use lib sprintf("%s", $RealBin); use lib sprintf("%s/../lib", $RealBin); +use Locale::gettext qw/!gettext/; +use utf8; +#use encoding 'utf8'; +use Encode; use Data::Dumper; $Data::Dumper::Indent = 1; @@ -21,6 +25,8 @@ our $LOG = sub{ warn @_ }; our $BENCH = {}; our $LOGCALLB = sub{ }; our $DBH = {}; +our $LOCALE; +our $CHARSET; # PAL use 25, NTFS use 30 frames per seconds use constant FRAMESPERSECOND => 25; @@ -29,7 +35,7 @@ use constant FRAMESPERSECOND => 25; &getFromSocket &fields &load_file &save_file &tableUpdated &buildsearch &deleteDir &getip &convert &int &entities &reentities &bench &fmttime &getDataByTable &getDataById &getDataBySearch &getDataByFields &touch &url - &con_err &con_msg &text2frame &frame2hms); + &con_err &con_msg &text2frame &frame2hms &gettext &setcharset); # ------------------ @@ -624,7 +630,9 @@ sub entities { $s =~ s/>/>/g; $s =~ s/</</g; $s =~ s/\"/"/g; - $s =~ s/([^a-zA-Z0-9&%;:,\.\!\?\(\)\_\|\'\r\n ])/sprintf("&#x%02x;",ord($1))/eg; + if($CHARSET ne 'UTF-8') { + $s =~ s/([^a-zA-Z0-9&%;:,\.\!\?\(\)\_\|\'\r\n ])/sprintf("&#x%02x;",ord($1))/eg; + } $s =~ s/\r\n/<br \/>/g; return $s; @@ -635,7 +643,9 @@ sub reentities { # ------------------ my $s = shift || return ''; - $s =~ s/\&\#x([a-fA-F0-9][a-fA-F0-9])\;/pack("C", hex($1))/eg; + if($CHARSET ne 'UTF-8') { + $s =~ s/\&\#x([a-fA-F0-9][a-fA-F0-9])\;/pack("C", hex($1))/eg; + } $s =~ s/&/&/g; $s =~ s/>/>/g; $s =~ s/</</g; @@ -730,4 +740,30 @@ sub frame2hms() { return sprintf('%d:%02d:%02d.%02d', $hour, $min, $sec, $frame); } +sub setcharset($) { + $CHARSET = shift; +} + +################################################################################ +# Translate text +sub gettext($) { + my $text = shift; + + unless($CHARSET) { + my ($stack, $evalon) = &stackTrace; + print $stack if($evalon != 1); + } + + unless($LOCALE) { + $LOCALE = Locale::gettext->domain_raw("xxv"); + $LOCALE->codeset($CHARSET); + } + if($CHARSET eq 'UTF-8') { + return $LOCALE->get($text); + } else { + $text = $LOCALE->get($text); + return encode($CHARSET,$text); + } +} + 1; diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm index ec20e90..e734529 100644 --- a/lib/XXV/MODULES/AUTOTIMER.pm +++ b/lib/XXV/MODULES/AUTOTIMER.pm @@ -3,7 +3,6 @@ package XXV::MODULES::AUTOTIMER; use strict; use Tools; -use Locale::gettext; # ------------------ # Name: module diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm index f100f47..28718fb 100644 --- a/lib/XXV/MODULES/CHANNELS.pm +++ b/lib/XXV/MODULES/CHANNELS.pm @@ -3,7 +3,6 @@ package XXV::MODULES::CHANNELS; use strict; use Tools; -use Locale::gettext; use File::stat; # This module method must exist for XXV @@ -149,6 +148,8 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; + $self->{charset} = delete $attr{'-charset'}; + # who am I $self->{MOD} = $self->module; diff --git a/lib/XXV/MODULES/CHRONICLE.pm b/lib/XXV/MODULES/CHRONICLE.pm index 0d61c2e..dca1a46 100644 --- a/lib/XXV/MODULES/CHRONICLE.pm +++ b/lib/XXV/MODULES/CHRONICLE.pm @@ -2,7 +2,6 @@ package XXV::MODULES::CHRONICLE; use strict; use Tools; -use Locale::gettext; # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/CONFIG.pm b/lib/XXV/MODULES/CONFIG.pm index 33d687e..99e9c66 100644 --- a/lib/XXV/MODULES/CONFIG.pm +++ b/lib/XXV/MODULES/CONFIG.pm @@ -3,7 +3,6 @@ package XXV::MODULES::CONFIG; use strict; use Tools; -use Locale::gettext; # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm index ca45064..56c81d8 100644 --- a/lib/XXV/MODULES/EPG.pm +++ b/lib/XXV/MODULES/EPG.pm @@ -2,8 +2,6 @@ package XXV::MODULES::EPG; use strict; use Tools; -use File::Basename; -use Locale::gettext; # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/EVENTS.pm b/lib/XXV/MODULES/EVENTS.pm index 7172e7e..b45b1e0 100644 --- a/lib/XXV/MODULES/EVENTS.pm +++ b/lib/XXV/MODULES/EVENTS.pm @@ -2,7 +2,6 @@ package XXV::MODULES::EVENTS; use strict; use Tools; -use Locale::gettext; # This module method must exist for XXV diff --git a/lib/XXV/MODULES/GRAB.pm b/lib/XXV/MODULES/GRAB.pm index c1582a4..2c38389 100644 --- a/lib/XXV/MODULES/GRAB.pm +++ b/lib/XXV/MODULES/GRAB.pm @@ -2,7 +2,6 @@ package XXV::MODULES::GRAB; use strict; use Tools; -use Locale::gettext; use File::Basename; use File::Find; diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm index 971d35a..e6af6e1 100644 --- a/lib/XXV/MODULES/HTTPD.pm +++ b/lib/XXV/MODULES/HTTPD.pm @@ -1,6 +1,5 @@ package XXV::MODULES::HTTPD; -use Locale::gettext; use XXV::OUTPUT::Html; use XXV::OUTPUT::Ajax; use File::Basename; @@ -39,7 +38,7 @@ my $mime = { # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'HTTPD', Prereq => { @@ -54,7 +53,7 @@ sub module { Date => (split(/ /, '$Date$'))[1], Author => 'xpix', LastAuthor => (split(/ /, '$Author$'))[1], - Status => sub{ $obj->status(@_) }, + Status => sub{ $self->status(@_) }, Preferences => { active => { description => gettext('Activate this service'), @@ -85,7 +84,7 @@ sub module { default => 'default', type => 'list', required => gettext('This is required!'), - choices => sub{ return $obj->findskins }, + choices => sub{ return $self->findskins }, }, StartPage => { description => gettext('Startup screen'), @@ -114,7 +113,7 @@ sub module { Commands => { checkvalue => { hidden => 'yes', - callback => sub{ $obj->checkvalue(@_) }, + callback => sub{ $self->checkvalue(@_) }, }, }, }; @@ -131,6 +130,8 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; + $self->{charset} = delete $attr{'-charset'}; + # who am I $self->{MOD} = $self->module; @@ -158,18 +159,18 @@ sub new { # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); # globals my $channels; - $obj->{STATUS}->{'starttime'} = time; + $self->{STATUS}->{'starttime'} = time; # make socket my $socket = IO::Socket::INET->new( - Listen => $obj->{Clients}, - LocalPort => $obj->{Port}, - LocalAddr => $obj->{Interface}, + Listen => $self->{Clients}, + LocalPort => $self->{Port}, + LocalAddr => $self->{Interface}, Reuse => 1 ) or return error("Couldn't create socket: $!"); @@ -186,7 +187,7 @@ sub init { # make "channel" number my $channel=++$channels; - $obj->{STATUS}->{'connects'}++; + $self->{STATUS}->{'connects'}++; # install a communicator Event->io( @@ -195,37 +196,36 @@ sub init { poll => 'r', cb => sub { my $watcher = shift; - $obj->communicator($watcher); + $self->communicator($watcher); } ); }, - ) if($obj->{active} eq 'y'); + ) if($self->{active} eq 'y'); return 1; } -sub communicator -{ - my $obj = shift || return error('No object defined!'); +sub communicator { + my $self = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); # read new line and report it my $handle=$watcher->w->fd; - my $data = $obj->parseRequest($handle,(defined $obj->{LOGOUT} && $obj->{LOGOUT} == 1 )); + my $data = $self->parseRequest($handle,(defined $self->{LOGOUT} && $self->{LOGOUT} == 1 )); unless($data) { - undef $obj->{LOGOUT}; + undef $self->{LOGOUT}; $watcher->w->cancel; $handle->close(); undef $watcher; return 1; } - undef $obj->{LOGOUT} - if(exists $obj->{LOGOUT}); + undef $self->{LOGOUT} + if(exists $self->{LOGOUT}); my $ip = getip($handle); - my $htmlRootDir = sprintf('%s/%s', $obj->{paths}->{HTMLDIR}, $obj->{HtmlRoot}); - my $htmlDefDir = sprintf('%s/%s', $obj->{paths}->{HTMLDIR}, 'default'); + my $htmlRootDir = sprintf('%s/%s', $self->{paths}->{HTMLDIR}, $self->{HtmlRoot}); + my $htmlDefDir = sprintf('%s/%s', $self->{paths}->{HTMLDIR}, 'default'); my $query = $data->{Query}; if($data->{Method} eq 'POST' && $data->{Post}) { @@ -242,22 +242,23 @@ sub communicator -cgi => $cgi, -browser=> $data, -output => $outputtype, - -debug => ($obj->{Debug} eq 'y' ? 1 : 0), - + -debug => ($self->{Debug} eq 'y' ? 1 : 0), + -charset=> $self->{charset}, ); } else { # Is a Html Request $console = XXV::OUTPUT::Html->new( -handle => $handle, - -dbh => $obj->{dbh}, + -dbh => $self->{dbh}, -htmdir => $htmlRootDir, -htmdef => $htmlDefDir, -cgi => $cgi, -mime => $mime, -browser=> $data, - -paths => $obj->{paths}, - -start => $obj->{StartPage}, - -debug => ($obj->{Debug} eq 'y' ? 1 : 0), + -paths => $self->{paths}, + -start => $self->{StartPage}, + -debug => ($self->{Debug} eq 'y' ? 1 : 0), + -charset=> $self->{charset}, ); } @@ -300,7 +301,7 @@ sub communicator $request =~ s/.*epgimages\//$epgMod->{epgimages}\//; $console->datei($request, $typ); } else { - $obj->ModulNotLoaded($console,'EPG'); + $self->ModulNotLoaded($console,'EPG'); } } elsif($request =~ /tempimages\//) { my $tmp = $userMod->userTmp; @@ -310,11 +311,11 @@ sub communicator $console->datei($htmlRootDir . $request, $typ); } } else { - $obj->handleInput($watcher, $console, $cgi); + $self->handleInput($watcher, $console, $cgi); } } else { - $obj->ModulNotLoaded($console,'USER'); + $self->ModulNotLoaded($console,'USER'); } $console->footer() if($console->{inclFooter}); $console->printout(); @@ -337,7 +338,7 @@ sub communicator "-" #$data->{http_useragent} ? $data->{http_useragent} : "" ); - $obj->{STATUS}->{'sendbytes'} += $console->{'sendbytes'}; + $self->{STATUS}->{'sendbytes'} += $console->{'sendbytes'}; $watcher->w->cancel; undef $watcher; @@ -363,7 +364,7 @@ sub _readline { # ------------------ sub parseRequest { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $socket = shift || return error('No handle defined!'); my $logout = shift || 0; @@ -399,7 +400,7 @@ sub parseRequest { } else { #dumper($line); } - $obj->{STATUS}->{'readbytes'} += length($line); + $self->{STATUS}->{'readbytes'} += length($line); } $data->{Request} =~ s/%([a-f0-9][a-f0-9])/pack("C", hex($1))/ieg @@ -415,7 +416,7 @@ sub parseRequest { my $bytes = sysread($socket,$post,$data->{ContentLength}); $data->{Post} = $post if($bytes && $data->{ContentLength} == $bytes); - $obj->{STATUS}->{'readbytes'} += $bytes; + $self->{STATUS}->{'readbytes'} += $bytes; } #dumper($data); return $data; @@ -428,7 +429,7 @@ sub parseRequest { # ------------------ sub ModulNotLoaded { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $module = shift || return error('No module defined!'); @@ -440,7 +441,7 @@ sub ModulNotLoaded { # ------------------ sub handleInput { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); my $console = shift || return error('No console defined!'); my $cgi = shift || return error('No CGI object defined!'); @@ -482,17 +483,17 @@ sub handleInput { } elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') { $console->status403($err); } else { - $obj->usage($watcher, $console, undef, $err); + $self->usage($watcher, $console, undef, $err); } } else { - $obj->ModulNotLoaded($console,'USER'); + $self->ModulNotLoaded($console,'USER'); } } # ------------------ sub usage { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); my $console = shift || return error('No console defined!'); my $modulename = shift; @@ -502,7 +503,7 @@ sub usage { if ($m){ return $m->usage($watcher,$console,$modulename,$hint); } else { - $obj->ModulNotLoaded($console,'CONFIG'); + $self->ModulNotLoaded($console,'CONFIG'); } } @@ -510,17 +511,17 @@ sub usage { # ------------------ sub status { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift; my $console = shift || return; my $lastReportTime = shift || 0; return { message => sprintf(gettext('Traffic on HTTPD socket since %s: transmitted: %s - received: %s - connections: %d.'), - datum($obj->{STATUS}->{'starttime'}), - convert($obj->{STATUS}->{'sendbytes'}), - convert($obj->{STATUS}->{'readbytes'}), - $obj->{STATUS}->{'connects'} ), + datum($self->{STATUS}->{'starttime'}), + convert($self->{STATUS}->{'sendbytes'}), + convert($self->{STATUS}->{'readbytes'}), + $self->{STATUS}->{'connects'} ), }; } @@ -529,7 +530,7 @@ sub status { sub findskins # ------------------ { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $found; find({ wanted => sub{ if(-d $File::Find::name @@ -543,9 +544,9 @@ sub findskins follow => 1, follow_skip => 2, }, - $obj->{paths}->{HTMLDIR} + $self->{paths}->{HTMLDIR} ); - error "Couldn't find useful HTML Skin at : $obj->{paths}->{HTMLDIR}" + error "Couldn't find useful HTML Skin at : $self->{paths}->{HTMLDIR}" if(scalar $found == 0); return sort { lc($a->[0]) cmp lc($b->[0]) } @{$found}; } @@ -553,16 +554,16 @@ sub findskins # ------ unzip ------------ # Name: unzip # Desc: Uncompress Files in gz format -# Usag: my $res = $obj->unzip(file.gz); -# Test: my $res = $obj->unzip('t/abc.gz'); +# Usag: my $res = $self->unzip(file.gz); +# Test: my $res = $self->unzip('t/abc.gz'); # return 1 if(load_file($res) eq 'abc'); # ------ unzip ------------ sub unzip { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $file = shift || return error('No file defined!'); my $gz = gzopen($file, "rb") - or return $obj->msg(undef, sprintf(gettext("Could not open file '%s'! : %s"), $file, &gzerror )); + or return $self->msg(undef, sprintf(gettext("Could not open file '%s'! : %s"), $file, &gzerror )); my $text; while($gz->gzread(my $buffer) > 0) { @@ -586,7 +587,7 @@ sub unzip { # getip:localhost sub checkvalue { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); my $console = shift || return error('No console defined!'); my $data = shift || return error('No data defined!'); diff --git a/lib/XXV/MODULES/INTERFACE.pm b/lib/XXV/MODULES/INTERFACE.pm index 60fc584..9fe6bae 100644 --- a/lib/XXV/MODULES/INTERFACE.pm +++ b/lib/XXV/MODULES/INTERFACE.pm @@ -1,6 +1,5 @@ package XXV::MODULES::INTERFACE; -use Locale::gettext; use XXV::OUTPUT::Dump; use Tools; diff --git a/lib/XXV/MODULES/LOGREAD.pm b/lib/XXV/MODULES/LOGREAD.pm index f2d9157..5f375cd 100644 --- a/lib/XXV/MODULES/LOGREAD.pm +++ b/lib/XXV/MODULES/LOGREAD.pm @@ -3,7 +3,6 @@ package XXV::MODULES::LOGREAD; use strict; use Tools; -use Locale::gettext; use XXV::OUTPUT::HTML::PUSH; $|++; diff --git a/lib/XXV/MODULES/MEDIALIB.pm b/lib/XXV/MODULES/MEDIALIB.pm index 9a9e379..c2893f9 100644 --- a/lib/XXV/MODULES/MEDIALIB.pm +++ b/lib/XXV/MODULES/MEDIALIB.pm @@ -3,7 +3,6 @@ package XXV::MODULES::MEDIALIB; use strict; use Tools; -use Locale::gettext; use Data::Dumper; use File::Path; diff --git a/lib/XXV/MODULES/MOVETIMER.pm b/lib/XXV/MODULES/MOVETIMER.pm index 55df7c4..dee519e 100644 --- a/lib/XXV/MODULES/MOVETIMER.pm +++ b/lib/XXV/MODULES/MOVETIMER.pm @@ -2,7 +2,6 @@ package XXV::MODULES::MOVETIMER; use strict; use Tools; -use Locale::gettext; # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm index 4163c3d..7c879a0 100644 --- a/lib/XXV/MODULES/MUSIC.pm +++ b/lib/XXV/MODULES/MUSIC.pm @@ -2,7 +2,6 @@ package XXV::MODULES::MUSIC; use strict; use Tools; -use Locale::gettext; use File::Basename; use File::Path; use File::Find; diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index d5f37ac..569bedf 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -8,7 +8,6 @@ use File::Copy; use File::Path; use File::Basename; use File::stat; -use Locale::gettext; use Linux::Inotify2; $SIG{CHLD} = 'IGNORE'; diff --git a/lib/XXV/MODULES/REMOTE.pm b/lib/XXV/MODULES/REMOTE.pm index 0f535ba..6268670 100644 --- a/lib/XXV/MODULES/REMOTE.pm +++ b/lib/XXV/MODULES/REMOTE.pm @@ -3,7 +3,7 @@ package XXV::MODULES::REMOTE; use strict; use Tools; -use Locale::gettext; + # This module method must exist for XXV # ------------------ sub module { diff --git a/lib/XXV/MODULES/REPORT.pm b/lib/XXV/MODULES/REPORT.pm index bba0b06..ca83f14 100644 --- a/lib/XXV/MODULES/REPORT.pm +++ b/lib/XXV/MODULES/REPORT.pm @@ -3,7 +3,6 @@ package XXV::MODULES::REPORT; use strict; use Tools; -use Locale::gettext; # This module method must exist for XXV diff --git a/lib/XXV/MODULES/ROBOT.pm b/lib/XXV/MODULES/ROBOT.pm index 3a1f54f..6c5c041 100644 --- a/lib/XXV/MODULES/ROBOT.pm +++ b/lib/XXV/MODULES/ROBOT.pm @@ -2,7 +2,6 @@ package XXV::MODULES::ROBOT; use strict; use Tools; -use Locale::gettext; $SIG{CHLD} = 'IGNORE'; diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm index 22118b4..3557cdf 100644 --- a/lib/XXV/MODULES/SHARE.pm +++ b/lib/XXV/MODULES/SHARE.pm @@ -2,7 +2,6 @@ package XXV::MODULES::SHARE; use strict; use Tools; -use Locale::gettext; use vars qw($AUTOLOAD); diff --git a/lib/XXV/MODULES/STATUS.pm b/lib/XXV/MODULES/STATUS.pm index 8ad4abc..432cf2e 100644 --- a/lib/XXV/MODULES/STATUS.pm +++ b/lib/XXV/MODULES/STATUS.pm @@ -4,7 +4,6 @@ use strict; use Tools; use Socket; use Sys::Hostname; -use Locale::gettext; use File::Basename; use File::Find; diff --git a/lib/XXV/MODULES/STREAM.pm b/lib/XXV/MODULES/STREAM.pm index 7928dfd..3ef9c87 100644 --- a/lib/XXV/MODULES/STREAM.pm +++ b/lib/XXV/MODULES/STREAM.pm @@ -2,7 +2,6 @@ package XXV::MODULES::STREAM; use strict; use Tools; -use Locale::gettext; use File::Basename; use File::Find; use File::Path; diff --git a/lib/XXV/MODULES/SVDRP.pm b/lib/XXV/MODULES/SVDRP.pm index a29601a..cbcc167 100644 --- a/lib/XXV/MODULES/SVDRP.pm +++ b/lib/XXV/MODULES/SVDRP.pm @@ -1,7 +1,6 @@ package XXV::MODULES::SVDRP; use Tools; -use Locale::gettext; use strict; diff --git a/lib/XXV/MODULES/TELNET.pm b/lib/XXV/MODULES/TELNET.pm index 7e8572c..3eeeb7f 100644 --- a/lib/XXV/MODULES/TELNET.pm +++ b/lib/XXV/MODULES/TELNET.pm @@ -4,7 +4,7 @@ use strict; use XXV::OUTPUT::Console; use Tools; -use Locale::gettext; + # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm index 58b4560..a39c597 100644 --- a/lib/XXV/MODULES/TIMERS.pm +++ b/lib/XXV/MODULES/TIMERS.pm @@ -3,7 +3,6 @@ package XXV::MODULES::TIMERS; use strict; use Tools; use POSIX ":sys_wait_h", qw(strftime mktime); -use Locale::gettext; # This module method must exist for XXV # ------------------ diff --git a/lib/XXV/MODULES/USER.pm b/lib/XXV/MODULES/USER.pm index 73b4eea..89b46a8 100644 --- a/lib/XXV/MODULES/USER.pm +++ b/lib/XXV/MODULES/USER.pm @@ -3,7 +3,6 @@ package XXV::MODULES::USER; use strict; use Tools; -use Locale::gettext; use File::Path; diff --git a/lib/XXV/MODULES/VTX.pm b/lib/XXV/MODULES/VTX.pm index 490ad49..e3f2e3c 100644 --- a/lib/XXV/MODULES/VTX.pm +++ b/lib/XXV/MODULES/VTX.pm @@ -2,9 +2,9 @@ package XXV::MODULES::VTX; use strict; +use Tools; use File::Find; use FileHandle; -use Locale::gettext; ################################################################################ # This module method must exist for XXV diff --git a/lib/XXV/MODULES/WAPD.pm b/lib/XXV/MODULES/WAPD.pm index fc0dd8e..130f72c 100644 --- a/lib/XXV/MODULES/WAPD.pm +++ b/lib/XXV/MODULES/WAPD.pm @@ -1,6 +1,5 @@ package XXV::MODULES::WAPD; -use Locale::gettext; use XXV::OUTPUT::Wml; use File::Basename; use File::Find; @@ -21,7 +20,7 @@ my $mime = { # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'WAPD', Prereq => { @@ -65,7 +64,7 @@ sub module { default => 'wml', type => 'list', required => gettext('This is required!'), - choices => $obj->findskins, + choices => $self->findskins, }, # StartPage => { # description => gettext('Startup screen'), @@ -99,6 +98,8 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; + $self->{charset} = delete $attr{'-charset'}; + # who am I $self->{MOD} = $self->module; @@ -127,16 +128,16 @@ sub new { # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); # globals my $channels; # make socket my $socket = IO::Socket::INET->new( - Listen => $obj->{Clients}, - LocalPort => $obj->{Port}, - LocalAddr => $obj->{Interface}, + Listen => $self->{Clients}, + LocalPort => $self->{Port}, + LocalAddr => $self->{Interface}, Reuse => 1 ) or return error("Couldn't create socket: $!"); @@ -164,30 +165,31 @@ sub init { # read new line and report it my $handle=$watcher->w->fd; - my $data = $obj->parseRequest($handle,(defined $obj->{LOGOUT} && $obj->{LOGOUT} == 1 )); + my $data = $self->parseRequest($handle,(defined $self->{LOGOUT} && $self->{LOGOUT} == 1 )); unless($data) { - undef $obj->{LOGOUT}; + undef $self->{LOGOUT}; $watcher->w->cancel; $handle->close(); undef $watcher; return 1; } - undef $obj->{LOGOUT} - if(exists $obj->{LOGOUT}); + undef $self->{LOGOUT} + if(exists $self->{LOGOUT}); - my $WMLRootDir = sprintf('%s/%s', $obj->{paths}->{HTMLDIR}, $obj->{WMLRoot}); + my $WMLRootDir = sprintf('%s/%s', $self->{paths}->{HTMLDIR}, $self->{WMLRoot}); my $cgi = CGI->new( $data->{Query} ); my $console = XXV::OUTPUT::Wml->new( -handle => $handle, - -dbh => $obj->{dbh}, + -dbh => $self->{dbh}, -wmldir => $WMLRootDir, -cgi => $cgi, -mime => $mime, -browser=> $data, - -paths => $obj->{paths}, -# -start => $obj->{StartPage}, + -paths => $self->{paths}, + -charset=> $self->{charset}, +# -start => $self->{StartPage}, ); my $userMod = main::getModule('USER'); @@ -221,10 +223,10 @@ sub init { $console->image(sprintf('%s%s', $WMLRootDir, $data->{Request}), $typ); } elsif( $cgi->param('binary') ) { # Send multimedia files (if param binary) - $obj->handleInput($watcher, $console, $cgi); + $self->handleInput($watcher, $console, $cgi); } else { $console->start(); - $obj->handleInput($watcher, $console, $cgi); + $self->handleInput($watcher, $console, $cgi); $console->footer(); } } @@ -235,7 +237,7 @@ sub init { ); }, - ) if($obj->{active} eq 'y'); + ) if($self->{active} eq 'y'); return 1; @@ -244,7 +246,7 @@ sub init { # ------------------ sub parseRequest { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $hdl = shift || return error('No handle defined!'); my $logout = shift || 0; @@ -282,7 +284,7 @@ sub parseRequest { # ------------------ sub handleInput { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift || return error('No watcher defined!'); my $console = shift || return error('No console defined!'); my $cgi = shift || return error ('No CGI Object'); @@ -318,7 +320,7 @@ sub handleInput { } elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') { return $console->status403($err); } else { - return $obj->usage($watcher, $console, undef, $err); + return $self->usage($watcher, $console, undef, $err); } } @@ -326,7 +328,7 @@ sub handleInput { # ------------------ sub usage { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); return main::getModule('CONFIG')->usage(@_); } @@ -334,7 +336,7 @@ sub usage { sub findskins # ------------------ { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $found; find({ wanted => sub{ if(-d $File::Find::name and -e $File::Find::name.'/wapd.tmpl' ) { @@ -345,9 +347,9 @@ sub findskins follow => 1, follow_skip => 2, }, - $obj->{paths}->{HTMLDIR} + $self->{paths}->{HTMLDIR} ); - error "Couldn't find useful WML Skin at : $obj->{paths}->{HTMLDIR}" + error "Couldn't find useful WML Skin at : $self->{paths}->{HTMLDIR}" if(scalar $found == 0); return $found; } diff --git a/lib/XXV/OUTPUT/Ajax.pm b/lib/XXV/OUTPUT/Ajax.pm index ca7dca9..0bfff87 100644 --- a/lib/XXV/OUTPUT/Ajax.pm +++ b/lib/XXV/OUTPUT/Ajax.pm @@ -4,7 +4,6 @@ use strict; #use Template; use vars qw($AUTOLOAD); -use Locale::gettext; use Tools; $SIG{CHLD} = 'IGNORE'; @@ -73,20 +72,24 @@ sub new { $self->{outtype} = $attr{'-output'} || return error('No output type given!'); + $self->{charset} = $attr{'-charset'} + || 'ISO-8859-15'; + $self->{types} = { 'xml' => 'application/xml', # 'json' => 'application/json; charset=utf-8', # json with utf-8 # 'json' => 'application/json; charset=iso-8859-1', # json with iso-8859 - 'json' => 'text/html', +# 'json' => 'text/html', 'text' => 'text/plain', }; + $self->{types}->{'json'} = sprintf('application/json; charset=%s',$self->{charset}); # New JSON Object if required if($self->{outtype} eq 'json') { $self->{json} = JSON->new() || return error("Can't create JSON instance!"); } elsif($self->{outtype} eq 'xml') { - $self->{xml} = XML::Simple->new() + $self->{xml} = XML::Simple->new( NumericEscape => $self->{charset} eq 'UTF-8' ? 0 : 1 ) || return error("Can't create XML instance!"); } elsif($self->{outtype} eq 'text') { # ... @@ -140,8 +143,10 @@ sub printout { if($self->{browser}->{Method} ne 'HEAD') { if( $self->{outtype} eq 'json' ) { if($self->{json}->can('encode')) { # Version 2.0 see http://search.cpan.org/~makamaka/JSON-2.04/lib/JSON.pm#Transition_ways_from_1.xx_to_2.xx. + $self->{json}->utf8(1) if($self->{charset} eq 'UTF-8'); $content = $self->{json}->encode($self->{output}); } else { # Version 1.0 + $JSON::UTF8=1 if($self->{charset} eq 'UTF-8'); $content = $self->{json}->objToJson($self->{output}); } } elsif($self->{outtype} eq 'xml') { @@ -188,6 +193,7 @@ sub header { -type => $typ, -status => "200 OK", -expires => "now", + -charset => $self->{charset}, %{$arg}, ); } diff --git a/lib/XXV/OUTPUT/Console.pm b/lib/XXV/OUTPUT/Console.pm index 9b756ac..d35897b 100644 --- a/lib/XXV/OUTPUT/Console.pm +++ b/lib/XXV/OUTPUT/Console.pm @@ -6,7 +6,6 @@ BEGIN{ use strict; -use Locale::gettext; use Term::ReadLine; use Tools; use vars qw($AUTOLOAD); diff --git a/lib/XXV/OUTPUT/HTML/PUSH.pm b/lib/XXV/OUTPUT/HTML/PUSH.pm index 79b05c7..c2640d1 100644 --- a/lib/XXV/OUTPUT/HTML/PUSH.pm +++ b/lib/XXV/OUTPUT/HTML/PUSH.pm @@ -15,8 +15,8 @@ XXV::OUTPUT::HTML::PUSH - A Push for http system use XXV::OUTPUT::HTML::PUSH; my $pusher = XXV::OUTPUT::HTML::PUSH->new( - -cgi => $obj->{cgi}, # The CGI Object from Lincoln Stein - -handle => $obj->{handle}, # The handle to printout the http Stuff + -cgi => $self->{cgi}, # The CGI Object from Lincoln Stein + -handle => $self->{handle}, # The handle to printout the http Stuff ); $pusher->start(); # Start the Push Process @@ -43,52 +43,56 @@ sub new { $self->{cgi} = $attr{'-cgi'} || return error('No CGI Object defined!'); - return $self; + $self->{charset} = $attr{'-charset'} + || 'ISO-8859-1'; + + return $self; } # ------------------ sub start { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $out = shift || 0; - $obj->{handle}->print($obj->{cgi}->multipart_init(-boundary=>'----here we go!')); - $obj->print($out) if($out); + $self->{handle}->print($self->{cgi}->multipart_init(-boundary=>'----here we go!')); + $self->print($out) if($out); } # ------------------ sub print { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $msg = shift || return; my $type = shift || 'text/html'; - $obj->{handle}->print($obj->{cgi}->multipart_start(-type=>$type)); - $obj->{handle}->print($msg."\n"); - $obj->{handle}->print($obj->{cgi}->multipart_end); + $self->{handle}->print($self->{cgi}->multipart_start(-type=>$type)); + $self->{handle}->print($msg."\n"); + $self->{handle}->print($self->{cgi}->multipart_end); } # ------------------ sub follow_print { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $msg = shift || return; my $type = shift || 'text/html'; - unless($obj->{header}) { - $obj->{handle}->print($obj->{cgi}->multipart_start(-type=>$type)); - $obj->{header} = 1; + unless($self->{header}) { + $self->{handle}->print($self->{cgi}->multipart_start(-type=>$type)); + $self->{header} = 1; } - $obj->{handle}->print($msg."\n"); + $self->{handle}->print($msg."\n"); } # ------------------ sub stop { # ------------------ - my $obj = shift || return error('No object defined!'); - $obj->{handle}->print($obj->{cgi}->multipart_end); - $obj->{handle}->print($obj->{cgi}->header( + my $self = shift || return error('No object defined!'); + $self->{handle}->print($self->{cgi}->multipart_end); + $self->{handle}->print($self->{cgi}->header( -type => 'text/html', -status => "200 OK", + -charset => $self->{charset}, )); } diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm index e28b87c..953604d 100644 --- a/lib/XXV/OUTPUT/Html.pm +++ b/lib/XXV/OUTPUT/Html.pm @@ -3,7 +3,6 @@ package XXV::OUTPUT::Html; use strict; use vars qw($AUTOLOAD); -use Locale::gettext; use Tools; use XXV::OUTPUT::HTML::WAIT; use File::Path; @@ -98,6 +97,9 @@ sub new { $self->{debug} = $attr{'-debug'} || 0; + $self->{charset} = $attr{'-charset'} + || 'ISO-8859-1'; + $self->{TYP} = 'HTML'; # Forward name of Server for CGI::server_software @@ -190,6 +192,7 @@ sub parseTemplateFile { pid => $$, debug => $self->{debug}, user => $user, + charset => $self->{charset}, # query the current locale locale => main::getGeneralConfig->{Language}, allow => sub{ @@ -369,7 +372,8 @@ sub header { return $self->{cgi}->header( -type => $typ, -status => "200 OK", - -expires => ($typ =~ 'text/html' || (defined $self->{nocache} && $self->{nocache})) ? "now" : "+7d", + -expires => ($typ =~ 'text/html' || (defined $self->{nocache} && $self->{nocache})) ? "now" : "+30d", + -charset => $self->{charset}, %{$arg}, ); } @@ -567,6 +571,7 @@ sub wait { my $waiter = XXV::OUTPUT::HTML::WAIT->new( -cgi => $self->{cgi}, -handle => $self->{handle}, + -charset => $self->{charset}, -callback => sub{ my ($min, $max, $cur, $steps, $nextmessage, $eta) = @_; my $out = $self->parseTemplate( diff --git a/lib/XXV/OUTPUT/NEWS/JABBER.pm b/lib/XXV/OUTPUT/NEWS/JABBER.pm index 2090079..9d4145d 100644 --- a/lib/XXV/OUTPUT/NEWS/JABBER.pm +++ b/lib/XXV/OUTPUT/NEWS/JABBER.pm @@ -2,8 +2,6 @@ package XXV::OUTPUT::NEWS::JABBER; use strict; use Tools; -use POSIX qw(locale_h); -use Locale::gettext; # News Modules have only three methods # init - for intervall or others diff --git a/lib/XXV/OUTPUT/NEWS/MAIL.pm b/lib/XXV/OUTPUT/NEWS/MAIL.pm index 07bdd07..3583344 100644 --- a/lib/XXV/OUTPUT/NEWS/MAIL.pm +++ b/lib/XXV/OUTPUT/NEWS/MAIL.pm @@ -3,7 +3,6 @@ use strict; use Tools; use POSIX qw(locale_h); -use Locale::gettext; # News Modules have only this methods # init - for intervall or others diff --git a/lib/XXV/OUTPUT/NEWS/RSS.pm b/lib/XXV/OUTPUT/NEWS/RSS.pm index 3cc4d2b..2cb4d01 100644 --- a/lib/XXV/OUTPUT/NEWS/RSS.pm +++ b/lib/XXV/OUTPUT/NEWS/RSS.pm @@ -3,7 +3,6 @@ use strict; use Tools; use POSIX qw(locale_h); -use Locale::gettext; # News Modules have only three methods # init - for intervall or others diff --git a/lib/XXV/OUTPUT/NEWS/VDR.pm b/lib/XXV/OUTPUT/NEWS/VDR.pm index 45d2cc7..524e483 100644 --- a/lib/XXV/OUTPUT/NEWS/VDR.pm +++ b/lib/XXV/OUTPUT/NEWS/VDR.pm @@ -3,7 +3,6 @@ use strict; use Tools; use POSIX qw(locale_h); -use Locale::gettext; # News Modules have only three methods # init - for intervall or others diff --git a/lib/XXV/OUTPUT/Wml.pm b/lib/XXV/OUTPUT/Wml.pm index 7349ab5..383ec99 100644 --- a/lib/XXV/OUTPUT/Wml.pm +++ b/lib/XXV/OUTPUT/Wml.pm @@ -3,7 +3,6 @@ use strict; use vars qw($AUTOLOAD); -use Locale::gettext; use Tools; use File::Path; use Pod::Html; @@ -12,7 +11,7 @@ use Pod::Html; # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'Wml', Prereq => { @@ -30,18 +29,18 @@ sub module { # ------------------ sub AUTOLOAD { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $data = shift || {}; my $params = shift || 0; my $name = (split('::', $AUTOLOAD))[-1]; return if($name eq 'DESTROY'); - my $output = $obj->parseTemplate($name, $data, $params); + my $output = $self->parseTemplate($name, $data, $params); - $obj->out( $output ); + $self->out( $output ); - $obj->{call} = ''; + $self->{call} = ''; } @@ -82,6 +81,9 @@ sub new { $self->{browser} = $attr{'-browser'} || return error('No browser given!'); + $self->{charset} = $attr{'-charset'} + || 'ISO-8859-1'; + # $self->{start} = $attr{'-start'} # || return error('No StartPage given!'); @@ -106,12 +108,12 @@ sub new { # ------------------ sub parseTemplate { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $name = shift || return error('No name defined!'); my $data = shift || return error('No data defined!'); my $params = shift || {}; - my $t = $obj->{tt}; + my $t = $self->{tt}; my $u = main::getModule('USER'); # you can use two templates, first is a user defined template @@ -119,26 +121,27 @@ sub parseTemplate { # i.e. call the htmlhelp command the htmlhelp.tmpl # SpecialTemplate: ./wmlRoot/usage.tmpl # StandardTemplate: ./wmlRoot/widgets/menu.tmpl - my $widget_first = sprintf('%s.tmpl', (exists $obj->{call}) ? $obj->{call} : 'nothing'); + my $widget_first = sprintf('%s.tmpl', (exists $self->{call}) ? $self->{call} : 'nothing'); my $widget_second = sprintf('widgets/%s.tmpl', $name); - my $widget = (-e sprintf('%s/%s', $obj->{wmldir}, $widget_first) ? $widget_first : $widget_second); - my $user = ($u->{active} eq 'y' && $obj->{USER}->{Name} ? $obj->{USER}->{Name} : "nobody" ); + my $widget = (-e sprintf('%s/%s', $self->{wmldir}, $widget_first) ? $widget_first : $widget_second); + my $user = ($u->{active} eq 'y' && $self->{USER}->{Name} ? $self->{USER}->{Name} : "nobody" ); my $output; my $vars = { - cgi => $obj->{cgi}, + cgi => $self->{cgi}, call => $name, data => $data, type => ref $data, - info => $obj->browser, + info => $self->browser, param => $params, pid => $$, debug => 1, user => $user, + charset => $self->{charset}, allow => sub{ - my($cmdobj, $cmdname, $se, $err) = $u->checkCommand($obj, $_[0],"1"); + my($cmdobj, $cmdname, $se, $err) = $u->checkCommand($self, $_[0],"1"); return 1 if($cmdobj); }, - basedir => $obj->{wmldir}, + basedir => $self->{wmldir}, entities => sub{ return entities($_[0]) }, # translate string, usage : gettext(foo,truncate) or gettext(foo) # value for truncate are optional @@ -175,34 +178,35 @@ sub parseTemplate { # ------------------ sub out { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $text = shift || 'no Text for Output'; my $type = shift || 'text/vnd.wap.wml'; my %args = @_; - my $q = $obj->{cgi}; - unless(defined $obj->{header}) { + my $q = $self->{cgi}; + unless(defined $self->{header}) { # HTTP Header - $obj->{handle}->print( - $obj->header($type, \%args) + $self->{handle}->print( + $self->header($type, \%args) ); } - $obj->{handle}->print( $text,"\r\n" ); + $self->{handle}->print( $text,"\r\n" ); } # ------------------ sub header { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $typ = shift || return error ('No Type!' ); my $arg = shift || {}; - $obj->{header} = 1; - return $obj->{cgi}->header( + $self->{header} = 1; + return $self->{cgi}->header( -type => $typ, -status => "200 OK", - -expires => ($typ =~ 'text/vnd.wap.wml' || (defined $obj->{nocache} && $obj->{nocache})) ? "now" : "+12h", + -expires => ($typ =~ 'text/vnd.wap.wml' || (defined $self->{nocache} && $self->{nocache})) ? "now" : "+12h", + -charset => $self->{charset}, %{$arg}, ); } @@ -210,45 +214,45 @@ sub header { # ------------------ sub statusmsg { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $msg = shift || return error ('No Msg!'); my $status = shift || return error ('No Status!'); - unless(defined $obj->{header}) { - $obj->{nopack} = 1; - $obj->{header} = 1; - my $data = $obj->{cgi}->header( + unless(defined $self->{header}) { + $self->{nopack} = 1; + $self->{header} = 1; + my $data = $self->{cgi}->header( -type => 'text/vnd.wap.wml', -status => $status, -expires => "now", ); - $obj->out($data); + $self->out($data); } my @title = split ('\n', $status); - $obj->start(undef,{ title => $title[0] }); - $obj->err($msg); - $obj->footer(); + $self->start(undef,{ title => $title[0] }); + $self->err($msg); + $self->footer(); } # ------------------ # Send HTTP Status 401 (Authorization Required) sub login { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $msg = shift || ''; - $obj->statusmsg($msg,"401 Authorization Required\nWWW-Authenticate: Basic realm=\"xxvd\""); + $self->statusmsg($msg,"401 Authorization Required\nWWW-Authenticate: Basic realm=\"xxvd\""); } # ------------------ # Send HTTP Status 403 (Access Forbidden) sub status403 { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $msg = shift || ''; - $obj->statusmsg($msg,"403 Forbidden"); + $self->statusmsg($msg,"403 Forbidden"); } @@ -256,26 +260,26 @@ sub status403 { # Send HTTP Status 404 (File not found) sub status404 { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $file = shift || return error('No file defined!'); my $why = shift || ""; lg sprintf("Couldn't open file '%s' : %s!",$file,$why); - $file =~ s/$obj->{wmldir}\///g; # Don't post wml root, avoid spy out + $file =~ s/$self->{wmldir}\///g; # Don't post wml root, avoid spy out - $obj->statusmsg(sprintf(gettext("Couldn't open file '%s' : %s!"),$file,$why),"404 File not found"); + $self->statusmsg(sprintf(gettext("Couldn't open file '%s' : %s!"),$file,$why),"404 File not found"); } # ------------------ sub question { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $titel = shift || 'undef'; my $questions = shift || return error('No data defined!'); my $erg = shift || 0; - my $q = $obj->{cgi}; + my $q = $self->{cgi}; my $quest; # Check Data @@ -303,7 +307,7 @@ sub question { } if($error) { - $obj->err(sprintf(gettext("Error '%s' (%s) : %s!"), $data->{msg}, $name, $error)); + $self->err(sprintf(gettext("Error '%s' (%s) : %s!"), $data->{msg}, $name, $error)); last; } } @@ -313,61 +317,61 @@ sub question { } } - $obj->formStart($titel); + $self->formStart($titel); if(ref $questions eq 'ARRAY') { - my $q = $obj->{cgi}; + my $q = $self->{cgi}; @$quest = @$questions; while (my ($name, $data) = splice(@$quest, 0, 2)) { my $type = delete $data->{typ}; $data->{msg} =~ s/\n/<br \/>/sig if($data->{msg}); $data->{NAME} = '__'.$name; $type ||= 'string'; - $obj->$type($data); + $self->$type($data); } } else { my $type = delete $questions->{typ}; $questions->{NAME} = '__'.$type; $type ||= 'string'; - $obj->$type($questions); + $self->$type($questions); } - $obj->formEnd; + $self->formEnd; return undef; } # ------------------ sub image { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $file = shift || return error('No file defined!'); - my $typ = shift || $obj->{mime}->{lc((split('\.', $file))[-1])} + my $typ = shift || $self->{mime}->{lc((split('\.', $file))[-1])} or return error("No Type in Mimehash or File: $file"); my $data = load_file($file) - or return $obj->status404($file,$!); + or return $self->status404($file,$!); - $obj->out($data, $typ); + $self->out($data, $typ); } # ------------------ sub datei { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $file = shift || return error('No file defined!'); my $data = load_file($file) - or return $obj->status404($file,$!); + or return $self->status404($file,$!); - $obj->out($data, 'text/vnd.wap.wml'); + $self->out($data, 'text/vnd.wap.wml'); } # ------------------ sub pod { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $modname = shift || return error('No modul name defined!'); $modname = ucfirst($modname) if($modname eq 'GENERAL'); - my $podfile = sprintf('%s/%s.pod', $obj->{paths}->{PODPATH}, $modname); + my $podfile = sprintf('%s/%s.pod', $self->{paths}->{PODPATH}, $modname); my $tmpdir = main::getModule('USER')->userTmp; my $outfile = sprintf('%s/%s_%d.pod', $tmpdir, $modname, time); @@ -381,49 +385,49 @@ sub pod { my $html = load_file($outfile); $html = $1 if($html =~ /\<body.*?\>(.+?)\<\/body\>/si); - $obj->link({ + $self->link({ text => gettext("Back to configuration page."), - url => $obj->{browser}->{Referer}, + url => $self->{browser}->{Referer}, }); - $obj->message($html); + $self->message($html); } # ------------------ sub typ { # ------------------ - my $obj = shift || return error('No object defined!'); - return $obj->{TYP}; + my $self = shift || return error('No object defined!'); + return $self->{TYP}; } # ------------------ sub setCall { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $name = shift || return error('No name defined!'); - $obj->{call} = $name; - return $obj->{call}; + $self->{call} = $name; + return $self->{call}; } # ------------------ sub browser { # ------------------ - my $obj = shift || return error('No object defined!'); - return $obj->{browser}; + my $self = shift || return error('No object defined!'); + return $self->{browser}; } # Special Version from Message (with error handling) # ------------------ sub msg { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $data = shift || {}; my $err = shift; unless($err) { - $obj->message($data); + $self->message($data); } else { - $obj->err($data); + $self->err($data); } } |
