Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into tsj_fixbug
This commit is contained in:
@@ -738,6 +738,12 @@ CHANGE `team` `team` varchar(90) NOT NULL DEFAULT '',
|
||||
CHANGE `whitelist` `whitelist` text NULL,
|
||||
CHANGE `order` `order` mediumint unsigned NOT NULL DEFAULT '0';
|
||||
|
||||
ALTER TABLE `zt_relation`
|
||||
CHANGE `project` `project` mediumint NOT NULL DEFAULT '0',
|
||||
CHANGE `product` `product` mediumint NOT NULL DEFAULT '0',
|
||||
CHANGE `execution` `execution` mediumint NOT NULL DEFAULT '0',
|
||||
CHANGE `extra` `extra` char(30) NOT NULL DEFAULT '';
|
||||
|
||||
ALTER TABLE `zt_release`
|
||||
CHANGE `project` `project` varchar(255) NOT NULL DEFAULT '0',
|
||||
CHANGE `leftBugs` `leftBugs` text NULL;
|
||||
|
||||
+4
-4
@@ -1379,9 +1379,9 @@ CREATE UNIQUE INDEX `project` ON `zt_projectstory`(`project`,`story`);
|
||||
-- DROP TABLE IF EXISTS `zt_relation`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_relation` (
|
||||
`id` int(8) NOT NULL AUTO_INCREMENT,
|
||||
`project` mediumint(8) NOT NULL,
|
||||
`product` mediumint(8) NOT NULL,
|
||||
`execution` mediumint(8) NOT NULL,
|
||||
`project` mediumint(8) NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) NOT NULL DEFAULT '0',
|
||||
`execution` mediumint(8) NOT NULL DEFAULT '0',
|
||||
`AType` char(30) NOT NULL,
|
||||
`AID` mediumint(8) NOT NULL,
|
||||
`AVersion` char(30) NOT NULL,
|
||||
@@ -1389,7 +1389,7 @@ CREATE TABLE IF NOT EXISTS `zt_relation` (
|
||||
`BType` char(30) NOT NULL,
|
||||
`BID` mediumint(8) NOT NULL,
|
||||
`BVersion` char(30) NOT NULL,
|
||||
`extra` char(30) NOT NULL,
|
||||
`extra` char(30) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE='InnoDB' DEFAULT CHARSET=utf8;
|
||||
CREATE UNIQUE INDEX `relation` ON `zt_relation`(`product`,`relation`,`AType`,`BType`, `AID`, `BID`);
|
||||
|
||||
@@ -85,3 +85,4 @@ $config->block->modules['doc'] = new stdclass();
|
||||
$config->block->modules['doc']->moreLinkList = new stdclass();
|
||||
$config->block->modules['doc']->moreLinkList->docmycollection = 'doc|myspace|type=collect&libID=0&moduleID=0&browseType=all¶m=0&orderBy=editedDate_desc';
|
||||
$config->block->modules['doc']->moreLinkList->productdoc = 'doc|productspace|';
|
||||
$config->block->modules['doc']->moreLinkList->projectdoc = 'doc|projectspace|';
|
||||
|
||||
@@ -2153,14 +2153,14 @@ class block extends control
|
||||
|
||||
/* Set project status and count. */
|
||||
$count = isset($this->params->count) ? (int)$this->params->count : 15;
|
||||
$products = $this->loadModel('product')->getList(0, 'all');
|
||||
$involveds = $this->product->getList(0, 'involved');
|
||||
$products = $this->loadModel('product')->getOrderedProducts('all');
|
||||
$involveds = $this->product->getOrderedProducts('involved');
|
||||
$productIdList = array_merge(array_keys($products), array_keys($involveds));
|
||||
|
||||
$stmt = $this->dao->select('*')->from(TABLE_DOC)
|
||||
$stmt = $this->dao->select('id,product,lib,title,type,addedBy,addedDate,editedDate,status,acl,groups,users,deleted')->from(TABLE_DOC)->alias('t1')
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('product')->in($productIdList)
|
||||
->orderBy('product,editedDate_desc')
|
||||
->orderBy('product,status,editedDate_desc')
|
||||
->query();
|
||||
$docGroup = array();
|
||||
while($doc = $stmt->fetch())
|
||||
@@ -2184,6 +2184,38 @@ class block extends control
|
||||
*/
|
||||
public function printProjectDocBlock()
|
||||
{
|
||||
$this->loadModel('doc');
|
||||
$this->app->loadLang('project');
|
||||
|
||||
/* Set project status and count. */
|
||||
$count = isset($this->params->count) ? (int)$this->params->count : 15;
|
||||
$involveds = $this->loadModel('program')->getProjectList('0', 'all', 0, 'order_asc', null, 0, $involved = 1);
|
||||
$projects = $this->program->getProjectList('0', 'all', 0, 'order_asc');
|
||||
$projectIdList = array_merge(array_keys($projects), array_keys($involveds));
|
||||
|
||||
$stmt = $this->dao->select('t1.id,t1.lib,t1.title,t1.type,t1.addedBy,t1.addedDate,t1.editedDate,t1.status,t1.acl,t1.groups,t1.users,t1.deleted,if(t1.project = 0, t2.project, t1.project) as project')->from(TABLE_DOC)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution=t2.id')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->andWhere('t2.deleted', true)->eq(0)
|
||||
->orWhere('t2.deleted is null')
|
||||
->markRight(1)
|
||||
->andWhere('t1.project',true)->in($projectIdList)
|
||||
->orWhere('t2.project',true)->in($projectIdList)
|
||||
->markRight(1)
|
||||
->orderBy('project,t1.status,t1.editedDate_desc')
|
||||
->query();
|
||||
$docGroup = array();
|
||||
while($doc = $stmt->fetch())
|
||||
{
|
||||
if(!isset($docGroup[$doc->project])) $docGroup[$doc->project] = array();
|
||||
if(count($docGroup[$doc->project]) > $count) break;
|
||||
if($this->doc->checkPrivDoc($doc)) $docGroup[$doc->project][$doc->id] = $doc;
|
||||
}
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->projects = $projects;
|
||||
$this->view->involveds = $involveds;
|
||||
$this->view->docGroup = $docGroup;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1148,7 +1148,8 @@ class blockModel extends model
|
||||
*/
|
||||
public function getProjectDocParams()
|
||||
{
|
||||
return false;
|
||||
$params = $this->appendCountParams();
|
||||
return json_encode($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
.block-productdoc .nav-secondary > li {position: relative;}
|
||||
.block-productdoc .nav-secondary > li > a {font-size: 14px; color: #838A9D; position: relative; box-shadow: none; padding-left: 20px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; transition: all .2s;}
|
||||
.block-productdoc .nav-secondary > li > a:first-child {padding-right: 36px;}
|
||||
.block-productdoc .nav-secondary > li.active > a:first-child {color: #3C4353; background: transparent; box-shadow: none;}
|
||||
.block-productdoc .nav-secondary > li.active > a:first-child {color: #3C4353; box-shadow: none;}
|
||||
.block-productdoc .nav-secondary > li.active > a:first-child:hover,
|
||||
.block-productdoc .nav-secondary > li.active > a:first-child:focus,
|
||||
.block-productdoc .nav-secondary > li > a:first-child:hover {box-shadow: none; border-radius: 4px 0 0 4px;}
|
||||
@@ -52,6 +52,11 @@
|
||||
|
||||
.block-productdoc #productType {position: absolute;top: 6px;left: 120px;}
|
||||
.block-productdoc #productType .btn {border:0px;}
|
||||
|
||||
.block-productdoc .table .c-name > .doc-title {display: inline-block; overflow: hidden; background: transparent; padding-right:0px;}
|
||||
.block-productdoc .table .c-name > span.doc-title {line-height: 0; vertical-align: inherit;}
|
||||
.block-productdoc .table .c-name[data-status=draft] > .doc-title {max-width: calc(100% - 35px);}
|
||||
.block-productdoc .table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
|
||||
</style>
|
||||
<script>
|
||||
<?php $blockNavId = 'nav-' . uniqid(); ?>
|
||||
@@ -104,10 +109,10 @@ function changeProductType(type)
|
||||
|
||||
</script>
|
||||
<div class="dropdown" id='productType'>
|
||||
<button class="btn" type="button" data-toggle="dropdown"><?php echo $lang->product->all;?> <span class="caret"></span></button>
|
||||
<button class="btn" type="button" data-toggle="dropdown"><?php echo $lang->product->involved;?> <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:changeProductType('all')" data-type='all'><?php echo $lang->product->all;?></a></li>
|
||||
<li><a href="javascript:changeProductType('involved')" data-type='involved'><?php echo $lang->product->involved;?></a></li>
|
||||
<li><a href="javascript:changeProductType('all')" data-type='all'><?php echo $lang->product->all;?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
@@ -118,21 +123,23 @@ function changeProductType(type)
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="col col-nav">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover products">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover involveds">
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php $selected = key($products);?>
|
||||
<?php foreach($products as $product):?>
|
||||
<li <?php if($product->id == $selected) echo "class='active' id='activeProduct'";?> productID='<?php echo $product->id;?>'>
|
||||
<?php $selected = key($involveds);?>
|
||||
<?php foreach($involveds as $product):?>
|
||||
<li <?php if($product->id == $selected) echo "class='active' id='activeProduct'";?> productid='<?php echo $product->id;?>'>
|
||||
<a href="###" title="<?php echo $product->name?>" data-target='<?php echo "#tab3{$blockNavId}Content{$product->id}";?>' data-toggle="tab"><?php echo $product->name;?></a>
|
||||
<?php echo html::a(helper::createLink('doc', 'productSpace', "productID=$product->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view'");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
</ul>
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover involveds hidden">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover products hidden">
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php foreach($involveds as $product):?>
|
||||
<li productID='<?php echo $product->id;?>'>
|
||||
<?php foreach($products as $product):?>
|
||||
<li productid='<?php echo $product->id;?>'>
|
||||
<a href="###" title="<?php echo $product->name?>" data-target='<?php echo "#tab3{$blockNavId}Content{$product->id}";?>' data-toggle="tab"><?php echo $product->name;?></a>
|
||||
<?php echo html::a(helper::createLink('doc', 'productSpace', "productID=$product->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view'");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
@@ -155,7 +162,7 @@ function changeProductType(type)
|
||||
<tbody>
|
||||
<?php foreach($docGroup[$product->id] as $doc):?>
|
||||
<tr>
|
||||
<td class='c-name'>
|
||||
<td class='c-name' data-status='<?php echo $doc->status?>'>
|
||||
<?php
|
||||
$docType = zget($config->doc->iconList, $doc->type);
|
||||
$icon = html::image("static/svg/{$docType}.svg", "class='file-icon'");
|
||||
@@ -167,6 +174,7 @@ function changeProductType(type)
|
||||
{
|
||||
echo "<span class='doc-title'>$icon {$doc->title}</span>";
|
||||
}
|
||||
if($doc->status == 'draft') echo "<span class='label label-badge draft'>{$lang->doc->draft}</span>";
|
||||
?>
|
||||
</td>
|
||||
<td class='c-user'><?php echo zget($users, $doc->addedBy);?></td>
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
<style>
|
||||
.block-projectdoc .nav-stacked {overflow:auto; height:220px; max-height:220px; }
|
||||
.block-projectdoc .panel-heading {border-bottom:1px solid #ddd;}
|
||||
.block-projectdoc .panel-body {padding-top: 0; height:240px; padding-right:0px; overflow-x:hidden !important;}
|
||||
.block-projectdoc .tab-content {padding-right:0px;}
|
||||
.block-projectdoc .tab-pane {max-height:220px; overflow:auto;}
|
||||
.block-projectdoc table.tablesorter th{border-bottom:0px !important;}
|
||||
.block-projectdoc .tile {margin-bottom: 30px;}
|
||||
.block-projectdoc .tile-title {font-size: 18px; color: #A6AAB8;}
|
||||
.block-projectdoc .tile-amount {font-size: 48px; margin-bottom: 10px;}
|
||||
.block-projectdoc .col-nav {border-right: 1px solid #EBF2FB; width: 210px; padding: 0;}
|
||||
.block-projectdoc .nav-secondary > li {position: relative;}
|
||||
.block-projectdoc .nav-secondary > li > a {font-size: 14px; color: #838A9D; position: relative; box-shadow: none; padding-left: 20px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; transition: all .2s;}
|
||||
.block-projectdoc .nav-secondary > li > a:first-child {padding-right: 36px;}
|
||||
.block-projectdoc .nav-secondary > li.active > a:first-child {color: #3C4353; box-shadow: none;}
|
||||
.block-projectdoc .nav-secondary > li.active > a:first-child:hover,
|
||||
.block-projectdoc .nav-secondary > li.active > a:first-child:focus,
|
||||
.block-projectdoc .nav-secondary > li > a:first-child:hover {box-shadow: none; border-radius: 4px 0 0 4px;}
|
||||
.block-projectdoc .nav-secondary > li.active > a:first-child:before {content: ' '; display: block; left: -1px; top: 10px; bottom: 10px; width: 4px; background: #006af1; position: absolute;}
|
||||
.block-projectdoc .nav-secondary > li > a.btn-view {position: absolute; top: 0; right: 0; bottom: 0; padding: 8px; width: 36px; text-align: center; opacity: 0;}
|
||||
.block-projectdoc .nav-secondary > li:hover > a.btn-view {opacity: 1;}
|
||||
.block-projectdoc .nav-secondary > li.active > a.btn-view {box-shadow: none;}
|
||||
.block-projectdoc .nav-secondary > li.switch-icon {display: none;}
|
||||
.block-projectdoc.block-sm .nav-stacked {height:auto;}
|
||||
.block-projectdoc.block-sm .panel-body {padding-bottom: 10px; position: relative; padding-top: 45px; border-radius: 3px; height:275px;}
|
||||
.block-projectdoc.block-sm .panel-body > .table-row,
|
||||
.block-projectdoc.block-sm .panel-body > .table-row > .col {display: block; width: auto;}
|
||||
.block-projectdoc.block-sm .panel-body > .table-row > .tab-content {padding: 0; margin: 0 -5px;}
|
||||
.block-projectdoc.block-sm .tab-pane > .table-row > .col-5 {width: 125px;}
|
||||
.block-projectdoc.block-sm .tab-pane > .table-row > .col-5 > .table-row {padding: 5px 0;}
|
||||
.block-projectdoc.block-sm .col-nav {border-left: none; position: absolute; top: 0; left: 15px; right: 15px; background: #f5f5f5;}
|
||||
.block-projectdoc.block-sm .nav-secondary {display: table; width: 100%; padding: 0; table-layout: fixed;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li {display: none;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.switch-icon,
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active {display: table-cell; width: 100%; text-align: center;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active > a:hover {cursor: default; background: none;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.switch-icon > a:hover {background: rgba(0, 0, 0, 0.07);}
|
||||
.block-projectdoc.block-sm .nav-secondary > li > a {padding: 5px 10px; border-radius: 4px;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li > a:before {display: none;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.switch-icon {width: 40px;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active > a:first-child:before {display: none}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active > a.btn-view {width: auto; left: 0; right: 0;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active > a.btn-view > i {display: none;}
|
||||
.block-projectdoc.block-sm .nav-secondary > li.active > a.btn-view:hover {cursor: pointer; background: rgba(0,0,0,.1);}
|
||||
|
||||
.block-projectdoc .data {width: 40%; text-align: left; padding: 10px 0px; font-size: 14px; font-weight: 700;}
|
||||
.block-projectdoc .dataTitle {width: 60%; text-align: right; padding: 10px 0px; font-size: 14px;}
|
||||
.block-projectdoc .executionName {padding: 2px 10px; font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
.block-projectdoc .lastIteration {padding-top: 6px;}
|
||||
|
||||
.forty-percent {width: 40%;}
|
||||
|
||||
.block-projectdoc #projectType {position: absolute;top: 6px;left: 120px;}
|
||||
.block-projectdoc #projectType .btn {border:0px;}
|
||||
|
||||
.block-projectdoc .table .c-name > .doc-title {display: inline-block; overflow: hidden; background: transparent; padding-right:0px;}
|
||||
.block-projectdoc .table .c-name > span.doc-title {line-height: 0; vertical-align: inherit;}
|
||||
.block-projectdoc .table .c-name[data-status=draft] > .doc-title {max-width: calc(100% - 35px);}
|
||||
.block-projectdoc .table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
|
||||
</style>
|
||||
<script>
|
||||
<?php $blockNavId = 'nav-' . uniqid(); ?>
|
||||
$(function()
|
||||
{
|
||||
<?php if(!$longBlock):?>
|
||||
$(document).on('click', '.col-nav .switch-icon', function(e)
|
||||
{
|
||||
var $nav = $(this).closest('.nav');
|
||||
var isPrev = $(this).is('.prev');
|
||||
var $activeItem = $nav.children('.active');
|
||||
var $next = $activeItem[isPrev ? 'prev' : 'next']('li:not(.switch-icon)');
|
||||
if ($next.length) $next.find('a[data-toggle="tab"]').trigger('click');
|
||||
else $nav.children('li:not(.switch-icon)')[isPrev ? 'last' : 'first']().find('a[data-toggle="tab"]').trigger('click');
|
||||
e.preventDefault();
|
||||
});
|
||||
<?php endif;?>
|
||||
|
||||
if($('.block-projectdoc #projectType').length > 1);
|
||||
{
|
||||
count = $('.block-projectdoc #projectType').length;
|
||||
$('.block-projectdoc #projectType').each(function()
|
||||
{
|
||||
if(count == 1) return;
|
||||
$(this).remove();
|
||||
count --;
|
||||
})
|
||||
}
|
||||
|
||||
var $projectList = $('#activeProject');
|
||||
if($projectList.length)
|
||||
{
|
||||
var projectList = $projectList[0];
|
||||
$(".col ul.nav").animate({scrollTop: projectList.offsetTop}, "slow");
|
||||
}
|
||||
});
|
||||
|
||||
function changeProjectType(type)
|
||||
{
|
||||
$('.block-projectdoc .nav.projects').toggleClass('hidden', type != 'all');
|
||||
$('.block-projectdoc .nav.involveds').toggleClass('hidden', type != 'involved');
|
||||
$('.block-projectdoc #projectType .btn').html($('.block-projectdoc #projectType [data-type=' + type + ']').html() + " <span class='caret'></span>");
|
||||
var name = type == 'all' ? '.block-projectdoc .projects' : '.block-projectdoc .involveds';
|
||||
var $obj = $(name + ' li.active').length > 0 ? $(name + ' .active:first').find('a') : $(name + ' li:not(.switch-icon):first').find('a');
|
||||
$(name + ' li').removeClass('active');
|
||||
$obj.closest('li').addClass('active');
|
||||
$('.block-projectdoc .tab-pane').removeClass('active').removeClass('in');
|
||||
$('.block-projectdoc .tab-pane' + $obj.data('target')).addClass('active').addClass('in');
|
||||
}
|
||||
|
||||
</script>
|
||||
<div class="dropdown" id='projectType'>
|
||||
<button class="btn" type="button" data-toggle="dropdown"><?php echo $lang->project->involved;?> <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:changeProjectType('involved')" data-type='involved'><?php echo $lang->project->involved;?></a></li>
|
||||
<li><a href="javascript:changeProjectType('all')" data-type='all'><?php echo $lang->project->all;?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="table-row">
|
||||
<?php if(empty($projects) and empty($involveds)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->block->emptyTip;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="col col-nav">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover involveds">
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php $selected = key($involveds);?>
|
||||
<?php foreach($involveds as $project):?>
|
||||
<li <?php if($project->id == $selected) echo "class='active' id='activeProject'";?> projectid='<?php echo $project->id;?>'>
|
||||
<a href="###" title="<?php echo $project->name?>" data-target='<?php echo "#tab3{$blockNavId}Content{$project->id}";?>' data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<?php echo html::a(helper::createLink('doc', 'projectSpace', "projectID=$project->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view'");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
</ul>
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover projects hidden">
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li projectid='<?php echo $project->id;?>'>
|
||||
<a href="###" title="<?php echo $project->name?>" data-target='<?php echo "#tab3{$blockNavId}Content{$project->id}";?>' data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<?php echo html::a(helper::createLink('doc', 'projectSpace', "projectID=$project->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view'");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col tab-content">
|
||||
<?php foreach($projects as $project):?>
|
||||
<div class="tab-pane fade<?php if($project->id == $selected) echo ' active in';?>" id='<?php echo "tab3{$blockNavId}Content{$project->id}";?>'>
|
||||
<?php if(isset($docGroup[$project->id])):?>
|
||||
<div class="table-row">
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-name'><?php echo $lang->doc->title?></th>
|
||||
<th class='c-user'><?php echo $lang->doc->addedBy?></th>
|
||||
<th class='c-date'><?php echo $lang->doc->addedDate?></th>
|
||||
<th class='c-date'><?php echo $lang->doc->editedDate?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($docGroup[$project->id] as $doc):?>
|
||||
<tr>
|
||||
<td class='c-name' data-status='<?php echo $doc->status?>'>
|
||||
<?php
|
||||
$docType = zget($config->doc->iconList, $doc->type);
|
||||
$icon = html::image("static/svg/{$docType}.svg", "class='file-icon'");
|
||||
if(common::hasPriv('doc', 'view'))
|
||||
{
|
||||
echo html::a($this->createLink('doc', 'view', "docID=$doc->id"), $icon . $doc->title, '', "title='{$doc->title}' class='doc-title' data-app='{$this->app->tab}'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<span class='doc-title'>$icon {$doc->title}</span>";
|
||||
}
|
||||
if($doc->status == 'draft') echo "<span class='label label-badge draft'>{$lang->doc->draft}</span>";
|
||||
?>
|
||||
</td>
|
||||
<td class='c-user'><?php echo zget($users, $doc->addedBy);?></td>
|
||||
<td class='c-date'><?php echo substr($doc->addedDate, 0, 10);?></td>
|
||||
<td class='c-date'><?php echo substr($doc->editedDate, 0, 10);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->block->emptyTip;?></span></p>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1216,7 +1216,7 @@ class bugModel extends model
|
||||
if($bug->resolvedBuild and $bug->resolvedBuild != 'trunk')
|
||||
{
|
||||
$testtaskID = (int) $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($bug->resolvedBuild)->orderBy('id_desc')->limit(1)->fetch('id');
|
||||
if($testtaskID and empty($oldBug->testtask)) $bug->testtask = $testtask;
|
||||
if($testtaskID and empty($oldBug->testtask)) $bug->testtask = $testtaskID;
|
||||
}
|
||||
|
||||
$this->dao->update(TABLE_BUG)->data($bug, 'buildName,createBuild,buildExecution,comment')
|
||||
|
||||
@@ -31,6 +31,7 @@ $schema->fields['id'] = array('type' => 'number', 'name' => $this->lan
|
||||
$schema->fields['title'] = array('type' => 'string', 'name' => $this->lang->bug->title);
|
||||
$schema->fields['steps'] = array('type' => 'text', 'name' => $this->lang->bug->steps);
|
||||
$schema->fields['status'] = array('type' => 'option', 'name' => $this->lang->bug->status, 'options' => $this->lang->bug->statusList);
|
||||
$schema->fields['type'] = array('type' => 'option', 'name' => $this->lang->bug->type, 'options' => $this->lang->bug->typeList);
|
||||
$schema->fields['confirmed'] = array('type' => 'option', 'name' => $this->lang->bug->confirmed, 'options' => $this->lang->bug->confirmedList);
|
||||
$schema->fields['severity'] = array('type' => 'option', 'name' => $this->lang->bug->severity, 'options' => $this->lang->bug->severityList);
|
||||
$schema->fields['product'] = array('type' => 'object', 'name' => $this->lang->bug->product, 'object' => 'product', 'show' => 'product.name');
|
||||
@@ -38,11 +39,15 @@ $schema->fields['project'] = array('type' => 'object', 'name' => $this->lan
|
||||
$schema->fields['bugmodule'] = array('type' => 'object', 'name' => $this->lang->bug->module, 'object' => 'bugmodule', 'show' => 'bugmodule.name');
|
||||
$schema->fields['story'] = array('type' => 'object', 'name' => $this->lang->story->common, 'object' => 'story', 'show' => 'story.title');
|
||||
$schema->fields['pri'] = array('type' => 'option', 'name' => $this->lang->bug->pri, 'options' => $this->lang->bug->priList);
|
||||
$schema->fields['assignedTo'] = array('type' => 'user', 'name' => $this->lang->bug->assignedTo);
|
||||
$schema->fields['assignedDate'] = array('type' => 'date', 'name' => $this->lang->bug->assignedDate);
|
||||
$schema->fields['openedBy'] = array('type' => 'user', 'name' => $this->lang->bug->openedBy);
|
||||
$schema->fields['openedDate'] = array('type' => 'date', 'name' => $this->lang->bug->openedDate);
|
||||
$schema->fields['resolvedBy'] = array('type' => 'user', 'name' => $this->lang->bug->resolvedBy);
|
||||
$schema->fields['resolution'] = array('type' => 'option', 'name' => $this->lang->bug->resolution, 'options' => $this->lang->bug->resolutionList);
|
||||
$schema->fields['resolvedDate'] = array('type' => 'date', 'name' => $this->lang->bug->resolvedDate);
|
||||
$schema->fields['closedBy'] = array('type' => 'user', 'name' => $this->lang->bug->closedBy);
|
||||
$schema->fields['closedDate'] = array('type' => 'date', 'name' => $this->lang->bug->closedDate);
|
||||
|
||||
$schema->objects = array();
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ $schema->tables['project'] = 'zt_project';
|
||||
$schema->joins = array();
|
||||
|
||||
$schema->fields = array();
|
||||
$schema->fields['id'] = array('type' => 'number', 'name' => $this->lang->project->id);
|
||||
$schema->fields['name'] = array('type' => 'string', 'name' => $this->lang->project->name);
|
||||
$schema->fields['code'] = array('type' => 'string', 'name' => $this->lang->project->code);
|
||||
$schema->fields['model'] = array('type' => 'option', 'name' => $this->lang->project->model, 'options' => $this->lang->project->modelList);
|
||||
@@ -26,5 +27,9 @@ $schema->fields['QD'] = array('type' => 'user', 'name' => $this->lang
|
||||
$schema->fields['RD'] = array('type' => 'user', 'name' => $this->lang->project->RD);
|
||||
$schema->fields['openedBy'] = array('type' => 'user', 'name' => $this->lang->project->openedBy);
|
||||
$schema->fields['openedDate'] = array('type' => 'date', 'name' => $this->lang->project->openedDate);
|
||||
$schema->fields['realBegan'] = array('type' => 'date', 'name' => $this->lang->project->realBegan);
|
||||
$schema->fields['realEnd'] = array('type' => 'date', 'name' => $this->lang->project->realEnd);
|
||||
$schema->fields['closedBy'] = array('type' => 'user', 'name' => $this->lang->project->closedBy);
|
||||
$schema->fields['closedDate'] = array('type' => 'date', 'name' => $this->lang->project->closedDate);
|
||||
|
||||
$schema->objects = array();
|
||||
|
||||
@@ -20,6 +20,7 @@ $schema->joins['project'] = 'release.project = project.id';
|
||||
$schema->joins['build'] = 'release.build = build.id';
|
||||
|
||||
$schema->fields = array();
|
||||
$schema->fields['id'] = array('type' => 'number', 'name' => $this->lang->release->id);
|
||||
$schema->fields['product'] = array('type' => 'object', 'name' => $this->lang->release->product, 'object' => 'product', 'show' => 'product.name');
|
||||
$schema->fields['project'] = array('type' => 'object', 'name' => $this->lang->release->project, 'object' => 'project', 'show' => 'project.name');
|
||||
$schema->fields['build'] = array('type' => 'object', 'name' => $this->lang->release->build, 'object' => 'build', 'show' => 'build.name');
|
||||
|
||||
@@ -31,12 +31,17 @@ $schema->fields['title'] = array('type' => 'string', 'name' => $this->lan
|
||||
$schema->fields['status'] = array('type' => 'option', 'name' => $this->lang->story->status, 'options' => $this->lang->story->statusList);
|
||||
$schema->fields['stage'] = array('type' => 'option', 'name' => $this->lang->story->stage, 'options' => $this->lang->story->stageList);
|
||||
$schema->fields['pri'] = array('type' => 'option', 'name' => $this->lang->story->pri, 'options' => $this->lang->story->priList);
|
||||
$schema->fields['source'] = array('type' => 'option', 'name' => $this->lang->story->source, 'options' => $this->lang->story->sourceList);
|
||||
$schema->fields['category'] = array('type' => 'option', 'name' => $this->lang->story->category, 'options' => $this->lang->story->categoryList);
|
||||
$schema->fields['product'] = array('type' => 'object', 'name' => $this->lang->story->product, 'object' => 'product', 'show' => 'product.name');
|
||||
$schema->fields['storymodule'] = array('type' => 'object', 'name' => $this->lang->story->module, 'object' => 'storymodule', 'show' => 'storymodule.name');
|
||||
$schema->fields['closedDate'] = array('type' => 'date', 'name' => $this->lang->story->closedDate);
|
||||
$schema->fields['closedReason'] = array('type' => 'option', 'name' => $this->lang->story->closedReason, 'options' => $this->lang->story->reasonList);
|
||||
$schema->fields['openedBy'] = array('type' => 'user', 'name' => $this->lang->story->openedBy);
|
||||
$schema->fields['openedDate'] = array('type' => 'date', 'name' => $this->lang->story->openedDate);
|
||||
$schema->fields['assignedTo'] = array('type' => 'user', 'name' => $this->lang->story->assignedTo);
|
||||
$schema->fields['changedBy'] = array('type' => 'user', 'name' => $this->lang->story->changedBy);
|
||||
$schema->fields['closedBy'] = array('type' => 'user', 'name' => $this->lang->story->closedBy);
|
||||
|
||||
$schema->objects = array();
|
||||
|
||||
|
||||
@@ -24,25 +24,27 @@ $schema->joins['story'] = 'task.story = story.id';
|
||||
$schema->joins['taskmodule'] = 'task.module = taskmodule.id';
|
||||
|
||||
$schema->fields = array();
|
||||
$schema->fields['project'] = array('type' => 'object', 'name' => $this->lang->task->project, 'object' => 'project', 'show' => 'project.name');
|
||||
$schema->fields['execution'] = array('type' => 'object', 'name' => $this->lang->task->execution, 'object' => 'execution', 'show' => 'execution.name');
|
||||
$schema->fields['story'] = array('type' => 'object', 'name' => $this->lang->task->story, 'object' => 'story', 'show' => 'story.title');
|
||||
$schema->fields['taskmodule'] = array('type' => 'object', 'name' => $this->lang->task->module, 'object' => 'taskmodule', 'show' => 'taskmodule.name');
|
||||
$schema->fields['name'] = array('type' => 'string', 'name' => $this->lang->task->name);
|
||||
$schema->fields['pri'] = array('type' => 'option', 'name' => $this->lang->task->pri, 'options' => $this->lang->task->priList);
|
||||
$schema->fields['type'] = array('type' => 'option', 'name' => $this->lang->task->type, 'options' => $this->lang->task->typeList);
|
||||
$schema->fields['status'] = array('type' => 'option', 'name' => $this->lang->task->status, 'options' => $this->lang->task->statusList);
|
||||
$schema->fields['desc'] = array('type' => 'string', 'name' => $this->lang->task->desc);
|
||||
$schema->fields['estimate'] = array('type' => 'string', 'name' => $this->lang->task->estimate);
|
||||
$schema->fields['consumed'] = array('type' => 'string', 'name' => $this->lang->task->consumed);
|
||||
$schema->fields['left'] = array('type' => 'string', 'name' => $this->lang->task->left);
|
||||
$schema->fields['estStarted'] = array('type' => 'date', 'name' => $this->lang->task->estStarted);
|
||||
$schema->fields['deadline'] = array('type' => 'date', 'name' => $this->lang->task->deadline);
|
||||
$schema->fields['assignedTo'] = array('type' => 'user', 'name' => $this->lang->task->assignedTo);
|
||||
$schema->fields['finishedBy'] = array('type' => 'user', 'name' => $this->lang->task->finishedBy);
|
||||
$schema->fields['closedBy'] = array('type' => 'user', 'name' => $this->lang->task->closedBy);
|
||||
$schema->fields['openedBy'] = array('type' => 'user', 'name' => $this->lang->task->openedBy);
|
||||
$schema->fields['openedDate'] = array('type' => 'date', 'name' => $this->lang->task->openedDate);
|
||||
$schema->fields['project'] = array('type' => 'object', 'name' => $this->lang->task->project, 'object' => 'project', 'show' => 'project.name');
|
||||
$schema->fields['execution'] = array('type' => 'object', 'name' => $this->lang->task->execution, 'object' => 'execution', 'show' => 'execution.name');
|
||||
$schema->fields['story'] = array('type' => 'object', 'name' => $this->lang->task->story, 'object' => 'story', 'show' => 'story.title');
|
||||
$schema->fields['taskmodule'] = array('type' => 'object', 'name' => $this->lang->task->module, 'object' => 'taskmodule', 'show' => 'taskmodule.name');
|
||||
$schema->fields['name'] = array('type' => 'string', 'name' => $this->lang->task->name);
|
||||
$schema->fields['pri'] = array('type' => 'option', 'name' => $this->lang->task->pri, 'options' => $this->lang->task->priList);
|
||||
$schema->fields['type'] = array('type' => 'option', 'name' => $this->lang->task->type, 'options' => $this->lang->task->typeList);
|
||||
$schema->fields['status'] = array('type' => 'option', 'name' => $this->lang->task->status, 'options' => $this->lang->task->statusList);
|
||||
$schema->fields['desc'] = array('type' => 'string', 'name' => $this->lang->task->desc);
|
||||
$schema->fields['estimate'] = array('type' => 'string', 'name' => $this->lang->task->estimate);
|
||||
$schema->fields['consumed'] = array('type' => 'string', 'name' => $this->lang->task->consumed);
|
||||
$schema->fields['left'] = array('type' => 'string', 'name' => $this->lang->task->left);
|
||||
$schema->fields['estStarted'] = array('type' => 'date', 'name' => $this->lang->task->estStarted);
|
||||
$schema->fields['deadline'] = array('type' => 'date', 'name' => $this->lang->task->deadline);
|
||||
$schema->fields['assignedTo'] = array('type' => 'user', 'name' => $this->lang->task->assignedTo);
|
||||
$schema->fields['finishedBy'] = array('type' => 'user', 'name' => $this->lang->task->finishedBy);
|
||||
$schema->fields['closedBy'] = array('type' => 'user', 'name' => $this->lang->task->closedBy);
|
||||
$schema->fields['openedBy'] = array('type' => 'user', 'name' => $this->lang->task->openedBy);
|
||||
$schema->fields['openedDate'] = array('type' => 'date', 'name' => $this->lang->task->openedDate);
|
||||
$schema->fields['canceledBy'] = array('type' => 'user', 'name' => $this->lang->task->canceledBy);
|
||||
$schema->fields['closedReason'] = array('type' => 'option', 'name' => $this->lang->task->closedReason, 'options' => $this->lang->task->reasonList);
|
||||
|
||||
$schema->objects = array();
|
||||
|
||||
|
||||
@@ -107,6 +107,7 @@ ol, ul {margin-bottom: 0}
|
||||
#pageNav #dropMenu .table-col .list-group .icon-move {display:block; float: left; font-size: 12px; padding: 3px 4px 3px 1px;}
|
||||
|
||||
#content .detail-content.article-content {overflow-y: auto; height: calc(100vh - 200px); padding-right: 20px;}
|
||||
#content.scrollbar-hover .detail-content.article-content {height: 100%;}
|
||||
#aclBox .acl-tip {color: #838a9d;}
|
||||
.ajaxCollect > img.star-empty {margin-right: 0px;}
|
||||
#outlineMenu {background: #fff; position: absolute; height: calc(100vh - 180px)!important; overflow-y: auto; top: 50px; right: 25px;}
|
||||
|
||||
@@ -46,8 +46,9 @@ span.dotted-line+a {display: block;}
|
||||
.is-sorting > li ul {display: none!important;}
|
||||
li.drag-shadow ul {display: none!important;}
|
||||
|
||||
.table .c-name > .doc-title {display: inline-block; max-width: calc(100% - 80px); overflow: hidden; background: transparent; padding-right:0px;}
|
||||
.table .c-name > .doc-title {display: inline-block; overflow: hidden; background: transparent; padding-right:0px;}
|
||||
.table .c-name > span.doc-title {line-height: 0; vertical-align: inherit;}
|
||||
.table .c-name[data-status=draft] > .doc-title {max-width: calc(100% - 80px);}
|
||||
.table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
|
||||
.table .c-name > .ajaxCollect {float: right; position: relative; right: 10px; top: 0px; padding: 0 6px;}
|
||||
table.table > thead > tr {height: 32px;}
|
||||
|
||||
@@ -60,7 +60,7 @@ $lang->doclib->nameList['custom'] = '自定义文档库名称';
|
||||
$lang->doclib->apiNameUnique = array();
|
||||
$lang->doclib->apiNameUnique['product'] = '同一' . $lang->productCommon . '下的接口库中';
|
||||
$lang->doclib->apiNameUnique['project'] = '同一' . $lang->projectCommon . '下的接口库中';
|
||||
$lang->doclib->apiNameUnique['nolink'] = '无关联接口库中';
|
||||
$lang->doclib->apiNameUnique['nolink'] = '独立接口库中';
|
||||
|
||||
/* 字段列表。*/
|
||||
$lang->doc->common = '文档';
|
||||
@@ -249,7 +249,7 @@ $lang->doc->spaceList['custom'] = '团队空间';
|
||||
$lang->doc->apiType = '接口类型';
|
||||
$lang->doc->apiTypeList['product'] = $lang->productCommon . '接口';
|
||||
$lang->doc->apiTypeList['project'] = $lang->projectCommon . '接口';
|
||||
$lang->doc->apiTypeList['nolink'] = '无关联接口';
|
||||
$lang->doc->apiTypeList['nolink'] = '独立接口';
|
||||
|
||||
$lang->doc->typeList['html'] = '富文本';
|
||||
$lang->doc->typeList['markdown'] = 'Markdown';
|
||||
|
||||
@@ -1335,8 +1335,9 @@ class docModel extends model
|
||||
if($object->status == 'draft' and $object->addedBy != $this->app->user->account) return false;
|
||||
if($object->status == 'normal' and $this->app->user->admin) return true;
|
||||
|
||||
$lib = $this->getLibById($object->lib);
|
||||
if(!$this->checkPrivLib($lib)) return false;
|
||||
static $libs = array();
|
||||
if(!isset($libs[$object->lib])) $libs[$object->lib] = $this->getLibById($object->lib);
|
||||
if(!$this->checkPrivLib($libs[$object->lib])) return false;
|
||||
if(in_array($object->acl, array('open', 'public'))) return true;
|
||||
|
||||
$account = ",{$this->app->user->account},";
|
||||
|
||||
@@ -79,7 +79,7 @@ body {margin-bottom: 25px;}
|
||||
<?php printf('%03d', $doc->id);?>
|
||||
</td>
|
||||
</td>
|
||||
<td class="c-name" title='<?php echo $doc->title;?>'>
|
||||
<td class="c-name" title='<?php echo $doc->title;?>' data-status='<?php echo $doc->status?>'>
|
||||
<?php
|
||||
$docType = zget($config->doc->iconList, $doc->type);
|
||||
$icon = html::image("static/svg/{$docType}.svg", "class='file-icon'");
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
#main {margin-bottom: 0;}
|
||||
|
||||
/* css for mian */
|
||||
#mainContent > #sideBar {flex: 0 0 150px; overflow-x: auto; padding-right: 5px;}
|
||||
[lang^=zh] #mainContent > #sideBar {flex: 0 0 180px;}
|
||||
#mainContent > #sideBar {flex: 0 0 180px; overflow-x: auto; padding-right: 5px;}
|
||||
|
||||
/* css for tree */
|
||||
#fileTree .title {font-size: 16px; height: 20px; margin-top: 5px; margin-bottom: 5px;}
|
||||
@@ -504,6 +503,7 @@ $(function()
|
||||
|
||||
$('body').on('click', function()
|
||||
{
|
||||
$('a.sort-module').removeClass('dragging-shadow');
|
||||
var $dropdown = $('.dropdown-in-tree');
|
||||
if($dropdown.length)
|
||||
{
|
||||
@@ -518,7 +518,7 @@ $(function()
|
||||
}
|
||||
}).on('click', '.sidebar-toggle', function()
|
||||
{
|
||||
var $icon = $(this).find('.icon-drop');
|
||||
var $icon = $(this).find('.icon');
|
||||
if($('#sideBar').hasClass('hidden'))
|
||||
{
|
||||
$icon.addClass('icon-angle-left');
|
||||
@@ -673,6 +673,7 @@ $(function()
|
||||
start: function()
|
||||
{
|
||||
$('#dropDownCatalogue').remove();
|
||||
$('a.sort-module').removeClass('dragging-shadow');
|
||||
},
|
||||
canMoveHere: function($ele, $target)
|
||||
{
|
||||
|
||||
@@ -17,8 +17,9 @@ body {margin-bottom: 25px;}
|
||||
#docListForm th.c-actions {width: 84px; padding-left: 15px;}
|
||||
#docListForm .c-module, #docListForm .c-object {width: 120px; overflow: hidden; white-space: nowrap; text-overflow: clip;}
|
||||
#docListForm .c-object {width: 180px;}
|
||||
#docListForm .table .c-name > .doc-title {display: inline-block; max-width: calc(100% - 80px); overflow: hidden; background: transparent; padding-right:0px;}
|
||||
#docListForm .table .c-name > .doc-title {display: inline-block; overflow: hidden; background: transparent; padding-right:0px;}
|
||||
#docListForm .table .c-name > span.doc-title {line-height: 0; vertical-align: inherit;}
|
||||
#docListForm .table .c-name[data-status=draft] > .doc-title {max-width: calc(100% - 80px);}
|
||||
#docListForm .table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
|
||||
#docListForm .table .c-name > .ajaxCollect {float: right; position: relative; right: 10px; top: 0px; padding: 0 6px;}
|
||||
#docListForm table.table > thead > tr {height: 32px;}
|
||||
@@ -95,24 +96,23 @@ body {margin-bottom: 25px;}
|
||||
<?php endif;?>
|
||||
<?php printf('%03d', $doc->id);?>
|
||||
</td>
|
||||
</td>
|
||||
<td class="c-name" title='<?php echo $doc->title;?>'>
|
||||
<?php
|
||||
$docType = zget($config->doc->iconList, $doc->type);
|
||||
$icon = html::image("static/svg/{$docType}.svg", "class='file-icon'");
|
||||
if(common::hasPriv('doc', 'view'))
|
||||
{
|
||||
echo html::a($this->createLink('doc', 'view', "docID=$doc->id"), $icon . $doc->title, '', "title='{$doc->title}' class='doc-title' data-app='{$this->app->tab}'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<span class='doc-title'>$icon {$doc->title}</span>";
|
||||
}
|
||||
?>
|
||||
<?php if($doc->status == 'draft') echo "<span class='label label-badge draft'>{$lang->doc->draft}</span>";?>
|
||||
<?php if(common::canBeChanged('doc', $doc) and common::hasPriv('doc', 'collect') and $libType and $libType != 'api'):?>
|
||||
<td class="c-name" title='<?php echo $doc->title;?>' data-status='<?php echo $doc->status?>'>
|
||||
<?php
|
||||
$docType = zget($config->doc->iconList, $doc->type);
|
||||
$icon = html::image("static/svg/{$docType}.svg", "class='file-icon'");
|
||||
if(common::hasPriv('doc', 'view'))
|
||||
{
|
||||
echo html::a($this->createLink('doc', 'view', "docID=$doc->id"), $icon . $doc->title, '', "title='{$doc->title}' class='doc-title' data-app='{$this->app->tab}'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<span class='doc-title'>$icon {$doc->title}</span>";
|
||||
}
|
||||
?>
|
||||
<?php if($doc->status == 'draft') echo "<span class='label label-badge draft'>{$lang->doc->draft}</span>";?>
|
||||
<?php if(common::canBeChanged('doc', $doc) and common::hasPriv('doc', 'collect') and $libType and $libType != 'api'):?>
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$doc->id&objectType=doc");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><?php echo html::image("static/svg/{$star}.svg", "class='$star'");?></a>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<?php if($type != 'mine'):?>
|
||||
<td class="c-object" title='<?php echo $doc->objectName;?>'>
|
||||
|
||||
+4
-1
@@ -511,6 +511,8 @@ class myModel extends model
|
||||
unset($this->config->execution->search['fields']['canceledBy']);
|
||||
unset($this->config->execution->search['fields']['closedDate']);
|
||||
unset($this->config->execution->search['fields']['canceledDate']);
|
||||
unset($this->config->execution->search['params']['status']['values']['cancel']);
|
||||
unset($this->config->execution->search['params']['status']['values']['closed']);
|
||||
}
|
||||
|
||||
$projects = $this->loadModel('project')->getPairsByProgram();
|
||||
@@ -598,7 +600,8 @@ class myModel extends model
|
||||
->andWhere('(t2.status')->ne('suspended')->orWhere('t4.status')->ne('suspended')->markRight(1)
|
||||
->beginIF($moduleName == 'workTask')
|
||||
->beginIF(!empty($assignedToMatches))->andWhere("(t1.$assignedToCondition or (t1.mode = 'multi' and t5.`account` $operatorAndAccount and t1.status != 'closed' and t5.status != 'done') )")->fi()
|
||||
->beginIF(empty($assignedToMatches))->andWhere("t1.assignedTo")->eq($account)->fi()
|
||||
->beginIF(empty($assignedToMatches))->andWhere("(t1.assignedTo = '{$account}' or (t1.mode = 'multi' and t5.`account` = '{$account}' and t1.status != 'closed' and t5.status != 'done') )")->fi()
|
||||
->andWhere('t1.status')->notin('closed,cancel')
|
||||
->fi()
|
||||
->beginIF($moduleName == 'contributeTask')
|
||||
->andWhere('t1.openedBy', 1)->eq($account)
|
||||
|
||||
@@ -27,6 +27,7 @@ $lang->product->closed = 'Geschlossen';
|
||||
$lang->product->closedProduct = "Closed {$lang->productCommon}";
|
||||
$lang->product->updateOrder = 'Ranking';
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->involved = "My Involved";
|
||||
$lang->product->manageLine = "Manage Product Line";
|
||||
$lang->product->newLine = "Create Product Line";
|
||||
$lang->product->export = 'Exportiere Daten';
|
||||
|
||||
@@ -27,6 +27,7 @@ $lang->product->closed = 'Closed';
|
||||
$lang->product->closedProduct = "Closed {$lang->productCommon}";
|
||||
$lang->product->updateOrder = 'Order';
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->involved = "My Involved";
|
||||
$lang->product->manageLine = "Manage Product Line";
|
||||
$lang->product->newLine = "Create Product Line";
|
||||
$lang->product->export = 'Export';
|
||||
|
||||
@@ -27,6 +27,7 @@ $lang->product->closed = 'Fermés';
|
||||
$lang->product->closedProduct = "Closed {$lang->productCommon}";
|
||||
$lang->product->updateOrder = 'Ordre';
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->involved = "My Involved";
|
||||
$lang->product->manageLine = "Manage Product Line";
|
||||
$lang->product->newLine = "Create Product Line";
|
||||
$lang->product->export = 'Export';
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->project->view = "{$lang->projectCommon} View";
|
||||
$lang->project->batchEdit = "Batch Edit {$lang->projectCommon}s";
|
||||
$lang->project->browse = $lang->projectCommon;
|
||||
$lang->project->all = 'All';
|
||||
$lang->project->involved = "My Involved";
|
||||
$lang->project->start = 'Start';
|
||||
$lang->project->finish = 'Finish';
|
||||
$lang->project->suspend = 'Suspend';
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->project->view = "{$lang->projectCommon} View";
|
||||
$lang->project->batchEdit = "Batch Edit {$lang->projectCommon}s";
|
||||
$lang->project->browse = $lang->projectCommon;
|
||||
$lang->project->all = 'All';
|
||||
$lang->project->involved = "My Involved";
|
||||
$lang->project->start = 'Start';
|
||||
$lang->project->finish = 'Finish';
|
||||
$lang->project->suspend = 'Suspend';
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->project->view = "{$lang->projectCommon} View";
|
||||
$lang->project->batchEdit = "Batch Edit {$lang->projectCommon}s";
|
||||
$lang->project->browse = $lang->projectCommon;
|
||||
$lang->project->all = 'All';
|
||||
$lang->project->involved = "My Involved";
|
||||
$lang->project->start = 'Start';
|
||||
$lang->project->finish = 'Finish';
|
||||
$lang->project->suspend = 'Suspend';
|
||||
|
||||
@@ -10,6 +10,7 @@ $lang->project->view = "{$lang->projectCommon}概况";
|
||||
$lang->project->batchEdit = '批量编辑';
|
||||
$lang->project->browse = "{$lang->projectCommon}列表";
|
||||
$lang->project->all = "所有{$lang->projectCommon}";
|
||||
$lang->project->involved = "我参与的{$lang->projectCommon}";
|
||||
$lang->project->start = "启动{$lang->projectCommon}";
|
||||
$lang->project->finish = "完成{$lang->projectCommon}";
|
||||
$lang->project->suspend = "挂起{$lang->projectCommon}";
|
||||
|
||||
@@ -304,7 +304,7 @@ class projectModel extends model
|
||||
->beginIF($queryType == 'bystatus' and $param != 'all' and $param != 'undone')->andWhere('status')->eq($param)->fi()
|
||||
->beginIF($queryType == 'byid')->andWhere('id')->eq($param)->fi()
|
||||
->orderBy($orderBy)
|
||||
->limit($limit)
|
||||
->beginIF($limit)->limit($limit)->fi()
|
||||
->fetchAll('id');
|
||||
|
||||
if(empty($projects)) return array();
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<td>
|
||||
<div class='datepicker-wrapper'>
|
||||
<?php
|
||||
$realStarted = $task->realStarted;
|
||||
$realStarted = substr($task->realStarted, 0, 19);
|
||||
$readonly = 'readonly';
|
||||
if(helper::isZeroDate($realStarted))
|
||||
{
|
||||
|
||||
@@ -465,6 +465,11 @@ $config->delete['18_4'][] = 'extension/biz/group/ext/lang/en/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/de/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/fr/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/zh-tw/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/report/ext/lang/zh-cn/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/report/ext/lang/en/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/report/ext/lang/de/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/report/ext/lang/fr/report.php';
|
||||
$config->delete['18_4'][] = 'extension/biz/report/ext/lang/zh-tw/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/common/ext/lang/zh-cn/crystal.php';
|
||||
$config->delete['18_4'][] = 'extension/max/common/ext/lang/en/crystal.php';
|
||||
$config->delete['18_4'][] = 'extension/max/common/ext/lang/de/crystal.php';
|
||||
@@ -489,6 +494,11 @@ $config->delete['18_4'][] = 'extension/max/group/ext/lang/de/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/group/ext/lang/fr/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/group/ext/lang/zh-tw/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/control/instancetemplate.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/lang/zh-cn/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/lang/en/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/lang/de/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/lang/fr/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/lang/zh-tw/report.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/view/programsummary.html.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/view/programworkload.html.php';
|
||||
$config->delete['18_4'][] = 'extension/max/report/ext/view/instancetemplate.html.php';
|
||||
|
||||
Reference in New Issue
Block a user