Merge branch 'sprint/272' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/272_wzm_79625
This commit is contained in:
@@ -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 ../
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1081,7 +1081,7 @@ class baseRouter
|
||||
}
|
||||
|
||||
/**
|
||||
* 从HTTP_ACCEPT_LANGUAGE中提出去支持的语言。
|
||||
* 从HTTP_ACCEPT_LANGUAGE中剔除去支持的语言。
|
||||
* Parse the lang str from HTTP_ACCEPT_LANGUAGE header.
|
||||
*
|
||||
* @access public
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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.';
|
||||
|
||||
@@ -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 = '适用于小型研发团队的管理模式,提供项目管理的核心功能。';
|
||||
|
||||
@@ -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>
|
||||
@@ -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'>
|
||||
|
||||
@@ -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
@@ -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')
|
||||
|
||||
@@ -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, '') : '';
|
||||
|
||||
@@ -131,6 +131,9 @@ $(function()
|
||||
$('#daysBox').removeClass('hidden');
|
||||
}
|
||||
})
|
||||
|
||||
var hasProduct = $('[name=hasProduct]:checked').val();
|
||||
if(hasProduct == 0) $('.productsBox').parent().addClass('hidden')
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -37,7 +37,7 @@ class transferModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Commom Actions.
|
||||
* Common Actions.
|
||||
*
|
||||
* @param int $model
|
||||
* @access public
|
||||
|
||||
+1
-1
@@ -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 @@
|
||||
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 ';
|
||||
Reference in New Issue
Block a user