* Wed Jan 15 2025 Brian Read <brianr@koozali.org> 11.0.0-40.sme

- Comment out missing prefix message in navigation2-conf action and re-format it with perltidy [SME: 127672]
This commit is contained in:
Brian Read 2025-01-15 11:41:22 +00:00
parent c1915a722b
commit be49419eba
3 changed files with 170 additions and 175 deletions

View File

@ -0,0 +1 @@
-pbp -nst -nse -l=120 -ce -csc -pt=2 -kbl=0 -mbl=1 -lbl=1

View File

@ -1,218 +1,207 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# copyright (C) 1999-2006 Mitel Networks Corporation # copyright (C) 1999-2006 Mitel Networks Corporation
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
#---------------------------------------------------------------------- #----------------------------------------------------------------------
package esmith; package esmith;
use strict; use strict;
use constant SMNGR_LIB => '/usr/share/smanager/lib';
use constant SMNGR_LIB => '/usr/share/smanager/lib'; use constant I18NMODULES => 'SrvMngr/I18N/Modules';
use constant I18NMODULES => 'SrvMngr/I18N/Modules'; use constant WEBFUNCTIONS => 'SrvMngr/Controller';
use constant WEBFUNCTIONS => 'SrvMngr/Controller'; use constant NAVDIR => '/home/e-smith/db';
use constant NAVDIR => '/home/e-smith/db';
use constant NAVIGATIONDIR => 'navigation2'; use constant NAVIGATIONDIR => 'navigation2';
use constant DEBUG => 0; use constant DEBUG => 0;
use esmith::NavigationDB; use esmith::NavigationDB;
use esmith::I18N; use esmith::I18N;
use Data::Dumper; # activate if DEBUG
use Data::Dumper; # activate if DEBUG
binmode(STDOUT, ":encoding(UTF-8)"); binmode(STDOUT, ":encoding(UTF-8)");
my $navigation_ignore = "(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm(-.*)?)";
my $navigation_ignore = my $i18n = new esmith::I18N;
"(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm(-.*)?)";
my $i18n = new esmith::I18N;
my %navdbs; my %navdbs;
opendir FUNCTIONS, SMNGR_LIB . '/' . WEBFUNCTIONS
opendir FUNCTIONS, SMNGR_LIB.'/'.WEBFUNCTIONS or or die "Couldn't open ", SMNGR_LIB . '/' . WEBFUNCTIONS, "\n";
die "Couldn't open ", SMNGR_LIB.'/'.WEBFUNCTIONS, "\n"; my @files = grep (!/^${navigation_ignore}$/, readdir(FUNCTIONS));
my @files = grep (!/^${navigation_ignore}$/, readdir (FUNCTIONS));
closedir FUNCTIONS; closedir FUNCTIONS;
my @langs = $i18n->availableLanguages();
my @langs = $i18n->availableLanguages();
#my @langs = ('tr'); #Temp override #my @langs = ('tr'); #Temp override
foreach my $lang (@langs) {
my $long_lex = SMNGR_LIB . '/' . I18NMODULES . "/General/general_$lang.lex";
next unless (-e $long_lex);
open(LEX, '<:encoding(UTF-8)', $long_lex)
or die "Couldn't open ", $long_lex, " for reading.\n";
my @gen_lex = <LEX>;
close LEX;
#my @files = ('Portforwarding.pm'); #Temp override
foreach my $file (@files) {
next if (-d SMNGR_LIB . '/' . WEBFUNCTIONS . "/$file");
foreach my $lang (@langs) # next unless ( $file =~ m/D.*\.pm$/ );
{ next unless ($file =~ m/[A-Z].*\.pm$/);
my $long_lex = SMNGR_LIB.'/'.I18NMODULES."/General/general_$lang.lex"; my $file2 = lc($file);
next unless ( -e $long_lex ); $file2 =~ s/\.pm$//;
open(LEX, '<:encoding(UTF-8)', $long_lex) #--------------------------------------------------
or die "Couldn't open ", $long_lex, " for reading.\n"; # extract heading, description and weight information
my @gen_lex = <LEX>; # from Mojo controller
close LEX; #--------------------------------------------------
open(SCRIPT, SMNGR_LIB . '/' . WEBFUNCTIONS . "/$file");
my $heading = undef;
my $description = undef;
my $heading_weight = undef;
my $description_weight = undef;
my $menucat = undef;
my $routes = undef;
#my @files = ('Portforwarding.pm'); #Temp override while (<SCRIPT>) {
foreach my $file (@files) $heading = $1 if (/^\s*#\s*heading\s*:\s*(.+?)\s*$/);
{ $description = $1
next if (-d SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file"); if (/^\s*#\s*description\s*:\s*(.+?)\s*$/);
# next unless ( $file =~ m/D.*\.pm$/ ); ($heading_weight, $description_weight) = ($1, $2)
next unless ( $file =~ m/[A-Z].*\.pm$/ ); if (/^\s*#\s*navigation\s*:\s*(\d+?)\s+(\d+?)\s*$/);
$menucat = $1
if (/^\s*#\s*menu\s*:\s*(.+?)\s*$/);
last
if (defined $heading
and defined $description
and defined $heading_weight
and defined $description_weight
and defined $menucat);
my $file2 = lc($file); # routes : end (stop before eof if 'menu' is not here before 'routes'!!!
$file2 =~ s/\.pm$//; $routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/);
#-------------------------------------------------- last if (defined $routes and $routes eq 'end');
# extract heading, description and weight information } ## end while (<SCRIPT>)
# from Mojo controller close SCRIPT;
#-------------------------------------------------- print "updating script $file for lang $lang\n" if DEBUG;
open(SCRIPT, SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file"); my $navdb = $navdbs{$lang};
my $heading = undef; my $navinfo = NAVDIR . '/' . NAVIGATIONDIR . "/navigation.$lang";
my $description = undef; $navdb ||= esmith::NavigationDB->open($navinfo);
my $heading_weight = undef; $navdb ||= esmith::NavigationDB->create($navinfo)
my $description_weight = undef; or die "Couldn't create $navinfo\n";
my $menucat = undef; $navdbs{$lang} ||= $navdb;
my $routes = undef; my $rec = $navdb->get($file2)
|| $navdb->new_record($file2, { type => 'panel' });
my @panel_lex = ();
$long_lex = SMNGR_LIB . '/' . I18NMODULES . '/' . ucfirst($file2) . "/${file2}_$lang.lex";
while ( <SCRIPT> ) if (-e $long_lex) {
{ open(LEX, '<:encoding(UTF-8)', $long_lex)
$heading = $1 if (/^\s*#\s*heading\s*:\s*(.+?)\s*$/); or die "Couldn't open ", $long_lex, " for reading.\n";
$description = $1 @panel_lex = <LEX>;
if (/^\s*#\s*description\s*:\s*(.+?)\s*$/); close LEX;
($heading_weight, $description_weight) = ($1, $2) } ## end if (-e $long_lex)
if (/^\s*#\s*navigation\s*:\s*(\d+?)\s+(\d+?)\s*$/);
$menucat = $1
if (/^\s*#\s*menu\s*:\s*(.+?)\s*$/);
last if (defined $heading and #Extract the prefix for this module
defined $description and my @keys = values @panel_lex; # Get all values from the array
defined $heading_weight and my $i = 0; # Initialize the index
defined $description_weight and my $found = 0; # Flag to check if the prefix was found
defined $menucat); my $prefix = "xx_"; # Probably never match!!
# routes : end (stop before eof if 'menu' is not here before 'routes'!!! while ($i < @keys) { # Loop until we run out of entries
$routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/); my $extracted_value = $keys[$i] || ""; # The current entry
last if (defined $routes and $routes eq 'end'); #print("Extracted val: ".$extracted_value."\n");
}
close SCRIPT;
print "updating script $file for lang $lang\n"if DEBUG; # Extract prefix from the second value (up to and including the first underscore)
my $navdb = $navdbs{$lang}; #my ($prefix) = $second_value =~ /^'(.*?_)/; # Match everything up to and including the first underscore
my $navinfo = NAVDIR.'/'.NAVIGATIONDIR . "/navigation.$lang"; ($prefix) = $extracted_value =~ /^'(.*?_)/; # Match everything up to and including the first underscore
$navdb ||= esmith::NavigationDB->open($navinfo);
$navdb ||= esmith::NavigationDB->create($navinfo) or
die "Couldn't create $navinfo\n";
$navdbs{$lang} ||= $navdb;
my $rec = $navdb->get($file2) ||
$navdb->new_record($file2, { type => 'panel' } );
my @panel_lex = ();
$long_lex = SMNGR_LIB.'/'.I18NMODULES.'/'.ucfirst($file2)."/${file2}_$lang.lex";
if ( -e $long_lex ) {
open(LEX, '<:encoding(UTF-8)', $long_lex)
or die "Couldn't open ", $long_lex, " for reading.\n";
@panel_lex = <LEX>;
close LEX;
}
#Extract the prefix for this module
my @keys = values @panel_lex; # Get all values from the array
my $i = 0; # Initialize the index
my $found = 0; # Flag to check if the prefix was found
my $prefix = "xx_"; # Probably never match!!
while ($i < @keys) { # Loop until we run out of entries if (defined $prefix) {
my $extracted_value = $keys[$i] || ""; # The current entry $found = 1; # Set found flag to true
#print("Extracted val: ".$extracted_value."\n"); last; # Exit the loop if prefix is found
} else {
# Extract prefix from the second value (up to and including the first underscore) #print("Extracted Val: " . $extracted_value . "\n");
#my ($prefix) = $second_value =~ /^'(.*?_)/; # Match everything up to and including the first underscore }
($prefix) = $extracted_value =~ /^'(.*?_)/; # Match everything up to and including the first underscore $i++; # Increment the index to check the next entry
} ## end while ($i < @keys)
if (defined $prefix) {
$found = 1; # Set found flag to true
last; # Exit the loop if prefix is found
} else {
#print("Extracted Val: " . $extracted_value . "\n");
}
$i++; # Increment the index to check the next entry if (!$found) {
} #print(STDERR "No valid prefix found in any entries: " . $file2 . " (" . $lang . ")\n"); # if DEBUG;
$prefix = "xx_"; # Probably never match!!
}
if (!$found) { #print("Prefix: ".$prefix." ".$file2." (".$lang.")\n");
print(STDERR "No valid prefix found in any entries: ".$file2." (".$lang.")\n"); # if DEBUG; my %Lexicon = ();
$prefix = "xx_"; # Probably never match!! push(@panel_lex, @gen_lex);
my $top_error = 0;
} chomp @panel_lex;
#print("Prefix: ".$prefix." ".$file2." (".$lang.")\n");
my %Lexicon = ();
push(@panel_lex, @gen_lex);
my $top_error = 0;
chomp @panel_lex; for (@panel_lex) {
for (@panel_lex) { next unless $_; # first one empty
next unless $_; # first one empty my ($k, $v) = split / => /, $_;
my ($k, $v) = split / => /, $_;
# errors on split to $v (use DEBUG to see)
if ( $k and $v ) {
$k =~ s/\'//g;
$v =~ s/\'//g;
$v =~ s/,$//g;
$Lexicon{ lc($k) } = $v;
} else {
$k = "?" unless ($k);
print STDERR "Error for $lang $file2 on $k \n" if DEBUG;
$top_error++;
}
}
if ( $top_error > 0) {
if ( DEBUG ) {
print STDERR "$top_error errors for $lang $file2\n";
# print Dumper(\@panel_lex);
# print Dumper(\%Lexicon);
# exit 1;
}
}
$heading = "" unless defined $heading;
$description = "" unless defined $description;
# Get the base language code from $lang
my $base_lang = (split('-', $lang))[0];
my $loc_heading = process_localization( \%Lexicon, $heading, $lang, $prefix );
my $loc_description = process_localization( \%Lexicon, $description, $lang, $prefix );
$loc_heading =~ s/^\s*(\w.*?)\s*$/$1/;
$loc_description =~ s/^\s*(\w.*?)\s*$/$1/;
$rec->merge_props( # errors on split to $v (use DEBUG to see)
Heading => $loc_heading, if ($k and $v) {
Description => $loc_description, $k =~ s/\'//g;
HeadingWeight => localise( \%Lexicon, $heading_weight ), $v =~ s/\'//g;
DescriptionWeight => localise( \%Lexicon, $description_weight ), $v =~ s/,$//g;
MenuCat => (defined $menucat ? $menucat : 'A')); $Lexicon{ lc($k) } = $v;
} } else {
#warn "trying to close for lang $lang\n"; $k = "?" unless ($k);
my $navdb = $navdbs{$lang}; print STDERR "Error for $lang $file2 on $k \n" if DEBUG;
$navdb->close(); $top_error++;
} }
} ## end for (@panel_lex)
if ($top_error > 0) {
if (DEBUG) {
print STDERR "$top_error errors for $lang $file2\n";
# print Dumper(\@panel_lex);
# print Dumper(\%Lexicon);
# exit 1;
} ## end if (DEBUG)
} ## end if ($top_error > 0)
$heading = "" unless defined $heading;
$description = "" unless defined $description;
# Get the base language code from $lang
my $base_lang = (split('-', $lang))[0];
my $loc_heading = process_localization(\%Lexicon, $heading, $lang, $prefix);
my $loc_description = process_localization(\%Lexicon, $description, $lang, $prefix);
$loc_heading =~ s/^\s*(\w.*?)\s*$/$1/;
$loc_description =~ s/^\s*(\w.*?)\s*$/$1/;
$rec->merge_props(
Heading => $loc_heading,
Description => $loc_description,
HeadingWeight => localise(\%Lexicon, $heading_weight),
DescriptionWeight => localise(\%Lexicon, $description_weight),
MenuCat => (defined $menucat ? $menucat : 'A')
);
} ## end foreach my $file (@files)
#warn "trying to close for lang $lang\n";
my $navdb = $navdbs{$lang};
$navdb->close();
} ## end foreach my $lang (@langs)
sub localise { sub localise {
my ($lexicon, $string) = @_; my ($lexicon, $string) = @_;
#print("Looking up:".$string."\n"); #print("Looking up:".$string."\n");
$string = "" unless defined $string; $string = "" unless defined $string;
my $lc_string = lc($string); my $lc_string = lc($string);
my $res = $lexicon->{$lc_string} || $string; my $res = $lexicon->{$lc_string} || $string;
#print("Returning:".$res."\n"); #print("Returning:".$res."\n");
return $res; return $res;
} } ## end sub localise
# Subroutine to process localization # Subroutine to process localization
sub process_localization { sub process_localization {
@ -226,15 +215,17 @@ sub process_localization {
# Check the condition # Check the condition
if ($loc_heading eq $heading && $base_lang ne 'en') { if ($loc_heading eq $heading && $base_lang ne 'en') {
# Construct the new key by combining the prefix and the original heading # Construct the new key by combining the prefix and the original heading
my $key = $prefix . $heading; my $key = $prefix . $heading;
# Localize using the constructed key # Localize using the constructed key
$loc_heading = localise($lexicon_ref, $key); $loc_heading = localise($lexicon_ref, $key);
# See if it got a hit # See if it got a hit
if ($loc_heading eq $key){ if ($loc_heading eq $key) {
$loc_heading = $heading; $loc_heading = $heading;
} }
} } ## end if ($loc_heading eq $heading...)
return $loc_heading; # Optionally return the localized heading
return $loc_heading; # Optionally return the localized heading } ## end sub process_localization
}

View File

@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2
%define name smeserver-manager %define name smeserver-manager
Name: %{name} Name: %{name}
%define version 11.0.0 %define version 11.0.0
%define release 39 %define release 40
Version: %{version} Version: %{version}
Release: %{release}%{?dist} Release: %{release}%{?dist}
License: GPL License: GPL
@ -115,6 +115,9 @@ true
%defattr(-,root,root) %defattr(-,root,root)
%changelog %changelog
* Wed Jan 15 2025 Brian Read <brianr@koozali.org> 11.0.0-40.sme
- Comment out missing prefix message in navigation2-conf action and re-format it with perltidy [SME: 127672]
* Tue Jan 14 2025 Brian Read <brianr@koozali.org> 11.0.0-39.sme * Tue Jan 14 2025 Brian Read <brianr@koozali.org> 11.0.0-39.sme
- Apply perltidy to all Controller files, add .perltidy to directory and .gitignore for .tdy files (just incase) [SME: 12485] - Apply perltidy to all Controller files, add .perltidy to directory and .gitignore for .tdy files (just incase) [SME: 12485]