This commit is contained in:
zhujinyong
2021-12-03 10:01:17 +08:00
37 changed files with 119 additions and 126 deletions

View File

@@ -36,6 +36,9 @@ class configEntry extends baseEntry
case 'timezone':
$config['value'] = $this->config->timezone;
break;
case 'systemMode':
$config['value'] = $this->config->systemMode;
break;
default:
$this->sendError(400, 'No configuration.');
return;

View File

@@ -21,10 +21,11 @@ class configsEntry extends baseEntry
{
$configs = array();
$configs[] = array('key' => 'language', 'value' => $this->config->default->lang);
$configs[] = array('key' => 'version', 'value' => $this->config->version);
$configs[] = array('key' => 'charset', 'value' => $this->config->charset);
$configs[] = array('key' => 'timezone', 'value' => $this->config->timezone);
$configs[] = array('key' => 'language', 'value' => $this->config->default->lang);
$configs[] = array('key' => 'version', 'value' => $this->config->version);
$configs[] = array('key' => 'charset', 'value' => $this->config->charset);
$configs[] = array('key' => 'timezone', 'value' => $this->config->timezone);
$configs[] = array('key' => 'systemMode', 'value' => $this->config->systemMode);
$this->send(200, $configs);
}

View File

@@ -22,6 +22,8 @@ class programsEntry extends Entry
$_COOKIE['showClosed'] = $this->param('showClosed', 0);
$mergeChildren = $this->param('mergeChildren', 0);
$this->config->systemMode = 'new';
$fields = $this->param('fields', '');
if(stripos(strtolower(",{$fields},"), ",dropmenu,") !== false) return $this->getDropMenu();

View File

