* finish task #2554.
* code model.php of product module for task #2553.
This commit is contained in:
@@ -359,8 +359,12 @@ class productModel extends model
|
||||
{
|
||||
$this->loadModel('story');
|
||||
|
||||
/* Set modules and browse type. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0';
|
||||
$browseType = (($browseType == 'bymodule') and ($this->session->storyBrowseType) and ($this->session->storyBrowseType != 'bysearch')) ? $this->session->storyBrowseType : $browseType;
|
||||
|
||||
/* Get stories by browseType. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0';
|
||||
$stories = array();
|
||||
if($browseType == 'unclosed')
|
||||
{
|
||||
$unclosedStatus = $this->lang->story->statusList;
|
||||
@@ -380,9 +384,7 @@ class productModel extends model
|
||||
if($browseType == 'willclose') $stories = $this->story->get2BeClosed($productID, $branch, $modules, $sort, $pager);
|
||||
if($browseType == 'closedstory') $stories = $this->story->getByStatus($productID, $branch, $modules, 'closed', $sort, $pager);
|
||||
|
||||
if($stories) return $stories;
|
||||
|
||||
return array();
|
||||
return $stories;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -129,14 +129,19 @@ class project extends control
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('datatable');
|
||||
|
||||
/* Set browseType, productID, moduleID and queryID. */
|
||||
/* Set browse type. */
|
||||
$browseType = strtolower($status);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$moduleID = ($browseType == 'bymodule') ? (int)$param : 0;
|
||||
$productID = ($browseType == 'byproduct') ? (int)$param : 0;
|
||||
$project = $this->commonAction($projectID, $status);
|
||||
$projectID = $project->id;
|
||||
$products = $this->loadModel('product')->getProductsByProject($projectID);
|
||||
|
||||
if($browseType == 'bymodule') setcookie('taskModule', (int)$param, $this->config->cookieLife, $this->config->webRoot);
|
||||
if($browseType != 'bymodule') $this->session->set('taskBrowseType', $browseType);
|
||||
|
||||
/* Set productID, moduleID and queryID. */
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$moduleID = ($browseType == 'bymodule') ? (int)$param : ($browseType == 'bysearch' ? 0 : ($this->cookie->taskModule ? $this->cookie->taskModule : 0));
|
||||
$productID = ($browseType == 'byproduct') ? (int)$param : 0;
|
||||
$project = $this->commonAction($projectID, $status);
|
||||
$projectID = $project->id;
|
||||
$products = $this->loadModel('product')->getProductsByProject($projectID);
|
||||
|
||||
/* Save to session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
@@ -190,6 +195,7 @@ class project extends control
|
||||
$this->view->modules = $this->tree->getTaskOptionMenu($projectID);
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleTree = $this->tree->getTaskTreeMenu($projectID, $productID = 0, $startModuleID = 0, array('treeModel', 'createTaskLink'));
|
||||
$this->view->moduleName = $moduleID ? $this->tree->getById($moduleID)->name : $this->lang->tree->all;
|
||||
$this->view->projectTree = $this->project->tree();
|
||||
$this->view->memberPairs = $memberPairs;
|
||||
$this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products), 'noempty');
|
||||
@@ -220,7 +226,7 @@ class project extends control
|
||||
$this->view->position[] = $this->lang->project->task;
|
||||
|
||||
/* Get tasks and group them. */
|
||||
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $status = 'all', $groupBy ? $groupBy : 'story');
|
||||
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $status = 'all', $modules = 0, $groupBy ? $groupBy : 'story');
|
||||
$groupBy = strtolower(str_replace('`', '', $groupBy));
|
||||
$taskLang = $this->lang->task;
|
||||
$groupByList = array();
|
||||
|
||||
+14
-11
@@ -753,26 +753,31 @@ class projectModel extends model
|
||||
{
|
||||
$this->loadModel('task');
|
||||
|
||||
/* Set modules and $browseType. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0';
|
||||
$browseType = (($browseType == 'bymodule') and ($this->session->taskBrowseType) and ($this->session->taskBrowseType != 'bysearch')) ? $this->session->taskBrowseType : $browseType;
|
||||
|
||||
/* Get tasks. */
|
||||
$tasks = array();
|
||||
if($status == 'byProduct')
|
||||
{
|
||||
$modules = $this->loadModel('tree')->getProjectModule($projectID, $productID);
|
||||
$tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager);
|
||||
}
|
||||
elseif($status == 'byModule')
|
||||
elseif($browseType == 'bymodule')
|
||||
{
|
||||
$tasks = $this->task->getTasksByModule($projectID, $this->loadModel('tree')->getAllChildID($moduleID), $sort, $pager);
|
||||
$tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager);
|
||||
}
|
||||
elseif($browseType != "bysearch")
|
||||
{
|
||||
$qureyStatus = $status == 'byProject' ? 'all' : $status;
|
||||
if($qureyStatus == 'unclosed')
|
||||
$queryStatus = $browseType == 'byproject' ? 'all' : $browseType;
|
||||
if($queryStatus == 'unclosed')
|
||||
{
|
||||
$qureyStatus = $this->lang->task->statusList;
|
||||
unset($qureyStatus['closed']);
|
||||
$qureyStatus = array_keys($qureyStatus);
|
||||
$queryStatus = $this->lang->task->statusList;
|
||||
unset($queryStatus['closed']);
|
||||
$queryStatus = array_keys($queryStatus);
|
||||
}
|
||||
$tasks = $this->task->getProjectTasks($projectID, $qureyStatus, $sort, $pager);
|
||||
$tasks = $this->task->getProjectTasks($projectID, $queryStatus, $modules, $sort, $pager);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -807,9 +812,7 @@ class projectModel extends model
|
||||
$tasks = $this->getSearchTasks($taskQuery, $pager, $sort);
|
||||
}
|
||||
|
||||
if($tasks) return $tasks;
|
||||
|
||||
return array();
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -123,8 +123,8 @@ js::set('browseType', $browseType);
|
||||
<?php js::set('replaceID', 'taskList')?>
|
||||
<script language='javascript'>
|
||||
$('#project<?php echo $projectID;?>').addClass('active')
|
||||
$('#<?php echo $browseType;?>Tab').addClass('active')
|
||||
statusActive = '<?php echo isset($lang->project->statusSelects[$browseType]);?>';
|
||||
$('#<?php echo $this->session->taskBrowseType;?>Tab').addClass('active')
|
||||
statusActive = '<?php echo isset($lang->project->statusSelects[$this->session->taskBrowseType]);?>';
|
||||
if(statusActive) $('#statusTab').addClass('active')
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
<div id='featurebar'>
|
||||
<ul class='nav'>
|
||||
<?php
|
||||
<?php if(isset($moduleID)):?>
|
||||
<li>
|
||||
<span>
|
||||
<?php
|
||||
echo $moduleName;
|
||||
if($moduleID)
|
||||
{
|
||||
$removeLink = $browseType == 'bymodule' ? inlink('task', "projectID=$projectID&browseType=$status¶m=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("taskModule")';
|
||||
echo ' ' . html::a($removeLink, "<i class='icon icon-remove'></i>") . ' ';
|
||||
}
|
||||
echo " <i class='icon-angle-right'></i> ";
|
||||
?>
|
||||
</span>
|
||||
</li>
|
||||
<?php endif;?>
|
||||
|
||||
<?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>' ;
|
||||
echo "<li id='kanbanTab'>"; common::printLink('project', 'kanban', "projectID=$projectID", $lang->project->kanban, '', '', false); echo '</li>';
|
||||
@@ -8,15 +24,15 @@
|
||||
echo "<li id='assignedtomeTab'>"; common::printLink('project', 'task', "project=$projectID&type=assignedtome", $lang->project->assignedToMe); echo '</li>' ;
|
||||
|
||||
echo "<li id='statusTab' class='dropdown'>";
|
||||
$status = isset($status) ? $status : '';
|
||||
$current = zget($lang->project->statusSelects, $status, '');
|
||||
$taskBrowseType = isset($status) ? $this->session->taskBrowseType : '';
|
||||
$current = zget($lang->project->statusSelects, $taskBrowseType, '');
|
||||
if(empty($current)) $current = $lang->project->statusSelects[''];
|
||||
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
|
||||
echo "<ul class='dropdown-menu'>";
|
||||
foreach ($lang->project->statusSelects as $key => $value)
|
||||
{
|
||||
if($key == '') continue;
|
||||
echo '<li' . ($key == $status ? " class='active'" : '') . '>';
|
||||
echo '<li' . ($key == $taskBrowseType ? " class='active'" : '') . '>';
|
||||
echo html::a($this->createLink('project', 'task', "project=$projectID&type=$key"), $value);
|
||||
}
|
||||
echo '</ul></li>';
|
||||
|
||||
+15
-13
@@ -792,12 +792,12 @@ class taskModel extends model
|
||||
|
||||
/**
|
||||
* Get tasks list of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param array|string $moduleIds
|
||||
* @param string $status
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param array|string $moduleIds
|
||||
* @param string $status
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -808,7 +808,7 @@ class taskModel extends model
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account')
|
||||
->where('t1.project')->eq((int)$projectID)
|
||||
->andWhere('t1.module')->in($moduleIds)
|
||||
->beginIF($moduleIds)->andWhere('t1.module')->in($moduleIds)->fi()
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
@@ -822,15 +822,16 @@ class taskModel extends model
|
||||
|
||||
/**
|
||||
* Get tasks of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $status all|needConfirm|wait|doing|done|cancel
|
||||
* @param string $type
|
||||
* @param object $pager
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $status all|needConfirm|wait|doing|done|cancel
|
||||
* @param string $type
|
||||
* @param array|string $modules
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectTasks($projectID, $type = 'all', $orderBy = 'status_asc, id_desc', $pager = null)
|
||||
public function getProjectTasks($projectID, $type = 'all', $modules = 0, $orderBy = 'status_asc, id_desc', $pager = null)
|
||||
{
|
||||
if(is_string($type)) $type = strtolower($type);
|
||||
$tasks = $this->dao->select('t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.product, t2.branch, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName')
|
||||
@@ -845,6 +846,7 @@ class taskModel extends model
|
||||
->beginIF($type == 'finishedbyme')->andWhere('t1.finishedby')->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'delayed')->andWhere('deadline')->gt('1970-1-1')->andWhere('deadline')->lt(date(DT_DATE1))->andWhere('t1.status')->in('wait,doing')->fi()
|
||||
->beginIF(is_array($type) or strpos(',all,undone,needconfirm,assignedtome,delayed,finishedbyme,', ",$type,") === false)->andWhere('t1.status')->in($type)->fi()
|
||||
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
Reference in New Issue
Block a user