--- lib/A3C/View/Strix.pm 2008/06/17 10:15:13 189 +++ lib/A3C/View/Strix.pm 2008/06/17 21:32:12 197 @@ -119,7 +119,7 @@ return Strix->new({ instance => $instance }); } -=head2 sitemap +=head2 site-navigation =cut @@ -132,55 +132,15 @@ ); } -template 'sitemap' => page { +template 'site-navigation' => page { - title is _('Sitemap %1', get('instance')); + title is _('Site navigation'); render_region( - name => 'selected-instances', - path => '/strix/selected-instances' + name => 'select-strix-site', + path => '/strix/select-site' ); - my $site_id = get('site_id') || 1; - - my $sitemap = strix->site_navigation( $site_id ); - - sub full_url { - my $p = shift; - strix_link( $p->{url}, $p->{naziv} ); - if ( $p->{type} eq 'category' ) { - outs_raw(' '); - hyperlink( - url => '/strix/layout?url=' . $p->{url} . ';instance=' . get('instance'), - label => _('layout'), - class => 'layout', - ); - } - } - - sub children { - my $c = shift; - return unless defined $c->{children}; - ul { - foreach my $p ( @{ $c->{children} } ) { - li { - { class is $p->{class} }; - full_url( $p ); - children( $p ); - } - } - } - } - - ul { - foreach my $p ( @$sitemap ) { - li { - full_url( $p ); - children( $p ); - } - } - } - }; =head2 layout @@ -404,5 +364,94 @@ }; +=head2 select-site + +=cut + +template 'select-site' => sub { + + my $action = new_action( + class => 'StrixSelectSite', + moniker => 'strix-select-site', + ); + + #warn "action = ", dump( $action ); + + form { + render_param( $action, 'instance', onchange => { submit => $action, refresh_self => 1 }, default => get('instance') ); + render_param( $action, 'site_id', onchange => { submit => $action, refresh_self => 1 } ); + }; + + warn "## select-site action ",dump( $action->result ); + + if ( my $site_id = $action->result->content('site_id') ) { + show('strix-site-navigation-tree', $action->result->content('instance'), $site_id); + } +}; + +=head1 PRIVATE TEMPLATES + +=head2 strix-site-navigation-tree + + show('strix-site-navigation-tree',$instance,$site_id); + +=cut + +private template 'strix-site-navigation-tree' => sub { + my $self = shift; + my ( $instance, $site_id ) = @_; + + warn ">>>> instance: $instance site_id: $site_id"; + + set 'instance' => $instance; + + sub full_url { + my $p = shift; + strix_link( $p->{url}, $p->{naziv} ); + if ( $p->{type} eq 'category' ) { + outs_raw(' '); + hyperlink( + url => '/strix/layout?url=' . $p->{url} . ';instance=' . get('instance'), + label => _('layout'), + class => 'layout', + ); + } + } + + sub children { + my $c = shift; + return unless defined $c->{children}; + ul { + foreach my $p ( @{ $c->{children} } ) { + li { + { class is $p->{class} }; + full_url( $p ); + children( $p ); + } + } + } + } + + my $strix = Strix->new({ instance => $instance }); + + my @navigation = @{ $strix->site_navigation( $site_id ) }; + if ( @navigation ) { + ul { + foreach my $p ( @navigation ) { + li { + full_url( $p ); + children( $p ); + } + } + } + } else { + div { + { class is 'note error' } + _('No navigation found for instance %1 site_id %2', $instance, $site_id) + } + + } + +}; 1;