diff --git a/module/testcase/control.php b/module/testcase/control.php index 1f7dbf694c..a62582efda 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -1907,7 +1907,6 @@ class testcase extends control $this->view->productID = $productID; $this->view->branch = $branch; $this->view->cases = $this->testsuite->getCanImportCases($productID, $libID, $branch, $orderBy, $pager, $browseType, $queryID); - $this->view->modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch === 'all' ? 0 : (int)$branch); $this->view->libModules = $this->tree->getOptionMenu($libID, 'caselib'); $this->view->pager = $pager; $this->view->orderBy = $orderBy; diff --git a/module/testcase/model.php b/module/testcase/model.php index 9830a835f6..c97ab5aa2b 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1622,7 +1622,7 @@ class testcaseModel extends model unset($case->id); $branch = isset($case->branch) ? $case->branch : 0; - if(isset($caseModules[$branch][$case->fromCaseID]) and !isset($caseModules[$branch][$case->fromCaseID][$case->module])) + if(empty($caseModules[$branch][$case->fromCaseID][$case->module])) { $imported .= "$case->fromCaseID,"; continue; diff --git a/module/testcase/view/importfromlib.html.php b/module/testcase/view/importfromlib.html.php index 679f925f78..b75bf9c432 100644 --- a/module/testcase/view/importfromlib.html.php +++ b/module/testcase/view/importfromlib.html.php @@ -48,6 +48,18 @@ $case):?> + $branchName) + { + if(empty($canImportModules[$branchID][$case->id])) + { + unset($caseBranches[$branchID]); + if($caseBranch == $branchID) $caseBranch = key($caseBranches); + } + } + ?>
@@ -57,16 +69,16 @@ id);?> type != 'normal'):?> - 0) $branches['ditto'] = $lang->testcase->ditto;?> - id}]", $branches, $i == 0 ? $branch : 'ditto', "class='form-control' onchange='updateModules($productID, this.value, $case->id)'")?> + 0) $caseBranches['ditto'] = $lang->testcase->ditto;?> + id}]", $caseBranches, $i == 0 ? $caseBranch : 'ditto', "class='form-control' onchange='updateModules($productID, this.value, $case->id)'")?> pri;?>' title='testcase->priList, $case->pri, $case->pri);?>'>pri == '0' ? '' : zget($lang->testcase->priList, $case->pri, $case->pri);?> id", $case->title)) echo $case->title;?> module, '');?> - 0) $modules['ditto'] = $lang->testcase->ditto;?> - id}]", isset($canImportModules[$branch][$case->id]) ? $canImportModules[$branch][$case->id] : $modules, $i == 0 ? 0 : 'ditto', "class='form-control chosen'");?> + id]['ditto']);?> + id}]", $canImportModules[$caseBranch][$case->id], $i == 0 ? 0 : 'ditto', "class='form-control chosen'");?> testcase->typeList, $case->type);?> diff --git a/module/testsuite/model.php b/module/testsuite/model.php index 801ed76ce6..cdce1bb6b3 100644 --- a/module/testsuite/model.php +++ b/module/testsuite/model.php @@ -351,18 +351,17 @@ class testsuiteModel extends model if(!$withAllLib) $query .= " AND `lib` = '$libID'"; } - $caseModules = $this->getCanImportModules($productID, $libID, $branch === 'all' ? 0 : (int)$branch); - $importedCaseIdList = array(); - foreach($caseModules as $caseID => $modules) - { - if(empty($modules)) $importedCaseIdList[$caseID] = $caseID; - } + $this->loadModel('branch'); + $product = $this->loadModel('product')->getById($productID); + $branches = $product->type != 'normal' ? array(BRANCH_MAIN => $this->lang->branch->main) + $this->branch->getPairs($productID, 'active') : array(0); + $canImport = array(); + foreach($branches as $branchID => $branchName) $canImport += $this->getCanImportModules($productID, $libID, $branchID); return $this->dao->select('*')->from(TABLE_CASE)->where('deleted')->eq(0) ->beginIF($browseType != 'bysearch')->andWhere('lib')->eq($libID)->fi() ->beginIF($browseType == 'bysearch')->andWhere($query)->fi() - ->andWhere('id')->notIn($importedCaseIdList) + ->andWhere('id')->in(array_keys($canImport)) ->andWhere('product')->eq(0) ->orderBy($orderBy) ->page($pager) @@ -389,11 +388,18 @@ class testsuiteModel extends model ->fetchGroup('fromCaseID', 'module'); foreach($importedModules as $fromCaseID => $modules) $importedModules[$fromCaseID] = array_combine(array_keys($modules), array_keys($modules)); - $modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch); - $modules['ditto'] = $this->lang->testcase->ditto; + $libCases = $this->loadModel('caselib')->getLibCases($libID, 'all'); + + $modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch); $canImportModules = array(); - foreach($importedModules as $caseID => $caseModules) $canImportModules[$caseID] = array_diff_key($modules, $importedModules[$caseID]); + foreach($libCases as $caseID => $case) + { + $caseModules = !empty($importedModules[$caseID]) ? $importedModules[$caseID] : array(); + $canImportModules[$caseID] = array_diff_key($modules, $caseModules); + if(!empty($canImportModules[$caseID])) $canImportModules[$caseID]['ditto'] = $this->lang->testcase->ditto; + if(empty($canImportModules[$caseID])) unset($canImportModules[$caseID]); + } return $canImportModules; }