operations now dynamically loaded
This commit is contained in:
parent
ea9a3d5bfc
commit
c01f16a27f
28 changed files with 244 additions and 180 deletions
|
|
@ -11,30 +11,247 @@ package WebGUI::Operation;
|
|||
#-------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use WebGUI::Operation::Auth;
|
||||
use WebGUI::Operation::Admin;
|
||||
use WebGUI::Operation::Clipboard;
|
||||
use WebGUI::Operation::Collateral;
|
||||
use WebGUI::Operation::DatabaseLink;
|
||||
use WebGUI::Operation::Group;
|
||||
use WebGUI::Operation::Help;
|
||||
use WebGUI::Operation::MessageLog;
|
||||
use WebGUI::Operation::Package;
|
||||
use WebGUI::Operation::Page;
|
||||
use WebGUI::Operation::Profile;
|
||||
use WebGUI::Operation::ProfileSettings;
|
||||
use WebGUI::Operation::Replacements;
|
||||
use WebGUI::Operation::Root;
|
||||
use WebGUI::Operation::Scratch;
|
||||
use WebGUI::Operation::Settings;
|
||||
use WebGUI::Operation::Statistics;
|
||||
use WebGUI::Operation::Style;
|
||||
use WebGUI::Operation::Template;
|
||||
use WebGUI::Operation::Theme;
|
||||
use WebGUI::Operation::Trash;
|
||||
use WebGUI::Operation::User;
|
||||
use WebGUI::Operation::WebGUI;
|
||||
use WebGUI::Operation::Navigation;
|
||||
use WebGUI::Operation::MetaData;
|
||||
use WebGUI::ErrorHandler;
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Package WebGUI::Operation
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This package is provides dynamic loading capabilities for the WebGUI operations.
|
||||
|
||||
B<NOTE:>After adding a new operation, the operation / package name must be added to WebGUI::Operation::getOperations.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use WebGUI::Operation;
|
||||
$html = WebGUI::Operation::execute("switchAdminOn");
|
||||
$hashRef = WebGUI::Operation::getOperations();
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
These functions are available from this package:
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 execute ( name )
|
||||
|
||||
Loads the corresponding module for operation <name> and executes the operation.
|
||||
Returns html in most cases.
|
||||
|
||||
=head3 name
|
||||
|
||||
The name of the operation to execute.
|
||||
|
||||
=cut
|
||||
|
||||
sub execute {
|
||||
my $op = shift;
|
||||
my ($output, $cmd);
|
||||
my $operation = getOperations();
|
||||
if ($operation->{$op}) {
|
||||
# Load the module
|
||||
$cmd = 'use '.$operation->{$op};
|
||||
eval ($cmd);
|
||||
WebGUI::ErrorHandler::fatalError("Couldn't compile operation: ".$operation->{$op}.". Root cause: ".$@) if ($@);
|
||||
# Call the method
|
||||
$cmd = $operation->{$op} . '::www_'.$op;
|
||||
$output = eval($cmd);
|
||||
WebGUI::ErrorHandler::fatalError("Couldn't execute operation : ".$cmd.". Root cause: ".$@) if ($@);
|
||||
} else {
|
||||
WebGUI::ErrorHandler::security("execute an invalid operation: ".$op);
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getOperations ( )
|
||||
|
||||
Returns a hash reference containing operation and package names.
|
||||
|
||||
=cut
|
||||
|
||||
sub getOperations {
|
||||
return {
|
||||
'switchOffAdmin' => 'WebGUI::Operation::Admin',
|
||||
'switchOnAdmin' => 'WebGUI::Operation::Admin',
|
||||
'auth' => 'WebGUI::Operation::Auth',
|
||||
'displayLogin' => 'WebGUI::Operation::Auth',
|
||||
'login' => 'WebGUI::Operation::Auth',
|
||||
'displayAccount' => 'WebGUI::Operation::Auth',
|
||||
'createAccount' => 'WebGUI::Operation::Auth',
|
||||
'deactivateAccount' => 'WebGUI::Operation::Auth',
|
||||
'logout' => 'WebGUI::Operation::Auth',
|
||||
'recoverPassword' => 'WebGUI::Operation::Auth',
|
||||
'init' => 'WebGUI::Operation::Auth',
|
||||
'deleteClipboardItem' => 'WebGUI::Operation::Clipboard',
|
||||
'deleteClipboardItemConfirm' => 'WebGUI::Operation::Clipboard',
|
||||
'emptyClipboard' => 'WebGUI::Operation::Clipboard',
|
||||
'emptyClipboardConfirm' => 'WebGUI::Operation::Clipboard',
|
||||
'manageClipboard' => 'WebGUI::Operation::Clipboard',
|
||||
'editCollateral' => 'WebGUI::Operation::Collateral',
|
||||
'editCollateralSave' => 'WebGUI::Operation::Collateral',
|
||||
'deleteCollateral' => 'WebGUI::Operation::Collateral',
|
||||
'deleteCollateralConfirm' => 'WebGUI::Operation::Collateral',
|
||||
'listCollateral' => 'WebGUI::Operation::Collateral',
|
||||
'deleteCollateralFile' => 'WebGUI::Operation::Collateral',
|
||||
'editCollateralFolder' => 'WebGUI::Operation::Collateral',
|
||||
'editCollateralFolderSave' => 'WebGUI::Operation::Collateral',
|
||||
'deleteCollateralFolder' => 'WebGUI::Operation::Collateral',
|
||||
'deleteCollateralFolderConfirm' => 'WebGUI::Operation::Collateral',
|
||||
'emptyCollateralFolder' => 'WebGUI::Operation::Collateral',
|
||||
'emptyCollateralFolderConfirm' => 'WebGUI::Operation::Collateral',
|
||||
'htmlArealistCollateral' => 'WebGUI::Operation::Collateral',
|
||||
'htmlAreaviewCollateral' => 'WebGUI::Operation::Collateral',
|
||||
'htmlAreaUpload' => 'WebGUI::Operation::Collateral',
|
||||
'htmlAreaDelete' => 'WebGUI::Operation::Collateral',
|
||||
'htmlAreaCreateFolder' => 'WebGUI::Operation::Collateral',
|
||||
'copyDatabaseLink' => 'WebGUI::Operation::DatabaseLink',
|
||||
'deleteDatabaseLink' => 'WebGUI::Operation::DatabaseLink',
|
||||
'deleteDatabaseLinkConfirm' => 'WebGUI::Operation::DatabaseLink',
|
||||
'editDatabaseLink' => 'WebGUI::Operation::DatabaseLink',
|
||||
'editDatabaseLinkSave' => 'WebGUI::Operation::DatabaseLink',
|
||||
'listDatabaseLinks' => 'WebGUI::Operation::DatabaseLink',
|
||||
'manageUsersInGroup' => 'WebGUI::Operation::Group',
|
||||
'deleteGroup' => 'WebGUI::Operation::Group',
|
||||
'deleteGroupConfirm' => 'WebGUI::Operation::Group',
|
||||
'editGroup' => 'WebGUI::Operation::Group',
|
||||
'editGroupSave' => 'WebGUI::Operation::Group',
|
||||
'listGroups' => 'WebGUI::Operation::Group',
|
||||
'emailGroup' => 'WebGUI::Operation::Group',
|
||||
'emailGroupSend' => 'WebGUI::Operation::Group',
|
||||
'manageGroupsInGroup' => 'WebGUI::Operation::Group',
|
||||
'addGroupsToGroupSave' => 'WebGUI::Operation::Group',
|
||||
'deleteGroupGrouping' => 'WebGUI::Operation::Group',
|
||||
'autoAddToGroup' => 'WebGUI::Operation::Group',
|
||||
'autoDeleteFromGroup' => 'WebGUI::Operation::Group',
|
||||
'listGroupsSecondary' => 'WebGUI::Operation::Group',
|
||||
'manageUsersInGroupSecondary' => 'WebGUI::Operation::Group',
|
||||
'addUsersToGroupSave' => 'WebGUI::Operation::Group',
|
||||
'addUsersToGroupSecondarySave' => 'WebGUI::Operation::Group',
|
||||
'deleteGroupingSecondary' => 'WebGUI::Operation::Group',
|
||||
'viewHelp' => 'WebGUI::Operation::Help',
|
||||
'viewHelpIndex' => 'WebGUI::Operation::Help',
|
||||
'viewMessageLog' => 'WebGUI::Operation::MessageLog',
|
||||
'viewMessageLogMessage' => 'WebGUI::Operation::MessageLog',
|
||||
'editMetaDataField' => 'WebGUI::Operation::MetaData',
|
||||
'manageMetaData' => 'WebGUI::Operation::MetaData',
|
||||
'editMetaDataFieldSave' => 'WebGUI::Operation::MetaData',
|
||||
'deleteMetaDataField' => 'WebGUI::Operation::MetaData',
|
||||
'deleteMetaDataFieldConfirm' => 'WebGUI::Operation::MetaData',
|
||||
'saveMetaDataSettings' => 'WebGUI::Operation::MetaData',
|
||||
'listNavigation' => 'WebGUI::Operation::Navigation',
|
||||
'editNavigation' => 'WebGUI::Operation::Navigation',
|
||||
'editNavigationSave' => 'WebGUI::Operation::Navigation',
|
||||
'copyNavigation' => 'WebGUI::Operation::Navigation',
|
||||
'deleteNavigation' => 'WebGUI::Operation::Navigation',
|
||||
'deployPackage' => 'WebGUI::Operation::Package',
|
||||
'viewPageTree' => 'WebGUI::Operation::Page',
|
||||
'movePageUp' => 'WebGUI::Operation::Page',
|
||||
'movePageDown' => 'WebGUI::Operation::Page',
|
||||
'cutPage' => 'WebGUI::Operation::Page',
|
||||
'deletePage' => 'WebGUI::Operation::Page',
|
||||
'deletePageConfirm' => 'WebGUI::Operation::Page',
|
||||
'editPage' => 'WebGUI::Operation::Page',
|
||||
'editPageSave' => 'WebGUI::Operation::Page',
|
||||
'exportPage' => 'WebGUI::Operation::Page',
|
||||
'exportPageStatus' => 'WebGUI::Operation::Page',
|
||||
'pastePage' => 'WebGUI::Operation::Page',
|
||||
'moveTreePageUp' => 'WebGUI::Operation::Page',
|
||||
'rearrangeWobjects' => 'WebGUI::Operation::Page',
|
||||
'moveTreePageDown' => 'WebGUI::Operation::Page',
|
||||
'moveTreePageLeft' => 'WebGUI::Operation::Page',
|
||||
'moveTreePageRight' => 'WebGUI::Operation::Page',
|
||||
'editProfile' => 'WebGUI::Operation::Profile',
|
||||
'editProfileSave' => 'WebGUI::Operation::Profile',
|
||||
'viewProfile' => 'WebGUI::Operation::Profile',
|
||||
'deleteProfileCategoryConfirm' => 'WebGUI::Operation::ProfileSettings',
|
||||
'deleteProfileFieldConfirm' => 'WebGUI::Operation::ProfileSettings',
|
||||
'editProfileCategorySave' => 'WebGUI::Operation::ProfileSettings',
|
||||
'editProfileFieldSave' => 'WebGUI::Operation::ProfileSettings',
|
||||
'deleteProfileCategory' => 'WebGUI::Operation::ProfileSettings',
|
||||
'deleteProfileField' => 'WebGUI::Operation::ProfileSettings',
|
||||
'editProfileCategory' => 'WebGUI::Operation::ProfileSettings',
|
||||
'editProfileField' => 'WebGUI::Operation::ProfileSettings',
|
||||
'moveProfileCategoryDown' => 'WebGUI::Operation::ProfileSettings',
|
||||
'moveProfileCategoryUp' => 'WebGUI::Operation::ProfileSettings',
|
||||
'moveProfileFieldDown' => 'WebGUI::Operation::ProfileSettings',
|
||||
'moveProfileFieldUp' => 'WebGUI::Operation::ProfileSettings',
|
||||
'editProfileSettings' => 'WebGUI::Operation::ProfileSettings',
|
||||
'deleteReplacement' => 'WebGUI::Operation::Replacements',
|
||||
'editReplacement' => 'WebGUI::Operation::Replacements',
|
||||
'editReplacementSave' => 'WebGUI::Operation::Replacements',
|
||||
'listReplacements' => 'WebGUI::Operation::Replacements',
|
||||
'listRoots' => 'WebGUI::Operation::Root',
|
||||
'setScratch' => 'WebGUI::Operation::Scratch',
|
||||
'deleteScratch' => 'WebGUI::Operation::Scratch',
|
||||
'saveSettings' => 'WebGUI::Operation::Settings',
|
||||
'editUserSettings' => 'WebGUI::Operation::Settings',
|
||||
'editCompanyInformation' => 'WebGUI::Operation::Settings',
|
||||
'editPrivilegeSettings' => 'WebGUI::Operation::Settings',
|
||||
'editMessagingSettings' => 'WebGUI::Operation::Settings',
|
||||
'editMiscSettings' => 'WebGUI::Operation::Settings',
|
||||
'editContentSettings' => 'WebGUI::Operation::Settings',
|
||||
'manageSettings' => 'WebGUI::Operation::Settings',
|
||||
'viewPageReport' => 'WebGUI::Operation::Statistics',
|
||||
'viewStatistics' => 'WebGUI::Operation::Statistics',
|
||||
'viewTrafficReport' => 'WebGUI::Operation::Statistics',
|
||||
'killSession' => 'WebGUI::Operation::Statistics',
|
||||
'viewLoginHistory' => 'WebGUI::Operation::Statistics',
|
||||
'viewActiveSessions' => 'WebGUI::Operation::Statistics',
|
||||
'makePrintable' => 'WebGUI::Operation::Style',
|
||||
'setPersonalStyle' => 'WebGUI::Operation::Style',
|
||||
'unsetPersonalStyle' => 'WebGUI::Operation::Style',
|
||||
'copyTemplate' => 'WebGUI::Operation::Template',
|
||||
'deleteTemplate' => 'WebGUI::Operation::Template',
|
||||
'deleteTemplateConfirm' => 'WebGUI::Operation::Template',
|
||||
'editTemplate' => 'WebGUI::Operation::Template',
|
||||
'editTemplateSave' => 'WebGUI::Operation::Template',
|
||||
'listTemplates' => 'WebGUI::Operation::Template',
|
||||
'viewTheme' => 'WebGUI::Operation::Theme',
|
||||
'deleteThemeComponent' => 'WebGUI::Operation::Theme',
|
||||
'deleteThemeComponentConfirm' => 'WebGUI::Operation::Theme',
|
||||
'importTheme' => 'WebGUI::Operation::Theme',
|
||||
'importThemeValidate' => 'WebGUI::Operation::Theme',
|
||||
'importThemeSave' => 'WebGUI::Operation::Theme',
|
||||
'exportTheme' => 'WebGUI::Operation::Theme',
|
||||
'addThemeComponent' => 'WebGUI::Operation::Theme',
|
||||
'addThemeComponentSave' => 'WebGUI::Operation::Theme',
|
||||
'deleteTheme' => 'WebGUI::Operation::Theme',
|
||||
'deleteThemeConfirm' => 'WebGUI::Operation::Theme',
|
||||
'editTheme' => 'WebGUI::Operation::Theme',
|
||||
'editThemeSave' => 'WebGUI::Operation::Theme',
|
||||
'listThemes' => 'WebGUI::Operation::Theme',
|
||||
'cutTrashItem' => 'WebGUI::Operation::Trash',
|
||||
'deleteTrashItem' => 'WebGUI::Operation::Trash',
|
||||
'deleteTrashItemConfirm' => 'WebGUI::Operation::Trash',
|
||||
'emptyTrash' => 'WebGUI::Operation::Trash',
|
||||
'emptyTrashConfirm' => 'WebGUI::Operation::Trash',
|
||||
'manageTrash' => 'WebGUI::Operation::Trash',
|
||||
'editUserKarma' => 'WebGUI::Operation::User',
|
||||
'editUserKarmaSave' => 'WebGUI::Operation::User',
|
||||
'editUserGroup' => 'WebGUI::Operation::User',
|
||||
'editUserProfile' => 'WebGUI::Operation::User',
|
||||
'editUserProfileSave' => 'WebGUI::Operation::User',
|
||||
'addUserToGroupSave' => 'WebGUI::Operation::User',
|
||||
'deleteGrouping' => 'WebGUI::Operation::User',
|
||||
'editGrouping' => 'WebGUI::Operation::User',
|
||||
'editGroupingSave' => 'WebGUI::Operation::User',
|
||||
'becomeUser' => 'WebGUI::Operation::User',
|
||||
'addUser' => 'WebGUI::Operation::User',
|
||||
'addUserSave' => 'WebGUI::Operation::User',
|
||||
'deleteUser' => 'WebGUI::Operation::User',
|
||||
'deleteUserConfirm' => 'WebGUI::Operation::User',
|
||||
'editUser' => 'WebGUI::Operation::User',
|
||||
'editUserSave' => 'WebGUI::Operation::User',
|
||||
'listUsers' => 'WebGUI::Operation::User',
|
||||
'theWg' => 'WebGUI::Operation::WebGUI',
|
||||
'genesis' => 'WebGUI::Operation::WebGUI'
|
||||
};
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue