diff --git a/module/action/model.php b/module/action/model.php index ddfeef63fe..ca1ef97a30 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -707,6 +707,10 @@ class actionModel extends model { $desc = $this->lang->$objectType->action->rejectreviewed; } + elseif($action->objectType == 'productplan' and in_array($action->action, array('startedbychild','finishedbychild','closedbychild','activatedbychild'))) + { + $desc = $this->lang->$objectType->action->changebychild; + } elseif(isset($this->config->maxVersion) and strpos($this->config->action->assetType, $action->objectType) !== false and $action->action == 'approved') { $desc = empty($this->lang->action->approve->{$action->extra}) ? '' : $this->lang->action->approve->{$action->extra}; diff --git a/module/productplan/control.php b/module/productplan/control.php index a58a0efd39..8b6204bf00 100644 --- a/module/productplan/control.php +++ b/module/productplan/control.php @@ -408,9 +408,6 @@ class productplan extends control $changes = $this->productplan->updateStatus($planID, 'doing'); if(dao::isError()) die(js::error(dao::getError())); - $actionID = $this->loadModel('action')->create('productplan', $planID, 'started'); - $this->action->logHistory($actionID, $changes); - die(js::reload('parent')); } } @@ -421,9 +418,6 @@ class productplan extends control $changes = $this->productplan->updateStatus($planID, 'doing'); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - $actionID = $this->loadModel('action')->create('productplan', $planID, 'started'); - $this->action->logHistory($actionID, $changes); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess,'locate' => 'parent')); } $this->view->plan = $plan; @@ -450,9 +444,6 @@ class productplan extends control $changes = $this->productplan->updateStatus($planID, 'done'); if(dao::isError()) die(js::error(dao::getError())); - $actionID = $this->loadModel('action')->create('productplan', $planID, 'finished'); - $this->action->logHistory($actionID, $changes); - die(js::reload('parent')); } } @@ -476,9 +467,6 @@ class productplan extends control $changes = $this->productplan->updateStatus($planID, 'closed'); if(dao::isError()) die(js::error(dao::getError())); - $actionID = $this->loadModel('action')->create('productplan', $planID, 'closed'); - $this->action->logHistory($actionID, $changes); - die(js::reload('parent')); } } @@ -502,9 +490,6 @@ class productplan extends control $changes = $this->productplan->updateStatus($planID, 'doing'); if(dao::isError()) die(js::error(dao::getError())); - $actionID = $this->loadModel('action')->create('productplan', $planID, 'activated'); - $this->action->logHistory($actionID, $changes); - die(js::reload('parent')); } } diff --git a/module/productplan/lang/en.php b/module/productplan/lang/en.php index cff90a3bb8..a8abcabed2 100644 --- a/module/productplan/lang/en.php +++ b/module/productplan/lang/en.php @@ -98,6 +98,11 @@ $lang->productplan->statusList['doing'] = 'Doing'; $lang->productplan->statusList['done'] = 'Done'; $lang->productplan->statusList['closed'] = 'Closed'; +$lang->productplan->parentActionList['startedbychild'] = 'starting the productplan sets the plan status as Doing.'; +$lang->productplan->parentActionList['finishedbychild'] = 'finishing all productplan sets the plan status as Done.'; +$lang->productplan->parentActionList['closedbychild'] = 'closing all productplan sets the plan status as Closed.'; +$lang->productplan->parentActionList['activatedbychild'] = 'activating the productplan sets the plan status as Doing.'; + $lang->productplan->endList[7] = '1 Week'; $lang->productplan->endList[14] = '2 Weeks'; $lang->productplan->endList[31] = '1 Month'; @@ -122,3 +127,6 @@ $lang->productplan->featureBar['browse']['wait'] = 'Waiting'; $lang->productplan->featureBar['browse']['doing'] = 'Doing'; $lang->productplan->featureBar['browse']['done'] = 'Done'; $lang->productplan->featureBar['browse']['closed'] = 'Closed'; + +$lang->productplan->action = new stdclass(); +$lang->productplan->action->changebychild = array('main' => '$date, $extra', 'extra' => 'parentActionList'); diff --git a/module/productplan/lang/zh-cn.php b/module/productplan/lang/zh-cn.php index 2cc93bd7d8..ac6197f574 100644 --- a/module/productplan/lang/zh-cn.php +++ b/module/productplan/lang/zh-cn.php @@ -97,6 +97,11 @@ $lang->productplan->statusList['doing'] = '进行中'; $lang->productplan->statusList['done'] = '已完成'; $lang->productplan->statusList['closed'] = '已关闭'; +$lang->productplan->parentActionList['startedbychild'] = '系统判断由于子计划 开始 ,将计划状态置为 进行中 。'; +$lang->productplan->parentActionList['finishedbychild'] = '系统判断由于子计划 全部完成 ,将计划状态置为 已完成 。'; +$lang->productplan->parentActionList['closedbychild'] = '系统判断由于子计划 全部关闭 ,将计划状态置为 已关闭 。'; +$lang->productplan->parentActionList['activatedbychild'] = '系统判断由于子计划 激活 ,将计划状态置为 进行中 。'; + $lang->productplan->endList[7] = '一星期'; $lang->productplan->endList[14] = '两星期'; $lang->productplan->endList[31] = '一个月'; @@ -121,3 +126,6 @@ $lang->productplan->featureBar['browse']['wait'] = '未开始'; $lang->productplan->featureBar['browse']['doing'] = '进行中'; $lang->productplan->featureBar['browse']['done'] = '已完成'; $lang->productplan->featureBar['browse']['closed'] = '已关闭'; + +$lang->productplan->action = new stdclass(); +$lang->productplan->action->changebychild = array('main' => '$date, $extra', 'extra' => 'parentActionList'); diff --git a/module/productplan/model.php b/module/productplan/model.php index 2b8b027fca..2d9fca41e1 100644 --- a/module/productplan/model.php +++ b/module/productplan/model.php @@ -467,7 +467,7 @@ class productplanModel extends model if($oldPlan->parent > 0) $parentPlan = $this->getByID($oldPlan->parent); if(!empty($parentPlan->begin)) - { + { if($plan->begin < $parentPlan->begin) dao::$errors['begin'] = sprintf($this->lang->productplan->beginLetterParent, $parentPlan->begin); } if(!empty($parentPlan->end)) @@ -513,7 +513,11 @@ class productplanModel extends model { $planID = (int)$planID; $oldPlan = $this->getByID($planID); - if($oldPlan->parent > 0) $parentPlan = $this->getByID($oldPlan->parent); + if($oldPlan->parent > 0) + { + $parentPlan = $this->getByID($oldPlan->parent); + $parentChange = false; + } if($status == 'doing' and !empty($_POST)) { @@ -530,6 +534,7 @@ class productplanModel extends model ->where('id')->eq($planID) ->beginIF(isset($parentPlan))->orWhere('id')->eq($oldPlan->parent)->fi() ->exec(); + if($parentPlan->status != 'doing') $parentChange = true; } elseif($status == 'doing' and isset($parentPlan) and $parentPlan->status != 'doing') { @@ -538,6 +543,7 @@ class productplanModel extends model ->where('id')->eq($planID) ->orWhere('id')->eq($oldPlan->parent) ->exec(); + if($parentPlan->status != 'doing') $parentChange = true; } elseif($status == 'done' and isset($parentPlan)) { @@ -551,6 +557,7 @@ class productplanModel extends model break; } } + if($parentDone) $parentChange = true; $this->dao->update(TABLE_PRODUCTPLAN) ->set('`status`')->eq($status) ->where('id')->eq($planID) @@ -569,6 +576,7 @@ class productplanModel extends model break; } } + if($parentClosed) $parentChange = true; $this->dao->update(TABLE_PRODUCTPLAN) ->set('`status`')->eq($status) ->where('id')->eq($planID) @@ -586,7 +594,39 @@ class productplanModel extends model if(dao::isError()) return false; if(!isset($plan)) $plan = $this->getByID($planID); - if(!dao::isError())return common::createChanges($oldPlan, $plan); + if(!dao::isError()) + { + $method = $this->app->rawMethod; + if($method == 'start') + { + $action = 'started'; + if($parentChange) $parentAction = 'startedbychild'; + } + elseif($method == 'finish') + { + $action = 'finished'; + if($parentChange) $parentAction = 'finishedbychild'; + } + elseif($method == 'close') + { + $action = 'closed'; + if($parentChange) $parentAction = 'closedbychild'; + } + elseif($method == 'activate') + { + $action = 'activated'; + if($parentChange) $parentAction = 'activatedbychild'; + } + + if(isset($action)) + { + $changes = common::createChanges($oldPlan, $plan); + $actionID = $this->loadModel('action')->create('productplan', $planID, $action); + $this->action->loghistory($actionID, $changes); + + if($parentChange) $actionID = $this->action->create('productplan', $oldPlan->parent, $parentAction, '', $parentAction); + } + } } /** @@ -605,7 +645,7 @@ class productplanModel extends model $config = HTMLPurifier_Config::createDefault(); $config->set('Cache.DefinitionImpl', null); $purifier = new HTMLPurifier($config); - + $plans = array(); $extendFields = $this->getFlowExtendFields(); foreach($data->id as $planID) @@ -617,7 +657,7 @@ class productplanModel extends model $plan->begin = $data->begin[$planID] == '' ? '2030-01-01' : $data->begin[$planID]; $plan->end = $data->end[$planID] == '' ? '2030-01-01' : $data->end[$planID]; $plan->status = $data->status[$planID]; - + if($oldPlans[$planID]->parent > 0) $parentPlan = $this->getByID($oldPlans[$planID]->parent); if(!empty($parentPlan->begin)) {