@@ -26,6 +26,8 @@ class projectsEntry extends entry
$_COOKIE['involved'] = $this->param('involved', 0);
$this->config->systemMode = 'new';
if($programID)
{
$control = $this->loadController('program', 'project');

View File

@@ -2118,6 +2118,7 @@ class baseRouter
$view->methodVar = $this->config->methodVar;
$view->viewVar = $this->config->viewVar;
$view->sessionVar = $this->config->sessionVar;
$view->systemMode = $this->config->systemMode;
$this->session->set('random', mt_rand(0, 10000));
$view->sessionName = session_name();

View File

@@ -153,7 +153,7 @@
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(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$module->branch&browseType=byModule&param=$module->id", $module->name, '', "data-app='qa'")) echo $module->name;
if(isset($modulePath[$key + 1]))
{
$moduleTitle .= '/';

View File

@@ -848,7 +848,9 @@ class commonModel extends model
if(!isset($linkPart[2])) continue;
$method = $linkPart[2];
if($currentModule == 'report' and $method == 'annualData') continue; // Skip some pages that do not require permissions.
/* Skip some pages that do not require permissions.*/
if($currentModule == 'report' and $method == 'annualData') continue;
if($currentModule == 'my' and $currentMethod == 'team') continue;
if(common::hasPriv($currentModule, $method))
{
@@ -2161,7 +2163,7 @@ EOD;
$menu = isset($lang->navGroup->$module) ? $lang->navGroup->$module : $module;
$menu = strtolower($menu);
if($menu != 'qa' and !isset($lang->$menu->menu)) return true;
if($menu == 'my' or $menu == 'index' or $module == 'tree') return true;
if(($menu == 'my' && $method != 'team')or $menu == 'index' or $module == 'tree') return true;
if($module == 'company' and $method == 'dynamic') return true;
if($module == 'action' and $method == 'editcomment') return true;
if($module == 'action' and $method == 'comment') return true;

View File

@@ -22,7 +22,7 @@
#kanbanList .kanban-card {display: grid;}
#kanbanList .kanban-card > .title {white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
#kanbanList .kanban-card.has-progress {padding-right: 40px; position: relative;}
#kanbanList .kanban-card.has-progress > .progress-pie {position: absolute; right: 7px; top: 7px}
#kanbanList .kanban-card.has-progress > .progress-pie {position: absolute; right: 7px; top: 7px; width: 24px; height: 24px;}
#kanbanList .kanban-card.has-left-border {border-left: 2px solid #838a9d;}
#kanbanList .kanban-card.has-left-border.border-left-green {border-left-color: #0bd986;}
#kanbanList .kanban-card.has-left-border.border-left-red {border-left-color: #ff5d5d;}

View File

@@ -5,3 +5,4 @@
#kanbanList .kanban-col[data-type="project"] .kanban-lane-items {height: 100%; display: flex; flex-direction: column; justify-content: center;}
#kanbanList .kanban-lane-name > .text {display: none;}
#kanbanList .kanban-item.link-block > a {cursor: move;}
#kanbanList .kanban-lane + .kanban-lane {margin-top: 2px!important;}

View File

@@ -32,7 +32,7 @@
#kanbanContainer {margin: 0;}
#kanbanContainer > .panel-body {overflow: auto;}
#kanbans .kanban {min-height: initial;}
#kanbans .kanban-lane {min-height: 150px;}
#kanbans .kanban-lane {min-height: 150px; margin-top: 2px;}
#kanbans .kanban-affixed > .kanban-header {top: 100px;}
#kanbans .kanban-card[data-scale-size="4"] {padding: 8px;}
#kanbans .kanban-card[data-scale-size="3"] {padding: 3px 4px;}

View File

@@ -159,13 +159,13 @@ $(function()
{
data: processKanbanData(),
laneNameWidth: 5,
virtualize: true,
droppable:
{
selector: '.kanban-item:not(.kanban-item-span)',
target: findDropColumns,
finish: handleFinishDrop,
mouseButton: 'left'
},
virtualize: true
}
});
});

View File

@@ -880,7 +880,7 @@ $(function()
var menuCreator = window.menuCreators[menuType];
if(!menuCreator) return;
var options = $.extend({event, $trigger: $trigger}, $trigger.data());
var options = $.extend({event: event, $trigger: $trigger}, $trigger.data());
var items = menuCreator(options);
if(!items || !items.length) return;

View File

@@ -73,7 +73,7 @@ class executionModel extends model
/* Unset story, bug, build and testtask if type is ops. */
$execution = $this->getByID($executionID);
if($execution and $execution->type == 'stage')
if($execution and $execution->type == 'stage' and $this->config->systemMode == 'new')
{
global $lang;
$this->app->loadLang('project');

View File

@@ -15,6 +15,8 @@
<th><?php echo $lang->gitlab->group->memberAccessLevel;?></th>
<th class='c-date'><?php echo $lang->gitlab->group->memberExpiresAt;?></th>
<th class="c-actions"><?php echo $lang->actions;?></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

View File

@@ -81,7 +81,6 @@ $lang->mr->sourceBranch = 'Source branch';
$lang->mr->targetProject = 'Target project';
$lang->mr->targetBranch = 'Target branch';
$lang->mr->usersTips = 'Tip: If you cannot choose the assignee, please go to the GitLab page to bind the user first.';
$lang->mr->notFound = "Merge Request does not exist!";
$lang->mr->toCreatedMessage = "The merge request you submitted<a href='%s'>%s</a>, the build task succeeded.";
$lang->mr->toReviewerMessage = "You have one merge request <a href='%s'>%s</a> waiting.";

View File

@@ -63,8 +63,8 @@ $lang->mr->approvalStatusList['approved'] = '已通过';
$lang->mr->approvalStatusList['rejected'] = '已拒绝';
$lang->mr->notApproved = '审核拒绝的';
$lang->mr->assignedToMe = '指派给我';
$lang->mr->createdByMe = '我创建';
$lang->mr->assignedToMe = '指派给我';
$lang->mr->createdByMe = '我创建';
$lang->mr->statusList = array();
$lang->mr->statusList['all'] = '所有';
@@ -86,7 +86,6 @@ $lang->mr->targetBranch = '目标分支';
$lang->mr->noCompileJob = '没有构建任务';
$lang->mr->compileUnexecuted = '还未执行';
$lang->mr->usersTips = '提示如果无法选择指派人请先前往GitLab页面绑定用户。';
$lang->mr->notFound = "{$lang->mr->common}不存在。";
$lang->mr->toCreatedMessage = "您提交的合并请求:<a href='%s'>%s</a> 构建任务执行通过。";
$lang->mr->toReviewerMessage = "有一个合并请求:<a href='%s'>%s</a> 待审核。";

View File

@@ -68,8 +68,7 @@ $lang->mr->sourceBranch = '源分支';
$lang->mr->targetProject = '目標項目';
$lang->mr->targetBranch = '目標分支';
$lang->mr->usersTips = '提示如果無法選擇指派人請先前往GitLab頁面綁定用戶。';
$lang->mr->notFound = "{$lang->mr->common}不存在。";
$lang->mr->notFound = "{$lang->mr->common}不存在。";
$lang->mr->apiError = new stdclass;
$lang->mr->apiError->createMR = "通過API創建合併請求失敗失敗原因%s";

View File

@@ -72,10 +72,6 @@
<th><?php echo $lang->mr->assignee;?></th>
<td><?php echo html::select('assignee', $users, '', "class='form-control chosen'");?></td>
</tr>
<tr>
<th></th>
<td><?php echo $lang->mr->usersTips;?></td>
</tr>
<tr>
<td colspan='2' class='text-center form-actions'>
<?php echo html::submitButton();?>

View File

@@ -87,10 +87,6 @@
<th><?php echo $lang->mr->assignee;?></th>
<td><?php echo html::select('assignee', $users, $assignee, "class='form-control chosen'");?></td>
</tr>
<tr>
<th></th>
<td><?php echo $lang->mr->usersTips;?></td>
</tr>
<tr>
<td colspan='2' class='text-center form-actions'>
<?php echo html::submitButton();?>

View File

@@ -364,7 +364,7 @@ class my extends control
$sort = $this->loadModel('common')->appendOrder($orderBy);
$bugs = $this->loadModel('bug')->getUserBugs($this->app->user->account, $type, $sort, 0, $pager);
$bugs = $this->bug->checkDelayedBugs($bugs);
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'myBug');
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug', false);
/* assign. */
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->bug;

View File

@@ -161,6 +161,7 @@ class productModel extends model
if($this->cookie->preProductID != $this->session->product)
{
$this->cookie->set('preBranch', 0);
setcookie('preBranch', 0, $this->config->cookieLife, $this->config->webRoot, '', $this->config->cookieSecure, true);
}
return $this->session->product;
@@ -1026,7 +1027,7 @@ class productModel extends model
->orWhere('t2.PM')->eq($this->app->user->account)
->markRight(1)
->fi()
->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
->beginIF($branch !== '' and $branch !== 'all')->andWhere('t1.branch')->in($branch)->fi()
->andWhere('t2.deleted')->eq('0')
->orderBy($orderBy)
->fetchAll('id');

View File

@@ -115,6 +115,13 @@ function processKanbanData(key, programsData)
return {id: kanbanId, columns: columns, lanes: lanes};
}
/** Calculate column height */
function calcColHeight(col, lane, colCards, colHeight)
{
if (col.type !== 'doingProject') return colHeight;
return colCards.length * 62;
}
$(function()
{
/* Init all kanbans */
@@ -122,6 +129,11 @@ $(function()
{
var $kanban = $('#kanban-' + key);
if(!$kanban.length) return;
$kanban.kanban({data: processKanbanData(key, programsData), virtualize: true});
$kanban.kanban(
{
data: processKanbanData(key, programsData),
virtualize: true,
calcColHeight: calcColHeight
});
});
});

View File

@@ -18,6 +18,7 @@
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php
$productID = $productID == 0 ? key($this->product->getProductPairsByProject($project->id)) : $productID;
$buildName = $build ? " <span class='label label-danger'>Build:{$build->name}</span>" : '';
echo html::a($this->inlink('bug', "projectID={$project->id}&productID={$productID}&orderBy=status,id_desc&build=$buildID&type=all"), "<span class='text'>{$lang->bug->allBugs}</span>" . ($type == 'all' ? " <span class='label label-light label-badge'>{$pager->recTotal}</span>$buildName" : ''), '', "id='allTab' class='btn btn-link" . ('all' == $type ? ' btn-active-text' : '') . "'");
echo html::a($this->inlink('bug', "projectID={$project->id}&productID={$productID}&orderBy=status,id_desc&build=$buildID&type=unresolved"), "<span class='text'>{$lang->bug->unResolved}</span>" . ($type == 'unresolved' ? " <span class='label label-light label-badge'>{$pager->recTotal}</span>$buildName" : ''), '', "id='unresolvedTab' class='btn btn-link" . ('unresolved' == $type ? ' btn-active-text' : '') . "'");

View File

@@ -32,7 +32,10 @@ class qaModel extends model
$branch = ($this->cookie->preBranch !== '' and $branch === '') ? $this->cookie->preBranch : $branch;
setcookie('preBranch', $branch, $this->config->cookieLife, $this->config->webRoot, '', $this->config->cookieSecure, true);
if(!in_array($this->app->rawModule, $this->config->qa->noDropMenuModule)) $this->lang->switcherMenu = $this->loadModel('product')->getSwitcher($productID, $extra, $branch);
$product = $this->loadModel('product')->getById($productID);
if($product->type != 'normal') $this->lang->product->branch = sprintf($this->lang->product->branch, $this->lang->product->branchName[$product->type]);
if(!in_array($this->app->rawModule, $this->config->qa->noDropMenuModule)) $this->lang->switcherMenu = $this->product->getSwitcher($productID, $extra, $branch);
if($this->app->rawModule == 'product' and $this->app->rawMethod == 'showerrornone') $this->lang->switcherMenu = '';
common::setMenuVars('qa', $productID);
}

