This commit is contained in:
chujilu
2014-08-13 21:50:59 +08:00
26 changed files with 154 additions and 21 deletions
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `zt_task` CHANGE `status` `status` enum('wait','doing','done','pause','cancel','closed') COLLATE 'utf8_general_ci' NOT NULL DEFAULT 'wait' AFTER `deadline`;
+3
View File
@@ -91,6 +91,7 @@ $lang->action->desc->canceled = '$date, canceled by <strong>$actor</strong
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> commited to svn,revision is <strong>#$extra</strong>.' . "\n";
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> commited to git,revision is <strong>#$extra</strong>.' . "\n";
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.';
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.';
$lang->action->desc->diff1 = 'changed <strong><i>%s</i></strong>, old is "%s", new is "%s".<br />';
$lang->action->desc->diff2 = 'changed <strong><i>%s</i></strong>, the diff is:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
$lang->action->desc->diff3 = "changed file's name %s to %s.";
@@ -131,6 +132,7 @@ $lang->action->label->recordestimate = 'Hours';
$lang->action->label->editestimate = 'edit hour';
$lang->action->label->canceled = 'canceled';
$lang->action->label->finished = 'finished';
$lang->action->label->paused = 'paused';
$lang->action->label->login = 'login';
$lang->action->label->logout = "logout";
@@ -204,5 +206,6 @@ $lang->action->search->label['recordestimate'] = $lang->action->label->reco
$lang->action->search->label['editestimate'] = $lang->action->label->editestimate;
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
$lang->action->search->label['finished'] = $lang->action->label->finished;
$lang->action->search->label['paused'] = $lang->action->label->paused;
$lang->action->search->label['login'] = $lang->action->label->login;
$lang->action->search->label['logout'] = $lang->action->label->logout;
+3
View File
@@ -91,6 +91,7 @@ $lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暂停。' . "\n";
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote>%s</blockquote>" . "\n<div class='hidden'>%s</div>";
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
@@ -131,6 +132,7 @@ $lang->action->label->recordestimate = '记录了工时';
$lang->action->label->editestimate = '编辑了工时';
$lang->action->label->canceled = '取消了';
$lang->action->label->finished = '完成';
$lang->action->label->paused = '暂停';
$lang->action->label->login = '登录系统';
$lang->action->label->logout = "退出登录";
@@ -204,5 +206,6 @@ $lang->action->search->label['recordestimate'] = $lang->action->label->reco
$lang->action->search->label['editestimate'] = $lang->action->label->editestimate;
$lang->action->search->label['canceled'] = $lang->action->label->canceled;
$lang->action->search->label['finished'] = $lang->action->label->finished;
$lang->action->search->label['paused'] = $lang->action->label->paused;
$lang->action->search->label['login'] = $lang->action->label->login;
$lang->action->search->label['logout'] = $lang->action->label->logout;
+1 -1
View File
@@ -61,7 +61,7 @@ class bug extends control
* @access public
* @return void
*/
public function browse($productID = 0, $browseType = 'all', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function browse($productID = 0, $browseType = 'unclosed', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
/* Set browseType, productID, moduleID and queryID. */
$browseType = strtolower($browseType);
+1 -1
View File
@@ -19,13 +19,13 @@ js::set('moduleID', $moduleID);
<div id='featurebar'>
<ul class='nav'>
<?php
echo "<li id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed&param=0"), $lang->bug->unclosed) . "</li>";
echo "<li id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all&param=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</li>";
echo "<li id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe&param=0"), $lang->bug->assignToMe) . "</li>";
echo "<li id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe&param=0"), $lang->bug->openedByMe) . "</li>";
echo "<li id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe&param=0"), $lang->bug->resolvedByMe) . "</li>";
echo "<li id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull&param=0"), $lang->bug->assignToNull) . "</li>";
echo "<li id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unResolved&param=0"), $lang->bug->unResolved) . "</li>";
echo "<li id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=unclosed&param=0"), $lang->bug->unclosed) . "</li>";
echo "<li id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs&param=0"), $lang->bug->longLifeBugs) . "</li>";
echo "<li id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs&param=0"), $lang->bug->postponedBugs) . "</li>";
echo "<li id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=needconfirm&param=0"), $lang->bug->needConfirm) . "</li>";
+2 -1
View File
@@ -201,7 +201,7 @@ $lang->project->menu->doc = array('link' => 'Doc|project|doc|porjectID=%s'
$lang->project->menu->product = array('link' => 'Product|project|manageproducts|projectID=%s', 'alias' => 'edit,start,suspend,delay,close');
$lang->project->menu->view = 'Info|project|view|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add">&nbsp;</span>New|project|create', 'float' => 'right');
$lang->project->menu->all = array('link' => '<i class="icon-th-large"></i>&nbsp;Projects|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<i class="icon-th-large"></i>&nbsp;Projects|project|index|locate=no&status=undone&projectID=%s', 'float' => 'right');
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -460,6 +460,7 @@ $lang->icons['review'] = 'search';
$lang->icons['confirm'] = 'search';
$lang->icons['putoff'] = 'calendar';
$lang->icons['suspend'] = 'pause';
$lang->icons['pause'] = 'pause';
$lang->icons['cancel'] = 'ban-circle';
$lang->icons['recordEstimate'] = 'time';
$lang->icons['customFields'] = 'cogs';
+2 -1
View File
@@ -201,7 +201,7 @@ $lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=
$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
$lang->project->menu->view = array('link' => '概况|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->menu->create = array('link' => '<i class="icon-plus"></i>&nbsp;添加项目|project|create', 'float' => 'right');
$lang->project->menu->all = array('link' => '<i class="icon-th-large"></i>&nbsp;所有项目|project|index|locate=no&status=all&projectID=%s', 'float' => 'right');
$lang->project->menu->all = array('link' => '<i class="icon-th-large"></i>&nbsp;所有项目|project|index|locate=no&status=undone&projectID=%s', 'float' => 'right');
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -460,6 +460,7 @@ $lang->icons['review'] = 'search';
$lang->icons['confirm'] = 'search';
$lang->icons['putoff'] = 'calendar';
$lang->icons['suspend'] = 'pause';
$lang->icons['pause'] = 'pause';
$lang->icons['cancel'] = 'ban-circle';
$lang->icons['recordEstimate'] = 'time';
$lang->icons['customFields'] = 'cogs';
+7 -1
View File
@@ -93,7 +93,7 @@ class product extends control
* @access public
* @return void
*/
public function browse($productID = 0, $browseType = 'allStory', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function browse($productID = 0, $browseType = 'unclosed', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
/* Lower browse type. */
$browseType = strtolower($browseType);
@@ -126,6 +126,12 @@ class product extends control
/* Get stories. */
$stories = array();
if($browseType == 'unclosed')
{
$unclosedStatus = $this->lang->story->statusList;
unset($unclosedStatus['closed']);
$stories = $this->story->getProductStories($productID, 0, array_keys($unclosedStatus), $orderBy, $pager);
}
if($browseType == 'allstory') $stories = $this->story->getProductStories($productID, 0, 'all', $orderBy, $pager);
if($browseType == 'bymodule') $stories = $this->story->getProductStories($productID, $this->tree->getAllChildID($moduleID), 'all', $orderBy, $pager);
if($browseType == 'bysearch') $stories = $this->story->getBySearch($productID, $queryID, $orderBy, $pager);
+1
View File
@@ -76,6 +76,7 @@ $lang->product->activeStory = 'Active';
$lang->product->changedStory = 'Changed';
$lang->product->willClose = 'Will close';
$lang->product->closedStory = 'Closed';
$lang->product->unclosed = 'Unclosed';
$lang->product->allStory = 'All';
$lang->product->allProduct = 'All products';
+1
View File
@@ -76,6 +76,7 @@ $lang->product->activeStory = '激活';
$lang->product->changedStory = '已变更';
$lang->product->willClose = '待关闭';
$lang->product->closedStory = '已关闭';
$lang->product->unclosed = '未关闭';
$lang->product->allStory = '全部需求';
$lang->product->allProduct = '全部产品';
+1
View File
@@ -15,6 +15,7 @@
<?php js::set('browseType', $browseType);?>
<div id='featurebar'>
<ul class='nav'>
<li id='unclosedTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&browseType=unclosed"), $lang->product->unclosed);?></li>
<li id='allstoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&browseType=allStory"), $lang->product->allStory);?></li>
<li id='assignedtomeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&browseType=assignedtome"), $lang->product->assignedToMe);?></li>
<li id='openedbymeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&browseType=openedByMe"), $lang->product->openedByMe);?></li>
+2 -2
View File
@@ -79,7 +79,7 @@ class productplanModel extends model
->beginIF($expired == 'unexpired')
->andWhere('end')->gt($date)
->fi()
->orderBy('begin')->fetchPairs();
->orderBy('begin desc')->fetchPairs();
}
/**
@@ -94,7 +94,7 @@ class productplanModel extends model
return array('' => '') + $this->dao->select('id,title')->from(TABLE_PRODUCTPLAN)
->where('product')->in(array_keys($products))
->andWhere('deleted')->eq(0)
->orderBy('begin')->fetchPairs();
->orderBy('begin desc')->fetchPairs();
}
/**
+10 -4
View File
@@ -37,7 +37,7 @@ class project extends control
* @access public
* @return void
*/
public function index($locate = 'yes', $status = 'all', $projectID = 0)
public function index($locate = 'yes', $status = 'undone', $projectID = 0)
{
if($locate == 'yes') $this->locate($this->createLink('project', 'task'));
@@ -112,7 +112,7 @@ class project extends control
* @access public
* @return void
*/
public function task($projectID = 0, $status = 'all', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 100, $pageID = 1)
public function task($projectID = 0, $status = 'unclosed', $param = 0, $orderBy = '', $recTotal = 0, $recPerPage = 100, $pageID = 1)
{
$this->loadModel('tree');
$this->loadModel('search');
@@ -157,8 +157,14 @@ class project extends control
}
elseif($browseType != "bysearch")
{
$status = $status == 'byProject' ? 'all' : $status;
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $status, $orderBy, $pager);
$qureyStatus = $status == 'byProject' ? 'all' : $status;
if($qureyStatus == 'unclosed')
{
$qureyStatus = $this->lang->task->statusList;
unset($qureyStatus['closed']);
$qureyStatus = array_keys($qureyStatus);
}
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $qureyStatus, $orderBy, $pager);
}
else
{
+2
View File
@@ -55,6 +55,8 @@ $lang->project->noProduct = 'No product';
$lang->project->select = '--select project--';
$lang->project->createStory = "Create story";
$lang->project->all = 'All';
$lang->project->undone = 'Undone';
$lang->project->unclosed = 'Unclosed';
$lang->project->typeDesc = 'No burndown and story in OPS';
$lang->project->mine = 'I charge : ';
$lang->project->other = 'Other : ';
+2
View File
@@ -55,6 +55,8 @@ $lang->project->noProduct = '无产品项目';
$lang->project->select = '--请选择项目--';
$lang->project->createStory = "新增需求";
$lang->project->all = '所有';
$lang->project->undone = '未完成';
$lang->project->unclosed = '未关闭';
$lang->project->typeDesc = '运维项目禁用燃尽图和需求。';
$lang->project->mine = '我负责:';
$lang->project->other = '其他:';
+2 -2
View File
@@ -1414,7 +1414,7 @@ class projectModel extends model
*/
public function summary($tasks)
{
$taskSum = $statusWait = $statusDone = $statusDoing = $statusClosed = $statusCancel = 0;
$taskSum = $statusWait = $statusDone = $statusDoing = $statusClosed = $statusCancel = $statusPause = 0;
$totalEstimate = $totalConsumed = $totalLeft = 0.0;
foreach($tasks as $task)
{
@@ -1425,7 +1425,7 @@ class projectModel extends model
$$statusVar ++;
}
return sprintf($this->lang->project->taskSummary, count($tasks), $statusWait, $statusDoing, $totalEstimate, $totalConsumed, $totalLeft);
return sprintf($this->lang->project->taskSummary, count($tasks), $statusWait, $statusDoing, $totalEstimate, round($totalConsumed, 1), $totalLeft);
}
/**
+2 -1
View File
@@ -17,7 +17,8 @@
<?php echo html::a($this->createLink('project', 'create'), "<i class='icon-plus'></i> " . $lang->project->create,'', "class='btn'") ?>
</div>
<ul class='nav'>
<?php echo "<li id='allTab'>" . html::a(inlink("index", "locate=no&status=all&projectID=$project->id"), $lang->project->all) . '</li>';?>
<?php echo "<li id='undoneTab'>" . html::a(inlink("index", "locate=no&status=undone&projectID=$project->id"), $lang->project->undone) . '</li>';?>
<?php echo "<li id='allTab'>" . html::a(inlink("index", "locate=no&status=all&projectID=$project->id"), $lang->project->all) . '</li>';?>
<?php echo "<li id='waitTab'>" . html::a(inlink("index", "locate=no&status=wait&projectID=$project->id"), $lang->project->statusList['wait']) . '</li>';?>
<?php echo "<li id='doingTab'>" . html::a(inlink("index", "locate=no&status=doing&projectID=$project->id"), $lang->project->statusList['doing']) . '</li>';?>
<?php echo "<li id='suspendedTab'>" . html::a(inlink("index", "locate=no&status=suspended&projectID=$project->id"), $lang->project->statusList['suspended']) . '</li>';?>
+1
View File
@@ -2,6 +2,7 @@
<div id='featurebar'>
<ul class='nav'>
<?php
echo "<li id='unclosedTab'>"; common::printLink('project', 'task', "project=$projectID&type=unclosed", $lang->project->unclosed); echo '</li>' ;
echo "<li id='allTab'>"; common::printLink('project', 'task', "project=$projectID&type=all", $lang->project->allTasks); echo '</li>' ;
if($project->type == 'sprint' or $project->type == 'waterfall') print "<li id='burnTab'>" and common::printLink('project', 'burn', "project=$projectID", $lang->project->burn); print '</li>' ;
echo "<li id='assignedtomeTab'>"; common::printLink('project', 'task', "project=$projectID&type=assignedtome", $lang->project->assignedToMe); echo '</li>' ;
+3 -5
View File
@@ -36,14 +36,12 @@ class storyModel extends model
if($setImgSize) $story->spec = $this->loadModel('file')->setImgSize($story->spec);
if($setImgSize) $story->verify = $this->file->setImgSize($story->verify);
$story->projects = $this->dao->select('t1.project, t2.name, t2.status')
->from(TABLE_PROJECTSTORY)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')
->on('t1.project = t2.id')
$story->projects = $this->dao->select('t1.project, t2.name, t2.status')->from(TABLE_PROJECTSTORY)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->where('t1.story')->eq($storyID)
->orderBy('t1.project DESC')
->fetchAll('project');
$story->tasks = $this->dao->select('id, name, assignedTo, project, status, consumed, `left`')->from(TABLE_TASK)->where('story')->eq($storyID)->orderBy('id DESC')->fetchGroup('project');
$story->tasks = $this->dao->select('id, name, assignedTo, project, status, consumed, `left`')->from(TABLE_TASK)->where('story')->eq($storyID)->andWhere('deleted')->eq(0)->orderBy('id DESC')->fetchGroup('project');
//$story->bugCount = $this->dao->select('COUNT(*)')->alias('count')->from(TABLE_BUG)->where('story')->eq($storyID)->fetch('count');
//$story->caseCount = $this->dao->select('COUNT(*)')->alias('count')->from(TABLE_CASE)->where('story')->eq($storyID)->fetch('count');
if($story->toBug) $story->toBugTitle = $this->dao->findById($story->toBug)->from(TABLE_BUG)->fetch('title');
+1
View File
@@ -27,6 +27,7 @@ $config->task->editor->finish = array('id' => 'comment', 'tools' => 'simpleToo
$config->task->editor->close = array('id' => 'comment', 'tools' => 'simpleTools');
$config->task->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->task->editor->cancel = array('id' => 'comment', 'tools' => 'simpleTools');
$config->task->editor->pause = array('id' => 'comment', 'tools' => 'simpleTools');
$config->task->exportFields = '
id, project, module, story,
+32
View File
@@ -595,6 +595,38 @@ class task extends control
$this->display();
}
/**
* Pause task.
*
* @param int $taskID
* @access public
* @return void
*/
public function pause($taskID)
{
$this->commonAction($taskID);
if(!empty($_POST))
{
$this->loadModel('action');
$changes = $this->task->pause($taskID);
if(dao::isError()) die(js::error(dao::getError()));
if($this->post->comment != '' or !empty($changes))
{
$actionID = $this->action->create('task', $taskID, 'Paused', $this->post->comment);
$this->action->logHistory($actionID, $changes);
}
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
die(js::locate($this->createLink('task', 'view', "taskID=$taskID"), 'parent'));
}
$this->view->title = $this->view->project->name . $this->lang->colon .$this->lang->task->pause;
$this->view->position[] = $this->lang->task->pause;
$this->display();
}
/**
* Close a task.
*
+2
View File
@@ -22,6 +22,7 @@ $lang->task->logEfforts = "Log working hours";
$lang->task->record = "Estimate";
$lang->task->start = "Start";
$lang->task->finish = "Finish";
$lang->task->pause = "Pause";
$lang->task->close = "Close";
$lang->task->batchClose = "Batch close";
$lang->task->cancel = "Cancel";
@@ -89,6 +90,7 @@ $lang->task->statusList[''] = '';
$lang->task->statusList['wait'] = 'Pending';
$lang->task->statusList['doing'] = 'Doing';
$lang->task->statusList['done'] = 'Done';
$lang->task->statusList['pause'] = 'Paused';
$lang->task->statusList['cancel'] = 'Canceled';
$lang->task->statusList['closed'] = 'Closed';
+2
View File
@@ -22,6 +22,7 @@ $lang->task->logEfforts = "记录工时";
$lang->task->record = "工时";
$lang->task->start = "开始";
$lang->task->finish = "完成";
$lang->task->pause = "暂停";
$lang->task->close = "关闭";
$lang->task->batchClose = "批量关闭";
$lang->task->cancel = "取消";
@@ -89,6 +90,7 @@ $lang->task->statusList[''] = '';
$lang->task->statusList['wait'] = '未开始';
$lang->task->statusList['doing'] = '进行中';
$lang->task->statusList['done'] = '已完成';
$lang->task->statusList['pause'] = '已暂停';
$lang->task->statusList['cancel'] = '已取消';
$lang->task->statusList['closed'] = '已关闭';
+32 -2
View File
@@ -499,6 +499,13 @@ class taskModel extends model
$data->assignedDate = $now;
$data->realStarted = date('Y-m-d');
}
else if($task->status == 'pause')
{
$task->status = 'doing';
$data->status = $task->status;
$data->assignedTo = $this->app->user->account;
$data->assignedDate = $now;
}
$this->dao->update(TABLE_TASK)->data($data)->where('id')->eq($taskID)->exec();
@@ -558,6 +565,28 @@ class taskModel extends model
if($oldTask->story) $this->loadModel('story')->setStage($oldTask->story);
if(!dao::isError()) return common::createChanges($oldTask, $task);
}
/**
* Pause task
*
* @param int $taskID
* @access public
* @return array
*/
public function pause($taskID)
{
$oldTask = $this->getById($taskID);
$now = helper::now();
$task = fixer::input('post')
->setDefault('status', 'pause')
->setDefault('lastEditedBy', $this->app->user->account)
->setDefault('lastEditedDate', $now)
->remove('comment')->get();
$this->dao->update(TABLE_TASK)->data($task)->autoCheck()->where('id')->eq((int)$taskID)->exec();
if(!dao::isError()) return common::createChanges($oldTask, $task);
}
/**
* Close a task.
@@ -726,7 +755,7 @@ class taskModel extends model
*/
public function getProjectTasks($projectID, $type = 'all', $orderBy = 'status_asc, id_desc', $pager = null)
{
$type = strtolower($type);
if(is_string($type)) $type = strtolower($type);
$tasks = $this->dao->select('t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName')
->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
@@ -1334,7 +1363,8 @@ class taskModel extends model
if($action == 'finish') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel';
if($action == 'close') return $task->status == 'done' or $task->status == 'cancel';
if($action == 'activate') return $task->status == 'done' or $task->status == 'closed' or $task->status == 'cancel' ;
if($action == 'cancel') return $task->status != 'done ' and $task->status != 'closed' and $task->status != 'cancel';
if($action == 'cancel') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel';
if($action == 'pause') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel' and $task->status != 'wait' and $task->status != 'pause';
return true;
}
+37
View File
@@ -0,0 +1,37 @@
<?php
/**
* The pause file of task module of ZenTaoPMS.
*
* @copyright Copyright 2009-2013 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package task
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<div id='titlebar'>
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['task']);?> <strong><?php echo $task->id;?></strong></span>
<strong><?php echo html::a($this->createLink('task', 'view', 'task=' . $task->id), $task->name, '_blank');?></strong>
<small class='text-danger'> <?php echo $lang->task->pause;?> <?php echo html::icon($lang->icons['pause']);?></small>
</div>
</div>
<form class='form-condensed' method='post' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th class='w-60px'><?php echo $lang->comment;?></th>
<td><?php echo html::textarea('comment', '', "rows='6' class='form-control'");?></td>
</tr>
<tr>
<td colspan='2' class='text-center'><?php echo html::submitButton();?></td>
</tr>
</table>
</form>
<div class='main'>
<?php include '../../common/view/action.html.php';?>
</div>
<?php include '../../common/view/footer.html.php';?>
+1
View File
@@ -34,6 +34,7 @@
common::printIcon('task', 'assignTo', "projectID=$task->project&taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('task', 'start', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('task', 'pause', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('task', 'finish', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody text-success', true);
common::printIcon('task', 'close', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('task', 'activate', "taskID=$task->id", $task, 'button', '', '', 'iframe text-success', true);