diff --git a/module/execution/model.php b/module/execution/model.php
index 81a29691de..7bd32c1aef 100755
--- a/module/execution/model.php
+++ b/module/execution/model.php
@@ -5219,14 +5219,15 @@ class executionModel extends model
/**
* Print execution nested list.
*
- * @param object $execution
- * @param bool $isChild
- * @param array $users
+ * @param int $execution
+ * @param int $isChild
+ * @param int $users
* @param int $productID
+ * @param string $project
* @access public
* @return void
*/
- public function printNestedList($execution, $isChild, $users, $productID)
+ public function printNestedList($execution, $isChild, $users, $productID, $project = '')
{
$this->loadModel('task');
$this->loadModel('execution');
@@ -5292,11 +5293,21 @@ class executionModel extends model
echo '
' . html::ring($execution->hours->progress) . ' | ';
echo " | ";
echo '';
- common::printIcon('execution', 'start', "executionID={$execution->id}", $execution, 'list', '', '', 'iframe', true);
+
+ $title = '';
+ $disabled = '';
+ if($project->model == 'ipd')
+ {
+ $this->app->loadLang('stage');
+ $title = $execution->ipdStage['canStart'] ? '' : sprintf($this->lang->execution->disabledTip->startTip, $this->lang->stage->ipdTypeList[$execution->ipdStage['preAttribute']], $this->lang->stage->ipdTypeList[$execution->attribute]);
+ $disabled = $execution->ipdStage['canStart'] ? '' : 'disabled';
+ }
+ common::printIcon('execution', 'start', "executionID={$execution->id}", $execution, 'list', '', '', 'iframe', true, $disabled, $title);
+
$class = !empty($execution->children) ? 'disabled' : '';
common::printIcon('task', 'create', "executionID={$execution->id}", '', 'list', '', '', $class, false, "data-app='execution'");
- $project = $this->loadModel('project')->getByID($execution->project);
+ if(empty($project)) $project = $this->loadModel('project')->getByID($execution->project);
if($execution->type == 'stage' or ($this->app->tab == 'project' and !empty($project->model) and $project->model == 'waterfallplus'))
{
$isCreateTask = $this->loadModel('programplan')->isCreateTask($execution->id);
diff --git a/module/project/view/execution.html.php b/module/project/view/execution.html.php
index 6b61d018a8..f48b380f4f 100644
--- a/module/project/view/execution.html.php
+++ b/module/project/view/execution.html.php
@@ -115,7 +115,7 @@
division = $project->division;?>
product)) ? $execution->product : $productID;?>
- execution->printNestedList($execution, false, $users, $executionProductID);?>
+ execution->printNestedList($execution, false, $users, $executionProductID, $project);?>
diff --git a/module/task/model.php b/module/task/model.php
index d6382648ba..39affb7f43 100755
--- a/module/task/model.php
+++ b/module/task/model.php
@@ -4175,7 +4175,7 @@ class taskModel extends model
$list .= ' | | ';
$list .= ' | ';
$list .= '';
- $list .= $this->buildOperateMenu($task, 'browse');
+ $list .= $this->buildOperateBrowseMenu($task, $execution);
$list .= ' | ';
if(!empty($task->children))
@@ -4252,7 +4252,7 @@ class taskModel extends model
* @access public
* @return string
*/
- public function buildOperateBrowseMenu($task)
+ public function buildOperateBrowseMenu($task, $execution = '')
{
$menu = '';
$params = "taskID=$task->id";