diff --git a/db/update16.0.beta1.sql b/db/update16.0.beta1.sql
new file mode 100644
index 0000000000..0ad3e88553
--- /dev/null
+++ b/db/update16.0.beta1.sql
@@ -0,0 +1,9 @@
+ALTER TABLE `zt_task` ADD `repo` mediumint unsigned NOT NULL AFTER `activatedDate`;
+ALTER TABLE `zt_task` ADD `entry` varchar(255) NOT NULL AFTER `repo`;
+ALTER TABLE `zt_task` ADD `lines` varchar(10) NOT NULL AFTER `entry`;
+ALTER TABLE `zt_task` ADD `v1` varchar(40) NOT NULL AFTER `lines`;
+ALTER TABLE `zt_task` ADD `v2` varchar(40) NOT NULL AFTER `v1`;
+ALTER TABLE `zt_task` ADD `mr` mediumint(8) unsigned NOT NULL AFTER `repo`;
+ALTER TABLE `zt_bug` ADD `mr` mediumint(8) unsigned NOT NULL AFTER `repo`;
+
+UPDATE `zt_grouppriv` SET `method`='addReview' where `module`='mr' and `method`='addBug';
diff --git a/db/zentao.sql b/db/zentao.sql
index 69fee8ea81..41ec30e1e5 100644
--- a/db/zentao.sql
+++ b/db/zentao.sql
@@ -203,6 +203,7 @@ CREATE TABLE IF NOT EXISTS `zt_bug` (
`caseVersion` smallint(6) NOT NULL DEFAULT '1',
`result` mediumint(8) unsigned NOT NULL,
`repo` mediumint(8) unsigned NOT NULL,
+ `mr` mediumint(8) unsigned NOT NULL,
`entry` varchar(255) NOT NULL,
`lines` varchar(10) NOT NULL,
`v1` varchar(40) NOT NULL,
@@ -1250,6 +1251,12 @@ CREATE TABLE IF NOT EXISTS `zt_task` (
`lastEditedBy` varchar(30) NOT NULL,
`lastEditedDate` datetime NOT NULL,
`activatedDate` date NOT NULL,
+ `repo` mediumint(8) unsigned NOT NULL,
+ `mr` mediumint(8) unsigned NOT NULL,
+ `entry` varchar(255) NOT NULL,
+ `lines` varchar(10) NOT NULL,
+ `v1` varchar(40) NOT NULL,
+ `v2` varchar(40) NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `execution` (`execution`),
diff --git a/lib/scm/gitlab.class.php b/lib/scm/gitlab.class.php
index 82474eeb3c..6a4fe815c8 100644
--- a/lib/scm/gitlab.class.php
+++ b/lib/scm/gitlab.class.php
@@ -220,7 +220,10 @@ class gitlab
$count = $count == 0 ? '' : "-n $count";
$list = $this->getCommitsByPath($path, $fromRevision, $toRevision);
- foreach($list as $commit) $commit->diffs = $this->getFilesByCommit($commit->id);
+ foreach($list as $commit)
+ {
+ if(isset($commit->id)) $commit->diffs = $this->getFilesByCommit($commit->id);
+ }
return $this->parseLog($list);
}
@@ -656,6 +659,7 @@ class gitlab
{
$results = $this->fetch($api, $params);
$params->page ++;
+ if(!is_array($results)) $results = array();
$allResults = $allResults + $results;
if(count($results) < 100) break;
}
@@ -751,6 +755,7 @@ class gitlab
$i = 0;
foreach($logs as $commit)
{
+ if(!isset($commit->id)) continue;
$parsedLog = new stdclass();
$parsedLog->revision = $commit->id;
$parsedLog->committer = $commit->committer_name;
diff --git a/module/action/lang/en.php b/module/action/lang/en.php
index d30f55cafa..f0923f5bb5 100755
--- a/module/action/lang/en.php
+++ b/module/action/lang/en.php
@@ -79,101 +79,104 @@ $lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$lang->action->periods['thismonth'] = $lang->action->dynamic->thisMonth;
$lang->action->periods['lastmonth'] = $lang->action->dynamic->lastMonth;
-$lang->action->objectTypes['product'] = $lang->productCommon;
-$lang->action->objectTypes['branch'] = 'Branch';
-$lang->action->objectTypes['story'] = $lang->SRCommon;
-$lang->action->objectTypes['design'] = 'Design';
-$lang->action->objectTypes['productplan'] = 'Plan';
-$lang->action->objectTypes['release'] = 'Release';
-$lang->action->objectTypes['program'] = 'Program';
-$lang->action->objectTypes['project'] = 'Project';
-$lang->action->objectTypes['execution'] = $lang->executionCommon;
-$lang->action->objectTypes['task'] = 'Task';
-$lang->action->objectTypes['build'] = 'Build';
-$lang->action->objectTypes['job'] = 'Job';
-$lang->action->objectTypes['bug'] = 'Bug';
-$lang->action->objectTypes['case'] = 'Case';
-$lang->action->objectTypes['caseresult'] = 'Case Result';
-$lang->action->objectTypes['stepresult'] = 'Case Steps';
-$lang->action->objectTypes['caselib'] = 'Library';
-$lang->action->objectTypes['testsuite'] = 'Suite';
-$lang->action->objectTypes['testtask'] = 'Test Build';
-$lang->action->objectTypes['testreport'] = 'Report';
-$lang->action->objectTypes['doc'] = 'Document';
-$lang->action->objectTypes['api'] = 'Interface';
-$lang->action->objectTypes['doclib'] = 'Document Library';
-$lang->action->objectTypes['apistruct'] = 'API struct';
-$lang->action->objectTypes['todo'] = 'Todo';
-$lang->action->objectTypes['risk'] = 'Risk';
-$lang->action->objectTypes['issue'] = 'Issue';
-$lang->action->objectTypes['module'] = 'Module';
-$lang->action->objectTypes['user'] = 'User';
-$lang->action->objectTypes['stakeholder'] = 'Stakeholder';
-$lang->action->objectTypes['budget'] = 'Cost Estimate';
-$lang->action->objectTypes['entry'] = 'Entry';
-$lang->action->objectTypes['webhook'] = 'Webhook';
-$lang->action->objectTypes['team'] = 'Team';
-$lang->action->objectTypes['whitelist'] = 'Whitelist';
-$lang->action->objectTypes['pipeline'] = 'GitLab';
-$lang->action->objectTypes['gitlab'] = 'GitLab';
-$lang->action->objectTypes['jenkins'] = 'Jenkins';
-$lang->action->objectTypes['mr'] = 'Merge Request';
-$lang->action->objectTypes['gitlabproject'] = 'GitLab Project';
-$lang->action->objectTypes['gitlabuser'] = 'GitLab User';
-$lang->action->objectTypes['gitlabgroup'] = 'GitLab Group';
+$lang->action->objectTypes['product'] = $lang->productCommon;
+$lang->action->objectTypes['branch'] = 'Branch';
+$lang->action->objectTypes['story'] = $lang->SRCommon;
+$lang->action->objectTypes['design'] = 'Design';
+$lang->action->objectTypes['productplan'] = 'Plan';
+$lang->action->objectTypes['release'] = 'Release';
+$lang->action->objectTypes['program'] = 'Program';
+$lang->action->objectTypes['project'] = 'Project';
+$lang->action->objectTypes['execution'] = $lang->executionCommon;
+$lang->action->objectTypes['task'] = 'Task';
+$lang->action->objectTypes['build'] = 'Build';
+$lang->action->objectTypes['job'] = 'Job';
+$lang->action->objectTypes['bug'] = 'Bug';
+$lang->action->objectTypes['case'] = 'Case';
+$lang->action->objectTypes['caseresult'] = 'Case Result';
+$lang->action->objectTypes['stepresult'] = 'Case Steps';
+$lang->action->objectTypes['caselib'] = 'Library';
+$lang->action->objectTypes['testsuite'] = 'Suite';
+$lang->action->objectTypes['testtask'] = 'Test Build';
+$lang->action->objectTypes['testreport'] = 'Report';
+$lang->action->objectTypes['doc'] = 'Document';
+$lang->action->objectTypes['api'] = 'Interface';
+$lang->action->objectTypes['doclib'] = 'Document Library';
+$lang->action->objectTypes['apistruct'] = 'API struct';
+$lang->action->objectTypes['todo'] = 'Todo';
+$lang->action->objectTypes['risk'] = 'Risk';
+$lang->action->objectTypes['issue'] = 'Issue';
+$lang->action->objectTypes['module'] = 'Module';
+$lang->action->objectTypes['user'] = 'User';
+$lang->action->objectTypes['stakeholder'] = 'Stakeholder';
+$lang->action->objectTypes['budget'] = 'Cost Estimate';
+$lang->action->objectTypes['entry'] = 'Entry';
+$lang->action->objectTypes['webhook'] = 'Webhook';
+$lang->action->objectTypes['team'] = 'Team';
+$lang->action->objectTypes['whitelist'] = 'Whitelist';
+$lang->action->objectTypes['pipeline'] = 'GitLab';
+$lang->action->objectTypes['gitlab'] = 'GitLab';
+$lang->action->objectTypes['jenkins'] = 'Jenkins';
+$lang->action->objectTypes['mr'] = 'Merge Request';
+$lang->action->objectTypes['gitlabproject'] = 'GitLab Project';
+$lang->action->objectTypes['gitlabuser'] = 'GitLab User';
+$lang->action->objectTypes['gitlabgroup'] = 'GitLab Group';
+$lang->action->objectTypes['gitlabbranch'] = 'GitLab Branch';
+$lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab Protected Branches';
/* Used to describe operation history. */
$lang->action->desc = new stdclass();
-$lang->action->desc->common = '$date, $action by $actor.' . "\n";
-$lang->action->desc->extra = '$date, $action as $extra by $actor.' . "\n";
-$lang->action->desc->opened = '$date, created by $actor .' . "\n";
-$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
-$lang->action->desc->created = '$date, created by $actor .' . "\n";
-$lang->action->desc->added = '$date, added by $actor .' . "\n";
-$lang->action->desc->changed = '$date, changed by $actor .' . "\n";
-$lang->action->desc->edited = '$date, edited by $actor .' . "\n";
-$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n";
-$lang->action->desc->closed = '$date, closed by $actor .' . "\n";
-$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
-$lang->action->desc->deleted = '$date, deleted by $actor .' . "\n";
-$lang->action->desc->deletedfile = '$date, $actor deleted $extra.' . "\n";
-$lang->action->desc->editfile = '$date, $actor edited $extra.' . "\n";
-$lang->action->desc->erased = '$date, deleted by $actor .' . "\n";
-$lang->action->desc->undeleted = '$date, restored by $actor .' . "\n";
-$lang->action->desc->hidden = '$date, hidden by $actor .' . "\n";
-$lang->action->desc->commented = '$date, added by $actor.' . "\n";
-$lang->action->desc->activated = '$date, activated by $actor .' . "\n";
-$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n";
-$lang->action->desc->moved = '$date, moved by $actor , which was "$extra".' . "\n";
-$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n";
-$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n";
-$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n";
-$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.';
-$lang->action->desc->started = '$date, started by $actor.' . "\n";
-$lang->action->desc->restarted = '$date, continued by $actor.' . "\n";
-$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n";
-$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n";
-$lang->action->desc->recordestimate = '$date, recorded by $actor and it cost $extra hours.';
-$lang->action->desc->editestimate = '$date, $actor edited Hour.';
-$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.';
-$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n";
-$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n";
-$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n";
-$lang->action->desc->finished = '$date, finished by $actor.' . "\n";
-$lang->action->desc->paused = '$date, paused by $actor.' . "\n";
-$lang->action->desc->verified = '$date, verified by $actor.' . "\n";
-$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
' . "\n";
-$lang->action->desc->diff2 = '%s is changed. The difference is ' . "\n" . "
%s" . "\n
%s"; -$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; -$lang->action->desc->linked2bug = '$date, linked to $extra by $actor'; -$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; -$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; -$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; -$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; -$lang->action->desc->run = '$date, by $actor executed.' . "\n"; -$lang->action->desc->syncprogram = '$date, started by $actor(starting the project sets the program status as Ongoing).' . "\n"; -$lang->action->desc->syncproject = '$date, starting the execution sets the project status as Ongoing.' . "\n"; -$lang->action->desc->syncexecution = '$date, starting the task sets the execution status as Ongoing.' . "\n"; +$lang->action->desc->common = '$date, $action by $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action as $extra by $actor.' . "\n"; +$lang->action->desc->opened = '$date, created by $actor .' . "\n"; +$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; +$lang->action->desc->created = '$date, created by $actor .' . "\n"; +$lang->action->desc->added = '$date, added by $actor .' . "\n"; +$lang->action->desc->changed = '$date, changed by $actor .' . "\n"; +$lang->action->desc->edited = '$date, edited by $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n"; +$lang->action->desc->closed = '$date, closed by $actor .' . "\n"; +$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; +$lang->action->desc->deleted = '$date, deleted by $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor deleted $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor edited $extra.' . "\n"; +$lang->action->desc->erased = '$date, deleted by $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, restored by $actor .' . "\n"; +$lang->action->desc->hidden = '$date, hidden by $actor .' . "\n"; +$lang->action->desc->commented = '$date, added by $actor.' . "\n"; +$lang->action->desc->activated = '$date, activated by $actor .' . "\n"; +$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n"; +$lang->action->desc->moved = '$date, moved by $actor , which was "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n"; +$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.'; +$lang->action->desc->started = '$date, started by $actor.' . "\n"; +$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; +$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n"; +$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, recorded by $actor and it cost $extra hours.'; +$lang->action->desc->editestimate = '$date, $actor edited Hour.'; +$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.'; +$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->finished = '$date, finished by $actor.' . "\n"; +$lang->action->desc->paused = '$date, paused by $actor.' . "\n"; +$lang->action->desc->verified = '$date, verified by $actor.' . "\n"; +$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
%s" . "\n
%s"; +$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; +$lang->action->desc->linked2bug = '$date, linked to $extra by $actor'; +$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; +$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; +$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; +$lang->action->desc->run = '$date, by $actor executed.' . "\n"; +$lang->action->desc->syncprogram = '$date, started by $actor(starting the project sets the program status as Ongoing).' . "\n"; +$lang->action->desc->syncproject = '$date, starting the execution sets the project status as Ongoing.' . "\n"; +$lang->action->desc->syncexecution = '$date, starting the task sets the execution status as Ongoing.' . "\n"; +$lang->action->desc->importfromgitlab = '$date, Issue associate created from gitlab by $actor.' . "\n"; /* Used to describe the history of operations related to parent-child tasks. */ $lang->action->desc->createchildren = '$date, $actor created a child task $extra。' . "\n"; @@ -303,6 +306,7 @@ $lang->action->label->compilefail = 'Compile Fail'; $lang->action->label->reopen = 'Reopen'; $lang->action->label->approve = 'Passed'; $lang->action->label->reject = 'Rejected'; +$lang->action->label->importfromgitlab = 'Issue associate created'; /* Dynamic information is grouped by object. */ $lang->action->dynamicAction = new stdclass; @@ -353,6 +357,7 @@ $lang->action->dynamicAction->release['notified'] = 'Notify Release'; $lang->action->dynamicAction->release['hidden'] = 'Hide Release'; $lang->action->dynamicAction->story['opened'] = 'Create Story'; +$lang->action->dynamicAction->story['importfromgitlab'] = "Issue associate create story"; $lang->action->dynamicAction->story['edited'] = 'Edit Story'; $lang->action->dynamicAction->story['activated'] = 'Activate Story'; $lang->action->dynamicAction->story['reviewed'] = 'Review Story'; @@ -393,6 +398,7 @@ $lang->action->dynamicAction->kanbanlane['moved'] = 'Move Swimlane'; $lang->action->dynamicAction->team['managedTeam'] = 'Manage Team'; $lang->action->dynamicAction->task['opened'] = 'Create Task'; +$lang->action->dynamicAction->task['importfromgitlab'] = "Issue associate create task"; $lang->action->dynamicAction->task['edited'] = 'Edit Task'; $lang->action->dynamicAction->task['commented'] = 'Task Comment'; $lang->action->dynamicAction->task['assigned'] = 'Assign Task'; @@ -426,6 +432,7 @@ $lang->action->dynamicAction->build['edited'] = 'Edit Build'; $lang->action->dynamicAction->build['deleted'] = 'Delete Build'; $lang->action->dynamicAction->bug['opened'] = 'Report Bug'; +$lang->action->dynamicAction->bug['importfromgitlab'] = "Issue associate create bug"; $lang->action->dynamicAction->bug['edited'] = 'Edit Bug'; $lang->action->dynamicAction->bug['activated'] = 'Activate Bug'; $lang->action->dynamicAction->bug['assigned'] = 'Assign Bug'; @@ -614,6 +621,7 @@ $lang->action->search->label['canceled'] = $lang->action->label->ca $lang->action->search->label['finished'] = $lang->action->label->finished; $lang->action->search->label['paused'] = $lang->action->label->paused; $lang->action->search->label['verified'] = $lang->action->label->verified; +$lang->action->search->label['importfromgitlab'] = $lang->action->label->importfromgitlab; $lang->action->search->label['login'] = $lang->action->label->login; $lang->action->search->label['logout'] = $lang->action->label->logout; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index c43e723f00..58fc5a8433 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -79,101 +79,104 @@ $lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek; $lang->action->periods['thismonth'] = $lang->action->dynamic->thisMonth; $lang->action->periods['lastmonth'] = $lang->action->dynamic->lastMonth; -$lang->action->objectTypes['product'] = $lang->productCommon; -$lang->action->objectTypes['branch'] = '分支'; -$lang->action->objectTypes['story'] = $lang->SRCommon; -$lang->action->objectTypes['design'] = '设计'; -$lang->action->objectTypes['productplan'] = '计划'; -$lang->action->objectTypes['release'] = '发布'; -$lang->action->objectTypes['program'] = '项目集'; -$lang->action->objectTypes['project'] = '项目'; -$lang->action->objectTypes['execution'] = $config->systemMode == 'new' ? '执行' : $lang->executionCommon; -$lang->action->objectTypes['task'] = '任务'; -$lang->action->objectTypes['build'] = '版本'; -$lang->action->objectTypes['job'] = '构建'; -$lang->action->objectTypes['bug'] = 'Bug'; -$lang->action->objectTypes['case'] = '用例'; -$lang->action->objectTypes['caseresult'] = '用例结果'; -$lang->action->objectTypes['stepresult'] = '用例步骤'; -$lang->action->objectTypes['caselib'] = '用例库'; -$lang->action->objectTypes['testsuite'] = '套件'; -$lang->action->objectTypes['testtask'] = '测试单'; -$lang->action->objectTypes['testreport'] = '报告'; -$lang->action->objectTypes['doc'] = '文档'; -$lang->action->objectTypes['api'] = '接口'; -$lang->action->objectTypes['doclib'] = '文档库'; -$lang->action->objectTypes['apistruct'] = '数据结构'; -$lang->action->objectTypes['todo'] = '待办'; -$lang->action->objectTypes['risk'] = '风险'; -$lang->action->objectTypes['issue'] = '问题'; -$lang->action->objectTypes['module'] = '模块'; -$lang->action->objectTypes['user'] = '用户'; -$lang->action->objectTypes['stakeholder'] = '干系人'; -$lang->action->objectTypes['budget'] = '费用估算'; -$lang->action->objectTypes['entry'] = '应用'; -$lang->action->objectTypes['webhook'] = 'Webhook'; -$lang->action->objectTypes['team'] = '团队'; -$lang->action->objectTypes['whitelist'] = '白名单'; -$lang->action->objectTypes['pipeline'] = 'GitLab'; -$lang->action->objectTypes['gitlab'] = 'GitLab'; -$lang->action->objectTypes['jenkins'] = 'Jenkins'; -$lang->action->objectTypes['mr'] = '合并请求'; -$lang->action->objectTypes['gitlabproject'] = 'GitLab项目'; -$lang->action->objectTypes['gitlabuser'] = 'GitLab用户'; -$lang->action->objectTypes['gitlabgroup'] = 'GitLab群组'; +$lang->action->objectTypes['product'] = $lang->productCommon; +$lang->action->objectTypes['branch'] = '分支'; +$lang->action->objectTypes['story'] = $lang->SRCommon; +$lang->action->objectTypes['design'] = '设计'; +$lang->action->objectTypes['productplan'] = '计划'; +$lang->action->objectTypes['release'] = '发布'; +$lang->action->objectTypes['program'] = '项目集'; +$lang->action->objectTypes['project'] = '项目'; +$lang->action->objectTypes['execution'] = $config->systemMode == 'new' ? '执行' : $lang->executionCommon; +$lang->action->objectTypes['task'] = '任务'; +$lang->action->objectTypes['build'] = '版本'; +$lang->action->objectTypes['job'] = '构建'; +$lang->action->objectTypes['bug'] = 'Bug'; +$lang->action->objectTypes['case'] = '用例'; +$lang->action->objectTypes['caseresult'] = '用例结果'; +$lang->action->objectTypes['stepresult'] = '用例步骤'; +$lang->action->objectTypes['caselib'] = '用例库'; +$lang->action->objectTypes['testsuite'] = '套件'; +$lang->action->objectTypes['testtask'] = '测试单'; +$lang->action->objectTypes['testreport'] = '报告'; +$lang->action->objectTypes['doc'] = '文档'; +$lang->action->objectTypes['api'] = '接口'; +$lang->action->objectTypes['doclib'] = '文档库'; +$lang->action->objectTypes['apistruct'] = '数据结构'; +$lang->action->objectTypes['todo'] = '待办'; +$lang->action->objectTypes['risk'] = '风险'; +$lang->action->objectTypes['issue'] = '问题'; +$lang->action->objectTypes['module'] = '模块'; +$lang->action->objectTypes['user'] = '用户'; +$lang->action->objectTypes['stakeholder'] = '干系人'; +$lang->action->objectTypes['budget'] = '费用估算'; +$lang->action->objectTypes['entry'] = '应用'; +$lang->action->objectTypes['webhook'] = 'Webhook'; +$lang->action->objectTypes['team'] = '团队'; +$lang->action->objectTypes['whitelist'] = '白名单'; +$lang->action->objectTypes['pipeline'] = 'GitLab'; +$lang->action->objectTypes['gitlab'] = 'GitLab'; +$lang->action->objectTypes['jenkins'] = 'Jenkins'; +$lang->action->objectTypes['mr'] = '合并请求'; +$lang->action->objectTypes['gitlabproject'] = 'GitLab项目'; +$lang->action->objectTypes['gitlabuser'] = 'GitLab用户'; +$lang->action->objectTypes['gitlabgroup'] = 'GitLab群组'; +$lang->action->objectTypes['gitlabbranch'] = 'GitLab分支'; +$lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab保护分支'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); -$lang->action->desc->common = '$date, $action by $actor。' . "\n"; -$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; -$lang->action->desc->opened = '$date, 由 $actor 创建。' . "\n"; -$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n"; -$lang->action->desc->created = '$date, 由 $actor 创建。' . "\n"; -$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; -$lang->action->desc->changed = '$date, 由 $actor 变更。' . "\n"; -$lang->action->desc->edited = '$date, 由 $actor 编辑。' . "\n"; -$lang->action->desc->assigned = '$date, 由 $actor 指派给 $extra。' . "\n"; -$lang->action->desc->closed = '$date, 由 $actor 关闭。' . "\n"; -$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n"; -$lang->action->desc->deleted = '$date, 由 $actor 删除。' . "\n"; -$lang->action->desc->deletedfile = '$date, 由 $actor 删除了附件:$extra。' . "\n"; -$lang->action->desc->editfile = '$date, 由 $actor 编辑了附件:$extra。' . "\n"; -$lang->action->desc->erased = '$date, 由 $actor 删除。' . "\n"; -$lang->action->desc->undeleted = '$date, 由 $actor 还原。' . "\n"; -$lang->action->desc->hidden = '$date, 由 $actor 隐藏。' . "\n"; -$lang->action->desc->commented = '$date, 由 $actor 添加备注。' . "\n"; -$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; -$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; -$lang->action->desc->moved = '$date, 由 $actor 移动,之前为 "$extra"。' . "\n"; -$lang->action->desc->confirmed = '$date, 由 $actor 确认' . $lang->SRCommon . '变动,最新版本为#$extra。' . "\n"; -$lang->action->desc->caseconfirmed = '$date, 由 $actor 确认用例变动,最新版本为#$extra。' . "\n"; -$lang->action->desc->bugconfirmed = '$date, 由 $actor 确认Bug。' . "\n"; -$lang->action->desc->frombug = '$date, 由 $actor Bug转化而来,Bug编号为 $extra。'; -$lang->action->desc->started = '$date, 由 $actor 启动。' . "\n"; -$lang->action->desc->restarted = '$date, 由 $actor 继续。' . "\n"; -$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; -$lang->action->desc->suspended = '$date, 由 $actor 挂起。' . "\n"; -$lang->action->desc->recordestimate = '$date, 由 $actor 记录工时,消耗 $extra 小时。'; -$lang->action->desc->editestimate = '$date, 由 $actor 编辑工时。'; -$lang->action->desc->deleteestimate = '$date, 由 $actor 删除工时。'; -$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; -$lang->action->desc->svncommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; -$lang->action->desc->gitcommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; -$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; -$lang->action->desc->paused = '$date, 由 $actor 暂停。' . "\n"; -$lang->action->desc->verified = '$date, 由 $actor 验收。' . "\n"; -$lang->action->desc->diff1 = '修改了 %s,旧值为 "%s",新值为 "%s"。
%s" . "\n
%s"; -$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n"; -$lang->action->desc->linked2bug = '$date 由 $actor 关联到版本 $extra'; -$lang->action->desc->linked2testtask = '$date 由 $actor 关联到测试单 $extra'; -$lang->action->desc->resolved = '$date, 由 $actor 解决。' . "\n"; -$lang->action->desc->managed = '$date, 由 $actor 维护。' . "\n"; -$lang->action->desc->estimated = '$date, 由 $actor 估算。' . "\n"; -$lang->action->desc->run = '$date, 由 $actor 执行。' . "\n"; -$lang->action->desc->syncprogram = '$date, 由 $actor 启动(因项目开始而启动项目集)。' . "\n"; -$lang->action->desc->syncproject = '$date, 系统判断由于执行开始,将项目状态置为进行中。' . "\n"; -$lang->action->desc->syncexecution = '$date, 系统判断由于任务开始,将执行状态置为进行中。' . "\n"; +$lang->action->desc->common = '$date, $action by $actor。' . "\n"; +$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; +$lang->action->desc->opened = '$date, 由 $actor 创建。' . "\n"; +$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n"; +$lang->action->desc->created = '$date, 由 $actor 创建。' . "\n"; +$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; +$lang->action->desc->changed = '$date, 由 $actor 变更。' . "\n"; +$lang->action->desc->edited = '$date, 由 $actor 编辑。' . "\n"; +$lang->action->desc->assigned = '$date, 由 $actor 指派给 $extra。' . "\n"; +$lang->action->desc->closed = '$date, 由 $actor 关闭。' . "\n"; +$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n"; +$lang->action->desc->deleted = '$date, 由 $actor 删除。' . "\n"; +$lang->action->desc->deletedfile = '$date, 由 $actor 删除了附件:$extra。' . "\n"; +$lang->action->desc->editfile = '$date, 由 $actor 编辑了附件:$extra。' . "\n"; +$lang->action->desc->erased = '$date, 由 $actor 删除。' . "\n"; +$lang->action->desc->undeleted = '$date, 由 $actor 还原。' . "\n"; +$lang->action->desc->hidden = '$date, 由 $actor 隐藏。' . "\n"; +$lang->action->desc->commented = '$date, 由 $actor 添加备注。' . "\n"; +$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; +$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; +$lang->action->desc->moved = '$date, 由 $actor 移动,之前为 "$extra"。' . "\n"; +$lang->action->desc->confirmed = '$date, 由 $actor 确认' . $lang->SRCommon . '变动,最新版本为#$extra。' . "\n"; +$lang->action->desc->caseconfirmed = '$date, 由 $actor 确认用例变动,最新版本为#$extra。' . "\n"; +$lang->action->desc->bugconfirmed = '$date, 由 $actor 确认Bug。' . "\n"; +$lang->action->desc->frombug = '$date, 由 $actor Bug转化而来,Bug编号为 $extra。'; +$lang->action->desc->started = '$date, 由 $actor 启动。' . "\n"; +$lang->action->desc->restarted = '$date, 由 $actor 继续。' . "\n"; +$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; +$lang->action->desc->suspended = '$date, 由 $actor 挂起。' . "\n"; +$lang->action->desc->recordestimate = '$date, 由 $actor 记录工时,消耗 $extra 小时。'; +$lang->action->desc->editestimate = '$date, 由 $actor 编辑工时。'; +$lang->action->desc->deleteestimate = '$date, 由 $actor 删除工时。'; +$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; +$lang->action->desc->svncommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; +$lang->action->desc->gitcommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; +$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; +$lang->action->desc->paused = '$date, 由 $actor 暂停。' . "\n"; +$lang->action->desc->verified = '$date, 由 $actor 验收。' . "\n"; +$lang->action->desc->diff1 = '修改了 %s,旧值为 "%s",新值为 "%s"。
%s" . "\n
%s"; +$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n"; +$lang->action->desc->linked2bug = '$date 由 $actor 关联到版本 $extra'; +$lang->action->desc->linked2testtask = '$date 由 $actor 关联到测试单 $extra'; +$lang->action->desc->resolved = '$date, 由 $actor 解决。' . "\n"; +$lang->action->desc->managed = '$date, 由 $actor 维护。' . "\n"; +$lang->action->desc->estimated = '$date, 由 $actor 估算。' . "\n"; +$lang->action->desc->run = '$date, 由 $actor 执行。' . "\n"; +$lang->action->desc->syncprogram = '$date, 由 $actor 启动(因项目开始而启动项目集)。' . "\n"; +$lang->action->desc->syncproject = '$date, 系统判断由于执行开始,将项目状态置为进行中。' . "\n"; +$lang->action->desc->syncexecution = '$date, 系统判断由于任务开始,将执行状态置为进行中。' . "\n"; +$lang->action->desc->importfromgitlab = '$date, 由 $actor 从Gitlab的Issue关联创建。' . "\n"; /* 用来描述和父子任务相关的操作历史记录。*/ $lang->action->desc->createchildren = '$date, 由 $actor 创建子任务 $extra。' . "\n"; @@ -303,6 +306,7 @@ $lang->action->label->compilefail = '构建失败'; $lang->action->label->reopen = '重新打开'; $lang->action->label->approve = '通过了'; $lang->action->label->reject = '拒绝了'; +$lang->action->label->importfromgitlab = '从Gitlab关联创建了'; /* 动态信息按照对象分组 */ $lang->action->dynamicAction = new stdclass(); @@ -353,6 +357,7 @@ $lang->action->dynamicAction->release['notified'] = '通知发布'; $lang->action->dynamicAction->release['hidden'] = '隐藏发布'; $lang->action->dynamicAction->story['opened'] = "创建{$lang->SRCommon}"; +$lang->action->dynamicAction->story['importfromgitlab'] = "从Gitlab关联创建{$lang->SRCommon}"; $lang->action->dynamicAction->story['edited'] = "编辑{$lang->SRCommon}"; $lang->action->dynamicAction->story['activated'] = "激活{$lang->SRCommon}"; $lang->action->dynamicAction->story['reviewed'] = "评审{$lang->SRCommon}"; @@ -393,6 +398,7 @@ $lang->action->dynamicAction->kanbanlane['moved'] = '移动泳道'; $lang->action->dynamicAction->team['managedTeam'] = '维护团队'; $lang->action->dynamicAction->task['opened'] = '创建任务'; +$lang->action->dynamicAction->task['importfromgitlab'] = "从Gitlab关联创建任务"; $lang->action->dynamicAction->task['edited'] = '编辑任务'; $lang->action->dynamicAction->task['commented'] = '备注任务'; $lang->action->dynamicAction->task['assigned'] = '指派任务'; @@ -426,6 +432,7 @@ $lang->action->dynamicAction->build['edited'] = '编辑版本'; $lang->action->dynamicAction->build['deleted'] = '删除版本'; $lang->action->dynamicAction->bug['opened'] = '创建Bug'; +$lang->action->dynamicAction->bug['importfromgitlab'] = "从Gitlab关联创建Bug"; $lang->action->dynamicAction->bug['edited'] = '编辑Bug'; $lang->action->dynamicAction->bug['activated'] = '激活Bug'; $lang->action->dynamicAction->bug['assigned'] = '指派Bug'; @@ -614,6 +621,7 @@ $lang->action->search->label['canceled'] = $lang->action->label->ca $lang->action->search->label['finished'] = $lang->action->label->finished; $lang->action->search->label['paused'] = $lang->action->label->paused; $lang->action->search->label['verified'] = $lang->action->label->verified; +$lang->action->search->label['importfromgitlab'] = $lang->action->label->importfromgitlab; $lang->action->search->label['login'] = $lang->action->label->login; $lang->action->search->label['logout'] = $lang->action->label->logout; diff --git a/module/block/lang/en.php b/module/block/lang/en.php index ce31de4f53..b0a9a555e3 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -91,6 +91,7 @@ $lang->block->refresh = 'Refresh'; $lang->block->nbsp = ' '; $lang->block->hidden = 'Hide'; $lang->block->dynamicInfo = "%s %s %s %s %s"; +$lang->block->noLinkDynamic = "%s %s %s %s %s"; $lang->block->cannotPlaceInLeft = 'Cannot place the block at left side.'; $lang->block->cannotPlaceInRight = 'Cannot place the block at right side.'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index ac77206f01..e5d8deface 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -91,6 +91,7 @@ $lang->block->refresh = '刷新'; $lang->block->nbsp = ''; $lang->block->hidden = '隐藏'; $lang->block->dynamicInfo = "%s %s %s %s %s"; +$lang->block->noLinkDynamic = "%s %s %s %s %s"; $lang->block->cannotPlaceInLeft = '此区块无法放置在左侧。'; $lang->block->cannotPlaceInRight = '此区块无法放置在右侧。'; diff --git a/module/block/view/dynamic.html.php b/module/block/view/dynamic.html.php index 2447f62507..215bb804d3 100644 --- a/module/block/view/dynamic.html.php +++ b/module/block/view/dynamic.html.php @@ -15,7 +15,8 @@ if($action->action == 'login' or $action->action == 'logout') $action->objectName = $action->objectLabel = ''; $class = $action->major ? "class='active'" : ''; echo "
+ noData;?> + + createLink('gitlab', 'createBranch', "gitlabID=$gitlabID&projectID=$projectID"), " " . $lang->gitlab->createBranch, '', "class='btn btn-info'");?> + +
++ noData;?> + + createLink('gitlab', 'createBranchPriv', "gitlabID=$gitlabID&projectID=$projectID"), " " . $lang->gitlab->createBranchPriv, '', "class='btn btn-info'");?> + +
+