* @package task * @link https://www.zentao.net */ namespace zin; jsVar('confirmRecord', $lang->task->confirmRecord); jsVar('foldEffort', $lang->task->foldEffort); jsVar('unfoldEffort', $lang->task->unfoldEffort); if(isInModal()) set::id("modal-record-hours-task-{$task->id}"); $isEn = $app->getClientLang() == 'en'; modalHeader ( set::title($lang->task->addEffort), set::entityID($task->id), to::suffix ( span ( setClass('flex gap-x-2 mx-3 nowrap'), $lang->task->estimate, span ( setClass('label secondary-pale'), helper::formatHours($task->estimate) . $lang->task->suffixHour ) ), span ( setClass('flex gap-x-2 pr-4 nowrap'), $lang->task->consumed, span ( setClass('label warning-pale'), span ( setID('totalConsumed'), helper::formatHours($task->consumed) ), $lang->task->suffixHour ) ) ) ); if($efforts) { /* 多人串行任务工时分两部分. */ if(!empty($task->team) and $task->mode == 'linear') { include './linearefforts.html.php'; } else { $i = 1; $effortRows = ''; foreach($efforts as $effort) { $effort->consumed = helper::formatHours($effort->consumed); $effort->left = helper::formatHours($effort->left); $canOperateEffort = $this->task->canOperateEffort($task, $effort); $operateTips = $canOperateEffort ? '' : $lang->task->effortOperateTips; $hidden = ($taskEffortFold and $i > 3) ? 'hidden' : ''; $effortRows .= ""; $effortRows .= "{$effort->id}"; $effortRows .= "{$effort->date}"; $effortRows .= "" . zget($users, $effort->account) . ""; $effortRows .= "{$effort->work}"; $effortRows .= "{$effort->consumed} {$lang->task->suffixHour}"; $effortRows .= "{$effort->left} {$lang->task->suffixHour}"; $effortRows .= ""; if(common::hasPriv($app->rawModule, 'editEffort')) $effortRows .= ""; if(common::hasPriv($app->rawModule, 'deleteWorkhour')) $effortRows .= "id}") ."' ". (!$canOperateEffort ? 'disabled ' : '') . ($operateTips ? "title='" . sprintf($operateTips, $lang->delete) . "' " : '') . "'>"; $effortRows .= ""; $i ++; } div ( setClass('table-title'), $lang->task->committed ); h::table ( setClass('table condensed bordered taskEffort'), h::tr ( h::th ( width('32px'), $lang->idAB ), h::th ( width('100px'), $lang->task->date ), h::th ( width('100px'), $lang->task->recordedBy ), h::th($lang->task->work), h::th ( width('60px'), $lang->task->consumedHours . ($isEn ? $lang->task->labelSuffixHour : '') ), h::th ( width('60px'), $lang->task->leftAB . ($isEn ? $lang->task->labelSuffixHour : '') ), h::th ( width('80px'), $lang->actions ) ), html($effortRows) ); if(count($efforts) > 3) { $iconClass = $taskEffortFold ? 'angle-down' : 'angle-top'; $iconText = $taskEffortFold ? $lang->task->unfoldEffort : $lang->task->foldEffort; div ( setID('toggleFoldIcon'), on::click('toggleFold'), setClass('text-primary'), span(setClass($iconClass . ' mr-1 icon-toggle'), icon('back-circle')), span(setClass('text'), $iconText) ); } } } if(!$this->task->canOperateEffort($task)) { if($task->status != 'closed') { $notice = ''; if(!isset($task->members[$app->user->account])) { $notice = html(sprintf($lang->task->deniedNotice, '' . $lang->task->teamMember . '', $lang->task->logEfforts)); } elseif($task->assignedTo != $app->user->account and $task->mode == 'linear') { $notice = html(sprintf($lang->task->deniedNotice, '' . zget($users, $task->assignedTo) . '', $lang->task->logEfforts)); } div ( setClass('alert with-icon'), icon('exclamation-sign text-gray text-4xl'), div ( setClass('content'), $notice ) ); } } else { formBatchPanel ( set::title($lang->task->addEffort), set::shadow(!isAjaxRequest('modal')), set::actions(array('submit')), set::actionsClass('btn-actions'), set::maxRows(3), formBatchItem ( set::name('id'), set::label($lang->idAB), set::control('index'), set::width('32px') ), formBatchItem ( set::required(true), set::name('date'), set::label($lang->task->date), set::width('130px'), set::control(array('control' => 'date', 'id' => '$GID')), set::value(helper::today()) ), formBatchItem ( set::name('work'), set::label($lang->task->work), set::width('auto'), set::control('textarea'), set::required($config->edition != 'open') ), formBatchItem ( set::required(true), set::name('consumed'), set::label($lang->task->consumedHours . ($isEn ? $lang->task->labelSuffixHour : '')), set::width('80px'), set::control ( array( 'type' => 'inputControl', 'suffix' => $lang->task->suffixHour, 'suffixWidth' => 20 ) ) ), formBatchItem ( set::required(true), set::name('left'), set::label($lang->task->leftAB . ($isEn ? $lang->task->labelSuffixHour : '')), set::width('80px'), set::control ( array( 'type' => 'inputControl', 'suffix' => $lang->task->suffixHour, 'suffixWidth' => 20 ) ) ) ); } render();