# 2007-10-14 - XMLified - Holger Will <holger@treebuilder.de>
#######################################################################
-$menufile = "menu.ini";
+use utf8;
+
use SL::Menu;
use CGI::Carp qw(fatalsToBrowser);
use Encode;
+use URI;
+
+use strict;
+
1;
# end of main
sub display {
- print "Content-type: text/xml; charset=iso-8859-1\n\n";
- print qq|<?xml version="1.0" encoding="iso-8859-1"?>\n|;
- print qq|<?xml-stylesheet href="xslt/xulmenu.xsl" type="text/xsl"?>\n|;
- print qq|<!DOCTYPE doc [
-<!ENTITY szlig "ß">
-]>|;
- print qq|<doc>|;
- print qq|<name>|;
- print %myconfig->{name};
- print qq|</name>|;
- print qq|<db>|;
- print %myconfig->{dbname};
- print qq|</db>|;
- print qq|<favorites>|;
- my $fav=%myconfig->{favorites};
- my @favorites = split(/;/, $fav);
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
+ my $charset = $main::dbcharset || 'ISO-8859-1';
+ my $callback = $form->unescape($form->{callback});
+ $callback = URI->new($callback)->rel($callback) if $callback;
+ $callback = "login.pl?action=company_logo" if $callback =~ /^(\.\/)?$/;
+
+ my $text = $form->create_http_response('content_type' => 'text/xml',
+ 'charset' => $charset)
+ . qq|<?xml version="1.0" encoding="${charset}"?>
+<?xml-stylesheet href="xslt/xulmenu.xsl" type="text/xsl"?>
+<!DOCTYPE doc [
+<!ENTITY szlig "| . $::locale->{iconv_utf8}->convert('ß') . qq|">
+<!ENTITY auml "| . $::locale->{iconv_utf8}->convert('ä') . qq|">
+<!ENTITY ouml "| . $::locale->{iconv_utf8}->convert('ö') . qq|">
+<!ENTITY uuml "| . $::locale->{iconv_utf8}->convert('ü') . qq|">
+]>
+
+<doc>
+<name>$myconfig{name}</name>
+<version>$form->{version}</version>
+<callback>$callback</callback>
+<db>$myconfig{dbname}</db>
+
+<favorites>|;
+
+ my $fav = $myconfig{favorites};
+ my @favorites = split m/;/, $fav;
foreach (@favorites) {
- print qq|<link name="$_"/>|;
+ $text .= qq|<link name="$_"/>|;
}
- print qq|</favorites>|;
- print qq|<menu>|;
-my $isoencodedmenu=&acc_menu($menu);
- print encode("iso-8859-1",$isoencodedmenu );
-
- print qq|</menu>|;
- print qq|</doc>|;
-
+
+ $text .= qq|</favorites>\n|
+ . qq|<menu>\n|
+ . acc_menu()
+ . qq|</menu>\n|
+ . qq|</doc>\n|;
+
+ print $text;
}
sub acc_menu {
- $locale = Locale->new($language, "menu");
+ my $form = $main::form;
- $mainlevel = $form->{level};
+ my $mainlevel = $form->{level};
$mainlevel =~ s/$mainlevel--//g;
- my $menu = new Menu "$menufile";
+ my $menu = Menu->new($::menufile);
$| = 1;
my ($menu, $parent, $depth) = @_;
my $html;
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
die if ($depth * 1 > 5);
my @menuorder;
next if (($item eq "") || ($item =~ /--/));
my $menu_item = $menu->{"${parent}${item}"};
- my $menu_title = $locale->text($item);
+ my $menu_title = $::locale->text($item);
my $menu_text = $menu_title;
my $target = "main_window";