* Finish task#57854.

This commit is contained in:
xieqiyu
2022-06-27 13:33:11 +08:00
parent ac574675d8
commit 08faa3edff
6 changed files with 190 additions and 17 deletions
+21
View File
@@ -419,3 +419,24 @@ $lang->story->categoryList['safe'] = 'Safe';
$lang->story->categoryList['experience'] = 'Experience';
$lang->story->categoryList['improve'] = 'Improve';
$lang->story->categoryList['other'] = 'Other';
$lang->story->changeTip = 'This Story is under review and cannot be changed.';
$lang->story->reviewTip = array();
$lang->story->reviewTip['active'] = 'The Story is already active,no review requirements.';
$lang->story->reviewTip['notReviewer'] = 'You are not the reviewer of this Story and cannot perform review operations.';
$lang->story->reviewTip['reviewed'] = 'Reviewed';
$lang->story->reviewTip['recalled'] = 'This Story has been withdrawn from review and cannot be reviewed.';
$lang->story->recallTip = array();
$lang->story->recallTip['actived'] = 'The Story has not initiated a review process and no undo action is required.';
$lang->story->recallTip['recalled'] = 'This Story has been withdrawn from review and cannot be cancelled.';
$lang->story->recallTip['reviewed'] = 'The review process has been started and cannot be cancelled.';
$lang->story->recallTip['notOpenedBy'] = 'You are not the review initiator and cannot cancel the operation.';
$lang->story->subDivideTip = array();
$lang->story->subDivideTip['subStory'] = 'The Sub-stories cannot be subdivided.';
$lang->story->subDivideTip['planned'] = 'The Story has been planned and cannot be subdivided.';
$lang->story->subDivideTip['projected'] = 'The Story has been initiated and cannot be subdivided.';
$lang->story->subDivideTip['reviewed'] = 'The review process has been started and cannot be subdivided.';
$lang->story->subDivideTip['notActive'] = 'The Story is not active and cannot be subdivided.';
+21
View File
@@ -419,3 +419,24 @@ $lang->story->categoryList['safe'] = 'Safe';
$lang->story->categoryList['experience'] = 'Experience';
$lang->story->categoryList['improve'] = 'Improve';
$lang->story->categoryList['other'] = 'Other';
$lang->story->changeTip = 'This Story is under review and cannot be changed.';
$lang->story->reviewTip = array();
$lang->story->reviewTip['active'] = 'The Story is already active,no review requirements.';
$lang->story->reviewTip['notReviewer'] = 'You are not the reviewer of this Story and cannot perform review operations.';
$lang->story->reviewTip['reviewed'] = 'Reviewed';
$lang->story->reviewTip['recalled'] = 'This Story has been withdrawn from review and cannot be reviewed.';
$lang->story->recallTip = array();
$lang->story->recallTip['actived'] = 'The Story has not initiated a review process and no undo action is required.';
$lang->story->recallTip['recalled'] = 'This Story has been withdrawn from review and cannot be cancelled.';
$lang->story->recallTip['reviewed'] = 'The review process has been started and cannot be cancelled.';
$lang->story->recallTip['notOpenedBy'] = 'You are not the review initiator and cannot cancel the operation.';
$lang->story->subDivideTip = array();
$lang->story->subDivideTip['subStory'] = 'The Sub-stories cannot be subdivided.';
$lang->story->subDivideTip['planned'] = 'The Story has been planned and cannot be subdivided.';
$lang->story->subDivideTip['projected'] = 'The Story has been initiated and cannot be subdivided.';
$lang->story->subDivideTip['reviewed'] = 'The review process has been started and cannot be subdivided.';
$lang->story->subDivideTip['notActive'] = 'The Story is not active and cannot be subdivided.';
+21
View File
@@ -419,3 +419,24 @@ $lang->story->categoryList['safe'] = 'Safe';
$lang->story->categoryList['experience'] = 'Experience';
$lang->story->categoryList['improve'] = 'Improve';
$lang->story->categoryList['other'] = 'Other';
$lang->story->changeTip = 'Cette Story est en cours de vérification et ne peut pas être modifiée.';
$lang->story->reviewTip = array();
$lang->story->reviewTip['active'] = "Cette Story est déjà active, il n'y a pas de demande de révision.";
$lang->story->reviewTip['notReviewer'] = "Vous n'êtes pas l'évaluateur de cette Story et ne pouvez pas effectuer d'opérations d'évaluation.";
$lang->story->reviewTip['reviewed'] = "Révisé";
$lang->story->reviewTip['recalled'] = "Cette Story a été retirée pour vérification, et l'opération de révision ne peut pas être effectuée.";
$lang->story->recallTip = array();
$lang->story->recallTip['actived'] = "Aucun processus de révision n'a été lancé pour cette Story, et il n'est pas nécessaire de révoquer l'opération.";
$lang->story->recallTip['recalled'] = "Cette Story a été retirée pour vérification, et l'opération ne peut pas être annulée.";
$lang->story->recallTip['reviewed'] = "Il est entré dans le processus de révision, et l'opération ne peut pas être annulée.";
$lang->story->recallTip['notOpenedBy'] = "Vous n'êtes pas l'initiateur de la révision et vous ne pouvez pas annuler l'opération.";
$lang->story->subDivideTip = array();
$lang->story->subDivideTip['subStory'] = 'Les sous-stories ne peuvent pas être décomposées.';
$lang->story->subDivideTip['planned'] = 'Cette Story est planifiée et ne peut être subdivisée.';
$lang->story->subDivideTip['projected'] = 'Cette Story a été créée et ne peut être subdivisée.';
$lang->story->subDivideTip['reviewed'] = 'Il est entré dans le processus de révision et ne peut être subdivisé.';
$lang->story->subDivideTip['notActive'] = "Cette Story n'est pas active et ne peut être subdivisée.";
+46 -12
View File
@@ -20,17 +20,13 @@ $lang->story->affectedStories = "Affected {$lang->story->story}";
$lang->story->batchCreate = "Tạo hàng loạt";
$lang->story->change = "Thay đổi";
$lang->story->changeAction = "Thay đổi câu chuyện";
$lang->story->changed = "Đã đổi";
$lang->story->assignTo = 'Giao cho';
$lang->story->assignAction = 'Bàn giao câu chuyện';
$lang->story->review = 'Xét duyệt';
$lang->story->recall = 'Revoke';
$lang->story->reviewAction = 'Duyệt câu chuyện';
$lang->story->needReview = 'Duyệt nhu cầu';
$lang->story->batchReview = 'Duyệt hàng loạt';
$lang->story->edit = "Sửa câu chuyện";
$lang->story->editAB = "Sửa câu chuyện";
$lang->story->batchEdit = "Sửa hàng loạt";
$lang->story->subdivide = 'Phân rã';
$lang->story->link = 'Link';
@@ -38,15 +34,11 @@ $lang->story->unlink = 'Unlink';
$lang->story->track = 'Track';
$lang->story->trackAB = 'Track';
$lang->story->processStoryChange= 'Process Story Change';
$lang->story->subdivideAction = 'Phân rã câu chuyện';
$lang->story->splitRequirent = 'Phân rã';
$lang->story->close = 'Đóng';
$lang->story->closeAction = 'Đóng câu chuyện';
$lang->story->batchClose = 'Đóng hàng loạt';
$lang->story->activate = 'Kích hoạt';
$lang->story->activateAction = 'Kích hoạt câu chuyện';
$lang->story->delete = "Xóa";
$lang->story->deleteAction = "Xóa câu chuyện";
$lang->story->view = "Chi tiết câu chuyện";
$lang->story->setting = "Thiết lập";
$lang->story->tasks = "Nhiệm vụ liên kết";
@@ -61,11 +53,9 @@ $lang->story->caseCountAB = 'C';
$lang->story->linkStory = 'Liên kết câu chuyện';
$lang->story->unlinkStory = 'Hủy liên kết';
$lang->story->export = "Xuất dữ liệu";
$lang->story->exportAction = "Xuất câu chuyện";
$lang->story->zeroCase = "Câu chuyện không tình huống";
$lang->story->zeroTask = "Chỉ liệt kê câu chuyện không nhiệm vụ";
$lang->story->reportChart = "Báo cáo";
$lang->story->reportAction = "Báo cáo câu chuyện";
$lang->story->copyTitle = "Sao chép tiêu đề";
$lang->story->batchChangePlan = "Thay đổi kế hoạch hàng loạt";
$lang->story->batchChangeBranch = "Thay đổi chi nhánh hàng loạt";
@@ -76,6 +66,19 @@ $lang->story->viewAll = "Xem tất cả";
$lang->story->toTask = 'Convert to Task';
$lang->story->batchToTask = 'Batch Convert to Task';
$lang->story->convertRelations = 'Convert Relations';
$lang->story->undetermined = 'undetermined';
$lang->story->order = 'Order';
$lang->story->editAction = "Edit {$lang->SRCommon}";
$lang->story->changeAction = "Change {$lang->SRCommon}";
$lang->story->assignAction = "Assign {$lang->SRCommon}";
$lang->story->reviewAction = "Review {$lang->SRCommon}";
$lang->story->subdivideAction = "Subdivide {$lang->SRCommon}";
$lang->story->closeAction = "Close {$lang->SRCommon}";
$lang->story->activateAction = "Activate {$lang->SRCommon}";
$lang->story->deleteAction = "Delete {$lang->SRCommon}";
$lang->story->exportAction = "Export {$lang->SRCommon}";
$lang->story->reportAction = "Report";
$lang->story->skipStory = '%s is a parent story. It cannot be closed.';
$lang->story->closedStory = 'Story %s is closed and will not be closed.';
@@ -83,7 +86,6 @@ $lang->story->batchToTaskTips = "This action will create a task with the same na
$lang->story->successToTask = "Converted to task.";
$lang->story->storyRound = '%s time estimation';
$lang->story->common = 'Câu chuyện';
$lang->story->id = 'ID';
$lang->story->parent = 'Mẹ';
$lang->story->product = $lang->productCommon;
@@ -95,6 +97,7 @@ $lang->story->source = 'Từ';
$lang->story->sourceNote = 'Ghi chú';
$lang->story->fromBug = 'Từ Bug';
$lang->story->title = 'Tiêu đề';
$lang->story->type = "Story/Requirement";
$lang->story->category = 'Category';
$lang->story->color = 'Màu';
$lang->story->toBug = 'Tới Bug';
@@ -122,9 +125,13 @@ $lang->story->closedDate = 'Ngày đóng';
$lang->story->closedReason = 'Lý do';
$lang->story->rejectedReason = 'Lý do từ chối';
$lang->story->reviewedBy = 'Người duyệt';
$lang->story->reviewer = $lang->story->reviewedBy;
$lang->story->reviewers = 'Reviewers';
$lang->story->reviewedDate = 'Ngày duyệt';
$lang->story->activatedDate = 'Activated Date';
$lang->story->version = 'Phiên bản';
$lang->story->feedbackBy = 'From Name';
$lang->story->notifyEmail = 'From Email';
$lang->story->plan = 'Kế hoạch liên kết';
$lang->story->planAB = 'Kế hoạch';
$lang->story->comment = 'Nhận xét';
@@ -141,7 +148,6 @@ $lang->story->colorTag = 'Màu';
$lang->story->files = 'Files';
$lang->story->copy = "Copy";
$lang->story->total = "Tổng câu chuyện";
$lang->story->allStories = 'Tất cả câu chuyện';
$lang->story->draft = 'Nháp';
$lang->story->unclosed = 'Chưa đóng';
$lang->story->deleted = 'Đã xóa';
@@ -157,6 +163,7 @@ $lang->story->field = 'Synchronized fields';
$lang->story->completeRate = 'Completion Rate';
$lang->story->reviewed = 'Reviewed';
$lang->story->toBeReviewed = 'To Be Reviewed';
$lang->story->linkMR = 'Related MRs';
$lang->story->ditto = 'Như trên';
$lang->story->dittoNotice = 'Câu chuyện này chưa liên kết tới cùng sản phẩm bởi bởi vì nó là cuối cùng!';
@@ -244,6 +251,7 @@ $lang->story->legendChildStories = 'Câu chuyện con';
$lang->story->legendSpec = 'Mô tả';
$lang->story->legendVerify = 'Chấp thuận';
$lang->story->legendMisc = 'Khác';
$lang->story->legendInformation = 'Story Information';
$lang->story->lblChange = "Đã đổi";
$lang->story->lblReview = 'Xét duyệt';
@@ -260,6 +268,7 @@ $lang->story->specTemplate = "Theo <một số người dùng>, Tôi mu
$lang->story->needNotReview = 'Không có xét duyệt được yêu cầu';
$lang->story->successSaved = "Câu chuyện đã lưu lại!";
$lang->story->confirmDelete = "Bạn có muốn xóa câu chuyện này?";
$lang->story->confirmRecall = "Do you want to recall this story?";
$lang->story->errorEmptyChildStory = '『Câu chuyện đã phân rã』 không thể để trống.';
$lang->story->errorNotSubdivide = "Nếu tình trạng này là chưa kích hoạt, hoặc giai đoạn này chưa đợi, hoặc một câu chuyện con, nó không thể bị chia nhỏ.";
$lang->story->errorEmptyReviewedBy = "『ReviewedBy』 không thể để trống.";
@@ -273,6 +282,9 @@ $lang->story->moveChildrenTips = "Its Child {$lang->SRCommon} will be moved
$lang->story->changeTips = 'The story associated with the requirements to change, click "Cancel" ignore this change, click "Confirm" to change the story.';
$lang->story->estimateMustBeNumber = 'Estimate value must be number.';
$lang->story->estimateMustBePlus = 'Estimated value cannot be negative';
$lang->story->confirmChangeBranch = $lang->SRCommon . ' %s is linked to the plan of its linked branch. If the branch is edited, ' . $lang->SRCommon . ' will be removed from the plan of its linked branch. Do you want to continue edit ' . $lang->SRCommon . '?';
$lang->story->confirmChangePlan = $lang->SRCommon . ' %s is linked to the branch of its plan. If the branch is edited, ' . $lang->SRCommon . ' will be removed from the plan. Do you want to continue edit branch ?';
$lang->story->errorDuplicateStory = $lang->SRCommon . '%s not exist';
$lang->story->form = new stdclass();
$lang->story->form->area = 'Phạm vi';
@@ -292,6 +304,7 @@ $lang->story->action->linked2plan = array('main' => '$date, liên kế
$lang->story->action->unlinkedfromplan = array('main' => '$date, bị hủy bởi <strong>$actor</strong> từ kế hoạch <strong>$extra</strong>.');
$lang->story->action->linked2execution = array('main' => '$date, liên kết bởi <strong>$actor</strong> tới ' . $lang->executionCommon . ' <strong>$extra</strong>.');
$lang->story->action->unlinkedfromexecution = array('main' => '$date, bị hủy bởi <strong>$actor</strong> từ ' . $lang->executionCommon . ' <strong>$extra</strong>.');
$lang->story->action->linked2kanban = array('main' => '$date, linked by <strong>$actor</strong> to Kanban <strong>$extra</strong>.');
$lang->story->action->linked2project = array('main' => '$date, liên kết bởi <strong>$actor</strong> tớ project <strong>$extra</strong>.');
$lang->story->action->unlinkedfromproject = array('main' => '$date, bị hủy bởi <strong>$actor</strong> từ project <strong>$extra</strong>.');
$lang->story->action->linked2build = array('main' => '$date, liên kết bởi <strong>$actor</strong> tới Bản dựng <strong>$extra</strong>');
@@ -406,3 +419,24 @@ $lang->story->categoryList['safe'] = 'Safe';
$lang->story->categoryList['experience'] = 'Experience';
$lang->story->categoryList['improve'] = 'Improve';
$lang->story->categoryList['other'] = 'Other';
$lang->story->changeTip = 'This Story is under review and cannot be changed.';
$lang->story->reviewTip = array();
$lang->story->reviewTip['active'] = 'The Story is already active,no review requirements.';
$lang->story->reviewTip['notReviewer'] = 'You are not the reviewer of this Story and cannot perform review operations.';
$lang->story->reviewTip['reviewed'] = 'Reviewed';
$lang->story->reviewTip['recalled'] = 'This Story has been withdrawn from review and cannot be reviewed.';
$lang->story->recallTip = array();
$lang->story->recallTip['actived'] = 'The Story has not initiated a review process and no undo action is required.';
$lang->story->recallTip['recalled'] = 'This Story has been withdrawn from review and cannot be cancelled.';
$lang->story->recallTip['reviewed'] = 'The review process has been started and cannot be cancelled.';
$lang->story->recallTip['notOpenedBy'] = 'You are not the review initiator and cannot cancel the operation.';
$lang->story->subDivideTip = array();
$lang->story->subDivideTip['subStory'] = 'The Sub-stories cannot be subdivided.';
$lang->story->subDivideTip['planned'] = 'The Story has been planned and cannot be subdivided.';
$lang->story->subDivideTip['projected'] = 'The Story has been initiated and cannot be subdivided.';
$lang->story->subDivideTip['reviewed'] = 'The review process has been started and cannot be subdivided.';
$lang->story->subDivideTip['notActive'] = 'The Story is not active and cannot be subdivided.';
+21
View File
@@ -419,3 +419,24 @@ $lang->story->categoryList['safe'] = '安全';
$lang->story->categoryList['experience'] = '体验';
$lang->story->categoryList['improve'] = '改进';
$lang->story->categoryList['other'] = '其他';
$lang->story->changeTip = '该需求正在评审中,无法进行变更';
$lang->story->reviewTip = array();
$lang->story->reviewTip['active'] = '该需求已是激活状态,无需求评审';
$lang->story->reviewTip['notReviewer'] = '您不是该需求的评审人员,无法进行评审操作';
$lang->story->reviewTip['reviewed'] = '您已评审';
$lang->story->reviewTip['recalled'] = '该需求已撤销评审,无法进行评审操作';
$lang->story->recallTip = array();
$lang->story->recallTip['actived'] = '该需求未发起评审流程,无需撤销操作';
$lang->story->recallTip['recalled'] = '该需求已经撤销评审,无法进行撤销操作';
$lang->story->recallTip['reviewed'] = '已进入评审流程,无法进行撤销操作';
$lang->story->recallTip['notOpenedBy'] = '您不是评审发起人,无法进行撤销操作';
$lang->story->subDivideTip = array();
$lang->story->subDivideTip['subStory'] = '子需求无法细分';
$lang->story->subDivideTip['planned'] = '该需求已计划,无法进行细分操作';
$lang->story->subDivideTip['projected'] = '该需求已立项,无法进行细分操作';
$lang->story->subDivideTip['reviewed'] = '已进入评审流程,无法进行细分操作';
$lang->story->subDivideTip['notActive'] = '需求不是激活状态,无法进行细分操作';
+60 -5
View File
@@ -3843,16 +3843,71 @@ class storyModel extends model
{
if(common::canBeChanged('story', $story))
{
$storyReviewer = isset($story->revierer) ? $story->reviewer : array();
if($story->URChanged) return $this->buildMenu('story', 'processStoryChange', $params, $story, $type, 'search', '', 'iframe', true, '', $this->lang->confirm);
$menu .= $this->buildMenu('story', 'change', $params . "&from=$story->from", $story, $type, 'alter');
$menu .= $this->buildMenu('story', 'review', $params . "&from=$story->from", $story, $type, 'search');
$menu .= $this->buildMenu('story', 'recall', $params, $story, $type, 'undo', 'hiddenwin', '', '', '', $this->lang->story->recall);
$isClick = $this->isClickable($story, 'change');
$title = $isClick ? '' : $this->lang->story->changeTip;
$menu .= $this->buildMenu('story', 'change', $params . "&from=$story->from", $story, $type, 'alter', '', '', false, '', $title);
$isClick = $this->isClickable($story, 'review');
$title = $this->lang->story->review;
if(!$isClick)
{
if($story->status == 'active')
{
$title = $this->lang->story->reviewTip['active'];
}
elseif($storyReviewer and in_array($this->app->user->account, $storyReviewer))
{
$title = $this->lang->story->reviewTip['reviewed'];
}
elseif($storyReviewer and !in_array($this->app->user->account, $storyReviewer))
{
$title = $this->lang->story->reviewTip['notReviewer'];
}
elseif(empty($storyReviewer))
{
$title = $this->lang->story->reviewTip['recalled'];
}
}
$menu .= $this->buildMenu('story', 'review', $params . "&from=$story->from", $story, $type, 'search', '', '', false, '', $title);
$title = $this->lang->story->recall;
$isClick = $this->isClickable($story, 'recall');
if(!$isClick)
{
if($story->status == 'draft' and empty($storyReviewer)) $title = $this->lang->story->recallTip['recalled'];
if($story->status == 'draft' and !empty($storyReviewer)) $title = $this->lang->story->recallTip['reviewed'];
if(empty($story->reviewedBy) and strpos('draft,changed', $story->status) !== false and !empty($story->reviewer) and $this->app->user->account != $story->openedBy) $title = $this->lang->story->recallTip['notOpenedBy'];
if($story->status == 'active' and empty($story->reviewer)) $title = $this->lang->story->recallTip['actived'];
}
$menu .= $this->buildMenu('story', 'recall', $params, $story, $type, 'undo', 'hiddenwin', '', '', '', $title);
$menu .= $this->buildMenu('story', 'close', $params, $story, $type, '', '', 'iframe', true);
$menu .= $this->buildMenu('story', 'edit', $params . "&from=$story->from", $story, $type);
if($story->type != 'requirement' and $this->config->vision != 'lite') $menu .= $this->buildMenu('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=&param=0&$params", $story, $type, 'sitemap', '', '', false, "data-app='qa'");
if($this->app->rawModule != 'projectstory' OR $this->config->vision == 'lite') $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID={$this->session->project}", $story, $type, 'split', '', '', '', '', $this->lang->story->subdivide);
if($this->app->rawModule != 'projectstory' OR $this->config->vision == 'lite')
{
$isClick = $this->isClickable($story, 'batchcreate');
$title = $this->lang->story->subdivide;
if(!$isClick)
{
if($story->parent > 0)
{
$title = $this->lang->story->subDivideTip['subStory'];
}
else
{
if(!empty($story->plan)) $title = $this->lang->story->subDivideTip['planned'];
if($story->stage == 'projected') $title = $this->lang->story->subDivideTip['projected'];
if($story->status == 'draft' and !empty($story->reviewer)) $title = $this->lang->story->subDivideTip['reviewed'];
if($story->status != 'active') $title = $this->lang->story->subDivideTip['notActive'];
}
}
$menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID={$this->session->project}", $story, $type, 'split', '', '', '', '', $title);
}
if($this->app->rawModule == 'projectstory' and $this->config->vision != 'lite') $menu .= $this->buildMenu('projectstory', 'unlinkStory', "projectID={$this->session->project}&$params", $story, $type, 'unlink', 'hiddenwin');
}
else