* Finish caselib showimport zin page.
This commit is contained in:
+19
-10
@@ -482,7 +482,7 @@ class caselib extends control
|
||||
move_uploaded_file($file['tmpname'], $fileName);
|
||||
|
||||
$rows = $this->file->parseCSV($fileName);
|
||||
$fields = $this->testcase->getImportFields($productID);
|
||||
$fields = $this->testcase->getImportFields();
|
||||
$fields = array_flip($fields);
|
||||
$header = array();
|
||||
foreach($rows[0] as $i => $rowValue)
|
||||
@@ -520,12 +520,11 @@ class caselib extends control
|
||||
if(!isset($fields[$title])) continue;
|
||||
$columnKey[] = $fields[$title];
|
||||
}
|
||||
if(count($columnKey) != count($header)) return print(js::alert($this->lang->testcase->errorEncode));
|
||||
if(count($columnKey) != count($header)) return $this->send(array('result' => 'fail', 'message' => $this->lang->testcase->errorEncode));
|
||||
}
|
||||
|
||||
$this->session->set('fileImport', $fileName);
|
||||
|
||||
return print(js::locate(inlink('showImport', "libID=$libID"), 'parent.parent'));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('showImport', "libID={$libID}"), 'closeModal' => true));
|
||||
}
|
||||
$this->display();
|
||||
}
|
||||
@@ -553,12 +552,12 @@ class caselib extends control
|
||||
$this->caselib->createFromImport($libID);
|
||||
if($this->post->isEndPage)
|
||||
{
|
||||
unlink($tmpFile);
|
||||
return print(js::locate(inlink('browse', "libID=$libID"), 'parent'));
|
||||
@unlink($tmpFile);
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('browse', "libID=$libID")));
|
||||
}
|
||||
else
|
||||
{
|
||||
return print(js::locate(inlink('showImport', "libID=$libID&pagerID=" . ($this->post->pagerID + 1) . "&maxImport=$maxImport&insert=" . zget($_POST, 'insert', '')), 'parent'));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => inlink('showImport', "libID=$libID&pagerID=" . ((int)$this->post->pagerID + 1) . "&maxImport=$maxImport&insert=" . zget($_POST, 'insert', ''))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -668,7 +667,11 @@ class caselib extends control
|
||||
$sign = $out[3];
|
||||
$signbit = $sign == '.' ? 1 : 3;
|
||||
$step = trim(substr($step, strlen($num) + $signbit));
|
||||
if(!empty($step)) $caseStep[$num]['content'] = $step;
|
||||
if(!empty($step))
|
||||
{
|
||||
$caseStep[$num]['content'] = $step;
|
||||
$caseStep[$num]['number'] = $num;
|
||||
}
|
||||
$caseStep[$num]['type'] = 'item';
|
||||
$caseStep[$parent]['type'] = 'group';
|
||||
}
|
||||
@@ -678,7 +681,11 @@ class caselib extends control
|
||||
$sign = $out[2];
|
||||
$signbit = $sign == '.' ? 1 : 3;
|
||||
$step = trim(substr($step, strlen($num) + $signbit));
|
||||
if(!empty($step)) $caseStep[$num]['content'] = $step;
|
||||
if(!empty($step))
|
||||
{
|
||||
$caseStep[$num]['content'] = $step;
|
||||
$caseStep[$num]['number'] = $num;
|
||||
}
|
||||
$caseStep[$num]['type'] = 'step';
|
||||
}
|
||||
elseif(isset($num))
|
||||
@@ -693,19 +700,21 @@ class caselib extends control
|
||||
$num = 1;
|
||||
$caseStep[$num]['content'] = $step;
|
||||
$caseStep[$num]['type'] = 'step';
|
||||
$caseStep[$num]['number'] = $num;
|
||||
}
|
||||
if($field == 'stepExpect' and isset($stepData[$row]['desc']))
|
||||
{
|
||||
end($stepData[$row]['desc']);
|
||||
$num = key($stepData[$row]['desc']);
|
||||
$caseStep[$num]['content'] = $step;
|
||||
$caseStep[$num]['number'] = $num;
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($num);
|
||||
unset($sign);
|
||||
$stepVars += count($caseStep, COUNT_RECURSIVE) - count($caseStep);
|
||||
$stepData[$row][$stepKey] = $caseStep;
|
||||
$stepData[$row][$stepKey] = array_values($caseStep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
window.handleRenderRow = function($row, index, row)
|
||||
{
|
||||
let stepDesc = "<input class='hidden' type='text' name='lib[" + row.id + "]' value='" + libID + "'/>";
|
||||
let stepExpect = '';
|
||||
|
||||
const descs = stepData[index + 1]['desc'];
|
||||
const expect = stepData[index + 1]['expect'];
|
||||
if(descs.length)
|
||||
{
|
||||
$.each(descs, function(id, desc)
|
||||
{
|
||||
if(!desc.content) return;
|
||||
stepDesc += "<div class='flex col'><div class='cell flex border p-2'><div class='cell center'><input class='hidden' type='text' name='stepType[" + row.id + "][" + desc.number + "]' value='" + desc.type + "' /><span>" + desc.number + "、</span></div><div class='cell center flex-1'><textarea class='form-control form-batch-input' rows='10' name='desc[" + row.id + "][" + desc.number + "]' style='min-height: 32px; height:2rem;'>" + desc.content + "</textarea></div></div></div>";
|
||||
stepExpect += "<div class='flex col'><div class='cell flex border p-2'><textarea class='form-control form-batch-input " + (desc.type != 'group' ? '' : 'disabled') + "'" + (desc.type != 'group' ? '' : 'readonly=readonly') + "' rows='10' name='expect[" + row.id + "][" + desc.number + "]' style='min-height: 32px; height:2rem;'>" + (expect[id]['content'] ? expect[id]['content'] : '') + "</textarea></div></div></div>";
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
stepDesc += "<div class='flex col'><div class='cell flex border p-2'><div class='cell center'><input class='hidden' type='text' name='stepType[" + row.id + "][1]' value='step' /><span>1、</span></div><div class='cell center flex-1'><textarea class='form-control form-batch-input' rows='10' name='desc[" + row.id + "][1]' style='min-height: 32px; height:2rem;'></textarea></div></div></div>";
|
||||
stepExpect += "<div class='flex col'><div class='cell flex border p-2'><textarea class='form-control form-batch-input' rows='10' name='expect[" + row.id + "][1]' style='min-height: 32px; height:2rem;'></textarea></div></div>";
|
||||
}
|
||||
|
||||
|
||||
$row.find('td[data-name=stepDesc]').html(stepDesc);
|
||||
$row.find('td[data-name=stepExpect]').html(stepExpect);
|
||||
}
|
||||
@@ -376,7 +376,6 @@ class caselibModel extends model
|
||||
$caseData->title = $data->title[$key];
|
||||
$caseData->pri = (int)$data->pri[$key];
|
||||
$caseData->type = $data->type[$key];
|
||||
$caseData->status = $data->status[$key];
|
||||
$caseData->stage = join(',', $data->stage[$key]);
|
||||
$caseData->keywords = $data->keywords[$key];
|
||||
$caseData->frequency = 1;
|
||||
@@ -518,7 +517,7 @@ class caselibModel extends model
|
||||
|
||||
if($this->post->isEndPage)
|
||||
{
|
||||
unlink($this->session->fileImport);
|
||||
if($this->session->fileImport) @unlink($this->session->fileImport);
|
||||
unset($_SESSION['fileImport']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The showimport view file of caselib module of ZenTaoPMS.
|
||||
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(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 Yuting Wang <wangyuting@easycorp.ltd>
|
||||
* @package caselib
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
namespace zin;
|
||||
jsVar('stepData', $stepData);
|
||||
jsVar('libID', $libID);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'id',
|
||||
'label' => $lang->idAB,
|
||||
'control' => 'index',
|
||||
'width' => '32px'
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'title',
|
||||
'label' => $lang->testcase->title,
|
||||
'width' => '240px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'module',
|
||||
'label' => $lang->testcase->module,
|
||||
'control' => 'picker',
|
||||
'items' => $modules,
|
||||
'width' => '200px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'type',
|
||||
'label' => $lang->testcase->type,
|
||||
'control' => 'picker',
|
||||
'items' => $lang->testcase->typeList,
|
||||
'width' => '160px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'pri',
|
||||
'label' => $lang->testcase->pri,
|
||||
'control' => 'pripicker',
|
||||
'items' => $lang->testcase->priList,
|
||||
'width' => '80px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'precondition',
|
||||
'label' => $lang->testcase->precondition,
|
||||
'control' => 'textarea',
|
||||
'width' => '240px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'keywords',
|
||||
'label' => $lang->testcase->keywords,
|
||||
'width' => '240px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'stage',
|
||||
'label' => $lang->testcase->stage,
|
||||
'control' => 'picker',
|
||||
'multiple' => true,
|
||||
'items' => $lang->testcase->stageList,
|
||||
'width' => '240px',
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'stepDesc',
|
||||
'label' => $lang->testcase->stepDesc,
|
||||
'width' => '320px'
|
||||
);
|
||||
|
||||
$items[] = array
|
||||
(
|
||||
'name' => 'stepExpect',
|
||||
'label' => $lang->testcase->stepExpect,
|
||||
'width' => '320px'
|
||||
);
|
||||
|
||||
formBatchPanel
|
||||
(
|
||||
set::title($lang->caselib->import),
|
||||
set::items($items),
|
||||
set::data(array_values($caseData)),
|
||||
set::mode('edit'),
|
||||
set::actionsText(false),
|
||||
set::onRenderRow(jsRaw('handleRenderRow')),
|
||||
input(set::class('hidden'), set::name('isEndPage'), set::value($isEndPage ? '1' : '0')),
|
||||
input(set::class('hidden'), set::name('pagerID'), set::value($pagerID)),
|
||||
$dataInsert !== '' ? input(set::class('hidden'), set::name('insert'), set::value($dataInsert)) : null
|
||||
);
|
||||
|
||||
render();
|
||||
@@ -1811,8 +1811,8 @@ class testcaseModel extends model
|
||||
*/
|
||||
public function getImportFields($productID = 0)
|
||||
{
|
||||
$product = $this->loadModel('product')->getById($productID);
|
||||
if($product->type != 'normal') $this->lang->testcase->branch = $this->lang->product->branchName[$product->type];
|
||||
$product = $this->loadModel('product')->getById($productID);
|
||||
if($product && $product->type != 'normal') $this->lang->testcase->branch = $this->lang->product->branchName[$product->type];
|
||||
|
||||
$caseLang = $this->lang->testcase;
|
||||
$caseConfig = $this->config->testcase;
|
||||
|
||||
Reference in New Issue
Block a user