diff --git a/module/repo/control.php b/module/repo/control.php index b759f05aeb..ea6137605b 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -1113,15 +1113,16 @@ class repo extends control * @access public * @return void */ - public function ajaxGetGitlabProjects($host) + public function ajaxGetGitlabProjects($host, $projectIdList) { $projects = $this->loadModel('gitlab')->apiGetProjects($host); - + if(!$projects) $this->send(array('message' => array())); - + $projectIdList = explode(',', $projectIdList); $options = ""; foreach($projects as $project) { + if($project and !in_array($project->id, $projectIdList)) continue; $options .= ""; } die($options); diff --git a/module/task/control.php b/module/task/control.php index 5fa0a7bb61..773f58e46c 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -215,9 +215,12 @@ class task extends control foreach(explode(',', $this->config->task->customCreateFields) as $field) $customFields[$field] = $this->lang->task->$field; if($execution->type == 'ops') unset($customFields['story']); - /* */ - $this->loadModel('gitlab')->bindGitlabProject($executionID); - + $allGitlabs = $this->loadModel('gitlab')->getPairs(); + $gitlabProjects = $this->loadModel('gitlab')->getProjectsByExecution($executionID); + foreach($allGitlabs as $id => $name) if($id and !isset($gitlabProjects[$id])) unset($allGitlabs[$id]); + $this->view->gitlabList = $allGitlabs; + $this->view->gitlabProjects = $gitlabProjects; + $this->view->customFields = $customFields; $this->view->showFields = $this->config->task->custom->createFields; $this->view->showAllModule = $showAllModule; @@ -233,6 +236,7 @@ class task extends control $this->view->members = $members; $this->view->blockID = $blockID; $this->view->moduleOptionMenu = $moduleOptionMenu; + $this->display(); } diff --git a/module/task/js/create.js b/module/task/js/create.js index 71bb2b8f52..da042ebfd4 100644 --- a/module/task/js/create.js +++ b/module/task/js/create.js @@ -467,6 +467,23 @@ $(document).ready(function() $('#moduleIdBox #module').val(moduleID).attr('onchange', "setStories(this.value, " + executionID + ")").chosen(); }); }); + + $('#gitlab').change(function() + { + host = $('#gitlab').val(); + if(host == '') return false; + projects = ''; + $.each(gitlabProjects[host], function(id, obj){projects = projects + ',' + obj.gitlabProject}); + url = createLink('repo', 'ajaxgetgitlabprojects', "host=" + host + "&projects=" + projects); + + $.get(url, function(response) + { + $('#gitlabProject').html('').append(response); + $('#gitlabProject').chosen().trigger("chosen:updated");; + }); + + }); + }); $(document).on('click', '#testStory_chosen,#story_chosen', function() diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index fb047b2f74..a0119d0fe1 100644 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -67,7 +67,7 @@ $lang->task->storyVersion = "{$lang->SRCommon}版本"; $lang->task->color = '标题颜色'; $lang->task->name = '任务名称'; $lang->task->type = '任务类型'; -$lang->task->sync = 'gitlab同步'; +$lang->task->sync2Gitlab = '同步到Gitlab'; $lang->task->pri = '优先级'; $lang->task->mailto = '抄送给'; $lang->task->estimate = '最初预计'; diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php index 188714ab0c..5f9ffd2e92 100644 --- a/module/task/view/create.html.php +++ b/module/task/view/create.html.php @@ -15,6 +15,7 @@ id));?> +