73 lines
2.5 KiB
PHP
73 lines
2.5 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
/**
|
|
* The change view file of story 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 Wang Yidong <yidong@easycorp.ltd>
|
|
* @package story
|
|
* @link https://www.zentao.net
|
|
*/
|
|
namespace zin;
|
|
include './affected.html.php';
|
|
|
|
data('activeMenuID', $story->type);
|
|
jsVar('storyID', $story->id);
|
|
jsVar('storyType', $story->type);
|
|
jsVar('rawModule', $this->app->rawModule);
|
|
jsVar('isMultiple', count($reviewers) > 1);
|
|
jsVar('isLastOne', $isLastOne);
|
|
|
|
if($story->isParent == '1') $fields['estimate']['readonly'] = true;
|
|
|
|
$formItems = array();
|
|
foreach($fields as $field => $attr)
|
|
{
|
|
$width = zget($attr, 'width', '1/3');
|
|
$fieldName = zget($attr, 'name', $field);
|
|
$control = array();
|
|
$control['type'] = $attr['control'];
|
|
if(!empty($attr['options'])) $control['items'] = $attr['options'];
|
|
if($field == 'duplicateStory')
|
|
{
|
|
$control['items'] = createLink('story', 'ajaxGetDuplicatedStories', "storyID=$story->id&productID=$story->product");
|
|
$control['required'] = false;
|
|
$control['maxItemsCount'] = 100;
|
|
}
|
|
|
|
$value = $field == 'estimate' ? helper::formatHours($attr['default']) : $attr['default'];
|
|
$formItems[$field] = formRow
|
|
(
|
|
in_array($field, array('assignedTo', 'duplicateStory', 'pri', 'estimate')) ? setID($field . 'Box') : null,
|
|
in_array($field, array('closedReason', 'duplicateStory', 'pri', 'estimate', 'status')) ? set::hidden(true) : null,
|
|
|
|
$field == 'closedReason' ? setID('rejectedReasonBox') : null,
|
|
$field == 'assignedTo' ? set::hidden(!$isLastOne) : null,
|
|
$field == 'result' ? on::change('switchShow(e.target);') : null,
|
|
$field == 'closedReason' ? on::change('setStory(e.target);') : null,
|
|
|
|
formGroup
|
|
(
|
|
set::width($width),
|
|
set::name($fieldName),
|
|
set::label($attr['title']),
|
|
set::control($control),
|
|
set::value($value),
|
|
set::required($attr['required']),
|
|
set::readonly(!empty($attr['readonly']))
|
|
)
|
|
);
|
|
}
|
|
if(strpos('or,lite', $this->config->vision) === false) $formItems['affected'] = $getAffectedTabs($story, $users);
|
|
|
|
modalHeader();
|
|
div
|
|
(
|
|
setClass('panel-form mx-auto'),
|
|
formPanel($formItems),
|
|
h::hr(setClass('mt-6 mb-6')),
|
|
history(set::objectID($story->id))
|
|
);
|
|
|
|
render();
|