diff --git a/module/job/control.php b/module/job/control.php index 19988dafaa..6a3117ae7c 100644 --- a/module/job/control.php +++ b/module/job/control.php @@ -223,6 +223,18 @@ class job extends control $this->view->repo = $this->loadModel('repo')->getByID($job->repo); if($repo->SCM == 'Gitlab') $this->view->refList = $this->loadModel('gitlab')->getReferenceOptions($repo->gitService, $repo->project); + if($repo->SCM == 'Subversion') + { + $dirs = array(); + $tags = $this->loadModel('svn')->getRepoTags($repo, $path); + if($tags) + { + $path = empty($repo->prefix) ? '/' : $this->repo->decodePath(''); + $dirs['/'] = $this->loadrepo->encodePath($path); + foreach($tags as $dirPath => $dirName) $dirs[$dirPath] = $this->repo->encodePath($dirPath); + } + $this->view->dirs = $dirs; + } $repoList = $this->repo->getList($this->projectID); $repoPairs = array(0 => '', $repo->id => $repo->name); diff --git a/module/job/js/create.ui.js b/module/job/js/create.ui.js index 5f74a3f961..f24ab6eae0 100644 --- a/module/job/js/create.ui.js +++ b/module/job/js/create.ui.js @@ -99,7 +99,7 @@ function changeRepo(event) else { $('.reference').removeClass('gitRepo'); - if($('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden'); + if($('[name=triggerType]').val() == 'tag') $('.svn-fields').removeClass('hidden'); $('#svnDir').remove(); $('#svnDirBox').append("
"); diff --git a/module/job/js/edit.ui.js b/module/job/js/edit.ui.js index 774a38e7d5..a31a679972 100644 --- a/module/job/js/edit.ui.js +++ b/module/job/js/edit.ui.js @@ -91,7 +91,7 @@ function changeRepo(event) else { $('.reference').removeClass('gitRepo'); - if($('#triggerType').val() == 'tag') $('.svn-fields').removeClass('hidden'); + if($('[name=triggerType]').val() == 'tag') $('.svn-fields').removeClass('hidden'); $('#svnDir').remove(); $('#svnDirBox').append("
"); @@ -108,13 +108,6 @@ function changeRepo(event) $('#svnDirBox').append(html); }) } - - var triggerOptions = $('#triggerType').zui('picker').options.items; - for(i in triggerOptions) - { - if(triggerOptions[i].value == 'tag') triggerOptions[i].text = data.type == 'gitlab' ? buildTag : dirChange; - } - $('#triggerType').zui('picker').render({items: triggerOptions}); } }); diff --git a/module/job/model.php b/module/job/model.php index 042d1c8780..cb11d3af08 100644 --- a/module/job/model.php +++ b/module/job/model.php @@ -179,6 +179,7 @@ class jobModel extends model ->remove('repoType,reference') ->cleanInt('product') ->get(); + $repo = $this->loadModel('repo')->getByID($job->repo); if($job->engine == 'jenkins') { @@ -188,7 +189,6 @@ class jobModel extends model if(strtolower($job->engine) == 'gitlab') { - $repo = $this->loadModel('repo')->getByID($job->repo); $project = zget($repo, 'project'); if($job->repo && !empty($repo)) { @@ -240,7 +240,7 @@ class jobModel extends model if($job->triggerType == 'schedule') $job->atDay = empty($_POST['atDay']) ? '' : implode(',', $this->post->atDay); $job->svnDir = ''; - if($job->triggerType == 'tag' and $this->post->repoType == 'Subversion') + if($job->triggerType == 'tag' and $repo->SCM == 'Subversion') { $job->svnDir = array_pop($_POST['svnDir']); if($job->svnDir == '/' and $_POST['svnDir']) $job->svnDir = array_pop($_POST['svnDir']); @@ -275,14 +275,14 @@ class jobModel extends model ->batchCheckIF($job->triggerType === 'schedule' and $job->atDay !== '0', "atDay", 'notempty') ->batchCheckIF($job->triggerType === 'schedule', "atTime", 'notempty') ->batchCheckIF($job->triggerType === 'commit', "comment", 'notempty') - ->batchCheckIF(($this->post->repoType == 'Subversion' and $job->triggerType == 'tag'), "svnDir", 'notempty') + ->batchCheckIF(($repo->SCM == 'Subversion' and $job->triggerType == 'tag'), "svnDir", 'notempty') ->batchCheckIF($job->frame === 'sonarqube', "sonarqubeServer,projectKey", 'notempty') ->autoCheck() ->exec(); if(dao::isError()) return false; $id = $this->dao->lastInsertId(); - if(strtolower($job->engine) == 'jenkins') $this->initJob($id, $job, $this->post->repoType); + if(strtolower($job->engine) == 'jenkins') $this->initJob($id, $job, $repo->SCM); return $id; } @@ -305,6 +305,7 @@ class jobModel extends model ->add('editedDate', helper::now()) ->remove('repoType,reference') ->get(); + $repo = $this->loadModel('repo')->getByID($job->gitlabRepo); if($job->engine == 'jenkins') { @@ -314,7 +315,6 @@ class jobModel extends model if(strtolower($job->engine) == 'gitlab') { - $repo = $this->loadModel('repo')->getByID($job->gitlabRepo); $project = zget($repo, 'project'); if(!empty($repo)) { @@ -367,7 +367,7 @@ class jobModel extends model if($job->triggerType == 'schedule') $job->atDay = empty($_POST['atDay']) ? '' : implode(',', $this->post->atDay); $job->svnDir = ''; - if($job->triggerType == 'tag' and $this->post->repoType == 'Subversion') + if($job->triggerType == 'tag' and $repo->SCM == 'Subversion') { $job->svnDir = array_pop($_POST['svnDir']); if($job->svnDir == '/' and $_POST['svnDir']) $job->svnDir = array_pop($_POST['svnDir']); @@ -403,14 +403,14 @@ class jobModel extends model ->batchCheckIF($job->triggerType === 'schedule' and $job->atDay !== '0', "atDay", 'notempty') ->batchCheckIF($job->triggerType === 'schedule', "atTime", 'notempty') ->batchCheckIF($job->triggerType === 'commit', "comment", 'notempty') - ->batchCheckIF(($this->post->repoType == 'Subversion' and $job->triggerType == 'tag'), "svnDir", 'notempty') + ->batchCheckIF(($repo->SCM == 'Subversion' and $job->triggerType == 'tag'), "svnDir", 'notempty') ->batchCheckIF($job->frame === 'sonarqube', "sonarqubeServer,projectKey", 'notempty') ->autoCheck() ->where('id')->eq($id) ->exec(); if(dao::isError()) return false; - $this->initJob($id, $job, $this->post->repoType); + $this->initJob($id, $job, $repo->SCM); return true; } diff --git a/module/job/ui/edit.html.php b/module/job/ui/edit.html.php index 1b7ac50bb5..84afcd4f2d 100644 --- a/module/job/ui/edit.html.php +++ b/module/job/ui/edit.html.php @@ -146,7 +146,7 @@ formPanel set::label($lang->job->branch), set::required(true), set::name('reference'), - set::items($refList), + set::items(!empty($refList) ? $refList : array()), set::value(isset($job->reference) ? $job->reference : ''), ), ), @@ -183,6 +183,8 @@ formPanel set::name('svnDir[]'), set::label($lang->job->svnDir), set::control('select'), + set::items(!empty($dirs) ? $dirs : array()), + set::value($job->svnDir), ), ), formRow