webgui/lib/WebGUI/AdminConsole.pm
2004-11-03 23:00:44 +00:00

264 lines
5.4 KiB
Perl

package WebGUI::AdminConsole;
use strict;
use WebGUI::Grouping;
use WebGUI::International;
use WebGUI::Session;
use WebGUI::Template;
use WebGUI::URL;
sub _formatFunction {
my $self = shift;
my $function = shift;
return {
title=>WebGUI::International::get($function->{title}{id}, $function->{title}{namespace}),
icon=>$session{config}{extrasURL}."/adminConsole/".$function->{icon},
url=>WebGUI::URL::page("op=".$function->{op}),
canUse=>WebGUI::Grouping::isInGroup($function->{group})
};
}
sub addSubmenuItem {
my $self = shift;
my $url = shift;
my $label = shift;
push (@{$self->{_submenuItem}}, {
url=>$url,
label=>$label
});
}
sub getAdminConsoleParams {
return { 'title' => WebGUI::International::get("admin console","AdminConsole"),
url => WebGUI::URL::page("op=adminConsole"),
canUse => WebGUI::Grouping::isInGroup("12"),
icon => $session{config}{extrasURL}."/adminConsole/adminConsole.gif"
};
}
sub getAdminFunction {
my $self = shift;
my $id = shift;
my $functions = { # at some point in the future we'll need to make this pluggable/configurable
"assets"=>{
title=>{
id=>"assets",
namespace=>"Asset"
},
icon=>"assets.gif",
op=>"manageAssets",
group=>"12"
},
"users"=>{
title=>{
id=>"149",
namespace=>"WebGUI"
},
icon=>"users.gif",
op=>"listUsers",
group=>"11"
},
"navigation"=>{
title=>{
id=>"navigation",
namespace=>"Navigation"
},
icon=>"navigation.gif",
op=>"listNavigation",
group=>"4"
},
"clipboard"=>{
title=>{
id=>"948",
namespace=>"WebGUI"
},
icon=>"clipboard.gif",
op=>"manageClipboard",
group=>"4"
},
"trash"=>{
title=>{
id=>"trash",
namespace=>"WebGUI"
},
icon=>"trash.gif",
op=>"manageTrash",
group=>"3"
},
"databases"=>{
title=>{
id=>"databases",
namespace=>"WebGUI"
},
icon=>"databases.gif",
op=>"listDatabaseLinks",
group=>"3"
},
"groups"=>{
title=>{
id=>"89",
namespace=>"WebGUI"
},
icon=>"groups.gif",
op=>"listGroups",
group=>"11"
},
"packages"=>{
title=>{
id=>"packages",
namespace=>"WebGUI"
},
icon=>"packages.gif",
op=>"managePackages",
group=>"4"
},
"settings"=>{
title=>{
id=>"settings",
namespace=>"WebGUI"
},
icon=>"settings.gif",
op=>"editSettings",
group=>"3"
},
"templates"=>{
title=>{
id=>"templates",
namespace=>"WebGUI"
},
icon=>"templates.gif",
op=>"listTemplates",
group=>"8"
},
"themes"=>{
title=>{
id=>"themes",
namespace=>"WebGUI"
},
icon=>"themes.gif",
op=>"listThemes",
group=>"9"
},
"help"=>{
title=>{
id=>"help",
namespace=>"WebGUI"
},
icon=>"help.gif",
op=>"viewHelpIndex",
group=>"12"
},
"statistics"=>{
title=>{
id=>"437",
namespace=>"WebGUI"
},
icon=>"statistics.gif",
op=>"viewStatistics",
group=>"12"
},
"contentProfiling"=>{
title=>{
id=>"content profiling",
namespace=>"MetaData"
},
icon=>"contentProfiling.gif",
op=>"manageMetaData",
group=>"4"
},
"contentFilters"=>{
title=>{
id=>"content filters",
namespace=>"WebGUI"
},
icon=>"contentFilters.gif",
op=>"listReplacements",
group=>"4"
},
"userProfiling"=>{
title=>{
id=>"user profiling",
namespace=>"WebGUIProfile"
},
icon=>"userProfiling.gif",
op=>"editProfileSettings",
group=>"3"
},
"loginHistory"=>{
title=>{
id=>"426",
namespace=>"WebGUI"
},
icon=>"loginHistory.gif",
op=>"viewLoginHistory",
group=>"3"
},
"activeSessions"=>{
title=>{
id=>"425",
namespace=>"WebGUI"
},
icon=>"activeSessions.gif",
op=>"viewActiveSessions",
group=>"3"
},
};
if ($id) {
return $self->_formatFunction($functions->{$id});
} else {
my %names;
foreach my $id (keys %{$functions}) {
my $func = $self->_formatFunction($functions->{$id});
$names{$func->{title}} = $func;
}
my @sorted = sort {$a cmp $b} keys %names;
my @list;
foreach my $key (@sorted) {
push(@list,$names{$key});
}
return \@list;
}
}
sub new {
my $class = shift;
my $id = shift;
my %self;
$self{_function} = $class->getAdminFunction($id) if ($id);
bless \%self, $class;
}
sub render {
my $self = shift;
my %var;
$var{"application.workarea"} = shift;
$var{"application.title"} = shift || $self->{_function}{title};
$var{"backtosite.label"} = WebGUI::International::get("493");
$var{"toggle.on.label"} = WebGUI::International::get("toggle on", "AdminConsole");
$var{"toggle.off.label"} = WebGUI::International::get("toggle off","AdminConsole");
$var{"application.icon"} = $self->{_function}{icon};
$var{"application.canUse"} = $self->{_function}{canUse};
$var{"application.url"} = $self->{_function}{url};
if (exists $self->{_submenuItem}) {
$var{submenu_loop} = $self->{_submenuItem};
}
my $acParams = $self->getAdminConsoleParams;
$var{"console.title"} = $acParams->{title};
$var{"console.url"} = $acParams->{url};
$var{"console.canUse"} = $acParams->{canUse};
$var{"console.icon"} = $acParams->{icon};
$var{"help.url"} = $self->{_helpUrl};
$var{"application_loop"} = $self->getAdminFunction;
$session{page}{useAdminStyle} = 1;
return WebGUI::Template::process($session{setting}{AdminConsoleTemplate}, "AdminConsole", \%var);
}
sub setHelp {
my $self = shift;
my $id = shift;
my $namespace = shift || "WebGUI";
$self->{_helpUrl} = WebGUI::URL::page('op=viewHelp&hid='.$id.'&namespace='.$namespace) if ($id);
}
1;