* finish task #4967.
This commit is contained in:
+4
-1
@@ -1 +1,4 @@
|
||||
update zt_task set `parent` = -1 where `id` in (select `parent` from zt_task where `parent` > 0 group by `parent`)
|
||||
update zt_task set `parent` = -1 where `id` in (select `parent` from zt_task where `parent` > 0 group by `parent`);
|
||||
ALTER TABLE `zt_userview` CHANGE `products` `products` mediumtext COLLATE 'utf8_general_ci' NOT NULL AFTER `account`,
|
||||
CHANGE `projects` `projects` mediumtext COLLATE 'utf8_general_ci' NOT NULL AFTER `products`;
|
||||
ALTER TABLE `zt_task` ADD `finishedList` text NOT NULL AFTER `finishedDate`;
|
||||
|
||||
@@ -813,6 +813,9 @@ EOD;
|
||||
{
|
||||
if(isonlybody() and strpos($extraClass, 'showinonlybody') === false) return false;
|
||||
|
||||
/* Remove iframe for operation button in modal. Prevent pop up in modal. */
|
||||
if(isonlybody() and strpos($extraClass, 'showinonlybody') !== false) $extraClass = str_replace('iframe', '', $extraClass);
|
||||
|
||||
global $app, $lang;
|
||||
|
||||
/* Judge the $method of $module clickable or not, default is clickable. */
|
||||
|
||||
@@ -54,6 +54,7 @@ $config->project->search['fields']['canceledBy'] = $lang->task->canceledBy;
|
||||
$config->project->search['fields']['lastEditedBy'] = $lang->task->lastEditedBy;
|
||||
|
||||
$config->project->search['fields']['mailto'] = $lang->task->mailto;
|
||||
$config->project->search['fields']['finishedList'] = $lang->task->finishedList;
|
||||
|
||||
$config->project->search['fields']['openedDate'] = $lang->task->openedDate;
|
||||
$config->project->search['fields']['deadline'] = $lang->task->deadline;
|
||||
@@ -87,6 +88,7 @@ $config->project->search['params']['cancelBy'] = array('operator' => '=',
|
||||
$config->project->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
|
||||
$config->project->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['finishedList'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
|
||||
|
||||
$config->project->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
|
||||
@@ -84,6 +84,7 @@ $lang->task->finishedBy = 'Finished';
|
||||
$lang->task->finishedByAB = 'Finished';
|
||||
$lang->task->finishedDate = 'Finished on';
|
||||
$lang->task->finishedDateAB = 'Finished on';
|
||||
$lang->task->finishedList = 'Finished list';
|
||||
$lang->task->canceledBy = 'Cancelled by';
|
||||
$lang->task->canceledDate = 'Cancelled on';
|
||||
$lang->task->closedBy = 'Closed by';
|
||||
|
||||
@@ -84,6 +84,7 @@ $lang->task->finishedBy = '由谁完成';
|
||||
$lang->task->finishedByAB = '完成者';
|
||||
$lang->task->finishedDate = '完成时间';
|
||||
$lang->task->finishedDateAB = '完成时间';
|
||||
$lang->task->finishedList = '完成者列表';
|
||||
$lang->task->canceledBy = '由谁取消';
|
||||
$lang->task->canceledDate = '取消时间';
|
||||
$lang->task->closedBy = '由谁关闭';
|
||||
|
||||
+28
-13
@@ -420,8 +420,6 @@ class taskModel extends model
|
||||
|
||||
if($status == 'doing')
|
||||
{
|
||||
$task->assignedTo = '';
|
||||
$task->assignedDate = '';
|
||||
$task->finishedBy = '';
|
||||
$task->finishedDate = '';
|
||||
$task->closedBy = '';
|
||||
@@ -457,16 +455,16 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return object|bool
|
||||
*/
|
||||
public function computeHours4Multiple($oldTask, $task = null)
|
||||
public function computeHours4Multiple($oldTask, $task = null, $team = array())
|
||||
{
|
||||
if(!$oldTask) return false;
|
||||
|
||||
$team = $this->dao->select('*')->from(TABLE_TEAM)->where('root')->eq($oldTask->id)->andWhere('type')->eq('task')->orderBy('order')->fetchAll('account');
|
||||
if(empty($team)) $team = $this->dao->select('*')->from(TABLE_TEAM)->where('root')->eq($oldTask->id)->andWhere('type')->eq('task')->orderBy('order')->fetchAll('account');
|
||||
if(!empty($team))
|
||||
{
|
||||
$now = helper::now();
|
||||
$teams = array_keys($team);
|
||||
$currentTask = isset($task) ? $task : new stdclass();
|
||||
$currentTask = !empty($task) ? $task : new stdclass();
|
||||
if(!isset($currentTask->status)) $currentTask->status = $oldTask->status;
|
||||
|
||||
if(!empty($this->post->assignedTo))
|
||||
@@ -508,7 +506,7 @@ class taskModel extends model
|
||||
$currentTask->left += (float)$member->left;
|
||||
}
|
||||
|
||||
if(isset($task))
|
||||
if(!empty($task))
|
||||
{
|
||||
if($this->post->status) return $currentTask;
|
||||
|
||||
@@ -537,14 +535,22 @@ class taskModel extends model
|
||||
elseif($oldTask->assignedTo == $teams[count($teams) - 1])
|
||||
{
|
||||
$currentTask->status = 'done';
|
||||
if($oldTask->left > 0)
|
||||
{
|
||||
$currentTask->finishedBy = $this->app->user->account;
|
||||
$currentTask->finishedDate = $now;
|
||||
}
|
||||
$currentTask->finishedBy = $this->app->user->account;
|
||||
$currentTask->finishedDate = $now;
|
||||
}
|
||||
}
|
||||
|
||||
if(($oldTask->assignedTo != $currentTask->assignedTo or $currentTask->status == 'done')
|
||||
and isset($team[$this->app->user->account]) and $team[$this->app->user->account]->left == 0
|
||||
and strpos($oldTask->finishedLis, ",{$this->app->user->account},") === false)
|
||||
{
|
||||
$currentTask->finishedList = ',' . trim(trim($oldTask->finishedList, ',') . ",{$this->app->user->account}", ',') . ',';
|
||||
}
|
||||
if(($oldTask->status == 'done' or $oldTask->status == 'closed') and $currentTask->status == 'doing' and $this->post->assignedTo)
|
||||
{
|
||||
$currentTask->finishedList = ',' . trim(substr($oldTask->finishedList, 0, strpos($oldTask->finishedList, ",{$this->post->assignedTo},")), ',') . ',';
|
||||
}
|
||||
|
||||
return $currentTask;
|
||||
}
|
||||
$this->dao->update(TABLE_TASK)->data($currentTask)->autoCheck()->where('id')->eq($oldTask->id)->exec();
|
||||
@@ -1161,6 +1167,7 @@ class taskModel extends model
|
||||
->setDefault('status', 'done')
|
||||
->setDefault('finishedBy, lastEditedBy', $this->app->user->account)
|
||||
->setDefault('finishedDate, lastEditedDate', $now)
|
||||
->setDefault('finishedDate, lastEditedDate', $now)
|
||||
->removeIF(!empty($oldTask->team), 'finishedBy,finishedDate,status,left')
|
||||
->remove('comment,files,labels')
|
||||
->get();
|
||||
@@ -1488,7 +1495,11 @@ class taskModel extends model
|
||||
->beginIF($type == 'undone')->andWhere("(t1.status = 'wait' or t1.status ='doing')")->fi()
|
||||
->beginIF($type == 'needconfirm')->andWhere('t2.version > t1.storyVersion')->andWhere("t2.status = 'active'")->fi()
|
||||
->beginIF($type == 'assignedtome')->andWhere('t1.assignedTo')->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'finishedbyme')->andWhere('t1.finishedby')->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'finishedbyme')
|
||||
->andWhere('t1.finishedby', 1)->eq($this->app->user->account)
|
||||
->orWhere('t1.finishedList')->like("%,{$this->app->user->account},%")
|
||||
->markRight(1)
|
||||
->fi()
|
||||
->beginIF($type == 'delayed')->andWhere('t1.deadline')->gt('1970-1-1')->andWhere('t1.deadline')->lt(date(DT_DATE1))->andWhere('t1.status')->in('wait,doing')->fi()
|
||||
->beginIF(is_array($type) or strpos(',all,undone,needconfirm,assignedtome,delayed,finishedbyme,myinvolved,', ",$type,") === false)->andWhere('t1.status')->in($type)->fi()
|
||||
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
|
||||
@@ -1521,7 +1532,11 @@ class taskModel extends model
|
||||
->beginIF($type == 'undone')->andWhere("(t1.status = 'wait' or t1.status ='doing')")->fi()
|
||||
->beginIF($type == 'needconfirm')->andWhere('t2.version > t1.storyVersion')->andWhere("t2.status = 'active'")->fi()
|
||||
->beginIF($type == 'assignedtome')->andWhere('t1.assignedTo')->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'finishedbyme')->andWhere('t1.finishedby')->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'finishedbyme')
|
||||
->andWhere('t1.finishedby', 1)->eq($this->app->user->account)
|
||||
->orWhere('t1.finishedList')->like("%,{$this->app->user->account},%")
|
||||
->markRight(1)
|
||||
->fi()
|
||||
->beginIF($type == 'delayed')->andWhere('t1.deadline')->gt('1970-1-1')->andWhere('t1.deadline')->lt(date(DT_DATE1))->andWhere('t1.status')->in('wait,doing')->fi()
|
||||
->beginIF(is_array($type) or strpos(',all,undone,needconfirm,assignedtome,delayed,finishedbyme,myinvolved,', ",$type,") === false)->andWhere('t1.status')->in($type)->fi()
|
||||
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
|
||||
|
||||
@@ -1322,7 +1322,7 @@ class userModel extends model
|
||||
$userView = $this->dao->select('*')->from(TABLE_USERVIEW)->where('account')->eq($account)->fetch();
|
||||
|
||||
if(empty($userView)) $userView = $this->computeUserView($account);
|
||||
if(!empty($acls['products']))
|
||||
if(!empty($acls['products']) and !$this->session->user->admin)
|
||||
{
|
||||
$grantProducts = '';
|
||||
foreach($acls['products'] as $productID)
|
||||
@@ -1331,7 +1331,7 @@ class userModel extends model
|
||||
}
|
||||
$userView->products = $grantProducts;
|
||||
}
|
||||
if(!empty($acls['projects']))
|
||||
if(!empty($acls['projects']) and !$this->session->user->admin)
|
||||
{
|
||||
$grantProjects = '';
|
||||
foreach($acls['projects'] as $projectID)
|
||||
|
||||
Reference in New Issue
Block a user