initial commit of file from CVS for smeserver-manager on Fri Mar 22 14:54:28 AEDT 2024

This commit is contained in:
Trevor Batley
2024-03-22 14:54:28 +11:00
parent eed507434f
commit db139626ba
242 changed files with 25308 additions and 2 deletions

View File

@@ -0,0 +1,109 @@
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 1999-2006 Mitel Networks Corporation
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#----------------------------------------------------------------------
package esmith;
use strict;
use constant DEBUG => 0;
use constant I18NMODULES => '/usr/share/smanager/lib/SrvMngr/I18N/Modules';
#-------------------------
# get locale modules list
#-------------------------
opendir DIR, I18NMODULES or die "Couldn't open ", I18NMODULES, "\n";
my @dirs = grep (/^[A-Z]/, readdir (DIR));
closedir DIR;
# put 'General' lexicon first
unshift @dirs, 'General';
foreach my $module (@dirs) {
next if (-f I18NMODULES . "/$module");
#-------------------------
# get lexicons list
#-------------------------
opendir DIR, I18NMODULES . "/$module" or die "Couldn't open ", I18NMODULES, "\n";
my @lexs = grep (/_.*\.lex$/, readdir (DIR));
closedir DIR;
foreach my $lex (@lexs) {
my $long_lex = I18NMODULES . "/$module/$lex";
next if (-d $long_lex);
# my ($mod, $lang) = split /[_.]/, $lex; # module name without '_'
my @elements = split /[_.]/, $lex;
next if ( scalar @elements < 3 );
my $mod = join( '_', @elements[0..(scalar @elements - 3)] );
my $lang = @elements[scalar @elements - 2];
next if ( $mod ne lc($module) );
$lang =~ s/-/_/;
my $long_pm = I18NMODULES . "/$module/$lang". '.pm';
if ( -f $long_pm ) {
# .pm file not newer than .lex
next if ((stat($long_lex))[9] < (stat($long_pm))[9]);
print "locales2: error cp\n" unless system("cp -f $long_pm ${long_pm}.svg") == 0;
}
open(FIL, '>:encoding(UTF-8)', $long_pm)
or die "Couldn't open ", $long_pm, " for writing.\n";
print FIL "package SrvMngr::I18N::Modules::${module}::${lang};\n";
print FIL "use strict;\nuse warnings;\nuse utf8;\nuse Mojo::Base 'SrvMngr::I18N';\n\n";
print FIL "use SrvMngr::I18N::Modules::General::${lang};\n\nmy %lexicon = (\n";
#--------------------
# copy lexicon to pm
#--------------------
open(FIL2, '<:encoding(UTF-8)', $long_lex)
or die "Couldn't open ", $long_lex, " for reading.\n";
while ( <FIL2> ) {
print FIL $_;
}
close FIL2;
print FIL ");\n\nour %Lexicon = (\n";
print FIL " %\{ SrvMngr::I18N::Modules::General::${lang}::Lexicon \},\n" unless $module eq 'General';
print FIL " %lexicon\n);\n\n\n1;\n";
close FIL;
#-------------------------
# eval and restore if NOT OK
#-------------------------
if ( eval "use lib '".I18NMODULES."/../../../'; require '$long_pm';" ) {
print "Lexicon $lang for $module ($lex) written to ${lang}.pm\n" if DEBUG;
if ( -f ${long_pm}.'.svg' ) {
print "locales2: error rm" unless system("rm -f ${long_pm}.svg") == 0;
}
} else {
print "ERROR: Lexicon $lang for $module ($lex) NOT written to ${lang}.pm\n$@\n";
if ( -f ${long_pm}.'.svg' ) {
print "locales2: error mv" unless system("mv -f ${long_pm}.svg $long_pm") == 0;
}
}
}
}

View File