View File

@@ -1854,6 +1854,7 @@ class repoModel extends model
public function syncCommit($repoID, $branchID)
{
$repo = $this->getRepoByID($repoID);
$this->scm = $this->app->loadClass('scm');
$this->scm->setEngine($repo);
$latestInDB = $this->dao->select('DISTINCT t1.*')->from(TABLE_REPOHISTORY)->alias('t1')

View File

@@ -45,10 +45,13 @@ function loadProduct(productID)
*/
function loadBranch()
{
var branch = $('#branch').val();
var branch = $('#branch').val();
var productID = $('#product').val();
if(typeof(branch) == 'undefined') branch = 0;
loadProductModules($('#product').val(), branch);
loadProductPlans($('#product').val(), branch);
if(typeof(productID) == 'undefined' && config.currentMethod == 'edit') productID = oldProductID;
loadProductModules(productID, branch);
loadProductPlans(productID, branch);
}
/**

View File

@@ -1778,7 +1778,7 @@ class testcase extends control
$this->view->productID = $productID;
$this->view->branch = $branch;
$this->view->cases = $this->loadModel('testsuite')->getNotImportedCases($productID, $libID, $orderBy, $pager, $browseType, $queryID);
$this->view->modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch);
$this->view->modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch === 'all' ? 0 : (int)$branch);
$this->view->libModules = $this->tree->getOptionMenu($libID, 'caselib');
$this->view->pager = $pager;
$this->view->orderBy = $orderBy;
@@ -1839,7 +1839,8 @@ class testcase extends control
$caseLang = $this->lang->testcase;
$caseConfig = $this->config->testcase;
$modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, $branch);
$branches = $this->loadModel('branch')->getPairs($productID);
$modules = $this->loadModel('tree')->getOptionMenu($productID, 'case', 0, empty(array_keys($branches)) ? 0 : array_keys($branches));
$stories = $this->loadModel('story')->getProductStoryPairs($productID, $branch);
$fields = $this->testcase->getImportFields($productID);
$fields = array_flip($fields);
@@ -2020,7 +2021,7 @@ class testcase extends control
$this->view->caseData = $caseData;
$this->view->stepData = $stepData;
$this->view->productID = $productID;
$this->view->branches = $this->loadModel('branch')->getPairs($productID);
$this->view->branches = $branches;
$this->view->isEndPage = $pagerID >= $allPager;
$this->view->allCount = $allCount;
$this->view->allPager = $allPager;

View File

@@ -81,7 +81,8 @@ $(function()
</td>
<td><?php echo html::input("title[$key]", htmlSpecialString($case->title, ENT_QUOTES), "class='form-control'")?></td>
<td style='overflow:visible'>
<?php echo html::select("module[$key]", $modules, isset($case->module) ? $case->module : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->module : ''), "class='form-control chosen moduleChange'")?>
<?php $caseModules = (isset($case->branch) and $case->branch != 0) ? $modules[BRANCH_MAIN] + $modules[$case->branch] : $modules;?>
<?php echo html::select("module[$key]", $caseModules, isset($case->module) ? $case->module : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->module : ''), "class='form-control chosen moduleChange'")?>
</td>
<td style='overflow:visible'>
<?php $storyID = isset($case->story) ? $case->story : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->story : '');?>

View File

@@ -341,7 +341,7 @@ class upgrade extends control
/* When upgrading historical data as a project, handle products that are not linked with the project. */
if(!empty($singleProducts)) $this->upgrade->computeProductAcl($singleProducts, $programID);
}
elseif($type == 'sprint' or $type == 'moreLink')
elseif($type == 'sprint')
{
$linkedSprints = $this->post->sprints;
@@ -363,6 +363,43 @@ class upgrade extends control
}
}
}
elseif($type == 'moreLink')
{
$linkedSprints = $this->post->sprints;
/* Create Program. */
list($programID, $projectList, $lineID) = $this->upgrade->createProgram(array(), $linkedSprints);
if(dao::isError()) die(js::error(dao::getError()));
if($_POST['projectType'] == 'execution')
{
/* Use historical projects as execution upgrades. */
$this->upgrade->processMergedData($programID, $projectList, $lineID, array(), $linkedSprints);
}
else
{
/* Use historical projects as project upgrades. */
foreach($linkedSprints as $sprint)
{
$this->upgrade->processMergedData($programID, $projectList[$sprint], $lineID, array(), array($sprint => $sprint));
}
/* If is more-link sprints, and as project upgrade, set old relation into new project. */
$projectProducts = $this->dao->select('product,project,branch,plan')->from(TABLE_PROJECTPRODUCT)
->where('project')->in($linkedSprints)
->fetchAll();
foreach($projectProducts as $projectProduct)
{
$data = new stdclass();
$data->project = $projectList[$projectProduct->project];
$data->product = $projectProduct->product;
$data->plan = $projectProduct->plan;
$data->branch = $projectProduct->branch;
$this->dao->replace(TABLE_PROJECTPRODUCT)->data($data)->exec();
}
}
}
die(js::locate($this->createLink('upgrade', 'mergeProgram', "type=$type&programID=$programID&projectType=$projectType"), 'parent'));
}

