Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -80,7 +80,6 @@ zentaoxx:
|
||||
cp -r xuan/xxb/config/ext/maps.php zentaoxx/config/ext/
|
||||
cp -r xuan/xxb/apischeme.json zentaoxx/
|
||||
cp $(XUANPATH)/xxb/config/ext/maps.php zentaoxx/config/ext/
|
||||
cp $(XUANPATH)/xxb/module/im/model.php zentaoxx/module/im/model.php
|
||||
cp $(XUANPATH)/xxb/apischeme.json zentaoxx/
|
||||
cp -r xuanxuan/config/* zentaoxx/config/
|
||||
cp -r xuanxuan/module/* zentaoxx/module/
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
|
||||
if(!function_exists('getWebRoot')){function getWebRoot(){}}
|
||||
|
||||
/* 基本设置。Basic settings. */
|
||||
$config->version = '12.0.1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->version = '12.1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
|
||||
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
|
||||
$config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ $filter->rules->orderBy = '/^\w+_(desc|asc)$/i';
|
||||
$filter->rules->browseType = '/^by\w+$/i';
|
||||
$filter->rules->word = '/^\w+$/';
|
||||
$filter->rules->paramName = '/^[a-zA-Z0-9_\.]+$/';
|
||||
$filter->rules->paramValue = '/^[a-zA-Z0-9=_,`#+\^\/\.%\|\x7f-\xff]+$/';
|
||||
$filter->rules->paramValue = '/^[a-zA-Z0-9=_,`#+\^\/\.%\|\x7f-\xff\-]+$/';
|
||||
|
||||
$filter->default = new stdclass();
|
||||
$filter->default->moduleName = 'code';
|
||||
|
||||
@@ -174,6 +174,7 @@ define('TABLE_JOB', '`' . $config->db->prefix . 'job`');
|
||||
define('TABLE_COMPILE', '`' . $config->db->prefix . 'compile`');
|
||||
|
||||
define('TABLE_REPO', '`' . $config->db->prefix . 'repo`');
|
||||
define('TABLE_RELATION', '`' . $config->db->prefix . 'relation`');
|
||||
define('TABLE_REPOHISTORY', '`' . $config->db->prefix . 'repohistory`');
|
||||
define('TABLE_REPOFILES', '`' . $config->db->prefix . 'repofiles`');
|
||||
define('TABLE_REPOBRANCH', '`' . $config->db->prefix . 'repobranch`');
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+15
-38
@@ -1,14 +1,12 @@
|
||||
ALTER TABLE `zt_story` CHANGE `type` `type` varchar(30) COLLATE 'utf8_general_ci' NOT NULL DEFAULT 'story' AFTER `keywords`;
|
||||
UPDATE zt_story SET `type` = 'story' WHERE `type` = '';
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_jenkins`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_jenkins` (
|
||||
`id` smallint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`url` varchar(255) DEFAULT NULL,
|
||||
`account` varchar(30) DEFAULT NULL,
|
||||
`password` varchar(30) NOT NULL,
|
||||
`encrypt` varchar(30) NOT NULL DEFAULT 'plain',
|
||||
`token` varchar(255) DEFAULT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
@@ -18,36 +16,37 @@ CREATE TABLE IF NOT EXISTS `zt_jenkins` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_integration`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_integration` (
|
||||
CREATE TABLE IF NOT EXISTS `zt_job` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
`jenkins` mediumint(8) unsigned NOT NULL,
|
||||
`jenkinsJob` varchar(500) NOT NULL,
|
||||
`jkHost` mediumint(8) unsigned NOT NULL,
|
||||
`jkJob` varchar(500) NOT NULL,
|
||||
`triggerType` varchar(255) NOT NULL,
|
||||
`svnFolder` varchar(255) NOT NULL,
|
||||
`scheduleDay` varchar(255) DEFAULT NULL,
|
||||
`tagKeywords` varchar(255) DEFAULT NULL,
|
||||
`commentKeywords` varchar(255) DEFAULT NULL,
|
||||
`svnDir` varchar(255) NOT NULL,
|
||||
`atDay` varchar(20) DEFAULT NULL,
|
||||
`atTime` varchar(10) DEFAULT NULL,
|
||||
`comment` varchar(255) DEFAULT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`lastExec` datetime DEFAULT NULL,
|
||||
`lastStatus` varchar(255) DEFAULT NULL,
|
||||
`lastTag` varchar(255) DEFAULT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_compile`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_compile` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`cijob` mediumint(8) unsigned NOT NULL,
|
||||
`queueItem` mediumint(8) NOT NULL,
|
||||
`job` mediumint(8) unsigned NOT NULL,
|
||||
`queue` mediumint(8) NOT NULL,
|
||||
`status` varchar(255) NOT NULL,
|
||||
`logs` text,
|
||||
`atTime` varchar(10) NOT NULL,
|
||||
`tag` varchar(255) NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`updateDate` datetime NOT NULL,
|
||||
@@ -60,32 +59,10 @@ INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type
|
||||
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=checkBuildStatus', '同步Jenkins任务状态', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=exec', '执行Jenkins任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00');
|
||||
|
||||
ALTER TABLE `zt_integration`
|
||||
CHANGE `jenkins` `jkHost` mediumint(8) unsigned NOT NULL AFTER `repo`,
|
||||
CHANGE `jenkinsJob` `jkJob` varchar(500) COLLATE 'utf8_general_ci' NOT NULL AFTER `jkHost`,
|
||||
CHANGE `svnFolder` `svnDir` varchar(255) COLLATE 'utf8_general_ci' NOT NULL AFTER `triggerType`,
|
||||
CHANGE `scheduleDay` `atDay` varchar(20) COLLATE 'utf8_general_ci' NULL AFTER `svnDir`,
|
||||
ADD `atTime` varchar(10) COLLATE 'utf8_general_ci' NULL AFTER `atDay`,
|
||||
DROP `tagKeywords`,
|
||||
DROP `commentKeywords`,
|
||||
ADD `comment` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `atTime`,
|
||||
ADD `lastTag` varchar(255) COLLATE 'utf8_general_ci' NULL;
|
||||
|
||||
ALTER TABLE `zt_webhook` MODIFY COLUMN `type` varchar(15) NOT NULL;
|
||||
ALTER TABLE `zt_webhook` MODIFY COLUMN `type` varchar(15) NOT NULL DEFAULT 'default';
|
||||
UPDATE `zt_webhook` SET `type` = 'dinggroup' WHERE `type` = 'dingding';
|
||||
UPDATE `zt_webhook` SET `type` = 'dinguser' WHERE `type` = 'dingapi';
|
||||
UPDATE `zt_webhook` SET `type` = 'wechatgroup' WHERE `type` = 'weixin';
|
||||
UPDATE `zt_grouppriv` SET `method` = 'edit' WHERE `module` = 'repo' AND `method` = 'settings';
|
||||
UPDATE `zt_grouppriv` SET `method` = 'showsynccommit' WHERE `module` = 'repo' AND `method` = 'showsynccomment';
|
||||
|
||||
ALTER TABLE `zt_compile`
|
||||
CHANGE `cijob` `integration` mediumint(8) unsigned NOT NULL AFTER `name`,
|
||||
CHANGE `queueItem` `queue` mediumint(8) NOT NULL AFTER `integration`;
|
||||
|
||||
ALTER TABLE `zt_jenkins` CHANGE `serviceUrl` `url` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `name`;
|
||||
ALTER TABLE `zt_jenkins` DROP `encrypt`;
|
||||
|
||||
ALTER TABLE `zt_compile` ADD `atTime` varchar(10) COLLATE 'utf8_general_ci' NULL AFTER `logs`;
|
||||
ALTER TABLE `zt_compile` ADD `tag` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `logs`;
|
||||
ALTER TABLE `zt_integration` RENAME TO `zt_job`;
|
||||
ALTER TABLE `zt_compile` CHANGE `integration` `job` mediumint(8) unsigned NOT NULL AFTER `name`;
|
||||
UPDATE `zt_grouppriv` SET `method` = 'showsynccommit' WHERE `module` = 'repo' AND `method` = 'showSyncComment';
|
||||
|
||||
+171
-23
@@ -217,10 +217,12 @@ CREATE TABLE IF NOT EXISTS `zt_company` (
|
||||
CREATE TABLE IF NOT EXISTS `zt_compile` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`integration` mediumint(8) unsigned NOT NULL,
|
||||
`job` mediumint(8) unsigned NOT NULL,
|
||||
`queue` mediumint(8) NOT NULL,
|
||||
`status` varchar(255) NOT NULL,
|
||||
`logs` text,
|
||||
`atTime` varchar(10) NOT NULL,
|
||||
`tag` varchar(255) NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`updateDate` datetime NOT NULL,
|
||||
@@ -422,27 +424,6 @@ CREATE TABLE IF NOT EXISTS `zt_history` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `action` (`action`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_integration`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_integration` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
`jenkins` mediumint(8) unsigned NOT NULL,
|
||||
`jenkinsJob` varchar(500) NOT NULL,
|
||||
`triggerType` varchar(255) NOT NULL,
|
||||
`svnFolder` varchar(255) NOT NULL,
|
||||
`scheduleDay` varchar(255) DEFAULT NULL,
|
||||
`tagKeywords` varchar(255) DEFAULT NULL,
|
||||
`commentKeywords` varchar(255) DEFAULT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`lastExec` datetime DEFAULT NULL,
|
||||
`lastStatus` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_jenkins`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_jenkins` (
|
||||
`id` smallint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
@@ -458,6 +439,28 @@ CREATE TABLE IF NOT EXISTS `zt_jenkins` (
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_job`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_job` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
`jkHost` mediumint(8) unsigned NOT NULL,
|
||||
`jkJob` varchar(500) NOT NULL,
|
||||
`triggerType` varchar(255) NOT NULL,
|
||||
`svnDir` varchar(255) NOT NULL,
|
||||
`atDay` varchar(255) DEFAULT NULL,
|
||||
`atTime` varchar(10) DEFAULT NULL,
|
||||
`comment` varchar(255) DEFAULT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`lastExec` datetime DEFAULT NULL,
|
||||
`lastStatus` varchar(255) DEFAULT NULL,
|
||||
`lastTag` varchar(255) DEFAULT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_module`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_module` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -1044,7 +1047,7 @@ CREATE TABLE IF NOT EXISTS `zt_entry` (
|
||||
-- DROP TABLE IF EXISTS `zt_webhook`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_webhook` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`type` varchar(10) NOT NULL DEFAULT 'default',
|
||||
`type` varchar(15) NOT NULL DEFAULT 'default',
|
||||
`name` varchar(50) NOT NULL,
|
||||
`url` varchar(255) NOT NULL,
|
||||
`domain` varchar(255) NOT NULL,
|
||||
@@ -1116,6 +1119,23 @@ CREATE TABLE IF NOT EXISTS `zt_repo` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_relation`;
|
||||
CREATE TABLE `zt_relation` (
|
||||
`id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`program` mediumint(8) NOT NULL,
|
||||
`product` mediumint(8) NOT NULL,
|
||||
`project` mediumint(8) NOT NULL,
|
||||
`AType` char(30) NOT NULL,
|
||||
`AID` mediumint(8) NOT NULL,
|
||||
`AVersion` char(30) NOT NULL,
|
||||
`relation` char(30) NOT NULL,
|
||||
`BType` char(30) NOT NULL,
|
||||
`BID` mediumint(8) NOT NULL,
|
||||
`BVersion` char(30) NOT NULL,
|
||||
`extra` char(30) NOT NULL,
|
||||
UNIQUE KEY `relation` (`relation`,`AType`,`BType`, `AID`, `BID`)
|
||||
) ENGINE='MyISAM' DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_repobranch`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_repobranch` (
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
@@ -1422,6 +1442,30 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1, 'release', 'unlinkStory'),
|
||||
(1, 'release', 'view'),
|
||||
(1, 'release', 'changeStatus'),
|
||||
(1, 'repo', 'view'),
|
||||
(1, 'repo', 'blame'),
|
||||
(1, 'repo', 'revision'),
|
||||
(1, 'repo', 'showSyncCommit'),
|
||||
(1, 'repo', 'download'),
|
||||
(1, 'repo', 'browse'),
|
||||
(1, 'repo', 'diff'),
|
||||
(1, 'repo', 'log'),
|
||||
(1, 'repo', 'maintain'),
|
||||
(1, 'repo', 'setRules'),
|
||||
(1, 'repo', 'create'),
|
||||
(1, 'repo', 'edit'),
|
||||
(1, 'repo', 'delete'),
|
||||
(1, 'compile', 'browse'),
|
||||
(1, 'compile', 'logs'),
|
||||
(1, 'jenkins', 'browse'),
|
||||
(1, 'jenkins', 'create'),
|
||||
(1, 'jenkins', 'edit'),
|
||||
(1, 'jenkins', 'delete'),
|
||||
(1, 'job', 'browse'),
|
||||
(1, 'job', 'create'),
|
||||
(1, 'job', 'edit'),
|
||||
(1, 'job', 'delete'),
|
||||
(1, 'job', 'exec'),
|
||||
(1, 'report', 'bugAssign'),
|
||||
(1, 'report', 'bugCreate'),
|
||||
(1, 'report', 'index'),
|
||||
@@ -1693,6 +1737,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(2, 'release', 'browse'),
|
||||
(2, 'release', 'export'),
|
||||
(2, 'release', 'view'),
|
||||
(2, 'repo', 'view'),
|
||||
(2, 'repo', 'blame'),
|
||||
(2, 'repo', 'revision'),
|
||||
(2, 'repo', 'showSyncCommit'),
|
||||
(2, 'repo', 'download'),
|
||||
(2, 'repo', 'browse'),
|
||||
(2, 'repo', 'diff'),
|
||||
(2, 'repo', 'log'),
|
||||
(2, 'report', 'bugAssign'),
|
||||
(2, 'report', 'bugCreate'),
|
||||
(2, 'report', 'index'),
|
||||
@@ -1879,6 +1931,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(3, 'release', 'browse'),
|
||||
(3, 'release', 'export'),
|
||||
(3, 'release', 'view'),
|
||||
(3, 'repo', 'view'),
|
||||
(3, 'repo', 'blame'),
|
||||
(3, 'repo', 'revision'),
|
||||
(3, 'repo', 'showSyncCommit'),
|
||||
(3, 'repo', 'download'),
|
||||
(3, 'repo', 'browse'),
|
||||
(3, 'repo', 'diff'),
|
||||
(3, 'repo', 'log'),
|
||||
(3, 'report', 'bugAssign'),
|
||||
(3, 'report', 'bugCreate'),
|
||||
(3, 'report', 'index'),
|
||||
@@ -2142,6 +2202,30 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(4, 'release', 'browse'),
|
||||
(4, 'release', 'export'),
|
||||
(4, 'release', 'view'),
|
||||
(4, 'repo', 'view'),
|
||||
(4, 'repo', 'blame'),
|
||||
(4, 'repo', 'revision'),
|
||||
(4, 'repo', 'showSyncCommit'),
|
||||
(4, 'repo', 'download'),
|
||||
(4, 'repo', 'browse'),
|
||||
(4, 'repo', 'diff'),
|
||||
(4, 'repo', 'log'),
|
||||
(4, 'repo', 'create'),
|
||||
(4, 'repo', 'edit'),
|
||||
(4, 'repo', 'delete'),
|
||||
(4, 'repo', 'maintain'),
|
||||
(4, 'repo', 'setRules'),
|
||||
(4, 'compile', 'browse'),
|
||||
(4, 'compile', 'logs'),
|
||||
(4, 'jenkins', 'browse'),
|
||||
(4, 'jenkins', 'create'),
|
||||
(4, 'jenkins', 'edit'),
|
||||
(4, 'jenkins', 'delete'),
|
||||
(4, 'job', 'browse'),
|
||||
(4, 'job', 'create'),
|
||||
(4, 'job', 'edit'),
|
||||
(4, 'job', 'delete'),
|
||||
(4, 'job', 'exec'),
|
||||
(4, 'report', 'bugAssign'),
|
||||
(4, 'report', 'bugCreate'),
|
||||
(4, 'report', 'index'),
|
||||
@@ -2400,6 +2484,30 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5, 'release', 'unlinkStory'),
|
||||
(5, 'release', 'view'),
|
||||
(5, 'release', 'changeStatus'),
|
||||
(5, 'repo', 'view'),
|
||||
(5, 'repo', 'blame'),
|
||||
(5, 'repo', 'revision'),
|
||||
(5, 'repo', 'showSyncCommit'),
|
||||
(5, 'repo', 'download'),
|
||||
(5, 'repo', 'browse'),
|
||||
(5, 'repo', 'diff'),
|
||||
(5, 'repo', 'log'),
|
||||
(5, 'repo', 'create'),
|
||||
(5, 'repo', 'edit'),
|
||||
(5, 'repo', 'delete'),
|
||||
(5, 'repo', 'maintain'),
|
||||
(5, 'repo', 'setRules'),
|
||||
(5, 'compile', 'browse'),
|
||||
(5, 'compile', 'logs'),
|
||||
(5, 'jenkins', 'browse'),
|
||||
(5, 'jenkins', 'create'),
|
||||
(5, 'jenkins', 'edit'),
|
||||
(5, 'jenkins', 'delete'),
|
||||
(5, 'job', 'browse'),
|
||||
(5, 'job', 'create'),
|
||||
(5, 'job', 'edit'),
|
||||
(5, 'job', 'delete'),
|
||||
(5, 'job', 'exec'),
|
||||
(5, 'report', 'bugAssign'),
|
||||
(5, 'report', 'bugCreate'),
|
||||
(5, 'report', 'index'),
|
||||
@@ -2646,6 +2754,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(6, 'release', 'browse'),
|
||||
(6, 'release', 'export'),
|
||||
(6, 'release', 'view'),
|
||||
(6, 'repo', 'view'),
|
||||
(6, 'repo', 'blame'),
|
||||
(6, 'repo', 'revision'),
|
||||
(6, 'repo', 'showSyncCommit'),
|
||||
(6, 'repo', 'download'),
|
||||
(6, 'repo', 'browse'),
|
||||
(6, 'repo', 'diff'),
|
||||
(6, 'repo', 'log'),
|
||||
(6, 'report', 'bugAssign'),
|
||||
(6, 'report', 'bugCreate'),
|
||||
(6, 'report', 'index'),
|
||||
@@ -2885,6 +3001,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(7, 'release', 'unlinkStory'),
|
||||
(7, 'release', 'view'),
|
||||
(7, 'release', 'changeStatus'),
|
||||
(7, 'repo', 'view'),
|
||||
(7, 'repo', 'blame'),
|
||||
(7, 'repo', 'revision'),
|
||||
(7, 'repo', 'showSyncCommit'),
|
||||
(7, 'repo', 'download'),
|
||||
(7, 'repo', 'browse'),
|
||||
(7, 'repo', 'diff'),
|
||||
(7, 'repo', 'log'),
|
||||
(7, 'report', 'bugAssign'),
|
||||
(7, 'report', 'bugCreate'),
|
||||
(7, 'report', 'index'),
|
||||
@@ -3107,6 +3231,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(8, 'release', 'browse'),
|
||||
(8, 'release', 'export'),
|
||||
(8, 'release', 'view'),
|
||||
(8, 'repo', 'view'),
|
||||
(8, 'repo', 'blame'),
|
||||
(8, 'repo', 'revision'),
|
||||
(8, 'repo', 'showSyncCommit'),
|
||||
(8, 'repo', 'download'),
|
||||
(8, 'repo', 'browse'),
|
||||
(8, 'repo', 'diff'),
|
||||
(8, 'repo', 'log'),
|
||||
(8, 'report', 'bugAssign'),
|
||||
(8, 'report', 'bugCreate'),
|
||||
(8, 'report', 'index'),
|
||||
@@ -3347,6 +3479,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(9, 'release', 'browse'),
|
||||
(9, 'release', 'export'),
|
||||
(9, 'release', 'view'),
|
||||
(9, 'repo', 'view'),
|
||||
(9, 'repo', 'blame'),
|
||||
(9, 'repo', 'revision'),
|
||||
(9, 'repo', 'showSyncCommit'),
|
||||
(9, 'repo', 'download'),
|
||||
(9, 'repo', 'browse'),
|
||||
(9, 'repo', 'diff'),
|
||||
(9, 'repo', 'log'),
|
||||
(9, 'report', 'bugAssign'),
|
||||
(9, 'report', 'bugCreate'),
|
||||
(9, 'report', 'index'),
|
||||
@@ -3490,6 +3630,14 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(10, 'qa', 'index'),
|
||||
(10, 'release', 'browse'),
|
||||
(10, 'release', 'view'),
|
||||
(10, 'repo', 'view'),
|
||||
(10, 'repo', 'blame'),
|
||||
(10, 'repo', 'revision'),
|
||||
(10, 'repo', 'showSyncCommit'),
|
||||
(10, 'repo', 'download'),
|
||||
(10, 'repo', 'browse'),
|
||||
(10, 'repo', 'diff'),
|
||||
(10, 'repo', 'log'),
|
||||
(10, 'report', 'bugAssign'),
|
||||
(10, 'report', 'bugCreate'),
|
||||
(10, 'report', 'index'),
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
2020-03-10 12.1
|
||||
完成的需求:
|
||||
4594 调整浏览代码时版本表头的对齐
|
||||
4595 代码浏览文件全屏之后按钮应是缩回按钮
|
||||
4598 svn封装获取某一个目录下面目录和文件列表的功能
|
||||
4243 实现禅道消息到企业微信个人的通知
|
||||
4593 附件输出方式改为边读边下
|
||||
4586 提醒的宽度太宽了
|
||||
4585 备份列表的表头对齐
|
||||
修复的Bug
|
||||
2893 与钉钉集成的性能需要优化
|
||||
2965 卸载插件文件无法删除
|
||||
2968 后台数据页面无法展示展示
|
||||
|
||||
2020-02-12 12.0.1
|
||||
完成的需求:
|
||||
4588 添加需求、任务、bug、用例之后能够记录所属模块
|
||||
|
||||
@@ -136,6 +136,8 @@ class router extends baseRouter
|
||||
if($setting->key == 'hourPoint') $hourCommon = $setting->value;
|
||||
}
|
||||
|
||||
$config->storyCommon = $storyCommon;
|
||||
|
||||
/* Set productCommon, projectCommon, storyCommon and hourCommon. Default english lang. */
|
||||
$lang->productCommon = isset($this->config->productCommonList[$this->clientLang][(int)$productCommon]) ? $this->config->productCommonList[$this->clientLang][(int)$productCommon] : $this->config->productCommonList['en'][(int)$productCommon];
|
||||
$lang->projectCommon = isset($this->config->projectCommonList[$this->clientLang][(int)$projectCommon]) ? $this->config->projectCommonList[$this->clientLang][(int)$projectCommon] : $this->config->projectCommonList['en'][(int)$projectCommon];
|
||||
|
||||
@@ -104,13 +104,14 @@ class Subversion
|
||||
}
|
||||
|
||||
ksort($dirs);
|
||||
$tags = array();
|
||||
$tags = array();
|
||||
$prefix = empty(trim($path, '/')) ? '/' : '/' . trim($path, '/') . '/';
|
||||
foreach($dirs as $dirNames)
|
||||
{
|
||||
ksort($dirNames);
|
||||
foreach($dirNames as $dirName)
|
||||
{
|
||||
$dirPath = $path . '/' . $dirName;
|
||||
$dirPath = $prefix . $dirName;
|
||||
$tags[$dirPath] = $dirName;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -503,7 +503,14 @@ class actionModel extends model
|
||||
if(empty($actionID)) return false;
|
||||
foreach($changes as $change)
|
||||
{
|
||||
$change['action'] = $actionID;
|
||||
if(is_object($change))
|
||||
{
|
||||
$change->action = $actionID;
|
||||
}
|
||||
else
|
||||
{
|
||||
$change['action'] = $actionID;
|
||||
}
|
||||
$this->dao->insert(TABLE_HISTORY)->data($change)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ $lang->bug->lblLastEdited = '最後修改';
|
||||
$lang->bug->lblResolved = '由誰解決';
|
||||
$lang->bug->allUsers = '加載所有用戶';
|
||||
$lang->bug->allBuilds = '所有';
|
||||
$lang->bug->createBuild = '创建';
|
||||
$lang->bug->createBuild = '創建';
|
||||
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
|
||||
$lang->ci->job = 'Construction';
|
||||
$lang->ci->task = 'Task';
|
||||
$lang->ci->history = 'History';
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
$lang->ci->common = 'CI';
|
||||
|
||||
$lang->ci->job = 'Construction';
|
||||
$lang->ci->task = 'Task';
|
||||
$lang->ci->history = 'History';
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
$lang->ci->common = '持續整合';
|
||||
|
||||
$lang->ci->job = '構建';
|
||||
$lang->ci->task = '構建任務';
|
||||
$lang->ci->history = '構建歷史';
|
||||
@@ -37,6 +37,7 @@ class ciModel extends model
|
||||
->leftJoin(TABLE_JENKINS)->alias('t3')->on('t2.jkHost=t3.id')
|
||||
->where('t1.status')->ne('success')
|
||||
->andWhere('t1.status')->ne('fail')
|
||||
->andWhere('t1.status')->ne('create_fail')
|
||||
->andWhere('t1.status')->ne('timeout')
|
||||
->andWhere('t1.createdDate')->gt(date(DT_DATETIME1, strtotime("-1 day")))
|
||||
->fetchAll();
|
||||
|
||||
@@ -101,6 +101,7 @@ $lang->loading = 'Lade...';
|
||||
$lang->notFound = 'Nicht gefunden!';
|
||||
$lang->notPage = 'Sorry, the features you are visiting are in development!';
|
||||
$lang->showAll = '[[Alle anzeigen]]';
|
||||
$lang->selectedItems = 'Seleted <strong>{0}</strong> items';
|
||||
|
||||
$lang->future = 'Warte';
|
||||
$lang->year = 'Jahr';
|
||||
@@ -122,7 +123,7 @@ $lang->menu->my = '<span>Dashboard</span>|my|index';
|
||||
$lang->menu->product = $lang->productCommon . '|product|index|locate=no';
|
||||
$lang->menu->project = $lang->projectCommon . '|project|index|locate=no';
|
||||
$lang->menu->qa = 'Test|qa|index';
|
||||
$lang->menu->repo = 'Code|repo|log';
|
||||
$lang->menu->ci = 'CI|repo|browse';
|
||||
$lang->menu->doc = 'Dokumente|doc|index';
|
||||
$lang->menu->report = 'Berichte|report|index';
|
||||
$lang->menu->company = 'Unternehmen|company|index';
|
||||
@@ -331,11 +332,22 @@ $lang->caselib->menu->testsuite = array('link' => 'Suite|testsuite|browse|');
|
||||
$lang->caselib->menu->report = array('link' => 'Berichte|testreport|browse|');
|
||||
$lang->caselib->menu->caselib = array('link' => 'Bibliothek|caselib|browse|libID=%s', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->repo->menu = new stdclass();
|
||||
$lang->repo->menu->browse = array('link' =>'Browse|repo|log|repoID=%s&entry=', 'alias' => 'diff,view,revision,showsynccomment');
|
||||
$lang->repo->menu->settings = 'Settings|repo|settings|repoID=%s';
|
||||
$lang->repo->menu->delete = array('link' => 'Delete|repo|delete|repoID=%s', 'target' => 'hiddenwin');
|
||||
$lang->ci = new stdclass();
|
||||
$lang->ci->menu = new stdclass();
|
||||
$lang->ci->menu->code = array('link' => 'Code|repo|browse|repoID=%s', 'alias' => 'diff,view,revision,log,blame,showsynccomment');
|
||||
$lang->ci->menu->build = array('link' => 'Build|job|browse', 'subModule' => 'compile,job');
|
||||
$lang->ci->menu->jenkins = array('link' => 'Jenkins|jenkins|browse', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->maintain = array('link' => 'Repo|repo|maintain', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->rules = array('link' => 'Rule|repo|setrules');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->jenkins = new stdclass();
|
||||
$lang->compile = new stdclass();
|
||||
$lang->job = new stdclass();
|
||||
$lang->repo->menu = $lang->ci->menu;
|
||||
$lang->jenkins->menu = $lang->ci->menu;
|
||||
$lang->compile->menu = $lang->ci->menu;
|
||||
$lang->job->menu = $lang->ci->menu;
|
||||
|
||||
/* 文档视图菜单设置。*/
|
||||
$lang->doc = new stdclass();
|
||||
@@ -475,6 +487,11 @@ $lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
|
||||
$lang->menugroup->repo = 'ci';
|
||||
$lang->menugroup->jenkins = 'ci';
|
||||
$lang->menugroup->compile = 'ci';
|
||||
$lang->menugroup->job = 'ci';
|
||||
|
||||
/* 错误提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "The domain %s cannot be found!";
|
||||
@@ -501,6 +518,7 @@ $lang->error->pasteImg = 'Image is not allowed to be pasted in your brows
|
||||
$lang->error->noData = 'No Data';
|
||||
$lang->error->editedByOther = 'This record might have been changed. Please refresh and try to edit again!';
|
||||
$lang->error->tutorialData = 'No data can be imported in tutorial mode. Please exit tutorial first!';
|
||||
$lang->error->noCurlExt = 'No Curl module installed';
|
||||
|
||||
/* 分页信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
|
||||
@@ -487,8 +487,10 @@ $lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
|
||||
$lang->menugroup->repo = 'ci';
|
||||
$lang->menugroup->jenkins = 'ci';
|
||||
$lang->menugroup->repo = 'ci';
|
||||
$lang->menugroup->jenkins = 'ci';
|
||||
$lang->menugroup->compile = 'ci';
|
||||
$lang->menugroup->job = 'ci';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
|
||||
@@ -101,6 +101,7 @@ $lang->loading = 'Chargement...';
|
||||
$lang->notFound = 'Not found !';
|
||||
$lang->notPage = 'Désolé, la fonctionnalité que vous souhaitez utiliser est encore en développement !';
|
||||
$lang->showAll = '[[Voir Tout]]';
|
||||
$lang->selectedItems = 'Seleted <strong>{0}</strong> items';
|
||||
|
||||
$lang->future = 'En Attente';
|
||||
$lang->year = 'Année';
|
||||
@@ -122,7 +123,7 @@ $lang->menu->my = '<span>Dashboard</span>|my|index';
|
||||
$lang->menu->product = $lang->productCommon . '|product|index|locate=no';
|
||||
$lang->menu->project = $lang->projectCommon . '|project|index|locate=no';
|
||||
$lang->menu->qa = 'Test|qa|index';
|
||||
$lang->menu->repo = 'Code|repo|log';
|
||||
$lang->menu->ci = 'CI|repo|browse';
|
||||
$lang->menu->doc = 'Doc|doc|index';
|
||||
$lang->menu->report = 'Rapports|report|index';
|
||||
$lang->menu->company = 'Entreprise|company|index';
|
||||
@@ -331,11 +332,22 @@ $lang->caselib->menu->testsuite = array('link' => 'Cahier Recette|testsuite|brow
|
||||
$lang->caselib->menu->report = array('link' => 'Rapport|testreport|browse|');
|
||||
$lang->caselib->menu->caselib = array('link' => 'Library Recette|caselib|browse|libID=%s', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->repo->menu = new stdclass();
|
||||
$lang->repo->menu->browse = array('link' =>'Browse|repo|log|repoID=%s&entry=', 'alias' => 'diff,view,revision,showsynccomment');
|
||||
$lang->repo->menu->settings = 'Settings|repo|settings|repoID=%s';
|
||||
$lang->repo->menu->delete = array('link' => 'Delete|repo|delete|repoID=%s', 'target' => 'hiddenwin');
|
||||
$lang->ci = new stdclass();
|
||||
$lang->ci->menu = new stdclass();
|
||||
$lang->ci->menu->code = array('link' => 'Code|repo|browse|repoID=%s', 'alias' => 'diff,view,revision,log,blame,showsynccomment');
|
||||
$lang->ci->menu->build = array('link' => 'Build|job|browse', 'subModule' => 'compile,job');
|
||||
$lang->ci->menu->jenkins = array('link' => 'Jenkins|jenkins|browse', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->maintain = array('link' => 'Repo|repo|maintain', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->rules = array('link' => 'Rule|repo|setrules');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->jenkins = new stdclass();
|
||||
$lang->compile = new stdclass();
|
||||
$lang->job = new stdclass();
|
||||
$lang->repo->menu = $lang->ci->menu;
|
||||
$lang->jenkins->menu = $lang->ci->menu;
|
||||
$lang->compile->menu = $lang->ci->menu;
|
||||
$lang->job->menu = $lang->ci->menu;
|
||||
|
||||
/* Doc menu settings. */
|
||||
$lang->doc = new stdclass();
|
||||
@@ -475,6 +487,11 @@ $lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
|
||||
$lang->menugroup->repo = 'ci';
|
||||
$lang->menugroup->jenkins = 'ci';
|
||||
$lang->menugroup->compile = 'ci';
|
||||
$lang->menugroup->job = 'ci';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "The domain %s cannot be found!";
|
||||
@@ -501,6 +518,7 @@ $lang->error->pasteImg = 'Images are not allowed to be pasted in your bro
|
||||
$lang->error->noData = 'No data.';
|
||||
$lang->error->editedByOther = 'This record might have been changed. Please refresh and try to edit again!';
|
||||
$lang->error->tutorialData = 'No data can be imported in tutorial mode. Please quit tutorial first!';
|
||||
$lang->error->noCurlExt = 'No Curl module installed';
|
||||
|
||||
/* Page info. */
|
||||
$lang->pager = new stdclass();
|
||||
|
||||
@@ -101,6 +101,7 @@ $lang->loading = '稍候...';
|
||||
$lang->notFound = '抱歉,您訪問的對象並不存在!';
|
||||
$lang->notPage = '抱歉,您訪問的功能正在開發中!';
|
||||
$lang->showAll = '[[全部顯示]]';
|
||||
$lang->selectedItems = '已選擇 <strong>{0}</strong> 項';
|
||||
|
||||
$lang->future = '未來';
|
||||
$lang->year = '年';
|
||||
@@ -122,7 +123,7 @@ $lang->menu->my = '<span> 我的地盤</span>|my|index';
|
||||
$lang->menu->product = $lang->productCommon . '|product|index|locate=no';
|
||||
$lang->menu->project = $lang->projectCommon . '|project|index|locate=no';
|
||||
$lang->menu->qa = '測試|qa|index';
|
||||
$lang->menu->repo = '代碼|repo|log';
|
||||
$lang->menu->ci = '整合|repo|browse';
|
||||
$lang->menu->doc = '文檔|doc|index';
|
||||
$lang->menu->report = '統計|report|index';
|
||||
$lang->menu->company = '組織|company|index';
|
||||
@@ -331,11 +332,22 @@ $lang->caselib->menu->testsuite = array('link' => '套件|testsuite|browse|');
|
||||
$lang->caselib->menu->report = array('link' => '報告|testreport|browse|');
|
||||
$lang->caselib->menu->caselib = array('link' => '用例庫|caselib|browse|libID=%s', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->repo->menu = new stdclass();
|
||||
$lang->repo->menu->browse = array('link' =>'瀏覽|repo|log|repoID=%s&entry=', 'alias' => 'diff,view,revision,showsynccomment');
|
||||
$lang->repo->menu->settings = '設置|repo|settings|repoID=%s';
|
||||
$lang->repo->menu->delete = array('link' => '刪除|repo|delete|repoID=%s', 'target' => 'hiddenwin');
|
||||
$lang->ci = new stdclass();
|
||||
$lang->ci->menu = new stdclass();
|
||||
$lang->ci->menu->code = array('link' => '代碼|repo|browse|repoID=%s', 'alias' => 'diff,view,revision,log,blame,showsynccomment');
|
||||
$lang->ci->menu->build = array('link' => '構建|job|browse', 'subModule' => 'compile,job');
|
||||
$lang->ci->menu->jenkins = array('link' => 'Jenkins|jenkins|browse', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->maintain = array('link' => '版本庫|repo|maintain', 'alias' => 'create,edit');
|
||||
$lang->ci->menu->rules = array('link' => '指令|repo|setrules');
|
||||
|
||||
$lang->repo = new stdclass();
|
||||
$lang->jenkins = new stdclass();
|
||||
$lang->compile = new stdclass();
|
||||
$lang->job = new stdclass();
|
||||
$lang->repo->menu = $lang->ci->menu;
|
||||
$lang->jenkins->menu = $lang->ci->menu;
|
||||
$lang->compile->menu = $lang->ci->menu;
|
||||
$lang->job->menu = $lang->ci->menu;
|
||||
|
||||
/* 文檔視圖菜單設置。*/
|
||||
$lang->doc = new stdclass();
|
||||
@@ -381,7 +393,7 @@ $lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => '首頁|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->message = array('link' => '通知|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => '自定義|custom|set', 'subModule' => 'custom');
|
||||
$lang->admin->menu->sso = array('link' => '整合|admin|sso');
|
||||
$lang->admin->menu->sso = array('link' => '整合|admin|sso', 'subModule' => '');
|
||||
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => '二次開發|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry');
|
||||
$lang->admin->menu->translate = array('link' => '翻譯|dev|translate');
|
||||
@@ -475,6 +487,11 @@ $lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
|
||||
$lang->menugroup->repo = 'ci';
|
||||
$lang->menugroup->jenkins = 'ci';
|
||||
$lang->menugroup->compile = 'ci';
|
||||
$lang->menugroup->job = 'ci';
|
||||
|
||||
/* 錯誤提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
|
||||
@@ -501,6 +518,7 @@ $lang->error->pasteImg = '您的瀏覽器不支持粘貼圖片!';
|
||||
$lang->error->noData = '沒有數據';
|
||||
$lang->error->editedByOther = '該記錄可能已經被改動。請刷新頁面重新編輯!';
|
||||
$lang->error->tutorialData = '新手模式下不會插入數據,請退出新手模式操作';
|
||||
$lang->error->noCurlExt = '伺服器未安裝Curl模組。';
|
||||
|
||||
/* 分頁信息。*/
|
||||
$lang->pager = new stdclass();
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
$lang->compile->common = 'Build';
|
||||
$lang->compile->browse = 'Build Histories';
|
||||
$lang->compile->logs = 'Build Logs';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = 'Name';
|
||||
$lang->compile->status = 'Build Status';
|
||||
$lang->compile->time = 'Build Time';
|
||||
|
||||
$lang->compile->statusList['success'] = 'Success';
|
||||
$lang->compile->statusList['failure'] = 'Fail';
|
||||
$lang->compile->statusList['created'] = 'Created';
|
||||
$lang->compile->statusList['building'] = 'Building';
|
||||
$lang->compile->statusList['create_fail'] = 'Fail to create';
|
||||
$lang->compile->statusList['timeout'] = 'Exec Timeout';
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
$lang->compile->common = 'Build';
|
||||
$lang->compile->browse = 'Build History';
|
||||
$lang->compile->logs = 'Build Log';
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
$lang->compile->common = 'Build';
|
||||
$lang->compile->browse = 'Build Histories';
|
||||
$lang->compile->logs = 'Build Logs';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = 'Name';
|
||||
$lang->compile->status = 'Build Status';
|
||||
$lang->compile->time = 'Build Time';
|
||||
|
||||
$lang->compile->statusList['success'] = 'Success';
|
||||
$lang->compile->statusList['failure'] = 'Fail';
|
||||
$lang->compile->statusList['created'] = 'Created';
|
||||
$lang->compile->statusList['building'] = 'Building';
|
||||
$lang->compile->statusList['create_fail'] = 'Fail to create';
|
||||
$lang->compile->statusList['timeout'] = 'Exec Timeout';
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
$lang->compile->common = '构建';
|
||||
$lang->compile->browse = '构建历史';
|
||||
$lang->compile->logs = '构建日志';
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
$lang->compile->common = '構建';
|
||||
$lang->compile->browse = '構建歷史';
|
||||
$lang->compile->logs = '構建日誌';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = '構建名稱';
|
||||
$lang->compile->status = '構建狀態';
|
||||
$lang->compile->time = '構建時間';
|
||||
|
||||
$lang->compile->statusList['success'] = '成功';
|
||||
$lang->compile->statusList['failure'] = '失敗';
|
||||
$lang->compile->statusList['created'] = '新建';
|
||||
$lang->compile->statusList['building'] = '構建中';
|
||||
$lang->compile->statusList['create_fail'] = '創建失敗';
|
||||
$lang->compile->statusList['timeout'] = '執行超時';
|
||||
+19
-7
@@ -95,7 +95,11 @@ class gitModel extends model
|
||||
|
||||
$lastInDB = $this->repo->getLatestCommit($repoID);
|
||||
/* Ignore unsynced branch. */
|
||||
if(empty($lastInDB)) continue;
|
||||
if(empty($lastInDB))
|
||||
{
|
||||
$this->printLog("Please init repo {$repo->name}");
|
||||
continue;
|
||||
}
|
||||
|
||||
$commits = $repo->commits;
|
||||
$version = $lastInDB->commit;
|
||||
@@ -115,7 +119,7 @@ class gitModel extends model
|
||||
if($objects)
|
||||
{
|
||||
$this->printLog('extract' .
|
||||
'task:' . join(' ', $objects['tasks']) .
|
||||
' task:' . join(' ', $objects['tasks']) .
|
||||
' bug:' . join(',', $objects['bugs']));
|
||||
|
||||
$this->repo->saveAction2PMS($objects, $log, $this->repoRoot, $repo->encoding, 'git');
|
||||
@@ -148,14 +152,22 @@ class gitModel extends model
|
||||
$jobs = zget($tagGroup, $repoID, array());
|
||||
foreach($jobs as $job)
|
||||
{
|
||||
$tags = $this->getRepoTags($repo);
|
||||
end($tags);
|
||||
$lastTag = current($tags);
|
||||
if($lastTag != $job->lastTag)
|
||||
$tags = $this->getRepoTags($repo);
|
||||
$isNew = false;
|
||||
$lastTag = '';
|
||||
foreach($tags as $tag)
|
||||
{
|
||||
if($tag == $job->lastTag)
|
||||
{
|
||||
$isNew = true;
|
||||
continue;
|
||||
}
|
||||
if(!$isNew) continue;
|
||||
|
||||
$lastTag = $tag;
|
||||
$this->compile->createByJob($job->id, $lastTag, 'tag');
|
||||
$this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($job->id)->exec();
|
||||
}
|
||||
if($lastTag) $this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($job->id)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -693,6 +693,53 @@ $lang->resource->repo->delete = 'delete';
|
||||
$lang->resource->repo->showSyncCommit = 'showSyncCommit';
|
||||
$lang->resource->repo->diff = 'diffAction';
|
||||
$lang->resource->repo->download = 'download';
|
||||
$lang->resource->repo->maintain = 'maintain';
|
||||
$lang->resource->repo->setRules = 'setRules';
|
||||
|
||||
$lang->repo->methodOrder[5] = 'create';
|
||||
$lang->repo->methodOrder[10] = 'edit';
|
||||
$lang->repo->methodOrder[15] = 'delete';
|
||||
$lang->repo->methodOrder[20] = 'showSyncCommit';
|
||||
$lang->repo->methodOrder[25] = 'maintain';
|
||||
$lang->repo->methodOrder[30] = 'browse';
|
||||
$lang->repo->methodOrder[35] = 'view';
|
||||
$lang->repo->methodOrder[40] = 'diff';
|
||||
$lang->repo->methodOrder[45] = 'log';
|
||||
$lang->repo->methodOrder[50] = 'revision';
|
||||
$lang->repo->methodOrder[55] = 'blame';
|
||||
$lang->repo->methodOrder[60] = 'download';
|
||||
$lang->repo->methodOrder[65] = 'setRules';
|
||||
|
||||
$lang->resource->compile = new stdclass();
|
||||
$lang->resource->compile->browse = 'browse';
|
||||
$lang->resource->compile->logs = 'logs';
|
||||
|
||||
$lang->compile->methodOrder[5] = 'browse';
|
||||
$lang->compile->methodOrder[10] = 'logs';
|
||||
|
||||
$lang->resource->jenkins = new stdclass();
|
||||
$lang->resource->jenkins->browse = 'browse';
|
||||
$lang->resource->jenkins->create = 'create';
|
||||
$lang->resource->jenkins->edit = 'edit';
|
||||
$lang->resource->jenkins->delete = 'delete';
|
||||
|
||||
$lang->jenkins->methodOrder[5] = 'browse';
|
||||
$lang->jenkins->methodOrder[10] = 'create';
|
||||
$lang->jenkins->methodOrder[15] = 'edit';
|
||||
$lang->jenkins->methodOrder[20] = 'delete';
|
||||
|
||||
$lang->resource->job = new stdclass();
|
||||
$lang->resource->job->browse = 'browse';
|
||||
$lang->resource->job->create = 'create';
|
||||
$lang->resource->job->edit = 'edit';
|
||||
$lang->resource->job->delete = 'delete';
|
||||
$lang->resource->job->exec = 'exec';
|
||||
|
||||
$lang->job->methodOrder[5] = 'browse';
|
||||
$lang->job->methodOrder[10] = 'create';
|
||||
$lang->job->methodOrder[15] = 'edit';
|
||||
$lang->job->methodOrder[20] = 'delete';
|
||||
$lang->job->methodOrder[25] = 'exec';
|
||||
|
||||
/* Doc. */
|
||||
$lang->resource->doc = new stdclass();
|
||||
|
||||
@@ -165,6 +165,9 @@ $lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Async N
|
||||
$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Async Webhook Sendung';
|
||||
$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Überfällige Logs löschen';
|
||||
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Erstelle wiederkehrende ToDos';
|
||||
$lang->install->cronList['moduleName=ci&methodName=initQueue'] = 'Create recurring jenkins';
|
||||
$lang->install->cronList['moduleName=ci&methodName=checkBuildStatus'] = 'Synchronize Jenkins Status';
|
||||
$lang->install->cronList['moduleName=ci&methodName=exec'] = 'Execute Jenkins';
|
||||
|
||||
$lang->install->success = "Installiert!";
|
||||
$lang->install->login = 'Login ZenTao';
|
||||
|
||||
@@ -165,6 +165,9 @@ $lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Désync
|
||||
$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Désynchroniser envoi Webhooks';
|
||||
$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Suppression Logs échus';
|
||||
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Créer tâches récurrentes';
|
||||
$lang->install->cronList['moduleName=ci&methodName=initQueue'] = 'Create recurring jenkins';
|
||||
$lang->install->cronList['moduleName=ci&methodName=checkBuildStatus'] = 'Synchronize Jenkins Status';
|
||||
$lang->install->cronList['moduleName=ci&methodName=exec'] = 'Execute Jenkins';
|
||||
|
||||
$lang->install->success = "Installé !";
|
||||
$lang->install->login = 'Login ZenTao';
|
||||
|
||||
@@ -165,6 +165,9 @@ $lang->install->cronList['moduleName=mail&methodName=asyncSend'] = '非同
|
||||
$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = '非同步發送Webhook';
|
||||
$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = '刪除過期日誌';
|
||||
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = '生成周期性待辦';
|
||||
$lang->install->cronList['moduleName=ci&methodName=initQueue'] = '創建周期性任務';
|
||||
$lang->install->cronList['moduleName=ci&methodName=checkBuildStatus'] = '同步Jenkins任務狀態';
|
||||
$lang->install->cronList['moduleName=ci&methodName=exec'] = '執行Jenkins任務';
|
||||
|
||||
$lang->install->success = "安裝成功";
|
||||
$lang->install->login = '登錄禪道管理系統';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$config->jenkins->create = new stdclass();
|
||||
$config->jenkins->edit = new stdclass();
|
||||
$config->jenkins->create->requiredFields = 'name,url,credentials';
|
||||
$config->jenkins->edit->requiredFields = 'name,url,credentials';
|
||||
$config->jenkins->create->requiredFields = 'name,url';
|
||||
$config->jenkins->edit->requiredFields = 'name,url';
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
$lang->jenkins->common = 'Jenkins';
|
||||
$lang->jenkins->browse = 'Browse Jenkins';
|
||||
$lang->jenkins->create = 'Create Jenkins';
|
||||
$lang->jenkins->edit = 'Edit Jenkins';
|
||||
$lang->jenkins->delete = 'Delete';
|
||||
$lang->jenkins->confirmDelete = 'Do you want to delete this Jenkins server?';
|
||||
|
||||
$lang->jenkins->id = 'ID';
|
||||
$lang->jenkins->name = 'Name';
|
||||
$lang->jenkins->url = 'Service URL';
|
||||
$lang->jenkins->token = 'Token';
|
||||
$lang->jenkins->account = 'UserName';
|
||||
$lang->jenkins->password = 'Password';
|
||||
|
||||
$lang->jenkins->lblCreate = 'Create Jenkins Server';
|
||||
$lang->jenkins->desc = 'Description';
|
||||
$lang->jenkins->tokenFirst = 'Use token if not empty.';
|
||||
$lang->jenkins->tips = 'Cancel "Prevent Cross Site Request Forgery exploits" when using password.';
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
$lang->jenkins->common = 'Jenkins';
|
||||
$lang->jenkins->browse = 'Browse Jenkins';
|
||||
$lang->jenkins->create = 'Create Jenkins';
|
||||
$lang->jenkins->edit = 'Edit Jenkins';
|
||||
$lang->jenkins->delete = 'Delete';
|
||||
$lang->jenkins->confirmDelete = 'Do you want to delete this Jenkins server?';
|
||||
|
||||
$lang->jenkins->id = 'ID';
|
||||
$lang->jenkins->name = 'Name';
|
||||
$lang->jenkins->url = 'Service URL';
|
||||
$lang->jenkins->token = 'Token';
|
||||
$lang->jenkins->account = 'UserName';
|
||||
$lang->jenkins->password = 'Password';
|
||||
|
||||
$lang->jenkins->lblCreate = 'Create Jenkins Server';
|
||||
$lang->jenkins->desc = 'Description';
|
||||
$lang->jenkins->tokenFirst = 'Use token if not empty.';
|
||||
$lang->jenkins->tips = 'Cancel "Prevent Cross Site Request Forgery exploits" when using password.';
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
$lang->jenkins->common = 'Jenkins';
|
||||
$lang->jenkins->browse = '瀏覽Jenkins';
|
||||
$lang->jenkins->create = '添加Jenkins';
|
||||
$lang->jenkins->edit = '編輯Jenkins';
|
||||
$lang->jenkins->delete = '刪除';
|
||||
$lang->jenkins->confirmDelete = '確認刪除該Jenkins嗎?';
|
||||
|
||||
$lang->jenkins->id = 'ID';
|
||||
$lang->jenkins->name = '名稱';
|
||||
$lang->jenkins->url = '服務地址';
|
||||
$lang->jenkins->token = 'Token';
|
||||
$lang->jenkins->account = '用戶名';
|
||||
$lang->jenkins->password = '密碼';
|
||||
|
||||
$lang->jenkins->lblCreate = '添加Jenkins伺服器';
|
||||
$lang->jenkins->desc = '描述';
|
||||
$lang->jenkins->tokenFirst = 'Token不為空時,優先使用Token。';
|
||||
$lang->jenkins->tips = '使用密碼時,請在Jenkins全局安全設置中禁用"防止跨站點請求偽造"選項。';
|
||||
@@ -4,4 +4,4 @@
|
||||
.checkbox-primary.checkbox-inline label{padding-left:5px !important;}
|
||||
#jkHost_chosen .chosen-single{border-right:0px;}
|
||||
#jkJobBox{width:385px;}
|
||||
#svnDirBox .input-group .chosen-single{min-width:200px;}
|
||||
#svnDirBox .input-group{width:unset !important}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
.checkbox-primary.checkbox-inline label{padding-left:5px !important;}
|
||||
#jkHost_chosen .chosen-single{border-right:0px;}
|
||||
#jkJobBox{width:385px;}
|
||||
#svnDirBox .input-group .chosen-single{min-width:200px;}
|
||||
#svnDirBox .input-group{width:unset !important}
|
||||
|
||||
@@ -29,7 +29,7 @@ $('#repo').change(function()
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('change', '#svnDir', function()
|
||||
$(document).on('change', '[name^=svnDir]', function()
|
||||
{
|
||||
var repoID = $('#repo').val();
|
||||
var selectedTag = $(this).val();
|
||||
@@ -61,6 +61,7 @@ $(document).on('change', '#svnDir', function()
|
||||
$('#svnDirBox .loading').remove();
|
||||
$('#svnDirBox .input-group').append(html);
|
||||
$('#svnDirBox #svnDir' + length).chosen();
|
||||
$('#svnDir' + length + '_chosen .chosen-single').css('border-left', '0px');
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ $('#repo').change(function()
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('change', '#svnDir', function()
|
||||
$(document).on('change', '[name^=svnDir]', function()
|
||||
{
|
||||
var repoID = $('#repo').val();
|
||||
var selectedTag = $(this).val();
|
||||
@@ -61,6 +61,7 @@ $(document).on('change', '#svnDir', function()
|
||||
$('#svnDirBox .loading').remove();
|
||||
$('#svnDirBox .input-group').append(html);
|
||||
$('#svnDirBox #svnDir' + length).chosen();
|
||||
$('#svnDirBox #svnDir' + length + '_chosen .chosen-single').css('border-left', '0px');
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
$lang->job->common = 'Job';
|
||||
$lang->job->browse = 'Browse Job';
|
||||
$lang->job->create = 'Create Job';
|
||||
$lang->job->edit = 'Edit Job';
|
||||
$lang->job->exec = 'Execute Job';
|
||||
$lang->job->delete = 'Delete Job';
|
||||
$lang->job->confirmDelete = 'Do you want to delete this job?';
|
||||
$lang->job->dirChange = 'Directory Changed';
|
||||
$lang->job->buildTag = 'Build Tag';
|
||||
|
||||
$lang->job->id = 'ID';
|
||||
$lang->job->name = 'Name';
|
||||
$lang->job->repo = 'Repo';
|
||||
$lang->job->svnDir = 'SVN Tag Watch Path';
|
||||
$lang->job->jenkins = 'Jenkins';
|
||||
$lang->job->jkHost = 'Jenkins Server';
|
||||
$lang->job->buildType = 'Build Type';
|
||||
$lang->job->jkJob = 'Jenkins Task';
|
||||
$lang->job->triggerType = 'Trigger';
|
||||
$lang->job->atDay = 'Custom Days';
|
||||
$lang->job->atTime = 'At Time';
|
||||
$lang->job->lastStatus = 'Last Status';
|
||||
$lang->job->lastExec = 'Last Executed';
|
||||
$lang->job->comment = 'Match Keywords';
|
||||
|
||||
$lang->job->example = 'e.g.';
|
||||
$lang->job->commitEx = "Used to match the keywords used to create a compile. Multiple keywords are separated by ','";
|
||||
$lang->job->cronSample = 'e.g. 0 0 2 * * 2-6/1 means 2:00 a.m. every weekday.';
|
||||
$lang->job->sendExec = 'Send execute request success.';
|
||||
|
||||
$lang->job->buildTypeList['build'] = 'Only Build';
|
||||
$lang->job->buildTypeList['buildAndDeploy'] = 'Build And Deploy';
|
||||
$lang->job->buildTypeList['buildAndTest'] = 'Build And Test';
|
||||
|
||||
$lang->job->triggerTypeList['tag'] = 'Tag';
|
||||
$lang->job->triggerTypeList['commit'] = 'Code Commit';
|
||||
$lang->job->triggerTypeList['schedule'] = 'Schedule';
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
$lang->job->common = 'Job';
|
||||
$lang->job->browse = 'Browse Job';
|
||||
$lang->job->create = 'Create Job';
|
||||
$lang->job->edit = 'Edit Job';
|
||||
$lang->job->exec = 'Execute Job';
|
||||
$lang->job->delete = 'Delete Job';
|
||||
$lang->job->confirmDelete = 'Do you want to delete this job?';
|
||||
$lang->job->dirChange = 'Directory Changed';
|
||||
$lang->job->buildTag = 'Build Tag';
|
||||
|
||||
$lang->job->id = 'ID';
|
||||
$lang->job->name = 'Name';
|
||||
$lang->job->repo = 'Repo';
|
||||
$lang->job->svnDir = 'SVN Tag Watch Path';
|
||||
$lang->job->jenkins = 'Jenkins';
|
||||
$lang->job->jkHost = 'Jenkins Server';
|
||||
$lang->job->buildType = 'Build Type';
|
||||
$lang->job->jkJob = 'Jenkins Task';
|
||||
$lang->job->triggerType = 'Trigger';
|
||||
$lang->job->atDay = 'Custom Days';
|
||||
$lang->job->atTime = 'At Time';
|
||||
$lang->job->lastStatus = 'Last Status';
|
||||
$lang->job->lastExec = 'Last Executed';
|
||||
$lang->job->comment = 'Match Keywords';
|
||||
|
||||
$lang->job->example = 'e.g.';
|
||||
$lang->job->commitEx = "Used to match the keywords used to create a compile. Multiple keywords are separated by ','";
|
||||
$lang->job->cronSample = 'e.g. 0 0 2 * * 2-6/1 means 2:00 a.m. every weekday.';
|
||||
$lang->job->sendExec = 'Send execute request success.';
|
||||
|
||||
$lang->job->buildTypeList['build'] = 'Only Build';
|
||||
$lang->job->buildTypeList['buildAndDeploy'] = 'Build And Deploy';
|
||||
$lang->job->buildTypeList['buildAndTest'] = 'Build And Test';
|
||||
|
||||
$lang->job->triggerTypeList['tag'] = 'Tag';
|
||||
$lang->job->triggerTypeList['commit'] = 'Code Commit';
|
||||
$lang->job->triggerTypeList['schedule'] = 'Schedule';
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
$lang->job->common = '構建任務';
|
||||
$lang->job->browse = '瀏覽構建任務';
|
||||
$lang->job->create = '創建構建任務';
|
||||
$lang->job->edit = '編輯構建任務';
|
||||
$lang->job->exec = '執行構建';
|
||||
$lang->job->delete = '刪除構建任務';
|
||||
$lang->job->confirmDelete = '確認刪除該構建任務';
|
||||
$lang->job->dirChange = '目錄改動';
|
||||
$lang->job->buildTag = '打標籤';
|
||||
|
||||
$lang->job->id = 'ID';
|
||||
$lang->job->name = '名稱';
|
||||
$lang->job->repo = '代碼庫';
|
||||
$lang->job->svnDir = 'SVN監控路徑';
|
||||
$lang->job->jenkins = 'Jenkins';
|
||||
$lang->job->jkHost = 'Jenkins伺服器';
|
||||
$lang->job->buildType = '構建類型';
|
||||
$lang->job->jkJob = 'Jenkins任務';
|
||||
$lang->job->triggerType = '觸發方式';
|
||||
$lang->job->atDay = '自定義日期';
|
||||
$lang->job->atTime = '執行時間';
|
||||
$lang->job->lastStatus = '最後執行狀態';
|
||||
$lang->job->lastExec = '最後執行時間';
|
||||
$lang->job->comment = '匹配關鍵字';
|
||||
|
||||
$lang->job->example = '舉例';
|
||||
$lang->job->commitEx = "用於匹配創建構建任務的關鍵字,多個關鍵字用','分割";
|
||||
$lang->job->cronSample = '如 0 0 2 * * 2-6/1 表示每個工作日凌晨2點';
|
||||
$lang->job->sendExec = '發送執行請求成功!執行結果:%s';
|
||||
|
||||
$lang->job->buildTypeList['build'] = '僅構建';
|
||||
$lang->job->buildTypeList['buildAndDeploy'] = '構建部署';
|
||||
$lang->job->buildTypeList['buildAndTest'] = '構建測試';
|
||||
|
||||
$lang->job->triggerTypeList['tag'] = '打標籤';
|
||||
$lang->job->triggerTypeList['commit'] = '提交註釋包含關鍵字';
|
||||
$lang->job->triggerTypeList['schedule'] = '定時計劃';
|
||||
+39
-42
@@ -113,25 +113,7 @@ class jobModel extends model
|
||||
->exec();
|
||||
|
||||
$id = $this->dao->lastInsertId();
|
||||
if($job->triggerType == 'schedule' and strpos($job->atDay, date('w')) !== false) $this->loadModel('compile')->createByJob($id);
|
||||
if($job->triggerType == 'tag')
|
||||
{
|
||||
$repo = $this->loadModel('repo')->getRepoByID($job->repo);
|
||||
$lastTag = '';
|
||||
if($this->post->repoType != 'Subversion')
|
||||
{
|
||||
$dirs = $this->loadModel('svn')->getRepoTags($repo, $job->svnDir);
|
||||
end($dirs);
|
||||
$lastTag = current($dirs);
|
||||
}
|
||||
else
|
||||
{
|
||||
$tags = $this->loadModel('git')->getRepoTags($repo);
|
||||
end($tags);
|
||||
$lastTag = current($tags);
|
||||
}
|
||||
$this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($id)->exec();
|
||||
}
|
||||
$this->initJob($id, $job, $this->post->repoType);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -144,8 +126,7 @@ class jobModel extends model
|
||||
*/
|
||||
public function update($id)
|
||||
{
|
||||
$oldJob = $this->getById($id);
|
||||
$job = fixer::input('post')
|
||||
$job = fixer::input('post')
|
||||
->setDefault('atDay', '')
|
||||
->setIF($this->post->repoType != 'Subversion', 'svnDir', '')
|
||||
->setIF($this->post->triggerType != 'commit', 'comment', '')
|
||||
@@ -174,35 +155,51 @@ class jobModel extends model
|
||||
->where('id')->eq($id)
|
||||
->exec();
|
||||
|
||||
if($job->triggerType == 'schedule')
|
||||
$this->initJob($id, $job, $this->post->repoType);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Init when create or update job.
|
||||
*
|
||||
* @param int $id
|
||||
* @param object $job
|
||||
* @param string $repoType
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function initJob($id, $job, $repoType)
|
||||
{
|
||||
if($job->triggerType == 'schedule' and strpos($job->atDay, date('w')) !== false)
|
||||
{
|
||||
$week = date('w');
|
||||
if($job->triggerType != $oldJob->triggerType or strpos($oldJob->atDay, $week) === false)
|
||||
$compiles = $this->dao->select('*')->from(TABLE_COMPILE)->where('job')->eq($id)->andWhere('LEFT(createdDate, 10)')->eq(date('Y-m-d'))->fetchAll();
|
||||
foreach($compiles as $compile)
|
||||
{
|
||||
if(strpos($job->atDay, $week) !== false) $this->loadModel('compile')->createByJob($job->id);
|
||||
if(!empty($compile->status)) return true;
|
||||
$this->dao->delete()->from(TABLE_COMPILE)->where('id')->eq($compile->id)->exec();
|
||||
}
|
||||
$this->loadModel('compile')->createByJob($id);
|
||||
}
|
||||
elseif($job->triggerType == 'tag')
|
||||
|
||||
if($job->triggerType == 'tag')
|
||||
{
|
||||
if($job->triggerType != $oldJob->triggerType or $job->repo != $oldJob->repo)
|
||||
$repo = $this->loadModel('repo')->getRepoByID($job->repo);
|
||||
$lastTag = '';
|
||||
if($repoType == 'Subversion')
|
||||
{
|
||||
$repo = $this->loadModel('repo')->getRepoByID($job->repo);
|
||||
$lastTag = '';
|
||||
if($this->post->repoType == 'Subversion')
|
||||
{
|
||||
$dirs = $this->loadModel('svn')->getRepoTags($repo, $job->svnDir);
|
||||
end($dirs);
|
||||
$lastTag = current($dirs);
|
||||
}
|
||||
else
|
||||
{
|
||||
$tags = $this->loadModel('git')->getRepoTags($repo);
|
||||
end($tags);
|
||||
$lastTag = current($tags);
|
||||
}
|
||||
$this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($id)->exec();
|
||||
$dirs = $this->loadModel('svn')->getRepoTags($repo, $job->svnDir);
|
||||
end($dirs);
|
||||
$lastTag = current($dirs);
|
||||
}
|
||||
else
|
||||
{
|
||||
$tags = $this->loadModel('git')->getRepoTags($repo);
|
||||
end($tags);
|
||||
$lastTag = current($tags);
|
||||
}
|
||||
$this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($id)->exec();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</tr>
|
||||
<tr id='svnDirBox' class='svn-fields'>
|
||||
<th><?php echo $lang->job->svnDir;?></th>
|
||||
<td colspan='2'>
|
||||
<td colspan='3'>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select('svnDir[]', array('' => ''), '', "class='form-control chosen'");?>
|
||||
</div>
|
||||
|
||||
@@ -44,12 +44,11 @@
|
||||
</tr>
|
||||
<tr id='svnDirBox' class='svn-fields'>
|
||||
<th><?php echo $lang->job->svnDir;?></th>
|
||||
<td colspan='2'>
|
||||
<td colspan='3'>
|
||||
<div class='input-group'>
|
||||
<?php
|
||||
if($repoType == 'Subversion' and $job->svnDir)
|
||||
{
|
||||
$job->svnDir = '/zentaoext';
|
||||
$path = '';
|
||||
$svnDirs = empty(trim($job->svnDir, '/')) ? '' : $job->svnDir;
|
||||
$svnDirs = explode('/', $svnDirs);
|
||||
|
||||
@@ -85,6 +85,7 @@ $lang->misc->feature = new stdclass();
|
||||
$lang->misc->feature->lastest = 'Letzte Version';
|
||||
$lang->misc->feature->detailed = 'Details';
|
||||
|
||||
$lang->misc->releaseDate['12.1'] = '2020-03-10';
|
||||
$lang->misc->releaseDate['12.0.1'] = '2020-02-12';
|
||||
$lang->misc->releaseDate['12.0'] = '2020-01-03';
|
||||
$lang->misc->releaseDate['11.7'] = '2019-11-28';
|
||||
@@ -123,6 +124,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => '<p>Add integration, and build in Jenkins</p>');
|
||||
$lang->misc->feature->all['12.0.1'][] = array('title'=>'Fix Bug.', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['12.0'][] = array('title'=>'Move repo function to zentao', 'desc' => '');
|
||||
|
||||
@@ -85,6 +85,7 @@ $lang->misc->feature = new stdclass();
|
||||
$lang->misc->feature->lastest = 'Latest Version';
|
||||
$lang->misc->feature->detailed = 'Detail';
|
||||
|
||||
$lang->misc->releaseDate['12.1'] = '2020-03-10';
|
||||
$lang->misc->releaseDate['12.0.1'] = '2020-02-12';
|
||||
$lang->misc->releaseDate['12.0'] = '2020-01-03';
|
||||
$lang->misc->releaseDate['11.7'] = '2019-11-28';
|
||||
@@ -123,6 +124,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => '<p>Add integration, and build in Jenkins</p>');
|
||||
$lang->misc->feature->all['12.0.1'][] = array('title'=>'Fix Bug.', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['12.0'][] = array('title'=>'Move repo function to zentao', 'desc' => '');
|
||||
|
||||
@@ -85,6 +85,7 @@ $lang->misc->feature = new stdclass();
|
||||
$lang->misc->feature->lastest = 'Dernière Version';
|
||||
$lang->misc->feature->detailed = 'Détail';
|
||||
|
||||
$lang->misc->releaseDate['12.1'] = '2020-03-10';
|
||||
$lang->misc->releaseDate['12.0.1'] = '2020-02-12';
|
||||
$lang->misc->releaseDate['12.0'] = '2020-01-03';
|
||||
$lang->misc->releaseDate['11.7'] = '2019-11-28';
|
||||
@@ -123,6 +124,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => '<p>Add integration, and build in Jenkins</p>');
|
||||
$lang->misc->feature->all['12.0.1'][] = array('title'=>'Fix Bug.', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['12.0'][] = array('title'=>'Move repo function to zentao', 'desc' => '');
|
||||
|
||||
@@ -85,6 +85,7 @@ $lang->misc->feature = new stdclass();
|
||||
$lang->misc->feature->lastest = '最新版本';
|
||||
$lang->misc->feature->detailed = '详情';
|
||||
|
||||
$lang->misc->releaseDate['12.1'] = '2020-03-10';
|
||||
$lang->misc->releaseDate['12.0.1'] = '2020-02-12';
|
||||
$lang->misc->releaseDate['12.0'] = '2020-01-03';
|
||||
$lang->misc->releaseDate['11.7'] = '2019-11-28';
|
||||
@@ -123,6 +124,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['12.1'][] = array('title'=>'增加构建功能', 'desc' => '<p>增加构建功能,集成Jenkins进行构建</p>');
|
||||
$lang->misc->feature->all['12.0.1'][] = array('title'=>'修复Bug', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['12.0'][] = array('title'=>'将代码功能版本浏览功能转移到开源版', 'desc' => '');
|
||||
|
||||
@@ -85,6 +85,7 @@ $lang->misc->feature = new stdclass();
|
||||
$lang->misc->feature->lastest = '最新版本';
|
||||
$lang->misc->feature->detailed = '詳情';
|
||||
|
||||
$lang->misc->releaseDate['12.1'] = '2020-03-10';
|
||||
$lang->misc->releaseDate['12.0.1'] = '2020-02-12';
|
||||
$lang->misc->releaseDate['12.0'] = '2020-01-03';
|
||||
$lang->misc->releaseDate['11.7'] = '2019-11-28';
|
||||
@@ -123,6 +124,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['12.1'][] = array('title'=>'增加構建功能', 'desc' => '<p>增加構建功能,整合Jenkins進行構建</p>');
|
||||
$lang->misc->feature->all['12.0.1'][] = array('title'=>'修復Bug', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['12.0'][] = array('title'=>'將代碼功能版本瀏覽功能轉移到開源版', 'desc' => '');
|
||||
|
||||
@@ -120,6 +120,44 @@ class my extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* My requirement.
|
||||
|
||||
* @param string $type
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function requirement($type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
if($this->app->viewType != 'json') $this->session->set('storyList', $this->app->getURI(true));
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
if($this->app->getViewType() == 'mhtml') $recPerPage = 10;
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->story;
|
||||
$this->view->position[] = $this->lang->my->story;
|
||||
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $type, $sort, $pager, 'requirement');
|
||||
$this->view->users = $this->user->getPairs('noletter');
|
||||
$this->view->type = $type;
|
||||
$this->view->recTotal = $recTotal;
|
||||
$this->view->recPerPage = $recPerPage;
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* My stories
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->my->bug = 'My Bugs';
|
||||
$lang->my->testTask = 'My Builds';
|
||||
$lang->my->testCase = 'My Cases';
|
||||
$lang->my->story = 'My Stories';
|
||||
$lang->my->requirement = 'My Requirements';
|
||||
$lang->my->myProject = "My {$lang->projectCommon}s";
|
||||
$lang->my->profile = 'My Profile';
|
||||
$lang->my->dynamic = 'My Dynamics';
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->my->bug = '我的Bug';
|
||||
$lang->my->testTask = '我的版本';
|
||||
$lang->my->testCase = '我的用例';
|
||||
$lang->my->story = "我的{$lang->storyCommon}";
|
||||
$lang->my->requirement = "我的用户{$lang->storyCommon}";
|
||||
$lang->my->myProject = "我的{$lang->projectCommon}";
|
||||
$lang->my->profile = '我的档案';
|
||||
$lang->my->dynamic = '我的动态';
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->product->searchStory;?></a>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php common::printIcon('story', 'report', "productID=$productID&browseType=$browseType&branchID=$branch&moduleID=$moduleID", '', 'button', 'bar-chart muted'); ?>
|
||||
<?php common::printIcon('story', 'report', "productID=$productID&browseType=$browseType&branchID=$branch&moduleID=$moduleID&chartType=pie&storyType=$storyType", '', 'button', 'bar-chart muted'); ?>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-link" data-toggle="dropdown"><i class="icon icon-export muted"></i> <span class="text"><?php echo $lang->export ?></span> <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu" id='exportActionMenu'>
|
||||
|
||||
+14
-16
@@ -40,19 +40,17 @@ $config->repo->edit->requiredFields = 'SCM,name,path,encoding,client';
|
||||
$config->repo->svn = new stdclass();
|
||||
$config->repo->svn->requiredFields = 'account,password';
|
||||
|
||||
$config->repo->rules['module']['task'] = 'Task';
|
||||
$config->repo->rules['module']['bug'] = 'Bug';
|
||||
$config->repo->rules['task']['start'] = 'Start';
|
||||
$config->repo->rules['task']['finish'] = 'Finish';
|
||||
$config->repo->rules['task']['logEfforts'] = 'Effort';
|
||||
$config->repo->rules['task']['consumed'] = 'Cost';
|
||||
$config->repo->rules['task']['left'] = 'Left';
|
||||
$config->repo->rules['bug']['resolve'] = 'Fix';
|
||||
$config->repo->rules['bug']['resolvedBuild'] = 'Build';
|
||||
$config->repo->rules['id']['mark'] = '#';
|
||||
$config->repo->rules['id']['split'] = ',';
|
||||
$config->repo->rules['mark']['consumed'] = ':';
|
||||
$config->repo->rules['mark']['left'] = ':';
|
||||
$config->repo->rules['mark']['resolvedBuild'] = '#';
|
||||
$config->repo->rules['unit']['consumed'] = 'h';
|
||||
$config->repo->rules['unit']['left'] = 'h';
|
||||
$config->repo->rules['module']['task'] = 'Task';
|
||||
$config->repo->rules['module']['bug'] = 'Bug';
|
||||
$config->repo->rules['task']['start'] = 'Start';
|
||||
$config->repo->rules['task']['finish'] = 'Finish';
|
||||
$config->repo->rules['task']['logEfforts'] = 'Effort';
|
||||
$config->repo->rules['task']['consumed'] = 'Cost';
|
||||
$config->repo->rules['task']['left'] = 'Left';
|
||||
$config->repo->rules['bug']['resolve'] = 'Fix';
|
||||
$config->repo->rules['id']['mark'] = '#';
|
||||
$config->repo->rules['id']['split'] = ',';
|
||||
$config->repo->rules['mark']['consumed'] = ':';
|
||||
$config->repo->rules['mark']['left'] = ':';
|
||||
$config->repo->rules['unit']['consumed'] = 'h';
|
||||
$config->repo->rules['unit']['left'] = 'h';
|
||||
|
||||
@@ -165,8 +165,6 @@ function replaceExample()
|
||||
|
||||
var resolveBug = $('[id*=bug][id*="resolve\]"]').val().split(';');
|
||||
var bugModule = $('[id*=module][id*=bug]').val().split(';');
|
||||
var builds = $('[id*=bug][id*=resolvedBuild]').val().split(';');
|
||||
var buildMarks = $('[id*=mark][id*=resolvedBuild]').val().split(';');
|
||||
for(i in resolveBug)
|
||||
{
|
||||
resolve = resolveBug[i];
|
||||
@@ -179,20 +177,10 @@ function replaceExample()
|
||||
for(l in idSplit)
|
||||
{
|
||||
split = idSplit[l];
|
||||
for(m in builds)
|
||||
{
|
||||
build = builds[m];
|
||||
for(n in buildMarks)
|
||||
{
|
||||
buildMark = buildMarks[n];
|
||||
html += '<br />' + rulesExample['bug']['resolve'].replace('%resolve%', resolve)
|
||||
.replace('%bug%', bug)
|
||||
.replace('%id%', id)
|
||||
.replace('%split%', split)
|
||||
.replace('%resolvedBuild%', build)
|
||||
.replace('%buildmark%', buildMark);
|
||||
}
|
||||
}
|
||||
html += '<br />' + rulesExample['bug']['resolve'].replace('%resolve%', resolve)
|
||||
.replace('%bug%', bug)
|
||||
.replace('%id%', id)
|
||||
.replace('%split%', split);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
$lang->repo->common = 'Repo';
|
||||
$lang->repo->browse = 'View';
|
||||
$lang->repo->viewRevision = 'View Revision';
|
||||
$lang->repo->create = 'Create';
|
||||
$lang->repo->createAction = 'Create Repo';
|
||||
$lang->repo->edit = 'Edit';
|
||||
$lang->repo->editAction = 'Edit Repo';
|
||||
$lang->repo->delete = 'Delete Repo';
|
||||
$lang->repo->showSyncCommit = 'Display Synchronization';
|
||||
$lang->repo->ajaxSyncCommit = 'Interface: Ajax Sync Note';
|
||||
$lang->repo->setRules = 'Set rules';
|
||||
$lang->repo->download = 'Download File';
|
||||
$lang->repo->downloadDiff = 'Download Diff';
|
||||
$lang->repo->diffAction = 'Revision Diff';
|
||||
$lang->repo->revisionAction = 'Revision Detail';
|
||||
$lang->repo->blameAction = 'Repo Blame';
|
||||
$lang->repo->addBug = 'Add Review';
|
||||
$lang->repo->editBug = 'Edit Bug';
|
||||
$lang->repo->deleteBug = 'Delete Bug';
|
||||
$lang->repo->addComment = 'Add Comment';
|
||||
$lang->repo->editComment = 'Edit Comment';
|
||||
$lang->repo->deleteComment = 'Delete Comment';
|
||||
|
||||
$lang->repo->submit = 'Submit';
|
||||
$lang->repo->cancel = 'Cancel';
|
||||
$lang->repo->addComment = 'Add Comment';
|
||||
|
||||
$lang->repo->product = $lang->productCommon;
|
||||
$lang->repo->module = 'Module';
|
||||
$lang->repo->project = $lang->projectCommon;
|
||||
$lang->repo->type = 'Type';
|
||||
$lang->repo->assign = 'AssignTo';
|
||||
$lang->repo->title = 'Title';
|
||||
$lang->repo->detile = 'Detail';
|
||||
$lang->repo->lines = 'Lines';
|
||||
$lang->repo->line = 'Line';
|
||||
$lang->repo->expand = 'Unfold';
|
||||
$lang->repo->collapse = 'Fold';
|
||||
|
||||
$lang->repo->id = 'ID';
|
||||
$lang->repo->SCM = 'Type';
|
||||
$lang->repo->name = 'Name';
|
||||
$lang->repo->path = 'Path';
|
||||
$lang->repo->prefix = 'Prefix';
|
||||
$lang->repo->config = 'Config';
|
||||
$lang->repo->desc = 'Describe';
|
||||
$lang->repo->account = 'Username';
|
||||
$lang->repo->password = 'Password';
|
||||
$lang->repo->encoding = 'Encoding';
|
||||
$lang->repo->client = 'Client Path';
|
||||
$lang->repo->size = 'Size';
|
||||
$lang->repo->revision = 'Revision';
|
||||
$lang->repo->revisionA = 'Revision';
|
||||
$lang->repo->revisions = 'Revision';
|
||||
$lang->repo->time = 'Date';
|
||||
$lang->repo->committer = 'Committer';
|
||||
$lang->repo->commits = 'Commits';
|
||||
$lang->repo->synced = 'Initialize Sync';
|
||||
$lang->repo->lastSync = 'Last Sync';
|
||||
$lang->repo->deleted = 'Deleted';
|
||||
$lang->repo->commit = 'Commit';
|
||||
$lang->repo->comment = 'Comment';
|
||||
$lang->repo->view = 'View File';
|
||||
$lang->repo->viewA = 'View';
|
||||
$lang->repo->log = 'Revision Log';
|
||||
$lang->repo->blame = 'Blame';
|
||||
$lang->repo->date = 'Date';
|
||||
$lang->repo->diff = 'Diff';
|
||||
$lang->repo->diffAB = 'Diff';
|
||||
$lang->repo->diffAll = 'Diff All';
|
||||
$lang->repo->viewDiff = 'View diff';
|
||||
$lang->repo->allLog = 'All Revisions';
|
||||
$lang->repo->location = 'Location';
|
||||
$lang->repo->file = 'File';
|
||||
$lang->repo->action = 'Action';
|
||||
$lang->repo->code = 'Code';
|
||||
$lang->repo->review = 'Repo Review';
|
||||
$lang->repo->acl = 'Privilege';
|
||||
$lang->repo->group = 'Group';
|
||||
$lang->repo->user = 'User';
|
||||
$lang->repo->info = 'Version Info';
|
||||
|
||||
$lang->repo->title = 'Title';
|
||||
$lang->repo->status = 'Status';
|
||||
$lang->repo->openedBy = 'CreatedBy';
|
||||
$lang->repo->assignedTo = 'AssignedTo';
|
||||
$lang->repo->openedDate = 'CreatedDate';
|
||||
|
||||
$lang->repo->latestRevision = 'Latest Revision';
|
||||
$lang->repo->actionInfo = "Add by %s in %s";
|
||||
$lang->repo->changes = "Change Log";
|
||||
$lang->repo->reviewLocation = "File: %s@%s, line:%s - %s";
|
||||
$lang->repo->commentEdit = '<i class="icon-pencil"></i>';
|
||||
$lang->repo->commentDelete = '<i class="icon-remove"></i>';
|
||||
$lang->repo->allChanges = "Other Changes";
|
||||
$lang->repo->commitTitle = "The %sth Commit";
|
||||
$lang->repo->mark = "Mark Tag";
|
||||
$lang->repo->split = "Split Mark";
|
||||
|
||||
$lang->repo->objectRule = 'Object Rule';
|
||||
$lang->repo->objectIdRule = 'Object ID Rule';
|
||||
$lang->repo->actionRule = 'Action RUle';
|
||||
$lang->repo->manHourRule = 'Man-hour Rule';
|
||||
$lang->repo->ruleUnit = "Unit";
|
||||
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";
|
||||
|
||||
$lang->repo->viewDiffList['inline'] = 'Inline';
|
||||
$lang->repo->viewDiffList['appose'] = 'Parallel';
|
||||
|
||||
$lang->repo->encryptList['plain'] = 'No encryption';
|
||||
$lang->repo->encryptList['base64'] = 'BASE64';
|
||||
|
||||
$lang->repo->logStyles['A'] = 'Add';
|
||||
$lang->repo->logStyles['M'] = 'Modification';
|
||||
$lang->repo->logStyles['D'] = 'Delete';
|
||||
|
||||
$lang->repo->encodingList['utf_8'] = 'UTF-8';
|
||||
$lang->repo->encodingList['gbk'] = 'GBK';
|
||||
|
||||
$lang->repo->scmList['Git'] = 'Git';
|
||||
$lang->repo->scmList['Subversion'] = 'Subversion';
|
||||
|
||||
$lang->repo->notice = new stdclass();
|
||||
$lang->repo->notice->syncing = 'Synchronizing. Please wait ...';
|
||||
$lang->repo->notice->syncComplete = 'Synchronized. Now redirecting ...';
|
||||
$lang->repo->notice->syncedCount = 'The number of records synchronized is ';
|
||||
$lang->repo->notice->delete = 'Are you sure delete this repo?';
|
||||
$lang->repo->notice->successDelete = 'Repository is removed.';
|
||||
$lang->repo->notice->commentContent = 'Comment';
|
||||
$lang->repo->notice->deleteBug = 'Are you sure to delete this bug?';
|
||||
$lang->repo->notice->deleteComment = 'Are you sure to delete this comment?';
|
||||
$lang->repo->notice->lastSyncTime = 'Last Sync:';
|
||||
|
||||
$lang->repo->rules = new stdclass();
|
||||
$lang->repo->rules->exampleLabel = "Comment Example";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10%cunit%";
|
||||
$lang->repo->rules->example['task']['effort'] = "%effort% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2";
|
||||
|
||||
$lang->repo->error = new stdclass();
|
||||
$lang->repo->error->useless = 'Your server disabled exec and shell_exec, so it cannot be applied.';
|
||||
$lang->repo->error->connect = 'Connection to the repo failed. Please enter username, password and repo address correctly!';
|
||||
$lang->repo->error->version = 'Version 1.8+ of https and svn protocol is required. Please update to latest version! Go to http://subversion.apache.org/';
|
||||
$lang->repo->error->path = 'Repo address is the file path, e.g. /home/test.';
|
||||
$lang->repo->error->cmd = 'Client Error!';
|
||||
$lang->repo->error->diff = 'Two versions must be selected.';
|
||||
$lang->repo->error->product = "Please select {$lang->productCommon}!";
|
||||
$lang->repo->error->commentText = 'Please enter content for review!';
|
||||
$lang->repo->error->comment = 'Please enter content!';
|
||||
$lang->repo->error->title = 'Please enter title!';
|
||||
$lang->repo->error->accessDenied = 'You do not have the privilege to access the repository.';
|
||||
$lang->repo->error->noFound = 'The repo is not found.';
|
||||
$lang->repo->error->noFile = '%s does not exist.';
|
||||
$lang->repo->error->noPriv = 'The program does not have the privilege to switch to %s';
|
||||
$lang->repo->error->output = "The command is: %s\nThe error is(%s): %s\n";
|
||||
$lang->repo->error->clientVersion = "Client version is too low, please upgrade or change SVN client";
|
||||
$lang->repo->error->encoding = "The encoding maybe wrong. Please change the encoding and try again.";
|
||||
|
||||
$lang->repo->syncTips = '<strong>You may find the reference about how to set Git sync from <a target="_blank" href="https://www.zentao.pm/book/zentaomanual/free-open-source-project-management-software-git-105.html">here</a>.</strong>';
|
||||
$lang->repo->encodingsTips = "The encodings of commit comments, can be comma separated values,e.g. utf-8";
|
||||
|
||||
$lang->repo->example = new stdclass();
|
||||
$lang->repo->example->client = new stdclass();
|
||||
$lang->repo->example->path = new stdclass();
|
||||
$lang->repo->example->client->git = "e.g. /usr/bin/git";
|
||||
$lang->repo->example->client->svn = "e.g. /usr/bin/svn";
|
||||
$lang->repo->example->path->git = "e.g. /homt/user/myproject";
|
||||
$lang->repo->example->path->svn = "e.g. http://example.googlecode.com/svn/trunk/myproject";
|
||||
$lang->repo->example->config = "Config directory is required in https. Use '--config-dir' to generate config dir.";
|
||||
$lang->repo->example->encoding = "input encoding of files";
|
||||
|
||||
$lang->repo->typeList['standard'] = 'Standard';
|
||||
$lang->repo->typeList['performance'] = 'Performance';
|
||||
$lang->repo->typeList['security'] = 'Security';
|
||||
$lang->repo->typeList['redundancy'] = 'Redundancy';
|
||||
$lang->repo->typeList['logicError'] = 'Logic Error';
|
||||
+11
-4
@@ -21,7 +21,6 @@ $lang->repo->deleteBug = 'Delete Bug';
|
||||
$lang->repo->addComment = 'Add Comment';
|
||||
$lang->repo->editComment = 'Edit Comment';
|
||||
$lang->repo->deleteComment = 'Delete Comment';
|
||||
$lang->repo->selectModule = 'Select Module';
|
||||
|
||||
$lang->repo->submit = 'Submit';
|
||||
$lang->repo->cancel = 'Cancel';
|
||||
@@ -99,6 +98,13 @@ $lang->repo->commitTitle = "The %sth Commit";
|
||||
$lang->repo->mark = "Mark Tag";
|
||||
$lang->repo->split = "Split Mark";
|
||||
|
||||
$lang->repo->objectRule = 'Object Rule';
|
||||
$lang->repo->objectIdRule = 'Object ID Rule';
|
||||
$lang->repo->actionRule = 'Action RUle';
|
||||
$lang->repo->manHourRule = 'Man-hour Rule';
|
||||
$lang->repo->ruleUnit = "Unit";
|
||||
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";
|
||||
|
||||
$lang->repo->viewDiffList['inline'] = 'Inline';
|
||||
$lang->repo->viewDiffList['appose'] = 'Parallel';
|
||||
|
||||
@@ -128,9 +134,10 @@ $lang->repo->notice->lastSyncTime = 'Last Sync:';
|
||||
|
||||
$lang->repo->rules = new stdclass();
|
||||
$lang->repo->rules->exampleLabel = "Comment Example";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1 %left%%leftmark%3";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2 %resolvedBuild% %buildmark%10";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10%cunit%";
|
||||
$lang->repo->rules->example['task']['effort'] = "%effort% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2";
|
||||
|
||||
$lang->repo->error = new stdclass();
|
||||
$lang->repo->error->useless = 'Your server disabled exec and shell_exec, so it cannot be applied.';
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
$lang->repo->common = 'Repo';
|
||||
$lang->repo->browse = 'View';
|
||||
$lang->repo->viewRevision = 'View Revision';
|
||||
$lang->repo->create = 'Create';
|
||||
$lang->repo->createAction = 'Create Repo';
|
||||
$lang->repo->edit = 'Edit';
|
||||
$lang->repo->editAction = 'Edit Repo';
|
||||
$lang->repo->delete = 'Delete Repo';
|
||||
$lang->repo->showSyncCommit = 'Display Synchronization';
|
||||
$lang->repo->ajaxSyncCommit = 'Interface: Ajax Sync Note';
|
||||
$lang->repo->setRules = 'Set rules';
|
||||
$lang->repo->download = 'Download File';
|
||||
$lang->repo->downloadDiff = 'Download Diff';
|
||||
$lang->repo->diffAction = 'Revision Diff';
|
||||
$lang->repo->revisionAction = 'Revision Detail';
|
||||
$lang->repo->blameAction = 'Repo Blame';
|
||||
$lang->repo->addBug = 'Add Review';
|
||||
$lang->repo->editBug = 'Edit Bug';
|
||||
$lang->repo->deleteBug = 'Delete Bug';
|
||||
$lang->repo->addComment = 'Add Comment';
|
||||
$lang->repo->editComment = 'Edit Comment';
|
||||
$lang->repo->deleteComment = 'Delete Comment';
|
||||
|
||||
$lang->repo->submit = 'Submit';
|
||||
$lang->repo->cancel = 'Cancel';
|
||||
$lang->repo->addComment = 'Add Comment';
|
||||
|
||||
$lang->repo->product = $lang->productCommon;
|
||||
$lang->repo->module = 'Module';
|
||||
$lang->repo->project = $lang->projectCommon;
|
||||
$lang->repo->type = 'Type';
|
||||
$lang->repo->assign = 'AssignTo';
|
||||
$lang->repo->title = 'Title';
|
||||
$lang->repo->detile = 'Detail';
|
||||
$lang->repo->lines = 'Lines';
|
||||
$lang->repo->line = 'Line';
|
||||
$lang->repo->expand = 'Unfold';
|
||||
$lang->repo->collapse = 'Fold';
|
||||
|
||||
$lang->repo->id = 'ID';
|
||||
$lang->repo->SCM = 'Type';
|
||||
$lang->repo->name = 'Name';
|
||||
$lang->repo->path = 'Path';
|
||||
$lang->repo->prefix = 'Prefix';
|
||||
$lang->repo->config = 'Config';
|
||||
$lang->repo->desc = 'Describe';
|
||||
$lang->repo->account = 'Username';
|
||||
$lang->repo->password = 'Password';
|
||||
$lang->repo->encoding = 'Encoding';
|
||||
$lang->repo->client = 'Client Path';
|
||||
$lang->repo->size = 'Size';
|
||||
$lang->repo->revision = 'Revision';
|
||||
$lang->repo->revisionA = 'Revision';
|
||||
$lang->repo->revisions = 'Revision';
|
||||
$lang->repo->time = 'Date';
|
||||
$lang->repo->committer = 'Committer';
|
||||
$lang->repo->commits = 'Commits';
|
||||
$lang->repo->synced = 'Initialize Sync';
|
||||
$lang->repo->lastSync = 'Last Sync';
|
||||
$lang->repo->deleted = 'Deleted';
|
||||
$lang->repo->commit = 'Commit';
|
||||
$lang->repo->comment = 'Comment';
|
||||
$lang->repo->view = 'View File';
|
||||
$lang->repo->viewA = 'View';
|
||||
$lang->repo->log = 'Revision Log';
|
||||
$lang->repo->blame = 'Blame';
|
||||
$lang->repo->date = 'Date';
|
||||
$lang->repo->diff = 'Diff';
|
||||
$lang->repo->diffAB = 'Diff';
|
||||
$lang->repo->diffAll = 'Diff All';
|
||||
$lang->repo->viewDiff = 'View diff';
|
||||
$lang->repo->allLog = 'All Revisions';
|
||||
$lang->repo->location = 'Location';
|
||||
$lang->repo->file = 'File';
|
||||
$lang->repo->action = 'Action';
|
||||
$lang->repo->code = 'Code';
|
||||
$lang->repo->review = 'Repo Review';
|
||||
$lang->repo->acl = 'Privilege';
|
||||
$lang->repo->group = 'Group';
|
||||
$lang->repo->user = 'User';
|
||||
$lang->repo->info = 'Version Info';
|
||||
|
||||
$lang->repo->title = 'Title';
|
||||
$lang->repo->status = 'Status';
|
||||
$lang->repo->openedBy = 'CreatedBy';
|
||||
$lang->repo->assignedTo = 'AssignedTo';
|
||||
$lang->repo->openedDate = 'CreatedDate';
|
||||
|
||||
$lang->repo->latestRevision = 'Latest Revision';
|
||||
$lang->repo->actionInfo = "Add by %s in %s";
|
||||
$lang->repo->changes = "Change Log";
|
||||
$lang->repo->reviewLocation = "File: %s@%s, line:%s - %s";
|
||||
$lang->repo->commentEdit = '<i class="icon-pencil"></i>';
|
||||
$lang->repo->commentDelete = '<i class="icon-remove"></i>';
|
||||
$lang->repo->allChanges = "Other Changes";
|
||||
$lang->repo->commitTitle = "The %sth Commit";
|
||||
$lang->repo->mark = "Mark Tag";
|
||||
$lang->repo->split = "Split Mark";
|
||||
|
||||
$lang->repo->objectRule = 'Object Rule';
|
||||
$lang->repo->objectIdRule = 'Object ID Rule';
|
||||
$lang->repo->actionRule = 'Action RUle';
|
||||
$lang->repo->manHourRule = 'Man-hour Rule';
|
||||
$lang->repo->ruleUnit = "Unit";
|
||||
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";
|
||||
|
||||
$lang->repo->viewDiffList['inline'] = 'Inline';
|
||||
$lang->repo->viewDiffList['appose'] = 'Parallel';
|
||||
|
||||
$lang->repo->encryptList['plain'] = 'No encryption';
|
||||
$lang->repo->encryptList['base64'] = 'BASE64';
|
||||
|
||||
$lang->repo->logStyles['A'] = 'Add';
|
||||
$lang->repo->logStyles['M'] = 'Modification';
|
||||
$lang->repo->logStyles['D'] = 'Delete';
|
||||
|
||||
$lang->repo->encodingList['utf_8'] = 'UTF-8';
|
||||
$lang->repo->encodingList['gbk'] = 'GBK';
|
||||
|
||||
$lang->repo->scmList['Git'] = 'Git';
|
||||
$lang->repo->scmList['Subversion'] = 'Subversion';
|
||||
|
||||
$lang->repo->notice = new stdclass();
|
||||
$lang->repo->notice->syncing = 'Synchronizing. Please wait ...';
|
||||
$lang->repo->notice->syncComplete = 'Synchronized. Now redirecting ...';
|
||||
$lang->repo->notice->syncedCount = 'The number of records synchronized is ';
|
||||
$lang->repo->notice->delete = 'Are you sure delete this repo?';
|
||||
$lang->repo->notice->successDelete = 'Repository is removed.';
|
||||
$lang->repo->notice->commentContent = 'Comment';
|
||||
$lang->repo->notice->deleteBug = 'Are you sure to delete this bug?';
|
||||
$lang->repo->notice->deleteComment = 'Are you sure to delete this comment?';
|
||||
$lang->repo->notice->lastSyncTime = 'Last Sync:';
|
||||
|
||||
$lang->repo->rules = new stdclass();
|
||||
$lang->repo->rules->exampleLabel = "Comment Example";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10%cunit%";
|
||||
$lang->repo->rules->example['task']['effort'] = "%effort% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2";
|
||||
|
||||
$lang->repo->error = new stdclass();
|
||||
$lang->repo->error->useless = 'Your server disabled exec and shell_exec, so it cannot be applied.';
|
||||
$lang->repo->error->connect = 'Connection to the repo failed. Please enter username, password and repo address correctly!';
|
||||
$lang->repo->error->version = 'Version 1.8+ of https and svn protocol is required. Please update to latest version! Go to http://subversion.apache.org/';
|
||||
$lang->repo->error->path = 'Repo address is the file path, e.g. /home/test.';
|
||||
$lang->repo->error->cmd = 'Client Error!';
|
||||
$lang->repo->error->diff = 'Two versions must be selected.';
|
||||
$lang->repo->error->product = "Please select {$lang->productCommon}!";
|
||||
$lang->repo->error->commentText = 'Please enter content for review!';
|
||||
$lang->repo->error->comment = 'Please enter content!';
|
||||
$lang->repo->error->title = 'Please enter title!';
|
||||
$lang->repo->error->accessDenied = 'You do not have the privilege to access the repository.';
|
||||
$lang->repo->error->noFound = 'The repo is not found.';
|
||||
$lang->repo->error->noFile = '%s does not exist.';
|
||||
$lang->repo->error->noPriv = 'The program does not have the privilege to switch to %s';
|
||||
$lang->repo->error->output = "The command is: %s\nThe error is(%s): %s\n";
|
||||
$lang->repo->error->clientVersion = "Client version is too low, please upgrade or change SVN client";
|
||||
$lang->repo->error->encoding = "The encoding maybe wrong. Please change the encoding and try again.";
|
||||
|
||||
$lang->repo->syncTips = '<strong>You may find the reference about how to set Git sync from <a target="_blank" href="https://www.zentao.pm/book/zentaomanual/free-open-source-project-management-software-git-105.html">here</a>.</strong>';
|
||||
$lang->repo->encodingsTips = "The encodings of commit comments, can be comma separated values,e.g. utf-8";
|
||||
|
||||
$lang->repo->example = new stdclass();
|
||||
$lang->repo->example->client = new stdclass();
|
||||
$lang->repo->example->path = new stdclass();
|
||||
$lang->repo->example->client->git = "e.g. /usr/bin/git";
|
||||
$lang->repo->example->client->svn = "e.g. /usr/bin/svn";
|
||||
$lang->repo->example->path->git = "e.g. /homt/user/myproject";
|
||||
$lang->repo->example->path->svn = "e.g. http://example.googlecode.com/svn/trunk/myproject";
|
||||
$lang->repo->example->config = "Config directory is required in https. Use '--config-dir' to generate config dir.";
|
||||
$lang->repo->example->encoding = "input encoding of files";
|
||||
|
||||
$lang->repo->typeList['standard'] = 'Standard';
|
||||
$lang->repo->typeList['performance'] = 'Performance';
|
||||
$lang->repo->typeList['security'] = 'Security';
|
||||
$lang->repo->typeList['redundancy'] = 'Redundancy';
|
||||
$lang->repo->typeList['logicError'] = 'Logic Error';
|
||||
@@ -4,6 +4,7 @@ $lang->repo->browse = '浏览';
|
||||
$lang->repo->viewRevision = '查看修订';
|
||||
$lang->repo->create = '创建';
|
||||
$lang->repo->createAction = '创建版本库';
|
||||
$lang->repo->maintain = '版本库列表';
|
||||
$lang->repo->edit = '编辑';
|
||||
$lang->repo->editAction = '编辑版本库';
|
||||
$lang->repo->delete = '删除版本库';
|
||||
@@ -137,7 +138,7 @@ $lang->repo->rules->exampleLabel = "注释示例";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10%cunit%";
|
||||
$lang->repo->rules->example['task']['effort'] = "%effort% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2 %resolvedBuild% %buildmark%10";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2";
|
||||
|
||||
$lang->repo->error = new stdclass();
|
||||
$lang->repo->error->useless = '你的服务器禁用了exec,shell_exec方法,无法使用该功能';
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
$lang->repo->common = '代碼';
|
||||
$lang->repo->browse = '瀏覽';
|
||||
$lang->repo->viewRevision = '查看修訂';
|
||||
$lang->repo->create = '創建';
|
||||
$lang->repo->createAction = '創建版本庫';
|
||||
$lang->repo->maintain = '版本庫列表';
|
||||
$lang->repo->edit = '編輯';
|
||||
$lang->repo->editAction = '編輯版本庫';
|
||||
$lang->repo->delete = '刪除版本庫';
|
||||
$lang->repo->showSyncCommit = '顯示同步進度';
|
||||
$lang->repo->ajaxSyncCommit = '介面:AJAX同步註釋';
|
||||
$lang->repo->setRules = '指令配置';
|
||||
$lang->repo->download = '下載';
|
||||
$lang->repo->downloadDiff = '下載Diff';
|
||||
$lang->repo->diffAction = '版本對比';
|
||||
$lang->repo->revisionAction = '版本詳情';
|
||||
$lang->repo->blameAction = '版本追溯';
|
||||
$lang->repo->addBug = '添加評審';
|
||||
$lang->repo->editBug = '編輯評審';
|
||||
$lang->repo->deleteBug = '刪除評審';
|
||||
$lang->repo->addComment = '添加備註';
|
||||
$lang->repo->editComment = '編輯備註';
|
||||
$lang->repo->deleteComment = '刪除備註';
|
||||
|
||||
$lang->repo->submit = '提交';
|
||||
$lang->repo->cancel = '取消';
|
||||
$lang->repo->addComment = '添加評論';
|
||||
|
||||
$lang->repo->product = $lang->productCommon;
|
||||
$lang->repo->module = '模組';
|
||||
$lang->repo->project = $lang->projectCommon;
|
||||
$lang->repo->type = '類型';
|
||||
$lang->repo->assign = '指派';
|
||||
$lang->repo->title = '標題';
|
||||
$lang->repo->detile = '詳情';
|
||||
$lang->repo->lines = '代碼行';
|
||||
$lang->repo->line = '行';
|
||||
$lang->repo->expand = '點擊展開';
|
||||
$lang->repo->collapse = '點擊摺疊';
|
||||
|
||||
$lang->repo->id = '編號';
|
||||
$lang->repo->SCM = '類型';
|
||||
$lang->repo->name = '名稱';
|
||||
$lang->repo->path = '地址';
|
||||
$lang->repo->prefix = '地址擴展';
|
||||
$lang->repo->config = '配置目錄';
|
||||
$lang->repo->desc = '描述';
|
||||
$lang->repo->account = '用戶名';
|
||||
$lang->repo->password = '密碼';
|
||||
$lang->repo->encoding = '編碼';
|
||||
$lang->repo->client = '客戶端';
|
||||
$lang->repo->size = '大小';
|
||||
$lang->repo->revision = '查看版本';
|
||||
$lang->repo->revisionA = '版本';
|
||||
$lang->repo->revisions = '版本';
|
||||
$lang->repo->time = '提交時間';
|
||||
$lang->repo->committer = '作者';
|
||||
$lang->repo->commits = '提交數';
|
||||
$lang->repo->synced = '初始化同步';
|
||||
$lang->repo->lastSync = '最後同步時間';
|
||||
$lang->repo->deleted = '已刪除';
|
||||
$lang->repo->commit = '提交';
|
||||
$lang->repo->comment = '註釋';
|
||||
$lang->repo->view = '查看檔案';
|
||||
$lang->repo->viewA = '查看';
|
||||
$lang->repo->log = '版本歷史';
|
||||
$lang->repo->blame = '追溯';
|
||||
$lang->repo->date = '日期';
|
||||
$lang->repo->diff = '比較差異';
|
||||
$lang->repo->diffAB = '比較';
|
||||
$lang->repo->diffAll = '全部比較';
|
||||
$lang->repo->viewDiff = '查看差異';
|
||||
$lang->repo->allLog = '所有版本';
|
||||
$lang->repo->location = '位置';
|
||||
$lang->repo->file = '檔案';
|
||||
$lang->repo->action = '操作';
|
||||
$lang->repo->code = '代碼';
|
||||
$lang->repo->review = '評審';
|
||||
$lang->repo->acl = '權限';
|
||||
$lang->repo->group = '分組';
|
||||
$lang->repo->user = '用戶';
|
||||
$lang->repo->info = '版本信息';
|
||||
|
||||
$lang->repo->title = '標題';
|
||||
$lang->repo->status = '狀態';
|
||||
$lang->repo->openedBy = '創建者';
|
||||
$lang->repo->assignedTo = '指派給';
|
||||
$lang->repo->openedDate = '創建日期';
|
||||
|
||||
$lang->repo->latestRevision = '最近修訂版本';
|
||||
$lang->repo->actionInfo = "由%s在%s添加";
|
||||
$lang->repo->changes = "修改記錄";
|
||||
$lang->repo->reviewLocation = "%s@%s,%s行 - %s行";
|
||||
$lang->repo->commentEdit = '<i class="icon-pencil"></i>';
|
||||
$lang->repo->commentDelete = '<i class="icon-remove"></i>';
|
||||
$lang->repo->allChanges = "其他改動";
|
||||
$lang->repo->commitTitle = "第%s次提交";
|
||||
$lang->repo->mark = "開始標記";
|
||||
$lang->repo->split = "多ID間隔";
|
||||
|
||||
$lang->repo->objectRule = '對象匹配規則';
|
||||
$lang->repo->objectIdRule = '對象ID匹配規則';
|
||||
$lang->repo->actionRule = '動作匹配規則';
|
||||
$lang->repo->manHourRule = '工時匹配規則';
|
||||
$lang->repo->ruleUnit = "單位";
|
||||
$lang->repo->ruleSplit = "多關鍵字用';'分割,如:任務多關鍵字: Task;task";
|
||||
|
||||
$lang->repo->viewDiffList['inline'] = '直列';
|
||||
$lang->repo->viewDiffList['appose'] = '並排';
|
||||
|
||||
$lang->repo->encryptList['plain'] = '不加密';
|
||||
$lang->repo->encryptList['base64'] = 'BASE64';
|
||||
|
||||
$lang->repo->logStyles['A'] = '添加';
|
||||
$lang->repo->logStyles['M'] = '修改';
|
||||
$lang->repo->logStyles['D'] = '刪除';
|
||||
|
||||
$lang->repo->encodingList['utf_8'] = 'UTF-8';
|
||||
$lang->repo->encodingList['gbk'] = 'GBK';
|
||||
|
||||
$lang->repo->scmList['Git'] = 'Git';
|
||||
$lang->repo->scmList['Subversion'] = 'Subversion';
|
||||
|
||||
$lang->repo->notice = new stdclass();
|
||||
$lang->repo->notice->syncing = '正在同步中, 請稍等...';
|
||||
$lang->repo->notice->syncComplete = '同步完成,正在跳轉...';
|
||||
$lang->repo->notice->syncedCount = '已經同步記錄條數';
|
||||
$lang->repo->notice->delete = '是否要刪除該版本庫?';
|
||||
$lang->repo->notice->successDelete = '已經成功刪除版本庫。';
|
||||
$lang->repo->notice->commentContent = '輸入回覆內容';
|
||||
$lang->repo->notice->deleteBug = '確認刪除該Bug?';
|
||||
$lang->repo->notice->deleteComment = '確認刪除該回覆?';
|
||||
$lang->repo->notice->lastSyncTime = '最後更新于:';
|
||||
|
||||
$lang->repo->rules = new stdclass();
|
||||
$lang->repo->rules->exampleLabel = "註釋示例";
|
||||
$lang->repo->rules->example['task']['start'] = "%start% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['task']['finish'] = "%finish% %task% %id%1%split%2 %cost%%consumedmark%10%cunit%";
|
||||
$lang->repo->rules->example['task']['effort'] = "%effort% %task% %id%1%split%2 %cost%%consumedmark%1%cunit% %left%%leftmark%3%lunit%";
|
||||
$lang->repo->rules->example['bug']['resolve'] = "%resolve% %bug% %id%1%split%2";
|
||||
|
||||
$lang->repo->error = new stdclass();
|
||||
$lang->repo->error->useless = '你的伺服器禁用了exec,shell_exec方法,無法使用該功能';
|
||||
$lang->repo->error->connect = '連接版本庫失敗,請填寫正確的用戶名、密碼和版本庫地址!';
|
||||
$lang->repo->error->version = "https和svn協議需要1.8及以上版本的客戶端,請升級到最新版本!詳情訪問:http://subversion.apache.org/";
|
||||
$lang->repo->error->path = '版本庫地址直接填寫檔案路徑,如:/home/test。';
|
||||
$lang->repo->error->cmd = '客戶端錯誤!';
|
||||
$lang->repo->error->diff = '必須選擇兩個版本';
|
||||
$lang->repo->error->product = "請選擇{$lang->productCommon}!";
|
||||
$lang->repo->error->commentText = '請填寫評審內容';
|
||||
$lang->repo->error->comment = '請填寫內容';
|
||||
$lang->repo->error->title = '請填寫標題';
|
||||
$lang->repo->error->accessDenied = '你沒有權限訪問該版本庫';
|
||||
$lang->repo->error->noFound = '你訪問的版本庫不存在';
|
||||
$lang->repo->error->noFile = '目錄 %s 不存在';
|
||||
$lang->repo->error->noPriv = '程序沒有權限切換到目錄 %s';
|
||||
$lang->repo->error->output = "執行命令:%s\n錯誤結果(%s): %s\n";
|
||||
$lang->repo->error->clientVersion = "客戶端版本過低,請升級或更換SVN客戶端";
|
||||
$lang->repo->error->encoding = "編碼可能錯誤,請更換編碼重試。";
|
||||
|
||||
$lang->repo->syncTips = '請參照<a target="_blank" href="https://www.zentao.net/book/zentaopmshelp/207.html">這裡</a>,設置版本庫定時同步。';
|
||||
$lang->repo->encodingsTips = "提交日誌的編碼,可以用逗號連接起來的多個,比如utf-8。";
|
||||
|
||||
$lang->repo->example = new stdclass();
|
||||
$lang->repo->example->client = new stdclass();
|
||||
$lang->repo->example->path = new stdclass();
|
||||
$lang->repo->example->client->git = "例如:/usr/bin/git";
|
||||
$lang->repo->example->client->svn = "例如:/usr/bin/svn";
|
||||
$lang->repo->example->path->git = "例如:/homt/user/myproject";
|
||||
$lang->repo->example->path->svn = "例如:http://example.googlecode.com/svn/trunk/myproject";
|
||||
$lang->repo->example->config = "https需要填寫配置目錄的位置,通過config-dir選項生成配置目錄";
|
||||
$lang->repo->example->encoding = "填寫版本庫中檔案的編碼";
|
||||
|
||||
$lang->repo->typeList['standard'] = '規範';
|
||||
$lang->repo->typeList['performance'] = '性能';
|
||||
$lang->repo->typeList['security'] = '安全';
|
||||
$lang->repo->typeList['redundancy'] = '冗餘';
|
||||
$lang->repo->typeList['logicError'] = '邏輯錯誤';
|
||||
+51
-28
@@ -488,6 +488,23 @@ class repoModel extends model
|
||||
return substr($revision, 0, 10) . '<span title="' . sprintf($this->lang->repo->commitTitle, $commit) . '"> (' . $commit . ') </span>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cache file.
|
||||
*
|
||||
* @param int $repoID
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getCacheFile($repoID, $path, $revision)
|
||||
{
|
||||
$cachePath = $this->app->getCacheRoot() . '/' . 'repo';
|
||||
if(!is_dir($cachePath)) mkdir($cachePath, 0777, true);
|
||||
if(!is_writable($cachePath)) return false;
|
||||
return $cachePath . '/' . $repoID . '-' . md5("{$this->cookie->repoBranch}-$path-$revision");
|
||||
}
|
||||
|
||||
/**
|
||||
* Save commit.
|
||||
*
|
||||
@@ -1082,7 +1099,7 @@ class repoModel extends model
|
||||
foreach($idMatches[0] as $id)
|
||||
{
|
||||
$bugs[$id] = $id;
|
||||
$actions['bug'][$id]['resolve']['build'] = $matches[11][$i];
|
||||
$actions['bug'][$id]['resolve'] = array();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1152,8 +1169,6 @@ class repoModel extends model
|
||||
$costMarks = str_replace(';', '|', preg_replace('/([^;])/', '\\\\\1', trim($rules['mark']['consumed'], ';')));
|
||||
$lefts = str_replace(';', '|', trim($rules['task']['left'], ';'));
|
||||
$leftMarks = str_replace(';', '|', preg_replace('/([^;])/', '\\\\\1', trim($rules['mark']['left'], ';')));
|
||||
$builds = str_replace(';', '|', trim($rules['bug']['resolvedBuild'], ';'));
|
||||
$buildMarks = str_replace(';', '|', preg_replace('/([^;])/', '\\\\\1', trim($rules['mark']['resolvedBuild'], ';')));
|
||||
$taskModule = str_replace(';', '|', trim($rules['module']['task'], ';'));
|
||||
$bugModule = str_replace(';', '|', trim($rules['module']['bug'], ';'));
|
||||
$costUnit = str_replace(';', '|', trim($rules['unit']['consumed'], ';'));
|
||||
@@ -1167,19 +1182,17 @@ class repoModel extends model
|
||||
$bugReg = "(($bugModule) +(({$idMarks})[0-9]+(({$idSplits})[0-9]+)*))";
|
||||
$costReg = "($costs) *(($costMarks)([0-9]+)($costUnit))";
|
||||
$leftReg = "($lefts) *(($leftMarks)([0-9]+)($leftUnit))";
|
||||
$buildReg = "($builds) *(($buildMarks)([0-9]+))";
|
||||
|
||||
$startTaskReg = "({$startAction}) *{$taskReg} +$costReg +$leftReg";
|
||||
$effortTaskReg = "({$effortAction}) *{$taskReg} +$costReg +$leftReg";
|
||||
$finishTaskReg = "({$finishAction}) *{$taskReg} +$costReg";
|
||||
$resolveBugReg = "({$resolveAction}) *{$bugReg} +$buildReg";
|
||||
$startTaskReg = "({$startAction}) *{$taskReg}.*$costReg.*$leftReg";
|
||||
$effortTaskReg = "({$effortAction}) *{$taskReg}.*$costReg.*$leftReg";
|
||||
$finishTaskReg = "({$finishAction}) *{$taskReg}.*$costReg";
|
||||
$resolveBugReg = "({$resolveAction}) *{$bugReg}";
|
||||
|
||||
$reg = array();
|
||||
$reg['taskReg'] = $taskReg;
|
||||
$reg['bugReg'] = $bugReg;
|
||||
$reg['costReg'] = $costReg;
|
||||
$reg['leftReg'] = $leftReg;
|
||||
$reg['buildReg'] = $buildReg;
|
||||
$reg['startTaskReg'] = $startTaskReg;
|
||||
$reg['effortTaskReg'] = $effortTaskReg;
|
||||
$reg['finishTaskReg'] = $finishTaskReg;
|
||||
@@ -1227,6 +1240,7 @@ class repoModel extends model
|
||||
{
|
||||
$this->post->set('realStarted', date('Y-m-d'));
|
||||
$changes = $this->task->start($taskID);
|
||||
foreach($this->createActionChanges($log, $repoRoot, $scm) as $change) $changes[] = $change;
|
||||
if($changes)
|
||||
{
|
||||
$action->action = $this->post->left == 0 ? 'finished' : 'started';
|
||||
@@ -1250,11 +1264,24 @@ class repoModel extends model
|
||||
{
|
||||
$this->task->recordEstimate($taskID);
|
||||
}
|
||||
|
||||
$action->action = $scm == 'svn' ? 'svncommited' : 'gitcommited';
|
||||
$action->objectType = 'task';
|
||||
$action->objectID = $taskID;
|
||||
$action->product = $productsAndProjects[$taskID]['product'];
|
||||
$action->project = $productsAndProjects[$taskID]['project'];
|
||||
|
||||
$changes = $this->createActionChanges($log, $repoRoot, $scm);
|
||||
$this->saveRecord($action, $changes);
|
||||
}
|
||||
elseif($taskAction == 'finish')
|
||||
{
|
||||
$task = $this->task->getById($taskID);
|
||||
$this->post->set('finishedDate', date('Y-m-d'));
|
||||
$this->post->set('currentConsumed', $this->post->consumed);
|
||||
$this->post->set('consumed', $this->post->consumed + $task->consumed);
|
||||
$changes = $this->task->finish($taskID);
|
||||
foreach($this->createActionChanges($log, $repoRoot, $scm) as $change) $changes[] = $change;
|
||||
if($changes)
|
||||
{
|
||||
$action->action = 'finished';
|
||||
@@ -1262,7 +1289,7 @@ class repoModel extends model
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($object['tasks'][$taskID]);
|
||||
unset($objects['tasks'][$taskID]);
|
||||
}
|
||||
}
|
||||
if(isset($actions['bug']))
|
||||
@@ -1277,11 +1304,12 @@ class repoModel extends model
|
||||
$action->project = $productsAndProjects[$bugID]->project;
|
||||
foreach($bugActions as $bugAction => $params)
|
||||
{
|
||||
foreach($params as $field => $param) $this->post->set($field, $param);
|
||||
if($bugAction == 'resolve')
|
||||
{
|
||||
$this->post->set('resolvedBuild', 'trunk');
|
||||
$this->post->set('resolution', 'fixed');
|
||||
$changes = $this->bug->resolve($bugID);
|
||||
foreach($this->createActionChanges($log, $repoRoot, $scm) as $change) $changes[] = $change;
|
||||
if($changes)
|
||||
{
|
||||
$action->action = 'resolved';
|
||||
@@ -1289,7 +1317,7 @@ class repoModel extends model
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($object['bugs'][$bugID]);
|
||||
unset($objects['bugs'][$bugID]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1354,15 +1382,9 @@ class repoModel extends model
|
||||
$this->dao->update(TABLE_ACTION)->data($action)->where('id')->eq($record->id)->exec();
|
||||
if($changes)
|
||||
{
|
||||
$historyID = $this->dao->findByAction($record->id)->from(TABLE_HISTORY)->fetch('id');
|
||||
if($historyID)
|
||||
{
|
||||
$this->dao->update(TABLE_HISTORY)->data($changes)->where('id')->eq($historyID)->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->action->logHistory($record->id, array($changes));
|
||||
}
|
||||
$historyIdList = $this->dao->findByAction($record->id)->from(TABLE_HISTORY)->fetchPairs('id', 'id');
|
||||
if($historyIdList) $this->dao->delete()->from(TABLE_HISTORY)->where('id')->in($historyIdList)->exec();
|
||||
$this->loadModel('action')->logHistory($record->id, $changes);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1371,7 +1393,7 @@ class repoModel extends model
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->dao->lastInsertID();
|
||||
$this->action->logHistory($actionID, array($changes));
|
||||
$this->loadModel('action')->logHistory($actionID, $changes);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1404,14 +1426,15 @@ class repoModel extends model
|
||||
$diff .= $action == 'M' ? "$diffLink\n" : "\n" ;
|
||||
}
|
||||
}
|
||||
$changes = new stdclass();
|
||||
$changes->field = $scm == 'svn' ? 'subversion' : 'git';
|
||||
$changes->old = '';
|
||||
$changes->new = '';
|
||||
$changes->diff = trim($diff);
|
||||
$change = new stdclass();
|
||||
$change->field = $scm == 'svn' ? 'subversion' : 'git';
|
||||
$change->old = '';
|
||||
$change->new = '';
|
||||
$change->diff = trim($diff);
|
||||
$changes[] = $change;
|
||||
|
||||
$this->server->set('PHP_SELF', $oldSelf);
|
||||
return (array)$changes;
|
||||
return $changes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-110px'><?php echo $lang->repo->objectRule;?></th>
|
||||
<td>
|
||||
<td class='w-400px'>
|
||||
<div class='input-group'>
|
||||
<?php foreach($config->repo->rules['module'] as $module => $match):?>
|
||||
<span class='input-group-addon'><?php echo $lang->{$module}->common;?></span>
|
||||
@@ -28,6 +28,8 @@
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='w-150px'></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->repo->objectIdRule;?></th>
|
||||
@@ -49,16 +51,19 @@
|
||||
<?php echo html::input("rules[task][start]", $config->repo->rules['task']['start'], "class='form-control'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->task->common . $space . $lang->task->finish;?></span>
|
||||
<?php echo html::input("rules[task][finish]", $config->repo->rules['task']['finish'], "class='form-control'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->task->common . $space . $lang->task->logEfforts;?></span>
|
||||
<?php echo html::input("rules[task][logEfforts]", $config->repo->rules['task']['logEfforts'], "class='form-control'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->bug->common . $space . $lang->bug->resolve;?></span>
|
||||
<?php echo html::input("rules[bug][resolve]", $config->repo->rules['bug']['resolve'], "class='form-control'");?>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->repo->manHourRule;?></th>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'><?php echo $lang->task->common . $space . $lang->task->logEfforts;?></span>
|
||||
<?php echo html::input("rules[task][logEfforts]", $config->repo->rules['task']['logEfforts'], "class='form-control'");?>
|
||||
</div>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'><?php echo $lang->task->consumed?></span>
|
||||
<?php echo html::input("rules[task][consumed]", $config->repo->rules['task']['consumed'], "class='form-control'");?>
|
||||
@@ -75,24 +80,18 @@
|
||||
<span class='input-group-addon'><?php echo $lang->repo->ruleUnit?></span>
|
||||
<?php echo html::input("rules[unit][left]", $config->repo->rules['unit']['left'], "class='form-control'");?>
|
||||
</div>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'><?php echo $lang->bug->resolvedBuild?></span>
|
||||
<?php echo html::input("rules[bug][resolvedBuild]", $config->repo->rules['bug']['resolvedBuild'], "class='form-control'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->repo->mark?></span>
|
||||
<?php echo html::input("rules[mark][resolvedBuild]", $config->repo->rules['mark']['resolvedBuild'], "class='form-control'");?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td colspan='2'><?php echo $lang->repo->ruleSplit;?></td>
|
||||
<td class='red' colspan='3'><?php echo $lang->repo->ruleSplit;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->repo->rules->exampleLabel;?></th>
|
||||
<td colspan='2' id='example'></td>
|
||||
<td colspan='3' id='example'></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center'>
|
||||
<td colspan='4' class='text-center'>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php echo html::backButton();?>
|
||||
</td>
|
||||
|
||||
@@ -1432,7 +1432,7 @@ class story extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function report($productID, $browseType, $branchID, $moduleID, $chartType = 'pie')
|
||||
public function report($productID, $browseType, $branchID, $moduleID, $chartType = 'pie', $storyType = 'story')
|
||||
{
|
||||
$this->loadModel('report');
|
||||
$this->view->charts = array();
|
||||
@@ -1460,6 +1460,7 @@ class story extends control
|
||||
$this->view->productID = $productID;
|
||||
$this->view->branchID = $branchID;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->storyType = $storyType;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->chartType = $chartType;
|
||||
$this->view->checkedCharts = $this->post->charts ? join(',', $this->post->charts) : '';
|
||||
|
||||
@@ -24,6 +24,7 @@ $lang->story->edit = "Edit Story";
|
||||
$lang->story->batchEdit = "Batch Edit";
|
||||
$lang->story->subdivide = 'Decompose';
|
||||
$lang->story->subdivideAction = 'Decompose Story';
|
||||
$lang->story->splitRequirent = 'Decompose';
|
||||
$lang->story->close = 'Close';
|
||||
$lang->story->closeAction = 'Close Story';
|
||||
$lang->story->batchClose = 'Batch Close';
|
||||
|
||||
@@ -24,6 +24,7 @@ $lang->story->edit = "编辑";
|
||||
$lang->story->batchEdit = "批量编辑";
|
||||
$lang->story->subdivide = '细分';
|
||||
$lang->story->subdivideAction = "细分{$lang->storyCommon}";
|
||||
$lang->story->splitRequirent = '拆分';
|
||||
$lang->story->close = '关闭';
|
||||
$lang->story->closeAction = "关闭{$lang->storyCommon}";
|
||||
$lang->story->batchClose = '批量关闭';
|
||||
|
||||
@@ -840,7 +840,7 @@ class storyModel extends model
|
||||
->batchCheck($this->config->story->close->requiredFields, 'notempty')
|
||||
->where('id')->eq($storyID)->exec();
|
||||
$changes = common::createChanges($oldStory, $newStory);
|
||||
$actionID = $this->action->create('story', $storyID, 'Closed', '', 'Subdivided');
|
||||
$actionID = $this->loadModel('action')->create('story', $storyID, 'Closed', '', 'Subdivided');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
|
||||
return $actionID;
|
||||
|
||||
@@ -134,5 +134,6 @@ $(function()
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php js::set('storyType', $type);?>
|
||||
<?php include '../../common/view/pastetext.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -88,4 +88,5 @@
|
||||
<?php js::set('oldStorySpec', $story->spec);?>
|
||||
<?php js::set('oldStoryVerify', $story->verify);?>
|
||||
<?php js::set('changed', 0);?>
|
||||
<?php js::set('storyType', $story->type);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -216,4 +216,5 @@
|
||||
</div>
|
||||
<?php js::set('projectID', $projectID);?>
|
||||
<?php js::set('storyModule', $lang->story->module);?>
|
||||
<?php js::set('storyType', $type);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -278,4 +278,5 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php js::set('storyType', $story->type);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -86,4 +86,5 @@
|
||||
<?php js::set('browseType', $browseType);?>
|
||||
<?php js::set('branchID', $branchID);?>
|
||||
<?php js::set('moduleID', $moduleID);?>
|
||||
<?php js::set('storyType', $storyType);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -94,4 +94,5 @@ var assignedTo = '<?php $story->lastEditedBy ? print($story->lastEditedBy) : pri
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('storyID', $story->id);?>
|
||||
<?php js::set('storyType', $story->type);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -74,9 +74,10 @@
|
||||
common::printIcon('story', 'review', "storyID=$story->id", $story, 'button', '', '', 'showinonlybody');
|
||||
if($story->status != 'closed' and !isonlybody())
|
||||
{
|
||||
$misc = "class='btn' data-toggle='modal' data-type='iframe' data-width='95%'";
|
||||
$link = $this->createLink('story', 'batchCreate', "productID=$story->product&branch=$story->branch&moduleID=$story->module&storyID=$story->id", '', true);
|
||||
if(common::hasPriv('story', 'batchCreate')) echo html::a($link, "<i class='icon icon-sitemap'></i> " . $lang->story->subdivide, '', $misc);
|
||||
$divideLang = ($story->type == 'story' || !$story->type) ? $lang->story->subdivide : $lang->story->splitRequirent;
|
||||
$misc = "class='btn divideStory' data-toggle='modal' data-type='iframe' data-width='95%'";
|
||||
$link = $this->createLink('story', 'batchCreate', "productID=$story->product&branch=$story->branch&moduleID=$story->module&storyID=$story->id", '', true);
|
||||
if(common::hasPriv('story', 'batchCreate')) echo html::a($link, "<i class='icon icon-sitemap'></i> " . $divideLang, '', $misc);
|
||||
}
|
||||
|
||||
common::printIcon('story', 'assignTo', "storyID=$story->id", $story, 'button', '', '', 'iframe showinonlybody', true);
|
||||
@@ -108,7 +109,7 @@
|
||||
|
||||
echo "<div class='divider'></div>";
|
||||
common::printIcon('story', 'edit', "storyID=$story->id", $story);
|
||||
common::printIcon('story', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&storyID=$story->id", $story, 'button', 'copy', '', '', true, "data-width='1050'");
|
||||
common::printIcon('story', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&storyID=$story->id&projectID=0&bugID=0&planID=0&todoID=0&extra=&type=$story->type", $story, 'button', 'copy', '', '', true, "data-width='1050'");
|
||||
common::printIcon('story', 'delete', "storyID=$story->id", $story, 'button', 'trash', 'hiddenwin');
|
||||
?>
|
||||
<?php endif;?>
|
||||
@@ -400,6 +401,7 @@ js::set('createStory', $lang->story->create);
|
||||
js::set('productID', $story->product);
|
||||
js::set('branch', $story->branch);
|
||||
js::set('moduleID', $story->module);
|
||||
js::set('storyType', $story->type);
|
||||
?>
|
||||
<?php include '../../common/view/syntaxhighlighter.html.php';?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+22
-41
@@ -89,7 +89,11 @@ class svnModel extends model
|
||||
$this->printLog("get this repo logs.");
|
||||
$lastInDB = $this->repo->getLatestCommit($repoID);
|
||||
/* Ignore unsynced repo. */
|
||||
if(empty($lastInDB)) continue;
|
||||
if(empty($lastInDB))
|
||||
{
|
||||
$this->printLog("Please init repo {$repo->name}");
|
||||
continue;
|
||||
}
|
||||
|
||||
$version = $lastInDB->commit;
|
||||
$logs = $this->repo->getUnsyncCommits($repo);
|
||||
@@ -139,15 +143,23 @@ class svnModel extends model
|
||||
$jobs = zget($tagGroup, $repoID, array());
|
||||
foreach($jobs as $job)
|
||||
{
|
||||
$dirs = $this->getRepoTags($repo, $job->svnDir);
|
||||
end($dirs);
|
||||
$lastTag = current($dirs);
|
||||
if($lastTag != $job->lastTag)
|
||||
$dirs = $this->getRepoTags($repo, $job->svnDir);
|
||||
$isNew = false;
|
||||
$lastTag = '';
|
||||
foreach($dirs as $dir)
|
||||
{
|
||||
$tag = rtrim($repo->path , '/') . '/' . trim($job->svnDir, '/') . '/' . $lastTag;
|
||||
if($dir == $job->lastTag)
|
||||
{
|
||||
$isNew = true;
|
||||
continue;
|
||||
}
|
||||
if(!$isNew) continue;
|
||||
|
||||
$lastTag = $dir;
|
||||
$tag = rtrim($repo->path , '/') . '/' . trim($job->svnDir, '/') . '/' . $lastTag;
|
||||
$this->compile->createByJob($job->id, $tag, 'tag');
|
||||
$this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($job->id)->exec();
|
||||
}
|
||||
if($lastTag) $this->dao->update(TABLE_JOB)->set('lastTag')->eq($lastTag)->where('id')->eq($job->id)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -258,40 +270,9 @@ class svnModel extends model
|
||||
*/
|
||||
public function getRepoTags($repo, $path)
|
||||
{
|
||||
$parent = '/';
|
||||
if($repo->prefix) $parent = rtrim($repo->prefix, '/');
|
||||
if(trim($path, '/')) $parent = rtrim($repo->prefix, '/') . '/' . trim($path, '/');
|
||||
$stmt = $this->dao->select('t1.*,t2.revision as svnRevision,t2.time')->from(TABLE_REPOFILES)->alias('t1')
|
||||
->leftJoin(TABLE_REPOHISTORY)->alias('t2')->on('t1.revision = t2.id')
|
||||
->where('t1.repo')->eq($repo->id)
|
||||
->andWhere('t1.type')->eq('dir')
|
||||
->andWhere('t1.parent')->eq($parent)
|
||||
->orderBy('path,svnRevision,time')
|
||||
->query();
|
||||
|
||||
$dirs = array();
|
||||
while($row = $stmt->fetch())
|
||||
{
|
||||
$path = $row->path;
|
||||
if($repo->prefix) $path = str_replace($repo->prefix, '', $path);
|
||||
if(empty($path)) $path = '/';
|
||||
|
||||
$dirs[$path] = $row;
|
||||
if($row->action == 'D') unset($dirs[$path]);
|
||||
}
|
||||
|
||||
$dirTime = array();
|
||||
foreach($dirs as $dirPath => $dir) $dirTime[$dir->time][$dirPath] = $dirPath;
|
||||
|
||||
ksort($dirTime);
|
||||
$dirPairs = array();
|
||||
foreach($dirTime as $time => $dirPaths)
|
||||
{
|
||||
ksort($dirPaths);
|
||||
foreach($dirPaths as $dirPath) $dirPairs[$dirPath] = basename($dirPath);
|
||||
}
|
||||
|
||||
return $dirPairs;
|
||||
$scm = $this->app->loadClass('scm');
|
||||
$scm->setEngine($repo);
|
||||
return $scm->tags($path);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -117,3 +117,4 @@ $lang->upgrade->fromVersions['11_6_4'] = '11.6.4';
|
||||
$lang->upgrade->fromVersions['11_6_5'] = '11.6.5';
|
||||
$lang->upgrade->fromVersions['11_7'] = '11.7';
|
||||
$lang->upgrade->fromVersions['12_0'] = '12.0';
|
||||
$lang->upgrade->fromVersions['12_0_1'] = '12.0.1';
|
||||
|
||||
@@ -566,7 +566,7 @@ class upgradeModel extends model
|
||||
case '12_0_1':
|
||||
$this->saveLogs('Execute 12_0_1');
|
||||
$this->execSQL($this->getUpgradeFile('12.0.1'));
|
||||
$this->saveRepo();
|
||||
$this->importRepoFromConfig();
|
||||
$this->appendExec('12_0_1');
|
||||
}
|
||||
|
||||
@@ -730,6 +730,7 @@ class upgradeModel extends model
|
||||
}
|
||||
case '11_7' : $confirmContent .= file_get_contents($this->getUpgradeFile('11.7'));
|
||||
case '12_0' :
|
||||
case '12_0_1': $confirmContent .= file_get_contents($this->getUpgradeFile('12.0.1'));
|
||||
}
|
||||
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
|
||||
}
|
||||
@@ -3641,9 +3642,9 @@ class upgradeModel extends model
|
||||
* Save repo from svn and git config.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function saveRepo()
|
||||
public function importRepoFromConfig()
|
||||
{
|
||||
$this->app->loadConfig('svn');
|
||||
if(isset($this->config->svn->repos))
|
||||
@@ -3667,7 +3668,7 @@ class upgradeModel extends model
|
||||
$svnRepo->encrypt = 'base64';
|
||||
$svnRepo->encoding = zget($repo, 'encoding', $this->config->svn->encoding);
|
||||
|
||||
$scm->setEngine($repo);
|
||||
$scm->setEngine($svnRepo);
|
||||
$info = $scm->info('');
|
||||
$svnRepo->prefix = empty($info->root) ? '' : trim(str_ireplace($info->root, '', str_replace('\\', '/', $svnRepo->path)), '/');
|
||||
if($svnRepo->prefix) $svnRepo->prefix = '/' . $svnRepo->prefix;
|
||||
@@ -3701,6 +3702,7 @@ class upgradeModel extends model
|
||||
$this->dao->insert(TABLE_REPO)->data($gitRepo)->exec();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,11 +34,12 @@ $lang->webhook->date = 'Datum';
|
||||
$lang->webhook->data = 'Daten';
|
||||
$lang->webhook->result = 'Ergebnis';
|
||||
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dingding'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dingapi'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['weixin'] = 'Enterprise WeChat';
|
||||
$lang->webhook->typeList['default'] = 'SDtandard';
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dinggroup'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dinguser'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['wechatgroup'] = 'Enterprise WeChat Robot';
|
||||
$lang->webhook->typeList['wechatuser'] = 'Enterprise WeChat Notifier';
|
||||
$lang->webhook->typeList['default'] = 'Others';
|
||||
|
||||
$lang->webhook->sendTypeList['sync'] = 'Synchron';
|
||||
$lang->webhook->sendTypeList['async'] = 'Asynchron';
|
||||
@@ -46,9 +47,17 @@ $lang->webhook->sendTypeList['async'] = 'Asynchron';
|
||||
$lang->webhook->dingAgentId = 'AgentID';
|
||||
$lang->webhook->dingAppKey = 'AppKey';
|
||||
$lang->webhook->dingAppSecret = 'AppSecret';
|
||||
$lang->webhook->dingUserid = 'UserID';
|
||||
$lang->webhook->dingUserid = 'Ding Userid';
|
||||
$lang->webhook->dingBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->wechatCorpId = 'Corp ID';
|
||||
$lang->webhook->wechatCorpSecret = 'Corp Secret';
|
||||
$lang->webhook->wechatAgentId = 'Agent ID';
|
||||
$lang->webhook->wechatUserid = 'Wechat Userid';
|
||||
$lang->webhook->wechatBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->zentaoUser = 'Zentao User';
|
||||
|
||||
$lang->webhook->dingBindStatusList['0'] = 'No';
|
||||
$lang->webhook->dingBindStatusList['1'] = 'Yes';
|
||||
|
||||
@@ -71,7 +80,9 @@ $lang->webhook->note->async = 'Wenn der Sendungstyp asynchron ist, wird Cron b
|
||||
$lang->webhook->note->bind = 'Bind User is only required for Dingding Notifier.';
|
||||
$lang->webhook->note->product = "Alle Aktionen triggern den Hook wenn das {$lang->productCommon} leer ist, andernsfalls werden nur Aktionen des {$lang->productCommon} ausgelöst.";
|
||||
$lang->webhook->note->project = "Alle Aktionen triggern den Hook wenn das {$lang->projectCommon} leer ist, andernsfalls werden nur Aktionen des {$lang->projectCommon} ausgelöst.";
|
||||
$lang->webhook->note->dingKey = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->dingHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
$lang->webhook->note->wechatHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/367.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->typeList['bearychat'] = 'Fügen Sie einen ZenTao bot in bearychat ein um die Adresse des Webhooks zu erhalten.';
|
||||
$lang->webhook->note->typeList['dingding'] = 'Fügen Sie einen eigenen bot in dingding ein um die Adresse des Webhooks zu erhalten.';
|
||||
|
||||
@@ -34,11 +34,12 @@ $lang->webhook->date = 'Sent';
|
||||
$lang->webhook->data = 'Data';
|
||||
$lang->webhook->result = 'Result';
|
||||
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dingding'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dingapi'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['weixin'] = 'Enterprise WeChat';
|
||||
$lang->webhook->typeList['default'] = 'Others';
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dinggroup'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dinguser'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['wechatgroup'] = 'Enterprise WeChat Robot';
|
||||
$lang->webhook->typeList['wechatuser'] = 'Enterprise WeChat Notifier';
|
||||
$lang->webhook->typeList['default'] = 'Others';
|
||||
|
||||
$lang->webhook->sendTypeList['sync'] = 'Synchronous';
|
||||
$lang->webhook->sendTypeList['async'] = 'Asynchronous';
|
||||
@@ -46,9 +47,17 @@ $lang->webhook->sendTypeList['async'] = 'Asynchronous';
|
||||
$lang->webhook->dingAgentId = 'AgentID';
|
||||
$lang->webhook->dingAppKey = 'AppKey';
|
||||
$lang->webhook->dingAppSecret = 'AppSecret';
|
||||
$lang->webhook->dingUserid = 'UserID';
|
||||
$lang->webhook->dingUserid = 'Ding UserID';
|
||||
$lang->webhook->dingBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->wechatCorpId = 'Corp ID';
|
||||
$lang->webhook->wechatCorpSecret = 'Corp Secret';
|
||||
$lang->webhook->wechatAgentId = 'Agent ID';
|
||||
$lang->webhook->wechatUserid = 'Wechat Userid';
|
||||
$lang->webhook->wechatBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->zentaoUser = 'Zentao User';
|
||||
|
||||
$lang->webhook->dingBindStatusList['0'] = 'No';
|
||||
$lang->webhook->dingBindStatusList['1'] = 'Yes';
|
||||
|
||||
@@ -71,7 +80,9 @@ $lang->webhook->note->async = 'If it is asynchronous, you have to go to Admin-
|
||||
$lang->webhook->note->bind = 'Bind User is only required for Dingding Notifier.';
|
||||
$lang->webhook->note->product = "All actions will trigger the hook if {$lang->productCommon} is empty, or only actions of selected {$lang->productCommon} will trigger it.";
|
||||
$lang->webhook->note->project = "All actions will trigger the hook if {$lang->projectCommon} is empty, or only actions of selected {$lang->projectCommon} will trigger it.";
|
||||
$lang->webhook->note->dingKey = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->dingHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
$lang->webhook->note->wechatHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/367.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->typeList['bearychat'] = 'Add a ZenTao bot in bearychat and get the webhook url.';
|
||||
$lang->webhook->note->typeList['dingding'] = 'Add a customized bot in dingding and get the webhook url.';
|
||||
|
||||
@@ -34,11 +34,12 @@ $lang->webhook->date = 'Date envoi';
|
||||
$lang->webhook->data = 'Donnée';
|
||||
$lang->webhook->result = 'Résultat';
|
||||
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dingding'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dingapi'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['weixin'] = 'Enterprise WeChat';
|
||||
$lang->webhook->typeList['default'] = 'Autre';
|
||||
$lang->webhook->typeList[''] = '';
|
||||
$lang->webhook->typeList['dinggroup'] = 'Dingding Robot';
|
||||
$lang->webhook->typeList['dinguser'] = 'Dingding Notifier';
|
||||
$lang->webhook->typeList['wechatgroup'] = 'Enterprise WeChat Robot';
|
||||
$lang->webhook->typeList['wechatuser'] = 'Enterprise WeChat Notifier';
|
||||
$lang->webhook->typeList['default'] = 'Others';
|
||||
|
||||
$lang->webhook->sendTypeList['sync'] = 'Synchrone';
|
||||
$lang->webhook->sendTypeList['async'] = 'Asynchrone';
|
||||
@@ -46,9 +47,17 @@ $lang->webhook->sendTypeList['async'] = 'Asynchrone';
|
||||
$lang->webhook->dingAgentId = 'AgentID';
|
||||
$lang->webhook->dingAppKey = 'AppKey';
|
||||
$lang->webhook->dingAppSecret = 'AppSecret';
|
||||
$lang->webhook->dingUserid = 'UserID';
|
||||
$lang->webhook->dingUserid = 'Ding Userid';
|
||||
$lang->webhook->dingBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->wechatCorpId = 'Corp ID';
|
||||
$lang->webhook->wechatCorpSecret = 'Corp Secret';
|
||||
$lang->webhook->wechatAgentId = 'Agent ID';
|
||||
$lang->webhook->wechatUserid = 'Wechat Userid';
|
||||
$lang->webhook->wechatBindStatus = 'Bind Status';
|
||||
|
||||
$lang->webhook->zentaoUser = 'Zentao User';
|
||||
|
||||
$lang->webhook->dingBindStatusList['0'] = 'No';
|
||||
$lang->webhook->dingBindStatusList['1'] = 'Yes';
|
||||
|
||||
@@ -71,7 +80,9 @@ $lang->webhook->note->async = "Si le type d'envoi est asynchrone, vous devez a
|
||||
$lang->webhook->note->bind = 'Bind User is only required for Dingding Notifier.';
|
||||
$lang->webhook->note->product = "Toutes les actions vont déclencher le flux si {$lang->productCommon} est vide, ou seulement les actions du {$lang->productCommon} sélectionné vont le déclencher.";
|
||||
$lang->webhook->note->project = "Toutes les actions vont déclencher le flux si {$lang->projectCommon} est vide, ou seulement les actions du {$lang->projectCommon} sélectionné vont le déclencher.";
|
||||
$lang->webhook->note->dingKey = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->dingHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/358.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
$lang->webhook->note->wechatHelp = " <a href='http://www.zentao.net/book/zentaopmshelp/367.html' target='_blank'><i class='icon-help'></i></a>";
|
||||
|
||||
$lang->webhook->note->typeList['bearychat'] = "Ajout d'un bot a ZenTao dans bearychat et obtenez l'url du flux.";
|
||||
$lang->webhook->note->typeList['dingding'] = "Ajout d'un bot personnalisé dans dingding et obtenez l'url du flux.";
|
||||
|
||||
@@ -76,7 +76,7 @@ $lang->webhook->confirmDelete = '您確認要刪除該webhook嗎?';
|
||||
$lang->webhook->trimWords = '了';
|
||||
|
||||
$lang->webhook->note = new stdClass();
|
||||
$lang->webhook->note->async = '非同步需要打開計劃任務';
|
||||
$lang->webhook->note->async = '非同步需要打開計劃任務。';
|
||||
$lang->webhook->note->bind = '只有[釘釘/微信]工作通知類型才需要綁定用戶。';
|
||||
$lang->webhook->note->product = "此項為空時所有{$lang->productCommon}的動作都會觸發鈎子,否則只有關聯{$lang->productCommon}的動作才會觸發。";
|
||||
$lang->webhook->note->project = "此項為空時所有{$lang->projectCommon}的動作都會觸發鈎子,否則只有關聯{$lang->projectCommon}的動作才會觸發。";
|
||||
|
||||
@@ -168,7 +168,7 @@ class webhookModel extends model
|
||||
$webhook->secret = json_encode($webhook->secret);
|
||||
$webhook->url = $this->config->webhook->dingapiUrl;
|
||||
}
|
||||
elseif ($webhook->type == 'wechatuser')
|
||||
elseif($webhook->type == 'wechatuser')
|
||||
{
|
||||
$webhook->secret = array();
|
||||
$webhook->secret['agentId'] = $webhook->wechatAgentId;
|
||||
@@ -234,7 +234,7 @@ class webhookModel extends model
|
||||
|
||||
$webhook->secret = json_encode($webhook->secret);
|
||||
}
|
||||
elseif ($webhook->type == 'wechatuser')
|
||||
elseif($webhook->type == 'wechatuser')
|
||||
{
|
||||
$webhook->secret = array();
|
||||
$webhook->secret['agentId'] = $webhook->wechatAgentId;
|
||||
@@ -574,7 +574,7 @@ class webhookModel extends model
|
||||
$result = $dingapi->send($openIdList, $sendData);
|
||||
return json_encode($result);
|
||||
}
|
||||
elseif ($webhook->type == 'wechatuser')
|
||||
elseif($webhook->type == 'wechatuser')
|
||||
{
|
||||
$this->app->loadClass('wechatapi', true);
|
||||
$wechatapi = new wechatapi($webhook->secret->appKey, $webhook->secret->appSecret, $webhook->secret->agentId);
|
||||
@@ -645,8 +645,8 @@ class webhookModel extends model
|
||||
/**
|
||||
* Save log.
|
||||
*
|
||||
* @param int $actionID
|
||||
* @param object $webhook
|
||||
* @param int $actionID
|
||||
* @param string $data
|
||||
* @param string $result
|
||||
* @access public
|
||||
|
||||
Reference in New Issue
Block a user