115 lines
3.7 KiB
PHP
115 lines
3.7 KiB
PHP
<?php
|
|
namespace zin;
|
|
|
|
$confirmDeleteLang['program'] = $lang->program->confirmDelete;
|
|
$confirmDeleteLang['project'] = $lang->project->confirmDelete;
|
|
jsVar('confirmDeleteLang', $confirmDeleteLang);
|
|
|
|
$cols = $this->loadModel('datatable')->getSetting('program');
|
|
$data = array();
|
|
foreach($programs as $program)
|
|
{
|
|
if(empty($program->parent)) $program->parent = null;
|
|
|
|
/* Delay status. */
|
|
if($program->status != 'done' and $program->status != 'closed' and $program->status != 'suspended')
|
|
{
|
|
$delay = helper::diffDate(helper::today(), $program->end);
|
|
if($delay > 0)
|
|
{
|
|
$program->postponed = true;
|
|
$program->delayInfo = sprintf($lang->project->delayInfo, $delay);
|
|
}
|
|
}
|
|
|
|
/* PM. */
|
|
if(!empty($program->PM))
|
|
{
|
|
$userName = zget($users, $program->PM);
|
|
$program->PMAvatar = $usersAvatar[$program->PM];
|
|
$program->PM = $userName;
|
|
}
|
|
|
|
/* Calculate budget.*/
|
|
$programBudget = $this->loadModel('project')->getBudgetWithUnit($program->budget);
|
|
$program->budget = $program->budget != 0 ? zget($lang->project->currencySymbol, $program->budgetUnit) . ' ' . $programBudget : $lang->project->future;
|
|
|
|
/* Progress. */
|
|
if(isset($progressList[$program->id])) $program->progress = round($progressList[$program->id]);
|
|
|
|
$program->isParent = false;
|
|
if($program->parent > 0 and isset($programs[$program->parent])) $programs[$program->parent]->isParent = true;
|
|
|
|
/* Set invested hours. */
|
|
if(!isset($program->invested)) $program->invested = 0;
|
|
if(str_contains($program->end, LONG_TIME)) $program->end = $lang->program->longTime;
|
|
|
|
/* Actions. */
|
|
$program->actions = array();
|
|
$actions = $this->program->buildActions($program);
|
|
foreach($actions as $action)
|
|
{
|
|
if(is_object($action)) $action->name = $program->type . '_' . $action->name;
|
|
if(!is_object($action)) $action = $program->type . '_' . $action;
|
|
|
|
if(isset($action->items)) foreach($action->items as $idx => $item) $action->items[$idx]->name = $program->type . '_' . $item->name;
|
|
$program->actions[] = $action;
|
|
}
|
|
|
|
$data[] = $program;
|
|
}
|
|
|
|
jsVar('langManDay', $lang->program->manDay);
|
|
jsVar('summeryTpl', $summary);
|
|
|
|
featureBar
|
|
(
|
|
set::current($status),
|
|
set::linkParams("status={key}&orderBy=$orderBy"),
|
|
li(searchToggle(set::module('program')))
|
|
);
|
|
|
|
toolbar
|
|
(
|
|
item(set
|
|
([
|
|
'text' => $lang->export,
|
|
'icon' => 'export',
|
|
'class' => 'ghost',
|
|
'url' => helper::createLink('program', 'export', "status={$status}&orderBy={$orderBy}"),
|
|
'data-toggle' => 'modal'
|
|
])),
|
|
item(set
|
|
([
|
|
'text' => $lang->program->createProject,
|
|
'icon' => 'plus',
|
|
'class' => 'btn secondary',
|
|
'url' => $this->createLink('project', 'createGuide'),
|
|
'data-toggle' => 'modal',
|
|
])),
|
|
item(set
|
|
([
|
|
'text' => $lang->program->create,
|
|
'icon' => 'plus',
|
|
'class'=> 'btn primary',
|
|
'url' => $this->createLink('program', 'create')
|
|
])),
|
|
);
|
|
|
|
$footToolbar = common::hasPriv('project', 'batchEdit') ? array('items' => array(array('text' => $lang->project->edit, 'class' => 'btn batch-btn size-sm secondary', 'data-url' => createLink('project', 'batchEdit')))) : null;
|
|
dtable
|
|
(
|
|
set::cols($cols),
|
|
set::data($data),
|
|
set::nested(true),
|
|
set::onRenderCell(jsRaw('window.renderCell')),
|
|
set::canRowCheckable(jsRaw("function(rowID){return this.getRowInfo(rowID).data.type == 'project';}")),
|
|
set::footPager(usePager()),
|
|
set::footer(jsRaw('function(){return window.footerGenerator.call(this);}')),
|
|
set::customCols(true),
|
|
set::userMap($this->loadModel('user')->getPairs('noletter|pofirst')),
|
|
set::footToolbar($footToolbar),
|
|
);
|
|
|
|
render();
|