From e8bb9aa1ee6171f761e672e3426ae4e1514ce52e Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 15 Feb 2016 17:29:23 +0800 Subject: [PATCH] * finish task #1295. --- module/bug/model.php | 7 +++++++ module/bug/view/edit.html.php | 1 + module/common/lang/en.php | 1 + module/common/lang/zh-cn.php | 1 + module/project/control.php | 5 +---- module/story/model.php | 18 +++++++++++++++--- module/story/view/change.html.php | 1 + module/story/view/edit.html.php | 1 + module/task/model.php | 7 +++++++ module/task/view/edit.html.php | 1 + module/testcase/model.php | 7 +++++++ module/testcase/view/edit.html.php | 5 +++-- 12 files changed, 46 insertions(+), 9 deletions(-) diff --git a/module/bug/model.php b/module/bug/model.php index f4b87e71f1..151c28f977 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -393,6 +393,13 @@ class bugModel extends model public function update($bugID) { $oldBug = $this->getById($bugID); + if($oldBug->lastEditedDate != $this->post->lastEditedDate) + { + dao::$errors[] = $this->lang->error->hasEdited; + return false; + } + unset($_POST['lastEditedDate']); + $now = helper::now(); $bug = fixer::input('post') ->cleanInt('product,module,severity,project,story,task') diff --git a/module/bug/view/edit.html.php b/module/bug/view/edit.html.php index f0c097b004..35c314d4cf 100644 --- a/module/bug/view/edit.html.php +++ b/module/bug/view/edit.html.php @@ -56,6 +56,7 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
lastEditedDate); echo html::submitButton(); $browseLink = $app->session->bugList != false ? $app->session->bugList : inlink('browse', "productID=$bug->product"); echo html::linkButton($lang->goback, $browseLink); diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 133677764f..c69fdf3020 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -364,6 +364,7 @@ $lang->error->passwordrule = "Password should more than six letters."; $lang->error->accessDenied = 'No purview'; $lang->error->pasteImg = 'Your browser does not support the paste image!'; $lang->error->noData = 'No data'; +$lang->error->hasEdited = 'The record may have been changed. Please refresh and re edit!'; /* Pager. */ $lang->pager = new stdclass(); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 05259a7caa..4149dab04c 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -364,6 +364,7 @@ $lang->error->passwordrule = "密码应该符合规则,长度至少为六 $lang->error->accessDenied = '您没有访问权限'; $lang->error->pasteImg = '您的浏览器不支持粘贴图片!'; $lang->error->noData = '没有数据'; +$lang->error->hasEdited = '该记录可能已经被改动。请刷新页面重新编辑!'; /* 分页信息。*/ $lang->pager = new stdclass(); diff --git a/module/project/control.php b/module/project/control.php index 594fb69e12..69c35e5fc5 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -222,10 +222,7 @@ class project extends control /* team member pairs. */ $memberPairs = array(); - foreach($this->view->teamMembers as $key => $member) - { - $memberPairs[$key] = $member->realname; - } + foreach($this->view->teamMembers as $key => $member) $memberPairs[$key] = $member->realname; /* Assign. */ $this->view->tasks = $tasks; diff --git a/module/story/model.php b/module/story/model.php index e7bdefd390..18759f4f13 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -342,7 +342,14 @@ class storyModel extends model { $specChanged = false; $oldStory = $this->getById($storyID); - $story = fixer::input('post')->stripTags($this->config->story->editor->change['id'], $this->config->allowedTags)->get(); + if($oldStory->lastEditedDate != $this->post->lastEditedDate) + { + dao::$errors[] = $this->lang->error->hasEdited; + return false; + } + unset($_POST['lastEditedDate']); + + $story = fixer::input('post')->stripTags($this->config->story->editor->change['id'], $this->config->allowedTags)->get(); if($story->spec != $oldStory->spec or $story->verify != $oldStory->verify or $story->title != $oldStory->title or $this->loadModel('file')->getCount()) $specChanged = true; $now = helper::now(); @@ -399,6 +406,12 @@ class storyModel extends model { $now = helper::now(); $oldStory = $this->getById($storyID); + if($oldStory->lastEditedDate != $this->post->lastEditedDate) + { + dao::$errors[] = $this->lang->error->hasEdited; + return false; + } + unset($_POST['lastEditedDate']); $story = fixer::input('post') ->cleanInt('product,module,pri') @@ -1192,14 +1205,13 @@ class storyModel extends model { $stories = $this->dao->select('*')->from(TABLE_STORY) ->where('product')->in($productID) + ->beginIF($branch)->andWhere("branch")->eq($branch)->fi() ->andWhere('deleted')->eq(0) ->andWhere('stage')->in('developed,released') ->andWhere('status')->ne('closed') ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); - $stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in(array_keys($stories))->andWhere('stage')->notIN('released')->fetchPairs('story', 'story'); - foreach($stages as $storyID) unset($stories[$storyID]); return $this->mergePlanTitle($productID, $stories, $branch); } diff --git a/module/story/view/change.html.php b/module/story/view/change.html.php index c7d6858675..5bf8293c5f 100644 --- a/module/story/view/change.html.php +++ b/module/story/view/change.html.php @@ -59,6 +59,7 @@ lastEditedDate); echo html::submitButton('', '', 'btn-primary'); echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id")); ?> diff --git a/module/story/view/edit.html.php b/module/story/view/edit.html.php index 28309dc82e..01b7a2734c 100644 --- a/module/story/view/edit.html.php +++ b/module/story/view/edit.html.php @@ -41,6 +41,7 @@
lastEditedDate); echo html::submitButton($lang->save); echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id")); ?> diff --git a/module/task/model.php b/module/task/model.php index f202f5c598..a303510a9e 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -187,6 +187,13 @@ class taskModel extends model public function update($taskID) { $oldTask = $this->getById($taskID); + if($oldTask->lastEditedDate != $this->post->lastEditedDate) + { + dao::$errors[] = $this->lang->error->hasEdited; + return false; + } + unset($_POST['lastEditedDate']); + $now = helper::now(); $task = fixer::input('post') ->setDefault('story, estimate, left, consumed', 0) diff --git a/module/task/view/edit.html.php b/module/task/view/edit.html.php index 73140dc30e..25ef6d73a9 100644 --- a/module/task/view/edit.html.php +++ b/module/task/view/edit.html.php @@ -48,6 +48,7 @@
fetch('file', 'buildform');?>
+ lastEditedDate);?> save) . html::linkButton($lang->goback, $this->inlink('view', "taskID=$task->id")) .html::hidden('consumed', $task->consumed);?>
diff --git a/module/testcase/model.php b/module/testcase/model.php index 58fa496d01..77d3ac649a 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -226,6 +226,13 @@ class testcaseModel extends model public function update($caseID) { $oldCase = $this->getById($caseID); + if($oldCase->lastEditedDate != $this->post->lastEditedDate) + { + dao::$errors[] = $this->lang->error->hasEdited; + return false; + } + unset($_POST['lastEditedDate']); + $now = helper::now(); $stepChanged = false; $steps = array(); diff --git a/module/testcase/view/edit.html.php b/module/testcase/view/edit.html.php index 327489b2d1..669a7b285a 100644 --- a/module/testcase/view/edit.html.php +++ b/module/testcase/view/edit.html.php @@ -76,8 +76,9 @@
fetch('file', 'buildform');?>
- - "' /> + lastEditedDate);?> + + "' />