Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
<span class='input-group-addon sort-handler'><a><i class='icon icon-move'></i></a></span>
|
||||
<?php endif;?>
|
||||
<?php if(common::hasPriv('branch', 'delete')):?>
|
||||
<span class='input-group-addon'><?php echo html::a(inlink('delete', "branchID=$branchID"), "<i class='icon icon-trash'></i>", 'hiddenwin')?></span>
|
||||
<span class='input-group-addon'><?php echo html::a(inlink('delete', "branchID=$branchID"), "<i class='icon icon-close'></i>", 'hiddenwin')?></span>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
@@ -39,7 +39,7 @@
|
||||
<div class='input-group'>
|
||||
<?php echo html::input("newbranch[]", '', "class='form-control'")?>
|
||||
<span class='input-group-addon'><a href='javascript:;' onclick='addItem(this)'><i class='icon icon-plus'></i></a></span>
|
||||
<span class='input-group-addon'><a href='javascript:;' onclick='deleteItem(this)'><i class='icon icon-trash'></i></a></span>
|
||||
<span class='input-group-addon'><a href='javascript:;' onclick='deleteItem(this)'><i class='icon icon-close'></i></a></span>
|
||||
</div>
|
||||
<?php endfor;?>
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
.content .stepTitle{display:block; color: green; margin:0px;}
|
||||
.table-fixed td{white-space: unset}
|
||||
.table-data tr > td{word-break: break-all; word-wrap: break-word;}
|
||||
.side-col .cell{padding:0px;}
|
||||
.tab-pane table {border: 1px solid #ddd; border-top: none;}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<?php
|
||||
<?php
|
||||
foreach($templates as $key => $template)
|
||||
{
|
||||
echo "<li id='tplBox$template->id' onmouseover='displayXIcon($template->id)' onmouseout='hideXIcon($template->id)'>";
|
||||
echo "<a title='{$lang->bug->applyTemplate}' class='tpl-name' id='tplTitleBox$template->id' href='javascript:setTemplate($template->id)'>";
|
||||
if($template->public) echo "<span class='label label-info label-badge'>{$lang->public}</span> ";
|
||||
echo $template->title . "</a>";
|
||||
if(empty($template->public) or $template->account == $app->user->account)echo "<a href='###' onclick='deleteTemplate($template->id)' id='templateID$template->id' class='btn-delete hidden'><i class='icon-trash'></i></a>";
|
||||
if(empty($template->public) or $template->account == $app->user->account)echo "<a href='###' onclick='deleteTemplate($template->id)' id='templateID$template->id' class='btn-delete hidden'><i class='icon-close'></i></a>";
|
||||
echo "<span id='template$template->id' class='hidden'>$template->content</span>";
|
||||
echo '</li>';
|
||||
}
|
||||
|
||||
+239
-237
@@ -56,258 +56,260 @@
|
||||
</div>
|
||||
<div class="side-col col-4">
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->bug->legendBasicInfo;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr valign='middle'>
|
||||
<th class='w-70px'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?></td>
|
||||
</tr>
|
||||
<?php if($this->session->currentProductType != 'normal'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->branch;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$bug->branch", $branchName)) echo $branchName;?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->module;?></th>
|
||||
<?php
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$module->branch&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr valign='middle'>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td><?php if(!$bug->plan or !common::printLink('productplan', 'view', "planID=$bug->plan&type=bug", $bug->planName)) echo $bug->planName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->type;?></th>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->severity;?></th>
|
||||
<td><span class='label-severity' data-severity='<?php echo $bug->severity;?>' title='<?php echo zget($lang->bug->severityList, $bug->severity)?>'></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $bug->pri;?>' title='<?php echo zget($lang->bug->priList, $bug->pri);?>'><?php echo zget($lang->bug->priList, $bug->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->status;?></th>
|
||||
<td><span class='status-<?php echo $bug->status?>'><span class="label label-dot"></span> <?php echo $lang->bug->statusList[$bug->status];?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->activatedCount;?></th>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->activatedDate;?></th>
|
||||
<td><?php echo $bug->activatedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->confirmed;?></th>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblAssignedTo;?></th>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->deadline;?></th>
|
||||
<td><?php if($bug->deadline) echo $bug->deadline;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->os;?></th>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->browser;?></th>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->mailto;?></th>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->bug->legendLife;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo zget($users, $bug->openedBy) . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendBasicInfo' data-toggle='tab'><?php echo $lang->bug->legendBasicInfo;?></a></li>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<li><a href='#legendPrjStoryTask' data-toggle='tab'><?php echo $lang->bug->legendPrjStoryTask;?></a></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendBasicInfo'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr valign='middle'>
|
||||
<th class='w-70px'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;?></td>
|
||||
</tr>
|
||||
<?php if($this->session->currentProductType != 'normal'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->branch;?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$bug->branch", $branchName)) echo $branchName;?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->module;?></th>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$module->branch&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo zget($users, $bug->resolvedBy) . $lang->at . $bug->resolvedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo isset($lang->bug->resolutionList[$bug->resolution]) ? $lang->bug->resolutionList[$bug->resolution] : $bug->resolution;
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug", '', true), $bug->duplicateBugTitle, '', "class='iframe' data-width='80%'");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo zget($users, $bug->closedBy) . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo zget($users, $bug->lastEditedBy, $bug->lastEditedBy) . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr valign='middle'>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td><?php if(!$bug->plan or !common::printLink('productplan', 'view', "planID=$bug->plan&type=bug", $bug->planName)) echo $bug->planName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->type;?></th>
|
||||
<td><?php if(isset($lang->bug->typeList[$bug->type])) echo $lang->bug->typeList[$bug->type]; else echo $bug->type;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->severity;?></th>
|
||||
<td><span class='label-severity' data-severity='<?php echo $bug->severity;?>' title='<?php echo zget($lang->bug->severityList, $bug->severity)?>'></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $bug->pri;?>' title='<?php echo zget($lang->bug->priList, $bug->pri);?>'><?php echo zget($lang->bug->priList, $bug->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->status;?></th>
|
||||
<td><span class='status-<?php echo $bug->status?>'><span class="label label-dot"></span> <?php echo $lang->bug->statusList[$bug->status];?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->activatedCount;?></th>
|
||||
<td><?php echo $bug->activatedCount;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->activatedDate;?></th>
|
||||
<td><?php echo $bug->activatedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->confirmed;?></th>
|
||||
<td><?php echo $lang->bug->confirmedList[$bug->confirmed];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblAssignedTo;?></th>
|
||||
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->deadline;?></th>
|
||||
<td><?php if($bug->deadline) echo $bug->deadline;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->os;?></th>
|
||||
<td><?php echo $lang->bug->osList[$bug->os];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->browser;?></th>
|
||||
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->keywords;?></th>
|
||||
<td><?php echo $bug->keywords;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->mailto;?></th>
|
||||
<td><?php $mailto = explode(',', str_replace(' ', '', $bug->mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class='tab-pane' id='legendPrjStoryTask'>
|
||||
<table class='table table-data'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->bug->project;?></th>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->bug->story;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story", '', true), "#$bug->story $bug->storyTitle", '', "class='iframe' data-width='80%'");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->task;?></th>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task", '', true), $bug->taskName, '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->bug->legendPrjStoryTask;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class='table table-data'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->bug->project;?></th>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->bug->story;?></th>
|
||||
<td>
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendLife' data-toggle='tab'><?php echo $lang->bug->legendLife;?></a></li>
|
||||
<li><a href='#legendMisc' data-toggle='tab'><?php echo $lang->bug->legendMisc;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendLife'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->bug->openedBy;?></th>
|
||||
<td> <?php echo zget($users, $bug->openedBy) . $lang->at . $bug->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->openedBuild)
|
||||
{
|
||||
$openedBuilds = explode(',', $bug->openedBuild);
|
||||
foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '<br />') : print($openedBuild . '<br />');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $bug->openedBuild;
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblResolved;?></th>
|
||||
<td><?php if($bug->resolvedBy) echo zget($users, $bug->resolvedBy) . $lang->at . $bug->resolvedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->resolvedBuild;?></th>
|
||||
<td><?php if(isset($builds[$bug->resolvedBuild])) echo $builds[$bug->resolvedBuild]; else echo $bug->resolvedBuild;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->resolution;?></th>
|
||||
<td>
|
||||
<?php
|
||||
echo isset($lang->bug->resolutionList[$bug->resolution]) ? $lang->bug->resolutionList[$bug->resolution] : $bug->resolution;
|
||||
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug", '', true), $bug->duplicateBugTitle, '', "class='iframe' data-width='80%'");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->closedBy;?></th>
|
||||
<td><?php if($bug->closedBy) echo zget($users, $bug->closedBy) . $lang->at . $bug->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->lblLastEdited;?></th>
|
||||
<td><?php if($bug->lastEditedBy) echo zget($users, $bug->lastEditedBy, $bug->lastEditedBy) . $lang->at . $bug->lastEditedDate?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class='tab-pane' id='legendMisc'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr class='text-top'>
|
||||
<th class='w-80px'><?php echo $lang->bug->linkBug;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID", '', true), "#$linkBugID $linkBugTitle", '', "class='iframe' data-width='80%'") . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($bug->case):?>
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->bug->fromCase;?></th>
|
||||
<td><?php echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case", '', true), "#$bug->case $bug->caseTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($bug->toCases):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toCase;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($bug->story) echo html::a($this->createLink('story', 'view', "storyID=$bug->story", '', true), "#$bug->story $bug->storyTitle", '', "class='iframe' data-width='80%'");
|
||||
if($bug->storyStatus == 'active' and $bug->latestStoryVersion > $bug->storyVersion)
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('bug', 'confirmStoryChange', "bugID=$bug->id"), $lang->confirm, 'hiddenwin');
|
||||
echo ")";
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID", '', true), $case, '', "class='iframe' data-width='80%'") . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->task;?></th>
|
||||
<td><?php if($bug->task) echo html::a($this->createLink('task', 'view', "taskID=$bug->task", '', true), $bug->taskName, '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php if($bug->toStory != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toStory;?></th>
|
||||
<td><?php echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory", '', true), "#$bug->toStory $bug->toStoryTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($bug->toTask != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toTask;?></th>
|
||||
<td><?php echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask", '', true), "#$bug->toTask $bug->toTaskTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->bug->legendMisc;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr class='text-top'>
|
||||
<th class='w-80px'><?php echo $lang->bug->linkBug;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($bug->linkBugTitles))
|
||||
{
|
||||
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
|
||||
{
|
||||
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID", '', true), "#$linkBugID $linkBugTitle", '', "class='iframe' data-width='80%'") . '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($bug->case):?>
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->bug->fromCase;?></th>
|
||||
<td><?php echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case", '', true), "#$bug->case $bug->caseTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($bug->toCases):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toCase;?></th>
|
||||
<td>
|
||||
<?php
|
||||
foreach($bug->toCases as $caseID => $case)
|
||||
{
|
||||
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID", '', true), $case, '', "class='iframe' data-width='80%'") . '</p>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php if($bug->toStory != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toStory;?></th>
|
||||
<td><?php echo html::a($this->createLink('story', 'view', "storyID=$bug->toStory", '', true), "#$bug->toStory $bug->toStoryTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($bug->toTask != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toTask;?></th>
|
||||
<td><?php echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask", '', true), "#$bug->toTask $bug->toTaskTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -228,9 +228,10 @@ $lang->release->menu = $lang->product->menu;
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = array('link' => 'Task List|project|task|projectID=%s', 'subModule' => 'task,grouptask,tree', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task,tree');
|
||||
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => 'Burn|project|burn|projectID=%s');
|
||||
$lang->project->menu->list = array('link' => 'More|project|grouptask|projectID=%s', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->qa = array('link' => 'Bug|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
@@ -241,7 +242,6 @@ $lang->project->menu->view = array('link' => 'Overview|project|view|projectI
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->list = new stdclass();
|
||||
$lang->project->subMenu->list->task = 'Task List|project|task|projectID=%s';
|
||||
$lang->project->subMenu->list->groupTask = 'Group View|project|groupTask|projectID=%s';
|
||||
$lang->project->subMenu->list->tree = 'Tree View|project|tree|projectID=%s';
|
||||
|
||||
@@ -569,7 +569,7 @@ $lang->icons['batchCreate'] = 'plus-sign';
|
||||
$lang->icons['batchEdit'] = 'edit-sign';
|
||||
$lang->icons['batchClose'] = 'off';
|
||||
$lang->icons['edit'] = 'edit';
|
||||
$lang->icons['delete'] = 'trash';
|
||||
$lang->icons['delete'] = 'close';
|
||||
$lang->icons['copy'] = 'copy';
|
||||
$lang->icons['report'] = 'bar-chart';
|
||||
$lang->icons['export'] = 'export';
|
||||
|
||||
@@ -46,16 +46,17 @@ $lang->release->menuOrder = $lang->product->menuOrder;
|
||||
$lang->branch->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* project menu order. */
|
||||
$lang->project->menuOrder[5] = 'list';
|
||||
$lang->project->menuOrder[5] = 'task';
|
||||
$lang->project->menuOrder[10] = 'kanban';
|
||||
$lang->project->menuOrder[15] = 'burn';
|
||||
$lang->project->menuOrder[20] = 'story';
|
||||
$lang->project->menuOrder[25] = 'qa';
|
||||
$lang->project->menuOrder[30] = 'doc';
|
||||
$lang->project->menuOrder[35] = 'action';
|
||||
$lang->project->menuOrder[40] = 'team';
|
||||
$lang->project->menuOrder[45] = 'product';
|
||||
$lang->project->menuOrder[50] = 'view';
|
||||
$lang->project->menuOrder[20] = 'list';
|
||||
$lang->project->menuOrder[25] = 'story';
|
||||
$lang->project->menuOrder[30] = 'qa';
|
||||
$lang->project->menuOrder[35] = 'doc';
|
||||
$lang->project->menuOrder[40] = 'action';
|
||||
$lang->project->menuOrder[45] = 'team';
|
||||
$lang->project->menuOrder[50] = 'product';
|
||||
$lang->project->menuOrder[55] = 'view';
|
||||
$lang->task->menuOrder = $lang->project->menuOrder;
|
||||
$lang->build->menuOrder = $lang->project->menuOrder;
|
||||
|
||||
|
||||
@@ -228,9 +228,10 @@ $lang->release->menu = $lang->product->menu;
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->list = array('link' => '任务列表|project|task|projectID=%s', 'subModule' => 'task,grouptask,tree', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree');
|
||||
$lang->project->menu->kanban = array('link' => '看板|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => '燃尽图|project|burn|projectID=%s');
|
||||
$lang->project->menu->list = array('link' => '更多|project|grouptask|projectID=%s', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->qa = array('link' => 'Bug|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->doc = array('link' => '文档|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
@@ -241,7 +242,6 @@ $lang->project->menu->view = array('link' => '概况|project|view|projectID=%
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->list = new stdclass();
|
||||
$lang->project->subMenu->list->task = '任务列表|project|task|projectID=%s';
|
||||
$lang->project->subMenu->list->groupTask = '分组视图|project|groupTask|projectID=%s';
|
||||
$lang->project->subMenu->list->tree = '树状图|project|tree|projectID=%s';
|
||||
|
||||
@@ -569,7 +569,7 @@ $lang->icons['batchCreate'] = 'plus-sign';
|
||||
$lang->icons['batchEdit'] = 'edit-sign';
|
||||
$lang->icons['batchClose'] = 'off';
|
||||
$lang->icons['edit'] = 'edit';
|
||||
$lang->icons['delete'] = 'trash';
|
||||
$lang->icons['delete'] = 'close';
|
||||
$lang->icons['copy'] = 'copy';
|
||||
$lang->icons['report'] = 'bar-chart';
|
||||
$lang->icons['export'] = 'export';
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
js::set('confirmDelete', $lang->user->confirmDelete);
|
||||
@@ -100,35 +100,12 @@ js::set('confirmDelete', $lang->user->confirmDelete);
|
||||
<td class='c-num text-center'><?php echo $user->visits;?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
if(!empty($config->sso->turnon))
|
||||
{
|
||||
if($user->ranzhi)
|
||||
{
|
||||
common::printIcon('user', 'unbind', "userID=$user->account", '', 'list', 'unlink', "hiddenwin");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a('javascript:;', "<i class='icon icon-unlink'></i>", '', "class='btn disabled'");
|
||||
}
|
||||
}
|
||||
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', 'unlock', "hiddenwin");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a('javascript:;', "<i class='icon icon-unlock'></i>", '', "class='btn disabled'");
|
||||
}
|
||||
if(!empty($config->sso->turnon)) common::printIcon('user', 'unbind', "userID=$user->account", $user, 'list', 'unlink', "hiddenwin");
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", $user, 'list', 'unlock', "hiddenwin");
|
||||
common::printIcon('user', 'edit', "userID=$user->id&from=company", '', 'list');
|
||||
if(strpos($this->app->company->admins, ",{$user->account},") === false and common::hasPriv('user', 'delete'))
|
||||
{
|
||||
echo html::a($this->createLink('user', 'delete', "userID=$user->id"), '<i class="icon-trash"></i>', '', "title='{$lang->user->delete}' class='btn iframe'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a('javascript:;', "<i class='icon icon-trash'></i>", '', "class='btn disabled'");
|
||||
}
|
||||
|
||||
$deleteClass = (strpos($this->app->company->admins, ",{$user->account},") === false and common::hasPriv('user', 'delete')) ? 'btn iframe' : 'btn disabled';
|
||||
echo html::a($this->createLink('user', 'delete', "userID=$user->id"), '<i class="icon-close"></i>', '', "title='{$lang->user->delete}' class='{$deleteClass}'");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -23,7 +23,7 @@ $itemRow = <<<EOT
|
||||
</td>
|
||||
<td class='c-actions'>
|
||||
<a href="javascript:void(0)" class='btn btn-link' onclick="addItem(this)"><i class='icon-plus'></i></a>
|
||||
<a href="javascript:void(0)" class='btn btn-link' onclick="delItem(this)"><i class='icon-trash'></i></a>
|
||||
<a href="javascript:void(0)" class='btn btn-link' onclick="delItem(this)"><i class='icon-close'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
EOT;
|
||||
@@ -141,7 +141,7 @@ EOT;
|
||||
<?php if($canAdd):?>
|
||||
<td class='c-actions'>
|
||||
<a href="javascript:void(0)" onclick="addItem(this)" class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href="javascript:void(0)" onclick="delItem(this)" class='btn btn-link'><i class='icon-trash'></i></a>
|
||||
<a href="javascript:void(0)" onclick="delItem(this)" class='btn btn-link'><i class='icon-close'></i></a>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<?php $collectTitle = strpos($lib->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$lib->id&objectType=doclib");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$lib->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link iframe'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$lib->id", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$lib->id", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$lib->id&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->doc->manageType}' class='btn btn-link'")?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<?php $collectTitle = strpos($lib->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$lib->id&objectType=doclib");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$lib->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link iframe'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$lib->id", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'deleteLib', "libID=$lib->id", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$lib->id&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->tree->manage}' class='btn btn-link'")?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -126,7 +126,7 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<td class="c-actions">
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$doc->id&objectType=doc");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'edit', "docID=$doc->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID=$doc->id", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID=$doc->id", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="actions">
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID={$doc->id}&objectType=doc");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'edit', "docID={$doc->id}", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID={$doc->id}", "<i class='icon icon-trash'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('doc', 'delete', "docID={$doc->id}", "<i class='icon icon-close'></i>", '', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<div class="actions">
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$libID&objectType=doclib");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$libID", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link iframe'")?>
|
||||
<?php if(empty($lib->main)) common::printLink('doc', 'deleteLib', "libID=$libID", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php if(empty($lib->main)) common::printLink('doc', 'deleteLib', "libID=$libID", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->doc->manageType}' class='btn btn-link'")?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<?php $collectTitle = strpos($lib->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$libID&objectType=doclib");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><i class='icon <?php echo $star;?>'></i></a>
|
||||
<?php common::printLink('doc', 'editLib', "libID=$libID", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link iframe'")?>
|
||||
<?php if(empty($lib->main)) common::printLink('doc', 'deleteLib', "libID=$libID", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php if(empty($lib->main)) common::printLink('doc', 'deleteLib', "libID=$libID", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php common::printLink('tree', 'browse', "rootID=$libID&type=doc", "<i class='icon icon-cog'></i>", '', "title='{$lang->doc->manageType}' class='btn btn-link'")?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
$imageSize = getimagesize($file->realPath);
|
||||
$imageWidth = $imageSize ? $imageSize[0] : 0;
|
||||
}
|
||||
|
||||
|
||||
$sessionString = $config->requestType == 'PATH_INFO' ? '?' : '&';
|
||||
$sessionString .= session_name() . '=' . session_id();
|
||||
$fileID = $file->id;
|
||||
@@ -134,7 +134,7 @@
|
||||
</div>
|
||||
<div class='actions'>
|
||||
<?php if(common::hasPriv('file', 'delete')): ?>
|
||||
<a href='<?php echo $this->createLink('file', 'delete', "fileID=$file->id"); ?>' target='hiddenwin' title='<?php echo $lang->delete?>' class='delete btn btn-link'><i class='icon icon-trash'></i></a>
|
||||
<a href='<?php echo $this->createLink('file', 'delete', "fileID=$file->id"); ?>' target='hiddenwin' title='<?php echo $lang->delete?>' class='delete btn btn-link'><i class='icon icon-close'></i></a>
|
||||
<?php endif?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
<img onload="setImageSize(this,0)" src="<?php echo $this->createLink('file', 'read', "fileID={$file->id}");?>" alt="<?php echo $file->title?>">
|
||||
</a>
|
||||
<span class='right-icon'>
|
||||
<?php if(common::hasPriv('file', 'delete')) echo html::a('###', "<i class='icon icon-trash'></i>", '', "class='btn-icon' onclick='deleteFile($file->id)' title='$lang->delete'");?>
|
||||
<?php if(common::hasPriv('file', 'delete')) echo html::a('###', "<i class='icon icon-close'></i>", '', "class='btn-icon' onclick='deleteFile($file->id)' title='$lang->delete'");?>
|
||||
</span>
|
||||
</div>
|
||||
<?php unset($doc->files[$file->id]);?>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @copyright Copyright 2009-2017 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Gang Liu <liugang@cnezsoft.com>
|
||||
* @package entry
|
||||
* @package entry
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
@@ -37,13 +37,13 @@
|
||||
<td title='<?php echo $entry->ip;?>'><?php echo $entry->ip;?></td>
|
||||
<td title='<?php echo $entry->desc;?>'><?php echo $entry->desc;?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
<?php
|
||||
common::printIcon('entry', 'log', "entryID=$id", '', 'list', 'file-text');
|
||||
common::printIcon('entry', 'edit', "entryID=$id", '', 'list');
|
||||
if(common::hasPriv('entry', 'delete'))
|
||||
{
|
||||
$deleteURL = $this->createLink('entry', 'delete', "entryID=$id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"entryList\",confirmDelete)", '<i class="icon-trash"></i>', '', "title='{$lang->entry->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"entryList\",confirmDelete)", '<i class="icon-close"></i>', '', "title='{$lang->entry->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<h2>
|
||||
<span class='prefix' title='EXTENSION'><?php echo html::icon($lang->icons['extension']);?></span>
|
||||
<strong><?php echo $title;?></strong>
|
||||
<small class='text-danger'><?php echo $lang->extension->erase;?> <?php echo html::icon('trash');?></small>
|
||||
<small class='text-danger'><?php echo $lang->extension->erase;?> <?php echo html::icon('close');?></small>
|
||||
</h2>
|
||||
</div>
|
||||
<div class='alert alert-success with-icon'>
|
||||
|
||||
@@ -23,12 +23,13 @@ $sessionString .= session_name() . '=' . session_id();
|
||||
function downloadFile(fileID, extension, imageWidth, fileTitle)
|
||||
{
|
||||
if(!fileID) return;
|
||||
var fileTypes = 'txt,jpg,jpeg,gif,png,bmp';
|
||||
var sessionString = '<?php echo $sessionString;?>';
|
||||
var windowWidth = $(window).width();
|
||||
var url = createLink('file', 'download', 'fileID=' + fileID + '&mouse=left') + sessionString;
|
||||
width = (windowWidth > imageWidth) ? ((imageWidth < windowWidth*0.5) ? windowWidth*0.5 : imageWidth) : windowWidth;
|
||||
if(fileTypes.indexOf(extension) >= 0 && fileTitle.lastIndexOf('.' + extension) == (fileTitle.length - extension.length - 1))
|
||||
var fileTypes = 'txt,jpg,jpeg,gif,png,bmp';
|
||||
var sessionString = '<?php echo $sessionString;?>';
|
||||
var windowWidth = $(window).width();
|
||||
var url = createLink('file', 'download', 'fileID=' + fileID + '&mouse=left') + sessionString;
|
||||
var width = (windowWidth > imageWidth) ? ((imageWidth < windowWidth * 0.5) ? windowWidth * 0.5 : imageWidth) : windowWidth;
|
||||
var checkExtension = fileTitle.lastIndexOf('.' + extension) == (fileTitle.length - extension.length - 1);
|
||||
if(fileTypes.indexOf(extension) >= 0 && checkExtension)
|
||||
{
|
||||
$('<a>').modalTrigger({url: url, type: 'iframe', width: width}).trigger('click');
|
||||
}
|
||||
|
||||
@@ -55,11 +55,11 @@
|
||||
if(common::hasPriv('group', 'delete') and $group->role != 'limited')
|
||||
{
|
||||
$deleteURL = $this->createLink('group', 'delete', "groupID=$group->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"groupList\", confirmDelete)", '<i class="icon icon-trash"></i>', '', "title='{$lang->group->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"groupList\", confirmDelete)", '<i class="icon icon-close"></i>', '', "title='{$lang->group->delete}' class='btn'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<button class='btn disabled'><i class='icon icon-trash disabled' title='{$lang->group->delete}'></i></button>";
|
||||
echo "<button class='btn disabled'><i class='icon icon-close disabled' title='{$lang->group->delete}'></i></button>";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
if(common::hasPriv('testtask', 'delete', $task))
|
||||
{
|
||||
$deleteURL = $this->createLink('testtask', 'delete', "taskID=$task->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-common-delete icon-trash"></i>', '', "title='{$lang->testtask->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-common-delete icon-close"></i>', '', "title='{$lang->testtask->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
if(common::hasPriv('todo', 'delete'))
|
||||
{
|
||||
$deleteURL = $this->createLink('todo', 'delete', "todoID=$todo->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"todoList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->todo->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"todoList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn' title='{$lang->todo->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
if(common::hasPriv('build', 'delete'))
|
||||
{
|
||||
$deleteURL = $this->createLink('build', 'delete', "buildID=$build->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->build->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn' title='{$lang->build->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
if(common::hasPriv('productplan', 'delete', $plan))
|
||||
{
|
||||
$deleteURL = $this->createLink('productplan', 'delete', "planID=$plan->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"productplanList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn btn-icon' title='{$lang->productplan->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"productplanList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn btn-icon' title='{$lang->productplan->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
if(common::hasPriv('build', 'delete', $build))
|
||||
{
|
||||
$deleteURL = $this->createLink('build', 'delete', "buildID=$build->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->build->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn' title='{$lang->build->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class='modal fade' id='copyProjectModal'>
|
||||
<div class='modal-dialog mw-800px'>
|
||||
<div class='modal-dialog mw-900px'>
|
||||
<div class='modal-header'>
|
||||
<button type='button' class='close' data-dismiss='modal'><i class="icon icon-close"></i></button>
|
||||
<h4 class='modal-title' id='myModalLabel'><?php echo $lang->project->copyTitle;?></h4>
|
||||
|
||||
@@ -113,10 +113,10 @@
|
||||
<th class="c-status"><?php echo $lang->task->status;?></th>
|
||||
<th class="c-assign text-left"><?php echo $lang->task->assignedTo;?></th>
|
||||
<th class="c-user"><?php echo $lang->task->finishedBy;?></th>
|
||||
<th class="w-40px"><?php echo $lang->task->estimateAB;?></th>
|
||||
<th class="w-40px"><?php echo $lang->task->consumedAB;?></th>
|
||||
<th class="w-40px"><?php echo $lang->task->leftAB;?></th>
|
||||
<th class="w-40px"><?php echo $lang->task->progress;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->estimateAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->consumedAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->leftAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->progress;?></th>
|
||||
<th class="c-type"><?php echo $lang->typeAB;?></th>
|
||||
<th class="c-date"><?php echo $lang->task->deadlineAB;?></th>
|
||||
<th class="c-actions-2"><?php echo $lang->actions;?></th>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-trash'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
@@ -95,7 +95,7 @@
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-trash'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php unset($users[$deptAccount]);?>
|
||||
@@ -114,7 +114,7 @@
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, 'no');?></td>
|
||||
<td class='c-actions'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-trash'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++; $memberCount ++;?>
|
||||
@@ -139,7 +139,7 @@
|
||||
<td><?php echo html::radio("limited[$i]", $lang->team->limitedList, $member->realname ? $member->limited : 'no');?></td>
|
||||
<td class='c-actions'>
|
||||
<a href='javascript:;' onclick='addItem(this)' class='btn btn-link'><i class='icon-plus'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-trash'></i></a>
|
||||
<a href='javascript:;' onclick='deleteItem(this)' class='btn btn-link'><i class='icon icon-close'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<?php foreach($teamMembers as $member):?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php
|
||||
<?php
|
||||
if(!common::printLink('user', 'view', "account=$member->account", $member->realname)) print $member->realname;
|
||||
$memberHours = $member->days * $member->hours;
|
||||
$totalHours += $memberHours;
|
||||
@@ -78,7 +78,7 @@
|
||||
if (common::hasPriv('project', 'unlinkMember', $member))
|
||||
{
|
||||
$unlinkURL = $this->createLink('project', 'unlinkMember', "projectID=$project->id&account=$member->account&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$unlinkURL\",\"memberList\",confirmUnlinkMember)", '<i class="icon-green-project-unlinkMember icon-trash"></i>', '', "class='btn' title='{$lang->project->unlinkMember}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$unlinkURL\",\"memberList\",confirmUnlinkMember)", '<i class="icon-green-project-unlinkMember icon-close"></i>', '', "class='btn' title='{$lang->project->unlinkMember}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
if(common::hasPriv('testtask', 'delete', $task))
|
||||
{
|
||||
$deleteURL = $this->createLink('testtask', 'delete', "taskID=$task->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->testtask->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn' title='{$lang->testtask->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
if(common::hasPriv('release', 'delete', $release))
|
||||
{
|
||||
$deleteURL = $this->createLink('release', 'delete', "releaseID=$release->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"releaseList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->release->delete}'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"releaseList\",confirmDelete)", '<i class="icon-close"></i>', '', "class='btn' title='{$lang->release->delete}'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
.side-col .cell{padding:0px;}
|
||||
.side-col #legendProjectAndTask .list-unstyled{padding:10px; border:1px solid #ddd; border-top:0px; margin:0px;}
|
||||
@@ -195,7 +195,7 @@ $lang->story->errorEmptyChildStory = '『Subdivide Story』canot be blank.';
|
||||
$lang->story->mustChooseResult = 'Select Result';
|
||||
$lang->story->mustChoosePreVersion = 'Select the Version to revert to.';
|
||||
$lang->story->noStory = 'No stories. ';
|
||||
$lang->story->failChangeStage = 'The status of story %s is draft, that fail to change stage.';
|
||||
$lang->story->ignoreChangeStage = 'The status of story %s is draft, that fail to change stage.';
|
||||
|
||||
$lang->story->form = new stdclass();
|
||||
$lang->story->form->area = 'Story Scope';
|
||||
|
||||
@@ -195,7 +195,7 @@ $lang->story->errorEmptyChildStory = '『细分需求』不能为空。';
|
||||
$lang->story->mustChooseResult = '必须选择评审结果';
|
||||
$lang->story->mustChoosePreVersion = '必须选择回溯的版本';
|
||||
$lang->story->noStory = '暂时没有需求。';
|
||||
$lang->story->failChangeStage = '需求 %s 为草稿状态,没有修改其阶段。';
|
||||
$lang->story->ignoreChangeStage = '需求 %s 为草稿状态,没有修改其阶段。';
|
||||
|
||||
$lang->story->form = new stdclass();
|
||||
$lang->story->form->area = '该需求所属范围';
|
||||
|
||||
@@ -1027,16 +1027,16 @@ class storyModel extends model
|
||||
*/
|
||||
public function batchChangeStage($storyIDList, $stage)
|
||||
{
|
||||
$now = helper::now();
|
||||
$allChanges = array();
|
||||
$oldStories = $this->getByList($storyIDList);
|
||||
$failStories = '';
|
||||
$now = helper::now();
|
||||
$allChanges = array();
|
||||
$oldStories = $this->getByList($storyIDList);
|
||||
$ignoreStories = '';
|
||||
foreach($storyIDList as $storyID)
|
||||
{
|
||||
$oldStory = $oldStories[$storyID];
|
||||
if($oldStory->status == 'draft')
|
||||
{
|
||||
$failStories .= "#{$storyID} ";
|
||||
$ignoreStories .= "#{$storyID} ";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1049,7 +1049,7 @@ class storyModel extends model
|
||||
$this->dao->update(TABLE_STORYSTAGE)->set('stage')->eq($stage)->where('story')->eq((int)$storyID)->exec();
|
||||
if(!dao::isError()) $allChanges[$storyID] = common::createChanges($oldStory, $story);
|
||||
}
|
||||
if($failStories) echo js::alert(sprintf($this->lang->story->failChangeStage, $failStories));
|
||||
if($ignoreStories) echo js::alert(sprintf($this->lang->story->ignoreChangeStage, $ignoreStories));
|
||||
return $allChanges;
|
||||
}
|
||||
|
||||
|
||||
+245
-239
@@ -60,263 +60,269 @@
|
||||
</div>
|
||||
<div class="side-col col-4">
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->story->legendBasicInfo;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->product;?></th>
|
||||
<td><?php echo html::a($this->createLink('product', 'view', "productID=$story->product"), $product->name);?></td>
|
||||
</tr>
|
||||
<?php if($product->type != 'normal'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->branch;?></th>
|
||||
<td><?php common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch", $branches[$story->branch]);?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->module;?></th>
|
||||
<?php
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->plan;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($story->planTitle))
|
||||
{
|
||||
foreach($story->planTitle as $planID => $planTitle)
|
||||
{
|
||||
if(!common::printLink('productplan', 'view', "planID=$planID", $planTitle)) echo $lanTitle;
|
||||
echo '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->source;?></th>
|
||||
<td id='source'><?php echo $lang->story->sourceList[$story->source];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->sourceNote;?></th>
|
||||
<td><?php echo $story->sourceNote;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->status;?></th>
|
||||
<td><span class='status-<?php echo $story->status?>'><span class="label label-dot"></span> <?php echo $lang->story->statusList[$story->status];?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->stage;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($story->stages and $branches)
|
||||
{
|
||||
foreach($story->stages as $branch => $stage) if(isset($branches[$branch])) echo $branches[$branch] . ' : ' . $lang->story->stageList[$stage] . '<br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $lang->story->stageList[$story->stage];
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>' title='<?php echo zget($lang->story->priList, $story->pri)?>'><?php echo zget($lang->story->priList, $story->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->estimate;?></th>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->keywords;?></th>
|
||||
<td><?php echo $story->keywords;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->legendMailto;?></th>
|
||||
<td><?php $mailto = explode(',', $story->mailto); foreach($mailto as $account) {if(empty($account)) continue; echo "<span>" . $users[trim($account)] . '</span> '; }?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->story->legendProjectAndTask;?></summary>
|
||||
<div class="detail-content">
|
||||
<ul class="list-unstyled no-margin">
|
||||
<?php
|
||||
foreach($story->tasks as $projectTasks)
|
||||
{
|
||||
foreach($projectTasks as $task)
|
||||
{
|
||||
if(!isset($projects[$task->project])) continue;
|
||||
$projectName = $projects[$task->project];
|
||||
echo "<li title='$task->name'>" . html::a($this->createLink('task', 'view', "taskID=$task->id", '', true), "#$task->id $task->name", '', "class='iframe' data-width='80%'");
|
||||
echo html::a($this->createLink('project', 'browse', "projectID=$task->project"), $projectName, '', "class='text-muted'") . '</li>';
|
||||
}
|
||||
}
|
||||
if(count($story->tasks) == 0)
|
||||
{
|
||||
foreach($story->projects as $projectID => $project)
|
||||
{
|
||||
echo "<li title='$project->name'>" . html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name, '', "class='text-muted'") . '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->story->legendRelated;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<?php if(!empty($fromBug)):?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-70px'><?php echo $lang->story->legendFromBug;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php echo "<li title='#$fromBug->id $fromBug->title'>" . html::a($this->createLink('bug', 'view', "bugID=$fromBug->id", '', true), "#$fromBug->id $fromBug->title", '', "class='iframe' data-width='80%'") . '</li>';?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-70px'><?php echo $lang->story->legendBugs;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendBasicInfo' data-toggle='tab'><?php echo $lang->story->legendBasicInfo;?></a></li>
|
||||
<li><a href='#legendLifeTime' data-toggle='tab'><?php echo $lang->story->legendLifeTime;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendBasicInfo'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->product;?></th>
|
||||
<td><?php echo html::a($this->createLink('product', 'view', "productID=$story->product"), $product->name);?></td>
|
||||
</tr>
|
||||
<?php if($product->type != 'normal'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->branch;?></th>
|
||||
<td><?php common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch", $branches[$story->branch]);?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->module;?></th>
|
||||
<?php
|
||||
foreach($bugs as $bug)
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "<li title='#$bug->id $bug->title'>" . html::a($this->createLink('bug', 'view', "bugID=$bug->id", '', true), "#$bug->id $bug->title", '', "class='iframe' data-width='80%'") . '</li>';
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->plan;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(isset($story->planTitle))
|
||||
{
|
||||
foreach($story->planTitle as $planID => $planTitle)
|
||||
{
|
||||
if(!common::printLink('productplan', 'view', "planID=$planID", $planTitle)) echo $lanTitle;
|
||||
echo '<br />';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendCases;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->source;?></th>
|
||||
<td id='source'><?php echo $lang->story->sourceList[$story->source];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->sourceNote;?></th>
|
||||
<td><?php echo $story->sourceNote;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->status;?></th>
|
||||
<td><span class='status-<?php echo $story->status?>'><span class="label label-dot"></span> <?php echo $lang->story->statusList[$story->status];?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->stage;?></th>
|
||||
<td>
|
||||
<?php
|
||||
foreach($cases as $case)
|
||||
if($story->stages and $branches)
|
||||
{
|
||||
echo "<li title='#$case->id $case->title'>" . html::a($this->createLink('testcase', 'view', "caseID=$case->id", '', true), "#$case->id $case->title", '', "class='iframe' data-width='80%'") . '</li>';
|
||||
foreach($story->stages as $branch => $stage) if(isset($branches[$branch])) echo $branches[$branch] . ' : ' . $lang->story->stageList[$stage] . '<br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $lang->story->stageList[$story->stage];
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-80px'><?php echo $lang->story->legendLinkStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>' title='<?php echo zget($lang->story->priList, $story->pri)?>'><?php echo zget($lang->story->priList, $story->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->estimate;?></th>
|
||||
<td><?php echo $story->estimate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->keywords;?></th>
|
||||
<td><?php echo $story->keywords;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->legendMailto;?></th>
|
||||
<td><?php $mailto = explode(',', $story->mailto); foreach($mailto as $account) {if(empty($account)) continue; echo "<span>" . $users[trim($account)] . '</span> '; }?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class='tab-pane' id='legendLifeTime'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->story->openedBy;?></th>
|
||||
<td><?php echo $users[$story->openedBy] . $lang->at . $story->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->assignedTo;?></th>
|
||||
<td><?php if($story->assignedTo) echo $users[$story->assignedTo] . $lang->at . $story->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedBy;?></th>
|
||||
<td><?php $reviewedBy = explode(',', $story->reviewedBy); foreach($reviewedBy as $account) echo ' ' . $users[trim($account)]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedDate;?></th>
|
||||
<td><?php if($story->reviewedBy) echo $story->reviewedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->closedBy;?></th>
|
||||
<td><?php if($story->closedBy) echo $users[$story->closedBy] . $lang->at . $story->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->closedReason;?></th>
|
||||
<td>
|
||||
<?php
|
||||
$linkStories = explode(',', $story->linkStories) ;
|
||||
foreach($linkStories as $linkStoryID)
|
||||
if($story->closedReason) echo $lang->story->reasonList[$story->closedReason];
|
||||
if(isset($story->extraStories[$story->duplicateStory]))
|
||||
{
|
||||
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$linkStoryID", '', true), "#$linkStoryID " . $story->extraStories[$linkStoryID], '', "class='iframe' data-width='80%'") . '</li>';
|
||||
echo html::a(inlink('view', "storyID=$story->duplicateStory"), '#' . $story->duplicateStory . ' ' . $story->extraStories[$story->duplicateStory]);
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendChildStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
$childStories = explode(',', $story->childStories) ;
|
||||
foreach($childStories as $childStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$childStoryID", '', true), "#$childStoryID " . $story->extraStories[$childStoryID], '', "class='iframe' data-width='80%'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->lastEditedBy;?></th>
|
||||
<td><?php if($story->lastEditedBy) echo $users[$story->lastEditedBy] . $lang->at . $story->lastEditedDate;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->story->legendLifeTime;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->story->openedBy;?></th>
|
||||
<td><?php echo $users[$story->openedBy] . $lang->at . $story->openedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->assignedTo;?></th>
|
||||
<td><?php if($story->assignedTo) echo $users[$story->assignedTo] . $lang->at . $story->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedBy;?></th>
|
||||
<td><?php $reviewedBy = explode(',', $story->reviewedBy); foreach($reviewedBy as $account) echo ' ' . $users[trim($account)]; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedDate;?></th>
|
||||
<td><?php if($story->reviewedBy) echo $story->reviewedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->closedBy;?></th>
|
||||
<td><?php if($story->closedBy) echo $users[$story->closedBy] . $lang->at . $story->closedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->closedReason;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if($story->closedReason) echo $lang->story->reasonList[$story->closedReason];
|
||||
if(isset($story->extraStories[$story->duplicateStory]))
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<?php if($config->global->flow == 'onlyStory'):?>
|
||||
<li class='active'><a href='#legendRelated' data-toggle='tab'><?php echo $lang->story->legendRelated;?></a></li>
|
||||
<?php else:?>
|
||||
<li class='active'><a href='#legendProjectAndTask' data-toggle='tab'><?php echo $lang->story->legendProjectAndTask;?></a></li>
|
||||
<li><a href='#legendRelated' data-toggle='tab'><?php echo $lang->story->legendRelated;?></a></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<div class='tab-pane active' id='legendProjectAndTask'>
|
||||
<ul class="list-unstyled">
|
||||
<?php
|
||||
foreach($story->tasks as $projectTasks)
|
||||
{
|
||||
foreach($projectTasks as $task)
|
||||
{
|
||||
echo html::a(inlink('view', "storyID=$story->duplicateStory"), '#' . $story->duplicateStory . ' ' . $story->extraStories[$story->duplicateStory]);
|
||||
if(!isset($projects[$task->project])) continue;
|
||||
$projectName = $projects[$task->project];
|
||||
echo "<li title='$task->name'>" . html::a($this->createLink('task', 'view', "taskID=$task->id", '', true), "#$task->id $task->name", '', "class='iframe' data-width='80%'");
|
||||
echo html::a($this->createLink('project', 'browse', "projectID=$task->project"), $projectName, '', "class='text-muted'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->lastEditedBy;?></th>
|
||||
<td><?php if($story->lastEditedBy) echo $users[$story->lastEditedBy] . $lang->at . $story->lastEditedDate;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
if(count($story->tasks) == 0)
|
||||
{
|
||||
foreach($story->projects as $projectID => $project)
|
||||
{
|
||||
echo "<li title='$project->name'>" . html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name, '', "class='text-muted'") . '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="tab-pane <?php if($config->global->flow == 'onlyStory') echo 'active';?>" id='legendRelated'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<?php if(!empty($fromBug)):?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-70px'><?php echo $lang->story->legendFromBug;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php echo "<li title='#$fromBug->id $fromBug->title'>" . html::a($this->createLink('bug', 'view', "bugID=$fromBug->id", '', true), "#$fromBug->id $fromBug->title", '', "class='iframe' data-width='80%'") . '</li>';?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-70px'><?php echo $lang->story->legendBugs;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($bugs as $bug)
|
||||
{
|
||||
echo "<li title='#$bug->id $bug->title'>" . html::a($this->createLink('bug', 'view', "bugID=$bug->id", '', true), "#$bug->id $bug->title", '', "class='iframe' data-width='80%'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendCases;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($cases as $case)
|
||||
{
|
||||
echo "<li title='#$case->id $case->title'>" . html::a($this->createLink('testcase', 'view', "caseID=$case->id", '', true), "#$case->id $case->title", '', "class='iframe' data-width='80%'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='text-top'>
|
||||
<th class='w-80px'><?php echo $lang->story->legendLinkStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
$linkStories = explode(',', $story->linkStories) ;
|
||||
foreach($linkStories as $linkStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$linkStoryID", '', true), "#$linkStoryID " . $story->extraStories[$linkStoryID], '', "class='iframe' data-width='80%'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendChildStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
$childStories = explode(',', $story->childStories) ;
|
||||
foreach($childStories as $childStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$childStoryID", '', true), "#$childStoryID " . $story->extraStories[$childStoryID], '', "class='iframe' data-width='80%'") . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
.side-col .cell{padding:0px;}
|
||||
.side-col #legendProjectAndTask .list-unstyled{padding:10px; border:1px solid #ddd; border-top:0px; margin:0px;}
|
||||
.tab-pane table {border: 1px solid #ddd; border-top: none;}
|
||||
+12
-12
@@ -1973,7 +1973,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerProject()
|
||||
public function getDataOfTasksPerProject()
|
||||
{
|
||||
$tasks = $this->dao->select('id,project')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -1997,7 +1997,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerModule()
|
||||
public function getDataOfTasksPerModule()
|
||||
{
|
||||
$tasks = $this->dao->select('id,module')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2021,7 +2021,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerAssignedTo()
|
||||
public function getDataOfTasksPerAssignedTo()
|
||||
{
|
||||
$tasks = $this->dao->select('id,assignedTo')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2045,7 +2045,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerType()
|
||||
public function getDataOfTasksPerType()
|
||||
{
|
||||
$tasks = $this->dao->select('id,type')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2068,7 +2068,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerPri()
|
||||
public function getDataOfTasksPerPri()
|
||||
{
|
||||
$tasks = $this->dao->select('id,pri')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2088,7 +2088,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerDeadline()
|
||||
public function getDataOfTasksPerDeadline()
|
||||
{
|
||||
$tasks = $this->dao->select('id,deadline')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2105,7 +2105,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerEstimate()
|
||||
public function getDataOfTasksPerEstimate()
|
||||
{
|
||||
$tasks = $this->dao->select('id,estimate')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2122,7 +2122,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerLeft()
|
||||
public function getDataOfTasksPerLeft()
|
||||
{
|
||||
$tasks = $this->dao->select('id,`left`')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2139,7 +2139,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerConsumed()
|
||||
public function getDataOfTasksPerConsumed()
|
||||
{
|
||||
$tasks = $this->dao->select('id,consumed')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2156,7 +2156,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerFinishedBy()
|
||||
public function getDataOfTasksPerFinishedBy()
|
||||
{
|
||||
$tasks = $this->dao->select('id,finishedBy')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2181,7 +2181,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerClosedReason()
|
||||
public function getDataOfTasksPerClosedReason()
|
||||
{
|
||||
$tasks = $this->dao->select('id,closedReason')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
@@ -2224,7 +2224,7 @@ class taskModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDataOftasksPerStatus()
|
||||
public function getDataOfTasksPerStatus()
|
||||
{
|
||||
$tasks = $this->dao->select('id,status')->from(TABLE_TASK)->alias('t1')
|
||||
->where($this->reportCondition())
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
<td class='w-130px sort-handler'>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-add"><i class="icon icon-plus"></i></button>
|
||||
<button type='button' class='btn btn-link btn-sm btn-icon btn-move'><i class='icon-move'></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
<td class='w-130px sort-handler'>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-add"><i class="icon icon-plus"></i></button>
|
||||
<button type='button' class='btn btn-link btn-sm btn-icon btn-move'><i class='icon-move'></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
@@ -257,7 +257,7 @@
|
||||
<td class='w-130px sort-handler'>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-add"><i class="icon icon-plus"></i></button>
|
||||
<button type='button' class='btn btn-link btn-sm btn-icon btn-move'><i class='icon-move'></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-sm btn-icon btn-delete"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if($task->status == 'wait' or $task->status == 'pause' or $task->status == 'doing')
|
||||
{
|
||||
common::printIcon('task', 'editEstimate', "estimateID=$estimate->id", '', 'list', 'pencil', '', 'showinonlybody', true);
|
||||
common::printIcon('task', 'deleteEstimate', "estimateID=$estimate->id", '', 'list', 'trash', 'hiddenwin', 'showinonlybody');
|
||||
common::printIcon('task', 'deleteEstimate', "estimateID=$estimate->id", '', 'list', 'close', 'hiddenwin', 'showinonlybody');
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
+145
-149
@@ -138,133 +138,162 @@
|
||||
</div>
|
||||
<div class="side-col col-4">
|
||||
<div class="cell">
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->task->legendBasic;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->project;?></th>
|
||||
<td><?php if(!common::printLink('project', 'view', "projectID=$task->project", $project->name)) echo $project->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->module;?></th>
|
||||
<?php
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
if($product)
|
||||
{
|
||||
$moduleTitle .= $product->name . '/';
|
||||
echo $product->name . $lang->arrow;
|
||||
}
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('project', 'task', "projectID=$task->project&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->task->story;?></th>
|
||||
<td>
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendBasic' data-toggle='tab'><?php echo $lang->task->legendBasic;?></a></li>
|
||||
<li><a href='#legendLife' data-toggle='tab'><?php echo $lang->task->legendLife;?></a></li>
|
||||
<?php if(!empty($task->team)) :?>
|
||||
<li><a href='#legendTeam' data-toggle='tab'><?php echo $lang->task->team;?></a></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendBasic'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->project;?></th>
|
||||
<td><?php if(!common::printLink('project', 'view', "projectID=$task->project", $project->name)) echo $project->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->module;?></th>
|
||||
<?php
|
||||
if(!$task->storyTitle) echo $lang->noData;
|
||||
if($task->storyTitle and !common::printLink('story', 'view', "storyID=$task->story", $task->storyTitle, '', "class='iframe' data-width='80%'", true, true)) echo $task->storyTitle;
|
||||
if($task->needConfirm)
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
if(empty($modulePath))
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('task', 'confirmStoryChange', "taskID=$task->id"), $lang->confirm, 'hiddenwin', "class='btn btn-mini btn-info'");
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($task->fromBug):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->fromBug;?></th>
|
||||
<td><?php echo html::a($this->createLink('bug', 'view', "bugID=$task->fromBug", '', true), "#$task->fromBug " . $fromBug->title, '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo empty($task->team) ? $lang->task->assignTo : $lang->task->transferTo;?></th>
|
||||
<td><?php echo $task->assignedTo ? $task->assignedToRealName . $lang->at . $task->assignedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->type;?></th>
|
||||
<td><?php echo $lang->task->typeList[$task->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->status;?></th>
|
||||
<td><span class='status-<?php echo $task->status;?>'><span class="label label-dot"></span> <?php echo zget($lang->task->statusList, $task->status);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo $task->pri == '0' ? $lang->noData : zget($lang->task->priList, $task->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->mailto;?></th>
|
||||
<td>
|
||||
<?php
|
||||
$mailto = explode(',', str_replace(' ', '', $task->mailto));
|
||||
if(empty($mailto))
|
||||
{
|
||||
echo $lang->noData;
|
||||
$moduleTitle .= '/';
|
||||
echo "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($mailto as $account) echo ' ' . zget($users, $account, $account);
|
||||
if($product)
|
||||
{
|
||||
$moduleTitle .= $product->name . '/';
|
||||
echo $product->name . $lang->arrow;
|
||||
}
|
||||
foreach($modulePath as $key => $module)
|
||||
{
|
||||
$moduleTitle .= $module->name;
|
||||
if(!common::printLink('project', 'task', "projectID=$task->project&browseType=byModule¶m=$module->id", $module->name)) echo $module->name;
|
||||
if(isset($modulePath[$key + 1]))
|
||||
{
|
||||
$moduleTitle .= '/';
|
||||
echo $lang->arrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
$printModule = ob_get_contents();
|
||||
ob_end_clean();
|
||||
?>
|
||||
</td>
|
||||
<td title='<?php echo $moduleTitle?>'><?php echo $printModule?></td>
|
||||
</tr>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->task->story;?></th>
|
||||
<td>
|
||||
<?php
|
||||
if(!$task->storyTitle) echo $lang->noData;
|
||||
if($task->storyTitle and !common::printLink('story', 'view', "storyID=$task->story", $task->storyTitle, '', "class='iframe' data-width='80%'", true, true)) echo $task->storyTitle;
|
||||
if($task->needConfirm)
|
||||
{
|
||||
echo "(<span class='warning'>{$lang->story->changed}</span> ";
|
||||
echo html::a($this->createLink('task', 'confirmStoryChange', "taskID=$task->id"), $lang->confirm, 'hiddenwin', "class='btn btn-mini btn-info'");
|
||||
echo ")";
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($task->fromBug):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->fromBug;?></th>
|
||||
<td><?php echo html::a($this->createLink('bug', 'view', "bugID=$task->fromBug", '', true), "#$task->fromBug " . $fromBug->title, '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo empty($task->team) ? $lang->task->assignTo : $lang->task->transferTo;?></th>
|
||||
<td><?php echo $task->assignedTo ? $task->assignedToRealName . $lang->at . $task->assignedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->type;?></th>
|
||||
<td><?php echo $lang->task->typeList[$task->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->status;?></th>
|
||||
<td><span class='status-<?php echo $task->status;?>'><span class="label label-dot"></span> <?php echo zget($lang->task->statusList, $task->status);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo $task->pri == '0' ? $lang->noData : zget($lang->task->priList, $task->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->mailto;?></th>
|
||||
<td>
|
||||
<?php
|
||||
$mailto = explode(',', str_replace(' ', '', $task->mailto));
|
||||
if(empty($mailto))
|
||||
{
|
||||
echo $lang->noData;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($mailto as $account) echo ' ' . zget($users, $account, $account);
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class='tab-pane' id='legendLife'>
|
||||
<table class='table table-data'>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->openedBy;?></th>
|
||||
<td><?php echo $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<?php if(!empty($task->team)) :?>
|
||||
<div class='cell'>
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->task->team;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class='table table-data'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->team?></th>
|
||||
<th class='text-center'><?php echo $lang->task->estimate?></th>
|
||||
<th class='text-center'><?php echo $lang->task->consumed?></th>
|
||||
<th class='text-center'><?php echo $lang->task->left?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<?php foreach($task->team as $member):?>
|
||||
<tr class='text-center'>
|
||||
<td class='text-left'><?php echo zget($users, $member->account)?></td>
|
||||
<td><?php echo $member->estimate?></td>
|
||||
<td><?php echo $member->consumed?></td>
|
||||
<td><?php echo $member->left?></td>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->finishedBy;?></th>
|
||||
<td><?php echo ($task->finishedBy) ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->canceledBy;?></th>
|
||||
<td><?php echo $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->closedBy;?></th>
|
||||
<td><?php echo $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->closedReason;?></th>
|
||||
<td><?php echo $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->lastEdited;?></th>
|
||||
<td><?php echo $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class='tab-pane' id='legendTeam'>
|
||||
<table class='table table-data'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->team?></th>
|
||||
<th class='text-center'><?php echo $lang->task->estimate?></th>
|
||||
<th class='text-center'><?php echo $lang->task->consumed?></th>
|
||||
<th class='text-center'><?php echo $lang->task->left?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<?php foreach($task->team as $member):?>
|
||||
<tr class='text-center'>
|
||||
<td class='text-left'><?php echo zget($users, $member->account)?></td>
|
||||
<td><?php echo $member->estimate?></td>
|
||||
<td><?php echo $member->consumed?></td>
|
||||
<td><?php echo $member->left?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='cell'>
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->task->legendEffort;?></summary>
|
||||
@@ -303,39 +332,6 @@
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class='cell'>
|
||||
<details class="detail" open>
|
||||
<summary class="detail-title"><?php echo $lang->task->legendLife;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class='table table-data'>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->openedBy;?></th>
|
||||
<td><?php echo $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->finishedBy;?></th>
|
||||
<td><?php echo ($task->finishedBy) ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->canceledBy;?></th>
|
||||
<td><?php echo $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->closedBy;?></th>
|
||||
<td><?php echo $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->closedReason;?></th>
|
||||
<td><?php echo $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->noData;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->lastEdited;?></th>
|
||||
<td><?php echo $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->noData;?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add' tabindex='-1'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move' tabindex='-1'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -193,7 +193,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add' tabindex='-1'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move' tabindex='-1'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add' tabindex='-1'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move' tabindex='-1'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add' tabindex='-1'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move' tabindex='-1'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete' tabindex='-1'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
i.icon-help{font-size:10px;}
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
if(common::hasPriv('testsuite', 'delete', $suite))
|
||||
{
|
||||
$deleteURL = $this->createLink('testsuite', 'delete', "suiteID=$suite->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"suiteList\",confirmDelete)", '<i class="icon icon-sm icon-trash"></i>', '', "title='{$lang->testsuite->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"suiteList\",confirmDelete)", '<i class="icon icon-sm icon-close"></i>', '', "title='{$lang->testsuite->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -170,7 +170,7 @@
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-step-add'><i class='icon icon-plus'></i></button>
|
||||
<button type='button' class='btn btn-step-move'><i class='icon icon-move'></i></button>
|
||||
<button type='button' class='btn btn-step-delete'><i class='icon icon-trash'></i></button>
|
||||
<button type='button' class='btn btn-step-delete'><i class='icon icon-close'></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -45,10 +45,10 @@ js::set('flow', $config->global->flow);
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->testcase->bySearch;?></a>
|
||||
<?php
|
||||
if(common::hasPriv('testsuite', 'libView'))
|
||||
{
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'libView', "libID=$libID");
|
||||
echo html::a($link, "<i class='icon icon-list-alt muted'> </i>" . $this->lang->testsuite->view, '', "class='btn btn-link'");
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
@@ -146,7 +146,7 @@ js::set('flow', $config->global->flow);
|
||||
if(common::hasPriv('testcase', 'delete'))
|
||||
{
|
||||
$deleteURL = $this->createLink('testcase', 'delete', "caseID=$case->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"caseList\",confirmDelete)", '<i class="icon icon-trash"></i>', '', "title='{$lang->testcase->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"caseList\",confirmDelete)", '<i class="icon icon-close"></i>', '', "title='{$lang->testcase->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -107,7 +107,7 @@ $status = $this->session->testTaskVersionStatus;
|
||||
if(common::hasPriv('testtask', 'delete', $task))
|
||||
{
|
||||
$deleteURL = $this->createLink('testtask', 'delete', "taskID=$task->id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-common-delete icon-trash"></i>', '', "title='{$lang->testtask->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '<i class="icon-common-delete icon-close"></i>', '', "title='{$lang->testtask->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
if($todo->status == 'done' || $todo->status == 'closed') common::printLink('todo', 'activate', "todoID=$todo->id", "<i class='icon icon-magic'></i>", 'hiddenwin', "title='{$lang->todo->activate}' class='btn showinonlybody'");
|
||||
if($todo->status == 'done') common::printLink('todo', 'close', "todoID=$todo->id", "<i class='icon icon-off'></i>", 'hiddenwin', "title='{$lang->todo->close}' class='btn showinonlybody'");
|
||||
common::printLink('todo', 'edit', "todoID=$todo->id", "<i class='icon icon-edit'></i>", '', "title='{$lang->todo->edit}' class='btn showinonlybody'");
|
||||
common::printLink('todo', 'delete', "todoID=$todo->id", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->todo->delete}' class='btn showinonlybody'");
|
||||
common::printLink('todo', 'delete', "todoID=$todo->id", "<i class='icon icon-close'></i>", 'hiddenwin', "title='{$lang->todo->delete}' class='btn showinonlybody'");
|
||||
|
||||
echo html::a('#commentModal', '<i class="icon-chat-line"></i>', '', "title='{$lang->comment}' data-toggle='modal' class='btn'");
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ function syncModule(rootID, type)
|
||||
if(modules.length == 0) return false;
|
||||
|
||||
$('.helplink').addClass('hidden');
|
||||
var $inputgroup = $('<div></div>').append($('.col-actions .icon-trash:first').closest('.table-row').clone()).html();
|
||||
var $inputgroup = $('<div></div>').append($('.col-actions .icon-close:first').closest('.table-row').clone()).html();
|
||||
|
||||
$.each(modules, function(key, module)
|
||||
{
|
||||
@@ -19,7 +19,7 @@ function syncModule(rootID, type)
|
||||
if(moduleName == module.name) modules[key] = null;
|
||||
if(!moduleName) $(this).closest('#sonModule > .table-row').not('.copy').remove();
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
$.each(modules, function(key, module)
|
||||
{
|
||||
@@ -54,9 +54,9 @@ function syncProductOrProject(obj, type)
|
||||
$('.helplink').addClass('hidden');
|
||||
$('#' + type + 'Module').empty();
|
||||
$.each(modules, function(key, value)
|
||||
{
|
||||
{
|
||||
$('#' + type + 'Module').append('<option value=' + key + '>' + value + '</option')
|
||||
});
|
||||
});
|
||||
$('#' + type + 'Module').trigger("chosen:updated");
|
||||
})
|
||||
$('#copyModule').attr('onclick', null);
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<div class="table-col col-shorts"><?php echo html::input("shorts[]", '', "class='form-control' placeholder='{$lang->tree->short}' autocomplete='off'");?></div>
|
||||
<div class="table-col col-actions">
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php endfor;?>
|
||||
@@ -130,7 +130,7 @@
|
||||
<div class="table-col col-shorts"><?php echo html::input("shorts[]", '', "class='form-control' placeholder='{$lang->tree->short}' autocomplete='off'");?></div>
|
||||
<div class="table-col col-actions">
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -147,7 +147,7 @@
|
||||
<?php echo html::hidden('maxOrder', $maxOrder);?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
@@ -163,7 +163,7 @@ $(function()
|
||||
{
|
||||
initialState: 'preserve',
|
||||
data: data,
|
||||
sortable:
|
||||
sortable:
|
||||
{
|
||||
lazy: true,
|
||||
nested: true,
|
||||
@@ -269,8 +269,8 @@ $(function()
|
||||
if(window.config.viewType == 'line') $('#modulemenu > .nav > li > a[href*=product][href*=all]').parent('li[data-id=all]').addClass('active');
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
if(strpos($viewType, 'doc') !== false)
|
||||
<?php
|
||||
if(strpos($viewType, 'doc') !== false)
|
||||
{
|
||||
include '../../doc/view/footer.html.php';
|
||||
}
|
||||
|
||||
@@ -79,14 +79,14 @@
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
<?php endforeach;?>
|
||||
<?php for($i = 0; $i < TREE::NEW_CHILD_COUNT ; $i ++):?>
|
||||
<div class="table-row row-module row-module-new">
|
||||
<div class='table-col col-module'><?php echo html::input("modules[]", '', "class='form-control' autocomplete='off' placeholder='{$lang->tree->name}'")?></div>
|
||||
<div class='table-col col-shorts'><?php echo html::input("shorts[]", '', "class='form-control' autocomplete='off' placeholder='{$lang->tree->short}'")?></div>
|
||||
<div class="table-col col-actions">
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</div>
|
||||
<?php echo html::hidden('branch[]', empty($module) ? 0 : $module->branch);?>
|
||||
</div>
|
||||
@@ -98,7 +98,7 @@
|
||||
<div class="table-col col-shorts"><?php echo html::input("shorts[]", '', "class='form-control' autocomplete='off' placeholder='{$lang->tree->short}'");?></div>
|
||||
<div class="table-col col-actions">
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-trash"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</div>
|
||||
<?php echo html::hidden('branch[]', empty($module) ? 0 : (int)$module->branch);?>
|
||||
</div>
|
||||
@@ -108,12 +108,12 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan='2' class="form-actions">
|
||||
<?php
|
||||
<?php
|
||||
echo html::submitButton('', '', 'btn btn-primary btn-wide');
|
||||
echo $this->session->taskList ? html::linkButton($this->lang->goback, $this->session->taskList, '', '', 'btn btn-wide') : html::backButton('', '', 'btn btn-wide');
|
||||
echo html::hidden('parentModuleID', $currentModuleID);
|
||||
echo html::hidden('maxOrder', $maxOrder);
|
||||
?>
|
||||
?>
|
||||
<input type='hidden' value='<?php echo $currentModuleID;?>' name='parentModuleID' />
|
||||
</td>
|
||||
</tr>
|
||||
@@ -147,7 +147,7 @@ $(function()
|
||||
if(item.nodeType) $li.addClass('tree-item-' + item.nodeType);
|
||||
return true;
|
||||
},
|
||||
actions:
|
||||
actions:
|
||||
{
|
||||
sort:
|
||||
{
|
||||
|
||||
@@ -1473,4 +1473,24 @@ class userModel extends model
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Judge an action is clickable or not.
|
||||
*
|
||||
* @param object $user
|
||||
* @param string $action
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function isClickable($user, $action)
|
||||
{
|
||||
global $config;
|
||||
$action = strtolower($action);
|
||||
|
||||
if($action == 'unbind' and empty($user->ranzhi)) return false;
|
||||
if($action == 'unlock' and (strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) >= $config->user->lockMinutes * 60) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
if(common::hasPriv('webhook', 'delete'))
|
||||
{
|
||||
$deleteURL = $this->createLink('webhook', 'delete', "webhookID=$id&confirm=yes");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"webhookList\",confirmDelete)", '<i class="icon-trash"></i>', '', "title='{$lang->webhook->delete}' class='btn'");
|
||||
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"webhookList\",confirmDelete)", '<i class="icon-close"></i>', '', "title='{$lang->webhook->delete}' class='btn'");
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
Reference in New Issue
Block a user