#============================================================ # MyPluginApplication #============================================================ package MyPluginApplication; use MyApplication; @ISA = qw(MyApplication); use strict; use SQLDB; #========================================== # 大域変数 #========================================== my $DefaultSendmail = '/usr/sbin/sendmail'; my $SourceCharCode = Jcode::getcode('月火水木金土日 '); #============================================================ # 静的関数 #============================================================ sub LoadModule { my ($Dir, $Module) = @_; my ($drive, $directory, $filename, $ext1, $lastdir, $filebody) = Deps::SplitFilePath($ENV{SCRIPT_FILENAME}); my $path = Utils::MakePath("$drive$directory", [$Dir, "$Module.pm"], '/', 0); $path = Utils::ReduceDirectory($path, '/'); #Utils::InitHTML(); #print("$ENV{SCRIPT_FILENAME}
\n"); #print("D[$Dir]
\n"); #print("P[$path
]\n"); if(-f $path) { require $path; } else { Utils::InitHTML(); print("

Error in MyPluginApplication::LoadModule: Can not find file [$path].

\n"); return -1; } return 1; } #============================================================ # 変数等取得関数 #============================================================ #============================================================ # コンストラクタ、デストラクタ #============================================================ BEGIN { } sub new { my ($module, $app) = @_; my $this = {}; bless $this; # $this->SUPER::new(@_); return $this; } sub DESTROY { my $this = shift; # $this->SUPER::DESTROY(@_); } #============================================================ # 継承クラスで定義しなおす関数 #============================================================ #============================================================ # 一般関数 #============================================================ sub SearchModules { my ($this, $PluginDir) = @_; my @files = glob(Deps::MakePath($PluginDir, "*.pm", 0)); my @Modules; foreach my $f (@files) { my $ModuleName = Deps::ExtractFileBody($f); next if($ModuleName =~ /^(\$~|~)/); push(@Modules, $ModuleName); } return @Modules; } sub UpdateModuleParams { my ($App, $pParams) = @_; foreach my $pm ($App->{pAdminModules}, $App->{pUserModules}, $App->{pNoLogonModules}) { #$App->print("pm=$pm\n"); next if(!defined $pm); for(my $i = 0 ; $i < @$pm ; $i++) { my $m = $App->{'p' . $pm->[$i]}; next if(!$m); #$App->print("m=$m [$pm->[$i]]\n"); $m->OnInitialized($App, $pParams) if($m->can('OnInitialized')); } } } sub LoadModulesInADirectory { my ($this, $pParams, $Type, $PluginDir, $pModules, $pModuleInf, $pLoadedModuleHash, $OnlyLoadModules, $pExcludeModules) = @_; #$this->print("PluginDir [$PluginDir]\n"); return if(!defined $PluginDir); if(!-d $PluginDir) { $this->H3("Warning in MyPluginApplication::LoadModulesInADirectory: Plugin dir [$PluginDir] is not found.\n"); return undef; } my @files = glob(Deps::MakePath($PluginDir, "*.pm", 0)); foreach my $f (@files) { my $ModuleName = Deps::ExtractFileBody($f); #$this->print("Try loading [$ModuleName].. Only=[$OnlyLoadModules] Excluded=[", join(',', %$pExcludeModules), "]\n"); next if($OnlyLoadModules ne '' and $OnlyLoadModules !~ /,$ModuleName,/i); #$this->print("1\n"); next if($ModuleName =~ /^(\$~|~)/); #$this->print("2\n"); next if($pLoadedModuleHash->{$ModuleName}); #$this->print("3\n"); next if($pExcludeModules->{$ModuleName}); #$this->print(" => Load $ModuleName\n"); $f =~ s/\\/\//g; require $f; # my $pModule = $this->{"p$ModuleName"} = eval("new $ModuleName"); my $pModule = $this->{"p$ModuleName"} = $ModuleName->new(); $pLoadedModuleHash->{$ModuleName}++; if(1) { $pParams->{PrevFunction} = "MyPluginApplication::LoadModules AdminPlugin"; Utils::MergeHash($this->pParams(), $pModule->GetParameterHash($this, $this->pParams())) if($pModule->can('GetParameterHash')); } else { $this->print("M: $ModuleName: GetParameterHash not exisits\n"); } $pModule->OnLoad($this, $this->pParams()) if($pModule->can('OnLoad')); push(@$pModules, $ModuleName); my %inf = ( Name => $ModuleName, Path => $PluginDir, Type => $Type, ); push(@$pModuleInf, \%inf); } return $pModules; } sub GetModuleDirs { my ($App, $pParams, $key, $dir) = @_; my $DirKey = "p${key}PluginDirs"; return $App->{DirKey} if($App->{DirKey}); my $root = $pParams->{BinRootDir}; $root =~ s/\\/\//g; $root =~ s/\/$//; my $RootRegExp = Utils::RegExpQuote($root); #$App->print("root[$root]\n"); $dir =~ s/\\/\//g; $dir =~ s/\/$//; #$App->print("dir[$dir]\n"); my @keys; if($key eq 'Admin') { my $d = $pParams->{ExtraModuleDirs}; push(@keys, $d) if($d); $d = $pParams->{ExtraAdminModuleDirs}; push(@keys, $d) if($d); } elsif($key eq 'User') { my $d = $pParams->{ExtraUserModuleDirs}; #$App->print("ud[$d]\n"); push(@keys, $d) if($d); } elsif($key eq 'NoLogon') { my $d = $pParams->{ExtraNoLogonModuleDirs}; push(@keys, $d) if($d); } push(@keys, $key); my @dirs; while(1) { # last if($dir !~ /^$RootRegExp/i or $dir eq $root); last if($dir !~ /^$RootRegExp/i); my ($parent, $lastdir) = ($dir =~ /^(.*)\/([^\/]+?)$/); last if(!$lastdir); if($lastdir eq $key) { $dir = $parent; next; } for(my $i = 0 ; $i < @keys ; $i++) { my $d = Utils::MakePath($dir, $keys[$i], '/', 0); #$App->print("[$key] $i [$d]\n"); push(@dirs, $d) if($lastdir eq $key or -e $d); } $dir = $parent; } for(my $i = 0 ; $i < @keys ; $i++) { my $d = Utils::MakePath($pParams->{CommonFileRootDir}, $keys[$i], '/', 0); #$App->print("[$key] $i [$d]\n"); push(@dirs, $d) if(-e $d); } #for(my $i = 0 ; $i < @dirs ; $i++) { #$App->print("[$key] $i: $dirs[$i]\n"); #} return $App->{$DirKey} = \@dirs; } sub LoadModules { my ($this, $AdminPluginDir, $UserPluginDir, $UpdateParams) = @_; my $NoLogonPluginDir; if($UpdateParams =~ /[^\d]/) { ($this, $AdminPluginDir, $UserPluginDir, $NoLogonPluginDir, $UpdateParams) = @_; } my $pParams = $this->pParams(); my $OnlyLoadModules = ($pParams->{OnlyLoadModules} eq '')? '' : ',' . $pParams->{OnlyLoadModules} . ','; my %ExcludeModules = $this->GetExcludeModulesHash($pParams); $this->{pAdminModules} = [] if(!$this->{pAdminModules}); $this->{pUserModules} = [] if(!$this->{pUserModules}); $this->{pNoLogonModules} = [] if(!$this->{pNoLogonModules}); $this->{pModuleInf} = [] if(!$this->{pModuleInf}); $this->{pLoadedModuleHash} = {} if(!$this->{pLoadedModuleHash}); # my @AdminModules = ($this->{pAdminModules})? @{$this->{pAdminModules}} : (); # my @UserModules = ($this->{pUserModules})? @{$this->{pUserModules}} : (); # my @NoLogonModules = ($this->{pNoLogonModules})? @{$this->{pNoLogonModules}} : (); my $pAdminModuleDirs = $this->GetModuleDirs($pParams, 'Admin', $AdminPluginDir); for(my $i = 0 ; $i < @$pAdminModuleDirs ; $i++) { $this->LoadModulesInADirectory($pParams, 'Admin', $pAdminModuleDirs->[$i], $this->{pAdminModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } my $pUserModuleDirs = $this->GetModuleDirs($pParams, 'User', $UserPluginDir); for(my $i = 0 ; $i < @$pUserModuleDirs ; $i++) { $this->LoadModulesInADirectory($pParams, 'User', $pUserModuleDirs->[$i], $this->{pUserModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } my $pNoLogonModuleDirs = $this->GetModuleDirs($pParams, 'NoLogon', $NoLogonPluginDir); for(my $i = 0 ; $i < @$pNoLogonModuleDirs ; $i++) { $this->LoadModulesInADirectory($pParams, 'NoLogon', $pNoLogonModuleDirs->[$i], $this->{pNoLogonModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } if(0) { if($pParams->{ExtraModuleDirs}) { my @dirs = Utils::Split("[\\s,]+", $pParams->{ExtraModuleDirs}); for(my $i = 0 ; $i < @dirs ; $i++) { my $PersonalPluginDir = $AdminPluginDir; $PersonalPluginDir =~ s/\/Admin$/\/$dirs[$i]/; $this->LoadModulesInADirectory($pParams, 'Admin', $PersonalPluginDir, $this->{pAdminModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } } if($pParams->{ExtraAdminModuleDirs}) { my @dirs = Utils::Split("[\\s,]+", $pParams->{ExtraAdminModuleDirs}); for(my $i = 0 ; $i < @dirs ; $i++) { my $PersonalPluginDir = $AdminPluginDir; $PersonalPluginDir =~ s/\/Admin$/\/$dirs[$i]/; $this->LoadModulesInADirectory($pParams, 'Admin', $PersonalPluginDir, $this->{pAdminModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } } $this->LoadModulesInADirectory($pParams, 'Admin', $AdminPluginDir, $this->{pAdminModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); my $dir = Utils::MakePath($pParams->{CommonFileRootDir}, 'Admin', '/', 0); #$this->print("d[$dir][$pParams->{CommonFileRootDir}]\n"); $this->LoadModulesInADirectory($pParams, 'Admin', $dir, $this->{pAdminModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); if($pParams->{ExtraUserModuleDirs}) { my @dirs = Utils::Split("[\\s,]+", $pParams->{ExtraUserModuleDirs}); for(my $i = 0 ; $i < @dirs ; $i++) { my $PersonalPluginDir = $UserPluginDir; $PersonalPluginDir =~ s/\/User$/\/$dirs[$i]/; $this->LoadModulesInADirectory($pParams, 'User', $PersonalPluginDir, $this->{pUserModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } } $this->LoadModulesInADirectory($pParams, 'User', $UserPluginDir, $this->{pUserModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); $dir = Utils::MakePath($pParams->{CommonFileRootDir}, 'User', '/', 0); $this->LoadModulesInADirectory($pParams, 'User', $dir, $this->{pUserModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); if($pParams->{ExtraNoLogonModuleDirs}) { my @dirs = Utils::Split("[\\s,]+", $pParams->{ExtraNoLogonModuleDirs}); for(my $i = 0 ; $i < @dirs ; $i++) { my $PersonalPluginDir = $AdminPluginDir; $PersonalPluginDir =~ s/\/Admin$/\/$dirs[$i]/; $this->LoadModulesInADirectory($pParams, 'NoLogon', $PersonalPluginDir, $this->{pNoLogonModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } } $this->LoadModulesInADirectory($pParams, 'NoLogon', $NoLogonPluginDir, $this->{pNoLogonModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); $dir = Utils::MakePath($pParams->{CommonFileRootDir}, 'NoLogon', '/', 0); $this->LoadModulesInADirectory($pParams, 'NoLogon', $dir, $this->{pNoLogonModules}, $this->{pModuleInf}, $this->{pLoadedModuleHash}, $OnlyLoadModules, \%ExcludeModules); } my %NoLogonModuleHash; my $p = $this->{pNoLogonModules}; for(my $i = 0 ; $i < @$p ; $i++) { my $name = $p->[$i]; $NoLogonModuleHash{$name} = 1; } $this->{pNoLogonModuleHash} = \%NoLogonModuleHash; $this->MergeModuleParameters($this->{pParams}) if($UpdateParams); } sub MergeAModuleParameters { my ($this, $pParams, $pModules, $ModuleDescription) = @_; return if(!$pModules); foreach my $m (@$pModules) { my $p = $this->{"p$m"}; if($p) { if($p->can("GetParameterHash")) { $pParams->{PrevFunction} = "MyCGIApplication::MergeModuleParameters AdminPlugin"; Utils::MergeHash($pParams, $p->GetParameterHash($this, $pParams)); } } else { $this->H3("Error: Can not find the $ModuleDescription [$m]"); } } } sub MergeModuleParameters { my ($this, $pParams) = @_; return if($this->{nModuleParametersLoaded}); $this->{nModuleParametersLoaded}++; my $pAdminModules = ($this->{pAdminModules})? $this->{pAdminModules} : $pParams->{pAdminModules}; $this->MergeAModuleParameters($pParams, $pAdminModules, 'AdminModule'); my $pUserModules = ($this->{pUserModules})? $this->{pUserModules} : $pParams->{pUserModules}; $this->MergeAModuleParameters($pParams, $pUserModules, 'UserModule'); my $pNoLogonModules = ($this->{pNoLogonModules})? $this->{pNoLogonModules} : $pParams->{pNoLogonModules}; $this->MergeAModuleParameters($pParams, $pNoLogonModules, 'NoLogonModule'); } sub nOpenAdminModules { my ($this, $pParams) = @_; my $pAdminModules = $this->{pAdminModules}; return 0 if(!defined $pAdminModules); #Utils::InitHTML(); my $n = 0; my %Loaded; foreach my $m (@$pAdminModules) { if($this->{"p$m"}->can("IsOpen")) { # if(defined &{"$m::IsOpen"}) { my $ret = $this->{"p$m"}->IsOpen($this, $pParams, 0); $n++ if($ret); #$this->print("$n: $m [$ret]\n"); } } return $n; } sub IsModuleIncluded { my ($this, $ModuleName, $pModules) = @_; for(my $i = 0 ; $i < @$pModules ; $i++) { return 1 if($ModuleName eq $pModules->[$i]); } return 0; } sub GetExcludeModulesArray { my ($App, $pParams) = @_; #$App->print("EE[$pParams->{ExcludeModules}]\n"); my @em = ($pParams->{ExcludeModules} eq '')? () : Utils::Split("[\\n\\r,]+", $pParams->{ExcludeModules}); #foreach my $key (sort @em) { # $App->print("excl:[$key]\n"); #} my $DB = $App->DB(); return @em if(!$DB); $DB->Search($pParams->{DBVariablesTableName}, "VarName='ExcludeModules' order by sn", ""); my $nHit = $DB->nHit(); return @em if($nHit == 0); my %Hit = $DB->GetNextHit(); my @em = Utils::Split("[\\n\\r,]+", $Hit{Value}); return @em; } sub GetExcludeModulesHash { my ($App, $pParams) = @_; my @em = $App->GetExcludeModulesArray($pParams); my %ExcludeModules; for(my $i = 0 ; $i < @em ; $i++) { #$App->print("H: [$em[$i]]\n"); $ExcludeModules{$em[$i]}++; } return %ExcludeModules; } sub ShowAMenu { my ($App, $pParams, $m, $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post, %args) = @_; $MenuMode = ($pParams->{MenuMode})? $pParams->{MenuMode} : $App->MenuMode() if(!defined $MenuMode); $FrameMode = $App->GetFrameMode() if(!defined $FrameMode); $pre = '' if(!defined $pre); $post = '' if(!defined $post); return if(!$App->{"p$m"} or !$App->{"p$m"}->can("ShowMenu")); #$App->print("m[$m]\n"); my $pModule = $App->{"p$m"}; my $s = $App->GetMenuString($pModule, $pParams, $ProgramPath, $BaseOption, $pre, $post); return if($s eq ''); $s =~ s/\<\/?span[^\>]*\>/\n/g; my @menus = Utils::Split("\\n", $s); for(my $i2 = 0 ; $i2 < @menus ; $i2++) { my $m2 = $menus[$i2]; $m2 =~ s/\<\/?span[^\>]*\>//g; $m2 =~ s/\]*\>//g; Utils::DelSpace($m2); if($m2 ne '' and $MenuMode =~ /superfish/i) { if($args{style}) { $m2 =~ s/\>/ style=\"$args{style}\"\>/; } #$App->print("m2[$m2]\n"); # $App->PrintItem($m2); $App->BeginItemElement($m2); if($i2 == 0) { my $s2 = $App->GetSubMenuString($pModule, $pParams, $ProgramPath, $BaseOption, $pre, $post); $s2 =~ s/\<\/?span[^\>]*\>/\n/g; my @menus3 = Utils::Split("\\n", $s2); $App->BeginItem(0, style => 'border: none; background-color: #FFFFFF; margin-top: 0px; padding-top: 0px;') if(@menus3 > 0); for(my $i3 = 0 ; $i3 < @menus3 ; $i3++) { my $m3 = $menus3[$i3]; $m3 =~ s/\<\/?span[^\>]*\>//g; $m3 =~ s/\]*\>//g; Utils::DelSpace($m3); #$App->print("m3[$m3]\n"); $App->PrintItem($m3) if($m3 ne ''); } $App->EndItem() if(@menus3 > 0); } #$App->print(" m2[$m2] end\n"); $App->EndItemElement(); } elsif($m2 ne '') { $App->PrintRawHTML("$pre$m2$post\n"); } $App->print("\n") if($FrameMode =~ /cols/i); } } sub ShowUserModuleMenus { my ($App, $pParams, $ProgramPath, $BaseOption, $pModuleOrder, $FrameMode, $pre, $post) = @_; #$this->print("UO: ", join(', ', @$pModuleOrder), "\n"); #$App->print("mm[$pParams->{MenuMode}]\n"); my $MenuMode = ($pParams->{MenuMode})? $pParams->{MenuMode} : $App->MenuMode(); my $pUserModules = $App->{pUserModules}; $FrameMode = $App->GetFrameMode() if(!defined $FrameMode); return if(!defined $pUserModules); my %Loaded; if($pModuleOrder) { for(my $i = 0 ; $i < @$pModuleOrder ; $i++) { my $m = $pModuleOrder->[$i]; if($App->{"p$m"} and $App->IsModuleIncluded($m, $pUserModules)) { #$this->print("User module[$i]: [$m]\n"); $App->ShowAMenu($pParams, $m, $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post); $Loaded{"p$m"}++; } } } foreach my $m (@$pUserModules) { next if($Loaded{"p$m"}); #print "m2=$m\n"; $App->ShowAMenu($pParams, $m, $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post); } } sub ShowAdminModuleMenus { my ($App, $pParams, $ProgramPath, $BaseOption, $pModuleOrder, $FrameMode, $pre, $post) = @_; my $MenuMode = ($pParams->{MenuMode})? $pParams->{MenuMode} : $App->MenuMode(); my $pAdminModules = $App->{pAdminModules}; $FrameMode = $App->GetFrameMode() if(!defined $FrameMode); return if(!defined $pAdminModules); $pre = '' if(!defined $pre); $post = '' if(!defined $post); my %Loaded; if($pModuleOrder) { for(my $i = 0 ; $i < @$pModuleOrder ; $i++) { my $m = $pModuleOrder->[$i]; if($App->{"p$m"} and $App->IsModuleIncluded($m, $pAdminModules)) { $App->ShowAMenu($pParams, $m, $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post); $Loaded{"p$m"}++; } } } foreach my $m (@$pAdminModules) { next if($Loaded{"p$m"}); $App->ShowAMenu($pParams, $m, $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post); } } sub ShowMenu { my ($App, $pParams, $EMail, $Password) = @_; return if($pParams->{NoMenu} or $pParams->{DoNotShowMenu}); return if($pParams->{Action} =~ /^NoLogon\w+::\w+$/); $App->print(""); #$App->print("Action: $pParams->{Action} EM=$pParams->{ExtendedMenu}\n"); # $pParams = $App->BuildParameterHash(); $pParams = $App->pParams(); my $MenuMode = ($pParams->{MenuMode})? $pParams->{MenuMode} : $App->MenuMode(); my $ProgramPath = $pParams->{ScriptPath}; my $ShowMenuButtons = (defined $pParams->{ShowMenuButtons})? $pParams->{ShowMenuButtons} : 1; #$App->print("s: $ShowMenuButtons\n"); #$App->print("MM: $MenuMode\n"); if($MenuMode =~ /superfish/i) { print < EOT } my ($year, $mon, $mday, $hour, $min, $sec, $year, $wday, $yday, $isdst) = Utils::GetDateTime(time(), 0); $pParams->{Year} = $year if(!defined $pParams->{Year} or $pParams->{Year} =~ /\{/); $pParams->{Month} = $mon if(!defined $pParams->{Month} or $pParams->{Month} =~ /\{/); $pParams->{Day} = $mday if(!defined $pParams->{Day} or $pParams->{Day} =~ /\{/); my $Year = $pParams->{Year}; my $Month = $pParams->{Month}; my $Day = $pParams->{Day}; my $Apparatus = $pParams->{App}; $EMail = $pParams->{EMail} if($EMail eq ''); $Password = $pParams->{Password} if($Password eq ''); my $Action = $pParams->{Action}; if($pParams->{Action} eq 'ChangeApparatus') { $Action = $pParams->{PrevAction}; } my $FrameMode = ($App->can('GetFrameMode'))? $App->GetFrameMode() : 0; # $pParams->{IsChildFrame} = 0; my ($BaseOption, $target) = $App->GetCGIParameters( { # PrevAction => $pParams->{Action}, }, [qw(EMail Password ShowAll ExtendedMenu UseFrame IsChildFrame DBConfigName File Path Year Month Day)]); # undef); # $target = '_top'; # $target = 'Main'; # undef $target; my $url = "$pParams->{ScriptPath}?Action=$pParams->{Action}&$BaseOption&App=$pParams->{Apparatus}&Language="; my $LanguageSelectFormString = ($ShowMenuButtons)? $App->GetLanguageSelectFormString(onChange => "ChangePage(document.LangSelect.Language, '$url')" ) : $App->GetLanguageSelectFormString(onChange => "ChangePage(document.LangSelect.Language, '$url')" ); # $App->GetLanguageSelectFormString(onChange => 'ChangeAppLanguage(document.LangSelect.Language)') : # $App->GetLanguageSelectFormString(onChange => 'ChangeAppLanguage(document.LangSelect.Language)'); # $App->GetLanguageSelectFormString(class => 'Language', onChange => 'ChangeAppLanguage(document.Language)'); #$App->print("LSF[$LanguageSelectFormString]\n"); my $nLanguage = $App->GetnLanguage(); my $nAdminModules = $App->nOpenAdminModules($pParams); my @Apparatus = ($App->can('GetAllowedApparatuses'))? $App->GetAllowedApparatuses($EMail) : (); $url = "$pParams->{ScriptPath}?Action=$pParams->{Action}&$BaseOption&Language=$pParams->{Language}&App="; my $AppSelectFormString = ($App->can('GetApparatusSelectionFormString'))? $App->GetApparatusSelectionFormString($pParams, "App", $pParams->{App}, undef, onChange => "ChangePage(document.AppSelect.App, '$url')" ) : ''; # onChange => 'ChangeApparatus(document.AppSelect.App)') : ''; #$App->print("AA: [", join(',', @Apparatus), "]\n"); #$App->print("S: [$SelectStr]\n"); ($BaseOption, $target) = $App->GetCGIParameters( { PrevAction => $pParams->{Action}, }, [qw(EMail Password App Language ShowAll ExtendedMenu UseFrame IsChildFrame DBConfigName File Path Year Month Day)]); #$App->print("L[$pParams->{Language}]\n"); #$App->print("B[$BaseOption]\n"); my $pUserModuleLoadOrder = $pParams->{pUserPluginLoadOrder}; $pUserModuleLoadOrder = [] if(!defined $pUserModuleLoadOrder); my $pAdminModuleLoadOrder = $pParams->{pAdminPluginLoadOrder}; $pAdminModuleLoadOrder = [] if(!defined $pAdminModuleLoadOrder); my $ExtendedMenu = $pParams->{ExtendedMenu}; my $ExtendedMenuOriginal = $pParams->{ExtendedMenu}; # $pParams->{ExtendedMenu} = ! $pParams->{ExtendedMenu}; # $pParams->{ExtendedMenu} = $ExtendedMenuOriginal; $ExtendedMenu = 0 if($nAdminModules == 0); my $ExtendedMenuMode = (defined $pParams->{ExtendedMenuMode})? $pParams->{ExtendedMenuMode} : 'extend'; #$App->print("E: $ExtendedMenu\n"); my $ShowAll = $pParams->{ShowAll}; my ($MainPre, $MainPost, $pre, $post) = $App->GetMainMenuKeys($pParams); if($MenuMode eq 'css') { # $App->BeginMenu('MainMenu'); $App->PrintRawHTML($MainPre); } elsif($MenuMode =~ /superfish/i) { } else { if(($nLanguage > 1 or @Apparatus > 1)) { # if($ShowMenuButtons and ($nLanguage > 1 or @Apparatus > 1)) { $App->PrintRawHTML("
{ScriptPath}\" target=\"_self\">\n"); } } #$App->print("ExtendedMenuMode: [$ExtendedMenuMode] nLanguage=$nLanguage FrameMode=$FrameMode MenuMode=$MenuMode pre=$pre post=$post\n"); # if($nLanguage > 1) { # $App->PrintRawHTML("{ScriptPath}\" target=\"_self\">\n"); # } #Start Page # $App->PrintRawHTML("{ScriptPath}?Action=ShowStartPage&$BaseOption\" target=\"$target\">StartPage \n"); # ($MenuMode ne 'css' and $FrameMode =~ /cols/i)? $App->print("\n") : $App->print(" "); #Utils::InitHTML(); if($MenuMode =~ /superfish/i) { $App->BeginItem(0, class => 'sf-menu', style => 'border: none; background-color: #FFFFFF; margin-top: 0px; padding-top: 0.5px;'); } if($ExtendedMenuMode eq 'extend' or !$ExtendedMenu) { $App->ShowUserModuleMenus($pParams, $ProgramPath, $BaseOption, $pUserModuleLoadOrder, undef, $pre, $post . "$pre $post"); # $App->ShowUserModuleMenus($App->pParams(), $pParams->{ScriptPath}, $BaseOption, $pUserModuleLoadOrder, $FrameMode); if($FrameMode =~ /cols/i) { $App->print("") if($MenuMode eq 'css'); } else { $App->print(" ") if($MenuMode !~ /css/i); } } my $target = ($pParams->{IsChildFrame})? 'Menu' : '_self'; if($nAdminModules > 0) { if($MenuMode =~ /css/i) { } else { $App->print(" "); } if($ExtendedMenu) { $App->ShowAdminModuleMenus($pParams, $ProgramPath, $BaseOption, $pAdminModuleLoadOrder, undef, $pre, $post . "$pre $post"); if($MenuMode =~ /superfish/i) { # $App->BeginItemElement("<<\n"); $App->PrintItem("<<\n"); } else { $App->PrintRawHTML("$pre<<$post\n"); } } else { if($MenuMode =~ /superfish/i) { # $App->BeginItemElement("<<\n"); $App->PrintItem(">>\n"); } else { $App->PrintRawHTML("$pre>>$post\n"); } } if($MenuMode =~ /css/i) { } else { $App->print(" "); } } if($MenuMode =~ /css/i) { } else { $App->print(" "); } if($FrameMode =~ /cols/i) { $App->print("\n") if($MenuMode !~ /css/i); } else { $App->print(" ") if($MenuMode !~ /css/i); } my $target = ($pParams->{IsChildFrame})? '_top' : '_self'; if($MenuMode =~ /superfish/i) { $App->PrintItem("{Language}\" target=\"$target\">logout\n"); } else { $App->PrintRawHTML("$pre{Language}\" target=\"$target\">logout$post\n"); } # 対象選択ボックスの表示 my $BaseOption = $App->BuildCGIOption( { PrevAction => $pParams->{Action}, Action => 'Schedule::ViewMonth', }, [qw(Action EMail Password Year Month Day DBConfigName ExtendedMenu ShowAll PrevAction -App)], ); if($MenuMode eq 'css') { my $JSChangeApparatusString =JSParams->new()->GetJSChangePageString(); # my $JSChangeApparatusString =JSParams->new()->GetJSChangeApparatusString("$pParams->{ScriptPath}?$BaseOption&Language=$pParams->{Language}&App="); # $BaseOption =~ s/&Language=.*&/&/; my $JSChangeLanguageString =''; #JSParams->new()->GetJSChangePageString("$pParams->{ScriptPath}?$BaseOption&App=$pParams->{App}&Language="); # my $JSChangeLanguageString =JSParams->new()->GetJSChangeLanguageString("$pParams->{ScriptPath}?$BaseOption&App=$pParams->{App}&Language="); $App->PrintRawHTML($JSChangeApparatusString); $App->PrintRawHTML($JSChangeLanguageString); } # if($ShowMenuButtons and @Apparatus > 1) { my $ButtonStr = ($ShowMenuButtons)? ' ' : ''; if(@Apparatus > 1) { if($App->can('GetApparatusSubMenuItemString') and $MenuMode =~ /superfish/i) { $App->ShowAMenu($pParams, 'SelectApparatus', $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post, style => "background-color: #AAFFFF; color: #888888;"); } elsif($MenuMode eq 'css') { $App->PrintRawHTML("{ScriptPath}\" name=\"AppSelect\" method=\"GET\" target=\"_self\">\n"); # $App->PrintRawHTML("{ScriptPath}\" target=\"_self\">\n"); } else { $App->print(" "); } if($FrameMode =~ /cols/i) { $App->print("") if($MenuMode !~ /css/i); } else { $App->print(" ") if($MenuMode !~ /css/i); } if($MenuMode =~ /superfish/i) { } else { $App->PrintRawHTML($AppSelectFormString); print < EOT2 } } elsif(@Apparatus > 1) { $App->PrintRawHTML($AppSelectFormString); } # 言語ボックスの表示 $ButtonStr = ($ShowMenuButtons)? ' ' : ''; if($nLanguage > 1) { # if($ShowMenuButtons and $nLanguage > 1) { if($MenuMode =~ /superfish/i) { $App->ShowAMenu($pParams, 'SelectLanguage', $MenuMode, $FrameMode, $ProgramPath, $BaseOption, $pre, $post, style => "background-color: #AAFFFF; color: #888888;"); } elsif($MenuMode eq 'css') { $App->PrintRawHTML("
{ScriptPath}\" name=\"LangSelect\" method=\"POST\" target=\"_self\">\n"); # $App->PrintRawHTML("{ScriptPath}\" target=\"_self\">\n"); } else { $App->print(" "); } if($FrameMode =~ /cols/i) { $App->print("") if($MenuMode ne 'css'); } else { $App->print(" ") if($MenuMode !~ /css/i); } if($MenuMode =~ /superfish/i) { } else { $App->PrintRawHTML($LanguageSelectFormString); print < EOT2 } } elsif($nLanguage > 1) { if($MenuMode !~ /superfish/i) { $App->PrintRawHTML($LanguageSelectFormString); } } if($MenuMode =~ /superfish/i) { $App->EndItem(); $App->BR(); $App->BR(); $App->BR(); # $App->H2('aa'); # $App->HR(); } elsif($MenuMode eq 'css') { # $App->EndMenu(); $App->PrintRawHTML($MainPost); # $App->print("\n\n"); # $App->HR(); } else { # $App->HR(); $App->HR() if(defined $pParams->{IsChildFrame} and !$pParams->{IsChildFrame}); } $App->HR(); $App->ClearFloat(); } sub ShowSubMenu { my ($App, $pParams, $SubMenuFunc) = @_; $SubMenuFunc = $pParams->{SubMenuFunction} if($SubMenuFunc eq ''); return 0 if($SubMenuFunc eq ''); $App->Execute2($pParams, $SubMenuFunc); $App->ClearFloat(); } sub ExtendMenu { my ($this, $App, $pParams) = @_; $pParams->{ExtendedMenu} = 1; $pParams->{Action} = $pParams->{PrevAction}; if($pParams->{IsChildFrame}) { $pParams->{Action} = 'ShowMenu'; $pParams->{NoMenu} = 0; $this->ShowMenu($pParams); return; } elsif($pParams->{PrevAction} =~ /Update/i or $pParams->{PrevAction} =~ /^(ShrinkMenu|ExtendMenu|PreRegistration)$/) { $pParams->{Action} = 'ShowStartPage'; } $this->Execute($pParams); return; # $App->ShowMenu($pParams, $pParams->{EMail}, $pParams->{Password}); ## $App->Execute($pParams); my $act = $pParams->{Action}; if(defined &$act) { $this->$act($App, $pParams); } elsif(defined &{"main::$act"}) { no strict; &{"main::$act"} ($App, $this, $pParams); use strict; } } sub ShrinkMenu { my ($this, $App, $pParams) = @_; $pParams->{ExtendedMenu} = 0; $pParams->{Action} = $pParams->{PrevAction}; if($pParams->{IsChildFrame}) { $pParams->{Action} = 'ShowMenu'; $pParams->{NoMenu} = 0; $this->ShowMenu($pParams); return; } elsif($pParams->{PrevAction} =~ /Update/i or $pParams->{PrevAction} =~ /^(ShrinkMenu|ExtendMenu|PreRegistration)$/) { $pParams->{Action} = 'ShowStartPage'; } $this->Execute($pParams); return; # $App->ShowMenu($pParams, $pParams->{EMail}, $pParams->{Password}); ## $App->Execute($pParams); my $act = $pParams->{Action}; if(defined &$act) { $this->$act($App, $pParams); } elsif(defined &{"main::$act"}) { no strict; &{"main::$act"} ($App, $this, $pParams); use strict; } } sub GetMenuString { my ($App, $pModule, $pParams, $ProgramPath, $BaseOption, $pre, $post, $ForceGetString) = @_; $ProgramPath = $pParams->{ScriptPath} if(!defined $ProgramPath); my ($MainPre1, $MainPost1, $pre1, $post1) = $App->GetMainMenuKeys($pParams); $pre = $pre1 if(!defined $pre); $post = $post1 if(!defined $post); my ($BaseOption1, $target1) = $App->GetCGIParameters({}, undef); $BaseOption = $BaseOption1 if(!defined $BaseOption); $ForceGetString = 0; my $PrevMode = $App->GetOutputMode(); $App->SetOutputMode('WriteBuffer'); my $s = ''; if($pModule and $pModule->can('ShowMenu') and $pModule->ShowMenu($App, $pParams, $ProgramPath, $BaseOption, $pre, $post, $ForceGetString)) { $s = $App->GetBuffer(1); } $App->SetOutputMode($PrevMode); return $s; } sub GetSubMenuString { my ($App, $pModule, $pParams, $ProgramPath, $BaseOption, $pre, $post, $ForceGetString) = @_; $ProgramPath = $pParams->{ScriptPath} if(!defined $ProgramPath); my ($MainPre1, $MainPost1, $pre1, $post1) = $App->GetSubMenuKeys($pParams); $pre = $pre1 if(!defined $pre); $post = $post1 if(!defined $post); my ($BaseOption1, $target1) = $App->GetCGIParameters({}, undef); $BaseOption = $BaseOption1 if(!defined $BaseOption); $ForceGetString = 0; my $PrevMode = $App->GetOutputMode(); $App->SetOutputMode('WriteBuffer'); my $s = ''; if($pModule and $pModule->can('ShowSubMenu') and $pModule->ShowSubMenu($App, $pParams, $ProgramPath, $BaseOption, $pre, $post, $ForceGetString)) { $s = $App->GetBuffer(1); } $App->SetOutputMode($PrevMode); return $s; } 1;