From aac7b2ef5da5c47e53d25520b50d872856f45499 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Wed, 26 Aug 2015 14:13:58 +0800 Subject: [PATCH] * code for task 2322. --- module/testcase/control.php | 64 ++++++++++++++++-------- module/testcase/model.php | 21 ++++++++ module/testcase/view/showimport.html.php | 1 + 3 files changed, 66 insertions(+), 20 deletions(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index dcc52c1492..b98e3c07d6 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -853,7 +853,6 @@ class testcase extends control if($_POST) { $fields['module'] = $this->lang->testcase->module; - $fields['story'] = $this->lang->testcase->story; $fields['title'] = $this->lang->testcase->title; $fields['stepDesc'] = $this->lang->testcase->stepDesc; $fields['stepExpect'] = $this->lang->testcase->stepExpect; @@ -862,9 +861,21 @@ class testcase extends control $fields['pri'] = $this->lang->testcase->pri; $fields['stage'] = $this->lang->testcase->stage; $fields['precondition'] = $this->lang->testcase->precondition; + + $modules = $this->loadModel('tree')->getOptionMenu($productID, 'case'); + $rows = array(); + foreach($modules as $moduleID => $module) + { + $row = new stdclass(); + $row->module = $module . "(#$moduleID)"; + $row->stepDesc = "1. \n2. \n3."; + $row->stepExpect = "1. \n2. \n3."; + $rows[] = $row; + } + $this->post->set('fields', $fields); $this->post->set('kind', 'testcase'); - $this->post->set('rows', array()); + $this->post->set('rows', $rows); $this->post->set('extraNum', $this->post->num); $this->post->set('fileName', 'templet'); $this->fetch('file', 'export2csv', $_POST); @@ -887,25 +898,49 @@ class testcase extends control $file = $this->loadModel('file')->getUpload('file'); $file = $file[0]; - $fc = file_get_contents($file['tmpname']); - if( $this->post->encode != "utf-8") + move_uploaded_file($file['tmpname'], $this->file->savePath . $file['pathname']); + + $fileName = $this->file->savePath . $file['pathname']; + $fields = $this->testcase->getImportFields(); + $rows = $this->file->parseCSV($fileName); + $header = $rows[0]; + unset($rows[0]); + foreach($header as $title) { + $field = array_search($title, $fields); + if(!$field) continue; + $columnKey[] = $field; + } + if(empty($columnKey)) + { + $fc = file_get_contents($fileName); + $encode = $this->post->encode != "utf-8" ? $this->post->encode : 'gbk'; if(function_exists('mb_convert_encoding')) { - $fc = @mb_convert_encoding($fc, 'utf-8', $this->post->encode); + $fc = @mb_convert_encoding($fc, 'utf-8', $encode); } elseif(function_exists('iconv')) { - $fc = @iconv($this->post->encode, 'utf-8', $fc); + $fc = @iconv($encode, 'utf-8', $fc); } else { die(js::alert($this->lang->testcase->noFunction)); } + file_put_contents($fileName, $fc); + + $rows = $this->file->parseCSV($fileName); + $header = $rows[0]; + unset($rows[0]); + foreach($header as $title) + { + $field = array_search($title, $fields); + if(!$field) continue; + $columnKey[] = $field; + } + if(empty($columnKey)) die(js::alert($this->lang->testcase->errorEncode)); } - file_put_contents($this->file->savePath . $file['pathname'], $fc); - $fileName = $this->file->savePath . $file['pathname']; $this->session->set('importFile', $fileName); die(js::locate(inlink('showImport', "productID=$productID"), 'parent.parent')); @@ -933,15 +968,9 @@ class testcase extends control $file = $this->session->importFile; $caseLang = $this->lang->testcase; $caseConfig = $this->config->testcase; - $fields = explode(',', $caseConfig->exportFields); $modules = $this->loadModel('tree')->getOptionMenu($productID, 'case'); $stories = $this->loadModel('story')->getProductStoryPairs($productID); - foreach($fields as $key => $fieldName) - { - $fieldName = trim($fieldName); - $fields[$fieldName] = isset($caseLang->$fieldName) ? $caseLang->$fieldName : $fieldName; - unset($fields[$key]); - } + $fields = $this->testcase->getImportFields(); $rows = $this->loadModel('file')->parseCSV($file); $header = $rows[0]; @@ -953,11 +982,6 @@ class testcase extends control if(!$field) continue; $columnKey[] = $field; } - if(empty($columnKey)) - { - echo js::alert($this->lang->testcase->errorEncode); - die(js::locate(inlink('browse', "productID=$productID"))); - } $endField = $field; $caseData = array(); diff --git a/module/testcase/model.php b/module/testcase/model.php index ec460a4df9..8b1414240f 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -582,4 +582,25 @@ class testcaseModel extends model unlink($this->session->importFile); unset($_SESSION['importFile']); } + + /** + * Get fields for import. + * + * @access public + * @return array + */ + public function getImportFields() + { + $caseLang = $this->lang->testcase; + $caseConfig = $this->config->testcase; + $fields = explode(',', $caseConfig->exportFields); + foreach($fields as $key => $fieldName) + { + $fieldName = trim($fieldName); + $fields[$fieldName] = isset($caseLang->$fieldName) ? $caseLang->$fieldName : $fieldName; + unset($fields[$key]); + } + + return $fields; + } } diff --git a/module/testcase/view/showimport.html.php b/module/testcase/view/showimport.html.php index 3ff2f7edbd..eb0bbaa607 100644 --- a/module/testcase/view/showimport.html.php +++ b/module/testcase/view/showimport.html.php @@ -29,6 +29,7 @@ $case):?> + title)) continue;?>