summaryrefslogtreecommitdiff
path: root/Xerl/Page/Menu.pm
diff options
context:
space:
mode:
authorPaul Buetow (pluto.buetow.org) <paul@buetow.org>2013-09-15 11:51:10 +0200
committerPaul Buetow (pluto.buetow.org) <paul@buetow.org>2013-09-15 11:51:10 +0200
commit6aa12ae5f556ab884b7705379c41a566df86d028 (patch)
tree85441b3a046f58970ebe9ad55460c16e4f4d3d01 /Xerl/Page/Menu.pm
parentc183faa4d53b6e4f091d6b38397847e55b5d2251 (diff)
temp remove includedirs tag, perltidy indention set to 2, initial XML::LibXML
Diffstat (limited to 'Xerl/Page/Menu.pm')
-rw-r--r--Xerl/Page/Menu.pm136
1 files changed, 68 insertions, 68 deletions
diff --git a/Xerl/Page/Menu.pm b/Xerl/Page/Menu.pm
index 0ba9568..3bd158b 100644
--- a/Xerl/Page/Menu.pm
+++ b/Xerl/Page/Menu.pm
@@ -37,95 +37,95 @@ use Xerl::Tools::FileIO;
use Xerl::XML::Element;
sub generate($;$) {
- my Xerl::Page::Menu $self = $_[0];
- my Xerl::Page::Configure $config = $self->get_config();
+ my Xerl::Page::Menu $self = $_[0];
+ my Xerl::Page::Configure $config = $self->get_config();
- my @site = split /\//, $config->get_site();
- my @compare = @site;
- my $site = pop @site;
+ my @site = split /\//, $config->get_site();
+ my @compare = @site;
+ my $site = pop @site;
- my ( $content, $siteadd ) = ( 'content/', '' );
+ my ( $content, $siteadd ) = ( 'content/', '' );
- my Xerl::XML::Element $menuelem =
- $self->get_menu( $content, $siteadd, shift @compare );
+ my Xerl::XML::Element $menuelem =
+ $self->get_menu( $content, $siteadd, shift @compare );
+ $self->push_array($menuelem)
+ if $menuelem->first_array()->array_length() > 1;
+
+ for my $s (@site) {
+ $content .= "$s.sub/";
+ $siteadd .= "$s/";
+ $menuelem = $self->get_menu( $content, $siteadd, shift @compare );
$self->push_array($menuelem)
if $menuelem->first_array()->array_length() > 1;
+ }
- for my $s (@site) {
- $content .= "$s.sub/";
- $siteadd .= "$s/";
- $menuelem = $self->get_menu( $content, $siteadd, shift @compare );
- $self->push_array($menuelem)
- if $menuelem->first_array()->array_length() > 1;
- }
-
- return undef;
+ return undef;
}
sub get_menu($$$$) {
- my Xerl::Page::Menu $self = $_[0];
- my Xerl::Page::Configure $config = $self->get_config();
- my ( $content, $siteadd, $compare ) = ( @_[ 1 ... 2 ], lc $_[3] );
- my $issubsection = $content =~ m{\.sub/$};
- my $pattern = qr/\.(?:xml)|(?:sub)$/;
-
- my Xerl::Tools::FileIO $io = Xerl::Tools::FileIO->new(
- path => $config->get_hostpath() . $content,
- basename => 1,
- );
-
- unless ( $io->exists() ) {
- Xerl::Main::Global::REDIRECT( $config->get_404() );
- $config->set_finish_request(1);
+ my Xerl::Page::Menu $self = $_[0];
+ my Xerl::Page::Configure $config = $self->get_config();
+ my ( $content, $siteadd, $compare ) = ( @_[ 1 ... 2 ], lc $_[3] );
+ my $issubsection = $content =~ m{\.sub/$};
+ my $pattern = qr/\.(?:xml)|(?:sub)$/;
+
+ my Xerl::Tools::FileIO $io = Xerl::Tools::FileIO->new(
+ path => $config->get_hostpath() . $content,
+ basename => 1,
+ );
+
+ unless ( $io->exists() ) {
+ Xerl::Main::Global::REDIRECT( $config->get_404() );
+ $config->set_finish_request(1);
+ }
+
+ $io->dslurp();
+ my $dir = $io->get_array();
+
+ my ( @prec, @dir );
+ map {
+ if (/^\d+\..+\./) { push @prec, $_ }
+ else { push @dir, $_ }
}
+ grep {
+ $_ !~ /^home\.xml$/i
+ && $_ !~ /\.feed\.xml$/i
+ && $_ !~ /\.hide\.xml$/i
+ } @$dir;
- $io->dslurp();
- my $dir = $io->get_array();
+ my Xerl::XML::Element $root = Xerl::XML::Element->new();
+ my Xerl::XML::Element $menu = Xerl::XML::Element->new();
- my ( @prec, @dir );
- map {
- if (/^\d+\..+\./) { push @prec, $_ }
- else { push @dir, $_ }
- }
- grep {
- $_ !~ /^home\.xml$/i
- && $_ !~ /\.feed\.xml$/i
- && $_ !~ /\.hide\.xml$/i
- } @$dir;
+ $menu->set_name('menu');
- my Xerl::XML::Element $root = Xerl::XML::Element->new();
- my Xerl::XML::Element $menu = Xerl::XML::Element->new();
+ for ( $issubsection ? ( @dir, @prec ) : ( 'home.xml', @dir, @prec ) ) {
+ my ($site) = /(.*)$pattern/o;
- $menu->set_name('menu');
+ $site =~ s#\.$#/home#o;
+ $site =~ s/^\d+\.//;
- for ( $issubsection ? ( @dir, @prec ) : ( 'home.xml', @dir, @prec ) ) {
- my ($site) = /(.*)$pattern/o;
+ my $linkname = $site;
+ $linkname =~ s/(?:\d+\.)?(.)/\U$1/o;
+ $compare .= '/' if $linkname =~ s#(.*/)[^/]+$#$1#;
- $site =~ s#\.$#/home#o;
- $site =~ s/^\d+\.//;
-
- my $linkname = $site;
- $linkname =~ s/(?:\d+\.)?(.)/\U$1/o;
- $compare .= '/' if $linkname =~ s#(.*/)[^/]+$#$1#;
-
- my Xerl::XML::Element $item = Xerl::XML::Element->new(
- params => { link => "?site=$siteadd$site" },
- text => $linkname
- );
+ my Xerl::XML::Element $item = Xerl::XML::Element->new(
+ params => { link => "?site=$siteadd$site" },
+ text => $linkname
+ );
- $compare =~ s/^(\d+\.)//;
- $item->set_name(
- lc $linkname eq lc $compare ? 'activemenuitem' : 'menuitem' );
+ $compare =~ s/^(\d+\.)//;
+ $item->set_name(
+ lc $linkname eq lc $compare ? 'activemenuitem' : 'menuitem' );
- $item->set_prev($menu);
- $menu->push_array($item);
- }
+ $item->set_prev($menu);
+ $menu->push_array($item);
+ }
- $root->push_array($menu);
- $menu->set_prev($root);
+ $root->push_array($menu);
+ $menu->set_prev($root);
- return $root;
+ return $root;
}
1;