207 lines
6.0 KiB
PHP
207 lines
6.0 KiB
PHP
<?php
|
|
namespace zin;
|
|
|
|
jsVar('model', $project->model);
|
|
jsVar('labelClass', $config->project->labelClass);
|
|
jsVar('longTime', $lang->project->longTime);
|
|
jsVar('weekend', $config->execution->weekend);
|
|
jsVar('unmodifiableProducts', $unmodifiableProducts);
|
|
jsVar('unmodifiableBranches', $unmodifiableBranches);
|
|
jsVar('unmodifiableMainBranches', $unmodifiableMainBranches);
|
|
jsVar('multiBranchProducts', $multiBranchProducts);
|
|
jsVar('errorSameProducts', $lang->project->errorSameProducts);
|
|
jsVar('beginLessThanParent', $lang->project->beginLessThanParent);
|
|
jsVar('endGreatThanParent', $lang->project->endGreatThanParent);
|
|
jsVar('ignore', $lang->project->ignore);
|
|
jsVar('unLinkProductTip', $lang->project->unLinkProductTip);
|
|
jsVar('allProducts', $allProducts);
|
|
jsVar('branchGroups', $branchGroups);
|
|
jsVar('programTip', $lang->program->tips);
|
|
jsVar('projectID', $project->id);
|
|
jsVar('from', $from);
|
|
|
|
$projectModelItems = array();
|
|
foreach($lang->project->modelList as $key => $text)
|
|
{
|
|
if(empty($key)) continue;
|
|
|
|
$projectModelItems[] = array
|
|
(
|
|
'active' => ($key == $model),
|
|
'class' => 'model-drop',
|
|
'data-key' => $key,
|
|
'data-value' => $text,
|
|
'text' => $text
|
|
);
|
|
}
|
|
|
|
$productElements = array();
|
|
if($linkedProducts)
|
|
{
|
|
foreach($linkedProducts as $productID => $product) $productElements[] = formHidden('products[]', $productID);
|
|
}
|
|
|
|
$labelClass = $config->project->labelClass[$model];
|
|
$disableParent = false;
|
|
$delta = $project->end == LONG_TIME ? 999 : (strtotime($project->end) - strtotime($project->begin)) / 3600 / 24 + 1;
|
|
if(!isset($programList[$project->parent]))
|
|
{
|
|
$disableParent = true;
|
|
$programList = array($project->parent => $program->name);
|
|
}
|
|
|
|
useData('title', null);
|
|
formPanel
|
|
(
|
|
to::heading(div
|
|
(
|
|
setClass('panel-title text-lg'),
|
|
$title,
|
|
$disableModel ?
|
|
btn
|
|
(
|
|
set::id('project-model'),
|
|
setClass("$labelClass h-5 px-2"),
|
|
zget($lang->project->modelList, $model, '')
|
|
) :
|
|
dropdown
|
|
(
|
|
btn
|
|
(
|
|
set::id('project-model'),
|
|
setClass("$labelClass h-5 px-2"),
|
|
zget($lang->project->modelList, $model, '')
|
|
),
|
|
set::placement('bottom'),
|
|
set::menu(array('style' => array('color' => 'var(--color-fore)'))),
|
|
set::items($projectModelItems)
|
|
)
|
|
)),
|
|
on::click('.addLine', 'addNewLine'),
|
|
on::click('.removeLine', 'removeLine'),
|
|
on::click('.project-type-1', 'changeType(1)'),
|
|
on::click('.project-type-0', 'changeType(0)'),
|
|
on::click('.project-stageBy-0', 'changeStageBy(0)'),
|
|
on::click('.project-stageBy-1', 'changeStageBy(1)'),
|
|
on::change('[name^=products]', 'productChange'),
|
|
on::change('[name^=branch]', 'branchChange'),
|
|
on::change('#parent', 'setParentProgram'),
|
|
on::change('#begin', 'computeWorkDays'),
|
|
on::change('#end', 'computeWorkDays'),
|
|
on::change('[name=delta]', 'setDate'),
|
|
on::change('[name=future]', 'toggleBudget'),
|
|
on::change('[name=newProduct]', 'addProduct'),
|
|
formHidden('parent', $project->parent),
|
|
formHidden('model', $project->model),
|
|
formHidden('hasProduct', $project->hasProduct),
|
|
formGroup
|
|
(
|
|
set::width('1/2'),
|
|
set::name('name'),
|
|
set::value($project->name),
|
|
set::label($lang->project->name),
|
|
set::strong(true)
|
|
),
|
|
(isset($config->setCode) && $config->setCode == 1) ? formGroup
|
|
(
|
|
set::width('1/2'),
|
|
set::name('code'),
|
|
set::value($project->code),
|
|
set::label($lang->project->code),
|
|
set::strong(true)
|
|
) : null,
|
|
formGroup
|
|
(
|
|
set::width('1/4'),
|
|
set::label($lang->project->PM),
|
|
picker
|
|
(
|
|
set::name('PM'),
|
|
set::value($project->PM),
|
|
set::items($PMUsers)
|
|
)
|
|
),
|
|
formRow
|
|
(
|
|
formGroup
|
|
(
|
|
set::width('1/2'),
|
|
set::label($lang->project->planDate),
|
|
set::required(true),
|
|
inputGroup
|
|
(
|
|
datePicker
|
|
(
|
|
set::name('begin'),
|
|
set('id', 'begin'),
|
|
set::value($project->begin),
|
|
set::placeholder($lang->project->begin),
|
|
set::required(true)
|
|
),
|
|
$lang->project->to,
|
|
datePicker
|
|
(
|
|
set::name('end'),
|
|
set('id', 'end'),
|
|
set::value($project->end),
|
|
set::placeholder($lang->project->end),
|
|
set::required(true),
|
|
set::disabled($project->end == LONG_TIME)
|
|
)
|
|
)
|
|
),
|
|
formGroup
|
|
(
|
|
set::width('1/2'),
|
|
setClass('items-center'),
|
|
radioList
|
|
(
|
|
set::name('delta'),
|
|
set::value($delta),
|
|
set::inline(true),
|
|
set::items($lang->project->endList)
|
|
)
|
|
)
|
|
),
|
|
formGroup
|
|
(
|
|
set::label($lang->project->desc),
|
|
editor
|
|
(
|
|
set::name('desc'),
|
|
html($project->desc),
|
|
set::placeholder($lang->project->editorPlaceholder)
|
|
)
|
|
),
|
|
formRow
|
|
(
|
|
set::id('aclList'),
|
|
formGroup
|
|
(
|
|
set::name('acl'),
|
|
set::label($lang->project->acl),
|
|
set::control('radioList'),
|
|
set::items($lang->project->aclList),
|
|
$programID ? set::items($lang->project->subAclList) : set::items($lang->project->aclList),
|
|
set::value($project->acl)
|
|
)
|
|
),
|
|
formGroup
|
|
(
|
|
set::width('1/2'),
|
|
set::label($lang->whitelist),
|
|
picker
|
|
(
|
|
set::name('whitelist[]'),
|
|
set::value($project->whitelist),
|
|
set::items($users),
|
|
set::multiple(true)
|
|
)
|
|
),
|
|
$productElements ? $productElements : null
|
|
);
|
|
|
|
useData('title', $title);
|
|
|
|
render();
|