View File

@@ -35,10 +35,6 @@ div.divider {vertical-align: middle;}
.programParams td > label:first-child {margin-right: 10px;}
.programParams td > label:last-child {margin-left: 0px;}
.lineGroup .sprintRename input {max-width: 120px;}
.projectList .scroll-handle .checkbox-primary {display: inline-block;}
.sprintRename {margin-top: 5px;}
.sprintRename input {display: inline-block; width: auto;}
.sprintRename .btn-group {display: inline-block;}
.sprintGroup .sprintItem .checkbox-primary {display: inline-block;}

View File

@@ -1150,45 +1150,3 @@ function isSelectAll(lineID = 0, type = 'product')
if(objectNum > checkedObjectNum || objectNum == 0) checked = false;
return checked;
}
$(function()
{
$('.sprintItem').mouseover(function()
{
$(this).find('#sprintEdit').removeClass('hidden');
}).mouseout(function()
{
$(this).find('#sprintEdit').addClass('hidden');
})
$(document).on('click', '#sprintEdit i', function()
{
$(this).parents('.sprintItem').addClass('hidden');
$(this).parents('.sprintItem').next('.sprintRename').removeClass('hidden');
})
$('.sprintRename button.name-confirm').click(function()
{
var execution = $(this).parent().siblings('input').attr('name').split('_');
var newExecutionName = $(this).parent().siblings('input').val();
var link = createLink('execution', 'ajaxUpdateExecutionName', 'executionID=' + execution[1] + '&newExecutionName=' + newExecutionName);
var $this = $(this);
$.post(link, function(data)
{
if(data)
{
$this.closest('.sprintRename').addClass('hidden');
$this.closest('.sprintRename').prev('.sprintItem').removeClass('hidden').find('.checkbox-primary label').text(newExecutionName);
}
})
})
$('.sprintRename button.name-cancel').click(function()
{
var oldValue = $(this).closest('.sprintRename').prev('.sprintItem').find('.checkbox-primary label').text();
$(this).closest('.sprintRename').addClass('hidden');
$(this).closest('.sprintRename').prev('.sprintItem').removeClass('hidden');
$(this).parent().siblings('input').val(oldValue);
})
})

