From 751c1f5845b83006265ce2c76bede6e233e2f694 Mon Sep 17 00:00:00 2001 From: Wangyuting <851424971@qq.com> Date: Fri, 28 Apr 2023 14:28:11 +0800 Subject: [PATCH] * Optimize block dashboard function. --- db/update20.0.sql | 2 +- module/block/config.php | 52 +++--- module/block/control.php | 28 ++-- module/block/lang/zh-cn.php | 270 +++++++++++++++++--------------- module/block/model.php | 63 +++----- module/block/ui/create.html.php | 3 + module/block/ui/edit.html.php | 4 +- module/block/zen.php | 36 ++--- module/qa/control.php | 2 +- 9 files changed, 229 insertions(+), 231 deletions(-) diff --git a/db/update20.0.sql b/db/update20.0.sql index 5bdf6af527..ebdf019abe 100644 --- a/db/update20.0.sql +++ b/db/update20.0.sql @@ -6,4 +6,4 @@ ALTER TABLE `zt_todo` CHANGE `idvalue` `objectID` mediumint(8) unsigned default UPDATE `zt_block` SET `dashboard` = `module`; UPDATE `zt_block` SET `module` = IF(`source` != '', `source`, `code`); - +DROP INDEX account_vision_module_type_order ON `zt_block`; diff --git a/module/block/config.php b/module/block/config.php index 3bd9860a1b..e9279b4376 100644 --- a/module/block/config.php +++ b/module/block/config.php @@ -100,13 +100,13 @@ $config->block->params['project']->orderBy['name'] = $lang->block->orderBy; $config->block->params['project']->orderBy['options'] = $lang->block->orderByList->product; $config->block->params['project']->orderBy['control'] = 'select'; -$config->block->params['projectTeam'] = clone $config->block->params['default']; -$config->block->params['projectTeam']->type['name'] = $lang->block->type; -$config->block->params['projectTeam']->type['options'] = $lang->block->typeList->projectAll; -$config->block->params['projectTeam']->type['control'] = 'select'; -$config->block->params['projectTeam']->orderBy['name'] = $lang->block->orderBy; -$config->block->params['projectTeam']->orderBy['options'] = $lang->block->orderByList->project; -$config->block->params['projectTeam']->orderBy['control'] = 'select'; +$config->block->params['projectteam'] = clone $config->block->params['default']; +$config->block->params['projectteam']->type['name'] = $lang->block->type; +$config->block->params['projectteam']->type['options'] = $lang->block->typeList->projectAll; +$config->block->params['projectteam']->type['control'] = 'select'; +$config->block->params['projectteam']->orderBy['name'] = $lang->block->orderBy; +$config->block->params['projectteam']->orderBy['options'] = $lang->block->orderByList->project; +$config->block->params['projectteam']->orderBy['control'] = 'select'; $config->block->params['build'] = clone $config->block->params['default']; @@ -115,33 +115,33 @@ $config->block->params['product']->type['name'] = $lang->block->type; $config->block->params['product']->type['options'] = $lang->block->typeList->product; $config->block->params['product']->type['control'] = 'select'; -$config->block->params['productStatistic'] = clone $config->block->params['default']; -$config->block->params['productStatistic']->type['name'] = $lang->block->type; -$config->block->params['productStatistic']->type['options'] = $lang->block->typeList->product; -$config->block->params['productStatistic']->type['control'] = 'select'; +$config->block->params['productstatistic'] = clone $config->block->params['default']; +$config->block->params['productstatistic']->type['name'] = $lang->block->type; +$config->block->params['productstatistic']->type['options'] = $lang->block->typeList->product; +$config->block->params['productstatistic']->type['control'] = 'select'; -$config->block->params['projectStatistic'] = clone $config->block->params['default']; -$config->block->params['projectStatistic']->type['name'] = $lang->block->type; -$config->block->params['projectStatistic']->type['options'] = $lang->block->typeList->project; -$config->block->params['projectStatistic']->type['control'] = 'select'; +$config->block->params['projectstatistic'] = clone $config->block->params['default']; +$config->block->params['projectstatistic']->type['name'] = $lang->block->type; +$config->block->params['projectstatistic']->type['options'] = $lang->block->typeList->project; +$config->block->params['projectstatistic']->type['control'] = 'select'; -$config->block->params['executionStatistic'] = clone $config->block->params['default']; -$config->block->params['executionStatistic']->type['name'] = $lang->block->type; -$config->block->params['executionStatistic']->type['options'] = $lang->block->typeList->execution; -$config->block->params['executionStatistic']->type['control'] = 'select'; +$config->block->params['executionstatistic'] = clone $config->block->params['default']; +$config->block->params['executionstatistic']->type['name'] = $lang->block->type; +$config->block->params['executionstatistic']->type['options'] = $lang->block->typeList->execution; +$config->block->params['executionstatistic']->type['control'] = 'select'; $config->block->params['qaStatistic'] = clone $config->block->params['default']; $config->block->params['qaStatistic']->type['name'] = $lang->block->type; $config->block->params['qaStatistic']->type['options'] = $lang->block->typeList->product; $config->block->params['qaStatistic']->type['control'] = 'select'; -$config->block->params['waterfallIssue'] = clone $config->block->params['default']; -$config->block->params['waterfallIssue']->type['name'] = $lang->block->type; -$config->block->params['waterfallIssue']->type['options'] = $lang->block->typeList->issue; -$config->block->params['waterfallIssue']->type['control'] = 'select'; -$config->block->params['waterfallIssue']->orderBy['name'] = $lang->block->orderBy; -$config->block->params['waterfallIssue']->orderBy['options'] = $lang->block->orderByList->product; -$config->block->params['waterfallIssue']->orderBy['control'] = 'select'; +$config->block->params['waterfallissue'] = clone $config->block->params['default']; +$config->block->params['waterfallissue']->type['name'] = $lang->block->type; +$config->block->params['waterfallissue']->type['options'] = $lang->block->typeList->issue; +$config->block->params['waterfallissue']->type['control'] = 'select'; +$config->block->params['waterfallissue']->orderBy['name'] = $lang->block->orderBy; +$config->block->params['waterfallissue']->orderBy['options'] = $lang->block->orderByList->product; +$config->block->params['waterfallissue']->orderBy['control'] = 'select'; $config->block->params['waterfallRisk'] = clone $config->block->params['default']; $config->block->params['waterfallRisk']->type['name'] = $lang->block->type; diff --git a/module/block/control.php b/module/block/control.php index 4d79f475a9..a409cb9b2d 100755 --- a/module/block/control.php +++ b/module/block/control.php @@ -206,42 +206,34 @@ class block extends control * 展示应用的仪表盘 * Display dashboard for app. * - * @param string $module - * @param int $projectID + * @param string $dashboard + * @param string $projectID * @access public * @return void */ - public function dashboard(string $module, int $projectID = 0) + public function dashboard(string $dashboard, string $projectID = '0') { - if($this->loadModel('user')->isLogon()) $this->session->set('blockModule', $module); - $blocks = $this->block->getMyDashboard($module); - $vision = $this->config->vision; + $blocks = $this->block->getMyDashboard($dashboard); + $projectID = (int)$projectID; - $section = 'common'; - if($module == 'project' and $projectID) - { - $project = $this->loadModel('project')->getByID($projectID); - $section = $project->model . 'common'; - } - - $isInitiated = $this->block->fetchBlockInitStatus($module, $vision, $section); + $isInitiated = $this->block->fetchBlockInitStatus($dashboard); /* Init block when vist index first. */ - if(empty($blocks) and !$isInitiated and !defined('TUTORIAL') and $this->block->initBlock($module)) + if(empty($blocks) and !$isInitiated and !defined('TUTORIAL') and $this->block->initBlock($dashboard)) { return print(js::reload()); } - $blocks = $this->blockZen->processBlockForRender($blocks, isset($project) ? $project : null); + $blocks = $this->blockZen->processBlockForRender($blocks, $projectID); if($this->app->getViewType() == 'json') return print(json_encode($blocks)); list($shortBlocks, $longBlocks) = $this->blockZen->splitBlocksByLen($blocks); - $this->view->title = zget($this->lang->block->dashboard, $module, $this->lang->block->dashboard['default']); + $this->view->title = zget($this->lang->block->dashboard, $dashboard, $this->lang->block->dashboard['default']); $this->view->longBlocks = $longBlocks; $this->view->shortBlocks = $shortBlocks; - $this->view->dashboard = $module; + $this->view->dashboard = $dashboard; $this->render(); } diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 4af2fe68e4..764f5c1ac0 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -133,183 +133,200 @@ $lang->block->titleList['bug'] = '指派给我的Bug'; $lang->block->titleList['case'] = '指派给我的用例'; $lang->block->titleList['testtask'] = '待测版本列表'; -$lang->block->default['waterfall']['project']['3']['title'] = "{$lang->projectCommon}计划"; -$lang->block->default['waterfall']['project']['3']['code'] = 'waterfallgantt'; -$lang->block->default['waterfall']['project']['3']['source'] = 'project'; -$lang->block->default['waterfall']['project']['3']['grid'] = 8; +$lang->block->default['waterfallproject']['3']['title'] = "{$lang->projectCommon}计划"; +$lang->block->default['waterfallproject']['3']['module'] = 'waterfallproject'; +$lang->block->default['waterfallproject']['3']['code'] = 'waterfallgantt'; +$lang->block->default['waterfallproject']['3']['grid'] = 8; -$lang->block->default['waterfall']['project']['6']['title'] = '最新动态'; -$lang->block->default['waterfall']['project']['6']['code'] = 'projectdynamic'; -$lang->block->default['waterfall']['project']['6']['grid'] = 4; -$lang->block->default['waterfall']['project']['6']['source'] = 'project'; +$lang->block->default['waterfallproject']['6']['title'] = '最新动态'; +$lang->block->default['waterfallproject']['6']['module'] = 'waterfallproject'; +$lang->block->default['waterfallproject']['6']['code'] = 'projectdynamic'; +$lang->block->default['waterfallproject']['6']['grid'] = 4; -$lang->block->default['waterfallplus'] = $lang->block->default['waterfall']; +$lang->block->default['waterfallplusproject'] = $lang->block->default['waterfallproject']; -$lang->block->default['scrum']['project']['1']['title'] = $lang->projectCommon . '概况'; -$lang->block->default['scrum']['project']['1']['code'] = 'scrumoverview'; -$lang->block->default['scrum']['project']['1']['grid'] = 8; +$lang->block->default['scrumproject']['1']['title'] = $lang->projectCommon . '概况'; +$lang->block->default['scrumproject']['1']['module'] = 'scrumproject'; +$lang->block->default['scrumproject']['1']['code'] = 'scrumoverview'; +$lang->block->default['scrumproject']['1']['grid'] = 8; -$lang->block->default['scrum']['project']['2']['title'] = $lang->executionCommon . '列表'; -$lang->block->default['scrum']['project']['2']['code'] = 'scrumlist'; -$lang->block->default['scrum']['project']['2']['grid'] = 8; +$lang->block->default['scrumproject']['2']['title'] = $lang->executionCommon . '列表'; +$lang->block->default['scrumproject']['2']['module'] = 'scrumproject'; +$lang->block->default['scrumproject']['2']['code'] = 'scrumlist'; +$lang->block->default['scrumproject']['2']['grid'] = 8; -$lang->block->default['scrum']['project']['2']['params']['type'] = 'undone'; -$lang->block->default['scrum']['project']['2']['params']['count'] = '20'; -$lang->block->default['scrum']['project']['2']['params']['orderBy'] = 'id_desc'; +$lang->block->default['scrumproject']['2']['params']['type'] = 'undone'; +$lang->block->default['scrumproject']['2']['params']['count'] = '20'; +$lang->block->default['scrumproject']['2']['params']['orderBy'] = 'id_desc'; -$lang->block->default['scrum']['project']['3']['title'] = '待测版本'; -$lang->block->default['scrum']['project']['3']['code'] = 'scrumtest'; -$lang->block->default['scrum']['project']['3']['grid'] = 8; +$lang->block->default['scrumproject']['3']['title'] = '待测版本'; +$lang->block->default['scrumproject']['3']['module'] = 'scrumproject'; +$lang->block->default['scrumproject']['3']['code'] = 'scrumtest'; +$lang->block->default['scrumproject']['3']['grid'] = 8; -$lang->block->default['scrum']['project']['3']['params']['type'] = 'wait'; -$lang->block->default['scrum']['project']['3']['params']['count'] = '15'; -$lang->block->default['scrum']['project']['3']['params']['orderBy'] = 'id_desc'; +$lang->block->default['scrumproject']['3']['params']['type'] = 'wait'; +$lang->block->default['scrumproject']['3']['params']['count'] = '15'; +$lang->block->default['scrumproject']['3']['params']['orderBy'] = 'id_desc'; -$lang->block->default['scrum']['project']['4']['title'] = $lang->executionCommon . '总览'; -$lang->block->default['scrum']['project']['4']['code'] = 'sprint'; -$lang->block->default['scrum']['project']['4']['grid'] = 4; +$lang->block->default['scrumproject']['4']['title'] = $lang->executionCommon . '总览'; +$lang->block->default['scrumproject']['4']['module'] = 'scrumproject'; +$lang->block->default['scrumproject']['4']['code'] = 'sprint'; +$lang->block->default['scrumproject']['4']['grid'] = 4; -$lang->block->default['scrum']['project']['5']['title'] = '最新动态'; -$lang->block->default['scrum']['project']['5']['code'] = 'projectdynamic'; -$lang->block->default['scrum']['project']['5']['grid'] = 4; -$lang->block->default['kanban'] = $lang->block->default['scrum']; -$lang->block->default['agileplus'] = $lang->block->default['scrum']; +$lang->block->default['scrumproject']['5']['title'] = '最新动态'; +$lang->block->default['scrumproject']['5']['module'] = 'scrumproject'; +$lang->block->default['scrumproject']['5']['code'] = 'projectdynamic'; +$lang->block->default['scrumproject']['5']['grid'] = 4; -$lang->block->default['product']['1']['title'] = $lang->productCommon . '统计'; -$lang->block->default['product']['1']['code'] = 'statistic'; -$lang->block->default['product']['1']['grid'] = 8; +$lang->block->default['kanbanproject'] = $lang->block->default['scrumproject']; +$lang->block->default['agileplusproject'] = $lang->block->default['scrumproject']; + +$lang->block->default['product']['1']['title'] = $lang->productCommon . '统计'; +$lang->block->default['product']['1']['module'] = 'product'; +$lang->block->default['product']['1']['code'] = 'statistic'; +$lang->block->default['product']['1']['grid'] = 8; $lang->block->default['product']['1']['params']['type'] = 'all'; $lang->block->default['product']['1']['params']['count'] = '20'; -$lang->block->default['product']['2']['title'] = $lang->productCommon . '总览'; -$lang->block->default['product']['2']['code'] = 'overview'; -$lang->block->default['product']['2']['grid'] = 4; +$lang->block->default['product']['2']['title'] = $lang->productCommon . '总览'; +$lang->block->default['product']['2']['module'] = 'product'; +$lang->block->default['product']['2']['code'] = 'overview'; +$lang->block->default['product']['2']['grid'] = 4; -$lang->block->default['product']['3']['title'] = '未关闭的' . $lang->productCommon; -$lang->block->default['product']['3']['code'] = 'list'; -$lang->block->default['product']['3']['grid'] = 8; +$lang->block->default['product']['3']['title'] = '未关闭的' . $lang->productCommon; +$lang->block->default['product']['3']['module'] = 'product'; +$lang->block->default['product']['3']['code'] = 'list'; +$lang->block->default['product']['3']['grid'] = 8; $lang->block->default['product']['3']['params']['count'] = 15; $lang->block->default['product']['3']['params']['type'] = 'noclosed'; -$lang->block->default['product']['4']['title'] = "指派给我的{$lang->SRCommon}"; -$lang->block->default['product']['4']['code'] = 'story'; -$lang->block->default['product']['4']['grid'] = 4; +$lang->block->default['product']['4']['title'] = "指派给我的{$lang->SRCommon}"; +$lang->block->default['product']['4']['module'] = 'product'; +$lang->block->default['product']['4']['code'] = 'story'; +$lang->block->default['product']['4']['grid'] = 4; $lang->block->default['product']['4']['params']['count'] = 15; $lang->block->default['product']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['product']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['execution']['1']['title'] = '执行统计'; -$lang->block->default['execution']['1']['code'] = 'statistic'; -$lang->block->default['execution']['1']['grid'] = 8; +$lang->block->default['execution']['1']['title'] = '执行统计'; +$lang->block->default['execution']['1']['module'] = 'execution'; +$lang->block->default['execution']['1']['code'] = 'statistic'; +$lang->block->default['execution']['1']['grid'] = 8; $lang->block->default['execution']['1']['params']['type'] = 'all'; $lang->block->default['execution']['1']['params']['count'] = '20'; -$lang->block->default['execution']['2']['title'] = '执行总览'; -$lang->block->default['execution']['2']['code'] = 'overview'; -$lang->block->default['execution']['2']['grid'] = 4; +$lang->block->default['execution']['2']['title'] = '执行总览'; +$lang->block->default['execution']['2']['module'] = 'execution'; +$lang->block->default['execution']['2']['code'] = 'overview'; +$lang->block->default['execution']['2']['grid'] = 4; -$lang->block->default['execution']['3']['title'] = '未关闭的执行'; -$lang->block->default['execution']['3']['code'] = 'list'; -$lang->block->default['execution']['3']['grid'] = 8; +$lang->block->default['execution']['3']['title'] = '未关闭的执行'; +$lang->block->default['execution']['3']['module'] = 'execution'; +$lang->block->default['execution']['3']['code'] = 'list'; +$lang->block->default['execution']['3']['grid'] = 8; $lang->block->default['execution']['3']['params']['count'] = 15; $lang->block->default['execution']['3']['params']['orderBy'] = 'id_desc'; $lang->block->default['execution']['3']['params']['type'] = 'undone'; -$lang->block->default['execution']['4']['title'] = '指派给我的任务'; -$lang->block->default['execution']['4']['code'] = 'task'; -$lang->block->default['execution']['4']['grid'] = 4; +$lang->block->default['execution']['4']['title'] = '指派给我的任务'; +$lang->block->default['execution']['4']['module'] = 'execution'; +$lang->block->default['execution']['4']['code'] = 'task'; +$lang->block->default['execution']['4']['grid'] = 4; $lang->block->default['execution']['4']['params']['count'] = 15; $lang->block->default['execution']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['execution']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['execution']['5']['title'] = '版本列表'; -$lang->block->default['execution']['5']['code'] = 'build'; -$lang->block->default['execution']['5']['grid'] = 8; +$lang->block->default['execution']['5']['title'] = '版本列表'; +$lang->block->default['execution']['5']['module'] = 'execution'; +$lang->block->default['execution']['5']['code'] = 'build'; +$lang->block->default['execution']['5']['grid'] = 8; $lang->block->default['execution']['5']['params']['count'] = 15; $lang->block->default['execution']['5']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['1']['title'] = '测试统计'; -$lang->block->default['qa']['1']['code'] = 'statistic'; -$lang->block->default['qa']['1']['grid'] = 8; +$lang->block->default['qa']['1']['title'] = '测试统计'; +$lang->block->default['qa']['1']['module'] = 'qa'; +$lang->block->default['qa']['1']['code'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; $lang->block->default['qa']['1']['params']['type'] = 'noclosed'; $lang->block->default['qa']['1']['params']['count'] = '20'; -//$lang->block->default['qa']['2']['title'] = '测试用例总览'; -//$lang->block->default['qa']['2']['block'] = 'overview'; -//$lang->block->default['qa']['2']['grid'] = 4; - -$lang->block->default['qa']['2']['title'] = '指派给我的Bug'; -$lang->block->default['qa']['2']['code'] = 'bug'; -$lang->block->default['qa']['2']['grid'] = 4; +$lang->block->default['qa']['2']['title'] = '指派给我的Bug'; +$lang->block->default['qa']['2']['module'] = 'qa'; +$lang->block->default['qa']['2']['code'] = 'bug'; +$lang->block->default['qa']['2']['grid'] = 4; $lang->block->default['qa']['2']['params']['count'] = 15; $lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; $lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['3']['title'] = '指派给我的用例'; -$lang->block->default['qa']['3']['code'] = 'case'; -$lang->block->default['qa']['3']['grid'] = 4; +$lang->block->default['qa']['3']['title'] = '指派给我的用例'; +$lang->block->default['qa']['3']['module'] = 'qa'; +$lang->block->default['qa']['3']['code'] = 'case'; +$lang->block->default['qa']['3']['grid'] = 4; $lang->block->default['qa']['3']['params']['count'] = 15; $lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; $lang->block->default['qa']['3']['params']['type'] = 'assigntome'; -$lang->block->default['qa']['4']['title'] = '待测版本列表'; -$lang->block->default['qa']['4']['code'] = 'testtask'; -$lang->block->default['qa']['4']['grid'] = 8; +$lang->block->default['qa']['4']['title'] = '待测版本列表'; +$lang->block->default['qa']['4']['module'] = 'qa'; +$lang->block->default['qa']['4']['code'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 8; $lang->block->default['qa']['4']['params']['count'] = 15; $lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['qa']['4']['params']['type'] = 'wait'; $lang->block->default['full']['my']['1']['title'] = '欢迎'; +$lang->block->default['full']['my']['1']['module'] = 'welcome'; $lang->block->default['full']['my']['1']['code'] = 'welcome'; $lang->block->default['full']['my']['1']['grid'] = 8; -$lang->block->default['full']['my']['1']['source'] = ''; $lang->block->default['full']['my']['2']['title'] = '最新动态'; +$lang->block->default['full']['my']['2']['module'] = 'dynamic'; $lang->block->default['full']['my']['2']['code'] = 'dynamic'; $lang->block->default['full']['my']['2']['grid'] = 4; -$lang->block->default['full']['my']['2']['source'] = ''; $lang->block->default['full']['my']['3']['title'] = '使用帮助'; +$lang->block->default['full']['my']['3']['module'] = 'guide'; $lang->block->default['full']['my']['3']['code'] = 'guide'; -$lang->block->default['full']['my']['3']['source'] = ''; $lang->block->default['full']['my']['3']['grid'] = 8; -$lang->block->default['full']['my']['4']['title'] = '我的待办'; -$lang->block->default['full']['my']['4']['code'] = 'list'; -$lang->block->default['full']['my']['4']['grid'] = 4; -$lang->block->default['full']['my']['4']['source'] = 'todo'; +$lang->block->default['full']['my']['4']['title'] = '我的待办'; +$lang->block->default['full']['my']['4']['module'] = 'todo'; +$lang->block->default['full']['my']['4']['code'] = 'list'; +$lang->block->default['full']['my']['4']['grid'] = 4; + $lang->block->default['full']['my']['4']['params']['count'] = '20'; -$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon}统计"; -$lang->block->default['full']['my']['5']['code'] = 'statistic'; -$lang->block->default['full']['my']['5']['source'] = 'project'; -$lang->block->default['full']['my']['5']['grid'] = 8; +$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon}统计"; +$lang->block->default['full']['my']['5']['module'] = 'project'; +$lang->block->default['full']['my']['5']['code'] = 'statistic'; +$lang->block->default['full']['my']['5']['grid'] = 8; + $lang->block->default['full']['my']['5']['params']['count'] = '20'; $lang->block->default['full']['my']['6']['title'] = '我的贡献'; -$lang->block->default['full']['my']['6']['code'] = 'contribute'; -$lang->block->default['full']['my']['6']['source'] = ''; +$lang->block->default['full']['my']['6']['module'] = 'contribute'; +$lang->block->default['full']['my']['6']['code'] = 'contribute'; $lang->block->default['full']['my']['6']['grid'] = 4; $lang->block->default['full']['my']['7']['title'] = "我近期参与的{$lang->projectCommon}"; +$lang->block->default['full']['my']['7']['module'] = 'project'; $lang->block->default['full']['my']['7']['code'] = 'recentproject'; -$lang->block->default['full']['my']['7']['source'] = 'project'; $lang->block->default['full']['my']['7']['grid'] = 8; $lang->block->default['full']['my']['8']['title'] = '我的待处理'; +$lang->block->default['full']['my']['8']['module'] = 'assigntome'; $lang->block->default['full']['my']['8']['code'] = 'assigntome'; -$lang->block->default['full']['my']['8']['source'] = ''; $lang->block->default['full']['my']['8']['grid'] = 8; $lang->block->default['full']['my']['8']['params']['todoCount'] = '20'; @@ -323,55 +340,63 @@ $lang->block->default['full']['my']['8']['params']['meetingCount'] = '20'; $lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20'; $lang->block->default['full']['my']['9']['title'] = "{$lang->projectCommon}人力投入"; +$lang->block->default['full']['my']['9']['module'] = 'project'; $lang->block->default['full']['my']['9']['code'] = 'projectteam'; -$lang->block->default['full']['my']['9']['source'] = 'project'; $lang->block->default['full']['my']['9']['grid'] = 8; $lang->block->default['full']['my']['10']['title'] = "{$lang->projectCommon}列表"; +$lang->block->default['full']['my']['10']['module'] = 'project'; $lang->block->default['full']['my']['10']['code'] = 'project'; -$lang->block->default['full']['my']['10']['source'] = 'project'; $lang->block->default['full']['my']['10']['grid'] = 8; $lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc'; $lang->block->default['full']['my']['10']['params']['count'] = '15'; /* Doc module block. */ -$lang->block->default['doc']['1']['title'] = '文档统计'; -$lang->block->default['doc']['1']['code'] = 'docstatistic'; -$lang->block->default['doc']['1']['grid'] = 8; +$lang->block->default['doc']['1']['title'] = '文档统计'; +$lang->block->default['doc']['1']['module'] = 'doc'; +$lang->block->default['doc']['1']['code'] = 'docstatistic'; +$lang->block->default['doc']['1']['grid'] = 8; -$lang->block->default['doc']['2']['title'] = '文档动态'; -$lang->block->default['doc']['2']['code'] = 'docdynamic'; -$lang->block->default['doc']['2']['grid'] = 4; +$lang->block->default['doc']['2']['title'] = '文档动态'; +$lang->block->default['doc']['2']['module'] = 'doc'; +$lang->block->default['doc']['2']['code'] = 'docdynamic'; +$lang->block->default['doc']['2']['grid'] = 4; -$lang->block->default['doc']['3']['title'] = '我收藏的文档'; -$lang->block->default['doc']['3']['code'] = 'docmycollection'; -$lang->block->default['doc']['3']['grid'] = 8; +$lang->block->default['doc']['3']['title'] = '我收藏的文档'; +$lang->block->default['doc']['3']['module'] = 'doc'; +$lang->block->default['doc']['3']['code'] = 'docmycollection'; +$lang->block->default['doc']['3']['grid'] = 8; -$lang->block->default['doc']['4']['title'] = '最近更新的文档'; -$lang->block->default['doc']['4']['code'] = 'docrecentupdate'; -$lang->block->default['doc']['4']['grid'] = 8; +$lang->block->default['doc']['4']['title'] = '最近更新的文档'; +$lang->block->default['doc']['4']['module'] = 'doc'; +$lang->block->default['doc']['4']['code'] = 'docrecentupdate'; +$lang->block->default['doc']['4']['grid'] = 8; -$lang->block->default['doc']['5']['title'] = '浏览排行榜'; -$lang->block->default['doc']['5']['code'] = 'docviewlist'; -$lang->block->default['doc']['5']['grid'] = 4; +$lang->block->default['doc']['5']['title'] = '浏览排行榜'; +$lang->block->default['doc']['5']['module'] = 'doc'; +$lang->block->default['doc']['5']['code'] = 'docviewlist'; +$lang->block->default['doc']['5']['grid'] = 4; if($config->vision == 'rnd') { - $lang->block->default['doc']['6']['title'] = $lang->productCommon . '文档'; - $lang->block->default['doc']['6']['code'] = 'productdoc'; - $lang->block->default['doc']['6']['grid'] = 8; + $lang->block->default['doc']['6']['title'] = $lang->productCommon . '文档'; + $lang->block->default['doc']['6']['module'] = 'doc'; + $lang->block->default['doc']['6']['code'] = 'productdoc'; + $lang->block->default['doc']['6']['grid'] = 8; $lang->block->default['doc']['6']['params']['count'] = '20'; } -$lang->block->default['doc']['7']['title'] = '收藏排行榜'; -$lang->block->default['doc']['7']['code'] = 'doccollectlist'; -$lang->block->default['doc']['7']['grid'] = 4; +$lang->block->default['doc']['7']['title'] = '收藏排行榜'; +$lang->block->default['doc']['7']['module'] = 'doc'; +$lang->block->default['doc']['7']['code'] = 'doccollectlist'; +$lang->block->default['doc']['7']['grid'] = 4; -$lang->block->default['doc']['8']['title'] = $lang->projectCommon . '文档'; -$lang->block->default['doc']['8']['code'] = 'projectdoc'; -$lang->block->default['doc']['8']['grid'] = 8; +$lang->block->default['doc']['8']['title'] = $lang->projectCommon . '文档'; +$lang->block->default['doc']['8']['module'] = 'doc'; +$lang->block->default['doc']['8']['code'] = 'projectdoc'; +$lang->block->default['doc']['8']['grid'] = 8; $lang->block->default['doc']['8']['params']['count'] = '20'; @@ -556,13 +581,12 @@ $lang->block->typeList->project['doing'] = '进行中'; $lang->block->typeList->project['all'] = '全部'; $lang->block->typeList->project['involved'] = '我参与的'; -$lang->block->typeList->projectAll['all'] = '全部'; -$lang->block->typeList->projectAll['undone'] = '未完成'; -$lang->block->typeList->projectAll['wait'] = '未开始'; -$lang->block->typeList->projectAll['doing'] = '进行中'; -$lang->block->typeList->projectAll['exceeded'] = '已逾期'; -$lang->block->typeList->projectAll['risky'] = '有风险'; -$lang->block->typeList->projectAll['more'] = '更多'; +$lang->block->typeList->projectAll['all'] = '全部'; +$lang->block->typeList->projectAll['undone'] = '未完成'; +$lang->block->typeList->projectAll['wait'] = '未开始'; +$lang->block->typeList->projectAll['doing'] = '进行中'; +$lang->block->typeList->projectAll['suspended'] = '已挂起'; +$lang->block->typeList->projectAll['closed'] = '已关闭'; $lang->block->typeList->execution['undone'] = '未完成'; $lang->block->typeList->execution['doing'] = '进行中'; diff --git a/module/block/model.php b/module/block/model.php index 026069eb25..944b20e1de 100644 --- a/module/block/model.php +++ b/module/block/model.php @@ -195,7 +195,7 @@ class blockModel extends model } elseif($code == 'statistic') { - $code = $module . 'Statistic'; + $code = $module . $code; } $params = zget($this->config->block->params, $code, ''); @@ -401,48 +401,37 @@ class blockModel extends model * Init block when account use first. * 用户首次加载时初始化区块数据. * - * @param string $module - * @param string $type + * @param string $dashboard * @access public * @return bool */ - public function initBlock(string $module, string $type = ''): bool + public function initBlock(string $dashboard): bool { - if(!$module) return false; + if(!$dashboard) return false; $flow = isset($this->config->global->flow) ? $this->config->global->flow : 'full'; $account = $this->app->user->account; $vision = $this->config->vision; - if($module == 'project') - { - $blocks = $this->lang->block->default[$type]['project']; + $blocks = $dashboard == 'my' ? $this->lang->block->default[$flow][$dashboard] : $this->lang->block->default[$dashboard]; - /* Mark project block has init. */ - $this->loadModel('setting')->setItem("$account.$module.{$type}common.blockInited@$vision", '1'); - } - else - { - $blocks = $module == 'my' ? $this->lang->block->default[$flow][$module] : $this->lang->block->default[$module]; - - /* Mark this app has init. */ - $this->loadModel('setting')->setItem("$account.$module.common.blockInited@$vision", '1'); - } - - $this->loadModel('setting')->setItem("$account.$module.block.initVersion", $this->config->block->version); foreach($blocks as $index => $block) { - $block['order'] = $index; - $block['module'] = $module; - $block['type'] = $type; - $block['account'] = $account; - $block['params'] = isset($block['params']) ? helper::jsonEncode($block['params']) : ''; - $block['vision'] = $this->config->vision; - if(!isset($block['source'])) $block['source'] = $module; + $block['account'] = $account; + $block['dashboard'] = $dashboard; + $block['order'] = $index; + $block['params'] = isset($block['params']) ? helper::jsonEncode($block['params']) : ''; + $block['vision'] = $this->config->vision; $this->blockTao->insert($block); } - return !dao::isError(); + if(dao::isError()) return false; + + /* Mark this app has init. */ + $this->loadModel('setting')->setItem("$account.$dashboard.common.blockInited@$vision", '1'); + $this->loadModel('setting')->setItem("$account.$dashboard.block.initVersion", $this->config->block->version); + + return true; } /** @@ -483,19 +472,17 @@ class blockModel extends model * 获取区块是否已经初始化. * Fetch block is initiated or not. * - * @param string $module - * @param string $vision - * @param string $section + * @param string $dashboard * @return string */ - public function fetchBlockInitStatus(string $module, string $vision, string $section): string + public function fetchBlockInitStatus(string $dashboard): string { return $this->dao->select('*')->from(TABLE_CONFIG) - ->where('module')->eq($module) - ->andWhere('owner')->eq($this->app->user->account) - ->andWhere('`section`')->eq($section)->fi() - ->andWhere('`key`')->eq('blockInited') - ->andWhere('vision')->eq($vision) - ->fetch('value'); + ->where('module')->eq($dashboard) + ->andWhere('owner')->eq($this->app->user->account) + ->andWhere('`section`')->eq('common') + ->andWhere('`key`')->eq('blockInited') + ->andWhere('vision')->eq($this->config->vision) + ->fetch('value'); } } diff --git a/module/block/ui/create.html.php b/module/block/ui/create.html.php index b20fca55ea..a1f7aa04c6 100644 --- a/module/block/ui/create.html.php +++ b/module/block/ui/create.html.php @@ -15,6 +15,7 @@ set::title($title); jsVar('dashboard', $dashboard); $paramsRows = array(); +$isMyDashboard = $dashboard == 'my'; foreach($params as $key => $row) { @@ -38,6 +39,8 @@ form on::change('#code', 'getForm'), formGroup ( + set::class($isMyDashboard ? '' : 'hidden'), + set::value($isMyDashboard ? '' : $dashboard), set::label($lang->block->lblModule), set::name('module'), set::control(array diff --git a/module/block/ui/edit.html.php b/module/block/ui/edit.html.php index 726490a3b6..99eee369d3 100644 --- a/module/block/ui/edit.html.php +++ b/module/block/ui/edit.html.php @@ -15,6 +15,7 @@ set::title($title); jsVar('blockID', $block->id); $paramsRows = array(); +$isMyDashboard = $dashboard == 'my'; foreach($params as $key => $row) { @@ -40,7 +41,8 @@ form ( set::label($lang->block->lblModule), set::name('module'), - set::value($block->module), + set::class($isMyDashboard ? '' : 'hidden'), + set::value($isMyDashboard ? $block->module : $dashboard), set::control(array ( 'type' => 'select', diff --git a/module/block/zen.php b/module/block/zen.php index 6ae6ebc484..0550be0b9a 100644 --- a/module/block/zen.php +++ b/module/block/zen.php @@ -107,28 +107,19 @@ class blockZen extends block * 处理每个区块以渲染 UI。 * Process each block for render UI. * - * @param object[] $blocks - * @param object|null $project + * @param object[] $blocks + * @param int $projectID * @return object[] */ - protected function processBlockForRender(array $blocks, object $project = null): array + protected function processBlockForRender(array $blocks, int $projectID): array { $acls = $this->app->user->rights['acls']; foreach($blocks as $key => $block) { - if(in_array($block->code, array('waterfallrisk', 'waterfallissue'))) - { - $model = isset($project->model) ? $project->model : 'waterfall'; - if($block->code == 'waterfallrisk' and !helper::hasFeature("{$model}_risk")) continue; - if($block->code == 'waterfallissue' and !helper::hasFeature("{$model}_issue")) continue; - } - - if(in_array($block->code, array('scrumrisk', 'scrumissue'))) - { - $model = isset($project->model) ? $project->model : 'scrum'; - if($block->code == 'scrumrisk' and !helper::hasFeature("{$model}_risk")) continue; - if($block->code == 'scrumissue' and !helper::hasFeature("{$model}_issue")) continue; - } + if($block->code == 'waterfallrisk' and !helper::hasFeature("waterfall_risk")) continue; + if($block->code == 'waterfallissue' and !helper::hasFeature("waterfall_issue")) continue; + if($block->code == 'scrumrisk' and !helper::hasFeature("scrum_risk")) continue; + if($block->code == 'scrumissue' and !helper::hasFeature("scrum_issue")) continue; if(!empty($block->source) and $block->source != 'todo' and !empty($acls['views']) and !isset($acls['views'][$block->source])) { @@ -139,7 +130,7 @@ class blockZen extends block $block->params = json_decode($block->params); if(isset($block->params->num) and !isset($block->params->count)) $block->params->count = $block->params->num; - $this->getBlockMoreLink($block, $project); + $this->getBlockMoreLink($block, $projectID); } return $blocks; @@ -149,15 +140,14 @@ class blockZen extends block * 获取区块的更多链接。 * Get the more link of the block. * - * @param object $block - * @param object|null $project + * @param object $block + * @param int $projectID * @return void */ - private function getBlockMoreLink(object $block, object|null $project): void + private function getBlockMoreLink(object $block, int $project): void { - $code = $block->code; - $source = empty($block->source) ? 'common' : $block->source; - $projectID = isset($project->id) ? $project->id : 0; + $code = $block->code; + $source = empty($block->source) ? 'common' : $block->source; $block->blockLink = $this->createLink('block', 'printBlock', "id=$block->id&module=$block->module"); $block->moreLink = ''; diff --git a/module/qa/control.php b/module/qa/control.php index c34799dce0..597ec3359f 100644 --- a/module/qa/control.php +++ b/module/qa/control.php @@ -30,6 +30,6 @@ class qa extends control $this->view->title = $this->lang->qa->index; $this->view->position[] = $this->lang->qa->index; $this->view->products = $products; - $this->display(); + echo $this->fetch('block', 'dashboard', 'dashboard=qa'); } }