initial commit of file from CVS for smeserver-manager on Fri Mar 22 14:54:28 AEDT 2024
This commit is contained in:
109
root/etc/e-smith/events/actions/locales2-conf
Normal file
109
root/etc/e-smith/events/actions/locales2-conf
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
176
root/etc/e-smith/events/actions/navigation2-conf
Normal file
176
root/etc/e-smith/events/actions/navigation2-conf
Normal 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;
|
||||
}
|
82
root/etc/e-smith/events/actions/routes2-conf
Normal file
82
root/etc/e-smith/events/actions/routes2-conf
Normal 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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user