diff --git a/module/bug/control.php b/module/bug/control.php index 554f12496e..94d274d01d 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -1398,4 +1398,19 @@ class bug extends control $this->display(); } + + /** + * Ajax get bug by ID. + * + * @param int $bugID + * @access public + * @return void + */ + public function ajaxGetByID($bugID) + { + $bug = $this->dao->select('*')->from(TABLE_BUG)->where('id')->eq($bugID)->fetch(); + $realname = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($bug->assignedTo)->fetch('realname'); + $bug->assignedTo = $realname ? $realname : ($bug->assignedTo == 'closed' ? 'Closed' : $bug->assignedTo); + die(json_encode($bug)); + } } diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 60bf9f4314..70412217c6 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -197,7 +197,7 @@ $lang->project = new stdclass(); $lang->project->menu = new stdclass(); $lang->project->menu->list = '%s'; -$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug'); +$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban'); $lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory'); $lang->project->menu->bug = 'Bug|project|bug|projectID=%s'; $lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s'; diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 8344aa28eb..7fad9f5af4 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -294,6 +294,8 @@ $lang->resource->project->linkStory = 'linkStory'; $lang->resource->project->unlinkStory = 'unlinkStory'; $lang->resource->project->batchUnlinkStory = 'batchUnlinkStory'; $lang->resource->project->updateOrder = 'updateOrder'; +$lang->resource->project->kanban = 'kanban'; +$lang->resource->project->printKanban = 'printKanban'; $lang->project->methodOrder[0] = 'index'; $lang->project->methodOrder[5] = 'view'; @@ -329,6 +331,8 @@ $lang->project->methodOrder[155] = 'linkStory'; $lang->project->methodOrder[160] = 'unlinkStory'; $lang->project->methodOrder[165] = 'batchUnlinkStory'; $lang->project->methodOrder[170] = 'updateOrder'; +$lang->project->methodOrder[175] = 'kanban'; +$lang->project->methodOrder[180] = 'printKanban'; /* Task. */ $lang->resource->task = new stdclass(); diff --git a/module/story/model.php b/module/story/model.php index 5515ff09a1..327d544a96 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -81,6 +81,21 @@ class storyModel extends model ->fetchAll('id'); } + /** + * Get story specs. + * + * @param array $storyIdList + * @access public + * @return array + */ + public function getStorySpecs($storyIdList) + { + return $this->dao->select('story,spec,verify')->from(TABLE_STORYSPEC) + ->where('story')->in($storyIdList) + ->orderBy('version') + ->fetchAll('story'); + } + /** * Get affected things. * diff --git a/module/task/control.php b/module/task/control.php index ab2b8b258b..1d99778dd5 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -1165,4 +1165,25 @@ class task extends control $this->display(); } + + /** + * Ajax get task by ID. + * + * @param int $taskID + * @access public + * @return void + */ + public function ajaxGetByID($taskID) + { + $task = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($taskID)->fetch(); + $realname = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($task->assignedTo)->fetch('realname'); + $task->assignedTo = $realname ? $realname : ($task->assignedTo == 'closed' ? 'Closed' : $task->assignedTo); + if($task->story) + { + $this->app->loadLang('story'); + $stage = $this->dao->select('*')->from(TABLE_STORY)->where('id')->eq($task->story)->andWhere('version')->eq($task->storyVersion)->fetch('stage'); + $task->storyStage = zget($this->lang->story->stageList, $stage); + } + die(json_encode($task)); + } } diff --git a/module/task/js/create.js b/module/task/js/create.js index 11c1445832..e065ff0e55 100644 --- a/module/task/js/create.js +++ b/module/task/js/create.js @@ -146,4 +146,27 @@ $(document).ready(function() }; ajustFilebox(); $(window).resize(ajustFilebox); + + /* First unbind ajaxForm for form.*/ + $("form[data-type='ajax']").unbind('submit'); + setForm(); + + /* Bind ajaxForm for form again. */ + $.ajaxForm("form[data-type='ajax']", function(response) + { + if(response.message) alert(response.message); + if(response.locate) + { + if(response.locate == 'reload' && response.target == 'parent') + { + parent.$.cookie('selfClose', 1); + parent.$.closeModal(null, 'this'); + } + else + { + location.href = response.locate; + } + } + return false; + }); }); diff --git a/module/task/view/activate.html.php b/module/task/view/activate.html.php index 4805cdaa00..5ae988dbf0 100644 --- a/module/task/view/activate.html.php +++ b/module/task/view/activate.html.php @@ -42,7 +42,7 @@ task->activate); echo html::linkButton($lang->goback, $this->session->taskList); ?> diff --git a/module/task/view/cancel.html.php b/module/task/view/cancel.html.php index e5013cdcc6..50284a7679 100644 --- a/module/task/view/cancel.html.php +++ b/module/task/view/cancel.html.php @@ -26,7 +26,7 @@ comment;?> - + task->cancel);?>
diff --git a/module/task/view/close.html.php b/module/task/view/close.html.php index 569b137f47..2c483bc613 100644 --- a/module/task/view/close.html.php +++ b/module/task/view/close.html.php @@ -27,7 +27,7 @@ - + task->close);?> diff --git a/module/task/view/finish.html.php b/module/task/view/finish.html.php index c6bda2d62f..cddf290fe0 100644 --- a/module/task/view/finish.html.php +++ b/module/task/view/finish.html.php @@ -43,7 +43,7 @@ - + task->finish);?> diff --git a/module/task/view/start.html.php b/module/task/view/start.html.php index 207236fdc4..8476a149ee 100644 --- a/module/task/view/start.html.php +++ b/module/task/view/start.html.php @@ -40,7 +40,7 @@ - + task->start); ?> diff --git a/module/tree/view/browsetask.html.php b/module/tree/view/browsetask.html.php index 13c8af1760..d7e78fce1b 100644 --- a/module/tree/view/browsetask.html.php +++ b/module/tree/view/browsetask.html.php @@ -73,8 +73,8 @@ } for($i = 0; $i < TREE::NEW_CHILD_COUNT ; $i ++) { - echo "
" . html::input("modules[]", '', "class='form-control' placeholder='{$lang->tree->name}' " . $disabled); - echo "" . html::input("shorts[]", '', "class='form-control' placeholder='{$lang->tree->short}' style='width:70px' " . $disabled); + echo "
" . html::input("modules[]", '', "class='form-control' placeholder='{$lang->tree->name}'"); + echo "" . html::input("shorts[]", '', "class='form-control' placeholder='{$lang->tree->short}' style='width:70px'"); echo html::hidden('branch[]', empty($module) ? 0 : $module->branch) . '
'; } ?> diff --git a/module/upgrade/model.php b/module/upgrade/model.php index b2acc66779..6b8107eaed 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -855,6 +855,12 @@ class upgradeModel extends model $this->dao->replace($privTable)->set('module')->eq('datatable')->set('method')->eq('custom')->set('`group`')->eq($group)->exec(); } + $groups = $this->dao->select('`group`')->from($privTable)->where('`module`')->eq('project')->andWhere('`method`')->eq('task')->fetchPairs('group', 'group'); + foreach($groups as $group) + { + $this->dao->replace($privTable)->set('module')->eq('project')->set('method')->eq('kanban')->set('`group`')->eq($group)->exec(); + } + return true; }