Update ProjectManager for Moose.

This commit is contained in:
Colin Kuskie 2010-02-11 16:10:32 -08:00
parent 5259184c16
commit 54fa46ad11

View file

@ -19,7 +19,66 @@ use WebGUI::International;
use WebGUI::Utility; use WebGUI::Utility;
use WebGUI::HTML; use WebGUI::HTML;
use POSIX qw(ceil floor); use POSIX qw(ceil floor);
use base 'WebGUI::Asset::Wobject'; use WebGUI::Definition::Asset;
extends 'WebGUI::Asset::Wobject';
aspect assetName => ['assetName', 'Asset_ProjectManager'],
aspect icon => 'projManagement.gif',
aspect tableName => 'PM_wobject',
property projectDashboardTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0001',
tab => "display",
namespace => "ProjectManager_dashboard",
hoverHelp => ['projectDashboardTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['projectDashboardTemplate label', 'Asset_ProjectManager'],
);
property projectDisplayTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0002',
tab => "display",
namespace => "ProjectManager_project",
hoverHelp => ['projectDisplayTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['projectDisplayTemplate label', 'Asset_ProjectManager'],
);
property ganttChartTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0003',
tab => "display",
namespace => "ProjectManager_gantt",
hoverHelp => ['ganttChartTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['ganttChartTemplate label', 'Asset_ProjectManager'],
);
property editTaskTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0004',
tab => "display",
namespace => "ProjectManager_editTask",
hoverHelp => ['editTaskTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['editTaskTemplate label', 'Asset_ProjectManager'],
);
property resourcePopupTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0005',
tab => "display",
namespace => "ProjectManager_resourcePopup",
hoverHelp => ['resourcePopupTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['resourcePopupTemplate label', 'Asset_ProjectManager'],
);
property resourceListTemplateId => (
fieldType => "template",
default => 'ProjectManagerTMPL0006',
tab => "display",
namespace => "ProjectManager_resourceList",
hoverHelp => ['resourceListTemplate hoverhelp', 'Asset_ProjectManager'],
label => ['resourceListTemplate label', 'Asset_ProjectManager'],
);
property groupToAdd => (
fieldType => "group",
default => 3,
tab => "security",
hoverHelp => ['groupToAdd hoverhelp', 'Asset_ProjectManager'],
label => ['groupToAdd label', 'Asset_ProjectManager'],
);
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -219,7 +278,7 @@ sub _htmlOfResourceList {
push @{$var->{resourceLoop}}, $subvar; push @{$var->{resourceLoop}}, $subvar;
} }
return $self->processTemplate($var, $self->getValue('resourceListTemplateId')); return $self->processTemplate($var, $self->resourceListTemplateId);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -306,7 +365,7 @@ sub _resourceSearchPopup {
$var->{doingSearch} = 0; $var->{doingSearch} = 0;
} }
return $self->processTemplate($var, $self->getValue('resourcePopupTemplateId')); return $self->processTemplate($var, $self->resourcePopupTemplateId);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -405,7 +464,7 @@ sub _userCanManageProject {
my $user = shift; my $user = shift;
my $projectId = shift; my $projectId = shift;
my ($managerGroup) = $self->session->db->quickArray("select projectManager from PM_project where projectId = ?", [$projectId]); my ($managerGroup) = $self->session->db->quickArray("select projectManager from PM_project where projectId = ?", [$projectId]);
return $self->canView($user->userId) && ($user->isInGroup($managerGroup) || $user->isInGroup($self->get('groupToAdd'))); return $self->canView($user->userId) && ($user->isInGroup($managerGroup) || $user->isInGroup($self->groupToAdd));
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -417,7 +476,7 @@ sub _userCanManageProject {
sub _userCanManageProjectList { sub _userCanManageProjectList {
my $self = shift; my $self = shift;
my $user = shift; my $user = shift;
return $self->canView($user->userId) && $user->isInGroup($self->get('groupToAdd')); return $self->canView($user->userId) && $user->isInGroup($self->groupToAdd);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -431,92 +490,9 @@ sub _userCanObserveProject {
my $user = shift; my $user = shift;
my $projectId = shift; my $projectId = shift;
my ($managerGroup, $observerGroup) = $self->session->db->quickArray("select projectManager, projectObserver from PM_project where projectId = ?", [$projectId]); my ($managerGroup, $observerGroup) = $self->session->db->quickArray("select projectManager, projectObserver from PM_project where projectId = ?", [$projectId]);
return $self->canView($user->userId) && ($user->isInGroup($managerGroup) || $user->isInGroup($observerGroup) || $user->isInGroup($self->get('groupToAdd'))); return $self->canView($user->userId) && ($user->isInGroup($managerGroup) || $user->isInGroup($observerGroup) || $user->isInGroup($self->groupToAdd));
} }
#-------------------------------------------------------------------
=head2 definition
=cut
sub definition {
my $class = shift;
my $session = shift;
my $definition = shift;
my $i18n = WebGUI::International->new($session,'Asset_ProjectManager');
my $db = $session->db;
my %properties;
tie %properties, 'Tie::IxHash';
%properties = (
projectDashboardTemplateId =>{
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0001',
tab=>"display",
namespace=>"ProjectManager_dashboard",
hoverHelp=>$i18n->get('projectDashboardTemplate hoverhelp'),
label=>$i18n->get('projectDashboardTemplate label')
},
projectDisplayTemplateId => {
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0002',
tab=>"display",
namespace=>"ProjectManager_project",
hoverHelp=>$i18n->get('projectDisplayTemplate hoverhelp'),
label=>$i18n->get('projectDisplayTemplate label')
},
ganttChartTemplateId => {
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0003',
tab=>"display",
namespace=>"ProjectManager_gantt",
hoverHelp=>$i18n->get('ganttChartTemplate hoverhelp'),
label=>$i18n->get('ganttChartTemplate label')
},
editTaskTemplateId =>{
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0004',
tab=>"display",
namespace=>"ProjectManager_editTask",
hoverHelp=>$i18n->get('editTaskTemplate hoverhelp'),
label=>$i18n->get('editTaskTemplate label')
},
resourcePopupTemplateId =>{
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0005',
tab=>"display",
namespace=>"ProjectManager_resourcePopup",
hoverHelp=>$i18n->get('resourcePopupTemplate hoverhelp'),
label=>$i18n->get('resourcePopupTemplate label')
},
resourceListTemplateId =>{
fieldType=>"template",
defaultValue=>'ProjectManagerTMPL0006',
tab=>"display",
namespace=>"ProjectManager_resourceList",
hoverHelp=>$i18n->get('resourceListTemplate hoverhelp'),
label=>$i18n->get('resourceListTemplate label')
},
groupToAdd => {
fieldType=>"group",
defaultValue=>3,
tab=>"security",
hoverHelp=>$i18n->get('groupToAdd hoverhelp'),
label=>$i18n->get('groupToAdd label')
}
);
push(@{$definition}, {
assetName=>$i18n->get('assetName'),
icon=>'projManagement.gif',
autoGenerateForms=>1,
tableName=>'PM_wobject',
className=>'WebGUI::Asset::Wobject::ProjectManager',
properties=>\%properties
});
return $class->SUPER::definition($session, $definition);
}
#------------------------------------------------------------------- #-------------------------------------------------------------------
#API method called by Time Tracker to return the instance of the PM wobject which this project blongs #API method called by Time Tracker to return the instance of the PM wobject which this project blongs
@ -615,11 +591,11 @@ sub i18n {
sub prepareView { sub prepareView {
my $self = shift; my $self = shift;
$self->SUPER::prepareView(); $self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("projectDashboardTemplateId")); my $template = WebGUI::Asset::Template->new($self->session, $self->projectDashboardTemplateId);
if (!$template) { if (!$template) {
WebGUI::Error::ObjectNotFound::Template->throw( WebGUI::Error::ObjectNotFound::Template->throw(
error => qq{Template not found}, error => qq{Template not found},
templateId => $self->get("projectDashboardTemplateId"), templateId => $self->projectDashboardTemplateId,
assetId => $self->getId, assetId => $self->getId,
); );
} }
@ -785,7 +761,7 @@ sub view {
#Project Data #Project Data
my @projects = (); my @projects = ();
my $sth = $db->read("select * from PM_project where assetId=".$db->quote($self->get("assetId"))); my $sth = $db->read("select * from PM_project where assetId=".$db->quote($self->assetId));
while (my $project = $sth->hashRef) { while (my $project = $sth->hashRef) {
my $hash = {}; my $hash = {};
my $projectId = $project->{projectId}; my $projectId = $project->{projectId};
@ -1141,7 +1117,7 @@ sub www_drawGanttChart {
my $scrollWidth = (1- (560 / $projVar->{'project.table.width'})) * 100; my $scrollWidth = (1- (560 / $projVar->{'project.table.width'})) * 100;
$var->{'project.scroll.percentWidth'} = $projVar->{'project.scroll.percentWidth'} = sprintf("%2.2f",$scrollWidth); $var->{'project.scroll.percentWidth'} = $projVar->{'project.scroll.percentWidth'} = sprintf("%2.2f",$scrollWidth);
return $self->processTemplate($var,$self->getValue("ganttChartTemplateId")); return $self->processTemplate($var,$self->ganttChartTemplateId);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -1192,7 +1168,7 @@ sub www_editProject {
); );
$f->group( $f->group(
-name=> "projectManager", -name=> "projectManager",
-value=> $form->get("projectManager") || $project->{projectManager} || $self->get("groupToAdd"), -value=> $form->get("projectManager") || $project->{projectManager} || $self->groupToAdd,
-hoverHelp=> $i18n->get('project manager hoverhelp'), -hoverHelp=> $i18n->get('project manager hoverhelp'),
-label => $i18n->get('project manager label') -label => $i18n->get('project manager label')
); );
@ -1530,7 +1506,7 @@ sub www_editTask {
$var->{'task_resource_label'} = $i18n->get('task resource label'); $var->{'task_resource_label'} = $i18n->get('task resource label');
$var->{'task_save_label'} = $i18n->get('task save label'); $var->{'task_save_label'} = $i18n->get('task save label');
return $self->processTemplate($var,$self->getValue("editTaskTemplateId")); return $self->processTemplate($var,$self->editTaskTemplateId);
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -2018,7 +1994,7 @@ sub www_viewProject {
$var->{'task.back.label'} = $i18n->get("task back label"); $var->{'task.back.label'} = $i18n->get("task back label");
$var->{'task.back.url'} = $self->getUrl; $var->{'task.back.url'} = $self->getUrl;
return $self->processStyle($self->processTemplate($var,$self->getValue("projectDisplayTemplateId"))); return $self->processStyle($self->processTemplate($var,$self->projectDisplayTemplateId));
} }