Merge branch 'sprint/272' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/272_wzm_79625

This commit is contained in:
wangzemei
2022-12-20 10:22:03 +08:00
25 changed files with 154 additions and 13 deletions
+1 -1
View File
@@ -155,7 +155,7 @@ zentaoxx:
sed -i "s/\$$this->im->userGetChangedPassword()/array()/" zentaoxx/extension/xuan/im/control.php
sed -i "/.*->getAllDepts();/d" zentaoxx/extension/xuan/im/ext/bot/default.bot.php
sed -i "s/lang->user->status/lang->user->clientStatus/" zentaoxx/extension/xuan/im/ext/bot/default.bot.php
sed -i "s/.*->getRoleList();/"s/.*->getRoleList();/\$$depts = \$$this->im->loadModel('dept')->getDeptPairs();\n\$$deptList = array_map(function(\$$k, \$$v) {return (object)array('id' => \$$k, 'name' => \$$v);}, array_keys(\$$depts), \$$depts);\n\$$roleList = \$$this->im->lang->user->roleList;/"/" zentaoxx/extension/xuan/im/ext/bot/default.bot.php
sed -i "s/.*->getRoleList();/\$$depts = \$$this->im->loadModel('dept')->getDeptPairs();\n\$$deptList = array_map(function(\$$k, \$$v) {return (object)array('id' => \$$k, 'name' => \$$v);}, array_keys(\$$depts), \$$depts);\n\$$roleList = \$$this->im->lang->user->roleList;/" zentaoxx/extension/xuan/im/ext/bot/default.bot.php
echo "ALTER TABLE \`zt_user\` ADD \`pinyin\` varchar(255) NOT NULL DEFAULT '' AFTER \`realname\`;" >> zentaoxx/db/xuanxuan.sql
mkdir zentaoxx/tools; cp tools/cn2tw.php zentaoxx/tools; cd zentaoxx/tools; php cn2tw.php
cp tools/en2other.php zentaoxx/tools; cd zentaoxx/tools; php en2other.php ../
+1 -1
View File
@@ -375,7 +375,7 @@ class baseControl
/**
* 如果客户端是手机的话,视图文件增加m.前缀。
* If the clent is mobile, add m. as prefix for view file.
* If the client is mobile, add m. as prefix for view file.
*
* @access public
* @return void
+1 -1
View File
@@ -1081,7 +1081,7 @@ class baseRouter
}
/**
* 从HTTP_ACCEPT_LANGUAGE中提出去支持的语言。
* 从HTTP_ACCEPT_LANGUAGE中剔除去支持的语言。
* Parse the lang str from HTTP_ACCEPT_LANGUAGE header.
*
* @access public
+3
View File
@@ -2005,6 +2005,9 @@ class block extends control
*/
public function guide()
{
$this->app->loadLang('custom');
$this->view->programs = $this->loadModel('program')->getTopPairs('', 'noclosed', true);
$this->view->programID = isset($this->config->global->defaultProgram) ? $this->config->global->defaultProgram : 0;
$this->display();
}
+7
View File
@@ -632,3 +632,10 @@ $lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, mainly based on the intuitive and visual Kanban project management model.';
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'ZenTao Road operation mode is divided into [Light mode] and [ALM mode].';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
+7
View File
@@ -632,3 +632,10 @@ $lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, mainly based on the intuitive and visual Kanban project management model.';
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'ZenTao Road operation mode is divided into [Light mode] and [ALM mode].';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
+7
View File
@@ -632,3 +632,10 @@ $lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, mainly based on the intuitive and visual Kanban project management model.';
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'ZenTao Road operation mode is divided into [Light mode] and [ALM mode].';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
+7
View File
@@ -632,3 +632,10 @@ $lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = '运营管理界面';
$lang->block->visions['lite']->text = '专为非研发团队打造,主要以直观、可视化的看板项目管理模型为主。';
$lang->block->customModes['light'] = '轻量管理模式';
$lang->block->customModes['ALM'] = '全生命周期管理模式';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = '禅道运行模式分为【轻量级管理模式】和【全生命周期管理模式】。';
$lang->block->customModeTip->ALM = '适用于中大型团队的管理模式,概念更加完整、严谨,功能更丰富。';
$lang->block->customModeTip->light = '适用于小型研发团队的管理模式,提供项目管理的核心功能。';
+6 -2
View File
@@ -15,6 +15,8 @@
.block-guide .nav-secondary > li > a > span.btn-view {position: absolute; top: 0; right: 0; bottom: 0; padding: 8px; width: 36px; text-align: center; opacity: 0;}
.block-guide .nav-secondary > li:hover > a > span.btn-view {opacity: 1;}
.block-guide .nav-secondary > li.switch-icon {display: none;}
.block-guide .tab-pane h4 {color: #0B0F18;}
.block-guide .tab-pane .dataTitle {font-size: 12px; color: #5E626D;}
.block-guide .tab-pane .app-client .menu,
.block-guide .tab-pane .app-client .tree-menu li {padding-left: 0;}
.block-guide .tab-pane .app-client .tree-menu li {line-height: 56px; border-bottom: 1px solid #EDEEF2;}
@@ -44,7 +46,7 @@ $(function()
else $nav.children('li:not(.switch-icon)')[isPrev ? 'last' : 'first']().find('a[data-toggle="tab"]').trigger('click');
e.preventDefault();
});
$nav.find('li').click(function()
{
if($(this).attr('id') == 'flowchart')
@@ -103,7 +105,9 @@ $(function()
<div class="tab-pane fade active in" id='<?php echo "tab3{$blockNavId}Contentflowchart";?>'>
<?php include 'flowchart.html.php';?>
</div>
<div class="tab-pane fade" id='<?php echo "tab3{$blockNavId}ContentsystemMode";?>'></div>
<div class="tab-pane fade" id='<?php echo "tab3{$blockNavId}ContentsystemMode";?>'>
<?php include 'systemmodeswitch.html.php';?>
</div>
<div class="tab-pane fade" id='<?php echo "tab3{$blockNavId}ContentvisionSwitch";?>'>
<?php include 'visionswitch.html.php';?>
</div>
@@ -0,0 +1,87 @@
<style>
.block-guide .tab-pane .mode-switch .dataTitle {padding: 14px 20px;}
.block-guide .tab-pane .mode-switch .mode-block {background: #E6F0FF; margin-left: 10px; cursor: pointer;}
.block-guide .tab-pane .mode-switch .mode-block:nth-child(2) {margin-left: 8%;}
.block-guide .tab-pane .mode-switch .mode-block.active {border: 2px solid #2E7FFF;}
.block-guide .tab-pane .mode-switch .mode-desc {padding: 10px;}
</style>
<?php $usedMode = zget($this->config->global, 'mode', 'light');?>
<?php js::set('usedMode', $usedMode);?>
<?php js::set('hasProgram', !empty($programs));?>
<?php js::set('changeModeTips', sprintf($lang->custom->changeModeTips, $lang->custom->modeList[$usedMode == 'light' ? 'ALM' : 'light']));?>
<div class='table-row mode-switch'>
<div class="col-4">
<div class="col dataTitle"><?php echo $lang->block->customModeTip->common;?></div>
<div class='col pull-left col-md-12'>
<?php foreach($lang->block->customModes as $mode => $modeName):?>
<div class="pull-left col-md-5 mode-block<?php if($usedMode == $mode) echo ' active';?>" data-mode='<?php echo $mode;?>'>
<div><?php echo html::image($config->webRoot . "theme/default/images/guide/{$mode}.png");?></div>
<div class='mode-desc'>
<h4><?php echo $modeName;?></h4>
<?php echo $lang->block->customModeTip->$mode;?>
</div>
</div>
<?php endforeach;?>
</div>
</div>
</div>
<div class='modal fade' id='selectProgramModal'>
<div class='modal-dialog'>
<div class='modal-content'>
<div class='modal-header'>
<button type='button' class='close' data-dismiss='modal'><span aria-hidden='true'>× </span><span class='sr-only'><?php echo $this->lang->close;?></span></button>
<h4 class='modal-title'><?php echo $lang->custom->selectDefaultProgram;?></h4>
</div>
<div class='modal-body'>
<div class='alert alert-primary'>
<p class='text-info'><?php echo $lang->custom->selectProgramTips;?></p>
</div>
<table class='table table-form'>
<tr>
<th><?php echo $lang->custom->defaultProgram;?></th>
<td><?php echo html::select('program', $programs, $programID, "class='form-control chosen'");?></td>
</tr>
</table>
</div>
<div class='modal-footer'>
<button type='button' class='btn btn-primary btn-wide btn-save'><?php echo $lang->save;?></button>
</div>
</div>
</div>
</div>
<script>
$(function()
{
/**
* Switch system mode.
*
* @param string mode
* @access public
* @return void
*/
function switchMode(mode)
{}
var $nav = $('#<?php echo "tab3{$blockNavId}ContentsystemMode";?>');
$nav.on('click', '.mode-block', function()
{
var mode = $(this).data('mode');
console.log(mode, hasProgram)
if(mode == usedMode) return;
if(mode == 'light' && hasProgram)
{
$('#selectProgramModal').modal('show');
}
else
{
bootbox.confirm(changeModeTips, function(result)
{
if(result) $('#modeForm').submit();
});
}
});
});
</script>
+1 -1
View File
@@ -56,7 +56,7 @@
.modal-title {font-size: 14px !important; font-weight: 700 !important;}
#basicInfoBox tfoot td {padding-bottom: 0;}
</style>
<?php $backLink = $this->createLink('doc', 'objectlibs', "type=$type&objectID=$objectID&libID={$lib->id}&docID={$doc->id}") . "#app={$this->app->tab}";?>
<?php $backLink = $app->session->docList ? $app->session->docList : $this->createLink('doc', 'objectlibs', "type=$type&objectID=$objectID&libID={$lib->id}&docID={$doc->id}") . "#app={$this->app->tab}";?>
<div id="mainContent" class="main-content">
<form class="load-indicator main-form form-ajax" id="dataform" method='post' enctype='multipart/form-data'>
<table class='table table-form'>
+1 -1
View File
@@ -10,9 +10,9 @@
* @link http://www.zentao.net
*/
?>
<?php js::import($this->config->webRoot . 'js/echarts/echarts.common.min.js'); ?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::import($this->config->webRoot . 'js/echarts/echarts.common.min.js'); ?>
<?php js::set('type', $type);?>
<?php js::set('chartData', $chartData);?>
<?php js::set('YUnit', $lang->execution->count); ?>
+1 -1
View File
@@ -344,7 +344,7 @@ class myModel extends model
->andWhere('t2.deleted')->eq(0)
->andWhere('t1.id')->in(array_keys($objectIDList))
->orderBy($orderBy)
->page($pager)
->page($pager, 't1.id')
->fetchAll('id');
}
elseif($objectType == 'requirement' or $objectType == 'story' or $objectType == 'bug')
+1 -1
View File
@@ -1314,7 +1314,7 @@ class productModel extends model
->fetchAll('id');
/* Determine how to display the name of the program. */
$programList = $this->loadModel('program')->getParentPairs('', 'noclosed');
$programList = $this->loadModel('program')->getParentPairs('', '');
foreach($projectList as $id => $project)
{
$projectList[$id]->programName = $project->parent ? zget($programList, $project->parent, '') : '';
+3
View File
@@ -131,6 +131,9 @@ $(function()
$('#daysBox').removeClass('hidden');
}
})
var hasProduct = $('[name=hasProduct]:checked').val();
if(hasProduct == 0) $('.productsBox').parent().addClass('hidden')
});
/**
+1 -1
View File
@@ -2635,7 +2635,7 @@ class taskModel extends model
->beginIF($type == 'assignedTo' and $this->app->rawModule == 'my' and $this->app->rawMethod == 'work')->andWhere('t1.status')->notin('closed,cancel,pause')->fi()
->orderBy($orderBy)
->beginIF($limit > 0)->limit($limit)->fi()
->page($pager)
->page($pager, 't1.id')
->fetchAll('id');
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'task', false);
+1 -1
View File
@@ -37,7 +37,7 @@ class transferModel extends model
}
/**
* Commom Actions.
* Common Actions.
*
* @param int $model
* @access public
+1 -1
View File
@@ -38,7 +38,7 @@ if(!isset($config->installed) or !$config->installed) die(header('location: inst
/* Check for need upgrade. */
$config->installedVersion = $app->getInstalledVersion();
if($config->version != $config->installedVersion && file_exists('upgrade.php')) die(header('location: upgrade.php'));
if($config->version != $config->installedVersion) die(header('location: upgrade.php'));
/* Run the app. */
$common = $app->loadCommon();
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

+1 -1
View File
@@ -1 +1 @@
b82d2585f985d9b326c3afd83f0d0a88ca551d99
v7.0.0-rc.3
@@ -0,0 +1,4 @@
<?php
$lang->upgrade->upgradeXuanxuan = 'Upgrade Xuanxuan';
$lang->upgrade->archiveChangeNoticeTitle = 'Chat group archive change notice';
$lang->upgrade->archiveChangeNoticeContent = 'Due to the version update, the original archive feature has been changed, and your original archive discussion group has been set as a no-disturb message, please go to https://xuanim.com/book/xuanxuankehuduan/205.html for details.';
@@ -0,0 +1,4 @@
<?php
$lang->upgrade->upgradeXuanxuan = 'Upgrade Xuanxuan';
$lang->upgrade->archiveChangeNoticeTitle = 'Chat group archive change notice';
$lang->upgrade->archiveChangeNoticeContent = 'Due to the version update, the original archive feature has been changed, and your original archive discussion group has been set as a no-disturb message, please go to https://xuanim.com/book/xuanxuankehuduan/205.html for details.';
@@ -0,0 +1,4 @@
<?php
$lang->upgrade->upgradeXuanxuan = 'Upgrade Xuanxuan';
$lang->upgrade->archiveChangeNoticeTitle = 'Chat group archive change notice';
$lang->upgrade->archiveChangeNoticeContent = 'Due to the version update, the original archive feature has been changed, and your original archive discussion group has been set as a no-disturb message, please go to https://xuanim.com/book/xuanxuankehuduan/205.html for details.';
@@ -0,0 +1,4 @@
<?php
$lang->upgrade->upgradeXuanxuan = '升级喧喧';
$lang->upgrade->archiveChangeNoticeTitle = '存档功能变更通知';
$lang->upgrade->archiveChangeNoticeContent = '由于版本更新,原存档功能发生变更,已将您原存档讨论组状态设为消息免打扰,具体变更请移步 https://www.xuanim.com/book/xuanxuankehuduan/205.html ';