From c20841970427c8f783e80cb441368f43b88caf88 Mon Sep 17 00:00:00 2001 From: Brian Read Date: Thu, 19 Jun 2025 06:26:38 +0100 Subject: [PATCH] * Thu Jun 19 2025 Brian Read 11.0.0-93.sme - Sort out case of first letter of ctlact in routes added in from header on controller file [SME: 13053] --- root/usr/share/smanager/lib/SrvMngr.pm | 75 ++++++++++++++++++-------- smeserver-manager.spec | 5 +- 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/root/usr/share/smanager/lib/SrvMngr.pm b/root/usr/share/smanager/lib/SrvMngr.pm index d3e3ac3..bbe4c98 100644 --- a/root/usr/share/smanager/lib/SrvMngr.pm +++ b/root/usr/share/smanager/lib/SrvMngr.pm @@ -37,7 +37,7 @@ use esmith::NavigationDB; # no UTF8 raw is ok for ASCII only flat file use SrvMngr_Auth qw(check_admin_access); #this is overwrittrn with the "release" by the spec file - release can be "99.el8.sme" -our $VERSION = '91.el8.sme'; +our $VERSION = '92.el8.sme'; #Extract the release value if ($VERSION =~ /^(\d+)/) { $VERSION = $1; # $1 contains the matched numeric digits @@ -421,28 +421,59 @@ sub setup_routing { # additional routes (for contribs) got from 'routes' db #my @routes = @{SrvMngr::get_routes_list()}; - foreach (@{SrvMngr::get_routes_list()}) { - - if ( defined $_->{method} and defined $_->{url} and defined $_->{ctlact} and defined $_->{name} ) { - my $menu = defined $_->{menu} ? $_->{menu} : 'A'; - if ( $menu eq 'N' ) { - $r->get($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'get'); - $r->post($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'post'); - } elsif ( $menu eq 'U' ) { - $if_logged_in->get($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'get'); - $if_logged_in->post($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'post'); - } else { - $if_admin->get($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'get'); - $if_admin->post($_->{url})->to($_->{ctlact})->name($_->{name}) - if ( $_->{method} eq 'post'); - } + #foreach (@{SrvMngr::get_routes_list()}) { + #if ( defined $_->{method} and defined $_->{url} and defined $_->{ctlact} and defined $_->{name} ) { + #my $menu = defined $_->{menu} ? $_->{menu} : 'A'; + #if ( $menu eq 'N' ) { + #$r->get($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'get'); + #$r->post($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'post'); + #} elsif ( $menu eq 'U' ) { + #$if_logged_in->get($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'get'); + #$if_logged_in->post($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'post'); + #} else { + #$if_admin->get($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'get'); + #$if_admin->post($_->{url})->to($_->{ctlact})->name($_->{name}) + #if ( $_->{method} eq 'post'); + #} + #} + #} + + foreach my $route (@{SrvMngr::get_routes_list()}) { + if (defined $route->{method} && defined $route->{url} && defined $route->{ctlact} && defined $route->{name}) { + my $menu = defined $route->{menu} ? $route->{menu} : 'A'; + + # Fix controller case: convert "ControllerName" to "controllername" in "ControllerName#action" + # this is so that AdminLTE breadcrumb works - it appears that perl Packages names are NOT case sensitive + # and that the breadcrumb package assumes that the package name is the same as the main route. + my ($controller, $action) = split /#/, $route->{ctlact}, 2; + my $fixed_ctlact = lc($controller) . '#' . $action; + + if ($menu eq 'N') { + $r->get($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'get'; + $r->post($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'post'; + } + elsif ($menu eq 'U') { + $if_logged_in->get($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'get'; + $if_logged_in->post($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'post'; + } + else { # Default: menu 'A' + $if_admin->get($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'get'; + $if_admin->post($route->{url})->to($fixed_ctlact)->name($route->{name}) + if $route->{method} eq 'post'; + } + } } - } + $if_admin->get('/config/:key' => {key => qr/[a-z0-9]{2,32}/})->to('request#getconfig')->name('getconfig'); $if_admin->get('/account/:key' => {key => qr/[a-z0-9]{2,32}/})->to('request#getaccount')->name('getaccount'); diff --git a/smeserver-manager.spec b/smeserver-manager.spec index 566967e..ae20e23 100644 --- a/smeserver-manager.spec +++ b/smeserver-manager.spec @@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2 %define name smeserver-manager Name: %{name} %define version 11.0.0 -%define release 92 +%define release 93 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -144,6 +144,9 @@ true %defattr(-,root,root) %changelog +* Thu Jun 19 2025 Brian Read 11.0.0-93.sme +- Sort out case of first letter of ctlact in routes added in from header on controller file [SME: 13053] + * Sun Jun 15 2025 Brian Read 11.0.0-92.sme - rework datetime panel [SME: 13020] - Fix errors in error messages for local networks panel [SME: 13044]