Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3
This commit is contained in:
+1
-1
@@ -25,4 +25,4 @@ ALTER TABLE `zt_testtask` ADD `type` varchar(255) NOT NULL DEFAULT '' AFTER `bui
|
||||
ALTER TABLE `zt_testtask` ADD `testreport` mediumint(8) unsigned NOT NULL AFTER `status`;
|
||||
ALTER TABLE `zt_story` MODIFY COLUMN `reviewedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00';
|
||||
|
||||
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'story', '', 'reivewRules', 'allpass');
|
||||
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'story', '', 'reviewRules', 'allpass');
|
||||
|
||||
+1
-1
@@ -4208,4 +4208,4 @@ INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', 'global', 'mode', 'new');
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'project', '', 'unitList', 'CNY,USD');
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'project', '', 'defaultCurrency', 'CNY');
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'story', '', 'reivewRules', 'allpass');
|
||||
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'story', '', 'reviewRules', 'allpass');
|
||||
|
||||
+47
-45
@@ -105,51 +105,53 @@ $lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> als <strong>$extra</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, hinzugefügt durch <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> zugewisen an <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, geschlossen von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> löschte <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> bearbeitete <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, wiederhergestellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, versteckt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, hinzugefügt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, aktiviert von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, geblockt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, verschoben von <strong>$actor</strong> , ursprünglich "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> hat die Anpassung der Story bestätigt. Das letzte Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> hat die Anpassung des Falls bestätigt. Das letzte Build ist <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> hat den Bug bestätigt.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, konvertiert von <strong>$actor</strong>. Die ID war <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, gestartet von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, zurückgestellt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, ausgesetzt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, aufgenommen von <strong>$actor</strong> und hat <strong>$extra</strong> Stunden aufgebraucht.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> Stunden angepaast.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> Stunden gelöscht.';
|
||||
$lang->action->desc->canceled = '$date, abgebrochen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, abgeschlossen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, pausiert von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, überprüft von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> wurde geändert. Es war "%s" und ist jetzt "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> wurde geändert. Die Differenz ist ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date Verknüpft mit <strong>$extra</strong> von <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> als <strong>$extra</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, hinzugefügt durch <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> zugewisen an <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, geschlossen von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> löschte <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> bearbeitete <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, wiederhergestellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, versteckt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, hinzugefügt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, aktiviert von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, geblockt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, verschoben von <strong>$actor</strong> , ursprünglich "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> hat die Anpassung der Story bestätigt. Das letzte Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> hat die Anpassung des Falls bestätigt. Das letzte Build ist <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> hat den Bug bestätigt.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, konvertiert von <strong>$actor</strong>. Die ID war <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, gestartet von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, zurückgestellt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, ausgesetzt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, aufgenommen von <strong>$actor</strong> und hat <strong>$extra</strong> Stunden aufgebraucht.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> Stunden angepaast.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> Stunden gelöscht.';
|
||||
$lang->action->desc->canceled = '$date, abgebrochen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, abgeschlossen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, pausiert von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, überprüft von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> wurde geändert. Es war "%s" und ist jetzt "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> wurde geändert. Die Differenz ist ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date Verknüpft mit <strong>$extra</strong> von <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* 子任务修改父任务的历史操作记录 */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
|
||||
+47
-45
@@ -109,51 +109,53 @@ $lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, added by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> deleted <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> edited <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, added by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong> , which was "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, recorded by <strong>$actor</strong> and it cost <strong>$extra</strong> hours.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, added by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> deleted <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> edited <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, added by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong> , which was "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, recorded by <strong>$actor</strong> and it cost <strong>$extra</strong> hours.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
|
||||
+47
-45
@@ -105,51 +105,53 @@ $lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> en tant que <strong>$extra</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, initié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, créé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, ajouter par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, modifié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, édité par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> affecté à <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, fermé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> a supprimé <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> a édité <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restauré par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, masqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, ajouté par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, bloqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, déplacé par <strong>$actor</strong> , qui était "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> a confirmé la modification de la story. Le dernier build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> a confirmé la modification du CasTest. Le dernier build est <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> a confirmé le Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converti par <strong>$actor</strong>. Son ID était <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, commencé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, reprise par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, ajourné par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspendu par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, enregistré par <strong>$actor</strong> et son coût est de <strong>$extra</strong> heures.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> a édité son temps estimé.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> a supprimé son estimation de temps.';
|
||||
$lang->action->desc->canceled = '$date, annulé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, terminé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, mis en pause par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verifié par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> a changé. Il est passé de "%s" à "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> a changé. La différence est ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, affecté à <strong>$extra</strong> par <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> en tant que <strong>$extra</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, initié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, créé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, ajouter par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, modifié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, édité par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> affecté à <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, fermé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> a supprimé <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> a édité <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restauré par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, masqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, ajouté par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, bloqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, déplacé par <strong>$actor</strong> , qui était "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> a confirmé la modification de la story. Le dernier build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> a confirmé la modification du CasTest. Le dernier build est <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> a confirmé le Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converti par <strong>$actor</strong>. Son ID était <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, commencé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, reprise par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, ajourné par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspendu par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, enregistré par <strong>$actor</strong> et son coût est de <strong>$extra</strong> heures.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> a édité son temps estimé.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> a supprimé son estimation de temps.';
|
||||
$lang->action->desc->canceled = '$date, annulé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, terminé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, mis en pause par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verifié par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> a changé. Il est passé de "%s" à "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> a changé. La différence est ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, affecté à <strong>$extra</strong> par <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* 子任务修改父任务的历史操作记录 */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> a créé un sous-tâche <strong>$extra</strong>。' . "\n";
|
||||
|
||||
+47
-45
@@ -105,51 +105,53 @@ $lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> như <strong>$extra</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, thêm bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, được đóng bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> đã xóa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> đã sửa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, khôi phục bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, ẩn bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, được thêm bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, kích hoạt bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, chuyển bởi <strong>$actor</strong> , cái là "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, ghi nhận bởi <strong>$actor</strong> and it cost <strong>$extra</strong> giờ.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, liên kết tới <strong>$extra</strong> bởi <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> như <strong>$extra</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, thêm bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, được đóng bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> đã xóa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> đã sửa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, khôi phục bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, ẩn bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, được thêm bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, kích hoạt bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, chuyển bởi <strong>$actor</strong> , cái là "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, ghi nhận bởi <strong>$actor</strong> and it cost <strong>$extra</strong> giờ.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, liên kết tới <strong>$extra</strong> bởi <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
|
||||
@@ -109,51 +109,53 @@ $lang->action->objectTypes['gapanalysis'] = '能力差距分析';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认' . $lang->SRCommon . '变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 确认用例变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 继续。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 记录工时,消耗 <strong>$extra</strong> 小时。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 编辑工时。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 删除工时。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暂停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 验收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 关联到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解决。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 维护。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认' . $lang->SRCommon . '变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 确认用例变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 继续。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 记录工时,消耗 <strong>$extra</strong> 小时。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 编辑工时。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 删除工时。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暂停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 验收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 关联到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date 由 <strong>$actor</strong> 关联到测试单 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解决。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 维护。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->run = '$date, 由 <strong>$actor</strong> 执行。' . "\n";
|
||||
|
||||
/* 用来描述和父子任务相关的操作历史记录。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 创建子任务 <strong>$extra</strong>。' . "\n";
|
||||
|
||||
@@ -106,51 +106,53 @@ $lang->action->objectTypes['whitelist'] = '白名單';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認' . $lang->SRCommon . '變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 確認用例變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 繼續。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 掛起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 記錄工時,消耗 <strong>$extra</strong> 小時。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 編輯工時。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 刪除工時。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暫停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 驗收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 關聯到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解決。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 維護。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認' . $lang->SRCommon . '變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 確認用例變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 繼續。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 掛起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 記錄工時,消耗 <strong>$extra</strong> 小時。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 編輯工時。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 刪除工時。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暫停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 驗收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 關聯到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date 由 <strong>$actor</strong> 關聯到測試單 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解決。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 維護。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->run = '$date, 由 <strong>$actor</strong> 執行。' . "\n";
|
||||
|
||||
/* 用來描述和父子任務相關的操作歷史記錄。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 創建子任務 <strong>$extra</strong>。' . "\n";
|
||||
|
||||
@@ -80,7 +80,7 @@ class actionModel extends model
|
||||
|
||||
if($objectType == 'story' and $actionType !== 'reviewed' and strpos('reviewclosed,passreviewed,clarifyreviewed', $actionType) !== false) $action->actor = 'System';
|
||||
|
||||
if($objectType == 'case' and (strpos(',linked2testtask,unlinkedfromtesttask,assigned,run,', ',' . $actionType . ',') !== false))
|
||||
if($objectType == 'case' and (strpos(',linked2testtask,unlinkedfromtesttask,assigned,run,', ',' . $actionType . ',') !== false) and (int)$extra)
|
||||
{
|
||||
$testtask = $this->dao->select('project,execution')->from(TABLE_TESTTASK)->where('id')->eq((int)$extra)->fetch();
|
||||
$action->project = $testtask->project;
|
||||
@@ -631,7 +631,7 @@ class actionModel extends model
|
||||
*/
|
||||
if(empty($desc))
|
||||
{
|
||||
if($action->objectType == 'story' and $action->action = 'reviewed' and strpos($action->extra, ',') !== false)
|
||||
if($action->objectType == 'story' and $action->action == 'reviewed' and strpos($action->extra, ',') !== false)
|
||||
{
|
||||
$desc = $this->lang->$objectType->action->rejectreviewed;
|
||||
}
|
||||
|
||||
@@ -182,10 +182,10 @@ $lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new'
|
||||
/* Scrum menu. */
|
||||
$lang->scrum->menu = new stdclass();
|
||||
$lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|index|project=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|objectLibs|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport,execution', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
|
||||
@@ -1399,16 +1399,19 @@ EOD;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
if(strtolower($key) == 'uid') continue;
|
||||
if(strtolower($key) == 'finisheddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'canceleddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'closeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'finisheddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'canceleddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'hangupeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'lastcheckeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'activateddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'closeddate' && $value == '') continue;
|
||||
|
||||
if(isset($old->$key) and $value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or
|
||||
substr_count($old->$key, "\n") > 1 or
|
||||
strpos('name,title,desc,spec,steps,content,digest,verify,report,analysis,prevention,resolution', strtolower($key)) !== false)
|
||||
strpos('name,title,desc,spec,steps,content,digest,verify,report,analysis,summary,prevention,resolution', strtolower($key)) !== false)
|
||||
{
|
||||
$diff = commonModel::diff($old->$key, $value);
|
||||
}
|
||||
@@ -1720,7 +1723,7 @@ EOD;
|
||||
$method = $this->app->rawMethod;
|
||||
}
|
||||
|
||||
if(!empty($this->app->user->modifyPassword) and (($module != 'my' or $method != 'changepassword') and ($module != 'user' or $method != 'logout'))) die(js::locate(helper::createLink('my', 'changepassword', '', '', true)));
|
||||
if(!empty($this->app->user->modifyPassword) and (($module != 'user' or $method != 'deny') and ($module != 'my' or $method != 'changepassword') and ($module != 'user' or $method != 'logout'))) die(js::locate(helper::createLink('my', 'changepassword', '', '', true)));
|
||||
if($this->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
|
||||
@@ -966,6 +966,7 @@ class execution extends control
|
||||
*/
|
||||
public function testreport($executionID = 0, $objectType = 'execution', $extra = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
if($this->app->openApp == 'project') $this->loadModel('project')->setMenu($this->session->project);
|
||||
echo $this->fetch('testreport', 'browse', "objectID=$executionID&objectType=$objectType&extra=$extra&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID");
|
||||
}
|
||||
|
||||
|
||||
@@ -312,6 +312,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Kein verknüpftes {$lang->productCommon} in {$lang->executionCommon} gefunden. Sie werden auf die {$lang->productCommon} Seite geleitet.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} Kann nicht mit mehreren identischen {$lang->productCommon} verknüpft werden";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Zugriff zu {$lang->executionCommon} verweigert!";
|
||||
$lang->execution->tips = 'Hinweis';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} wurde erstellt. Als nächstes können Sie ";
|
||||
|
||||
@@ -312,6 +312,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Your access to {$lang->executionCommon} is denied!";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} is created. Next you can ";
|
||||
|
||||
@@ -312,6 +312,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Aucun {$lang->productCommon} n'est associé à ce {$lang->executionCommon}. Vous allez être redirigé vers la page {$lang->productCommon} pour en associer un.";
|
||||
$lang->execution->errorSameProducts = "Ce {$lang->executionCommon} ne peut pas être associé deux fois au même {$lang->productCommon}. Imaginez un peu les résultats !";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Votre accès au {$lang->executionCommon} est refusé ! Désolé.";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "Le {$lang->executionCommon} a été créé avec succès ! Ensuite vous pouvez ";
|
||||
|
||||
@@ -312,6 +312,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Không có {$lang->productCommon} liên kết tới {$lang->executionCommon}. Bạn sẽ được chuyển tới trang {$lang->productCommon} để liên kết.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} không thể liên kết tới {$lang->productCommon} giống nhau 2 lần.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Truy cập của bạn tới {$lang->executionCommon} bị từ chối!";
|
||||
$lang->execution->tips = 'Ghi chú';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} được tạo. Tiếp theo bạn có thể ";
|
||||
|
||||
@@ -312,6 +312,8 @@ $lang->execution->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项
|
||||
$lang->execution->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的开始时间不能小于所属项目的开始时间%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的结束时间不能大于所属项目的结束时间%s。";
|
||||
$lang->execution->accessDenied = "您无权访问该{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
|
||||
|
||||
@@ -295,6 +295,17 @@ class executionModel extends model
|
||||
|
||||
/* Determine whether to add a sprint or a stage according to the model of the execution. */
|
||||
$project = $this->loadModel('project')->getByID($_POST['project']);
|
||||
if($_POST['begin'] < $project->begin and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['begin'] = sprintf($this->lang->execution->errorBegin, $project->begin);
|
||||
return false;
|
||||
}
|
||||
|
||||
if($_POST['end'] > $project->end and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['end'] = sprintf($this->lang->execution->errorEnd, $project->end);
|
||||
return false;
|
||||
}
|
||||
$type = zget($this->config->execution->modelList, $project->model, 'sprint');
|
||||
|
||||
$this->config->execution->create->requiredFields .= ',project';
|
||||
@@ -335,6 +346,14 @@ class executionModel extends model
|
||||
}
|
||||
|
||||
$sprint = $this->loadModel('file')->processImgURL($sprint, $this->config->execution->editor->create['id'], $this->post->uid);
|
||||
|
||||
/* Replace required language. */
|
||||
if($this->app->openApp == 'project')
|
||||
{
|
||||
$this->lang->project->name = $this->lang->execution->name;
|
||||
$this->lang->project->code = $this->lang->execution->code;
|
||||
}
|
||||
|
||||
$this->dao->insert(TABLE_EXECUTION)->data($sprint)
|
||||
->autoCheck($skipFields = 'begin,end')
|
||||
->batchcheck($this->config->execution->create->requiredFields, 'notempty')
|
||||
@@ -453,6 +472,18 @@ class executionModel extends model
|
||||
->remove('products, branch, uid, plans')
|
||||
->get();
|
||||
|
||||
$project = $this->dao->select('begin, end')->from(TABLE_PROJECT)->where('id')->eq($oldExecution->project)->fetch();
|
||||
if($execution->begin < $project->begin and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['begin'] = sprintf($this->lang->execution->errorBegin, $project->begin);
|
||||
return false;
|
||||
}
|
||||
|
||||
if($execution->end > $project->end and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['end'] = sprintf($this->lang->execution->errorEnd, $project->end);
|
||||
return false;
|
||||
}
|
||||
/* Child stage inherits parent stage permissions. */
|
||||
if(!isset($execution->acl)) $execution->acl = $oldExecution->acl;
|
||||
if($execution->acl == 'open') $execution->whitelist = '';
|
||||
@@ -469,6 +500,10 @@ class executionModel extends model
|
||||
if(!empty($execution->realBegan) and !empty($execution->realEnd)) $execution->realDuration = $this->loadModel('programplan')->getDuration($execution->realBegan, $execution->realEnd);
|
||||
}
|
||||
|
||||
/* Replace required language. */
|
||||
$this->lang->project->name = $this->lang->execution->name;
|
||||
$this->lang->project->code = $this->lang->execution->code;
|
||||
|
||||
/* Update data. */
|
||||
$this->dao->update(TABLE_EXECUTION)->data($execution)
|
||||
->autoCheck($skipFields = 'begin,end')
|
||||
@@ -532,6 +567,23 @@ class executionModel extends model
|
||||
$oldExecutions = $this->getByIdList($this->post->executionIDList);
|
||||
$nameList = array();
|
||||
$codeList = array();
|
||||
|
||||
/* Replace required language. */
|
||||
if($this->app->openApp == 'project')
|
||||
{
|
||||
$projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($this->session->project)->fetch('model');
|
||||
if($projectModel == 'scrum')
|
||||
{
|
||||
$this->lang->project->name = $this->lang->execution->name;
|
||||
$this->lang->project->code = $this->lang->execution->code;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->lang->project->name = str_replace($this->lang->project->common, $this->lang->project->stage, $this->lang->project->name);
|
||||
$this->lang->project->code = str_replace($this->lang->project->common, $this->lang->project->stage, $this->lang->project->code);
|
||||
}
|
||||
}
|
||||
|
||||
foreach($data->executionIDList as $executionID)
|
||||
{
|
||||
$executionName = $data->names[$executionID];
|
||||
@@ -578,7 +630,7 @@ class executionModel extends model
|
||||
->checkIF($execution->begin != '', 'begin', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'gt', $execution->begin)
|
||||
->check('code', 'unique', "id NOT " . helper::dbIN($data->executionIDList) . " and deleted='0'")
|
||||
->checkIF($execution->code != '', 'code', 'unique', "id NOT " . helper::dbIN($data->executionIDList) . " and deleted='0'")
|
||||
->where('id')->eq($executionID)
|
||||
->limit(1)
|
||||
->exec();
|
||||
@@ -654,6 +706,19 @@ class executionModel extends model
|
||||
->remove('comment')
|
||||
->get();
|
||||
|
||||
$project = $this->dao->select('begin, end')->from(TABLE_PROJECT)->where('id')->eq($oldExecution->project)->fetch();
|
||||
if($execution->begin < $project->begin and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['begin'] = sprintf($this->lang->execution->errorBegin, $project->begin);
|
||||
return false;
|
||||
}
|
||||
|
||||
if($execution->end > $project->end and $this->config->systemMode == 'new')
|
||||
{
|
||||
dao::$errors['end'] = sprintf($this->lang->execution->errorEnd, $project->end);
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->dao->update(TABLE_EXECUTION)->data($execution)
|
||||
->autoCheck()
|
||||
->where('id')->eq((int)$executionID)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link');
|
||||
if(common::hasPriv('execution', 'testreport'))
|
||||
{
|
||||
echo html::a($this->createLink('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="qa"');
|
||||
echo html::a($this->createLink('execution', 'testreport', "executionID=$executionID&objctType=execution&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="execution"');
|
||||
}
|
||||
common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list');
|
||||
common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'list', 'trash', 'hiddenwin');
|
||||
|
||||
@@ -15,6 +15,8 @@ function addItem(obj)
|
||||
|
||||
function deleteItem(obj)
|
||||
{
|
||||
if($("table tr").size() < 3) return false;
|
||||
|
||||
var $currentLine= $(obj).closest('tr');
|
||||
$currentLine.remove();
|
||||
}
|
||||
@@ -337,7 +337,7 @@ class groupModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Update view priv
|
||||
* Update view priv.
|
||||
*
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
@@ -355,7 +355,7 @@ class groupModel extends model
|
||||
$dynamic = array();
|
||||
foreach($actions['actions'] as $moduleName => $moduleActions)
|
||||
{
|
||||
if($moduleName != 'my' and !isset($actions['views'][$moduleName])) continue;
|
||||
if($moduleName != 'todo' and isset($actions['views']) and !in_array($this->lang->navGroup->$moduleName, $actions['views'])) continue;
|
||||
|
||||
$dynamic[$moduleName] = $moduleActions;
|
||||
}
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='5'>
|
||||
<?php
|
||||
echo html::submitButton('', '', "btn btn-primary");
|
||||
echo html::linkButton($lang->goback, $this->createLink('group', 'browse'));
|
||||
echo html::submitButton();
|
||||
echo html::linkButton($lang->goback, $this->createLink('group', 'browse'), 'self', '', 'btn btn-wide');
|
||||
echo html::hidden('foo'); // Just a var, to make sure $_POST is not empty.
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -742,6 +742,7 @@ class my extends control
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$_POST['account'] = $this->app->user->account;
|
||||
$_POST['groups'] = $this->dao->select('`group`')->from(TABLE_USERGROUP)->where('account')->eq($this->post->account)->fetchPairs('group', 'group');
|
||||
$this->user->update($this->app->user->id);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('my', 'profile'), 'parent'));
|
||||
|
||||
@@ -37,3 +37,31 @@ $('#program').change(function()
|
||||
$('#line').chosen();
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Toggle line.
|
||||
*
|
||||
* @param object $obj
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleLine(obj)
|
||||
{
|
||||
var $obj = $(obj);
|
||||
if($obj.length == 0) return false;
|
||||
|
||||
var $line = $obj.closest('table').find('#line');
|
||||
|
||||
if($obj.prop('checked'))
|
||||
{
|
||||
$('form .line-no-exist').removeClass('hidden');
|
||||
$('form .line-exist').addClass('hidden');
|
||||
$line.attr('disabled', 'disabled');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('form .line-exist').removeClass('hidden');
|
||||
$('form .line-no-exist').addClass('hidden');
|
||||
$line.removeAttr('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Ranking';
|
||||
$lang->product->orderAction = "Rank {$lang->productCommon}";
|
||||
$lang->product->all = "Alle {$lang->productCommon}";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Exportiere Daten';
|
||||
$lang->product->exportAction = "Export {$lang->productCommon}";
|
||||
$lang->product->dashboard = 'Dashboard';
|
||||
|
||||
@@ -26,6 +26,7 @@ $lang->product->closed = 'Closed';
|
||||
$lang->product->updateOrder = 'Order';
|
||||
$lang->product->all = "All {$lang->productCommon}s";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
$lang->product->changeProgram = "{$lang->productCommon} confirmation of the scope of influence of adjustment of the program set";
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Ordre';
|
||||
$lang->product->orderAction = "Rang {$lang->productCommon}";
|
||||
$lang->product->all = "Tous les {$lang->productCommon}s";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
$lang->product->exportAction = "Export {$lang->productCommon}";
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Sắp xếp';
|
||||
$lang->product->orderAction = "Đánh giá {$lang->productCommon}";
|
||||
$lang->product->all = "Tất cả {$lang->productCommon}";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Xuất';
|
||||
$lang->product->exportAction = "Xuất {$lang->productCommon}";
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
|
||||
@@ -26,6 +26,7 @@ $lang->product->closed = '已关闭';
|
||||
$lang->product->updateOrder = '排序';
|
||||
$lang->product->all = "所有{$lang->productCommon}";
|
||||
$lang->product->manageLine = "维护{$lang->productCommon}线";
|
||||
$lang->product->newLine = "新建{$lang->productCommon}线";
|
||||
$lang->product->export = '导出数据';
|
||||
$lang->product->dashboard = "{$lang->productCommon}仪表盘";
|
||||
$lang->product->changeProgram = "{$lang->productCommon}调整所属项目集影响范围确认";
|
||||
|
||||
@@ -504,9 +504,31 @@ class productModel extends model
|
||||
->setIF($this->post->acl == 'open', 'whitelist', '')
|
||||
->stripTags($this->config->product->editor->create['id'], $this->config->allowedTags)
|
||||
->join('whitelist', ',')
|
||||
->remove('uid')
|
||||
->remove('uid,newLine,lineName')
|
||||
->get();
|
||||
|
||||
if(!empty($_POST['lineName']))
|
||||
{
|
||||
/* Insert product line. */
|
||||
$maxOrder = $this->dao->select("max(`order`) as maxOrder")->from(TABLE_MODULE)->where('type')->eq('line')->fetch('maxOrder');
|
||||
$maxOrder = $maxOrder ? $maxOrder + 10 : 0;
|
||||
|
||||
$line = new stdClass();
|
||||
$line->type = 'line';
|
||||
$line->parent = 0;
|
||||
$line->grade = 1;
|
||||
$line->name = $this->post->lineName;
|
||||
$line->root = $product->program;
|
||||
$line->order = $maxOrder;
|
||||
$this->dao->insert(TABLE_MODULE)->data($line)->exec();
|
||||
$lineID = $this->dao->lastInsertID();
|
||||
$path = ",$lineID,";
|
||||
$this->dao->update(TABLE_MODULE)->set('path')->eq($path)->where('id')->eq($lineID)->exec();
|
||||
|
||||
if(dao::isError()) return false;
|
||||
$product->line = $lineID;
|
||||
}
|
||||
|
||||
$product = $this->loadModel('file')->processImgURL($product, $this->config->product->editor->create['id'], $this->post->uid);
|
||||
$this->dao->insert(TABLE_PRODUCT)->data($product)->autoCheck()
|
||||
->batchCheck($this->config->product->create->requiredFields, 'notempty')
|
||||
|
||||
@@ -29,7 +29,24 @@
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='w-140px'><?php echo $lang->product->line;?></th>
|
||||
<?php if($programID):?>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select("line", $lines, '', "class='form-control hidden line-exist'");?>
|
||||
<?php echo html::input("lineName", '', "class='form-control line-no-exist'");?>
|
||||
<?php if(count($lines)):?>
|
||||
<span class='input-group-addon'>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="newLine" value="0" checked onchange="toggleLine(this)" id="newLine0" />
|
||||
<label for="newLine0"><?php echo $lang->product->newLine;?></label>
|
||||
</div>
|
||||
</span>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</td>
|
||||
<?php else:?>
|
||||
<td><?php echo html::select('line', $lines, '', "class='form-control chosen'");?></td><td></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->name;?></th>
|
||||
|
||||
@@ -1141,6 +1141,12 @@ class project extends control
|
||||
$allUsers = $this->loadModel('dept')->getDeptUserPairs($deptID);
|
||||
$otherUsers = array_diff_assoc($allUsers, $groupUsers);
|
||||
|
||||
if($this->config->systemMode == 'new')
|
||||
{
|
||||
$outsideUsers = $this->loadModel('user')->getPairs('outside|noclosed|noletter|noempty');
|
||||
$this->view->outsideUsers = array_diff_assoc($outsideUsers, $groupUsers);
|
||||
}
|
||||
|
||||
$title = $group->name . $this->lang->colon . $this->lang->group->manageMember;
|
||||
$position[] = $group->name;
|
||||
$position[] = $this->lang->group->manageMember;
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->testtask->begin);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->testtask->end);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-actions-5 text-center'><?php echo $lang->actions;?></th>
|
||||
<th class='<?php echo $project->model == 'scrum' ? 'c-actions-5' : 'c-actions-4';?> text-center'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -92,9 +92,9 @@
|
||||
{
|
||||
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap');
|
||||
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link');
|
||||
if(common::hasPriv('execution', 'testreport'))
|
||||
if(common::hasPriv('execution', 'testreport') and $project->model == 'scrum')
|
||||
{
|
||||
echo html::a($this->createLink('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="qa"');
|
||||
echo html::a($this->createLink('execution', 'testreport', "executionID=$task->execution&objectType=execution&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="project"');
|
||||
}
|
||||
common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list');
|
||||
common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'list', 'trash', 'hiddenwin');
|
||||
|
||||
@@ -149,7 +149,7 @@ class repoModel extends model
|
||||
if(isset($productIdList[$productID])) $hasPriv = true;
|
||||
}
|
||||
|
||||
if(!$haspriv) unset($repos[$i]);
|
||||
if(!$hasPriv) unset($repos[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +434,6 @@ class story extends control
|
||||
$products = $this->product->getPairs();
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'story', 0, $branch);
|
||||
|
||||
|
||||
/* Init vars. */
|
||||
$planID = $plan;
|
||||
$pri = 0;
|
||||
@@ -494,6 +493,7 @@ class story extends control
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->plans = $plans;
|
||||
$this->view->users = $this->user->getPairs('pdfirst|noclosed|nodeleted');
|
||||
$this->view->priList = $priList;
|
||||
$this->view->sourceList = $sourceList;
|
||||
$this->view->planID = $planID;
|
||||
@@ -1097,7 +1097,7 @@ class story extends control
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if(!dao::isError()) $this->loadModel('score')->create('ajax', 'batchOther');
|
||||
die(js::locate($this->session->storyList, 'parent'));
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+32
-7
@@ -353,6 +353,16 @@ class storyModel extends model
|
||||
*/
|
||||
public function batchCreate($productID = 0, $branch = 0, $type = 'story')
|
||||
{
|
||||
foreach($_POST['needReview'] as $index => $value)
|
||||
{
|
||||
if($_POST['title'][$index] and isset($_POST['reviewer'][$index])) $_POST['reviewer'][$index] = array_filter($_POST['reviewer'][$index]);
|
||||
if($_POST['title'][$index] and $value and !isset($_POST['reviewer'][$index]))
|
||||
{
|
||||
dao::$errors[] = $this->lang->story->errorEmptyReviewedBy;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->loadModel('action');
|
||||
$branch = (int)$branch;
|
||||
$productID = (int)$productID;
|
||||
@@ -399,7 +409,8 @@ class storyModel extends model
|
||||
$story->category = $stories->category[$i];
|
||||
$story->pri = $stories->pri[$i];
|
||||
$story->estimate = $stories->estimate[$i];
|
||||
$story->status = ($stories->needReview[$i] == 0 and !$forceReview) ? 'active' : 'draft';
|
||||
$story->status = ($this->app->openApp == project || $this->app->openApp == execution ||($stories->needReview[$i] == 0 and !$forceReview)) ? 'active' : 'draft';
|
||||
$story->stage = ($this->app->openApp == project || $this->app->openApp == execution) ? 'projected' : 'wait';
|
||||
$story->keywords = $stories->keywords[$i];
|
||||
$story->sourceNote = $stories->sourceNote[$i];
|
||||
$story->product = $productID;
|
||||
@@ -489,6 +500,19 @@ class storyModel extends model
|
||||
|
||||
$this->dao->insert(TABLE_STORYSPEC)->data($specData)->exec();
|
||||
|
||||
/* Save the story reviewer to storyreview table. */
|
||||
if(isset($_POST['reviewer'][$i]))
|
||||
{
|
||||
foreach($_POST['reviewer'][$i] as $reviewer)
|
||||
{
|
||||
$reviewData = new stdclass();
|
||||
$reviewData->story = $storyID;
|
||||
$reviewData->version = 1;
|
||||
$reviewData->reviewer = $reviewer;
|
||||
$this->dao->insert(TABLE_STORYREVIEW)->data($reviewData)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
$this->executeHooks($storyID);
|
||||
|
||||
$actionID = $this->action->create('story', $storyID, 'Opened', '');
|
||||
@@ -498,7 +522,6 @@ class storyModel extends model
|
||||
$mails[$i]->actionID = $actionID;
|
||||
}
|
||||
|
||||
|
||||
/* Remove upload image file and session. */
|
||||
if(!empty($stories->uploadImage) and $this->session->storyImagesFile)
|
||||
{
|
||||
@@ -1192,10 +1215,11 @@ class storyModel extends model
|
||||
$story->status = $this->setStatusByReviewRules($reviewerList);
|
||||
if($story->status == 'closed')
|
||||
{
|
||||
$story->closedBy = $this->app->user->account;
|
||||
$story->closedDate = $now;
|
||||
$story->assignedTo = 'closed';
|
||||
$story->stage = 'closed';
|
||||
$story->closedBy = $this->app->user->account;
|
||||
$story->closedDate = $now;
|
||||
$story->assignedTo = 'closed';
|
||||
$story->assignedDate = $now;
|
||||
$story->stage = 'closed';
|
||||
if($this->post->closedReason == 'done') $story->stage = 'released';
|
||||
}
|
||||
}
|
||||
@@ -2470,8 +2494,9 @@ class storyModel extends model
|
||||
->fi()
|
||||
->beginIF($execution->type != 'project')
|
||||
->beginIF(!empty($productParam))->andWhere('t1.product')->eq($productParam)->fi()
|
||||
->beginIF($this->session->executionStoryBrowseType == 'unclosed')->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi()
|
||||
->beginIF(strpos('changed|closed', $this->session->executionStoryBrowseType) !== false)->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi()
|
||||
->fi()
|
||||
->beginIF(strpos('changed|closed', $this->session->storyBrowseType) !== false)->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi()
|
||||
->beginIF(!empty($branchParam))->andWhere('t2.branch')->eq($branchParam)->fi()
|
||||
->beginIF($modules)->andWhere('t2.module')->in($modules)->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
<th class='col-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?>'><?php echo $lang->story->pri;?></th>
|
||||
<th class='col-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?>'><?php echo $lang->story->estimate;?></th>
|
||||
<th class='col-review<?php echo zget($visibleFields, 'review', ' hidden') . zget($requiredFields, 'review', '', ' required');?>'><?php echo $lang->story->needReview;?></th>
|
||||
<th class='<?php echo zget($visibleFields, 'review', ' hidden');?>' style="width: 200px !important"><?php echo $lang->story->reviewedBy;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'keywords', ' hidden') . zget($requiredFields, 'keywords', '', ' required');?>'><?php echo $lang->story->keywords;?></th>
|
||||
<?php
|
||||
$extendFields = $this->story->getFlowExtendFields();
|
||||
@@ -95,6 +96,8 @@
|
||||
<td class='text-left<?php echo zget($visibleFields, 'pri', ' hidden')?>' style='overflow:visible'><?php echo html::select('pri[$id]', $priList, $pri, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'estimate', 'hidden')?>'><?php echo html::input('estimate[$id]', $estimate, "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'review', 'hidden')?>'><?php echo html::select('needReview[$id]', $lang->story->reviewList, $needReview, "class='form-control'");?></td>
|
||||
<?php $isDisabled = $needReview ? '' : 'disabled';?>
|
||||
<td class='<?php echo zget($visibleFields, 'review', 'hidden')?>'><?php echo html::select('reviewer[$id][]', $users, '', "class='form-control chosen' multiple $isDisabled");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'keywords', 'hidden')?>'><?php echo html::input('keywords[$id]', '', "class='form-control'");?></td>
|
||||
<?php foreach($extendFields as $extendField) echo "<td" . (($extendField->control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, '', $extendField->field . '[$id]') . "</td>";?>
|
||||
</tr>
|
||||
@@ -142,6 +145,14 @@ $(function()
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('change', "#mainContent select[name^=needReview]", function()
|
||||
{
|
||||
select = $(this).parent('td').next('td').children("select[name^=reviewer]");
|
||||
$(select).removeAttr('disabled');
|
||||
if($(this).val() == 0) $(select).attr('disabled', 'disabled');
|
||||
$(select).trigger("chosen:updated");
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<?php if(isset($execution)) js::set('execution', $execution);?>
|
||||
|
||||
@@ -109,7 +109,7 @@ foreach(explode(',', $showFields) as $field)
|
||||
<td title='<?php echo $story->title?>'>
|
||||
<div class="input-group">
|
||||
<div class="input-control has-icon-right">
|
||||
<?php echo html::input("titles[$storyID]", $story->title, "class='form-control input-story-title'"); ?>
|
||||
<?php echo html::input("titles[$storyID]", $story->title, "class='form-control input-story-title' disabled"); ?>
|
||||
|
||||
<div class="colorpicker">
|
||||
<button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><span class="color-bar"></span><i class="ic"></i></button>
|
||||
|
||||
@@ -97,9 +97,9 @@ class testreport extends control
|
||||
|
||||
$reports = $this->testreport->getList($objectID, $objectType, $extra, $orderBy, $pager);
|
||||
|
||||
if(strpos('project|execution', $objectType) !== false and isset($_POST['taskIdList']))
|
||||
if(strpos('project|execution', $objectType) !== false and ($extra or isset($_POST['taskIdList'])))
|
||||
{
|
||||
$taskIdList = $_POST['taskIdList'];
|
||||
$taskIdList = isset($_POST['taskIdList']) ? $_POST['taskIdList'] : array($extra);
|
||||
foreach($reports as $reportID => $report)
|
||||
{
|
||||
$tasks = explode(',', $report->tasks);
|
||||
@@ -114,8 +114,8 @@ class testreport extends control
|
||||
if($objectType == 'product' and $extra) $param = "objectID=$extra&objectType=testtask";
|
||||
if(($objectType == 'project' or $objectType == 'execution') and ($extra or !empty($_POST['taskIdList'])))
|
||||
{
|
||||
$param = "objectID=$objectID&objectType=$objectType";
|
||||
if(isset($_POST['taskIdList'])) $param .= '&extra=' . join(',', $_POST['taskIdList']);
|
||||
$param = "objectID=$objectID&objectType=$objectType";
|
||||
$param .= isset($_POST['taskIdList']) ? '&extra=' . join(',', $_POST['taskIdList']) : '&extra=' . $extra;
|
||||
}
|
||||
if($param) $this->locate($this->createLink('testreport', 'create', $param));
|
||||
}
|
||||
@@ -196,6 +196,9 @@ class testreport extends control
|
||||
$productID = $this->commonAction($task->product, 'product');
|
||||
}
|
||||
$this->view->taskPairs = $taskPairs;
|
||||
|
||||
if($this->app->openApp == 'execution') $this->execution->setMenu($task->execution);
|
||||
if($this->app->openApp == 'project') $this->project->setMenu($task->project);
|
||||
}
|
||||
|
||||
if(empty($objectID)) die(js::alert($this->lang->testreport->noObjectID) . js::locate('back'));
|
||||
@@ -539,7 +542,7 @@ class testreport extends control
|
||||
$this->view->actions = $this->loadModel('action')->getList('testreport', $reportID);
|
||||
|
||||
$this->view->storySummary = $this->product->summary($stories);
|
||||
$this->view->caseSummary = $this->testreport->getResultSummary($tasks, $caseIdList, $report->begin, $report->end);
|
||||
$this->view->caseSummary = $this->testreport->getResultSummary($tasks, $cases, $report->begin, $report->end);
|
||||
|
||||
$perCaseResult = $this->testreport->getPerCaseResult4Report($tasks, $caseIdList, $report->begin, $report->end);
|
||||
$perCaseRunner = $this->testreport->getPerCaseRunner4Report($tasks, $caseIdList, $report->begin, $report->end);
|
||||
|
||||
+43
-31
@@ -115,8 +115,8 @@ class testreportModel extends model
|
||||
$objectID = (int)$objectID;
|
||||
return $this->dao->select('*')->from(TABLE_TESTREPORT)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($objectType == 'execution')->andWhere('objectID')->eq($objectID)->andWhere('objectType')->eq('execution')->fi()
|
||||
->beginIF($objectType == 'project')->andWhere('project')->eq($objectID)->andWhere('objectType')->eq('execution')->fi()
|
||||
->beginIF($objectType == 'execution')->andWhere('execution')->eq($objectID)->fi()
|
||||
->beginIF($objectType == 'project')->andWhere('project')->eq($objectID)->fi()
|
||||
->beginIF($objectType == 'product' and $extra)->andWhere('objectID')->eq((int)$extra)->andWhere('objectType')->eq('testtask')->fi()
|
||||
->beginIF($objectType == 'product' and empty($extra))->andWhere('product')->eq($objectID)->fi()
|
||||
->orderBy($orderBy)
|
||||
@@ -328,30 +328,33 @@ class testreportModel extends model
|
||||
->beginIF($idList)->andWhere('t2.id')->in($idList)->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
->fetchGroup('task','id');
|
||||
|
||||
$results = $this->dao->select('t1.*')->from(TABLE_TESTRESULT)->alias('t1')
|
||||
->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.run=t2.id')
|
||||
->where('t2.task')->in(array_keys($tasks))
|
||||
->andWhere('t1.`case`')->in(array_keys($cases))
|
||||
->andWhere('t1.date')->ge($begin)
|
||||
->andWhere('t1.date')->le($end . " 23:59:59")
|
||||
->orderBy('date')
|
||||
->fetchAll('case');
|
||||
|
||||
foreach($cases as $caseID => $case)
|
||||
foreach($cases as $taskID => $caseList)
|
||||
{
|
||||
$case->lastRunner = '';
|
||||
$case->lastRunDate = '';
|
||||
$case->lastRunResult = '';
|
||||
$case->status = 'normal';
|
||||
if(isset($results[$caseID]))
|
||||
$results = $this->dao->select('t1.*')->from(TABLE_TESTRESULT)->alias('t1')
|
||||
->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.run=t2.id')
|
||||
->where('t2.task')->eq($taskID)
|
||||
->andWhere('t1.`case`')->in(array_keys($caseList))
|
||||
->andWhere('t1.date')->ge($begin)
|
||||
->andWhere('t1.date')->le($end . " 23:59:59")
|
||||
->orderBy('date')
|
||||
->fetchAll('case');
|
||||
|
||||
foreach($caseList as $caseID => $case)
|
||||
{
|
||||
$result = $results[$caseID];
|
||||
$case->lastRunner = $result->lastRunner;
|
||||
$case->lastRunDate = $result->date;
|
||||
$case->lastRunResult = $result->caseResult;
|
||||
$case->status = $result->caseResult == 'blocked' ? 'blocked' : 'normal';
|
||||
$case->lastRunner = '';
|
||||
$case->lastRunDate = '';
|
||||
$case->lastRunResult = '';
|
||||
$case->status = 'normal';
|
||||
if(isset($results[$caseID]))
|
||||
{
|
||||
$result = $results[$caseID];
|
||||
$case->lastRunner = $result->lastRunner;
|
||||
$case->lastRunDate = $result->date;
|
||||
$case->lastRunResult = $result->caseResult;
|
||||
$case->status = $result->caseResult == 'blocked' ? 'blocked' : 'normal';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,23 +393,32 @@ class testreportModel extends model
|
||||
*/
|
||||
public function getResultSummary($tasks, $cases, $begin, $end)
|
||||
{
|
||||
$caseCount = 0;
|
||||
$casesList = array();
|
||||
foreach($cases as $taskID => $caseList)
|
||||
{
|
||||
foreach($caseList as $caseID => $case)
|
||||
{
|
||||
$casesList[$caseID] = $case;
|
||||
$caseCount++;
|
||||
}
|
||||
}
|
||||
|
||||
$results = $this->dao->select('t1.*')->from(TABLE_TESTRESULT)->alias('t1')
|
||||
->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.run=t2.id')
|
||||
->where('t2.task')->in(array_keys($tasks))
|
||||
->andWhere('t1.`case`')->in(array_keys($cases))
|
||||
->andWhere('t1.`case`')->in(array_keys($casesList))
|
||||
->andWhere('t1.date')->ge($begin)
|
||||
->andWhere('t1.date')->le($end . " 23:59:59")
|
||||
->orderBy('date')
|
||||
->fetchAll('id');
|
||||
|
||||
$failResults = array();
|
||||
$failResults = 0;
|
||||
$runCasesNum = array();
|
||||
foreach($results as $result)
|
||||
{
|
||||
$runCasesNum[$result->case] = $result->case;
|
||||
if($result->caseResult == 'fail') $failResults[$result->case] = $result->case;
|
||||
}
|
||||
return sprintf($this->lang->testreport->caseSummary, count($cases), count($runCasesNum), count($results), count($failResults));
|
||||
foreach($results as $result) $runCasesNum[$result->run] = $result->caseResult;
|
||||
foreach($runCasesNum as $lastResult) if($lastResult == 'fail') $failResults++;
|
||||
|
||||
return sprintf($this->lang->testreport->caseSummary, $caseCount, count($runCasesNum), count($results), $failResults);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
<?php if($cases):?>
|
||||
<tbody>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($cases as $case):?>
|
||||
<?php foreach($cases as $taskID => $caseList):?>
|
||||
<?php foreach($caseList as $case):?>
|
||||
<?php if(!isset($pager) and $i > 50):?>
|
||||
<?php echo html::hidden('cases[]', $case->id);?>
|
||||
<?php else:?>
|
||||
@@ -37,9 +38,10 @@
|
||||
<?php endif;?>
|
||||
<?php $i++;?>
|
||||
<?php endforeach;?>
|
||||
<?php endforeach;?>
|
||||
<?php if(!isset($pager) and $i > 50):?>
|
||||
<tr>
|
||||
<td colspan='9'><?php echo sprintf($lang->testreport->hiddenCase, count($cases) - 50);?></td>
|
||||
<td colspan='9'><?php echo sprintf($lang->testreport->hiddenCase, $i - 50);?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
</tbody>
|
||||
|
||||
@@ -1437,7 +1437,7 @@ class testtaskModel extends model
|
||||
case 'status':
|
||||
if($caseChanged)
|
||||
{
|
||||
echo "<span class='warning'>{$this->lang->testcase->changed}</span>";
|
||||
echo "<span title='{$this->lang->testcase->changed}' class='warning'>{$this->lang->testcase->changed}</span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -282,11 +282,12 @@ class todo extends control
|
||||
{
|
||||
$confirmNote = 'confirm' . ucfirst($todo->type);
|
||||
$confirmURL = $this->createLink($todo->type, 'view', "id=$todo->idvalue");
|
||||
$okTarget = isonlybody() ? 'parent' : 'window.parent.$.apps.open';
|
||||
if($todo->type == 'bug') $app = 'qa';
|
||||
if($todo->type == 'task') $app = 'execution';
|
||||
if($todo->type == 'story') $app = 'product';
|
||||
$cancelURL = $this->server->HTTP_REFERER;
|
||||
die(js::confirm(sprintf($this->lang->todo->$confirmNote, $todo->idvalue), $confirmURL, $cancelURL, 'window.parent.$.apps.open', 'parent', $app));
|
||||
die(js::confirm(sprintf($this->lang->todo->$confirmNote, $todo->idvalue), $confirmURL, $cancelURL, $okTarget, 'parent', $app));
|
||||
}
|
||||
if(isonlybody())die(js::reload('parent.parent'));
|
||||
die(js::reload('parent'));
|
||||
@@ -452,12 +453,13 @@ class todo extends control
|
||||
if(in_array($todo->type, array('bug', 'task', 'story')))
|
||||
{
|
||||
$confirmNote = 'confirm' . ucfirst($todo->type);
|
||||
$okTarget = isonlybody() ? 'parent' : 'window.parent.$.apps.open';
|
||||
$confirmURL = $this->createLink($todo->type, 'view', "id=$todo->idvalue");
|
||||
if($todo->type == 'bug') $app = 'qa';
|
||||
if($todo->type == 'task') $app = 'execution';
|
||||
if($todo->type == 'story') $app = 'product';
|
||||
$cancelURL = $this->server->HTTP_REFERER;
|
||||
die(js::confirm(sprintf($this->lang->todo->$confirmNote, $todo->idvalue), $confirmURL, $cancelURL, 'window.parent.$.apps.open', 'parent', $app));
|
||||
die(js::confirm(sprintf($this->lang->todo->$confirmNote, $todo->idvalue), $confirmURL, $cancelURL, $okTarget, 'parent', $app));
|
||||
}
|
||||
if(isonlybody())die(js::reload('parent.parent'));
|
||||
die(js::reload('parent'));
|
||||
|
||||
@@ -4488,7 +4488,6 @@ class upgradeModel extends model
|
||||
$data->path = ",{$projectID},{$sprint->id},";
|
||||
$data->type = 'sprint';
|
||||
$data->acl = $sprint->acl == 'custom' ? 'private' : $sprint->acl;
|
||||
$data->lifetime = empty($sprint->lifetime) ? $sprint->type : $sprint->lifetime;
|
||||
|
||||
$this->dao->update(TABLE_PROJECT)->data($data)->where('id')->eq($sprint->id)->exec();
|
||||
|
||||
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/init.php';
|
||||
/**
|
||||
[case]
|
||||
title=测试 branchModel::getById();
|
||||
cid=1
|
||||
pid=1
|
||||
[group]
|
||||
1. 使用branchID获取一个存在的分支 >> `A`
|
||||
2. 使用branchID和productID获取一个存在的分支 >> `B`
|
||||
3. 使用account获取一个存在的用户 >> ``
|
||||
[esac]
|
||||
*/
|
||||
$branch = $tester->loadModel('branch');
|
||||
|
||||
$app->dbh->query("truncate zt_product");
|
||||
zdImport(TABLE_PRODUCT, "zendata/product.yaml", 10);
|
||||
|
||||
$app->dbh->query("truncate zt_branch");
|
||||
zdImport(TABLE_BRANCH, "zendata/branch.yaml", 10);
|
||||
|
||||
/* Step 1.*/
|
||||
run($branch->getByID(1)) and expect('name');
|
||||
|
||||
/* Step 2.*/
|
||||
run($branch->getByID(2, 2)) and expect('name');
|
||||
|
||||
/* Step 3.*/
|
||||
run($branch->getByID(null)) and expect('name');
|
||||
Executable
+28
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/init.php';
|
||||
/**
|
||||
[case]
|
||||
title=测试 gapanalysisModel::getById();
|
||||
cid=1
|
||||
pid=1
|
||||
[group]
|
||||
1. 使用ID获取一个存在的能力差距分析 >> `\d,\d+,\w+\d`
|
||||
2. 使用ID获取一个不存在的能力差距分析 >> ``
|
||||
[esac]
|
||||
*/
|
||||
$gapanalysis = $tester->loadModel('gapanalysis');
|
||||
|
||||
$app->dbh->query("truncate zt_gapanalysis");
|
||||
$id = rand(1,5);
|
||||
zdImport(TABLE_GAPANALYSIS, "zendata/gapanalysis.yaml", 5);
|
||||
|
||||
$randGapAnalysis = $tester->dao->select('*,rand() as rand')->from(TABLE_GAPANALYSIS)->where('id')->eq($id)->orderBy('rand')->fetch();
|
||||
if(!$randGapAnalysis) exit("Prepair data error.");
|
||||
unset($randGapAnalysis->rand);
|
||||
|
||||
/* Step 1.*/
|
||||
run($gapanalysis->getByID($randGapAnalysis->id, 'id')) and expect('id,project,account');
|
||||
|
||||
/* Step 2.*/
|
||||
run($gapanalysis->getByID(null, 'id')) and expect('id');
|
||||
@@ -0,0 +1,37 @@
|
||||
title: table zt_branch
|
||||
desc: "分支信息"
|
||||
author: liyuchun
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
note: "ID"
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: product
|
||||
note: "所属产品"
|
||||
range: 1-2{5}
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: name
|
||||
note: "分支名称"
|
||||
range: A-Z
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: order
|
||||
note: "排序"
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: deleted
|
||||
note: "是否删除"
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
@@ -0,0 +1,32 @@
|
||||
title: 'table zt_gapanalysis'
|
||||
desc: ""
|
||||
author: automated export
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-6
|
||||
- field: project
|
||||
range: 13
|
||||
- field: account
|
||||
range: [admin,dev1,dev2,qa1,qa2]
|
||||
- field: role
|
||||
range: []{1},[研发]{2},[测试]{2}
|
||||
- field: definition
|
||||
range: a-z:R
|
||||
- field: analysis
|
||||
range: A-Z:R
|
||||
- field: isTrain
|
||||
range: 0-2:R
|
||||
- field: createdBy
|
||||
range: admin
|
||||
- field: createdDate
|
||||
range: "(-1M)-(+1w):60"
|
||||
prefix: DateTime
|
||||
type: timestamp
|
||||
format: "YY/MM/DD hh:mm:ss"
|
||||
- field: editedBy
|
||||
range: ' '
|
||||
- field: editedDate
|
||||
range: [0000-00-00 00:00:00]
|
||||
- field: deleted
|
||||
range: 0
|
||||
@@ -0,0 +1,130 @@
|
||||
title: table zt_product
|
||||
desc: "产品信息"
|
||||
author: liyuchun
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
note: "ID"
|
||||
range: 1-11
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: program
|
||||
note: "所属项目集"
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: name
|
||||
note: "产品名称"
|
||||
range: A-Z
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: code
|
||||
note: "代号"
|
||||
range: A-Z
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: bind
|
||||
note: "是否绑定"
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: line
|
||||
note: "产品线"
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: type
|
||||
note: "类型"
|
||||
range: [branch,normal]{5}
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: status
|
||||
note: "状态"
|
||||
range: "normal"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: desc
|
||||
note: "描述"
|
||||
range: "批量创建产品"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: PO
|
||||
note: "产品负责人"
|
||||
range: "admin"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: QD
|
||||
note: "测试负责人"
|
||||
range: "admin"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: RD
|
||||
note: "发布负责人"
|
||||
range: "admin"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: feedback
|
||||
range: ""
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: storyConcept
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: acl
|
||||
note: "权限"
|
||||
range: [open,private]{5}
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: storyConcept
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: whitelist
|
||||
range: ""
|
||||
prefix: ","
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: createdBy
|
||||
range: "admin"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: createdDate
|
||||
range: "(-1M)-(+1w):60"
|
||||
prefix: DateTime
|
||||
type: timestamp
|
||||
format: "YY/MM/DD hh:mm:ss"
|
||||
- field: createdVersion
|
||||
range: "max2.0"
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: order
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
- field: deleted
|
||||
range: 0
|
||||
prefix: ""
|
||||
postfix: "\t"
|
||||
format: ""
|
||||
Reference in New Issue
Block a user