This commit is contained in:
Catouse
2018-09-19 10:26:36 +08:00
56 changed files with 777 additions and 766 deletions
+2 -2
View File
@@ -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>
+2
View File
@@ -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;}
+2 -2
View File
@@ -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
View File
@@ -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&param=$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&param=$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>
+3 -3
View File
@@ -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';
+9 -8
View File
@@ -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;
+3 -3
View File
@@ -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';
+6 -29
View File
@@ -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>
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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;?>
+1 -1
View File
@@ -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;?>
+1 -1
View File
@@ -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;?>
+1 -1
View File
@@ -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;?>
+1 -1
View File
@@ -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;?>
+1 -1
View File
@@ -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>
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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]);?>
+3 -3
View File
@@ -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>
+1 -1
View File
@@ -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'>
+7 -6
View File
@@ -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');
}
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+4 -4
View File
@@ -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>
+4 -4
View File
@@ -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>
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+2
View File
@@ -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;}
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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 = '该需求所属范围';
+6 -6
View File
@@ -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
View File
@@ -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&param=$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> &nbsp;'; }?></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&param=$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> &nbsp;'; }?></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>
+3
View File
@@ -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
View File
@@ -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())
+1 -1
View File
@@ -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>
+2 -2
View File
@@ -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>
+1 -1
View File
@@ -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
View File
@@ -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&param=$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&param=$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>
+2 -2
View File
@@ -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>
+2 -2
View File
@@ -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>
+1
View File
@@ -0,0 +1 @@
i.icon-help{font-size:10px;}
+1 -1
View File
@@ -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>
+2 -2
View File
@@ -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>
+3 -3
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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'");
+4 -4
View File
@@ -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);
+6 -6
View File
@@ -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';
}
+6 -6
View File
@@ -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:
{
+20
View File
@@ -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;
}
}
+1 -1
View File
@@ -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>