summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-03-08 14:30:15 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-03-08 14:30:15 +0000
commita420ba2fd04bb2adce1c693fc8d296f332bdd95c (patch)
tree625f296d92a0f370b6fe16e8fd3d15aa4c4ba4d7 /lib
parent3d506c66cc8ec133730edddeaff4bd2ffd8a129b (diff)
downloadxxv-a420ba2fd04bb2adce1c693fc8d296f332bdd95c.tar.gz
xxv-a420ba2fd04bb2adce1c693fc8d296f332bdd95c.tar.bz2
Charset UTF8 Support. Run 'xxvd --utf8' to use encoding utf8 as data charset.
Diffstat (limited to 'lib')
-rw-r--r--lib/Bundle/Xxv.pm1
-rw-r--r--lib/Tools.pm42
-rw-r--r--lib/XXV/MODULES/AUTOTIMER.pm1
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm3
-rw-r--r--lib/XXV/MODULES/CHRONICLE.pm1
-rw-r--r--lib/XXV/MODULES/CONFIG.pm1
-rw-r--r--lib/XXV/MODULES/EPG.pm2
-rw-r--r--lib/XXV/MODULES/EVENTS.pm1
-rw-r--r--lib/XXV/MODULES/GRAB.pm1
-rw-r--r--lib/XXV/MODULES/HTTPD.pm109
-rw-r--r--lib/XXV/MODULES/INTERFACE.pm1
-rw-r--r--lib/XXV/MODULES/LOGREAD.pm1
-rw-r--r--lib/XXV/MODULES/MEDIALIB.pm1
-rw-r--r--lib/XXV/MODULES/MOVETIMER.pm1
-rw-r--r--lib/XXV/MODULES/MUSIC.pm1
-rw-r--r--lib/XXV/MODULES/RECORDS.pm1
-rw-r--r--lib/XXV/MODULES/REMOTE.pm2
-rw-r--r--lib/XXV/MODULES/REPORT.pm1
-rw-r--r--lib/XXV/MODULES/ROBOT.pm1
-rw-r--r--lib/XXV/MODULES/SHARE.pm1
-rw-r--r--lib/XXV/MODULES/STATUS.pm1
-rw-r--r--lib/XXV/MODULES/STREAM.pm1
-rw-r--r--lib/XXV/MODULES/SVDRP.pm1
-rw-r--r--lib/XXV/MODULES/TELNET.pm2
-rw-r--r--lib/XXV/MODULES/TIMERS.pm1
-rw-r--r--lib/XXV/MODULES/USER.pm1
-rw-r--r--lib/XXV/MODULES/VTX.pm2
-rw-r--r--lib/XXV/MODULES/WAPD.pm52
-rw-r--r--lib/XXV/OUTPUT/Ajax.pm12
-rw-r--r--lib/XXV/OUTPUT/Console.pm1
-rw-r--r--lib/XXV/OUTPUT/HTML/PUSH.pm40
-rw-r--r--lib/XXV/OUTPUT/Html.pm9
-rw-r--r--lib/XXV/OUTPUT/NEWS/JABBER.pm2
-rw-r--r--lib/XXV/OUTPUT/NEWS/MAIL.pm1
-rw-r--r--lib/XXV/OUTPUT/NEWS/RSS.pm1
-rw-r--r--lib/XXV/OUTPUT/NEWS/VDR.pm1
-rw-r--r--lib/XXV/OUTPUT/Wml.pm146
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/>/&gt;/g;
$s =~ s/</&lt;/g;
$s =~ s/\"/&quot;/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/&amp;/&/g;
$s =~ s/&gt;/>/g;
$s =~ s/&lt;/</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);
}
}