Merge branch 'master' of http://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -178,7 +178,14 @@ class productIssueEntry extends entry
|
||||
{
|
||||
$accountsList[] = $action->actor;
|
||||
ob_start();
|
||||
$this->action->printAction($action);
|
||||
if(method_exists($this->action, "printActionAPI"))
|
||||
{
|
||||
$this->action->printActionAPI($action);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->action->printAction($action);
|
||||
}
|
||||
$action->title = ob_get_contents();
|
||||
ob_clean();
|
||||
|
||||
@@ -195,7 +202,7 @@ class productIssueEntry extends entry
|
||||
if(!empty($action->comment))
|
||||
{
|
||||
$comment = strip_tags($action->comment) == $action->comment ? nl2br($action->comment) : $action->comment;
|
||||
$action->body_html = "<div class='comment-content'>{$comment}</div>";
|
||||
$action->body_html = "{$comment}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1690,7 +1690,7 @@ class block extends control
|
||||
$params = $this->get->param;
|
||||
$params = json_decode(base64_decode($params));
|
||||
$count = array();
|
||||
$objectList = array('todo' => 'todos', 'task' => 'tasks', 'bug' => 'bus', 'story' => 'stories');
|
||||
$objectList = array('todo' => 'todos', 'task' => 'tasks', 'bug' => 'bugs', 'story' => 'stories');
|
||||
$objectCountList = array('todo' => 'todoCount', 'task' => 'taskCount', 'bug' => 'bugCount', 'story' => 'storyCount');
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
@@ -1738,7 +1738,8 @@ class block extends control
|
||||
$this->app->loadLang('execution');
|
||||
}
|
||||
|
||||
if($objectType == 'risk') $this->app->loadLang('risk');
|
||||
if($objectType == 'bug') $this->app->loadLang('bug');
|
||||
if($objectType == 'risk') $this->app->loadLang('risk');
|
||||
if($objectType == 'issue') $this->app->loadLang('issue');
|
||||
|
||||
$count[$objectType] = count($objects);
|
||||
|
||||
@@ -62,7 +62,7 @@ html[lang="en"] .product-info .type-info {color: #A6AAB8; text-align: center; po
|
||||
|
||||
.block-statistic .data {width: 40%; text-align: left; padding: 10px 0px; font-size: 14px; font-weight: 700;}
|
||||
.block-statistic .dataTitle {width: 60%; text-align: right; padding: 10px 0px; font-size: 14px;}
|
||||
.block-statistic .executionName {padding: 2px 10px; font-size: 14px; text-overflow: ellipsis; overflow: hidden;}
|
||||
.block-statistic .executionName {padding: 2px 10px; font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
.block-statistic .lastIteration {padding-top: 6px;}
|
||||
.block-statistic .progress-text-left {margin-right: 90px}
|
||||
.block-statistic .progress-text-left .progress-text {padding-top: 2px; font-size: 14px; padding-right:5px; left: -45px;}
|
||||
@@ -123,7 +123,7 @@ $(function()
|
||||
<?php $selected = key($projects);?>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li <?php if($project->id == $selected) echo "class='active' id='activeProject'";?> projectID='<?php echo $project->id;?>'>
|
||||
<a href="###" data-target="#tab3Content<?php echo $project->id;?>" data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<a href="###" title="<?php echo $project->name?>" data-target="#tab3Content<?php echo $project->id;?>" data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<?php echo html::a(helper::createLink('project', 'index', "projectID=$project->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view' title={$lang->project->index}");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
@@ -186,7 +186,7 @@ $(function()
|
||||
<div class="table-row project-info">
|
||||
<div class="col-2 text-right"><h4><?php echo $lang->block->last;?></h4></div>
|
||||
<div class="table-row lastIteration">
|
||||
<div class='col-5 text-center executionName'><?php echo html::a($this->createLink('execution', 'task', "executionID={$project->executions[0]->id}"), $project->executions[0]->name);?></div>
|
||||
<div class='col-5 text-center executionName'><?php echo html::a($this->createLink('execution', 'task', "executionID={$project->executions[0]->id}"), $project->executions[0]->name, '', "title='{$project->executions[0]->name}'");?></div>
|
||||
<div class='col-7'>
|
||||
<div class='progress progress-text-left'>
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $project->executions[0]->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->executions[0]->hours->progress;?>%">
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr class='text-center'>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allBugs):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr class='text-center'>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allStories):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -1363,7 +1363,7 @@ EOD;
|
||||
|
||||
if(empty($executionPairs)) return;
|
||||
|
||||
$html = "<li class='divider'></li><li class='dropdown dropdown-hover'><a href='javascript:;' data-toggle='dropdown'>{$lang->more}</a>";
|
||||
$html = "<li class='divider'></li><li class='dropdown dropdown-hover'><a href='javascript:;' data-toggle='dropdown'>{$lang->more}<span class='caret'></span></a>";
|
||||
$html .= "<ul class='dropdown-menu'>";
|
||||
|
||||
$showCount = 0;
|
||||
|
||||
@@ -6,11 +6,11 @@ js::import($jsRoot . 'jquery/tablesorter/metadata.js');
|
||||
<style>
|
||||
.tablesorter-header-inner {cursor: pointer;}
|
||||
.tablesorter-header-inner:hover {color: #000;font-weight:bold;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.tablesorter-headerUnSorted .tablesorter-header-inner:after {font-family: ZentaoIcon; font-weight: normal; content: "\f0dc"; font-size: 14px; color: #838a9c}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner{color: #000;font-weight:bold;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{font-family: ZentaoIcon; font-weight: normal; content: "\f0d8"; color: #000;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner{color: #000;font-weight:bold;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after{font-family: ZentaoIcon; font-weight: normal; content: "\f0d7"; color: #000;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header .tablesorter-header-inner:after {font-family: ZentaoIcon; font-weight: normal; content: "\f0dc"; font-size: 14px; color: #838a9c}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.tablesorter-headerAsc .tablesorter-header-inner{color: #000;font-weight:bold;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.tablesorter-headerAsc .tablesorter-header-inner:after{content: "\f0d8"; color: #000;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.tablesorter-headerDesc .tablesorter-header-inner{color: #000;font-weight:bold;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.tablesorter-headerDesc .tablesorter-header-inner:after{content: "\f0d7"; color: #000;}
|
||||
table.tablesorter tr.tablesorter-headerRow .header.sorter-false .tablesorter-header-inner:after{content:"";}
|
||||
table.tablesorter.table-borderless > thead > tr > th {border-bottom: 1px solid #e5e5e5;}
|
||||
</style>
|
||||
@@ -22,7 +22,9 @@ function sortTable(selector, options)
|
||||
{
|
||||
saveSort: true,
|
||||
widgets: ['zebra', 'saveSort'],
|
||||
widgetZebra: {css: ['odd', 'even'] }
|
||||
widgetZebra: {css: ['odd', 'even'] },
|
||||
ignoreChildRow: true,
|
||||
cssHeader: 'header'
|
||||
}, $table.data(), options)).on('mouseenter', 'tbody tr', function()
|
||||
{
|
||||
$(this).addClass('hoover');
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#kanban tbody > tr > td {background-color: #F5F5F5;}
|
||||
#kanban tbody > tr:not(:last-child) {border-bottom: 5px solid #fff !important;}
|
||||
|
||||
.s-doing .table-row .table-col:last-child, .c-progress {width: 30px;}
|
||||
.table-row .table-col:first-child {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
|
||||
.s-doing .table-row .table-col:last-child, .c-progress {width: 30px; padding-left: 3px; padding-top: 1px;}
|
||||
.table-row .table-col:first-child, .board-project {overflow: hidden; white-space: nowrap;}
|
||||
|
||||
.table-grouped > tbody > tr,
|
||||
.table-grouped > tbody > tr:hover {background: #fff !important;}
|
||||
|
||||
@@ -430,4 +430,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -438,4 +438,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -430,4 +430,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -431,4 +431,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -439,4 +439,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -438,4 +438,4 @@ $lang->execution->statusColorList['doing'] = '#0BD986';
|
||||
$lang->execution->statusColorList['suspended'] = '#fdc137';
|
||||
$lang->execution->statusColorList['closed'] = '#838A9D';
|
||||
|
||||
$lang->execution->boardColorList = '#F1F3F5,#ECF4FD,#F6EDF7,#FFEDED,#FFF7EB,#FFF7E1';
|
||||
$lang->execution->boardColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
#navTabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover {border: none;}
|
||||
|
||||
#tabContent {margin-top: 10px; z-index: 900;}
|
||||
#tabContent ul {list-style: none; margin: 0}
|
||||
#tabContent .tab-pane>ul {padding-left: 7px;}
|
||||
#tabContent .tab-pane>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
#tabContent .tab-pane>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
#tabContent li a i.icon {font-size: 15px !important;}
|
||||
#tabContent li a i.icon:before {min-width: 16px !important;}
|
||||
#tabContent li .label {position: unset; margin-bottom: 0;}
|
||||
#tabContent li>a, #tabContent li>div>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
#tabContent li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
#tabContent .tree li>.list-toggle {line-height: 24px;}
|
||||
#tabContent .tree li.has-list.open:before {content: unset;}
|
||||
.executionTree ul {list-style: none; margin: 0}
|
||||
.executionTree .executions>ul {padding-left: 7px;}
|
||||
.executionTree .executions>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
.executionTree .executions>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
.executionTree li a i.icon {font-size: 15px !important;}
|
||||
.executionTree li a i.icon:before {min-width: 16px !important;}
|
||||
.executionTree li .label {position: unset; margin-bottom: 0;}
|
||||
.executionTree li>a, div.hide-in-search>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
.executionTree li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
.executionTree .tree li>.list-toggle {line-height: 24px;}
|
||||
.executionTree .tree li.has-list.open:before {content: unset;}
|
||||
|
||||
#swapper li>div.hide-in-search>a:focus, #swapper li>div.hide-in-search>a:hover {color: #838a9d; cursor: default;}
|
||||
a.executionName:focus, a.executionName:hover {background: #0c64eb; color: #fff !important;}
|
||||
@@ -29,12 +29,12 @@ a.executionName:focus, a.executionName:hover {background: #0c64eb; color: #fff !
|
||||
#swapper li > a {padding-top: 4px; padding-bottom: 4px;}
|
||||
#swapper li {padding-top: 0; padding-bottom: 0;}
|
||||
#swapper .tree li>.list-toggle {top: -1px;}
|
||||
|
||||
.col-right {padding-top: 30px;}
|
||||
</style>
|
||||
<?php
|
||||
$executionCounts = array();
|
||||
$executionNames = array();
|
||||
$preFix = '';
|
||||
$closedExecutionsHtml = '';
|
||||
$tabActive = '';
|
||||
$myExecutions = 0;
|
||||
$others = 0;
|
||||
@@ -44,19 +44,21 @@ foreach($executions as $projectID => $projectExecutions)
|
||||
{
|
||||
$executionCounts[$projectID]['myExecution'] = 0;
|
||||
$executionCounts[$projectID]['others'] = 0;
|
||||
$executionCounts[$projectID]['closed'] = 0;
|
||||
|
||||
foreach($projectExecutions as $execution)
|
||||
{
|
||||
if($execution->status != 'done' and $execution->status != 'closed' and ($execution->PM == $this->app->user->account or isset($execution->teams[$this->app->user->account]))) $executionCounts[$projectID]['myExecution'] ++;
|
||||
if($execution->status != 'done' and $execution->status != 'closed' and $execution->PM != $this->app->user->account and !isset($execution->teams[$this->app->user->account])) $executionCounts[$projectID]['others'] ++;
|
||||
if($execution->status == 'done' or $execution->status == 'closed') $dones ++;
|
||||
if($execution->status == 'done' or $execution->status == 'closed') $executionCounts[$projectID]['closed'] ++;
|
||||
$executionNames[] = $execution->name;
|
||||
}
|
||||
}
|
||||
$executionsPinYin = common::convert2Pinyin($executionNames);
|
||||
|
||||
$myExecutionsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$normalExecutionsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$myExecutionsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProject">';
|
||||
$normalExecutionsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProject">';
|
||||
$closedExecutionsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProject">';
|
||||
|
||||
foreach($executions as $projectID => $projectExecutions)
|
||||
{
|
||||
@@ -64,10 +66,10 @@ foreach($executions as $projectID => $projectExecutions)
|
||||
if($projectID and $config->systemMode == 'new')
|
||||
{
|
||||
$projectName = zget($projects, $projectID);
|
||||
$preFix = $projectName . ' / ';
|
||||
|
||||
if($executionCounts[$projectID]['myExecution']) $myExecutionsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $projectName . '">' . $projectName . '</a> <label class="label">' . $lang->project->common . '</label></div><ul>';
|
||||
if($executionCounts[$projectID]['others']) $normalExecutionsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $projectName . '">' . $projectName . '</a> <label class="label">' . $lang->project->common . '</label></div><ul>';
|
||||
if($executionCounts[$projectID]['closed']) $closedExecutionsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $projectName . '">' . $projectName . '</a> <label class="label">' . $lang->project->common . '</label></div><ul>';
|
||||
}
|
||||
|
||||
foreach($projectExecutions as $index => $execution)
|
||||
@@ -91,7 +93,7 @@ foreach($executions as $projectID => $projectExecutions)
|
||||
}
|
||||
else if($execution->status == 'done' or $execution->status == 'closed')
|
||||
{
|
||||
$closedExecutionsHtml .= html::a(sprintf($link, $execution->id), $preFix . $execution->name, '', "class='$selected' title='" . $preFix . $execution->name . "' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->tab}'");
|
||||
$closedExecutionsHtml .= '<li>' . html::a(sprintf($link, $execution->id), $execution->name, '', "class='$selected' title='$execution->name' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->tab}'") . '</li>';
|
||||
|
||||
if($selected == 'selected') $tabActive = 'closed';
|
||||
}
|
||||
@@ -101,11 +103,13 @@ foreach($executions as $projectID => $projectExecutions)
|
||||
{
|
||||
if($executionCounts[$projectID]['myExecution']) $myExecutionsHtml .= '</ul></li>';
|
||||
if($executionCounts[$projectID]['others']) $normalExecutionsHtml .= '</ul></li>';
|
||||
if($executionCounts[$projectID]['closed']) $closedExecutionsHtml .= '</ul></li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$myExecutionsHtml .= '</ul>';
|
||||
$normalExecutionsHtml .= '</ul>';
|
||||
$closedExecutionsHtml .= '</ul>';
|
||||
?>
|
||||
<div class="table-row">
|
||||
<div class="table-col col-left">
|
||||
@@ -117,11 +121,11 @@ $normalExecutionsHtml .= '</ul>';
|
||||
<li class="<?php if($tabActive == 'other') echo 'active';?>"><?php echo html::a('#other', $lang->project->other, '', "data-toggle='tab' class='not-list-item not-clear-menu'")?><span class="label label-light label-badge"><?php echo $others;?></span><li>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
<div class="tab-content" id="tabContent">
|
||||
<div class="tab-pane <?php if($tabActive == 'myExecution') echo 'active';?>" id="myExecution">
|
||||
<div class="tab-content executionTree" id="tabContent">
|
||||
<div class="tab-pane executions <?php if($tabActive == 'myExecution') echo 'active';?>" id="myExecution">
|
||||
<?php echo $myExecutionsHtml;?>
|
||||
</div>
|
||||
<div class="tab-pane <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<div class="tab-pane executions <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<?php echo $normalExecutionsHtml;?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -130,8 +134,8 @@ $normalExecutionsHtml .= '</ul>';
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->execution->doneExecutions;?><i class='icon icon-angle-right'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-col col-right">
|
||||
<div class='list-group'><?php echo $closedExecutionsHtml;?></div>
|
||||
<div class="table-col col-right executionTree">
|
||||
<div class='list-group executions'><?php echo $closedExecutionsHtml;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>scrollToSelected();</script>
|
||||
@@ -147,7 +151,7 @@ $(function()
|
||||
$(this).parent().siblings('li').find('span').hide();
|
||||
})
|
||||
|
||||
$('#tabContent [data-ride="tree"]').tree('expand');
|
||||
$('#swapper [data-ride="tree"]').tree('expand');
|
||||
|
||||
$('#swapper #dropMenu .search-box').on('onSearchChange', function(event, value)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<table class="table no-margin table-grouped text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style='width: 5px; padding: 0px; border-right: unset !important'></th>
|
||||
<th><?php echo $lang->execution->doingProject . ' (' . $projectCount . ')';?></th>
|
||||
<?php foreach($lang->execution->kanbanColType as $status => $colName):?>
|
||||
<th><?php echo $colName . ($status != 'closed' ? ' (' . $statusCount[$status] . ')' : '');?></th>
|
||||
@@ -30,9 +31,10 @@
|
||||
<?php $rowIndex = 0;?>
|
||||
<?php foreach($kanbanGroup as $projectID => $executionList):?>
|
||||
<tr>
|
||||
<td style="background: <?php echo $lang->execution->boardColorList[$rowIndex];?>;"></td>
|
||||
<td class='board-project'>
|
||||
<div data-id='<?php echo $projectID;?>'>
|
||||
<div class='text-center text-ellipsis'>
|
||||
<div class='text-center'>
|
||||
<?php $projectTitle = empty($projectID) ? $lang->execution->myExecutions : zget($projects, $projectID);?>
|
||||
<span class='group-title' title='<?php echo $projectTitle;?>'><?php echo $projectTitle;?></span>
|
||||
</div>
|
||||
@@ -81,6 +83,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php $rowIndex++; ?>
|
||||
<?php if($rowIndex == 9) $rowIndex = 0;?>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<tr>
|
||||
<th class='c-id'>
|
||||
<?php if($allStories):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
#navTabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover {border: none;}
|
||||
|
||||
#tabContent {margin-top: 10px; z-index: 900;}
|
||||
#tabContent ul {list-style: none; margin: 0}
|
||||
#tabContent .tab-pane>ul {padding-left: 7px;}
|
||||
#tabContent .tab-pane>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
#tabContent .tab-pane>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
#tabContent li a i.icon {font-size: 15px !important;}
|
||||
#tabContent li a i.icon:before {min-width: 16px !important;}
|
||||
#tabContent li .label {position: unset; margin-bottom: 0;}
|
||||
#tabContent li>a, #tabContent li>div>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
#tabContent li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
#tabContent .tree li>.list-toggle {line-height: 24px;}
|
||||
#tabContent .tree li.has-list.open:before {content: unset;}
|
||||
.productTree ul {list-style: none; margin: 0}
|
||||
.productTree .products>ul {padding-left: 7px;}
|
||||
.productTree .products>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
.productTree .products>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
.productTree li a i.icon {font-size: 15px !important;}
|
||||
.productTree li a i.icon:before {min-width: 16px !important;}
|
||||
.productTree li .label {position: unset; margin-bottom: 0;}
|
||||
.productTree li>a, div.hide-in-search>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
.productTree li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
.productTree .tree li>.list-toggle {line-height: 24px;}
|
||||
.productTree .tree li.has-list.open:before {content: unset;}
|
||||
|
||||
#swapper li>div.hide-in-search>a:focus, #swapper li>div.hide-in-search>a:hover {color: #838a9d; cursor: default;}
|
||||
a.productName:focus, a.productName:hover {background: #0c64eb; color: #fff !important;}
|
||||
@@ -30,12 +30,12 @@ a.productName:focus, a.productName:hover {background: #0c64eb; color: #fff !impo
|
||||
#swapper li > a {padding-top: 4px; padding-bottom: 4px;}
|
||||
#swapper li {padding-top: 0; padding-bottom: 0;}
|
||||
#swapper .tree li>.list-toggle {top: -1px;}
|
||||
|
||||
.col-right {padding-top: 30px;}
|
||||
</style>
|
||||
<?php
|
||||
$productCounts = array();
|
||||
$productNames = array();
|
||||
$preFix = '';
|
||||
$closedProductsHtml = '';
|
||||
$tabActive = '';
|
||||
$myProducts = 0;
|
||||
$others = 0;
|
||||
@@ -43,15 +43,15 @@ $closeds = 0;
|
||||
|
||||
foreach($products as $programID => $programProducts)
|
||||
{
|
||||
|
||||
$productCounts[$programID]['myProduct'] = 0;
|
||||
$productCounts[$programID]['others'] = 0;
|
||||
$productCounts[$programID]['closed'] = 0;
|
||||
|
||||
foreach($programProducts as $product)
|
||||
{
|
||||
if($product->status == 'normal' and $product->PO == $this->app->user->account) $productCounts[$programID]['myProduct'] ++;
|
||||
if($product->status == 'normal' and !($product->PO == $this->app->user->account)) $productCounts[$programID]['others'] ++;
|
||||
if($product->status == 'closed') $closeds ++;
|
||||
if($product->status == 'closed') $productCounts[$programID]['closed'] ++;
|
||||
$productNames[] = $product->name;
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,7 @@ $productsPinYin = common::convert2Pinyin($productNames);
|
||||
|
||||
$myProductsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$normalProductsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$closedProductsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
|
||||
foreach($products as $programID => $programProducts)
|
||||
{
|
||||
@@ -66,10 +67,10 @@ foreach($products as $programID => $programProducts)
|
||||
if($programID and $config->systemMode == 'new')
|
||||
{
|
||||
$programName = zget($programs, $programID);
|
||||
$preFix = $programName . ' / ';
|
||||
|
||||
if($productCounts[$programID]['myProduct']) $myProductsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
if($productCounts[$programID]['others']) $normalProductsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
if($productCounts[$programID]['closed']) $closedProductsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
}
|
||||
|
||||
foreach($programProducts as $index => $product)
|
||||
@@ -96,7 +97,7 @@ foreach($products as $programID => $programProducts)
|
||||
}
|
||||
else if($product->status == 'closed')
|
||||
{
|
||||
$closedProductsHtml .= html::a($linkHtml, $preFix . $productName, '', "class='$selected' title='" . $preFix . $productName . "' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-app='$app->tab'");
|
||||
$closedProductsHtml .= '<li>' . html::a($linkHtml, $productName, '', "class='$selected' title='$productName' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-app='$app->tab'") . '</li>';
|
||||
|
||||
if($selected == 'selected') $tabActive = 'closed';
|
||||
}
|
||||
@@ -106,11 +107,13 @@ foreach($products as $programID => $programProducts)
|
||||
{
|
||||
if($productCounts[$programID]['myProduct']) $myProductsHtml .= '</ul></li>';
|
||||
if($productCounts[$programID]['others']) $normalProductsHtml .= '</ul></li>';
|
||||
if($productCounts[$programID]['closed']) $closedProductsHtml .= '</ul></li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$myProductsHtml .= '</ul>';
|
||||
$normalProductsHtml .= '</ul>';
|
||||
$closedProductsHtml .= '</ul>';
|
||||
?>
|
||||
<div class="table-row">
|
||||
<div class="table-col col-left">
|
||||
@@ -122,11 +125,11 @@ $normalProductsHtml .= '</ul>';
|
||||
<li class="<?php if($tabActive == 'other') echo 'active';?>"><?php echo html::a('#other', $lang->product->other, '', "data-toggle='tab' class='not-list-item not-clear-menu'")?><span class="label label-light label-badge"><?php echo $others;?></span><li>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
<div class="tab-content" id="tabContent">
|
||||
<div class="tab-pane <?php if($tabActive == 'myProduct') echo 'active';?>" id="myProduct">
|
||||
<div class="tab-content productTree" id="tabContent">
|
||||
<div class="tab-pane products <?php if($tabActive == 'myProduct') echo 'active';?>" id="myProduct">
|
||||
<?php echo $myProductsHtml;?>
|
||||
</div>
|
||||
<div class="tab-pane <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<div class="tab-pane products <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<?php echo $normalProductsHtml;?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -137,8 +140,8 @@ $normalProductsHtml .= '</ul>';
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->product->closed?><i class='icon icon-angle-right'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-col col-right">
|
||||
<div class='list-group'><?php echo $closedProductsHtml;?></div>
|
||||
<div class="table-col col-right productTree">
|
||||
<div class='list-group products'><?php echo $closedProductsHtml;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>scrollToSelected();</script>
|
||||
@@ -154,7 +157,7 @@ $(function()
|
||||
$(this).parent().siblings('li').find('span').hide();
|
||||
})
|
||||
|
||||
$('#tabContent [data-ride="tree"]').tree('expand');
|
||||
$('#swapper [data-ride="tree"]').tree('expand');
|
||||
|
||||
$('#swapper #dropMenu .search-box').on('onSearchChange', function(event, value)
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr class='text-center'>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allBugs):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allStories):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
th.c-budget {text-align: right;}
|
||||
td.c-actions {overflow: visible;}
|
||||
td.c-PM{white-space: nowrap;overflow: hidden;}
|
||||
.c-actions .btn {overflow: visible;}
|
||||
#programBox {float: left; margin-right: 10px; width: 170px !important;}
|
||||
#switchButton {background: #fff !important;}
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
.board-doing .board-doing-execution:not(:last-child) {border-bottom: 2px solid #fff;}
|
||||
|
||||
.board-doing-project .table-row .table-col:last-child,
|
||||
.board-doing-execution .table-row .table-col:last-child, .c-progress {width: 30px; padding-top: 2px}
|
||||
.table-row .table-col:first-child {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
|
||||
.board-doing-execution .table-row .table-col:last-child, .c-progress {width: 30px; padding-top: 2px; padding-left: 3px;}
|
||||
.table-row .table-col:first-child, .board-project .board-item {overflow: hidden; white-space: nowrap;}
|
||||
|
||||
table th, td {border: 2px solid #fff !important;}
|
||||
|
||||
|
||||
@@ -1469,10 +1469,11 @@ class projectModel extends model
|
||||
echo '</div>';
|
||||
break;
|
||||
case 'PM':
|
||||
$user = $this->loadModel('user')->getByID($project->PM, 'account');
|
||||
$userID = !empty($user) ? $user->id : '';
|
||||
$PMLink = helper::createLink('user', 'profile', "userID=$userID", '', true);
|
||||
echo empty($project->PM) ? '' : html::a($PMLink, zget($users, $project->PM), '', "data-toggle='modal' data-type='iframe' data-width='600'");
|
||||
$user = $this->loadModel('user')->getByID($project->PM, 'account');
|
||||
$userID = !empty($user) ? $user->id : '';
|
||||
$PMLink = helper::createLink('user', 'profile', "userID=$userID", '', true);
|
||||
$userName = zget($users, $project->PM);
|
||||
echo empty($project->PM) ? '' : html::a($PMLink, $userName, '', "title='{$userName}' data-toggle='modal' data-type='iframe' data-width='600'");
|
||||
break;
|
||||
case 'begin':
|
||||
echo $project->begin;
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
#navTabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover {border: none;}
|
||||
|
||||
#tabContent {margin-top: 10px; z-index: 900;}
|
||||
#tabContent ul {list-style: none; margin: 0}
|
||||
#tabContent .tab-pane>ul {padding-left: 7px;}
|
||||
#tabContent .tab-pane>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
#tabContent .tab-pane>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
#tabContent li a i.icon {font-size: 15px !important;}
|
||||
#tabContent li a i.icon:before {min-width: 16px !important;}
|
||||
#tabContent li .label {position: unset; margin-bottom: 0;}
|
||||
#tabContent li>a, #tabContent li>div>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
#tabContent li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
#tabContent .tree li>.list-toggle {line-height: 24px;}
|
||||
#tabContent .tree li.has-list.open:before {content: unset;}
|
||||
.projectTree ul {list-style: none; margin: 0}
|
||||
.projectTree .projects>ul {padding-left: 7px;}
|
||||
.projectTree .projects>ul>li>div {display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center;}
|
||||
.projectTree .projects>ul>li label {background: rgba(255,255,255,0.5); line-height: unset; color: #838a9d; border: 1px solid #d8d8d8; border-radius: 2px; padding: 1px 4px;}
|
||||
.projectTree li a i.icon {font-size: 15px !important;}
|
||||
.projectTree li a i.icon:before {min-width: 16px !important;}
|
||||
.projectTree li .label {position: unset; margin-bottom: 0;}
|
||||
.projectTree li>a, div.hide-in-search>a {display: block; padding: 2px 10px 2px 5px; overflow: hidden; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; border-radius: 4px;}
|
||||
.projectTree li>a.selected {color: #e9f2fb; background-color: #0c64eb;}
|
||||
.projectTree .tree li>.list-toggle {line-height: 24px;}
|
||||
.projectTree .tree li.has-list.open:before {content: unset;}
|
||||
|
||||
#swapper li>div.hide-in-search>a:focus, #swapper li>div.hide-in-search>a:hover {color: #838a9d; cursor: default;}
|
||||
a.projectName:focus, a.projectName:hover {background: #0c64eb; color: #fff !important;}
|
||||
@@ -29,12 +29,12 @@ a.projectName:focus, a.projectName:hover {background: #0c64eb; color: #fff !impo
|
||||
#swapper li > a {padding-top: 4px; padding-bottom: 4px;}
|
||||
#swapper li {padding-top: 0; padding-bottom: 0;}
|
||||
#swapper .tree li>.list-toggle {top: -1px;}
|
||||
|
||||
.col-right {padding-top: 30px;}
|
||||
</style>
|
||||
<?php
|
||||
$projectCounts = array();
|
||||
$projectNames = array();
|
||||
$preFix = '';
|
||||
$closedProjectsHtml = '';
|
||||
$tabActive = '';
|
||||
$myProjects = 0;
|
||||
$others = 0;
|
||||
@@ -44,12 +44,13 @@ foreach($projects as $programID => $programProjects)
|
||||
{
|
||||
$projectCounts[$programID]['myProject'] = 0;
|
||||
$projectCounts[$programID]['others'] = 0;
|
||||
$projectCounts[$programID]['closed'] = 0;
|
||||
|
||||
foreach($programProjects as $project)
|
||||
{
|
||||
if($project->status != 'done' and $project->status != 'closed' and $project->PM == $this->app->user->account) $projectCounts[$programID]['myProject'] ++;
|
||||
if($project->status != 'done' and $project->status != 'closed' and !($project->PM == $this->app->user->account)) $projectCounts[$programID]['others'] ++;
|
||||
if($project->status == 'done' or $project->status == 'closed') $dones ++;
|
||||
if($project->status == 'done' or $project->status == 'closed') $projectCounts[$programID]['closed'] ++;
|
||||
$projectNames[] = $project->name;
|
||||
}
|
||||
}
|
||||
@@ -57,6 +58,7 @@ $projectsPinYin = common::convert2Pinyin($projectNames);
|
||||
|
||||
$myProjectsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$normalProjectsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
$closedProjectsHtml = $config->systemMode == 'new' ? '<ul class="tree tree-angles" data-ride="tree">' : '<ul class="noProgram">';
|
||||
|
||||
foreach($projects as $programID => $programProjects)
|
||||
{
|
||||
@@ -64,10 +66,10 @@ foreach($projects as $programID => $programProjects)
|
||||
if(isset($programs[$programID]) and $config->systemMode == 'new')
|
||||
{
|
||||
$programName = zget($programs, $programID);
|
||||
$preFix = $programName . ' / ';
|
||||
|
||||
if($projectCounts[$programID]['myProject']) $myProjectsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
if($projectCounts[$programID]['others']) $normalProjectsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
if($projectCounts[$programID]['closed']) $closedProjectsHtml .= '<li><div class="hide-in-search"><a class="text-muted" title="' . $programName . '">' . $programName . '</a> <label class="label">' . $lang->program->common . '</label></div><ul>';
|
||||
}
|
||||
|
||||
foreach($programProjects as $index => $project)
|
||||
@@ -97,7 +99,7 @@ foreach($projects as $programID => $programProjects)
|
||||
}
|
||||
else if($project->status == 'done' or $project->status == 'closed')
|
||||
{
|
||||
$closedProjectsHtml .= html::a(sprintf($link, $project->id), $preFix . $project->name, '', "class='$selected' title='" . $preFix . $project->name . "' data-key='" . zget($projectsPinYin, $project->name, '') . "'");
|
||||
$closedProjectsHtml .= '<li>' . html::a(sprintf($link, $project->id), $projectName, '', "class='$selected' title='$projectName' data-key='" . zget($projectsPinYin, $project->name, '') . "'") . '</li>';
|
||||
|
||||
if($selected == 'selected') $tabActive = 'closed';
|
||||
}
|
||||
@@ -107,11 +109,13 @@ foreach($projects as $programID => $programProjects)
|
||||
{
|
||||
if($projectCounts[$programID]['myProject']) $myProjectsHtml .= '</ul></li>';
|
||||
if($projectCounts[$programID]['others']) $normalProjectsHtml .= '</ul></li>';
|
||||
if($projectCounts[$programID]['closed']) $closedProjectsHtml .= '</ul></li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$myProjectsHtml .= '</ul>';
|
||||
$normalProjectsHtml .= '</ul>';
|
||||
$closedProjectsHtml .= '</ul>';
|
||||
?>
|
||||
|
||||
<div class="table-row">
|
||||
@@ -124,11 +128,11 @@ $normalProjectsHtml .= '</ul>';
|
||||
<li class="<?php if($tabActive == 'other') echo 'active';?>"><?php echo html::a('#other', $lang->project->other, '', "data-toggle='tab' class='not-list-item not-clear-menu'")?><span class="label label-light label-badge"><?php echo $others;?></span><li>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
<div class="tab-content" id="tabContent">
|
||||
<div class="tab-pane <?php if($tabActive == 'myProject') echo 'active';?>" id="myProject">
|
||||
<div class="tab-content projectTree" id="tabContent">
|
||||
<div class="tab-pane projects <?php if($tabActive == 'myProject') echo 'active';?>" id="myProject">
|
||||
<?php echo $myProjectsHtml;?>
|
||||
</div>
|
||||
<div class="tab-pane <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<div class="tab-pane projects <?php if($tabActive == 'other') echo 'active';?>" id="other">
|
||||
<?php echo $normalProjectsHtml;?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,8 +142,8 @@ $normalProjectsHtml .= '</ul>';
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->project->doneProjects?><i class='icon icon-angle-right'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-col col-right">
|
||||
<div class='list-group'><?php echo $closedProjectsHtml;?></div>
|
||||
<div class="table-col col-right projectTree">
|
||||
<div class='list-group projects'><?php echo $closedProjectsHtml;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>scrollToSelected();</script>
|
||||
@@ -155,7 +159,7 @@ $(function()
|
||||
$(this).parent().siblings('li').find('span').hide();
|
||||
})
|
||||
|
||||
$('#tabContent [data-ride="tree"]').tree('expand');
|
||||
$('#swapper [data-ride="tree"]').tree('expand');
|
||||
|
||||
$('#swapper #dropMenu .search-box').on('onSearchChange', function(event, value)
|
||||
{
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<div class='board-project'>
|
||||
<?php if(isset($statusList[$status])):?>
|
||||
<?php foreach($statusList[$status] as $project):?>
|
||||
<div class='board-item text-ellipsis' <?php echo "style='border-left: 3px solid " . $lang->execution->statusColorList[$status] . "'";?>>
|
||||
<div class='board-item' <?php echo "style='border-left: 3px solid " . $lang->execution->statusColorList[$status] . "'";?>>
|
||||
<?php
|
||||
if(common::hasPriv('project', 'index'))
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@ $formID = $type == 'leftBug' ? 'unlinkedLeftBugsForm' : 'unlinkedBugsForm';
|
||||
<tr class='text-center'>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allBugs):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allStories):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -25,7 +25,7 @@ $formID = $type == 'leftBug' ? 'unlinkedLeftBugsForm' : 'unlinkedBugsForm';
|
||||
<tr class='text-center'>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allBugs):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<tr>
|
||||
<th class='c-id text-left'>
|
||||
<?php if($allStories):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<div class="checkbox-primary check-all tablesorter-noSort" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
+11
-10
@@ -124,16 +124,17 @@ $lang->testtask->fail = 'Fehlgeschlagen';
|
||||
$lang->testtask->showResult = 'Ausführungen <span class="text-info">%s</span>';
|
||||
$lang->testtask->showFail = 'Fehlgeschlagen <span class="text-danger">%s</span>';
|
||||
|
||||
$lang->testtask->confirmDelete = 'Möchten Sie dieses Build löschen?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Möchten Sie die Verknüpfung zu dem Fall aufheben?';
|
||||
$lang->testtask->noticeNoOther = 'Es existieren keine weiteren Testaufgaben für dieses Produkt';
|
||||
$lang->testtask->noTesttask = 'Keine Testaufgaben. ';
|
||||
$lang->testtask->checkLinked = "Please check whether the product that the test request is linked to has been linked to a {$lang->executionCommon}.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->confirmDelete = 'Möchten Sie dieses Build löschen?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Möchten Sie die Verknüpfung zu dem Fall aufheben?';
|
||||
$lang->testtask->noticeNoOther = 'Es existieren keine weiteren Testaufgaben für dieses Produkt';
|
||||
$lang->testtask->noTesttask = 'Keine Testaufgaben. ';
|
||||
$lang->testtask->checkLinked = "Please check whether the product that the test request is linked to has been linked to a {$lang->executionCommon}.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->finishedDateError2 = 'Actual Finished Date cannot be > Today';
|
||||
|
||||
$lang->testtask->assignedToMe = 'Meine';
|
||||
$lang->testtask->allCases = 'Alle Fälle';
|
||||
|
||||
+11
-10
@@ -127,16 +127,17 @@ $lang->testtask->fail = 'Failed';
|
||||
$lang->testtask->showResult = 'Run <span class="text-info">%s</span> times';
|
||||
$lang->testtask->showFail = 'Failed <span class="text-danger">%s</span> times';
|
||||
|
||||
$lang->testtask->confirmDelete = 'Do you want to delete this build?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Do you want to unlink this case?';
|
||||
$lang->testtask->noticeNoOther = 'No test builds for this product.';
|
||||
$lang->testtask->noTesttask = 'No requests. ';
|
||||
$lang->testtask->checkLinked = "Please check whether the product that the test request is linked to has been linked to a {$lang->executionCommon}.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->confirmDelete = 'Do you want to delete this build?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Do you want to unlink this case?';
|
||||
$lang->testtask->noticeNoOther = 'No test builds for this product.';
|
||||
$lang->testtask->noTesttask = 'No requests. ';
|
||||
$lang->testtask->checkLinked = "Please check whether the product that the test request is linked to has been linked to a {$lang->executionCommon}.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->finishedDateError2 = 'Actual Finished Date cannot be > Today';
|
||||
|
||||
$lang->testtask->assignedToMe = 'AssignedToMe';
|
||||
$lang->testtask->allCases = 'All Cases';
|
||||
|
||||
+11
-10
@@ -124,16 +124,17 @@ $lang->testtask->fail = 'Echec';
|
||||
$lang->testtask->showResult = 'Jouée <span class="text-info">%s</span> fois';
|
||||
$lang->testtask->showFail = 'Echouée <span class="text-danger">%s</span> fois';
|
||||
|
||||
$lang->testtask->confirmDelete = 'Voulez-vous supprimer ce build ?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Voulez-vous détacher ce CasTest ?';
|
||||
$lang->testtask->noticeNoOther = "Il n'y a pas de Campagnes de Recette pour ce product.";
|
||||
$lang->testtask->noTesttask = 'Pas de campagne. ';
|
||||
$lang->testtask->checkLinked = "Vérifiez si le product auquel la campagne de recette est associée est bien lié à un projet.";
|
||||
$lang->testtask->noImportData = "Le XML importé ne parse pas les données.";
|
||||
$lang->testtask->unitXMLFormat = 'Veuillez sélectionner un fichier au format XML JUnit.';
|
||||
$lang->testtask->titleOfAuto = "%s tests automatisés";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->confirmDelete = 'Voulez-vous supprimer ce build ?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Voulez-vous détacher ce CasTest ?';
|
||||
$lang->testtask->noticeNoOther = "Il n'y a pas de Campagnes de Recette pour ce product.";
|
||||
$lang->testtask->noTesttask = 'Pas de campagne. ';
|
||||
$lang->testtask->checkLinked = "Vérifiez si le product auquel la campagne de recette est associée est bien lié à un projet.";
|
||||
$lang->testtask->noImportData = "Le XML importé ne parse pas les données.";
|
||||
$lang->testtask->unitXMLFormat = 'Veuillez sélectionner un fichier au format XML JUnit.';
|
||||
$lang->testtask->titleOfAuto = "%s tests automatisés";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->finishedDateError2 = 'Actual Finished Date cannot be > Today';
|
||||
|
||||
$lang->testtask->assignedToMe = 'Affecté à Moi';
|
||||
$lang->testtask->allCases = 'Tous les CasTests';
|
||||
|
||||
+11
-10
@@ -124,16 +124,17 @@ $lang->testtask->fail = 'Thất bại';
|
||||
$lang->testtask->showResult = 'Chạy <span class="text-info">%s</span> lần';
|
||||
$lang->testtask->showFail = 'Thất bại <span class="text-danger">%s</span> lần';
|
||||
|
||||
$lang->testtask->confirmDelete = 'Bạn có muốn xóa bản dựng này?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Bạn có muốn hủy liên kết tình huống này?';
|
||||
$lang->testtask->noticeNoOther = 'Không có test builds cho sản phẩm này.';
|
||||
$lang->testtask->noTesttask = 'Không có yêu cầu. ';
|
||||
$lang->testtask->checkLinked = "Vui lòng kiểm tra sản phẩm đó mà yêu cầu test này là liên kết tới một dự án.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->confirmDelete = 'Bạn có muốn xóa bản dựng này?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Bạn có muốn hủy liên kết tình huống này?';
|
||||
$lang->testtask->noticeNoOther = 'Không có test builds cho sản phẩm này.';
|
||||
$lang->testtask->noTesttask = 'Không có yêu cầu. ';
|
||||
$lang->testtask->checkLinked = "Vui lòng kiểm tra sản phẩm đó mà yêu cầu test này là liên kết tới một dự án.";
|
||||
$lang->testtask->noImportData = 'The imported XML does not parse the data.';
|
||||
$lang->testtask->unitXMLFormat = 'Please select a file in JUnit XML format.';
|
||||
$lang->testtask->titleOfAuto = "%s automated testing";
|
||||
$lang->testtask->cannotBeParsed = 'The content of the imported XML file is in the wrong format and cannot be parsed.';
|
||||
$lang->testtask->finishedDateError = 'Actual Finished Date cannot be <= Begin Date %s';
|
||||
$lang->testtask->finishedDateError2 = 'Actual Finished Date cannot be > Today';
|
||||
|
||||
$lang->testtask->assignedToMe = 'Giao cho bạn';
|
||||
$lang->testtask->allCases = 'Tất cả tình huống';
|
||||
|
||||
@@ -127,16 +127,17 @@ $lang->testtask->fail = '失败';
|
||||
$lang->testtask->showResult = '共执行<span class="text-info">%s</span>次';
|
||||
$lang->testtask->showFail = '失败<span class="text-danger">%s</span>次';
|
||||
|
||||
$lang->testtask->confirmDelete = '您确认要删除该测试单吗?';
|
||||
$lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testtask->noticeNoOther = '该产品还没有其他测试单';
|
||||
$lang->testtask->noTesttask = '暂时没有测试单。';
|
||||
$lang->testtask->checkLinked = "请检查测试单的产品是否与{$lang->executionCommon}相关联";
|
||||
$lang->testtask->noImportData = '导入的XML没有解析出数据。';
|
||||
$lang->testtask->unitXMLFormat = '请选择Junit XML 格式的文件。';
|
||||
$lang->testtask->titleOfAuto = "%s 自动化测试";
|
||||
$lang->testtask->cannotBeParsed = '导入的XML文件内容格式错误,无法解析。';
|
||||
$lang->testtask->finishedDateError = '实际完成日期不能小于开始日期%s';
|
||||
$lang->testtask->confirmDelete = '您确认要删除该测试单吗?';
|
||||
$lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testtask->noticeNoOther = '该产品还没有其他测试单';
|
||||
$lang->testtask->noTesttask = '暂时没有测试单。';
|
||||
$lang->testtask->checkLinked = "请检查测试单的产品是否与{$lang->executionCommon}相关联";
|
||||
$lang->testtask->noImportData = '导入的XML没有解析出数据。';
|
||||
$lang->testtask->unitXMLFormat = '请选择Junit XML 格式的文件。';
|
||||
$lang->testtask->titleOfAuto = "%s 自动化测试";
|
||||
$lang->testtask->cannotBeParsed = '导入的XML文件内容格式错误,无法解析。';
|
||||
$lang->testtask->finishedDateError = '实际完成日期不能小于开始日期%s';
|
||||
$lang->testtask->finishedDateError2 = '实际完成日期不能大于今天';
|
||||
|
||||
$lang->testtask->assignedToMe = '指派给我';
|
||||
$lang->testtask->allCases = '所有用例';
|
||||
|
||||
@@ -806,6 +806,11 @@ class testtaskModel extends model
|
||||
dao::$errors[] = sprintf($this->lang->testtask->finishedDateError, $oldTesttask->begin);
|
||||
return false;
|
||||
}
|
||||
if($testtask->realFinishedDate > date("Y-m-d 00:00:00", strtotime("+1 day")))
|
||||
{
|
||||
dao::$errors[] = $this->lang->testtask->finishedDateError2;
|
||||
return false;
|
||||
}
|
||||
|
||||
$testtask = $this->loadModel('file')->processImgURL($testtask, $this->config->testtask->editor->close['id'], $this->post->uid);
|
||||
$this->dao->update(TABLE_TESTTASK)->data($testtask)
|
||||
|
||||
@@ -75,6 +75,11 @@ class todoModel extends model
|
||||
{
|
||||
unset($todo->config['week']);
|
||||
unset($todo->config['month']);
|
||||
if($todo->config['day'] and !validater::checkInt($todo->config['day']))
|
||||
{
|
||||
dao::$errors[] = sprintf($this->lang->error->int[0], $this->lang->todo->cycleDay);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if($todo->config['type'] == 'week')
|
||||
{
|
||||
@@ -88,6 +93,12 @@ class todoModel extends model
|
||||
unset($todo->config['week']);
|
||||
$todo->config['month'] = join(',', $todo->config['month']);
|
||||
}
|
||||
|
||||
if($todo->config['beforeDays'] and !validater::checkInt($todo->config['beforeDays']))
|
||||
{
|
||||
dao::$errors[] = sprintf($this->lang->error->int[0], $this->lang->todo->cycleDay);
|
||||
return false;
|
||||
}
|
||||
$todo->config['beforeDays'] = (int)$todo->config['beforeDays'];
|
||||
$todo->config = json_encode($todo->config);
|
||||
$todo->type = 'cycle';
|
||||
|
||||
+69
-71
@@ -1,14 +1,12 @@
|
||||
/*
|
||||
* Metadata - jQuery plugin for parsing metadata from elements
|
||||
*
|
||||
* Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
|
||||
* Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
* Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -18,34 +16,34 @@
|
||||
* There are three supported types of metadata storage:
|
||||
*
|
||||
* attr: Inside an attribute. The name parameter indicates *which* attribute.
|
||||
*
|
||||
*
|
||||
* class: Inside the class attribute, wrapped in curly braces: { }
|
||||
*
|
||||
*
|
||||
* elem: Inside a child element (e.g. a script tag). The
|
||||
* name parameter indicates *which* element.
|
||||
*
|
||||
*
|
||||
* The metadata for an element is loaded the first time the element is accessed via jQuery.
|
||||
*
|
||||
* As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
|
||||
* matched by expr, then redefine the metadata type and run another $(expr) for other elements.
|
||||
*
|
||||
*
|
||||
* @name $.metadata.setType
|
||||
*
|
||||
* @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
|
||||
* @before $.metadata.setType("class")
|
||||
* @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
|
||||
* @desc Reads metadata from the class attribute
|
||||
*
|
||||
*
|
||||
* @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
|
||||
* @before $.metadata.setType("attr", "data")
|
||||
* @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
|
||||
* @desc Reads metadata from a "data" attribute
|
||||
*
|
||||
*
|
||||
* @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
|
||||
* @before $.metadata.setType("elem", "script")
|
||||
* @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
|
||||
* @desc Reads metadata from a nested script element
|
||||
*
|
||||
*
|
||||
* @param String type The encoding type
|
||||
* @param String name The name of the attribute to be used to get metadata (optional)
|
||||
* @cat Plugins/Metadata
|
||||
@@ -54,69 +52,69 @@
|
||||
* @see metadata()
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
(function($) {
|
||||
|
||||
$.extend({
|
||||
metadata : {
|
||||
defaults : {
|
||||
type: 'class',
|
||||
name: 'metadata',
|
||||
cre: /({.*})/,
|
||||
single: 'metadata'
|
||||
},
|
||||
setType: function( type, name ){
|
||||
this.defaults.type = type;
|
||||
this.defaults.name = name;
|
||||
},
|
||||
get: function( elem, opts ){
|
||||
var settings = $.extend({},this.defaults,opts);
|
||||
// check for empty string in single property
|
||||
if ( !settings.single.length ) settings.single = 'metadata';
|
||||
|
||||
var data = $.data(elem, settings.single);
|
||||
// returned cached data if it already exists
|
||||
if ( data ) return data;
|
||||
|
||||
data = "{}";
|
||||
|
||||
if ( settings.type == "class" ) {
|
||||
var m = settings.cre.exec( elem.className );
|
||||
if ( m )
|
||||
data = m[1];
|
||||
} else if ( settings.type == "elem" ) {
|
||||
if( !elem.getElementsByTagName )
|
||||
return undefined;
|
||||
var e = elem.getElementsByTagName(settings.name);
|
||||
if ( e.length )
|
||||
data = $.trim(e[0].innerHTML);
|
||||
} else if ( elem.getAttribute != undefined ) {
|
||||
var attr = elem.getAttribute( settings.name );
|
||||
if ( attr )
|
||||
data = attr;
|
||||
$.extend({
|
||||
metadata : {
|
||||
defaults : {
|
||||
type: 'class',
|
||||
name: 'metadata',
|
||||
cre: /({.*})/,
|
||||
single: 'metadata'
|
||||
},
|
||||
setType: function( type, name ){
|
||||
this.defaults.type = type;
|
||||
this.defaults.name = name;
|
||||
},
|
||||
get: function( elem, opts ){
|
||||
var settings = $.extend({},this.defaults,opts);
|
||||
// check for empty string in single property
|
||||
if ( !settings.single.length ) settings.single = 'metadata';
|
||||
|
||||
var data = $.data(elem, settings.single);
|
||||
// returned cached data if it already exists
|
||||
if ( data ) return data;
|
||||
|
||||
data = "{}";
|
||||
|
||||
if ( settings.type == "class" ) {
|
||||
var m = settings.cre.exec( elem.className );
|
||||
if ( m )
|
||||
data = m[1];
|
||||
} else if ( settings.type == "elem" ) {
|
||||
if( !elem.getElementsByTagName )
|
||||
return undefined;
|
||||
var e = elem.getElementsByTagName(settings.name);
|
||||
if ( e.length )
|
||||
data = $.trim(e[0].innerHTML);
|
||||
} else if ( elem.getAttribute != undefined ) {
|
||||
var attr = elem.getAttribute( settings.name );
|
||||
if ( attr )
|
||||
data = attr;
|
||||
}
|
||||
|
||||
if ( data.indexOf( '{' ) <0 )
|
||||
data = "{" + data + "}";
|
||||
|
||||
data = eval("(" + data + ")");
|
||||
|
||||
$.data( elem, settings.single, data );
|
||||
return data;
|
||||
}
|
||||
|
||||
if ( data.indexOf( '{' ) <0 )
|
||||
data = "{" + data + "}";
|
||||
|
||||
data = eval("(" + data + ")");
|
||||
|
||||
$.data( elem, settings.single, data );
|
||||
return data;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Returns the metadata object for the first member of the jQuery object.
|
||||
*
|
||||
* @name metadata
|
||||
* @descr Returns element's metadata object
|
||||
* @param Object opts An object contianing settings to override the defaults
|
||||
* @type jQuery
|
||||
* @cat Plugins/Metadata
|
||||
*/
|
||||
$.fn.metadata = function( opts ){
|
||||
return $.metadata.get( this[0], opts );
|
||||
};
|
||||
/**
|
||||
* Returns the metadata object for the first member of the jQuery object.
|
||||
*
|
||||
* @name metadata
|
||||
* @descr Returns element's metadata object
|
||||
* @param Object opts An object contianing settings to override the defaults
|
||||
* @type jQuery
|
||||
* @cat Plugins/Metadata
|
||||
*/
|
||||
$.fn.metadata = function( opts ){
|
||||
return $.metadata.get( this[0], opts );
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
})(jQuery);
|
||||
|
||||
Vendored
+3
-4
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user