* @package testcase * @link https://www.zentao.net */ namespace zin; data('testcase', $case); include($this->app->getModuleRoot() . 'ai/ui/inputinject.html.php'); jsVar('tab', $this->app->tab); jsVar('isLibCase', $isLibCase); jsVar('caseBranch', $case->branch); if($app->tab == 'execution') jsVar('objectID', $case->execution); if($app->tab == 'project') jsVar('objectID', $case->project); if($app->tab == 'qa') jsVar('objectID', 0); set::title($lang->testcase->edit); $rootID = $isLibCase ? $case->lib : $case->product; $viewType = $isLibCase ? 'caselib' : 'case'; $createModuleLink = createLink('tree', 'browse', "rootID={$rootID}&view={$viewType}¤tModuleID=0&branch={$case->branch}"); if($case->type != 'unit') unset($lang->testcase->typeList['unit']); $linkCaseItems = array(); if(isset($case->linkCaseTitles)) { foreach($case->linkCaseTitles as $linkCaseID => $linkCaseTitle) { $linkCaseItems[] = array('text' => "#{$linkCaseID} {$linkCaseTitle}", 'value' => $linkCaseID, 'checked' => true); } } $linkBugItems = array(); if(isset($case->toBugs)) { foreach($case->toBugs as $bugID => $bug) { $linkBugItems[] = array('text' => "#{$bugID} {$bug->title}", 'value' => $bugID, 'checked' => true); } } $priList = array_filter($lang->testcase->priList); detailHeader ( to::prefix(null), to::title ( entityLabel ( set::entityID($case->id), set::level(1), set::text($case->title), set::reverse(true) ) ) ); detailBody ( set::isForm(true), on::change('#lib', 'loadLibModules'), on::change('#product', 'loadProductRelated'), on::change('#module', 'loadModuleRelated'), on::change('#branch', 'loadBranchRelated'), on::click('#refresh', $isLibCase ? 'loadLibModules' : 'loadProductModules'), on::click('#auto', 'checkScript'), sectionList ( section ( set::title($lang->testcase->title), set::required(true), formGroup ( inputControl ( input ( set::name('title'), set::value($case->title), set::placeholder($lang->case->title) ), set::suffixWidth('icon'), to::suffix ( colorPicker ( set::name('color'), set::value($case->color), set::syncColor('#title') ) ) ) ) ), !$isLibCase ? section ( set::title($lang->testcase->scene), formGroup ( setID('sceneIdBox'), picker ( set::name('scene'), set::items($sceneOptionMenu), set::value($case->scene), set::required(true) ) ) ) : null, section ( set::title($lang->testcase->precondition), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",precondition,") !== false), formGroup ( textarea ( set::name('precondition'), set::value($case->precondition), set::rows(2) ) ) ), section ( set::title($lang->testcase->steps), stepsEditor(set::data($case->steps)) ), section ( set::title($lang->files), fileSelector($case->files ? set::defaultFiles(array_values($case->files)) : false) ), section ( set::title($lang->testcase->legendComment), editor ( set::name('comment'), set::rows(5) ) ) ), history(set::objectID($case->id)), detailSide ( set::isForm(true), tableData ( setClass('mt-5'), set::title($lang->testcase->legendBasicInfo), $isLibCase ? item ( set::name($lang->testcase->lib), picker ( setID('lib'), set::name('lib'), set::items($libraries), set::required(true), set::value($case->lib) ) ) : item ( set::name($lang->testcase->product), set::trClass($product->shadow ? 'hidden' : ''), inputGroup ( picker ( setID('product'), set::name('product'), set::items($products), set::required(true), set::value($case->product) ), picker ( setClass(!isset($product->type) || $product->type == 'normal' ? 'hidden' : ''), setID('branch'), set::name('branch'), set::required(true), set::items($branchTagOption), set::value($case->branch) ) ) ), item ( set::name($lang->testcase->module), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",module,") !== false), formGroup ( modulePicker ( setID('module'), set::items($moduleOptionMenu), set::value($case->module), set::manageLink(createLink('tree', 'browse', "rootID={$rootID}&view={$viewType}¤tModuleID=0&branch={$case->branch}")) ) ) ), !$isLibCase ? item ( set::name($lang->testcase->story), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",story,") !== false), formGroup ( setID('storyIdBox'), remotePicker ( setID('story'), set::name('story'), set::type('casestories'), set::params("productID={$case->product}&moduleID={$case->module}&branch={$case->branch}&storyID={$case->story}"), $case->story ? set::value($case->story) : null ) ) ) : null, item ( set::name($lang->testcase->type), set::required(true), inputGroup ( picker ( set::name('type'), set::items($lang->testcase->typeList), set::value($case->type), set::required(true), $case->type == 'unit' ? set::disabled(true) : null, ), helper::hasFeature('automated') ? span ( setClass('input-group-addon'), control ( set::type('checkbox'), set::name('auto'), set::value('auto'), set::text($lang->testcase->automated), set::checked($case->auto == 'auto' ? true : false) ) ) : null ) ), item ( $case->auto == 'auto' ? set::trClass('autoScript') : set::trClass('hidden autoScript'), set::name($lang->testcase->autoScript), fileSelector ( set::name('scriptFile'), set::accept($config->testcase->scriptAcceptFileTypes), set::maxFileCount(1), set::multiple(false), set::onAdd(jsRaw('window.readScriptContent')), set::onRemove(jsRaw('window.showUploadScriptBtn')) ), input ( set::type('hidden'), set::name('script') ) ), item ( set::name($lang->testcase->stage), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",stage,") !== false), formGroup ( picker ( set::name('stage[]'), set::items($lang->testcase->stageList), set::value($case->stage), set::multiple(true) ) ) ), item ( set::name($lang->testcase->pri), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",pri,") !== false), formGroup ( priPicker ( set::name('pri'), set::items($priList), set::value($case->pri) ) ) ), item ( set::name($lang->testcase->status), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",status,") !== false), !$forceNotReview && $case->status == 'wait' ? $lang->testcase->statusList[$case->status] : formGroup ( set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",status,") !== false), picker ( set::name('status'), set::items($lang->testcase->statusList), set::required(true), set::value($case->status) ) ) ), item ( set::name($lang->testcase->keywords), set::required(strpos(",{$this->config->testcase->edit->requiredFields},", ",keywords,") !== false), formGroup ( input ( set::name('keywords'), set::value($case->keywords) ) ) ), (!$isLibCase && hasPriv('testcase', 'linkCases') && $config->edition == 'open') ? item ( set::name($lang->testcase->linkCase), a ( set::href(createLink('testcase', 'linkCases', "caseID={$case->id}")), set('data-toggle', 'modal'), set('data-size', 'lg'), $lang->testcase->linkCases ) ) : null, (!$isLibCase && hasPriv('testcase', 'linkCases') && $config->edition == 'open') ? item ( set::trClass(!isset($case->linkCaseTitles) ? 'hidden' : ''), control ( set::type('checkList'), set::name('linkCase[]'), set::value(isset($case->linkCaseTitles) ? array_keys($case->linkCaseTitles) : ''), set::items($linkCaseItems) ) ) : null, (!$isLibCase && hasPriv('testcase', 'linkBugs')) ? item ( set::name($lang->testcase->linkBug), a ( set::href(createLink('testcase', 'linkBugs', "caseID={$case->id}")), set('data-toggle', 'modal'), set('data-size', 'lg'), $lang->testcase->linkBugs ) ) : null, (!$isLibCase && hasPriv('testcase', 'linkBugs')) ? item ( set::trClass(!isset($case->toBugs) ? 'hidden' : ''), control ( set::type('checkList'), set::name('linkBug[]'), set::value(array_keys($case->toBugs)), set::items($linkBugItems) ) ) : null ), tableData ( set::title($lang->testcase->legendOpenAndEdit), item ( set::name($lang->testcase->openedBy), zget($users, $case->openedBy) . $lang->at . $case->openedDate ), item ( set::name($lang->testcase->lblLastEdited), $case->lastEditedBy ? zget($users, $case->lastEditedBy) . $lang->at . $case->lastEditedDate : null ) ) ) ); render();