znt/module/product/ui/project.html.php

139 lines
4.8 KiB
PHP

<?php
declare(strict_types=1);
/**
* The UI file of product module of ZenTaoPMS.
*
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author chen.tao <chentao@easycorp.ltd>
* @package product
* @link https://www.zentao.net
*/
namespace zin;
dropmenu(set::text($product->name));
/* Set feature bar. */
featureBar
(
set::current($status),
set::linkParams("status={key}&productID={$product->id}&branch={$branchID}&involved={$involved}&orderBy={$orderBy}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"),
checkbox
(
set::id('involved'),
set::name('involved'),
set::checked($this->cookie->involved),
set::text($lang->project->mine)
),
item(set(array
(
'icon' => "help",
'text' => '',
'title' => $lang->product->projectInfo
)))
);
/* Set right toolbar. */
if($branchStatus != 'closed')
{
toolbar
(
!hasPriv('project', 'manageProducts') ? null : item(set(array
(
'icon' => 'link',
'text' => $lang->product->link2Project,
'class' => "secondary",
'url' => '#link2Project',
'data-toggle' => 'modal'
))),
!hasPriv('project', 'create') ? null : item(set(array
(
'icon' => 'plus',
'text' => $lang->project->create,
'class' => "primary create-project-btn",
'url' => $this->createLink('project', 'createGuide', "programID=$product->program&from=project&productID={$product->id}&branchID=$branchID", '', true),
'data-toggle' => 'modal',
'data-type' => 'ajax'
)))
);
}
/* Create link2Project modal. */
modal
(
set::id('link2Project'),
set::title($lang->product->link2Project),
set::footerClass('form-actions'),
setData('size', '500px'),
on::click('#saveButton', 'link2Project(e)'),
to::footer
(
btn(setClass('primary'), set::id('saveButton'), $lang->save),
btn(setClass('default'), set('data-dismiss', 'modal'), $lang->cancel)
),
picker(setClass('pt-2'), set::name('project'), set::items($projects)),
input(set::type('hidden'), set::name('product'), set::value($product->id)),
input(set::type('hidden'), set::name('branch'), set::value($branchID))
);
/* Get column settings of the data table. */
foreach($config->productProject->showFields as $showField)
{
if(isset($config->project->dtable->fieldList[$showField])) $cols[$showField] = $config->project->dtable->fieldList[$showField];
if($showField == 'program')
{
$cols[$showField]['name'] = 'programName';
$cols[$showField]['fixed'] = 'left';
$cols[$showField]['type'] = 'shortTitle';
$cols[$showField]['checkbox'] = false;
$cols[$showField]['title'] = $lang->project->program;
}
$cols[$showField]['sortType'] = false;
$cols[$showField]['group'] = 0;
}
$cols['id']['checkbox'] = false;
if(!in_array($this->config->systemMode, array('ALM', 'PLM'))) unset($cols['program']);
if(!str_contains('all,undone', $status)) unset($cols['status']);
/* Set extend fields for workflow. */
$extendFieldList = $this->product->getFlowExtendFields();
foreach($extendFieldList as $field => $name)
{
$extCol = $config->product->dtable->extendField;
$extCol['name'] = $field;
$extCol['title'] = $name;
$cols[$field] = $extCol;
}
/* Process data. */
$waitCount = 0;
$doingCount = 0;
$suspendedCount = 0;
$closedCount = 0;
foreach($projectStats as $project)
{
if($project->status == 'wait') $waitCount ++;
if($project->status == 'doing') $doingCount ++;
if($project->status == 'suspended') $suspendedCount ++;
if($project->status == 'closed') $closedCount ++;
}
$summary = sprintf($lang->project->summary, count($projectStats));
if($status == 'all') $summary = sprintf($lang->project->allSummary, count($projectStats), $waitCount, $doingCount, $suspendedCount, $closedCount);
dtable
(
set::cols($cols),
set::data(array_values($projectStats)),
set::onRenderCell(jsRaw('function(result, data){return window.renderCustomCell(result, data);}')),
set::footer(array(array('html' => $summary, 'className' => "text-dark"), 'flex', 'pager')),
set::footPager(usePager()),
set::emptyTip($lang->project->empty),
set::createTip($lang->project->create),
set::createLink($branchStatus != 'closed' && hasPriv('project', 'create') ? createLink('project', 'createGuide', "programID=$product->program&from=project&productID={$product->id}&branchID=$branchID", '', true) : ''),
set::createAttr("data-toggle='modal'")
);
render();