diff --git a/module/compile/model.php b/module/compile/model.php index a6633e868a..6336d7e8a6 100644 --- a/module/compile/model.php +++ b/module/compile/model.php @@ -23,6 +23,18 @@ class compileModel extends model return $this->dao->select('*')->from(TABLE_COMPILE)->where('id')->eq($buildID)->fetch(); } + /** + * Get By Queue. + * + * @param int $queue + * @access public + * @return void + */ + public function getByQueue($queue) + { + return $this->dao->select('*')->from(TABLE_COMPILE)->where('queue')->eq($queue)->fetch(); + } + /** * Get build list. * @@ -45,7 +57,7 @@ class compileModel extends model ->page($pager) ->fetchAll('id'); } - + /** * Get list by jobID. * diff --git a/module/gitlab/model.php b/module/gitlab/model.php index aa6e3385aa..3162f0d319 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -303,10 +303,10 @@ class gitlabModel extends model $refList = array(); $branches = $this->apiGetBranches($gitlabID, $projectID); - foreach($branches as $branch) $refList[$branch->name] = "Branch::" . $branch->name; + if(is_array($branches)) foreach($branches as $branch) $refList[$branch->name] = "Branch::" . $branch->name; $tags = $this->apiGetTags($gitlabID, $projectID); - foreach($tags as $tag) $refList[$tag->name] = "Tag::" . $tag->name; + if(is_array($tags)) foreach($tags as $tag) $refList[$tag->name] = "Tag::" . $tag->name; return $refList; diff --git a/module/job/control.php b/module/job/control.php index b17d81e552..a79c74f3e9 100644 --- a/module/job/control.php +++ b/module/job/control.php @@ -373,4 +373,45 @@ class job extends control $refList = $this->loadModel('gitlab')->getReferenceOptions($repo->gitlab, $repo->project); $this->send(array('result' => 'success', 'refList' => $refList)); } + + /** + * Ajax get repo list. + * + * @param int $engine + * @access public + * @return void + */ + public function ajaxGetRepoList($engine) + { + $repoList = $this->loadModel('repo')->getList($this->projectID); + $repoPairs = array(0 => ''); + foreach($repoList as $repo) + { + if(empty($repo->synced)) continue; + if($engine == 'gitlab') + { + if(strtolower($repo->SCM) == 'gitlab') $repoPairs[$repo->id] = $repo->name; + } + else + { + $repoPairs[$repo->id] = $repo->name; + } + } + echo html::select('repo', $repoPairs, '', "class='form-control chosen'"); + die(); + } + + /** + * Ajax get an repo type. + * + * @param int $repoID + * @access public + * @return void + */ + public function ajaxGetRepoType($repoID) + { + $repo = $this->loadModel('repo')->getRepoByID($repoID); + $this->send(array('result' => 'success', 'type' => strtolower($repo->SCM))); + } + } diff --git a/module/job/js/common.js b/module/job/js/common.js index 475b78e062..872d9d8568 100644 --- a/module/job/js/common.js +++ b/module/job/js/common.js @@ -64,3 +64,17 @@ function setValueInput(obj) $(obj).closest('.input-group').find('select').removeAttr('disabled'); } } + +function loadRepoList(engine = '') +{ + var link = createLink('job', 'ajaxGetRepoList', 'engine=' + engine); + $.get(link, function(data) + { + if(data) + { + $('#repo').replaceWith(data) + $('#repo_chosen').remove(); + $('#repo').chosen(); + } + }); +} diff --git a/module/job/js/create.js b/module/job/js/create.js index 18b121ba44..919e7729bc 100644 --- a/module/job/js/create.js +++ b/module/job/js/create.js @@ -1,13 +1,11 @@ $(document).ready(function() { - $('#gitlabRepo').change(function() - { - $('#repo').val($(this).val()).change(); - }) - - $('#repo').change(function() + $(document).on('change', '#repo', function() { + var _this = this; var repoID = $(this).val(); + if(repoID <= 0) return; + var link = createLink('repo', 'ajaxLoadProducts', 'repoID=' + repoID); $.get(link, function(data) { @@ -19,33 +17,54 @@ $(document).ready(function() } }); - var type = 'Git'; - if(typeof(repoTypes[repoID]) != 'undefined') type = repoTypes[repoID]; - - $('.svn-fields').addClass('hidden'); - if(type == 'Subversion' && $('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden'); - - $('#repoType').val(type); - $('#triggerType option[value=tag]').html(type == 'Subversion' ? dirChange : buildTag).trigger('chosen:updated'); - if(type == 'Subversion') + /* Add new way get repo type. */ + var link = createLink('job', 'ajaxGetRepoType', 'repoID=' + repoID); + $.getJSON(link, function(data) { - $('#svnDirBox .input-group').empty(); - $('#svnDirBox .input-group').append("
"); - $.getJSON(createLink('repo', 'ajaxGetSVNDirs', 'repoID=' + repoID), function(tags) + if(data.result == 'success') { - html = "'; - $('#svnDirBox .loading').remove(); - $('#svnDirBox .input-group').append(html); - $('#svnDirBox #svnDir').chosen(); - }) - } - }) + else + { + if($('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden'); + + $('#svnDirBox .input-group').empty(); + $('#svnDirBox .input-group').append(""); + $.getJSON(createLink('repo', 'ajaxGetSVNDirs', 'repoID=' + repoID), function(tags) + { + html = "'; + $('#svnDirBox .loading').remove(); + $('#svnDirBox .input-group').append(html); + $('#svnDirBox #svnDir').chosen(); + }) + } + $('#triggerggerType option[value=tag]').html(data.type == 'gitlab' ? buildTag : dirChange).trigger('chosen:updated'); + } + }); + }); $(document).on('change', '[name^=svnDir]', function() { @@ -124,15 +143,19 @@ $(document).ready(function() var scheduleOption = ""; $('#engine').change(function() { - $('#jenkinsServerTR').toggle($('#engine').val() == 'jenkins'); - $('#gitlabServerTR').toggle($('#engine').val() == 'gitlab'); + var engine = $(this).val(); + $('.reference').hide(); + loadRepoList(engine); + $('#jenkinsServerTR').toggle(engine == 'jenkins'); + $('#gitlabServerTR').toggle(engine == 'gitlab'); - if($(this).val() == 'gitlab') + if(engine == 'gitlab') { $('tr.gitlabRepo').show(); $('tr.commonRepo').hide(); } - else if($('#triggerType').find('[value=schedule]').size() == 0 ) + //else if($('#triggerType').find('[value=schedule]').size() == 0) + else { $('tr.gitlabRepo').hide(); $('tr.commonRepo').show(); @@ -140,26 +163,6 @@ $(document).ready(function() }); $('#engine').change(); - $('#gitlabRepo').change(function() - { - $('#reference option').remove(); - - var repoID = $(this).val(); - if(repoID > 0) - { - $.getJSON(createLink('job', 'ajaxGetRefList', "repoID=" + repoID), function(response) - { - if(response.result == 'success') - { - $.each(response.refList, function(reference, name) - { - $('#reference').append(""); - }); - } - $('#reference').trigger('chosen:updated'); - }); - } - }); $('#triggerType').change(); }); diff --git a/module/job/model.php b/module/job/model.php index ffb55b7803..0156f9cd62 100644 --- a/module/job/model.php +++ b/module/job/model.php @@ -152,10 +152,9 @@ class jobModel extends model if(strtolower($job->engine) == 'gitlab') { - $repo = $this->loadModel('repo')->getRepoByID($job->gitlabRepo); + $repo = $this->loadModel('repo')->getRepoByID($job->repo); $project = zget($repo, 'project'); - $job->repo = $job->gitlabRepo; $job->server = (int)zget($repo, 'gitlab', 0); $job->pipeline = json_encode(array('project' => $project, 'reference' => $this->post->reference)); } diff --git a/module/job/view/create.html.php b/module/job/view/create.html.php index 1822bcbe2d..ac885915c0 100644 --- a/module/job/view/create.html.php +++ b/module/job/view/create.html.php @@ -42,14 +42,10 @@ job->engineTips->success;?> -