View File

@@ -50,22 +50,14 @@
</div>
<div class='projectList'>
<div class='scroll-handle'>
<?php if(isset($productGroups[$productID])):?>
<?php foreach($productGroups[$productID] as $sprint):?>
<?php if(isset($productGroups[$productID])):?>
<?php foreach($productGroups[$productID] as $sprint):?>
<div class="sprintItem">
<?php echo html::checkBox("sprints[$line->id][$productID]", array($sprint->id => $sprint->name), '', "title='{$sprint->name}' data-product='{$product->id}' data-line='{$line->id}' data-begin='{$sprint->begin}' data-end='{$sprint->end}' data-status='{$sprint->status}' data-pm='{$sprint->PM}' class='tile'");?>
<?php echo html::hidden("sprintIdList[$line->id][$productID][$sprint->id]", $sprint->id);?>
<a href='#' id='sprintEdit' class='hidden'><i class="icon-common-edit icon-edit muted"></i></a>
</div>
<div class="sprintRename hidden">
<?php echo html::input("sprintRename_$sprint->id", $sprint->name, "class='form-control'");?>
<div class="btn-group">
<button type="button" class="btn btn-success name-confirm"><i class='icon icon-check'></i></button>
<button type="button" class="btn btn-gray name-cancel"><i class='icon icon-close'></i></button>
</div>
</div>
<?php endforeach;?>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
</div>
</div>
</div>