@@ -0,0 +1,176 @@
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 1999-2006 Mitel Networks Corporation
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#----------------------------------------------------------------------
package esmith;
use strict;
use constant SMNGR_LIB => '/usr/share/smanager/lib';
use constant I18NMODULES => 'SrvMngr/I18N/Modules';
use constant WEBFUNCTIONS => 'SrvMngr/Controller';
use constant NAVDIR => '/home/e-smith/db';
use constant NAVIGATIONDIR => 'navigation2';
use constant DEBUG => 0;
use esmith::NavigationDB;
use esmith::I18N;
use Data::Dumper; # activate if DEBUG
my $navigation_ignore =
"(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm(-.*)?)";
my $i18n = new esmith::I18N;
my %navdbs;
opendir FUNCTIONS, SMNGR_LIB.'/'.WEBFUNCTIONS or
die "Couldn't open ", SMNGR_LIB.'/'.WEBFUNCTIONS, "\n";
my @files = grep (!/^${navigation_ignore}$/, readdir (FUNCTIONS));
closedir FUNCTIONS;
my @langs = $i18n->availableLanguages();
#my @langs = ('en', 'fr');
#print Dumper(\@langs);
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;
foreach my $file (@files)
{
next if (-d SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file");
# next unless ( $file =~ m/D.*\.pm$/ );
next unless ( $file =~ m/[A-Z].*\.pm$/ );
my $file2 = lc($file);
$file2 =~ s/\.pm$//;
#--------------------------------------------------
# extract heading, description and weight information
# from Mojo controller
#--------------------------------------------------
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;
while ( <SCRIPT> )
{
$heading = $1 if (/^\s*#\s*heading\s*:\s*(.+?)\s*$/);
$description = $1
if (/^\s*#\s*description\s*:\s*(.+?)\s*$/);
($heading_weight, $description_weight) = ($1, $2)
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);
# routes : end (stop before eof if 'menu' is not here before 'routes'!!!
$routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/);
last if (defined $routes and $routes eq 'end');
}
close SCRIPT;
print "updating script $file for lang $lang\n" if DEBUG;
my $navdb = $navdbs{$lang};
my $navinfo = NAVDIR.'/'.NAVIGATIONDIR . "/navigation.$lang";
$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;
}
my %Lexicon = ();
push(@panel_lex, @gen_lex);
my $top_error = 0;
chomp @panel_lex;
for (@panel_lex) {
next unless $_; # first one empty
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{ $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;
}
}
my $loc_heading = localise( \%Lexicon, $heading );
my $loc_description = localise( \%Lexicon, $description );
$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'));
}
#warn "trying to close for lang $lang\n";
my $navdb = $navdbs{$lang};
$navdb->close();
}
sub localise {
my ($lexicon, $string) = @_;
$string = "" unless defined $string;
return $lexicon->{$string} || $string;
}

View File

@@ -0,0 +1,82 @@
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 1999-2006 Mitel Networks Corporation
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#----------------------------------------------------------------------
package esmith;
use strict;
use esmith::ConfigDB;
use constant WEBFUNCTIONS => '/usr/share/smanager/lib/SrvMngr/Controller';
my $rtdb ||= esmith::ConfigDB->open('routes') or
die "Couldn't create Routes DB\n";
opendir DIR, WEBFUNCTIONS or
die "Couldn't open ", WEBFUNCTIONS, "\n";
my @files = grep (/^[A-Z].*\.pm$/, readdir (DIR));
closedir DIR;
foreach my $file (@files) {
next if (-d WEBFUNCTIONS . "/$file");
my $file2 = lc($file);
$file2 =~ s/\.pm$//;
#--------------------------------------------------
# extract method, url, action, name from controllers script
#--------------------------------------------------
open(SCRIPT, WEBFUNCTIONS . "/$file");
my $routes = undef;
my $method = undef;
my $url = undef;
my $ctlact = undef;
my $name = undef;
while ( <SCRIPT> ) {
# name : contrib, method : get, url : /contrib, ctlact : contrib#main
($name, $method, $url, $ctlact) = ($1, $2, $3, $4)
if (/^#\s*name\s*:\s*(.+?),\s*method\s*:\s*(.+?),\s*url\s*:\s*(.+?),\s*ctlact\s*:\s*(.+?)\s*$/);
# routes : end
$routes = $1 if (/^\s*#\s*routes\s*:\s*(.+?)\s*$/);
last if (defined $routes and $routes eq 'end');
if (defined $method and defined $url and
defined $ctlact and defined $name) {
my $key = $file2.'+'.$name;
my $rec = $rtdb->get($key) ||
$rtdb->new_record($key, { type => 'route' } );
$rec->merge_props(
Url => $url,
Method => $method,
Ctlact => $ctlact
)
}
}
close SCRIPT;
}