znt/module/story/ui/batchtotask.html.php

74 lines
4.6 KiB
PHP

<?php
declare(strict_types=1);
/**
* The UI 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 chen.tao <chentao@easycorp.ltd>
* @package story
* @link https://www.zentao.net
*/
namespace zin;
data('activeMenuID', 'story');
jsVar('executionID', $executionID);
jsVar('langPreview', $lang->preview);
jsVar('hasParent', $hasParent);
jsVar('hasERUR', $hasERUR);
jsVar('errorParentSplitTask', $lang->story->errorParentSplitTask);
jsVar('errorERURSplitTask', $lang->story->errorERURSplitTask);
jsVar('copyStoryTitleTip', $lang->task->copyStoryTitle);
$fields = array();
$fields['id'] = array('name' => 'id', 'label' => $lang->idAB, 'control' => 'index', 'width' => '32px');
$fields['module'] = array_merge(array('name' => 'module', 'label' => $lang->task->module, 'width' => '200px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $modules, 'control' => 'picker'), $config->task->form->batchcreate['module']);
$fields['story'] = array_merge(array('name' => 'story', 'label' => $lang->task->story, 'width' => '250px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $storyPairs, 'control' => 'picker'), $config->task->form->batchcreate['story']);
$fields['name'] = array_merge(array('name' => 'name', 'label' => $lang->task->name, 'width' => '250px', 'ditto' => false, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'text'), $config->task->form->batchcreate['name']);
$fields['type'] = array_merge(array('name' => 'type', 'label' => $lang->typeAB, 'width' => '140px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $lang->task->typeList, 'control' => 'picker'), $config->task->form->batchcreate['type']);
$fields['assignedTo'] = array_merge(array('name' => 'assignedTo', 'label' => $lang->task->assignedTo, 'width' => '128px', 'ditto' => false, 'defaultDitto' => 'off', 'items' => $members, 'control' => array('control' => 'taskAssignedTo', 'manageLink' => ($manageLink ? $manageLink : ''))), $config->task->form->batchcreate['assignedTo']);
$fields['estimate'] = array_merge(array('name' => 'estimate', 'label' => $lang->task->estimateAB, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'text'), $config->task->form->batchcreate['estimate']);
$fields['estStarted'] = array_merge(array('name' => 'estStarted', 'label' => $lang->task->estStarted, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'on', 'filter' => 'trim', 'control' => 'date'), $config->task->form->batchcreate['estStarted']);
$fields['deadline'] = array_merge(array('name' => 'deadline', 'label' => $lang->task->deadline, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'on', 'filter' => 'trim', 'control' => 'date'), $config->task->form->batchcreate['deadline']);
$fields['pri'] = array_merge(array('name' => 'pri', 'label' => $lang->task->pri, 'width' => '110px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $lang->task->priList, 'control' => 'priPicker'), $config->task->form->batchcreate['pri']);
$data = array();
foreach($stories as $storyID => $story)
{
if(str_contains(',draft,closed,', ",{$story->status},")) continue;
$task = new stdclass();
$task->id = count($data) + 1;
$task->module = 0;
$task->story = $storyID;
$task->name = $story->title;
$task->pri = 3;
$task->estimate = $hourPointValue ? $story->estimate * $hourPointValue : $story->estimate;
$task->type = $taskType;
$task->assignedTo = '';
$task->estStarted = '';
$task->deadline = '';
if(in_array('module', $syncFields)) $task->module = $story->module;
if(in_array('pri', $syncFields)) $task->pri = $story->pri;
if(in_array('assignedTo', $syncFields)) $task->assignedTo = $story->assignedTo;
$data[] = $task;
}
formBatchPanel
(
setID('dataform'),
set::title($lang->story->batchToTask),
set::items($fields),
set::maxRows(count($data)),
set::data($data),
set::onRenderRow(jsRaw('renderRowData')),
on::change('[data-name="module"]', 'setStories'),
on::change('[data-name="story"]', 'setStoryRelated'),
on::click('.copy-title-btn', 'copyStoryTitle'),
formHidden('syncFields', implode(',', $syncFields))
);
render();