* @package block * @link https://www.zentao.net */ namespace zin; jsVar('moreLabel', $lang->more); jsVar('todayLabel', $lang->today); jsVar('yesterdayLabel', $lang->yesterday); $blockNavCode = 'nav-' . uniqid(); $index = 0; $count = count($hasViewPriv); $menus = array(); $moreMenus = array(); foreach($hasViewPriv as $type => $bool) { $selected = key($hasViewPriv); if(($longBlock && $count > 9 && $index >= 8) || (!$longBlock && $count > 4 && $index >= 3)) { $moreMenus[] = array('text' => $type == 'review' ? $lang->my->audit : zget($lang->block->availableBlocks, $type), 'data-toggle' => 'tab', 'href' => "#assigntome{$type}Tab{$blockNavCode}"); } else { $menus[] = li ( set('class', 'nav-item nav-switch'), a ( set('class', $type == $selected ? 'active' : ''), set('data-toggle', 'tab'), set('href', "#assigntome{$type}Tab{$blockNavCode}"), $type == 'review' ? $lang->my->audit : zget($lang->block->availableBlocks, $type) ) ); } $index ++; } if(($longBlock && $count > 9) || (!$longBlock && $count > 4)) { $menus[] = li ( set('class', 'nav-item nav-switch'), a ( set('data-toggle', 'dropdown'), set('href', "#assigntomeMenuMore{$blockNavCode}"), span($lang->more), icon('caret-down') ), menu ( set::id("#assigntomeMenuMore{$blockNavCode}"), set::className('dropdown-menu'), set::items($moreMenus) ) ); } $contents = array(); foreach($hasViewPriv as $type => $bool) { $data = ${"{$type}s"}; $configType = $type; if($type == 'story') $data = $stories; if($type == 'testcase') $configType = 'case'; if($type == 'requirement') $configType = 'story'; if(empty($config->block->{$configType}->dtable->fieldList)) continue; if(!$longBlock && !empty($config->block->{$configType}->dtable->short->fieldList)) $config->block->{$configType}->dtable->fieldList = $config->block->{$configType}->dtable->short->fieldList; if(empty($data)) $data = array(); if($type == 'review') { $statusList = array(); foreach($data as $review) { $reviewType = $review->type; if($reviewType == 'projectreview') $reviewType = 'review'; $typeName = ''; if(isset($lang->{$review->type}->common)) $typeName = $lang->{$review->type}->common; if($reviewType == 'story') $typeName = $lang->SRCommon; if(isset($lang->$reviewType->statusList)) $statusList = array_merge($statusList, $lang->$reviewType->statusList); if($reviewType == 'attend') $statusList = array_merge($statusList, $lang->attend->reviewStatusList); if(!in_array($reviewType, array('story', 'testcase', 'feedback', 'review')) and strpos(",{$config->my->oaObjectType},", ",$reviewType,") === false) $statusList = array_merge($statusList, $lang->approval->nodeList); $review->type = $typeName; } $config->block->review->dtable->fieldList['status']['statusMap'] = $statusList; } $selected = key($hasViewPriv); $contents[] = div ( set('class', 'tab-pane ' . ($type == $selected ? 'active' : '')), set('id', "assigntome{$type}Tab{$blockNavCode}"), dtable ( set::height(318), set::bordered(false), $type == 'todo' || $type == 'task' ? set::fixedLeftWidth('0.44') : '', set::horzScrollbarPos('inside'), set::onRenderCell(jsRaw('window.renderCell')), set::cols(array_values($config->block->{$configType}->dtable->fieldList)), set::data(array_values($data)), set::userMap($users), ) ); } panel ( set('class', 'assigntome-block'), set('headingClass', 'border-b'), set('bodyClass', 'p-0'), to::heading ( div ( set('class', 'panel-title flex justify-between w-full'), $block->title, div ( ul ( set('class', 'nav nav-tabs'), $menus ) ) ) ), div($contents) ); render();