From 79b35763543bf0c55fa0271d97c2f63c1d057e13 Mon Sep 17 00:00:00 2001
From: Yagami <976204163@qq.com>
Date: Wed, 27 Feb 2019 09:23:03 +0800
Subject: [PATCH] * Finish task #5267.
---
module/entry/view/browse.html.php | 2 +-
module/testcase/control.php | 23 +++++++++++++++++++++++
module/testcase/lang/en.php | 3 +++
module/testcase/lang/zh-cn.php | 5 ++++-
module/testcase/model.php | 3 ++-
module/testcase/view/view.html.php | 10 ++++++++--
6 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/module/entry/view/browse.html.php b/module/entry/view/browse.html.php
index 320f91005e..844add788a 100644
--- a/module/entry/view/browse.html.php
+++ b/module/entry/view/browse.html.php
@@ -43,7 +43,7 @@
if(common::hasPriv('entry', 'delete'))
{
$deleteURL = $this->createLink('entry', 'delete', "entryID=$id&confirm=yes");
- echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"entryList\",confirmDelete)", '', '', "title='{$lang->entry->delete}' class='btn'");
+ echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"entryList\",confirmDelete)", '', '', "title='{$lang->entry->delete}' class='btn'");
}
?>
diff --git a/module/testcase/control.php b/module/testcase/control.php
index ec65893fe0..080750cf8e 100644
--- a/module/testcase/control.php
+++ b/module/testcase/control.php
@@ -979,6 +979,29 @@ class testcase extends control
die(js::locate(inLink('view', "caseID=$caseID"), 'parent'));
}
+ /**
+ * Confirm libcase changed.
+ *
+ * @param int $caseID
+ * @param int $libcaseID
+ * @param int $version
+ * @access public
+ * @return void
+ */
+ public function confirmLibcaseChange($caseID, $libcaseID, $version)
+ {
+ $case = $this->testcase->getById($caseID);
+ $this->dao->update(TABLE_CASE)->set('version')->eq($version)->where('id')->eq($caseID)->exec();
+ $steps = $this->dao->select('*')->from(TABLE_CASESTEP)->where('`case`')->eq($libcaseID)->andWhere('version')->eq($version)->fetchAll();
+ foreach($steps as $step)
+ {
+ unset($step->id);
+ $step->case = $caseID;
+ $this->dao->insert(TABLE_CASESTEP)->data($step)->exec();
+ }
+ die(js::locate(inLink('view', "caseID=$caseID"), 'parent'));
+ }
+
/**
* Confirm story changes.
*
diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php
index a89a21d2e9..ade3b92aef 100644
--- a/module/testcase/lang/en.php
+++ b/module/testcase/lang/en.php
@@ -64,6 +64,9 @@ $lang->testcase->stepNumberAB = 'S';
$lang->testcase->createBug = 'Convert to Bug';
$lang->testcase->fromModule = 'Source Module';
$lang->testcase->fromCase = 'Source Case';
+$lang->testcase->sync = 'Sync Case';
+$lang->testcase->fromTesttask = 'From Testtask';
+$lang->testcase->fromCaselib = 'From Caselib';
$lang->case = $lang->testcase; // For dao checking using. Because 'case' is a php keywords, so the module name is testcase, table name is still case.
$lang->testcase->stepID = 'ID';
diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php
index 8983c59994..83c1cbb27e 100644
--- a/module/testcase/lang/zh-cn.php
+++ b/module/testcase/lang/zh-cn.php
@@ -54,7 +54,7 @@ $lang->testcase->expect = '预期';
$lang->testcase->allProduct = "所有{$lang->productCommon}";
$lang->testcase->fromBug = '来源Bug';
$lang->testcase->toBug = '生成Bug';
-$lang->testcase->changed = '用例变更';
+$lang->testcase->changed = '原用例更新';
$lang->testcase->bugs = '产生Bug数';
$lang->testcase->bugsAB = 'B';
$lang->testcase->results = '执行结果数';
@@ -64,6 +64,9 @@ $lang->testcase->stepNumberAB = 'S';
$lang->testcase->createBug = '转Bug';
$lang->testcase->fromModule = '来源模块';
$lang->testcase->fromCase = '来源用例';
+$lang->testcase->sync = '同步';
+$lang->testcase->fromTesttask = '测试单用例';
+$lang->testcase->fromCaselib = '用例库用例';
$lang->case = $lang->testcase; // 用于DAO检查时使用。因为case是系统关键字,所以无法定义该模块为case,只能使用testcase,但表还是使用的case。
$lang->testcase->stepID = '编号';
diff --git a/module/testcase/model.php b/module/testcase/model.php
index e1f6308d8c..1b36ab2934 100644
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -395,7 +395,8 @@ class testcaseModel extends model
$case->storyStatus = $story->status;
$case->latestStoryVersion = $story->version;
}
- if($case->fromBug) $case->fromBugTitle = $this->dao->findById($case->fromBug)->from(TABLE_BUG)->fields('title')->fetch('title');
+ if($case->fromBug) $case->fromBugTitle = $this->dao->findById($case->fromBug)->from(TABLE_BUG)->fields('title')->fetch('title');
+ if($case->fromCaseID) $case->libCaseVersion = $this->dao->findById($case->fromCaseID)->from(TABLE_CASE)->fetch('version');
$case->toBugs = array();
$toBugs = $this->dao->select('id, title')->from(TABLE_BUG)->where('`case`')->eq($caseID)->fetchAll();
diff --git a/module/testcase/view/view.html.php b/module/testcase/view/view.html.php
index 14d5d70274..d3e85dcef7 100644
--- a/module/testcase/view/view.html.php
+++ b/module/testcase/view/view.html.php
@@ -218,8 +218,14 @@
echo $lang->testcase->statusList[$case->status];
if($case->version > $case->currentVersion and $from == 'testtask')
{
- echo "({$lang->testcase->changed} ";
- echo html::a($this->createLink('testcase', 'confirmchange', "caseID=$case->id"), $lang->confirm, 'hiddenwin', "class='btn btn-mini btn-info'");
+ echo "(testcase->fromTesttask}>{$lang->testcase->changed} ";
+ echo html::a($this->createLink('testcase', 'confirmchange', "caseID=$case->id"), $lang->testcase->sync, 'hiddenwin', "class='btn btn-mini btn-info' title={$lang->testcase->fromTesttask}");
+ echo ")";
+ }
+ if(isset($case->libCaseVersion) and $case->libCaseVersion > $case->version and $from != 'testtask')
+ {
+ echo "(testcase->fromCaselib}>{$lang->testcase->changed} ";
+ echo html::a($this->createLink('testcase', 'confirmLibcaseChange', "caseID=$case->id&libcaseID=$case->fromCaseID&version=$case->libCaseVersion"), $lang->testcase->sync, 'hiddenwin', "class='btn btn-mini btn-info' title={$lang->testcase->fromCaselib}");
echo ")";
}
?>