diff --git a/module/execution/view/taskkanban.html.php b/module/execution/view/taskkanban.html.php
index cee060ec2b..e650e79467 100644
--- a/module/execution/view/taskkanban.html.php
+++ b/module/execution/view/taskkanban.html.php
@@ -10,6 +10,11 @@
?>
+
+
+
@@ -220,4 +225,5 @@ js::set('priv',
displayCards);?>
execution->needLinkProducts);?>
hourUnit);?>
+
diff --git a/module/kanban/lang/de.php b/module/kanban/lang/de.php
index fbad5f4970..4436367d06 100644
--- a/module/kanban/lang/de.php
+++ b/module/kanban/lang/de.php
@@ -211,6 +211,9 @@ $lang->kanban->error->childLimitNote = 'The sum of products in the child colu
$lang->kanban->error->importObjNotEmpty = 'Please select at least one import object.';
$lang->kanban->error->childLimitEmpty = 'Please set the WIP quantity of the sub column before operation.';
+$lang->kanban->orderList['pri_asc'] = 'Story Priority Ascending';
+$lang->kanban->orderList['pri_desc'] = 'Story Priority Descending';
+
$lang->kanban->importList = array();
$lang->kanban->importList['off'] = 'Import is not enabled';
$lang->kanban->importList['on'] = 'Enable the import function, you can only import content that you have permission to view.';
diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php
index a0428baed5..68d678ebe4 100644
--- a/module/kanban/lang/en.php
+++ b/module/kanban/lang/en.php
@@ -211,6 +211,9 @@ $lang->kanban->error->childLimitNote = 'The sum of products in the child colu
$lang->kanban->error->importObjNotEmpty = 'Please select at least one import object.';
$lang->kanban->error->childLimitEmpty = 'Please set the WIP quantity of the sub column before operation.';
+$lang->kanban->orderList['pri_asc'] = 'Story Priority Ascending';
+$lang->kanban->orderList['pri_desc'] = 'Story Priority Descending';
+
$lang->kanban->importList = array();
$lang->kanban->importList['off'] = 'Import is not enabled';
$lang->kanban->importList['on'] = 'Enable import function (You can import content that you have permission to view as cards.)';
diff --git a/module/kanban/lang/fr.php b/module/kanban/lang/fr.php
index fbad5f4970..bea188686c 100644
--- a/module/kanban/lang/fr.php
+++ b/module/kanban/lang/fr.php
@@ -211,6 +211,9 @@ $lang->kanban->error->childLimitNote = 'The sum of products in the child colu
$lang->kanban->error->importObjNotEmpty = 'Please select at least one import object.';
$lang->kanban->error->childLimitEmpty = 'Please set the WIP quantity of the sub column before operation.';
+$lang->kanban->orderList['pri_asc'] = 'Story Priorité Ascendante';
+$lang->kanban->orderList['pri_desc'] = 'Story Priorité Descendante';
+
$lang->kanban->importList = array();
$lang->kanban->importList['off'] = 'Import is not enabled';
$lang->kanban->importList['on'] = 'Enable the import function, you can only import content that you have permission to view.';
diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php
index 1b8dec9df7..df6ae13473 100644
--- a/module/kanban/lang/zh-cn.php
+++ b/module/kanban/lang/zh-cn.php
@@ -211,6 +211,9 @@ $lang->kanban->error->childLimitNote = '子列在制品数量之和不能大
$lang->kanban->error->importObjNotEmpty = '请至少选择一个导入对象';
$lang->kanban->error->childLimitEmpty = '请先设置子列的在制品数量后再操作';
+$lang->kanban->orderList['pri_asc'] = '需求优先级正序排序';
+$lang->kanban->orderList['pri_desc'] = '需求优先级倒序排序';
+
$lang->kanban->importList = array();
$lang->kanban->importList['off'] = '不启用导入功能';
$lang->kanban->importList['on'] = '启用导入功能(可以导入自己有权查看的内容作为卡片)';
diff --git a/module/kanban/model.php b/module/kanban/model.php
index 36f43289d4..a3f06db9de 100644
--- a/module/kanban/model.php
+++ b/module/kanban/model.php
@@ -827,7 +827,7 @@ class kanbanModel extends model
*/
public function getRDKanban($executionID, $browseType = 'all', $orderBy = 'id_desc', $regionID = 0, $groupBy = 'default', $searchValue = '')
{
- if($groupBy != 'default' and $groupBy != '') return $this->getKanban4Group($executionID, $browseType, $groupBy, $searchValue);
+ if($groupBy != 'default' and $groupBy != '') return $this->getKanban4Group($executionID, $browseType, $groupBy, $searchValue, $orderBy);
$kanbanData = array();
$actions = array('sortGroup');
@@ -1347,9 +1347,9 @@ class kanbanModel extends model
* @access public
* @return array
*/
- public function getExecutionKanban($executionID, $browseType = 'all', $groupBy = 'default', $searchValue = '')
+ public function getExecutionKanban($executionID, $browseType = 'all', $groupBy = 'default', $searchValue = '', $orderBy = 'pri_asc')
{
- if($groupBy != 'default') return $this->getKanban4Group($executionID, $browseType, $groupBy, $searchValue);
+ if($groupBy != 'default') return $this->getKanban4Group($executionID, $browseType, $groupBy, $searchValue, $orderBy);
$lanes = $this->dao->select('*')->from(TABLE_KANBANLANE)
->where('execution')->eq($executionID)
@@ -1470,11 +1470,12 @@ class kanbanModel extends model
* @param string $browseType
* @param string $groupBy
* @param string $searchValue
+ * @param string $orderBy
*
* @access public
* @return array
*/
- public function getKanban4Group($executionID, $browseType, $groupBy, $searchValue = '')
+ public function getKanban4Group($executionID, $browseType, $groupBy, $searchValue = '', $orderBy = 'pri_asc')
{
/* Get card data. */
$cardList = array();
@@ -1500,7 +1501,8 @@ class kanbanModel extends model
if($browseType == 'bug') $bugCardMenu = $this->getKanbanCardMenu($executionID, $cardList, 'bug');
if($browseType == 'task') $taskCardMenu = $this->getKanbanCardMenu($executionID, $cardList, 'task');
- $lanes = $this->getLanes4Group($executionID, $browseType, $groupBy, $cardList);
+ if($groupBy == 'story' and $browseType == 'task' and !isset($this->lang->kanban->orderList[$orderBy])) $orderBy = 'pri_asc';
+ $lanes = $this->getLanes4Group($executionID, $browseType, $groupBy, $cardList, $orderBy);
if(empty($lanes)) return array();
$execution = $this->loadModel('execution')->getByID($executionID);
@@ -1547,6 +1549,33 @@ class kanbanModel extends model
$laneData['type'] = $browseType;
$laneData['defaultCardType'] = $browseType;
+ if($browseType == 'task' and $groupBy == 'story')
+ {
+ $columnData[0]['id'] = 0;
+ $columnData[0]['type'] = 'story';
+ $columnData[0]['name'] = zget($this->lang->kanban->orderList, $orderBy, '');
+ $columnData[0]['color'] = '#333';
+ $columnData[0]['limit'] = '-1';
+ $columnData[0]['laneType'] = $browseType;
+ $columnData[0]['asParent'] = false;
+ $columnData[0]['parentType'] = '';
+ $columnData[0]['actions'] = array();
+
+ if(empty($searchValue) or strpos($lane->name, $searchValue) !== false)
+ {
+ $cardData = array();
+ $cardData['id'] = $laneID;
+ $cardData['title'] = $lane->name;
+ $cardData['order'] = 1;
+ $cardData['pri'] = $lane->pri;
+ $cardData['estimate'] = '';
+ $cardData['assignedTo'] = $lane->assignedTo;
+ $cardData['deadline'] = '';
+ $cardData['severity'] = '';
+ $laneData['cards']['story'][] = $cardData;
+ }
+ }
+
/* Construct kanban column data. */
foreach($columns as $column)
{
@@ -1638,9 +1667,11 @@ class kanbanModel extends model
* @param string $browseType
* @param string $groupBy
* @param array $cardList
+ * @param string $orderBy
+ *
* @return array
*/
- public function getLanes4Group($executionID, $browseType, $groupBy, $cardList)
+ public function getLanes4Group($executionID, $browseType, $groupBy, $cardList, $orderBy = 'pri_asc')
{
$lanes = array();
$groupByList = array();
@@ -1673,7 +1704,14 @@ class kanbanModel extends model
$objectPairs += $this->dao->select('id,title')->from(TABLE_STORY)
->where('deleted')->eq(0)
->andWhere('id')->in($groupByList)
+ ->orderBy($orderBy)
->fetchPairs();
+
+ $objects = $this->dao->select('*')->from(TABLE_STORY)
+ ->where('deleted')->eq(0)
+ ->andWhere('id')->in($groupByList)
+ ->orderBy($orderBy)
+ ->fetchAll('id');
}
else
{
@@ -1701,12 +1739,14 @@ class kanbanModel extends model
if(!isset($groupByList[$objectType]) and $objectType and !in_array($objectType, array('feature', 'design'))) continue;
$lane = new stdclass();
- $lane->id = $groupBy . $objectType;
- $lane->type = $browseType;
- $lane->execution = $executionID;
- $lane->name = $objectName;
- $lane->order = $order;
- $lane->color = $this->config->kanban->laneColorList[$laneColor];
+ $lane->id = $groupBy . $objectType;
+ $lane->type = $browseType;
+ $lane->execution = $executionID;
+ $lane->name = $objectName;
+ $lane->order = $order;
+ $lane->color = $this->config->kanban->laneColorList[$laneColor];
+ $lane->pri = (isset($objects) and isset($objects[$objectType]->pri)) ? $objects[$objectType]->pri : '';
+ $lane->assignedTo = (isset($objects) and isset($objects[$objectType]->assignedTo)) ? $objects[$objectType]->assignedTo : '';
$order += 1;
$laneColor += 1;