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
	 Trevor Batley
					Trevor Batley