* @package review * @version $Id$ * @link http://www.zentao.net */ namespace zin; $sideWidth = '600'; featureBar ( to::leading(array(backBtn(set::icon('back'), set::className('primary-outline'), set::url(createLink('review', 'browse', "reviewID=$review->project")), $lang->goback))), entityTitle(set::titleClass('text-lg text-clip font-bold'), setID((string)$review->id), set::object($review), set::type('review'), set::title($review->title)) ); $reviewModel = $this->review; $projectchange = $review->type == 'projectchange' ? $projectchange : null; $buildSideBar = function($review, $viewData) use ($sideWidth, $reviewModel, $projectchange, $users) { global $app, $lang, $config; $nodes = array(); if($review->type == 'projectchange') { $nodes[] = section ( set::title($lang->projectchange->basicInfo), h::table ( setClass('table condensed borderless'), h::tbody ( h::tr ( h::td ( div(setClass('flex flex-wrap pt-2'), div ( setClass('w-1/3'), span(setClass('text-gray'), $lang->projectchange->urgency), span(setClass('ml-2'), zget($lang->projectchange->urgencyList, $projectchange->urgency)) ), div ( setClass('w-1/3'), span(setClass('text-gray'), $lang->projectchange->type), span(setClass('ml-2'), zget($lang->projectchange->typeList, $projectchange->type)) ), div ( setClass('w-1/3'), span(setClass('text-gray'), $lang->projectchange->deadline), span(setClass('ml-2'), formatTime($projectchange->deadline, DT_DATE1)) )) ) ) ) ) ); $nodes[] = section ( set::title($lang->projectchange->deliverable), empty($review->deliverables) ? div ( setClass('dtable-empty-tip'), span ( setClass('text-gray'), $lang->noData ) ) : dtable ( set::cols($config->projectchange->deliverable->dtable->fieldList), set::data($review->deliverables), set::userMap($users) ) ); $nodes[] = section ( set::title($lang->projectchange->reason), set::content($projectchange->reason) ); $nodes[] = section ( set::title($lang->projectchange->desc), html($projectchange->desc) ); if(!empty($projectchange->files)) $nodes[] = fileList(set::files($projectchange->files), set::padding(false)); return $nodes; } if(empty($review->deliverables)) { $reviewData = json_decode($review->data, true); $showWithPageEditor = isset($reviewData['$migrate']) && $reviewData['$migrate'] == 'html'; if(!empty($viewData->bookID) && !$showWithPageEditor) { $nodes[] = div ( setID('bookTree'), treeEditor(set::items($reviewModel->buildBookTree($viewData->book, $viewData->review, zget($viewData, 'docID', 0))), set::canSplit(false)) ); } elseif(!$showWithPageEditor && $review->oldCategory == 'PP') { $from = 'doc'; $ganttType = $viewData->type; $productID = $review->product; $projectID = $review->project; $reviewID = $review->id; include $app->getModuleRoot() . 'programplan/ui/ganttfields.html.php'; data('showFields', 'PM,status,deadline'); $ganttFields['column_text'] = $lang->programplan->ganttBrowseType['gantt']; $nodes[] = gantt ( set('ganttLang', $ganttLang), set('ganttFields', $ganttFields), set('showChart', false), set('colsWidth', $sideWidth), set('options', $viewData->plans) ); } elseif($showWithPageEditor) { $nodes[] = pageEditor ( set::size('auto'), set::readonly(true), set::content($review->data) ); } else { $linkedDoc = !empty($viewData->doc) ? $viewData->doc : null; if($linkedDoc) { $contentType = $linkedDoc->contentType; $nodes[] = section ( set::title($linkedDoc->title . ' ' . $review->version), div ( setClass('article-content'), setID($linkedDoc->contentType == 'markdown' ? 'markdownContent' : null), $contentType === 'doc' ? pageEditor ( set::size('auto'), set::readonly(true), set::value(isset($linkedDoc->rawContent) ? $linkedDoc->rawContent : $linkedDoc->content) ) : editor ( set::resizable(false), set::markdown($linkedDoc->contentType == 'markdown'), set::readonly(true), set::hideUI(true), set::size('auto'), html($linkedDoc->content) ) ) ); } } if(!empty($viewData->doc) && !empty($viewData->doc->files)) $nodes[] = fileList(set::files($viewData->doc->files), set::padding(false)); } else { $i = 0; $titleAction['items'][] = array('size' => 'xs', 'type' => 'ghost', 'class' => 'mr-2', 'data-on' => 'click', 'data-call' => 'toggleDetail', 'data-params' => 'event'); foreach($review->deliverables as $deliverable) { if($i == 0) { $titleAction['items'][0]['icon'] = 'angle-top'; } else { $titleAction['items'][0]['icon'] = 'angle-down'; } $className = $i == 0 ? '' : 'hidden'; $title = $deliverable->name . ' ' . $deliverable->version; $deliverableData = !empty($deliverable->data) ? json_decode($deliverable->data, true) : array(); $showWithPageEditor = isset($deliverableData['$migrate']) && $deliverableData['$migrate'] == 'html'; if($deliverable->doc && !$showWithPageEditor) { $nodes[] = section ( set::title($title), set::titleActions($titleAction), div ( setClass("article-content $className"), pageEditor ( set::size('auto'), set::readonly(true), set::value(isset($deliverable->doc->rawContent) ? $deliverable->doc->rawContent : $deliverable->doc->content) ) ) ); if(!empty($deliverable->doc->files)) $nodes[] = fileList(set::files($deliverable->doc->files), set::padding(false)); } elseif($showWithPageEditor) { $nodes[] = section ( set::title($title), set::titleActions($titleAction), div ( setClass("article-content $className"), pageEditor ( set::size('auto'), set::readonly(true), set::value($deliverable->data) ) ) ); } $i ++; } } if(!empty($review->files)) $nodes[] = fileList(set::files($review->files), set::padding(false)); return $nodes; }; sidebar ( set::width($sideWidth + 10), set::maxWidth($sideWidth + 10), set::minWidth(0), set::toggleBtn(false), $buildSideBar($review, $this->view) ); if($setReviewer) $reviewer = strpos($setReviewer, 'pending-') !== false ? substr($setReviewer, 8) : $setReviewer; $reviewclHtml = ''; if(!empty($reviewcl)) { $reviewclGroup = array(); foreach($reviewcl as $list) { $reviewclGroup[$list->category][] = $list; } $reviewclHtml = "
| {$lang->review->listItem} | {$lang->review->listResult} |
|---|---|
| " . zget($categoryList, $category) . $btn . ' | |
| " . $list->title . ' | '; $reviewclHtml .= ""; $reviewclHtml .= html::radio("issueResult[$list->id]", $lang->review->checkList, '1', "class='issueResult' onchange='toggleOption(this)'", 'inline'); $reviewclHtml .= "'; $reviewclHtml .= ' | '; $reviewclHtml .= '