| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- <?php
- /**
- * The audit view file of review module of ZenTaoPMS.
- * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(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 Mengyi Liu
- * @package review
- * @link https://www.zentao.net
- */
- namespace zin;
- $sideWidth = '550';
- div
- (
- setClass('detail-header row gap-2 items-center flex-none'),
- backBtn
- (
- setClass('mr-2 size-md primary-outline'),
- set::icon('back'),
- set::text($lang->goback)
- ),
- entityTitle(setClass('min-w-0'), set::id($review->id), set::object($review), set::title($review->title), set::titleClass('text-lg text-clip font-bold'), set::type('review'), set::joinerClass('text-lg'))
- );
- $reviewData = json_decode($review->data, true);
- $showWithPageEditor = isset($reviewData['$migrate']) && $reviewData['$migrate'] == 'html';
- jsVar('showWithPageEditor', $showWithPageEditor);
- $articleContent = array();
- $docID = isset($doc->id) ? $doc->id : 0;
- $bookID = isset($bookID) ? $bookID : 0;
- $isTemplate = !empty($review->template) && empty($review->doc);
- if(empty($review->template) && empty($review->doc) && $review->category == 'PP')
- {
- $from = 'doc';
- $ganttType = 'gantt';
- $productID = $review->product;
- $projectID = $review->project;
- include $app->getModuleRoot() . 'programplan/ui/ganttfields.html.php';
- data('showFields', 'PM,status,deadline');
- $ganttFields['column_text'] = $lang->programplan->ganttBrowseType['gantt'];
- $articleContent[] = gantt
- (
- set('ganttLang', $ganttLang),
- set('ganttFields', $ganttFields),
- set('options', $plans),
- set('showChart', false),
- set('colsWidth', $sideWidth - 40),
- set('height', '300')
- );
- }
- elseif($isTemplate)
- {
- if($config->requestType == 'PATH_INFO' && !empty($review->data))
- {
- preg_match_all("/data-fetcher='([^']+\?(m=doc&f=zentaoList&[^']+))'/", $review->data, $matches);
- foreach($matches[2] as $i => $httpQuery)
- {
- parse_str($httpQuery, $queries);
- $moduleName = $queries[$config->moduleVar];
- $methodName = $queries[$config->methodVar];
- unset($queries[$config->moduleVar], $queries[$config->methodVar], $queries[$config->viewVar]);
- $url = helper::createLink($moduleName, $methodName, http_build_query($queries));
- $review->data = str_replace($matches[1][$i], $url, $review->data);
- }
- }
- $articleContent[] = empty($review->data) ? null : pageEditor
- (
- set::size('auto'),
- set::readonly(true),
- set::value($review->data)
- );
- }
- else
- {
- if(isset($doc) and $doc)
- {
- $articleContent[] = div(setClass('text-md py-1 font-bold'), $doc->title);
- $articleContent[] = div
- (
- setClass('detail-content article-content'),
- $doc->contentType === 'doc' ? pageEditor
- (
- set::size('auto'),
- set::readonly(true),
- set::value(isset($doc->rawContent) ? $doc->rawContent : $doc->content)
- ) : editor
- (
- set::resizable(false),
- set::markdown($doc->contentType == 'markdown'),
- set::readonly(true),
- set::hideUI(true),
- set::size('auto'),
- html($doc->content)
- )
- );
- }
- elseif(isset($template) and (!isset($doc) or !$doc))
- {
- $articleContent[] = pageEditor
- (
- set::size('auto'),
- set::readonly(true),
- set::value(empty($template->rawContent) ? $template->content : $template->rawContent)
- );
- }
- }
- $reviewclContent = array();
- if($cmcl)
- {
- $cmclTrs = array();
- foreach($cmcl as $category => $list)
- {
- $listTrs = array();
- $i = 0;
- foreach($list as $data)
- {
- $listData = array();
- $listData[] = h::td
- (
- set::title(zget($items, $data->title)),
- zget($items, $data->title)
- );
- $listData[] = h::td(a(set::href(createLink('cmcl', 'view', "id=$data->id")), set::title($data->contents), $data->contents));
- $listData[] = h::td
- (
- radioList
- (
- setClass('issueResult'),
- on::change('window.resultChange'),
- set::name('issueResult[' . $data->id . ']'),
- set::inline(true),
- set::items($lang->review->checkList),
- set::value('1')
- )
- );
- $listData[] = h::td
- (
- setClass('issue-opintion'),
- textarea
- (
- set::name("issueOpinion[{$data->id}]"),
- set::value(''),
- set::disabled(true),
- set::rows('1')
- ),
- inputGroup
- (
- setClass('opinionDate hidden mt-2'),
- span
- (
- setClass('nowrap content-center mr-1'),
- $lang->review->opinionDate
- ),
- datePicker(set::name("opinionDate[$data->id]"))
- )
- );
- $listTrs[] = $i == 0 ? $listData : h::tr($listData);
- $i ++;
- }
- $cmclTrs[] = h::tr
- (
- h::td
- (
- setClass('text-center'),
- set::rowspan(count($list)),
- h::strong(zget($typeList, $category))
- ),
- $listTrs
- );
- }
- $reviewclContent[] = panel
- (
- setID('reviewcl'),
- setClass('w-full overflow-y-auto'),
- div(setClass('text-md py-1 font-bold'), $lang->review->reviewcl),
- div
- (
- setClass('detail-content'),
- h::table(setClass('table bordered'), h::tr
- (
- h::td
- (
- setClass('text-center w-24'),
- $lang->review->listCategory
- ),
- h::td
- (
- setClass('text-center w-32'),
- $lang->review->listItem
- ),
- h::td
- (
- setClass('text-center'),
- $lang->review->listTitle
- ),
- h::td
- (
- setClass('text-center w-24'),
- $lang->review->listResult
- ),
- h::td
- (
- setClass('text-center w-44'),
- $lang->review->opinion
- )
- ), $cmclTrs)
- )
- );
- }
- $reviewclContent[] = panel
- (
- setClass(empty($reviewcl) ? '' : 'review-footer'),
- formGroup
- (
- setClass('mb-3'),
- set::label($lang->review->auditResult),
- radioList
- (
- on::change('window.auditResultChange'),
- set::name('result'),
- set::inline(true),
- set::items($lang->review->auditResultList),
- set::value(isset($result->resule) ? $result->resule : 'pass')
- )
- ),
- formRow
- (
- setClass('mb-3'),
- formGroup
- (
- setClass('w-1/2'),
- set::label($lang->review->auditedDate),
- set::control('datePicker'),
- set::name('createdDate'),
- set::value(helper::today())
- ),
- formGroup
- (
- setClass('w-1/2'),
- set::label($lang->review->consumed),
- inputControl
- (
- input
- (
- set::name('consumed'),
- set::value(isset($result->consumed) ? $result->consumed : 0)
- ),
- to::suffix('h')
- )
- )
- ),
- formGroup
- (
- setClass('mb-3'),
- set::label($lang->review->auditOpinion),
- set::control('editor'),
- set::name('opinion'),
- set::value(isset($result->opinion) ? $result->opinion : '')
- ),
- formRow
- (
- setClass('form-actions'),
- button(setClass('btn primary'), set::type('primary'), set::btnType('submit'), $lang->save)
- )
- );
- div
- (
- setClass('row gap-4 mt-2'),
- div
- (
- width("{$sideWidth}px"),
- panel(setID('reviewRow'), setClass('overflow-y-auto'), (
- setID('bookTree')
- ), div
- (
- $articleContent
- ), !empty($review->files) ? fileList(set::files($review->files), set::padding(false)) : null, isset($doc) ? fileList(set::files($doc->files), set::padding(false)) : null)
- ),
- div
- (
- setID('issueList'),
- setClass('col'),
- form
- (
- set::actions(array()),
- $reviewclContent
- ),
- div
- (
- setClass('mt-4'),
- history(set::objectID($review->id))
- )
- )
- );
- pageJS(<<<JAVASCRIPT
- $(function()
- {
- if($bookID && !showWithPageEditor) loadCurrentPage({url: $.createLink('review', 'book', 'bookID=' + $bookID + '&reviewID=' + $review->id + '&docID' + $docID), selector: '#bookTree', partial: true});
- });
- JAVASCRIPT
- );
- render();
|