* Add grade rule setting.

This commit is contained in:
sunguangming
2024-03-12 10:28:01 +08:00
parent f53f231094
commit 6953430aef
7 changed files with 71 additions and 4 deletions
+1
View File
@@ -5,3 +5,4 @@
.lang-row .form-group > .form-label {width: var(--form-horz-label-width);}
.unit-box .checkbox-primary {flex: 0 1 15%;}
#gradeList {width: 50%}
.gradeRuleNotice {margin-left: 4.25rem}
+7 -1
View File
@@ -68,6 +68,9 @@ $lang->custom->closeGrade = 'Close Story Grade';
$lang->custom->activateGrade = 'Activate Story Grade';
$lang->custom->deleteGrade = 'Delete Story Grade';
$lang->custom->gradeRuleList['cross'] = 'Allow cross-level segmentation';
$lang->custom->gradeRuleList['stepwise'] = 'Restriction level-by-level subdivision';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -129,7 +132,8 @@ $lang->custom->story->fields['statusList'] = 'Status';
$lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Review Required';
if($config->edition != 'open' || 1) $lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['gradeRule'] = 'Grade Rule';
$lang->custom->epic = clone $lang->custom->story;
$lang->custom->requirement = clone $lang->custom->story;
@@ -221,6 +225,8 @@ $lang->custom->notice->closeGrade = "After closing, the grade cannot be
$lang->custom->notice->activateGrade = "After activating, the grade can be used to create new stories.";
$lang->custom->notice->gradeNotEmpty = 'There are stories in this grade, and it cannot be deleted!';
$lang->custom->notice->deleteGrade = 'Are you sure you want to delete this grade?';
$lang->custom->notice->stepwise = 'Level-by-level subdivision: It needs to be created starting from the top requirement level and subdivided layer by layer to the last requirement level.';
$lang->custom->notice->cross = 'Cross-level segmentation: Requirements can be created from any requirement level and support cross-level association of parent-child relationships.';
$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Homepage. Do you want to go to Product Homepage?";
$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has {$lang->projectCommon} Home. Do you want to go to {$lang->projectCommon} Home?";
+7 -1
View File
@@ -68,6 +68,9 @@ $lang->custom->closeGrade = 'Close Story Grade';
$lang->custom->activateGrade = 'Activate Story Grade';
$lang->custom->deleteGrade = 'Delete Story Grade';
$lang->custom->gradeRuleList['cross'] = 'Allow cross-level segmentation';
$lang->custom->gradeRuleList['stepwise'] = 'Restriction level-by-level subdivision';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'USD/Hour';
@@ -129,7 +132,8 @@ $lang->custom->story->fields['statusList'] = 'Status';
$lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Need Review';
if($config->edition != 'open' || 1) $lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['gradeRule'] = 'Grade Rule';
$lang->custom->epic = clone $lang->custom->story;
$lang->custom->requirement = clone $lang->custom->story;
@@ -221,6 +225,8 @@ $lang->custom->notice->closeGrade = "After closing, the grade cannot be
$lang->custom->notice->activateGrade = "After activating, the grade can be used to create new stories.";
$lang->custom->notice->gradeNotEmpty = 'There are stories in this grade, and it cannot be deleted!';
$lang->custom->notice->deleteGrade = 'Are you sure you want to delete this grade?';
$lang->custom->notice->stepwise = 'Level-by-level subdivision: It needs to be created starting from the top requirement level and subdivided layer by layer to the last requirement level.';
$lang->custom->notice->cross = 'Cross-level segmentation: Requirements can be created from any requirement level and support cross-level association of parent-child relationships.';
$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Home. Do you want to go to Product Home?";
$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has {$lang->projectCommon} Home. Do you want to go to {$lang->projectCommon} Home?";
+7 -1
View File
@@ -68,6 +68,9 @@ $lang->custom->closeGrade = 'Close Story Grade';
$lang->custom->activateGrade = 'Activate Story Grade';
$lang->custom->deleteGrade = 'Delete Story Grade';
$lang->custom->gradeRuleList['cross'] = 'Allow cross-level segmentation';
$lang->custom->gradeRuleList['stepwise'] = 'Restriction level-by-level subdivision';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -129,7 +132,8 @@ $lang->custom->story->fields['statusList'] = 'Statut';
$lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Valider Résultats';
$lang->custom->story->fields['review'] = 'Validation Requise';
if($config->edition != 'open' || 1) $lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['grade'] = 'Grade Setting';
$lang->custom->story->fields['gradeRule'] = 'Grade Rule';
$lang->custom->epic = clone $lang->custom->story;
$lang->custom->requirement = clone $lang->custom->story;
@@ -221,6 +225,8 @@ $lang->custom->notice->closeGrade = "After closing, the grade cannot be
$lang->custom->notice->activateGrade = "After activating, the grade can be used to create new stories.";
$lang->custom->notice->gradeNotEmpty = 'There are stories in this grade, and it cannot be deleted!';
$lang->custom->notice->deleteGrade = 'Are you sure you want to delete this grade?';
$lang->custom->notice->stepwise = 'Level-by-level subdivision: It needs to be created starting from the top requirement level and subdivided layer by layer to the last requirement level.';
$lang->custom->notice->cross = 'Cross-level segmentation: Requirements can be created from any requirement level and support cross-level association of parent-child relationships.';
$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ possède une page d'accueil. Voulez-vous consulter la page d'accueil du produit ?";
$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has {$lang->projectCommon} Home. Do you want to go to {$lang->projectCommon} Home?";
+7 -1
View File
@@ -68,6 +68,9 @@ $lang->custom->closeGrade = '停用需求层级';
$lang->custom->activateGrade = '启用需求层级';
$lang->custom->deleteGrade = '删除需求层级';
$lang->custom->gradeRuleList['cross'] = '允许跨层级细分';
$lang->custom->gradeRuleList['stepwise'] = '限制逐层级细分';
$lang->custom->unitList['efficiency'] = '工时/';
$lang->custom->unitList['manhour'] = '人时/';
$lang->custom->unitList['cost'] = '元/小时';
@@ -129,7 +132,8 @@ $lang->custom->story->fields['statusList'] = '状态';
$lang->custom->story->fields['reviewRules'] = '评审规则';
$lang->custom->story->fields['reviewResultList'] = '评审结果';
$lang->custom->story->fields['review'] = '评审流程';
if($config->edition != 'open' || 1) $lang->custom->story->fields['grade'] = '层级设置';
$lang->custom->story->fields['grade'] = '层级设置';
$lang->custom->story->fields['gradeRule'] = '细分流程';
$lang->custom->epic = clone $lang->custom->story;
$lang->custom->requirement = clone $lang->custom->story;
@@ -221,6 +225,8 @@ $lang->custom->notice->closeGrade = "停用后,该层级无法再创
$lang->custom->notice->activateGrade = "启用后,该层级可以创建新需求。";
$lang->custom->notice->gradeNotEmpty = '系统内存在该层级的需求,不能删除!';
$lang->custom->notice->deleteGrade = '层级删除后无法恢复!';
$lang->custom->notice->stepwise = '逐层细分:需从顶级需求层级开始创建,逐层细分至最后一个需求层级。';
$lang->custom->notice->cross = '跨层细分:可从任意需求层级创建需求,并支持跨层级关联父子关系。';
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了{$lang->projectCommon}主页视图,是否默认进入{$lang->projectCommon}主页?";
+18
View File
@@ -71,6 +71,24 @@ elseif(in_array($module, array('story', 'requirement', 'epic')) && $field == 're
set::items($users)
);
}
elseif(in_array($module, array('story', 'requirement', 'epic')) && $field == 'gradeRule')
{
$formItems[] = formGroup
(
set::width('1/2'),
set::label($lang->custom->story->fields['gradeRule']),
set::name('gradeRule'),
set::value($gradeRule),
set::control('radioListInline'),
set::items($lang->custom->gradeRuleList)
);
$formItems[] = div
(
setClass('gradeRuleNotice'),
div($lang->custom->notice->cross),
div($lang->custom->notice->stepwise)
);
}
elseif(in_array($module, array('epic', 'story', 'requirement', 'testcase')) && $field == 'review')
{
$formItems[] = formGroup
+24
View File
@@ -88,6 +88,11 @@ class customZen extends custom
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
$this->view->superReviewers = zget($this->config->$module, 'superReviewers', '');
}
if(in_array($module, array('story', 'requirement', 'epic')) && $field == 'gradeRule')
{
$this->app->loadConfig($module);
$this->view->gradeRule = zget($this->config->$module, 'gradeRule', '');
}
if(in_array($module, array('story', 'requirement', 'epic')) && $field == 'grade')
{
$this->view->storyGrades = $this->loadModel('story')->getGradeSetting($module);
@@ -151,6 +156,10 @@ class customZen extends custom
{
$this->setStoryReview($module, $data);
}
elseif(in_array($module, array('story', 'requirement', 'epic')) && $field == 'gradeRule')
{
$this->setGradeRule($module, $data);
}
elseif(in_array($module, array('story', 'requirement', 'epic')) && $field == 'grade')
{
$this->custom->setStoryGrade($module, $data);
@@ -340,6 +349,21 @@ class customZen extends custom
return !dao::isError();
}
/**
* 设置需求细分流程。
* Set the rule of story grade.
*
* @param string $module
* @param array $data
* @access protected
* @return bool
*/
public function setGradeRule(string $module, array $data): bool
{
$this->loadModel('setting')->setItems("system.{$module}@{$this->config->vision}", $data);
return !dao::isError();
}
/**
* 设置用例评审规则。
* Set testcase review rules.