View File

@@ -27,22 +27,14 @@
</div>
<div class='projectList'>
<div class='scroll-handle'>
<?php if(isset($productGroups[$productID])):?>
<?php foreach($productGroups[$productID] as $sprint):?>
<?php if(isset($productGroups[$productID])):?>
<?php foreach($productGroups[$productID] as $sprint):?>
<div class="sprintItem">
<?php echo html::checkBox("sprints[$productID]", array($sprint->id => $sprint->name), '', "data-product='{$productID}' data-begin='{$sprint->begin}' data-end='{$sprint->end}' data-status='{$sprint->status}' data-pm='{$sprint->PM}'");?>
<?php echo html::hidden("sprintIdList[$productID][$sprint->id]", $sprint->id);?>
<a href='#' id='sprintEdit' class='hidden'><i class="icon-common-edit icon-edit muted"></i></a>
</div>
<div class="sprintRename hidden">
<?php echo html::input("sprintRename_$sprint->id", $sprint->name, "class='form-control'");?>
<div class="btn-group">
<button type="button" class="btn btn-success name-confirm"><i class='icon icon-check'></i></button>
<button type="button" class="btn btn-gray name-cancel"><i class='icon icon-close'></i></button>
</div>
</div>
<?php endforeach;?>
<?php endif;?>
<?php endforeach;?>
<?php endif;?>
</div>
</div>
</div>

View File

@@ -17,14 +17,6 @@
<?php foreach($noMergedSprints as $sprintID => $sprint):?>
<div class="sprintItem">
<?php echo html::checkBox("sprints", array($sprint->id => $sprint->name), '', "data-begin='{$sprint->begin}' data-end='{$sprint->end}' data-status='{$sprint->status}' data-pm='{$sprint->PM}'");?>
<a href='#' id='sprintEdit' class='hidden'><i class="icon-common-edit icon-edit muted"></i></a>
</div>
<div class="sprintRename hidden">
<?php echo html::input("sprintRename_$sprint->id", $sprint->name, "class='form-control'");?>
<div class="btn-group">
<button type="button" class="btn btn-success name-confirm"><i class='icon icon-check'></i></button>
<button type="button" class="btn btn-gray name-cancel"><i class='icon icon-close'></i></button>
</div>
</div>
<?php endforeach;?>
</div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long