Fixed Project Management Integration
This commit is contained in:
parent
51bab8ba45
commit
6948055caf
1 changed files with 143 additions and 101 deletions
|
|
@ -19,6 +19,7 @@ use WebGUI::International;
|
||||||
use WebGUI::Utility;
|
use WebGUI::Utility;
|
||||||
use POSIX qw(ceil floor);
|
use POSIX qw(ceil floor);
|
||||||
use base 'WebGUI::Asset::Wobject';
|
use base 'WebGUI::Asset::Wobject';
|
||||||
|
use WebGUI::Asset::Wobject::ProjectManager;
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub definition {
|
sub definition {
|
||||||
|
|
@ -59,7 +60,14 @@ sub definition {
|
||||||
tab=>"security",
|
tab=>"security",
|
||||||
hoverHelp=>$i18n->get('groupToManage hoverhelp'),
|
hoverHelp=>$i18n->get('groupToManage hoverhelp'),
|
||||||
label=>$i18n->get('groupToManage label')
|
label=>$i18n->get('groupToManage label')
|
||||||
}
|
},
|
||||||
|
pmIntegration => {
|
||||||
|
fieldType=>"yesNo",
|
||||||
|
defaultValue=>0,
|
||||||
|
tab=>"properties",
|
||||||
|
hoverHelp=>$i18n->echo("Choose yes to pull projects and task information from the various project management assets on your site"),
|
||||||
|
label=>$i18n->echo("Project Management Integration")
|
||||||
|
},
|
||||||
);
|
);
|
||||||
push(@{$definition}, {
|
push(@{$definition}, {
|
||||||
assetName=>$i18n->get('assetName'),
|
assetName=>$i18n->get('assetName'),
|
||||||
|
|
@ -170,11 +178,30 @@ sub view {
|
||||||
$var->{'extras'} = $config->get("extrasURL")."/wobject/TimeTracking";
|
$var->{'extras'} = $config->get("extrasURL")."/wobject/TimeTracking";
|
||||||
|
|
||||||
if($user->isInGroup($self->get("groupToManage"))) {
|
if($user->isInGroup($self->get("groupToManage"))) {
|
||||||
#Return manager screen
|
$var->{'project.manage.url'} = $self->getUrl("func=manageProjects");
|
||||||
#$self->_buildManagerView($var);
|
$var->{'project.manage.label'} = $i18n->get("project manage label");
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->_buildUserView($var);
|
$var->{'form.header'} = WebGUI::Form::formHeader($session,{
|
||||||
|
action=>$self->getUrl,
|
||||||
|
extras=>q|name="editTimeForm" onsubmit="return validateForm(this);"|
|
||||||
|
});
|
||||||
|
$var->{'form.header'} .= WebGUI::Form::hidden($session, {
|
||||||
|
-name=>"func",
|
||||||
|
-value=>"editTimeEntrySave"
|
||||||
|
});
|
||||||
|
$var->{'form.header'} .= WebGUI::Form::hidden($session, {
|
||||||
|
-name=>"rowTotal",
|
||||||
|
-value=>""
|
||||||
|
});
|
||||||
|
|
||||||
|
$var->{'form.footer'} = WebGUI::Form::formFooter($session);
|
||||||
|
|
||||||
|
$var->{'js.alert.removeRow.error'} = $i18n->echo("There must be at least one row. Please add more rows if you wish to delete this one");
|
||||||
|
$var->{'js.alert.validate.hours.error'} = $i18n->echo("You may not submit more hours than are available during any given week.");
|
||||||
|
$var->{'js.alert.validate.incomplete.error'} = $i18n->echo("The highlighted fields are required if you wish to submit this form.");
|
||||||
|
|
||||||
|
$var->{'form.timetracker'} = $self->www_buildTimeTable($var);
|
||||||
|
|
||||||
return $self->processTemplate($var, undef, $self->{_viewTemplate});
|
return $self->processTemplate($var, undef, $self->{_viewTemplate});
|
||||||
}
|
}
|
||||||
|
|
@ -206,6 +233,7 @@ sub www_editTimeEntrySave {
|
||||||
$reportId = $self->setCollateral("TT_report","reportId",$props,0,1);
|
$reportId = $self->setCollateral("TT_report","reportId",$props,0,1);
|
||||||
|
|
||||||
my @tasks = ();
|
my @tasks = ();
|
||||||
|
my $tasksToUpdate = {};
|
||||||
|
|
||||||
my $rowTotal = $form->get("rowTotal");
|
my $rowTotal = $form->get("rowTotal");
|
||||||
for(my $i = 1; $i <= $rowTotal; $i++) {
|
for(my $i = 1; $i <= $rowTotal; $i++) {
|
||||||
|
|
@ -221,13 +249,29 @@ sub www_editTimeEntrySave {
|
||||||
$props->{comments} = $form->process("comments_$i","text");
|
$props->{comments} = $form->process("comments_$i","text");
|
||||||
if ($props->{taskDate} && $props->{projectId} && $props->{taskId} && $props->{hours}) {
|
if ($props->{taskDate} && $props->{projectId} && $props->{taskId} && $props->{hours}) {
|
||||||
$taskEntryId = $self->setCollateral("TT_timeEntry","entryId",$props,0,0);
|
$taskEntryId = $self->setCollateral("TT_timeEntry","entryId",$props,0,0);
|
||||||
push(@tasks,$taskEntryId);
|
push(@tasks,$taskEntryId);
|
||||||
|
$tasksToUpdate->{$taskEntryId} = { taskId=>$props->{taskId}, projectId=>$props->{projectId} };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#Delete anything not in the task list
|
#Delete anything not in the task list
|
||||||
$db->write("delete from TT_timeEntry where reportId=? and entryId not in (".$db->quoteAndJoin(\@tasks).")",[$reportId]);
|
$db->write("delete from TT_timeEntry where reportId=? and entryId not in (".$db->quoteAndJoin(\@tasks).")",[$reportId]);
|
||||||
|
|
||||||
|
|
||||||
|
#Update Project Management App if integrated
|
||||||
|
if($self->getValue("pmIntegration")) {
|
||||||
|
foreach my $eid (@tasks) {
|
||||||
|
my $task = $tasksToUpdate->{$eid};
|
||||||
|
my $taskId = $task->{taskId};
|
||||||
|
my $projectId = $task->{projectId};
|
||||||
|
my $pmAsset = WebGUI::Asset::Wobject::ProjectManager->getProjectInstance($session,$projectId);
|
||||||
|
if($pmAsset) {
|
||||||
|
my ($totalHours) = $db->quickArray("select sum(hours) from TT_timeEntry where taskId=?",[$taskId]);
|
||||||
|
$pmAsset->updateProjectTask($taskId,$projectId,$totalHours);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -528,49 +572,6 @@ sub www_manageProjects {
|
||||||
return $ac->render($output,$i18n->get("manage projects screen label"));
|
return $ac->render($output,$i18n->get("manage projects screen label"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
sub _buildUserView {
|
|
||||||
my $self = shift;
|
|
||||||
my $var = $_[0];
|
|
||||||
|
|
||||||
my ($session,$privilege,$form,$db,$dt,$i18n,$user,$eh) = $self->getSessionVars("privilege","form","db","datetime","i18n","user","errorHandler");
|
|
||||||
my $pmAssetId = $self->getValue("pmAssetId");
|
|
||||||
|
|
||||||
if($user->isInGroup($self->get("groupToManage"))) {
|
|
||||||
if($pmAssetId) {
|
|
||||||
#Add link to project dashboard
|
|
||||||
$var->{'project.manage.url'} = "";
|
|
||||||
} else {
|
|
||||||
$var->{'project.manage.url'} = $self->getUrl("func=manageProjects");
|
|
||||||
}
|
|
||||||
$var->{'project.manage.label'} = $i18n->get("project manage label");
|
|
||||||
}
|
|
||||||
|
|
||||||
$var->{'form.header'} = WebGUI::Form::formHeader($session,{
|
|
||||||
action=>$self->getUrl,
|
|
||||||
extras=>q|name="editTimeForm" onsubmit="return validateForm(this);"|
|
|
||||||
});
|
|
||||||
$var->{'form.header'} .= WebGUI::Form::hidden($session, {
|
|
||||||
-name=>"func",
|
|
||||||
-value=>"editTimeEntrySave"
|
|
||||||
});
|
|
||||||
$var->{'form.header'} .= WebGUI::Form::hidden($session, {
|
|
||||||
-name=>"rowTotal",
|
|
||||||
-value=>""
|
|
||||||
});
|
|
||||||
|
|
||||||
$var->{'form.footer'} = WebGUI::Form::formFooter($session);
|
|
||||||
|
|
||||||
$var->{'js.alert.removeRow.error'} = $i18n->echo("There must be at least one row. Please add more rows if you wish to delete this one");
|
|
||||||
$var->{'js.alert.validate.hours.error'} = $i18n->echo("You may not submit more hours than are available during any given week.");
|
|
||||||
$var->{'js.alert.validate.incomplete.error'} = $i18n->echo("The highlighted fields are required if you wish to submit this form.");
|
|
||||||
|
|
||||||
$var->{'form.timetracker'} = $self->www_buildTimeTable($var);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_buildTimeTable {
|
sub www_buildTimeTable {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
@ -581,14 +582,22 @@ sub www_buildTimeTable {
|
||||||
|
|
||||||
return $privilege->insufficient unless ($self->canView);
|
return $privilege->insufficient unless ($self->canView);
|
||||||
|
|
||||||
my $pmAssetId = $self->getValue("pmAssetId");
|
my $pmIntegration = $self->getValue("pmIntegration");
|
||||||
|
|
||||||
my $week = $form->get("week") || $dt->time;
|
my $week = $form->get("week") || $dt->time;
|
||||||
|
|
||||||
|
my $nextWeek = $dt->addToDate($week,0,0,7);
|
||||||
|
my $lastWeek = $dt->addToDate($week,0,0,-7);
|
||||||
|
|
||||||
my $daysInWeek = $self->getDaysInWeek($week);
|
my $daysInWeek = $self->getDaysInWeek($week);
|
||||||
|
|
||||||
my $weekStart = $daysInWeek->{"0"};
|
my $weekStart = $daysInWeek->{"0"};
|
||||||
my $weekEnd = $daysInWeek->{"6"};
|
my $weekEnd = $daysInWeek->{"6"};
|
||||||
|
|
||||||
|
#It's this week, don't allow next week url to be seen
|
||||||
|
$var->{'report.nextWeek.url'} = $self->getUrl("func=view;week=$nextWeek");
|
||||||
|
$var->{'report.lastWeek.url'} = $self->getUrl("func=view;week=$lastWeek");
|
||||||
|
|
||||||
$var->{'time.report.header'} = sprintf($i18n->get("time report header"),$weekEnd);
|
$var->{'time.report.header'} = sprintf($i18n->get("time report header"),$weekEnd);
|
||||||
$var->{'time.report.hours.label'} = $i18n->get("total hours label");
|
$var->{'time.report.hours.label'} = $i18n->get("total hours label");
|
||||||
$var->{'time.report.date.label'} = $i18n->get("time report date label");
|
$var->{'time.report.date.label'} = $i18n->get("time report date label");
|
||||||
|
|
@ -612,11 +621,18 @@ sub www_buildTimeTable {
|
||||||
|
|
||||||
#Build Project List
|
#Build Project List
|
||||||
tie my %projectList, "Tie::IxHash";
|
tie my %projectList, "Tie::IxHash";
|
||||||
if($pmAssetId) {
|
%projectList = $db->buildHash("select a.projectId, a.projectName from TT_projectList a, TT_projectResourceList b where a.assetId=? and a.projectId=b.projectId and b.resourceId=? order by a.projectName",[$self->getId,$user->userId]);
|
||||||
|
|
||||||
|
my $pmAsset;
|
||||||
|
if($pmIntegration) {
|
||||||
#Build project list and task lists from project management app
|
#Build project list and task lists from project management app
|
||||||
} else {
|
my ($pmAssetId) = $db->quickArray("select a.assetId from PM_wobject a, asset b where a.assetId=b.assetId and b.state not like 'trash%'");
|
||||||
%projectList = $db->buildHash("select a.projectId, a.projectName from TT_projectList a, TT_projectResourceList b where a.assetId=? and a.projectId=b.projectId and b.resourceId=? order by a.projectName",[$self->getId,$user->userId]);
|
if($pmAssetId) {
|
||||||
}
|
$pmAsset = WebGUI::Asset->newByDynamicClass($session,$pmAssetId);
|
||||||
|
my %pmProjectList = %{$pmAsset->getProjectList($user->userId)};
|
||||||
|
%projectList = WebGUI::Utility::sortHash((%projectList,%pmProjectList));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $chooseLabel = $i18n->echo("Choose One");
|
my $chooseLabel = $i18n->echo("Choose One");
|
||||||
#Build Task Lists based on Project Ids
|
#Build Task Lists based on Project Ids
|
||||||
|
|
@ -625,25 +641,25 @@ sub www_buildTimeTable {
|
||||||
my $counter = 0;
|
my $counter = 0;
|
||||||
my $js = "{\n";
|
my $js = "{\n";
|
||||||
foreach my $projectId (keys %projectList) {
|
foreach my $projectId (keys %projectList) {
|
||||||
if($pmAssetId) {
|
tie my %taskHash, "Tie::IxHash";
|
||||||
#Build task hash for project management app
|
%taskHash = $db->buildHash("select taskId, taskName from TT_projectTasks where projectId=?",[$projectId]);
|
||||||
} else {
|
if($pmAsset && scalar(keys %taskHash) == 0) {
|
||||||
tie my %taskHash, "Tie::IxHash";
|
my $pmTaskRef = $pmAsset->getTaskList($projectId,$user->userId) || {};
|
||||||
%taskHash = $db->buildHash("select taskId, taskName from TT_projectTasks where projectId=?",[$projectId]);
|
%taskHash = %{$pmTaskRef};
|
||||||
%taskHash = (""=>$chooseLabel,%taskHash);
|
}
|
||||||
$taskList{$projectId} = \%taskHash;
|
%taskHash = (""=>$chooseLabel,%taskHash);
|
||||||
#Build JavaScript Hash
|
$taskList{$projectId} = \%taskHash;
|
||||||
$js .= ",\n" if($counter++ > 0);
|
#Build JavaScript Hash
|
||||||
$js .= qq|"$projectId": {|;
|
$js .= ",\n" if($counter++ > 0);
|
||||||
my $ind = 0;
|
$js .= qq|"$projectId": {|;
|
||||||
foreach my $taskId (keys %taskHash) {
|
my $ind = 0;
|
||||||
next if ($taskId eq "");
|
foreach my $taskId (keys %taskHash) {
|
||||||
my $taskName = $taskHash{$taskId};
|
next if ($taskId eq "");
|
||||||
$js .= ",\n" if($ind++ > 0);
|
my $taskName = $taskHash{$taskId};
|
||||||
$js .= qq| "$taskId":"$taskName"|;
|
$js .= ",\n" if($ind++ > 0);
|
||||||
}
|
$js .= qq| "$taskId":"$taskName"|;
|
||||||
$js .= q| }|;
|
}
|
||||||
}
|
$js .= q| }|;
|
||||||
}
|
}
|
||||||
$js .= "\n};\n";
|
$js .= "\n};\n";
|
||||||
|
|
||||||
|
|
@ -657,7 +673,7 @@ sub www_buildTimeTable {
|
||||||
#Build Report Info
|
#Build Report Info
|
||||||
my $report = $db->quickHashRef("select * from TT_report where resourceId=? and startDate=? and endDate=?",[$resourceId,$weekStart,$weekEnd]);
|
my $report = $db->quickHashRef("select * from TT_report where resourceId=? and startDate=? and endDate=?",[$resourceId,$weekStart,$weekEnd]);
|
||||||
my $reportId = $report->{reportId};
|
my $reportId = $report->{reportId};
|
||||||
$eh->warn($reportId);
|
#$eh->warn($reportId);
|
||||||
#Add Report Stuff to form header
|
#Add Report Stuff to form header
|
||||||
$viewVar->{'form.header'} .= WebGUI::Form::hidden($session, {
|
$viewVar->{'form.header'} .= WebGUI::Form::hidden($session, {
|
||||||
-name=>"reportId",
|
-name=>"reportId",
|
||||||
|
|
@ -674,15 +690,21 @@ sub www_buildTimeTable {
|
||||||
-value=>$weekEnd
|
-value=>$weekEnd
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$viewVar->{'form.header'} .= WebGUI::Form::hidden($session, {
|
||||||
|
-name=>"week",
|
||||||
|
-value=>$week
|
||||||
|
});
|
||||||
|
|
||||||
$viewVar->{'form.header'} .= WebGUI::Form::hidden($session, {
|
$viewVar->{'form.header'} .= WebGUI::Form::hidden($session, {
|
||||||
-name=>"resourceId",
|
-name=>"resourceId",
|
||||||
-value=>$resourceId
|
-value=>$resourceId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
my $reportComplete = $report->{reportComplete};
|
||||||
$viewVar->{'form.isComplete'} = WebGUI::Form::checkbox($session, {
|
$viewVar->{'form.isComplete'} = WebGUI::Form::checkbox($session, {
|
||||||
-name=>"isComplete",
|
-name=>"isComplete",
|
||||||
-value=>1,
|
-value=>1,
|
||||||
-checked=>$report->{reportComplete}
|
-checked=>$reportComplete
|
||||||
});
|
});
|
||||||
|
|
||||||
#Build Entries Loop
|
#Build Entries Loop
|
||||||
|
|
@ -690,16 +712,24 @@ sub www_buildTimeTable {
|
||||||
my $rowCount = 1;
|
my $rowCount = 1;
|
||||||
my @timeEntries = ();
|
my @timeEntries = ();
|
||||||
|
|
||||||
|
my $totalHours = 0;
|
||||||
foreach my $entry (@{$entries}) {
|
foreach my $entry (@{$entries}) {
|
||||||
push (@timeEntries,$self->_buildRow($entry,$rowCount++,\%setDaysHash, \%projectList, \%taskList));
|
my $hash = {};
|
||||||
|
push (@timeEntries,$self->_buildRow($entry,$rowCount++,\%setDaysHash, \%projectList, \%taskList,$hash,$reportComplete));
|
||||||
|
$totalHours += $hash->{'entry.hours'};
|
||||||
}
|
}
|
||||||
|
|
||||||
#Seed time tracker with 10 empty rows
|
$var->{'report.isComplete'} = $reportComplete;
|
||||||
for( my $i = $rowCount; $i < ($rowCount + 10); $i++) {
|
$var->{'time.totalHours'} = $totalHours;
|
||||||
push(@timeEntries,$self->_buildRow(undef,$i,\%setDaysHash, \%projectList, \%taskList));
|
|
||||||
}
|
|
||||||
|
|
||||||
$self->_buildRow(undef,"x",\%setDaysHash, \%projectList, \%taskList,$var);
|
#Seed time tracker with 10 empty rows and build the dummy row
|
||||||
|
unless($reportComplete) {
|
||||||
|
for( my $i = $rowCount; $i < ($rowCount + 10); $i++) {
|
||||||
|
push(@timeEntries,$self->_buildRow(undef,$i,\%setDaysHash, \%projectList, \%taskList));
|
||||||
|
}
|
||||||
|
|
||||||
|
$self->_buildRow(undef,"x",\%setDaysHash, \%projectList, \%taskList,$var);
|
||||||
|
}
|
||||||
|
|
||||||
$var->{'time.entry.loop'} = \@timeEntries;
|
$var->{'time.entry.loop'} = \@timeEntries;
|
||||||
$viewVar->{'time.report.rows.total'} = (scalar(@timeEntries)+1);
|
$viewVar->{'time.report.rows.total'} = (scalar(@timeEntries)+1);
|
||||||
|
|
@ -718,6 +748,7 @@ sub _buildRow {
|
||||||
my $projectList = $_[3];
|
my $projectList = $_[3];
|
||||||
my $taskList = $_[4];
|
my $taskList = $_[4];
|
||||||
my $var = $_[5] || {};
|
my $var = $_[5] || {};
|
||||||
|
my $reportComplete = $_[6] || 0;
|
||||||
|
|
||||||
my $entryId = $entry->{entryId} || "new";
|
my $entryId = $entry->{entryId} || "new";
|
||||||
$var->{'row.id'} = "row_$rowCount";
|
$var->{'row.id'} = "row_$rowCount";
|
||||||
|
|
@ -733,54 +764,65 @@ sub _buildRow {
|
||||||
|
|
||||||
#Entry Date
|
#Entry Date
|
||||||
my $chooseLabel = $i18n->echo("Choose One");
|
my $chooseLabel = $i18n->echo("Choose One");
|
||||||
|
$var->{'entry.hours'} = $entry->{hours};
|
||||||
tie my %days, "Tie::IxHash";
|
if($reportComplete) {
|
||||||
%days = (""=>$chooseLabel, %{$daysInWeek});
|
$var->{'form.date'} = $entry->{taskDate};
|
||||||
$var->{'form.date'} = WebGUI::Form::selectBox($session,{
|
$var->{'form.project'} = $projectList->{$projectId};
|
||||||
|
|
||||||
|
my $taskHash = $taskList->{$projectId};
|
||||||
|
$var->{'form.task'} = $taskHash->{$entry->{taskId}};
|
||||||
|
$var->{'form.hours'} = $var->{'entry.hours'};
|
||||||
|
$var->{'form.comments'} = $entry->{comments};
|
||||||
|
|
||||||
|
} else {
|
||||||
|
tie my %days, "Tie::IxHash";
|
||||||
|
%days = (""=>$chooseLabel, %{$daysInWeek});
|
||||||
|
$var->{'form.date'} = WebGUI::Form::selectBox($session,{
|
||||||
-name=>"taskDate_$rowCount",
|
-name=>"taskDate_$rowCount",
|
||||||
-value=>$entry->{taskDate},
|
-value=>$entry->{taskDate},
|
||||||
-options=>\%days,
|
-options=>\%days,
|
||||||
-extras=>qq|class="date-select"|
|
-extras=>qq|class="date-select"|
|
||||||
});
|
});
|
||||||
|
|
||||||
my $taskName = "taskId_$rowCount";
|
my $taskName = "taskId_$rowCount";
|
||||||
$taskId = "taskId_".$rowCount."_formId";
|
$taskId = "taskId_".$rowCount."_formId";
|
||||||
$var->{'form.project'} = WebGUI::Form::selectBox($session,{
|
$var->{'form.project'} = WebGUI::Form::selectBox($session,{
|
||||||
-name=>"projectId_$rowCount",
|
-name=>"projectId_$rowCount",
|
||||||
-options=>$projectList,
|
-options=>$projectList,
|
||||||
-value=>$projectId,
|
-value=>$projectId,
|
||||||
-extras=>qq|onchange="changeOptions(this,document.getElementById('$taskId'));" class="pt-select"|
|
-extras=>qq|onchange="changeOptions(this,document.getElementById('$taskId'));" class="pt-select"|
|
||||||
});
|
});
|
||||||
|
|
||||||
#Entry Task
|
#Entry Task
|
||||||
tie my %taskHash, "Tie::IxHash";
|
tie my %taskHash, "Tie::IxHash";
|
||||||
%taskHash = (""=>$chooseLabel,%taskHash);
|
%taskHash = (""=>$chooseLabel,%taskHash);
|
||||||
if($projectId) {
|
if($projectId) {
|
||||||
%taskHash = %{$taskList->{$projectId}};
|
#$eh->warn($projectId);
|
||||||
}
|
%taskHash = %{$taskList->{$projectId}};
|
||||||
|
}
|
||||||
|
|
||||||
$var->{'form.task'} = WebGUI::Form::selectBox($session,{
|
$var->{'form.task'} = WebGUI::Form::selectBox($session,{
|
||||||
-name=>$taskName,
|
-name=>$taskName,
|
||||||
-options=>\%taskHash,
|
-options=>\%taskHash,
|
||||||
-value=>$entry->{taskId},
|
-value=>$entry->{taskId},
|
||||||
-extras=>qq|class="pt-select"|
|
-extras=>qq|class="pt-select"|
|
||||||
});
|
});
|
||||||
|
|
||||||
#Entry Hours
|
#Entry Hours
|
||||||
$var->{'form.hours'} = WebGUI::Form::float($session, {
|
$var->{'form.hours'} = WebGUI::Form::float($session, {
|
||||||
-name=>"hours_$rowCount",
|
-name=>"hours_$rowCount",
|
||||||
-value=>$entry->{hours},
|
-value=>$var->{'entry.hours'},
|
||||||
-size=>5,
|
-size=>5,
|
||||||
-extras=>qq|onchange="recalcHours();"|
|
-extras=>qq|onchange="recalcHours();"|
|
||||||
});
|
});
|
||||||
|
|
||||||
#Entry Comments
|
#Entry Comments
|
||||||
$var->{'form.comments'} = WebGUI::Form::text($session, {
|
$var->{'form.comments'} = WebGUI::Form::text($session, {
|
||||||
-name=>"comments_$rowCount",
|
-name=>"comments_$rowCount",
|
||||||
-value=>$entry->{comments},
|
-value=>$entry->{comments},
|
||||||
-size=>40
|
-size=>40
|
||||||
});
|
});
|
||||||
|
}
|
||||||
$var->{'delete.url'} = "";
|
$var->{'delete.url'} = "";
|
||||||
return $var;
|
return $var;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue