* 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:
		
							
								
								
									
										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 | ||||
|  | ||||
| #---------------------------------------------------------------------- | ||||
| # 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 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 constant DEBUG         => 0; | ||||
| use esmith::NavigationDB; | ||||
| use esmith::I18N; | ||||
|  | ||||
| use Data::Dumper;	# activate if DEBUG | ||||
|  | ||||
| use Data::Dumper;    # activate if DEBUG | ||||
| binmode(STDOUT, ":encoding(UTF-8)"); | ||||
|  | ||||
| my $navigation_ignore =  | ||||
| 	"(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm(-.*)?)"; | ||||
|  | ||||
| my $i18n = new esmith::I18N; | ||||
|  | ||||
| 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)); | ||||
| 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 = $i18n->availableLanguages();  | ||||
| #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) | ||||
| { | ||||
| 	my $long_lex = SMNGR_LIB.'/'.I18NMODULES."/General/general_$lang.lex"; | ||||
| 	next unless ( -e $long_lex ); | ||||
|         #        next unless ( $file =~ m/D.*\.pm$/ ); | ||||
|         next unless ($file =~ m/[A-Z].*\.pm$/); | ||||
|         my $file2 = lc($file); | ||||
|         $file2 =~ s/\.pm$//; | ||||
|  | ||||
| 	open(LEX, '<:encoding(UTF-8)', $long_lex) | ||||
| 		 or die "Couldn't open ", $long_lex, " for reading.\n"; | ||||
| 	my @gen_lex = <LEX>; | ||||
| 	close LEX; | ||||
|         #-------------------------------------------------- | ||||
|         # 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; | ||||
|  | ||||
| 	#my @files = ('Portforwarding.pm');  #Temp override | ||||
| 	foreach my $file (@files) | ||||
| 	{ | ||||
| 		next if (-d SMNGR_LIB.'/'.WEBFUNCTIONS . "/$file"); | ||||
| 		#        next unless ( $file =~ m/D.*\.pm$/ ); | ||||
| 			next unless ( $file =~ m/[A-Z].*\.pm$/ ); | ||||
|         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); | ||||
|  | ||||
| 		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; | ||||
|             # 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'); | ||||
|         } ## end while (<SCRIPT>) | ||||
|         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"; | ||||
|  | ||||
| 		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*$/); | ||||
|         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; | ||||
|         } ## end if (-e $long_lex) | ||||
|  | ||||
| 			last if (defined $heading and  | ||||
| 			defined $description and | ||||
| 			defined $heading_weight and | ||||
| 			defined $description_weight and | ||||
| 			defined $menucat); | ||||
|         #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!! | ||||
|  | ||||
| 			# 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; | ||||
|         while ($i < @keys) {               # Loop until we run out of entries | ||||
|             my $extracted_value = $keys[$i] || "";    # The current entry | ||||
|                                                       #print("Extracted val: ".$extracted_value."\n"); | ||||
|  | ||||
| 		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; | ||||
| 		} | ||||
| 		#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!! | ||||
|             # Extract prefix from the second value (up to and including the first underscore) | ||||
|             #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 | ||||
|  | ||||
| 		while ($i < @keys) {          # Loop until we run out of entries | ||||
| 			my $extracted_value = $keys[$i] || "";  # The current entry | ||||
| 			#print("Extracted val: ".$extracted_value."\n"); | ||||
|             if (defined $prefix) { | ||||
|                 $found = 1;                                # Set found flag to true | ||||
|                 last;                                      # Exit the loop if prefix is found | ||||
|             } else { | ||||
|  | ||||
| 			# Extract prefix from the second value (up to and including the first underscore) | ||||
| 			#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 | ||||
| 			 | ||||
| 			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"); | ||||
| 			} | ||||
|                 #print("Extracted Val: " . $extracted_value . "\n"); | ||||
|             } | ||||
|             $i++;                                          # Increment the index to check the next entry | ||||
|         } ## end while ($i < @keys) | ||||
|  | ||||
| 			$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(STDERR "No valid prefix found in any entries: ".$file2." (".$lang.")\n"); # if DEBUG; | ||||
| 			$prefix = "xx_";			  # Probably never match!! | ||||
| 			 | ||||
| 		} | ||||
| 		#print("Prefix: ".$prefix." ".$file2." (".$lang.")\n"); | ||||
| 		 | ||||
| 		my %Lexicon = (); | ||||
| 		push(@panel_lex, @gen_lex); | ||||
| 		my $top_error = 0; | ||||
|         #print("Prefix: ".$prefix." ".$file2." (".$lang.")\n"); | ||||
|         my %Lexicon = (); | ||||
|         push(@panel_lex, @gen_lex); | ||||
|         my $top_error = 0; | ||||
|         chomp @panel_lex; | ||||
|  | ||||
| 		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{ 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/; | ||||
|         for (@panel_lex) { | ||||
|             next unless $_;     # first one empty | ||||
|             my ($k, $v) = split / => /, $_; | ||||
|  | ||||
| 		$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(); | ||||
| } | ||||
|             #	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++; | ||||
|             } | ||||
|         } ## 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 { | ||||
|     my ($lexicon, $string) = @_; | ||||
|  | ||||
|     #print("Looking up:".$string."\n"); | ||||
|     $string  = "" unless defined $string; | ||||
|     $string = "" unless defined $string; | ||||
|     my $lc_string = lc($string); | ||||
|     my $res = $lexicon->{$lc_string} || $string; | ||||
|     my $res       = $lexicon->{$lc_string} || $string; | ||||
|  | ||||
|     #print("Returning:".$res."\n"); | ||||
|     return $res; | ||||
| } | ||||
| } ## end sub localise | ||||
|  | ||||
| # Subroutine to process localization | ||||
| sub process_localization { | ||||
| @@ -226,15 +215,17 @@ sub process_localization { | ||||
|  | ||||
|     # Check the condition | ||||
|     if ($loc_heading eq $heading && $base_lang ne 'en') { | ||||
|  | ||||
|         # Construct the new key by combining the prefix and the original heading | ||||
|         my $key = $prefix . $heading; | ||||
|  | ||||
|         # Localize using the constructed key | ||||
|         $loc_heading = localise($lexicon_ref, $key); | ||||
|  | ||||
|         # See if it got a hit | ||||
|         if ($loc_heading eq $key){ | ||||
| 			$loc_heading = $heading; | ||||
| 		} | ||||
|     } | ||||
|      | ||||
|     return $loc_heading; # Optionally return the localized heading | ||||
| } | ||||
|         if ($loc_heading eq $key) { | ||||
|             $loc_heading = $heading; | ||||
|         } | ||||
|     } ## end if ($loc_heading eq $heading...) | ||||
|     return $loc_heading;    # Optionally return the localized heading | ||||
| } ## end sub process_localization | ||||
		Reference in New Issue
	
	Block a user