From 4bf49c5da7cdb7a20da0eb86301e9c08b1a3899d Mon Sep 17 00:00:00 2001 From: liyuchun Date: Thu, 13 Jan 2022 16:25:56 +0800 Subject: [PATCH] * Finish task #47232. --- module/action/lang/en.php | 1 + module/action/lang/zh-cn.php | 1 + module/company/view/dynamic.html.php | 8 +++++++- module/job/model.php | 8 ++++---- module/sonarqube/control.php | 21 +++++++++++++++++++++ module/sonarqube/lang/en.php | 15 ++++++++------- module/sonarqube/lang/zh-cn.php | 9 +++++---- module/sonarqube/model.php | 18 ++++++++++++++++++ 8 files changed, 65 insertions(+), 16 deletions(-) diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 6a151aa4f7..667f8b7bbb 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -135,6 +135,7 @@ $lang->action->objectTypes['kanbanlane'] = 'Kanban Lane'; $lang->action->objectTypes['kanbancolumn'] = 'Kanban Column'; $lang->action->objectTypes['kanbancard'] = 'Kanban Card'; $lang->action->objectTypes['sonarqube'] = 'SonarQube Server'; +$lang->action->objectTypes['sonarqubeproject'] = 'SonarQube Project'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 6422067636..e6fe49531b 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -135,6 +135,7 @@ $lang->action->objectTypes['kanbanlane'] = '看板泳道'; $lang->action->objectTypes['kanbancolumn'] = '看板列'; $lang->action->objectTypes['kanbancard'] = '看板卡片'; $lang->action->objectTypes['sonarqube'] = 'SonarQube服务器'; +$lang->action->objectTypes['sonarqubeproject'] = 'SonarQube项目'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); diff --git a/module/company/view/dynamic.html.php b/module/company/view/dynamic.html.php index ab820eed0b..d07b63407d 100644 --- a/module/company/view/dynamic.html.php +++ b/module/company/view/dynamic.html.php @@ -66,10 +66,14 @@ objectType == 'meeting') $tab = $action->project ? "data-app='project'" : "data-app='my'";?> objectName)) + if(empty($action->objectName) and $action->objectID) { echo '#' . $action->objectID; } + elseif(empty($action->objectID) and $action->extra) + { + echo $action->extra; + } elseif(empty($action->objectLink)) { echo $action->objectName; @@ -79,8 +83,10 @@ echo html::a($action->objectLink, $action->objectName, '', $tab); } ?> + objectID):?> objectID;?> + diff --git a/module/job/model.php b/module/job/model.php index 8806a75d67..3fdded8db6 100644 --- a/module/job/model.php +++ b/module/job/model.php @@ -183,13 +183,13 @@ class jobModel extends model unset($job->gitlabRepo); /* SonarQube tool is only used if the engine is JenKins. */ - if($job->engine != 'jenkins' and $job->frame == 'sonarqube') + if($job->engine != 'jenkins' and $job->frame == 'sonarqube') { dao::$errors[]['frame'] = $this->lang->job->mustUseJenkins; return false; } - if($job->repo > 0 and $job->frame == 'sonarqube') + if($job->repo > 0 and $job->frame == 'sonarqube') { $sonarqubeJob = $this->getSonarqubeByRepo(array($job->repo)); if(!empty($sonarqubeJob)) @@ -289,13 +289,13 @@ class jobModel extends model unset($job->gitlabRepo); /* SonarQube tool is only used if the engine is JenKins. */ - if($job->engine != 'jenkins' and $job->frame == 'sonarqube') + if($job->engine != 'jenkins' and $job->frame == 'sonarqube') { dao::$errors[] = $this->lang->job->mustUseJenkins; return false; } - if($job->repo > 0 and $job->frame == 'sonarqube') + if($job->repo > 0 and $job->frame == 'sonarqube') { $sonarqubeJob = $this->getSonarqubeByRepo(array($job->repo), $id); if(!empty($sonarqubeJob)) diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index 67535faa78..9baceb72de 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -175,4 +175,25 @@ class sonarqube extends control $this->view->orderBy = $orderBy; $this->display(); } + + /** + * Delete project. + * + * @param int $sonarqubeID + * @param string $projectKey + * @param string $confirm + * @access public + * @return void + */ + public function deleteProject($sonarqubeID, $projectKey, $confirm = 'no') + { + if($confirm != 'yes') die(js::confirm($this->lang->sonarqube->confirmDeleteProject, inlink('deleteProject', "sonarqubeID=$sonarqubeID&projectKey=$projectKey&confirm=yes"))); + + $reponse = $this->sonarqube->apiDeleteProject($sonarqubeID, $projectKey); + + if(isset($reponse->errors)) return print(js::alert($reponse->errors[0]->msg)); + + $this->loadModel('action')->create('sonarqubeproject', 0, 'deleted', '', $projectKey); + return print(js::reload('parent')); + } } diff --git a/module/sonarqube/lang/en.php b/module/sonarqube/lang/en.php index e997769888..eabcba69c7 100644 --- a/module/sonarqube/lang/en.php +++ b/module/sonarqube/lang/en.php @@ -6,13 +6,13 @@ $lang->sonarqube->search = 'Search'; $lang->sonarqube->create = 'Create SonarQube'; $lang->sonarqube->edit = 'Edit SonarQube'; $lang->sonarqube->delete = 'Delete SonarQube'; -$lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; $lang->sonarqube->serverFail = 'Connect to SonarQube server failed, please check the SonarQube server.'; $lang->sonarqube->browseProject = "SonarQube Project List"; $lang->sonarqube->createProject = "Create SonarQube Project"; $lang->sonarqube->deleteProject = "Delete SonarQube Project"; $lang->sonarqube->placeholderSearch = 'Project name'; $lang->sonarqube->execJob = "Exec SonarQube Job"; +$lang->sonarqube->desc = 'Description'; $lang->sonarqube->id = 'ID'; $lang->sonarqube->name = "{$lang->sonarqube->common} Name"; @@ -23,17 +23,18 @@ $lang->sonarqube->token = 'Token'; $lang->sonarqube->defaultProject = 'Default Project'; $lang->sonarqube->private = 'MD5 Verify'; -$lang->sonarqube->createServer = 'Create SonarQube Server'; -$lang->sonarqube->desc = 'Description'; -$lang->sonarqube->createSuccess = 'Create success'; +$lang->sonarqube->createServer = 'Create SonarQube Server'; +$lang->sonarqube->createSuccess = 'Create success'; $lang->sonarqube->placeholder = new stdclass; $lang->sonarqube->placeholder->name = ''; $lang->sonarqube->placeholder->url = "Please fill in the access address of the SonarQube Server homepage, as: https://sonarqube.zentao.net."; -$lang->sonarqube->repeatError = 'Server name or server address already exists!'; -$lang->sonarqube->validError = 'Sonarqube user authority authentication failed!'; -$lang->sonarqube->hostError = "Invalid SonarQube service address."; +$lang->sonarqube->repeatError = 'Server name or server address already exists!'; +$lang->sonarqube->validError = 'Sonarqube user authority authentication failed!'; +$lang->sonarqube->hostError = "Invalid SonarQube service address."; +$lang->sonarqube->confirmDelete = 'Do you want to delete this SonarQube server?'; +$lang->sonarqube->confirmDeleteProject = 'Do you want to delete this SonarQube project?'; $lang->sonarqube->projectName = 'Project Name'; $lang->sonarqube->projectlastAnalysis = 'Last analysis time'; diff --git a/module/sonarqube/lang/zh-cn.php b/module/sonarqube/lang/zh-cn.php index 5a91d937d2..f22481ae0e 100644 --- a/module/sonarqube/lang/zh-cn.php +++ b/module/sonarqube/lang/zh-cn.php @@ -6,7 +6,6 @@ $lang->sonarqube->search = '搜索'; $lang->sonarqube->create = '添加SonarQube'; $lang->sonarqube->edit = '编辑SonarQube'; $lang->sonarqube->delete = '删除SonarQube'; -$lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; $lang->sonarqube->serverFail = '连接SonarQube服务器异常,请检查SonarQube服务器。'; $lang->sonarqube->browseProject = "SonarQube项目列表"; $lang->sonarqube->createProject = "创建SonarQube项目"; @@ -31,9 +30,11 @@ $lang->sonarqube->placeholder = new stdclass; $lang->sonarqube->placeholder->name = ''; $lang->sonarqube->placeholder->url = "请填写SonarQube Server首页的访问地址,如:https://sonarqube.zentao.net。"; -$lang->sonarqube->repeatError = "服务器名称或服务器地址已存在!"; -$lang->sonarqube->validError = "SonarQube 用户权限认证失败!"; -$lang->sonarqube->hostError = "无效的SonarQube服务地址。"; +$lang->sonarqube->repeatError = "服务器名称或服务器地址已存在!"; +$lang->sonarqube->validError = "SonarQube 用户权限认证失败!"; +$lang->sonarqube->hostError = "无效的SonarQube服务地址。"; +$lang->sonarqube->confirmDelete = '确认删除该SonarQube吗?'; +$lang->sonarqube->confirmDeleteProject = '确认删除该SonarQube项目吗?'; $lang->sonarqube->projectName = '项目名称'; $lang->sonarqube->projectlastAnalysis = '最后执行时间'; diff --git a/module/sonarqube/model.php b/module/sonarqube/model.php index 089061f014..46f33d075d 100644 --- a/module/sonarqube/model.php +++ b/module/sonarqube/model.php @@ -109,4 +109,22 @@ class sonarqubeModel extends model return $allResults; } + + /** + * Delete sonarqube project by api. + * + * @param int $sonarqubeID + * @param int $projectKey + * @access public + * @return bool|object + */ + public function apiDeleteProject($sonarqubeID, $projectKey) + { + list($apiRoot, $header) = $this->getApiBase($sonarqubeID); + if(!$apiRoot) return false; + + $url = sprintf($apiRoot, "projects/delete?project=$projectKey"); + $result = json_decode(commonModel::http($url, null, array(CURLOPT_CUSTOMREQUEST => 'POST'), $header)); + return $result; + } }