* Finish task #73470.

This commit is contained in:
wangyuting2
2022-10-26 07:01:57 +00:00
parent 2651502b2c
commit f8f329ec94
19 changed files with 285 additions and 8 deletions
+1 -1
View File
@@ -224,7 +224,7 @@ class router extends baseRouter
/* User preference init. */
$config->URSR = $URSR;
$config->URAndSR = ($URAndSR and strpos(",{$disabledFeatures},", ',URStory,') === false);
$config->URAndSR = ($URAndSR and strpos(",{$disabledFeatures},", ',productURStory,') === false);
$config->programLink = 'program-browse';
$config->productLink = 'product-all';
$config->projectLink = 'project-browse';
+7
View File
@@ -14,5 +14,12 @@ $config->admin->apiRoot = 'https://www.zentao.net';
$config->admin->log = new stdclass();
$config->admin->log->saveDays = 30;
$config->admin->module = new stdclass();
$config->admin->module->product = array('roadmap', 'track', 'URStory');
$config->admin->module->scrum = array('repo', 'issue', 'risk', 'opportunity', 'process', 'measrecord', 'auditplan', 'meeting');
$config->admin->module->waterfall = array('repo', 'track', 'researchplan', 'issue', 'risk', 'opportunity', 'process', 'measrecord', 'auditplan', 'gapanalysis', 'meeting');
$config->admin->module->assetlib = array('storylib', 'caselib', 'issuelib', 'risklib', 'opportunitylib', 'practicelib', 'componentlib');
$config->admin->module->other = array('devops', 'kanban', 'oa', 'deploy', 'traincourse');
if(!isset($config->safe)) $config->safe = new stdclass();
if(!isset($config->safe->weak)) $config->safe->weak = '123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123';
+23
View File
@@ -233,6 +233,29 @@ class admin extends control
$this->display();
}
public function setModule()
{
if($_POST)
{
$closedFeatures = '';
if(isset($_POST['module']))
{
foreach($this->post->module as $module => $options)
{
$checked = reset($options);
if(!$checked) $closedFeatures .= "$module,";
}
}
$closedFeatures = rtrim($closedFeatures, ',');
$this->loadModel('setting')->setItem('system.common.closedFeatures', $closedFeatures);
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'reload'));
}
$this->view->title = $this->lang->admin->setModuleIndex;
$this->view->closedFeatures = $this->loadModel('setting')->getItem('owner=system&module=common&section=&key=closedFeatures');
$this->view->disabledFeatures = $this->setting->getItem('owner=system&module=common&section=&key=disabledFeatures');
$this->display();
}
/**
* Certify ztEmail.
*
+2
View File
@@ -0,0 +1,2 @@
.group-item {display: block; width: 220px; float: left; font-size: 14px;}
.group-item .checkbox-inline label {padding-left: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
+15
View File
@@ -0,0 +1,15 @@
$(function()
{
$("input[name^='module']").change(function()
{
const name = $(this).attr('name');
if($(this).prop('checked'))
{
$("input[name='" + name + "'][type=hidden]").val('1').attr('disabled', 'disabled');
}
else
{
$("input[name='" + name + "'][type=hidden]").val('0').attr('disabled', false);
}
})
})
+39
View File
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Bestätigungscode anfordern';
$lang->admin->register = 'Register';
$lang->admin->resetPWDSetting = 'Reset password Setting';
$lang->admin->tableEngine = 'Table Engine';
$lang->admin->setModuleIndex = 'Set Module';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Konto verknüpfen';
$lang->admin->bind->success = "Konto wurde verknüpft!";
$lang->admin->setModule = new stdclass();
$lang->admin->setModule->module = 'Module';
$lang->admin->setModule->optional = 'Optional';
$lang->admin->setModule->opened = 'Opened';
$lang->admin->setModule->closed = 'Closed';
$lang->admin->setModule->product = 'Product';
$lang->admin->setModule->scrum = 'Scrum Project';
$lang->admin->setModule->waterfall = 'Waterfall Project';
$lang->admin->setModule->assetlib = 'Assetlib';
$lang->admin->setModule->other = 'Other';
$lang->admin->setModule->repo = 'Repo';
$lang->admin->setModule->issue = 'Issue';
$lang->admin->setModule->risk = 'Risk';
$lang->admin->setModule->opportunity = 'Opportunity';
$lang->admin->setModule->process = 'Process';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->setModule->auditplan = 'QA';
$lang->admin->setModule->meeting = 'Meeting';
$lang->admin->setModule->roadmap = 'Roadmap';
$lang->admin->setModule->track = 'Track';
$lang->admin->setModule->URStory = 'URStroy';
$lang->admin->setModule->researchplan = 'Researchplan';
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
$lang->admin->setModule->storylib = 'Story Lib';
$lang->admin->setModule->caselib = 'Case Lib';
$lang->admin->setModule->issuelib = 'Issue Lib';
$lang->admin->setModule->risklib = 'Risk Lib';
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
$lang->admin->setModule->practicelib = 'Practice Lib';
$lang->admin->setModule->componentlib = 'Component Lib';
$lang->admin->setModule->devops = 'DevOps';
$lang->admin->setModule->kanban = 'Kanban';
$lang->admin->setModule->oa = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Sicherheits-Regeln';
$lang->admin->safe->set = 'PasswortStärke';
+39
View File
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Send Verification Code';
$lang->admin->register = 'Register';
$lang->admin->resetPWDSetting = 'Reset password Setting';
$lang->admin->tableEngine = 'Table Engine';
$lang->admin->setModuleIndex = 'Set Module';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Link Account';
$lang->admin->bind->success = "Account is linked!";
$lang->admin->setModule = new stdclass();
$lang->admin->setModule->module = 'Module';
$lang->admin->setModule->optional = 'Optional';
$lang->admin->setModule->opened = 'Opened';
$lang->admin->setModule->closed = 'Closed';
$lang->admin->setModule->product = 'Product';
$lang->admin->setModule->scrum = 'Scrum Project';
$lang->admin->setModule->waterfall = 'Waterfall Project';
$lang->admin->setModule->assetlib = 'Assetlib';
$lang->admin->setModule->other = 'Other';
$lang->admin->setModule->repo = 'Repo';
$lang->admin->setModule->issue = 'Issue';
$lang->admin->setModule->risk = 'Risk';
$lang->admin->setModule->opportunity = 'Opportunity';
$lang->admin->setModule->process = 'Process';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->setModule->auditplan = 'QA';
$lang->admin->setModule->meeting = 'Meeting';
$lang->admin->setModule->roadmap = 'Roadmap';
$lang->admin->setModule->track = 'Track';
$lang->admin->setModule->URStory = 'URStroy';
$lang->admin->setModule->researchplan = 'Researchplan';
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
$lang->admin->setModule->storylib = 'Story Lib';
$lang->admin->setModule->caselib = 'Case Lib';
$lang->admin->setModule->issuelib = 'Issue Lib';
$lang->admin->setModule->risklib = 'Risk Lib';
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
$lang->admin->setModule->practicelib = 'Practice Lib';
$lang->admin->setModule->componentlib = 'Component Lib';
$lang->admin->setModule->devops = 'DevOps';
$lang->admin->setModule->kanban = 'Kanban';
$lang->admin->setModule->oa = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Security Policy';
$lang->admin->safe->set = 'Password Settings';
+39
View File
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Obtenir le Code de vérification';
$lang->admin->register = 'Register';
$lang->admin->resetPWDSetting = 'Reset password Setting';
$lang->admin->tableEngine = 'Table Engine';
$lang->admin->setModuleIndex = 'Set Module';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Lier au compte';
$lang->admin->bind->success = "Le compte est associé !";
$lang->admin->setModule = new stdclass();
$lang->admin->setModule->module = 'Module';
$lang->admin->setModule->optional = 'Optional';
$lang->admin->setModule->opened = 'Opened';
$lang->admin->setModule->closed = 'Closed';
$lang->admin->setModule->product = 'Product';
$lang->admin->setModule->scrum = 'Scrum Project';
$lang->admin->setModule->waterfall = 'Waterfall Project';
$lang->admin->setModule->assetlib = 'Assetlib';
$lang->admin->setModule->other = 'Other';
$lang->admin->setModule->repo = 'Repo';
$lang->admin->setModule->issue = 'Issue';
$lang->admin->setModule->risk = 'Risk';
$lang->admin->setModule->opportunity = 'Opportunity';
$lang->admin->setModule->process = 'Process';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->setModule->auditplan = 'QA';
$lang->admin->setModule->meeting = 'Meeting';
$lang->admin->setModule->roadmap = 'Roadmap';
$lang->admin->setModule->track = 'Track';
$lang->admin->setModule->URStory = 'URStroy';
$lang->admin->setModule->researchplan = 'Researchplan';
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
$lang->admin->setModule->storylib = 'Story Lib';
$lang->admin->setModule->caselib = 'Case Lib';
$lang->admin->setModule->issuelib = 'Issue Lib';
$lang->admin->setModule->risklib = 'Risk Lib';
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
$lang->admin->setModule->practicelib = 'Practice Lib';
$lang->admin->setModule->componentlib = 'Component Lib';
$lang->admin->setModule->devops = 'DevOps';
$lang->admin->setModule->kanban = 'Kanban';
$lang->admin->setModule->oa = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Politique de sécurité';
$lang->admin->safe->set = 'Paramétrages du Mot de passe';
+39
View File
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = '获取验证码';
$lang->admin->register = '登记';
$lang->admin->resetPWDSetting = '重置密码设置';
$lang->admin->tableEngine = '表引擎';
$lang->admin->setModuleIndex = '系统功能配置';
$lang->admin->api = '接口';
$lang->admin->log = '日志';
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
$lang->admin->bind->caption = '关联社区帐号';
$lang->admin->bind->success = "关联账户成功";
$lang->admin->setModule = new stdclass();
$lang->admin->setModule->module = '功能点';
$lang->admin->setModule->optional = '可选功能';
$lang->admin->setModule->opened = '开启的';
$lang->admin->setModule->closed = '关闭的';
$lang->admin->setModule->product = '产品';
$lang->admin->setModule->scrum = '敏捷项目';
$lang->admin->setModule->waterfall = '瀑布项目';
$lang->admin->setModule->assetlib = '资产库';
$lang->admin->setModule->other = '其他功能';
$lang->admin->setModule->repo = '代码';
$lang->admin->setModule->issue = '问题';
$lang->admin->setModule->risk = '风险';
$lang->admin->setModule->opportunity = '机会';
$lang->admin->setModule->process = '过程';
$lang->admin->setModule->measrecord = '度量';
$lang->admin->setModule->auditplan = 'QA';
$lang->admin->setModule->meeting = '会议';
$lang->admin->setModule->roadmap = '路线图';
$lang->admin->setModule->track = '矩阵';
$lang->admin->setModule->URStory = '用户需求';
$lang->admin->setModule->researchplan = '调研';
$lang->admin->setModule->gapanalysis = '培训';
$lang->admin->setModule->storylib = '需求库';
$lang->admin->setModule->caselib = '用例库';
$lang->admin->setModule->issuelib = '问题库';
$lang->admin->setModule->risklib = '风险库';
$lang->admin->setModule->opportunitylib = '机会库';
$lang->admin->setModule->practicelib = '最佳实践库';
$lang->admin->setModule->componentlib = '组件库';
$lang->admin->setModule->devops = 'DevOps';
$lang->admin->setModule->kanban = '通用看板';
$lang->admin->setModule->oa = '办公';
$lang->admin->setModule->deploy = '运维';
$lang->admin->setModule->traincourse = '学堂';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全策略';
$lang->admin->safe->set = '密码安全设置';
+69
View File
@@ -0,0 +1,69 @@
<?php
/**
* The setmodule view file of admin module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Yuting Wang <wangyuting@cnezsoft.com>
* @package admin
* @version $Id: setmodule.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainContent' class='main-row'>
<div class='main-col main-content'>
<div class='main-header'>
<h2><?php echo $lang->admin->setModuleIndex;?></h2>
</div>
<form class="load-indicator main-form form-ajax" id="ajaxForm" method="post">
<table class='table table-condensed table-bordered active-disabled table-fixed'>
<thead class='text-center'>
<tr>
<th rowspan='2' class='w-120px'><?php echo $lang->admin->setModule->module;?></th>
<th colspan='2'><?php echo $lang->admin->setModule->optional;?></th>
</tr>
<tr>
<th><?php echo $lang->admin->setModule->opened;?></th>
<th><?php echo $lang->admin->setModule->closed;?></th>
</tr>
</thead>
<tbody>
<?php foreach($this->config->admin->module as $module => $options):?>
<?php if(strpos(",$disabledFeatures,", ",$module,") !== false) continue;?>
<tr>
<th class='text-right'><?php echo $lang->admin->setModule->{$module};?></th>
<td>
<?php foreach($options as $option):?>
<?php $code = $module . ucfirst($option);?>
<?php if(strpos(",$disabledFeatures,", ",$code,") !== false) continue;?>
<?php if(strpos(",$closedFeatures,", ",$code,") !== false) continue;?>
<div class='group-item'>
<?php echo html::checkbox("module[{$code}]", array('1' => $lang->admin->setModule->{$option}), '1', "data-code='{$code}'", 'inline');?>
<?php echo html::hidden("module[{$code}][]", '1', 'disabled');?>
</div>
<?php endForeach;?>
</td>
<td>
<?php foreach($options as $option):?>
<?php $code = $module . ucfirst($option);?>
<?php if(strpos(",$disabledFeatures,", ",$code,") !== false) continue;?>
<?php if(strpos(",$closedFeatures,", ",$code,") === false) continue;?>
<div class='group-item'>
<?php echo html::checkbox("module[{$code}]", array('1' => $lang->admin->setModule->{$option}), '0', "data-code='{$code}'", 'inline');?>
<?php echo html::hidden("module[{$code}][]", '0');?>
</div>
<?php endForeach;?>
</td>
</tr>
<?php endForeach;?>
<tr>
<th></th>
<td colspan='2'><?php echo html::submitButton();?></td>
</tr>
</tbody>
</table>
</form>`
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
+1
View File
@@ -291,6 +291,7 @@ $lang->devops->rules = 'Rule';
$lang->devops->settings = 'Setting Merge Request';
$lang->devops->set = 'Set';
$lang->admin->module = 'Module';
$lang->admin->system = 'System';
$lang->admin->entry = 'Application';
$lang->admin->data = 'Data';
+1
View File
@@ -291,6 +291,7 @@ $lang->devops->rules = 'Rule';
$lang->devops->settings = 'Setting Merge Request';
$lang->devops->set = 'Set';
$lang->admin->module = 'Module';
$lang->admin->system = 'System';
$lang->admin->entry = 'Application';
$lang->admin->data = 'Data';
+1
View File
@@ -291,6 +291,7 @@ $lang->devops->rules = 'Rule';
$lang->devops->settings = 'Setting Merge Request';
$lang->devops->set = 'Set';
$lang->admin->module = 'Module';
$lang->admin->system = 'System';
$lang->admin->entry = 'Application';
$lang->admin->data = 'Data';
+3 -2
View File
@@ -170,7 +170,7 @@ $lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|ta
$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
$lang->product->menu->settings = array('link' => "{$lang->settings}|product|view|productID=%s", 'subModule' => 'tree,branch', 'alias' => 'edit,whitelist,addwhitelist');
if(strpos(",$config->disabledFeatures,", ',track,') === false)
if(strpos(",$config->disabledFeatures,", ',productTrack,') === false)
{
$lang->product->menu->track = array('link' => "{$lang->track}|product|track|productID=%s");
}
@@ -577,7 +577,7 @@ $lang->admin->menu->custom = array('link' => "{$lang->custom->common}|custom|
$lang->admin->menu->extension = array('link' => "{$lang->extension->common}|extension|browse", 'subModule' => 'extension');
$lang->admin->menu->dev = array('link' => "$lang->redev|dev|api", 'alias' => 'db', 'subModule' => 'dev,editor,entry');
$lang->admin->menu->message = array('link' => "{$lang->message->common}|message|index", 'subModule' => 'message,mail,webhook');
$lang->admin->menu->system = array('link' => "{$lang->admin->system}|backup|index", 'subModule' => 'cron,backup,action,admin,search,convert', 'exclude' => 'admin-index,admin-xuanxuan,admin-register,admin-ztcompany');
$lang->admin->menu->system = array('link' => "{$lang->admin->system}|admin|setmodule", 'subModule' => 'cron,backup,action,admin,search,convert', 'exclude' => 'admin-index,admin-xuanxuan,admin-register,admin-ztcompany');
$lang->admin->menu->model['dropMenu'] = new stdclass();
$lang->admin->menu->model['dropMenu']->allModel = array('link' => "{$lang->globalSetting}|custom|browsestoryconcept|", 'subModule' => 'measurement,report,sqlbuilder,subject,custom,meetingroom,baseline');
@@ -647,6 +647,7 @@ $lang->admin->menu->dev['menuOrder'][15] = 'editor';
$lang->admin->menu->dev['menuOrder'][20] = 'entry';
$lang->admin->menu->system['subMenu'] = new stdclass();
$lang->admin->menu->system['subMenu']->setModule = array('link' => "{$lang->admin->module}|admin|setmodule");
$lang->admin->menu->system['subMenu']->backup = array('link' => "{$lang->backup->common}|backup|index");
$lang->admin->menu->system['subMenu']->trash = array('link' => "{$lang->action->trash}|action|trash");
$lang->admin->menu->system['subMenu']->safe = array('link' => "$lang->security|admin|safe", 'alias' => 'checkweak,resetpwdsetting');
+1
View File
@@ -291,6 +291,7 @@ $lang->devops->rules = '指令';
$lang->devops->settings = '合并请求设置';
$lang->devops->set = '设置';
$lang->admin->module = '功能设置';
$lang->admin->system = '系统';
$lang->admin->entry = '应用';
$lang->admin->data = '数据';
+1 -1
View File
@@ -22,7 +22,7 @@ $config->custom->requiredModules[35] = 'execution';
$config->custom->requiredModules[40] = 'task';
$config->custom->requiredModules[45] = 'build';
$config->custom->features = array('waterfall', 'URStory', 'scrumOpportunity', 'scrumMeeting', 'scrumAuditplan', 'scrumProcess', 'scrumIssue', 'scrumRisk', 'assetlib');
$config->custom->features = array('waterfall', 'productURStory', 'scrumOpportunity', 'scrumMeeting', 'scrumAuditplan', 'scrumProcess', 'scrumIssue', 'scrumRisk', 'assetlib');
$config->custom->requiredModules[50] = 'bug';
$config->custom->requiredModules[55] = 'testcase';
+2 -2
View File
@@ -917,7 +917,7 @@ class customModel extends model
$function = 'has' . ucfirst($feature) . 'Data';
if(!$this->$function()) $disabledFeatures .= "$feature,";
}
$disabledFeatures .= 'scrumMeasrecord,track';
$disabledFeatures .= 'scrumMeasrecord,productTrack';
}
$disabledFeatures = rtrim($disabledFeatures, ',');
@@ -932,7 +932,7 @@ class customModel extends model
* @access public
* @return int
*/
public function hasURStoryData()
public function hasProductURStoryData()
{
return $this->dao->select('*')->from(TABLE_STORY)->where('type')->eq('requirement')->andWhere('deleted')->eq('0')->count();
}
+1 -1
View File
@@ -34,7 +34,7 @@
</div>
</li>
<?php if(strpos(",{$this->config->disabledFeatures},", ',URStory,') === false):?>
<?php if(strpos(",{$this->config->disabledFeatures},", ',productURStory,') === false):?>
<li>
<div class="form-group">
<label><?php echo $lang->custom->conceptQuestions['URAndSR']?></label>
+1 -1
View File
@@ -1889,7 +1889,7 @@ $lang->dev->methodOrder[20] = 'translate';
global $config;
$hasWaterfall = strpos(",$config->disabledFeatures,", ',waterfall,') === false || (defined('IN_UPGRADE') && IN_UPGRADE);
$hasTrack = strpos(",$config->disabledFeatures,", ',track,') === false || (defined('IN_UPGRADE') && IN_UPGRADE);
$hasTrack = strpos(",$config->disabledFeatures,", ',productTrack,') === false || (defined('IN_UPGRADE') && IN_UPGRADE);
$isURSR = $config->URAndSR || (defined('IN_UPGRADE') && IN_UPGRADE);
$hasProgram = $config->systemMode == 'new' || (defined('IN_UPGRADE') && IN_UPGRADE);
if(!$hasWaterfall)