| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /**
- * The story view file of projectstory 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 Tingting Dai <daitingting@easycorp.ltd>
- * @package projectstory
- * @link https://www.zentao.net
- */
- namespace zin;
- include($this->app->getModuleRoot() . 'ai/ui/promptmenu.html.php');
- jsVar('gradeGroup', $gradeGroup);
- $projectChangeLink = createLink('projectStory', 'story', "projectID={projectID}&productID=0&branch=&browseType=$browseType¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&from=$from&blockID=$blockID");
- $insertListLink = createLink('projectStory', 'story', "projectID=$projectID&productID=$productID&branch=$branch&browseType=$browseType¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&from=$from&blockID={blockID}");
- formPanel
- (
- setID('zentaolist'),
- setClass('mb-4-important'),
- set::title(sprintf($this->lang->doc->insertTitle, $this->lang->doc->zentaoList['projectStory'])),
- set::actions(array()),
- set::showExtra(false),
- to::titleSuffix
- (
- span
- (
- setClass('text-muted text-sm text-gray-600 font-light'),
- span(setClass('text-warning mr-1'), icon('help')),
- $lang->doc->previewTip
- )
- ),
- formRow
- (
- formGroup
- (
- set::width('1/2'),
- set::name('project'),
- set::label($lang->doc->project),
- set::control(array('required' => false)),
- set::items($projects),
- set::value($projectID),
- set::required(),
- span
- (
- setClass('error-tip text-danger hidden'),
- $lang->doc->emptyError
- ),
- on::change('[name="project"]')->do("loadModal('$projectChangeLink'.replace('{projectID}', $(this).val()))")
- )
- )
- );
- $queryMenuLink = createLink('projectStory', 'story', "projectID=$projectID&productID=$productID&branch=$branch&browseType=bySearch¶m={queryID}&storyType=$storyType&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&from=$from&blockID=$blockID");
- featureBar
- (
- set::param($param),
- set::current($browseType),
- set::link(createLink('projectStory', 'story', "projectID=$projectID&productID=$productID&branch=$branch&browseType={key}¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&from=$from&blockID=$blockID")),
- set::queryMenuLinkCallback(array(function ($key) use ($queryMenuLink) {
- return str_replace('{queryID}', (string)$key, $queryMenuLink);
- })),
- set::isModal(),
- set::modalTarget('#stories_table'),
- li(searchToggle
- (
- set::simple(),
- set::open($browseType == 'bysearch'),
- set::module($config->product->search['module']),
- set::target('#docSearchForm'),
- set::onSearch(jsRaw('function(){$(this.element).closest(".modal").find("#featureBar .nav-item>.active").removeClass("active").find(".label").hide()}'))
- ))
- );
- div(setID('docSearchForm'));
- /* datatable columns. */
- $config->story->dtable->fieldlist['title']['title'] = $lang->story->title;
- $config->$storyType->dtable->fieldlist['assignedto']['assignlink']['module'] = $storyType;
- $setting = $this->loadmodel('datatable')->getsetting('product', 'browse', false, $storyType);
- if($storyType != 'story') unset($setting['taskcount'], $setting['bugcount'], $setting['casecount']);
- if($storyType == 'story' && $config->edition == 'ipd') unset($setting['roadmap']);
- $setting['title']['nestedtoggle'] = false;
- if(isset($setting['actions'])) unset($setting['actions']);
- foreach($setting as $key => $col)
- {
- if($key == 'assignedTo') $setting[$key]['type'] = 'user';
- $setting[$key]['sortType'] = false;
- if(isset($col['link'])) unset($setting[$key]['link']);
- if($key == 'title') $setting[$key]['link'] = array('url' => helper::createLink('{type}', 'view', 'storyID={id}&version={version}¶m=0&storyType={type}'), 'data-toggle' => 'modal', 'data-size' => 'lg');
- }
- $cols = array_values($setting);
- /* datatable data. */
- $data = array();
- $options = array('storytasks' => $storyTasks, 'storybugs' => $storyBugs, 'storycases' => $storyCases, 'modules' => $modules, 'plans' => (isset($plans) ? $plans : array()), 'users' => $users, 'execution' => $project, 'roadmaps' => $roadmaps, 'reports' => $reports);
- foreach($stories as $story)
- {
- $story->rawmodule = $story->module;
- $story->from = $app->tab;
- $options['branches'] = zget($branchOptions, $story->product, array());
- $data[] = $this->story->formatStoryForList($story, $options, $storyType, $maxGradeGroup);
- }
- $footToolbar = array(array('text' => $lang->doc->insertText, 'data-on' => 'click', 'data-call' => "insertListToDoc('#projectStories', 'projectStory', $blockID, '$insertListLink')"));
- if($from == 'ai') $footToolbar = array(array('text' => $lang->doc->insertText, 'data-on' => 'click', 'data-call' => "insertListToAI('#projectStories', 'story')"));
- dtable
- (
- set::id('projectStories'),
- set::userMap($users),
- set::checkable(),
- set::cols($cols),
- set::data($data),
- set::noNestedCheck(),
- set::orderBy($orderBy),
- set::onRenderCell(jsRaw('window.renderCell')),
- set::footPager(usePager()),
- set::emptyTip($lang->story->noStory),
- set::footToolbar($footToolbar),
- set::afterRender(jsCallback()->call('toggleCheckRows', $idList)),
- set::onCheckChange(jsRaw('window.checkedChange')),
- set::height(400)
- );
- render();
|