From d21115c31a63342af50c41f7d2f39b1a79ee8a94 Mon Sep 17 00:00:00 2001 From: Martin Renvoize <martin.renvoize@ptfs-europe.com> Date: Mon, 8 Apr 2019 12:15:09 +0100 Subject: [PATCH] Bug 15326: (follow-up) Pages navigation fixes This is the best I've managed to do with the navigation. Would be happy for someone else to give it a go because I'm aware that some parent links repeat. Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Rebased-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> --- Koha/CmsPage.pm | 31 ++++++++++++++++++++++ .../prog/en/includes/cms-pages-nav.inc | 16 +++++++++++ .../prog/en/modules/tools/cmspages.tt | 15 ++--------- .../prog/en/modules/tools/tools-home.tt | 3 +++ tools/cmspages.pl | 4 +-- tools/tools-home.pl | 6 ++++- 6 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/cms-pages-nav.inc diff --git a/Koha/CmsPage.pm b/Koha/CmsPage.pm index cb333d0e74..498404ca20 100644 --- a/Koha/CmsPage.pm +++ b/Koha/CmsPage.pm @@ -22,6 +22,7 @@ use Modern::Perl; use Carp; use Koha::Database; +use Koha::CmsPages; use base qw( Koha::Object ); @@ -35,6 +36,36 @@ Koha::CmsPage - Koha Page Object class =cut +=head3 parentObj + +my $parent = $page->parentObj + +Return the parent page + +=cut + +sub parentObj { + my ( $self ) = @_; + my $p = $self->parent(); + return scalar Koha::CmsPages->find( $p ); +} + +=head3 isParent + +Returns true if page is a parent + +=cut + +sub isaParent { + my ( $self ) = @_; + my @pages_with_this_parent = Koha::CmsPages->search({ parent => $self->id() }); + if ( scalar @pages_with_this_parent > 0 ){ + return 1; + } else { + return 0; + } +} + =head3 type =cut diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cms-pages-nav.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cms-pages-nav.inc new file mode 100644 index 0000000000..0abbfcb36d --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cms-pages-nav.inc @@ -0,0 +1,16 @@ +[% IF pages %] + <ul id="cms_nav"> + [% FOREACH page IN pages %] + [% IF page.parentObj %] + <li><a href="/cgi-bin/koha/tools/cmspages.pl?op=view&id=[% page.parentObj.id %]">[% page.parentObj.title | html %]</a></li> + <ul> + <li><a href="/cgi-bin/koha/tools/cmspages.pl?op=view&id=[% page.id %]">[% page.title | html %]</a></li> + </ul> + [% ELSE %] + [% UNLESS page.isaParent %] + <li><a href="/cgi-bin/koha/tools/cmspages.pl?op=view&id=[% page.id %]">[% page.title | html %]</a></li> + [% END %] + [% END %] + [% END %] + </ul> +[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cmspages.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cmspages.tt index fb24bd7a3d..32898d6354 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cmspages.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/cmspages.tt @@ -59,24 +59,13 @@ [% IF ( view ) %] <div class="yui-ge"> <div id="pagesnav" class="yui-u"> - [% IF ( links ) %] + [% IF ( pages ) %] <fieldset> <ul> <li><a href="[% link_self %]">Pages home</a></li> </ul> <h4>Pages</h4> - <ul id="cms_nav"> - [% FOREACH link IN links %] - [% IF ( link.location == '' || link.location == '1' ) %] - [% IF ( link.parent != '' ) %] - [% FOREACH parent IN parent_list %] - [% IF ( parent.id == link.parent ) %]<li style="margin-left:20px;"><a href="[% link_self %]?op=view&id=[% link.parent %]">[% parent.title_link %]</a> › <a href="[% link_self %]?op=view&id=[% link.id %]">[% link.title_link %]</a></li>[% END %] - [% END %] - [% ELSE %] - <li><a href="[% link_self %]?op=view&id=[% link.id %]">[% link.title_link %]</a></li> - [% END %] - [% END %][% END %] - </ul> + [% INCLUDE 'cms-pages-nav.inc' %] </fieldset> [% END %] </div> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt index 2f245d882c..c524e05828 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt @@ -107,6 +107,9 @@ [% IF ( CAN_user_tools_edit_pages ) %] <dt><a href="/cgi-bin/koha/tools/cmspages.pl">Pages</a></dt> <dd>Create and edit additional content pages</dd> + <ul> + [% INCLUDE 'cms-pages-nav.inc' %] + </ul> [% END %] [% IF ( CAN_user_tools_schedule_tasks ) %] diff --git a/tools/cmspages.pl b/tools/cmspages.pl index 3a1f5977e5..a8fd7421be 100755 --- a/tools/cmspages.pl +++ b/tools/cmspages.pl @@ -107,9 +107,9 @@ if ( $op eq 'form' ) { print $cgi->redirect( $link_self ); } elsif ( $op eq 'view' ) { my $cms_data = Koha::CmsPages->find( $id ); - my $links = Koha::CmsPages->search( {}, { order_by => 'sortorder' } ); + my $pages = Koha::CmsPages->search({ location => [ 1, { '=', undef } ] }, { order_by => 'sortorder' }); $template->param( - links => $links, + pages => $pages, cms_page => $cms_data, view => 1, id => $id, diff --git a/tools/tools-home.pl b/tools/tools-home.pl index 99fde6391d..bdb07df4f2 100755 --- a/tools/tools-home.pl +++ b/tools/tools-home.pl @@ -22,6 +22,7 @@ use C4::Auth; use C4::Output; use C4::Tags qw/get_count_by_tag_status/; use Koha::Reviews; +use Koha::CmsPages; my $query = new CGI; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -38,9 +39,12 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( my $pendingcomments = Koha::Reviews->search_limited({ approved => 0 })->count; my $pendingtags = get_count_by_tag_status(0); +my $pages = Koha::CmsPages->search({ location => [ 1, { '=', undef } ] }, { order_by => 'sortorder' }); + $template->param( pendingcomments => $pendingcomments, - pendingtags => $pendingtags + pendingtags => $pendingtags, + pages => $pages, ); output_html_with_http_headers $query, $cookie, $template->output; -- 2.11.0