Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into zentaopms_289
This commit is contained in:
@@ -4,6 +4,7 @@ update `zt_task` set `assignedTo` = '' where `mode` = 'multi' and `status` != 'd
|
||||
|
||||
REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) SELECT `lang`, `module`, 'scrumClassify', `key`, `value`, `system`, `vision` FROM `zt_lang` WHERE `module` = 'process' and `section` = 'classify' ORDER BY id ASC;
|
||||
REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) SELECT `lang`, `module`, 'agileplusClassify', `key`, `value`, `system`, `vision` FROM `zt_lang` WHERE `module` = 'process' and `section` = 'classify' ORDER BY id ASC;
|
||||
REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) SELECT `lang`, `module`, 'waterfallplusClassify', `key`, `value`, `system`, `vision` FROM `zt_lang` WHERE `module` = 'process' and `section` = 'classify' ORDER BY id ASC;
|
||||
|
||||
UPDATE `zt_project` AS parent INNER JOIN (select `id`,`parent`,`attribute` from `zt_project` where `parent` != 0 and `type` = 'stage') AS child ON parent.`id` = child.`parent` SET parent.`attribute`='mix' where parent.`grade`=1 and parent.`type`='stage' and parent.`attribute` != child.`attribute`;
|
||||
|
||||
@@ -20,3 +21,7 @@ REPLACE INTO `zt_stage` (`name`,`percent`,`type`, `projectType`, `createdBy`,`cr
|
||||
('发布','10','release','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','waterfallplus','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
|
||||
ALTER table `zt_reviewcl` ADD `type` varchar(255) NOT NULL DEFAULT '' AFTER `category`;
|
||||
UPDATE `zt_reviewcl` SET `type` = 'waterfall' WHERE `type` = '';
|
||||
|
||||
UPDATE `zt_activity` SET `order` = `id` * 5 WHERE `order` = '0';
|
||||
|
||||
+3
-1
@@ -1488,6 +1488,7 @@ CREATE TABLE IF NOT EXISTS `zt_stage` (
|
||||
`name` varchar(255) NOT NULL,
|
||||
`percent` varchar(255) NOT NULL,
|
||||
`type` varchar(255) NOT NULL,
|
||||
`projectType` varchar(255) NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
@@ -6397,7 +6398,7 @@ REPLACE INTO `zt_stage` (`name`,`percent`,`type`,`projectType`,`createdBy`,`crea
|
||||
('开发','50','dev','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('测试','15','qa','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('发布','10','release','waterfall','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('总结评审','5','review','waterfall','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
|
||||
('总结评审','5','review','waterfall','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0'),
|
||||
('需求','10','request','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('设计','10','design','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
('开发','50','dev','waterfallplus','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
|
||||
@@ -9707,6 +9708,7 @@ CREATE TABLE IF NOT EXISTS `zt_reviewcl` (
|
||||
`title` varchar(255) NOT NULL,
|
||||
`object` char(30) NOT NULL,
|
||||
`category` char(30) NOT NULL,
|
||||
`type` varchar(255) NOT NULL,
|
||||
`assignedTo` varchar(30) NOT NULL,
|
||||
`order` mediumint(8) DEFAULT '0',
|
||||
`status` varchar(30) NOT NULL,
|
||||
|
||||
@@ -649,7 +649,7 @@ $lang->resource->custom = new stdclass();
|
||||
$lang->resource->custom->index = 'index';
|
||||
$lang->resource->custom->set = 'set';
|
||||
$lang->resource->custom->product = 'productName';
|
||||
$lang->resource->custom->execution = 'execution';
|
||||
$lang->resource->custom->execution = 'executionCommon';
|
||||
$lang->resource->custom->required = 'required';
|
||||
$lang->resource->custom->restore = 'restore';
|
||||
$lang->resource->custom->flow = 'flow';
|
||||
|
||||
@@ -57,9 +57,11 @@
|
||||
.official {justify-content: center;}
|
||||
.official > .panel-title {position: absolute; top: 0px;}
|
||||
.official-img {background-image: url('/static/images/wechat.jpg'); background-repeat: no-repeat; background-size: contain; flex: 1 1 30%; aspect-ratio: 1 / 1; background-position: center;}
|
||||
.official-content {flex: 0 0 60%; display: flex; flex-direction: column; justify-content: center; padding-left: 10px;}
|
||||
.official-content {flex: 0 0 60%; display: flex; flex-direction: column; padding-left: 10px; padding-top: 15px;}
|
||||
.official-content > .content {color: #838A9D; font-size: 12px; line-height: 22px; padding-top: 6px;}
|
||||
.official-content > .title {color: #313C52; font-size: 13px; line-height: 14px;}
|
||||
.panel-link {color: #313c52; padding-left: 10px; font-size: 13px;}
|
||||
.panel-link > a {border-bottom: 1px solid;}
|
||||
|
||||
.classList > .classItem {flex: 1 1 30%; margin: 5px 5px 16px 5px; border: 1px solid rgba(227, 228, 233, 0.6); border-radius: 4px; padding-bottom: 5px; align-items: center;}
|
||||
.classItem > .imgBack {flex: 1 1 50%;}
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->admin->registerNotice->click = 'Bitte registieren Sie sich hier';
|
||||
$lang->admin->registerNotice->lblAccount = 'mindestens 3 Zeichen bitte; mit Buchsten und Ziffern.';
|
||||
$lang->admin->registerNotice->lblPasswd = 'mindestens 6 Zeichen bitte; mit Buchsten und Ziffern.';
|
||||
$lang->admin->registerNotice->submit = 'Registieren';
|
||||
$lang->admin->registerNotice->submitHere = 'RegistierenHere';
|
||||
$lang->admin->registerNotice->bind = "Verbinde bestehendes Konto";
|
||||
$lang->admin->registerNotice->success = "Sie haben sich erfolgreich registriert!";
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->admin->registerNotice->click = "S'enregistrer ici";
|
||||
$lang->admin->registerNotice->lblAccount = '>= 3 lettres et chiffres';
|
||||
$lang->admin->registerNotice->lblPasswd = '>= 6 lettres et chiffres';
|
||||
$lang->admin->registerNotice->submit = "S'enregistrer";
|
||||
$lang->admin->registerNotice->submitHere = "S'enregistrer here";
|
||||
$lang->admin->registerNotice->bind = "S'associer à un compte existant";
|
||||
$lang->admin->registerNotice->success = "Vous êtes enregistré !";
|
||||
|
||||
|
||||
@@ -188,8 +188,11 @@ if($config->edition != 'max')
|
||||
if(!helper::hasFeature('waterfall'))
|
||||
{
|
||||
unset($lang->admin->menuList->model['subMenu']['waterfall']);
|
||||
unset($lang->admin->menuList->model['subMenu']['waterfallplus']);
|
||||
unset($lang->admin->menuList->model['menuOrder']['15']);
|
||||
}
|
||||
if(!helper::hasFeature('waterfallplus'))
|
||||
{
|
||||
unset($lang->admin->menuList->model['subMenu']['waterfallplus']);
|
||||
unset($lang->admin->menuList->model['menuOrder']['25']);
|
||||
}
|
||||
if($config->edition == 'max')
|
||||
|
||||
@@ -52,6 +52,7 @@ $lang->admin->registerNotice->click = 'Đăng ký';
|
||||
$lang->admin->registerNotice->lblAccount = '>= 3 chữ và số';
|
||||
$lang->admin->registerNotice->lblPasswd = '>= 6 chữ và số';
|
||||
$lang->admin->registerNotice->submit = 'Gửi';
|
||||
$lang->admin->registerNotice->submitHere = 'submitHere';
|
||||
$lang->admin->registerNotice->bind = "Kết nối với tài khoản đang tồn tại";
|
||||
$lang->admin->registerNotice->success = "Bạn đã đăng ký!";
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ $lang->admin->info->account = "您的禅道社区账户为%s。";
|
||||
$lang->admin->info->log = '超出存天数的日志会被删除,需要开启计划任务。';
|
||||
|
||||
$lang->admin->notice = new stdclass();
|
||||
$lang->admin->notice->register = "友情提示:您还未在禅道社区(www.zentao.net)登记,%s进行登记,以及时获得禅道最新信息。";
|
||||
$lang->admin->notice->register = "可%s禅道社区 www.zentao.net, 及时获得禅道最新信息。";
|
||||
$lang->admin->notice->ignore = "不再提示";
|
||||
$lang->admin->notice->int = "『%s』应当是正整数。";
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->admin->registerNotice->click = '点击此处';
|
||||
$lang->admin->registerNotice->lblAccount = '请设置您的用户名,英文字母和数字的组合,三位以上。';
|
||||
$lang->admin->registerNotice->lblPasswd = '请设置您的密码。数字和字母的组合,六位以上。';
|
||||
$lang->admin->registerNotice->submit = '登记';
|
||||
$lang->admin->registerNotice->submitHere = '在此登记';
|
||||
$lang->admin->registerNotice->bind = "绑定已有帐号";
|
||||
$lang->admin->registerNotice->success = "登记账户成功";
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<div class="plugin-item shadow-primary-hover" data-link='<?php echo $plugin->viewLink;?>'>
|
||||
<a href="<?php echo $plugin->viewLink;?>" class='ext-download' target='_blank'><i class='icon icon-download-alt text-primary bg-primary-100 pd-3'></i></a>
|
||||
<h4 class="plug-title" title="<?php echo $plugin->name;?>"><?php echo $plugin->name;?></h4>
|
||||
<p class='extension-desc' title="<?php echo $pluginDesc;?>"><?php echo $pluginDesc;?></p>
|
||||
<p class='extension-desc text-muted' title="<?php echo $pluginDesc;?>"><?php echo $pluginDesc;?></p>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
@@ -53,19 +53,22 @@
|
||||
<div class="flex bottom">
|
||||
<div class="panel official">
|
||||
<div class="panel-title"><?php echo $lang->admin->officialAccount?></div>
|
||||
<div class="flex main-panel">
|
||||
<div class="official-img"></div>
|
||||
<div class="official-content">
|
||||
<div class="title">
|
||||
<?php echo $lang->admin->followUs?>
|
||||
<?php if(!$hasInternet):?>
|
||||
<i class="icon follow-us icon-arrow-right text-primary"></i>
|
||||
<?php endif;?>
|
||||
<div class="flex main-panel">
|
||||
<div class="official-img"></div>
|
||||
<div class="official-content">
|
||||
<div class="title">
|
||||
<?php echo $lang->admin->followUs?>
|
||||
<?php if(!$hasInternet):?>
|
||||
<i class="icon follow-us icon-arrow-right text-primary"></i>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<div class="content"> <?php echo $lang->admin->followUsContent?></div>
|
||||
</div>
|
||||
<div class="content"> <?php echo $lang->admin->followUsContent?></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if(!$bind and !$ignore and common::hasPriv('admin', 'register')):?>
|
||||
<div class="panel-link"> <?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->registerNotice->submitHere, '', 'class="text-primary"'));?></div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($publicClass):?>
|
||||
<div class="panel publicClass">
|
||||
<div class="panel-title">
|
||||
@@ -75,7 +78,7 @@
|
||||
<div class="classList flex">
|
||||
<?php foreach($publicClass as $class):?>
|
||||
<a class="classItem shadow-primary-hover" href='<?php echo $class->viewLink;?>' target='_blank'>
|
||||
<div class="imgBack">
|
||||
<div class="imgBack">
|
||||
<div class="classImg" style="background-image: url('<?php echo $class->image;?>');"></div>
|
||||
</div>
|
||||
<div class="classContent"><?php echo $class->name;?></div>
|
||||
|
||||
@@ -1876,7 +1876,6 @@ class execution extends control
|
||||
$this->view->title = $this->app->tab == 'execution' ? $this->lang->execution->createExec : $this->lang->execution->create;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('execution', 'all') : '';
|
||||
$this->view->executions = array('' => '') + $this->execution->getList($projectID);
|
||||
$this->view->groups = $this->loadModel('group')->getPairs();
|
||||
$this->view->allProducts = $allProducts;
|
||||
$this->view->acl = $acl;
|
||||
@@ -1887,7 +1886,7 @@ class execution extends control
|
||||
$this->view->teams = array(0 => '') + $this->execution->getCanCopyObjects((int)$projectID);
|
||||
$this->view->allProjects = array(0 => '') + $this->project->getPairsByModel('all', 0, 'noclosed,multiple');
|
||||
$this->view->copyProjects = $copyProjects;
|
||||
$this->view->copyExecutions = array('' => '') + $this->execution->getList($copyProjectID);
|
||||
$this->view->copyExecutions = array('' => '') + $this->execution->getList($copyProjectID, 'all', 'all', 0, 0, 0, null, false);
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
@@ -4447,7 +4446,7 @@ class execution extends control
|
||||
*/
|
||||
public function ajaxGetCopyProjectExecutions($projectID = 0)
|
||||
{
|
||||
$executions = $this->execution->getList($projectID);
|
||||
$executions = $this->execution->getList($projectID, 'all', 'all', 0, 0, 0, null, false);
|
||||
echo json_encode($executions);
|
||||
}
|
||||
|
||||
|
||||
@@ -177,9 +177,6 @@ function loadBranches(product)
|
||||
disableSelectedProduct();
|
||||
}
|
||||
|
||||
var branch = $('#branch' + index);
|
||||
loadPlans(product, branch);
|
||||
|
||||
if(typeof isStage != 'undefined' && isStage == true)
|
||||
{
|
||||
$tableRow.find("select[name^='branch'] option").attr('selected', 'selected');
|
||||
@@ -187,6 +184,9 @@ function loadBranches(product)
|
||||
$tableRow.find("div[id^='branch']").addClass('chosen-disabled');
|
||||
}
|
||||
});
|
||||
|
||||
var branch = $('#branch' + index);
|
||||
loadPlans(product, branch);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1742,10 +1742,11 @@ class executionModel extends model
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @param object $pager
|
||||
* @param bool $withChildren
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getList($projectID = 0, $type = 'all', $status = 'all', $limit = 0, $productID = 0, $branch = 0, $pager = null)
|
||||
public function getList($projectID = 0, $type = 'all', $status = 'all', $limit = 0, $productID = 0, $branch = 0, $pager = null, $withChildren = true)
|
||||
{
|
||||
if($status == 'involved') return $this->getInvolvedExecutionList($projectID, $status, $limit, $productID, $branch);
|
||||
|
||||
@@ -1762,6 +1763,7 @@ class executionModel extends model
|
||||
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
|
||||
->beginIF($status != 'all' and $status != 'undone')->andWhere('status')->in($status)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!$withChildren)->andWhere('grade')->eq(1)->fi()
|
||||
->orderBy('order_desc')
|
||||
->page($pager)
|
||||
->beginIF($limit)->limit($limit)->fi()
|
||||
@@ -1778,6 +1780,7 @@ class executionModel extends model
|
||||
->beginIF($status == 'undone')->andWhere('status')->notIN('done,closed')->fi()
|
||||
->beginIF($status != 'all' and $status != 'undone')->andWhere('status')->in($status)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!$withChildren)->andWhere('grade')->eq(1)->fi()
|
||||
->orderBy('order_desc')
|
||||
->page($pager)
|
||||
->beginIF($limit)->limit($limit)->fi()
|
||||
|
||||
@@ -309,15 +309,14 @@
|
||||
<div class='projectSelect'><?php echo html::select("project", $copyProjects, $projectID, "class='form-control chosen' required onchange='loadProjectExecutions(this.value)'");?></div>
|
||||
</div>
|
||||
<div class='modal-body'>
|
||||
<?php if(count($executions) == 1):?>
|
||||
<?php if(count($copyExecutions) == 1):?>
|
||||
<div class='alert with-icon'>
|
||||
<i class='icon-exclamation-sign'></i>
|
||||
<div class='content'><?php echo $lang->execution->copyNoExecution;?></div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id='copyProjects' class='row'>
|
||||
<?php if($projectID == 0) $executions = $copyExecutions;?>
|
||||
<?php foreach($executions as $id => $execution):?>
|
||||
<?php foreach($copyExecutions as $id => $execution):?>
|
||||
<?php if(empty($id)):?>
|
||||
<?php if($copyExecutionID != 0):?>
|
||||
<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id='' class='cancel'><?php echo html::icon($lang->icons['cancel']) . ' ' . $lang->execution->cancelCopy;?></a></div>
|
||||
|
||||
@@ -1443,11 +1443,11 @@ class productModel extends model
|
||||
$hasWaterfall = false;
|
||||
foreach($projects as $project)
|
||||
{
|
||||
if($project->model == 'waterfall') $hasWaterfall = true;
|
||||
if(in_array($project->model, array('waterfall', 'waterfallplus'))) $hasWaterfall = true;
|
||||
}
|
||||
$orderBy = $hasWaterfall ? 't2.begin_asc,t2.id_asc' : 't2.begin_desc,t2.id_desc';
|
||||
|
||||
$executions = $this->dao->select('t2.id,t2.name,t2.grade,t2.path,t2.parent,t2.attribute,t2.multiple,t3.name as projectName')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
$executions = $this->dao->select('t2.id,t2.name,t2.project,t2.grade,t2.path,t2.parent,t2.attribute,t2.multiple,t3.name as projectName')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project = t2.id')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t2.project = t3.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
|
||||
@@ -48,11 +48,7 @@
|
||||
<h2><?php echo $createTitle;?></h2>
|
||||
<?php if(!commonModel::isTutorialMode()): ?>
|
||||
<div class="pull-right btn-toolbar">
|
||||
<?php if($config->edition != 'max' or $model == 'kanban'):?>
|
||||
<button type='button' class='btn btn-link' data-toggle='modal' data-target='#copyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->project->copy;?></button>
|
||||
<?php else: ?>
|
||||
<button type='button' class='btn btn-link open-btn' data-toggle='modal' data-target='#maxCopyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->project->copy;?></button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user