* 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:
parent
c1915a722b
commit
be49419eba
1
root/etc/e-smith/events/actions/.perltidyrc
Normal file
1
root/etc/e-smith/events/actions/.perltidyrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
-pbp -nst -nse -l=120 -ce -csc -pt=2 -kbl=0 -mbl=1 -lbl=1
|
@ -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
|
||||||
}
|
|
@ -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]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user