Merge branch 'master' into 'tianshujie_lang'
# Conflicts: # module/project/lang/de.php # module/project/lang/en.php # module/project/lang/fr.php
This commit is contained in:
@@ -281,8 +281,8 @@ class baseModel
|
||||
/* 设置扩展的名字和相应的文件。Set extenson name and extension file. */
|
||||
$moduleExtPath = $this->app->getModuleExtPath($this->appName, $moduleName, $type);
|
||||
if(!empty($moduleExtPath['site'])) $extensionFile = $moduleExtPath['site'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['custom'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['saas'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['custom'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['vision'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['xuan'] . 'class/' . $extensionName . '.class.php';
|
||||
if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['common'] . 'class/' . $extensionName . '.class.php';
|
||||
|
||||
@@ -35,7 +35,7 @@ function markReleasedBuilds($option)
|
||||
if(!$option.find('.label-released').length)
|
||||
{
|
||||
var optionText = $option.find('.picker-option-text').html();
|
||||
$option.find('.picker-option-text').replaceWith("<p class='picker-option-text no-margin'><span class='label label-released label-primary label-outline'>" + releasedBuild + "</span> " + optionText + "</p>");
|
||||
$option.find('.picker-option-text').replaceWith("<p class='picker-option-text no-margin'>" + optionText + " <span class='label label-released label-primary label-outline'>" + released + "</span></p>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,6 @@
|
||||
</div>
|
||||
<?php
|
||||
js::set('productID', $bug->product);
|
||||
js::set('releasedBuild', $lang->build->releasedBuild);
|
||||
js::set('released', $lang->build->released);
|
||||
?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
include '../../common/view/header.html.php';
|
||||
js::set('requiredFields', $config->bug->create->requiredFields);
|
||||
js::set('productID', $productID);
|
||||
js::set('releasedBuild', $lang->build->releasedBuild);
|
||||
js::set('released', $lang->build->released);
|
||||
?>
|
||||
<?php
|
||||
$visibleFields = array();
|
||||
|
||||
@@ -328,7 +328,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
|
||||
{
|
||||
$actionLink = $this->createLink('bug', 'batchResolve', "resolution=fixed&resolvedBuild=$key");
|
||||
echo "<li class='option' data-key='$key'>";
|
||||
echo html::a('javascript:;', (in_array($key, $releasedBuilds) ? "<span class='label label-primary label-outline'>{$lang->build->releasedBuild}</span> " : '') . $build, '', "onclick=\"setFormAction('$actionLink', 'hiddenwin', '#bugList')\"");
|
||||
echo html::a('javascript:;', $build . (in_array($key, $releasedBuilds) ? " <span class='label label-primary label-outline'>{$lang->build->released}</span> " : ''), '', "onclick=\"setFormAction('$actionLink', 'hiddenwin', '#bugList')\"");
|
||||
echo "</li>";
|
||||
}
|
||||
echo "</ul>";
|
||||
|
||||
@@ -31,7 +31,7 @@ js::set('requiredFields', $config->bug->create->requiredFields);
|
||||
js::set('showFields', $showFields);
|
||||
js::set('projectExecutionPairs', $projectExecutionPairs);
|
||||
js::set('productID', $productID);
|
||||
js::set('releasedBuild', $lang->build->releasedBuild);
|
||||
js::set('released', $lang->build->released);
|
||||
if($this->app->tab == 'execution') js::set('objectID', zget($execution, 'id', ''));
|
||||
if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
?>
|
||||
|
||||
@@ -31,7 +31,7 @@ js::set('bugBranch' , $bug->branch);
|
||||
js::set('isClosedBug' , $bug->status == 'closed');
|
||||
js::set('projectExecutionPairs' , $projectExecutionPairs);
|
||||
js::set('productID' , $product->id);
|
||||
js::set('releasedBuild' , $lang->build->releasedBuild);
|
||||
js::set('released' , $lang->build->released);
|
||||
if($this->app->tab == 'execution') js::set('objectID', $bug->execution);
|
||||
if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
?>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<?php
|
||||
js::set('page', 'resolve');
|
||||
js::set('productID', $bug->product);
|
||||
js::set('releasedBuild', $lang->build->releasedBuild);
|
||||
js::set('released', $lang->build->released);
|
||||
?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
|
||||
@@ -181,6 +181,7 @@ class build extends control
|
||||
}
|
||||
|
||||
$executions = $this->product->getExecutionPairsByProduct($build->product, $build->branch, 'id_desc', $this->session->project, 'stagefilter');
|
||||
if($build->execution and !isset($executions[$build->execution])) $executions[$build->execution] = $this->loadModel('execution')->getById($build->execution)->name;
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
|
||||
@@ -36,10 +36,11 @@ $lang->build->execution = $lang->executionCommon;
|
||||
$lang->build->integrated = 'Integrated';
|
||||
$lang->build->singled = 'Singled';
|
||||
$lang->build->builds = 'Included Builds';
|
||||
$lang->build->releasedBuild = 'Released Build';
|
||||
$lang->build->released = 'Released';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Datum';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->url = 'URL';
|
||||
$lang->build->scmPath = 'SCM Pfad';
|
||||
$lang->build->filePath = 'Dateipfad';
|
||||
$lang->build->desc = 'Beschreibung';
|
||||
|
||||
@@ -36,10 +36,11 @@ $lang->build->execution = $lang->executionCommon;
|
||||
$lang->build->integrated = 'Integrated';
|
||||
$lang->build->singled = 'Singled';
|
||||
$lang->build->builds = 'Included Builds';
|
||||
$lang->build->releasedBuild = 'Released Build';
|
||||
$lang->build->released = 'Released';
|
||||
$lang->build->name = 'Name';
|
||||
$lang->build->date = 'Date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->url = 'URL';
|
||||
$lang->build->scmPath = 'SCM Path';
|
||||
$lang->build->filePath = 'File Path';
|
||||
$lang->build->desc = 'Description';
|
||||
|
||||
@@ -36,10 +36,11 @@ $lang->build->execution = $lang->executionCommon;
|
||||
$lang->build->integrated = 'Integrated';
|
||||
$lang->build->singled = 'Singled';
|
||||
$lang->build->builds = 'Included Builds';
|
||||
$lang->build->releasedBuild = 'Released Build';
|
||||
$lang->build->released = 'Released';
|
||||
$lang->build->name = 'Nom';
|
||||
$lang->build->date = 'Date';
|
||||
$lang->build->builder = 'Builder';
|
||||
$lang->build->url = 'URL';
|
||||
$lang->build->scmPath = 'Chemin SCM';
|
||||
$lang->build->filePath = 'Chemin Fichier';
|
||||
$lang->build->desc = 'Description';
|
||||
|
||||
@@ -36,10 +36,11 @@ $lang->build->execution = '所属' . $lang->executionCommon;
|
||||
$lang->build->integrated = '集成版本';
|
||||
$lang->build->singled = '单一版本';
|
||||
$lang->build->builds = '包含版本';
|
||||
$lang->build->releasedBuild = '发布版本';
|
||||
$lang->build->released = '发布';
|
||||
$lang->build->name = '名称编号';
|
||||
$lang->build->date = '打包日期';
|
||||
$lang->build->builder = '构建者';
|
||||
$lang->build->url = '地址';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '下载地址';
|
||||
$lang->build->desc = '描述';
|
||||
|
||||
@@ -327,7 +327,7 @@ class buildModel extends model
|
||||
$releaseName = $release->name;
|
||||
$branchName = $release->branchName ? $release->branchName : $this->lang->branch->main;
|
||||
if($release->productType != 'normal') $releaseName = (strpos($params, 'withbranch') !== false ? $branchName . '/' : '') . $releaseName;
|
||||
if(strpos($params, 'releasetag') !== false) $releaseName = "[{$this->lang->build->releasedBuild}] " . $releaseName;
|
||||
if(strpos($params, 'releasetag') !== false) $releaseName = $releaseName . " [{$this->lang->build->released}]";
|
||||
$builds[$release->date][$release->shadow] = $releaseName;
|
||||
foreach(explode(',', trim($release->build, ',')) as $buildID)
|
||||
{
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<?php if(common::hasPriv('doc', 'collect')):?>
|
||||
<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 endif;?>
|
||||
<?php common::printLink('doc', 'edit', "docID=$doc->id&comment=false", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link iframe'", true, true)?>
|
||||
<?php common::printLink('doc', 'edit', "docID=$doc->id&comment=false", "<i class='icon icon-edit'></i>", '', "title='{$lang->edit}' class='btn btn-link'", true, false)?>
|
||||
<?php common::printLink('doc', 'delete', "docID=$doc->id&confirm=no", "<i class='icon icon-trash'></i>", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
|
||||
@@ -5189,6 +5189,7 @@ class executionModel extends model
|
||||
$_POST = array();
|
||||
$_POST['project'] = $projectID;
|
||||
$_POST['name'] = $project->name;
|
||||
$_POST['code'] = $project->code;
|
||||
$_POST['begin'] = $project->begin;
|
||||
$_POST['end'] = $project->end;
|
||||
$_POST['realBegan'] = $project->realBegan;
|
||||
@@ -5202,8 +5203,6 @@ class executionModel extends model
|
||||
$_POST['status'] = $project->status;
|
||||
$_POST['acl'] = 'open';
|
||||
|
||||
if(!empty($_POST['code'])) $_POST['code'] = $project->code;
|
||||
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchAll();
|
||||
foreach($projectProducts as $projectProduct)
|
||||
{
|
||||
|
||||
@@ -51,8 +51,7 @@
|
||||
<th class="c-id-sm"><?php echo $lang->build->id;?></th>
|
||||
<th class="c-name w-200px text-left <?php echo $hidden;?>"><?php echo $lang->build->product;?></th>
|
||||
<th class="c-name text-left"><?php echo $lang->build->name;?></th>
|
||||
<th class="c-url"><?php echo $lang->build->scmPath;?></th>
|
||||
<th class="c-url"><?php echo $lang->build->filePath;?></th>
|
||||
<th class="c-url w-300px text-left"><?php echo $lang->build->url;?></th>
|
||||
<th class="c-date"><?php echo $lang->build->date;?></th>
|
||||
<th class="c-user"><?php echo $lang->build->builder;?></th>
|
||||
<th class="c-actions-5"><?php echo $lang->actions;?></th>
|
||||
@@ -68,8 +67,12 @@
|
||||
<?php if($build->branchName) echo "<span class='label label-outline label-badge'>{$build->branchName}</span>"?>
|
||||
<?php echo html::a($this->createLink('build', 'view', "build=$build->id"), $build->name);?>
|
||||
</td>
|
||||
<td class="c-url" title="<?php echo $build->scmPath?>"><?php echo strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath;?></td>
|
||||
<td class="c-url" title="<?php echo $build->filePath?>"><?php echo strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath;?></td>
|
||||
<td class="c-url text-left">
|
||||
<?php
|
||||
if($build->scmPath) echo "<div><i class='icon icon-code' title='{$lang->build->scmPath}'></i> <span title='{$build->scmPath}'>" . (strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath) . '</span></div>';
|
||||
if($build->filePath) echo "<div><i class='icon icon-file-archive' title='{$lang->build->filePath}'></i> <span title='{$build->filePath}'>" . (strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath) . '</span></div>';
|
||||
?>
|
||||
</td>
|
||||
<td class="c-date"><?php echo $build->date?></td>
|
||||
<td class="c-user em"><?php echo zget($users, $build->builder);?></td>
|
||||
<td class="c-actions"><?php echo $this->build->buildOperateMenu($build, 'browse', "executionID={$execution->id}&productID={$productID}");?></td>
|
||||
|
||||
@@ -42,7 +42,7 @@ $lang->misc->zentao->support['ask'] = "Official Answer";
|
||||
$lang->misc->zentao->support['video'] = "Use Video";
|
||||
$lang->misc->zentao->support['qqgroup'] = "Official QQ Group";
|
||||
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Bug melden ";
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Report Bug";
|
||||
$lang->misc->zentao->cowin['feedback'] = "Feedback";
|
||||
$lang->misc->zentao->cowin['recommend'] = "More";
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ $lang->misc->zentao->support['ask'] = "Official Answer";
|
||||
$lang->misc->zentao->support['video'] = "Use Video";
|
||||
$lang->misc->zentao->support['qqgroup'] = "Official QQ Group";
|
||||
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Report Bug ";
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Report Bug";
|
||||
$lang->misc->zentao->cowin['feedback'] = "Feedback";
|
||||
$lang->misc->zentao->cowin['recommend'] = "More";
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ $lang->misc->zentao->support['ask'] = "Official Answer";
|
||||
$lang->misc->zentao->support['video'] = "Use Video";
|
||||
$lang->misc->zentao->support['qqgroup'] = "Official QQ Group";
|
||||
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Signaler un Bug";
|
||||
$lang->misc->zentao->cowin['reportbug'] = "Report Bug";
|
||||
$lang->misc->zentao->cowin['feedback'] = "Feedback";
|
||||
$lang->misc->zentao->cowin['recommend'] = "Plus...";
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ $lang->misc->zentao->support['ask'] = "官方问答";
|
||||
$lang->misc->zentao->support['video'] = "使用视频";
|
||||
$lang->misc->zentao->support['qqgroup'] = "官方QQ群";
|
||||
|
||||
$lang->misc->zentao->cowin['reportbug'] = "汇报Bug";
|
||||
$lang->misc->zentao->cowin['reportbug'] = "反馈Bug";
|
||||
$lang->misc->zentao->cowin['feedback'] = "反馈需求";
|
||||
$lang->misc->zentao->cowin['recommend'] = "推荐给朋友";
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ $lang->misc->zentao->support['ask'] = "官方問答";
|
||||
$lang->misc->zentao->support['video'] = "使用視頻";
|
||||
$lang->misc->zentao->support['qqgroup'] = "官方QQ群";
|
||||
|
||||
$lang->misc->zentao->cowin['reportbug'] = "彙報Bug";
|
||||
$lang->misc->zentao->cowin['reportbug'] = "反饋Bug";
|
||||
$lang->misc->zentao->cowin['feedback'] = "反饋需求";
|
||||
$lang->misc->zentao->cowin['translate'] = "參與翻譯";
|
||||
$lang->misc->zentao->cowin['recommend'] = "推薦給朋友";
|
||||
|
||||
@@ -1427,7 +1427,6 @@ class project extends control
|
||||
$queryID = ($type == 'bysearch') ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('project', 'build', "projectID=$projectID&type=bysearch&queryID=myQueryID");
|
||||
|
||||
$allExecutions = $this->loadModel('execution')->getByProject($projectID, 'all', '', true);
|
||||
$devel = $project->model == 'waterfall' ? true : false;
|
||||
$executions = $this->loadModel('execution')->getByProject($projectID, 'all', '', true, $devel);
|
||||
$this->config->build->search['fields']['execution'] = $this->project->lang->executionCommon;
|
||||
@@ -1488,8 +1487,7 @@ class project extends control
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->project = $project;
|
||||
$this->view->products = $products;
|
||||
$this->view->allExecutions = $allExecutions;
|
||||
$this->view->executions = $executions;
|
||||
$this->view->executions = $this->execution->getPairs();
|
||||
$this->view->buildPairs = $this->loadModel('build')->getBuildPairs(0);
|
||||
$this->view->type = $type;
|
||||
|
||||
|
||||
@@ -375,8 +375,8 @@ $lang->project->action->managed = '$date, managed by <strong>$actor</strong>. $e
|
||||
|
||||
$lang->project->multiple = "Multi {$lang->executionCommon}";
|
||||
|
||||
$lang->project->copyproject = new stdClass();
|
||||
$lang->project->copyproject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyproject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyproject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyproject->daysTips = '『Available working days』Should be numerical.';
|
||||
$lang->project->copyProject = new stdClass();
|
||||
$lang->project->copyProject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyProject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyProject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyProject->daysTips = '『Available working days』Should be numerical.';
|
||||
|
||||
@@ -375,8 +375,8 @@ $lang->project->action->managed = '$date, managed by <strong>$actor</strong>. $e
|
||||
|
||||
$lang->project->multiple = "Multi {$lang->executionCommon}";
|
||||
|
||||
$lang->project->copyproject = new stdClass();
|
||||
$lang->project->copyproject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyproject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyproject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyproject->daysTips = '『Available working days』Should be numerical.';
|
||||
$lang->project->copyProject = new stdClass();
|
||||
$lang->project->copyProject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyProject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyProject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyProject->daysTips = '『Available working days』Should be numerical.';
|
||||
|
||||
@@ -375,8 +375,8 @@ $lang->project->action->managed = '$date, managed by <strong>$actor</strong>. $e
|
||||
|
||||
$lang->project->multiple = "Multi {$lang->executionCommon}";
|
||||
|
||||
$lang->project->copyproject = new stdClass();
|
||||
$lang->project->copyproject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyproject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyproject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyproject->daysTips = '『Available working days』Should be numerical.';
|
||||
$lang->project->copyProject = new stdClass();
|
||||
$lang->project->copyProject->nameTips = '『Project Name』Cannot be repeated.';
|
||||
$lang->project->copyProject->codeTips = '『Project Code』Cannot be repeated.';
|
||||
$lang->project->copyProject->endTips = '『Schedule End』Cannot be empty.';
|
||||
$lang->project->copyProject->daysTips = '『Available working days』Should be numerical.';
|
||||
|
||||
@@ -375,8 +375,8 @@ $lang->project->action->managed = '$date, 由 <strong>$actor</strong> 维护。$
|
||||
|
||||
$lang->project->multiple = "启用{$lang->executionCommon}";
|
||||
|
||||
$lang->project->copyproject = new stdClass();
|
||||
$lang->project->copyproject->nameTips = '『项目名称』不可重复需要修改。';
|
||||
$lang->project->copyproject->codeTips = '『项目代号』不可重复需要修改。';
|
||||
$lang->project->copyproject->endTips = '『计划完成』不能为空。';
|
||||
$lang->project->copyproject->daysTips = '『可用工作日』应当是数字。';
|
||||
$lang->project->copyProject = new stdClass();
|
||||
$lang->project->copyProject->nameTips = '『项目名称』不可重复需要修改。';
|
||||
$lang->project->copyProject->codeTips = '『项目代号』不可重复需要修改。';
|
||||
$lang->project->copyProject->endTips = '『计划完成』不能为空。';
|
||||
$lang->project->copyProject->daysTips = '『可用工作日』应当是数字。';
|
||||
@@ -11,8 +11,6 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('allExecutions', $allExecutions)?>
|
||||
<?php js::set('executions', $executions)?>
|
||||
<?php js::set('projectID', $projectID)?>
|
||||
<?php js::set('noDevStage', $lang->project->noDevStage)?>
|
||||
<?php js::set('createExecution', $lang->project->createExecution)?>
|
||||
@@ -50,15 +48,14 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id-sm"><?php echo $lang->build->id;?></th>
|
||||
<th class="c-name text-left"><?php echo $lang->build->name;?></th>
|
||||
<th class="c-name w-250px text-left"><?php echo $lang->build->name;?></th>
|
||||
<?php if($project->hasProduct):?>
|
||||
<th class="c-name w-200px text-left"><?php echo $lang->build->product;?></th>
|
||||
<th class="c-name w-150px text-left"><?php echo $lang->build->product;?></th>
|
||||
<?php endif;?>
|
||||
<?php if($project->multiple):?>
|
||||
<th class="c-name text-left"><?php echo $lang->executionCommon;?></th>
|
||||
<th class="c-name w-150px text-left"><?php echo $lang->executionCommon;?></th>
|
||||
<?php endif;?>
|
||||
<th class="c-url"><?php echo $lang->build->scmPath;?></th>
|
||||
<th class="c-url"><?php echo $lang->build->filePath;?></th>
|
||||
<th class="c-url w-300px text-left"><?php echo $lang->build->url;?></th>
|
||||
<th class="c-date"><?php echo $lang->build->date;?></th>
|
||||
<th class="c-user"><?php echo $lang->build->builder;?></th>
|
||||
<th class="c-actions-5"><?php echo $lang->actions;?></th>
|
||||
@@ -71,11 +68,11 @@
|
||||
<tr data-id="<?php echo $productID;?>">
|
||||
<td class="c-id-sm text-muted"><?php echo html::a(helper::createLink($module, 'view', "buildID=$build->id"), sprintf('%03d', $build->id), '', "data-app='project'");?></td>
|
||||
<td class="c-name" title='<?php echo $build->name;?>'>
|
||||
<?php if(!$build->execution):?>
|
||||
<span class='icon icon-code-fork text-muted'></span>
|
||||
<?php endif;?>
|
||||
<?php if($build->branchName) echo "<span class='label label-outline label-badge'>{$build->branchName}</span>"?>
|
||||
<?php echo html::a($this->createLink($module, 'view', "buildID=$build->id"), $build->name, '', "data-app='project'");?>
|
||||
<?php if(!$build->execution):?>
|
||||
<span class='icon icon-code-fork text-muted' title='<?php echo $lang->build->integrated;?>'></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<?php if($project->hasProduct):?>
|
||||
<td class="c-name text-left" title='<?php echo $build->productName;?>'><?php echo $build->productName;?></td>
|
||||
@@ -91,7 +88,7 @@
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php foreach($childExecutions as $execution):?>
|
||||
<?php $executionName = zget($allExecutions, $execution, '');?>
|
||||
<?php $executionName = zget($executions, $execution, '');?>
|
||||
<?php if($executionName):?>
|
||||
<span title="<?php echo $executionName;?>"><?php echo $executionName;?></span></br>
|
||||
<?php endif;?>
|
||||
@@ -99,8 +96,12 @@
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
<td class="c-url" title="<?php echo $build->scmPath?>"><?php echo strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath;?></td>
|
||||
<td class="c-url" title="<?php echo $build->filePath?>"><?php echo strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath;?></td>
|
||||
<td class="c-url text-left">
|
||||
<?php
|
||||
if($build->scmPath) echo "<div><i class='icon icon-code' title='{$lang->build->scmPath}'></i> <span title='{$build->scmPath}'>" . (strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath) . '</span></div>';
|
||||
if($build->filePath) echo "<div><i class='icon icon-file-archive' title='{$lang->build->filePath}'></i> <span title='{$build->filePath}'>" . (strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath) . '</span></div>';
|
||||
?>
|
||||
</td>
|
||||
<td class="c-date"><?php echo $build->date?></td>
|
||||
<td class="c-user em"><?php echo zget($users, $build->builder);?></td>
|
||||
<td class="c-actions"><?php echo $this->build->buildOperateMenu($build, 'browse');?></td>
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
<?php $requiredFields = $config->project->create->requiredFields;?>
|
||||
<?php js::set('requiredFields', $requiredFields);?>
|
||||
<?php js::set('copyType', '');?>
|
||||
<?php js::set('nameTips', $lang->project->copyproject->nameTips);?>
|
||||
<?php js::set('codeTips', $lang->project->copyproject->codeTips);?>
|
||||
<?php js::set('endTips', $lang->project->copyproject->endTips);?>
|
||||
<?php js::set('daysTips', $lang->project->copyproject->daysTips);?>
|
||||
<?php js::set('nameTips', $lang->project->copyProject->nameTips);?>
|
||||
<?php js::set('codeTips', $lang->project->copyProject->codeTips);?>
|
||||
<?php js::set('endTips', $lang->project->copyProject->endTips);?>
|
||||
<?php js::set('daysTips', $lang->project->copyProject->daysTips);?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
|
||||
@@ -142,8 +142,6 @@ class projectrelease extends control
|
||||
$this->view->builds = $builds;
|
||||
$this->view->lastRelease = $this->projectrelease->getLast($projectID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->view->confirmLink = $this->lang->release->confirmLink;
|
||||
$this->view->notEmptyBuilds = $this->build->filterLinked(array_keys($builds));
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -816,9 +814,6 @@ class projectrelease extends control
|
||||
$releasedBuilds = $this->projectrelease->getReleasedBuilds($projectID);
|
||||
foreach($releasedBuilds as $build) unset($builds[$build]);
|
||||
|
||||
/* Get the builds of the linked stories or bugs. */
|
||||
$notEmptyBuilds = $this->build->filterLinked(array_keys($builds));
|
||||
|
||||
return print(html::select('build[]', $builds, '', "class='form-control chosen' multiple data-notemptybuilds='" . join(',', $notEmptyBuilds) . "'"));
|
||||
return print(html::select('build[]', $builds, '', "class='form-control chosen' multiple"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,3 @@
|
||||
$('#submit').click(function()
|
||||
{
|
||||
var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/);
|
||||
var name = $('#name').val();
|
||||
var date = $('#date').val();
|
||||
var build = $('#build').val();
|
||||
var notEmptyBuild = false;
|
||||
|
||||
$.each(build, function(index, value)
|
||||
{
|
||||
if(typeof(notEmptyBuilds[value]) != 'undefined')
|
||||
{
|
||||
notEmptyBuild = true;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
if(name && build && notEmptyBuild && dateFormat.test(date))
|
||||
{
|
||||
var result = confirm(confirmLink) ? true : false;
|
||||
$('#sync').val(result);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Ajax load unlinked builds with project and product.
|
||||
*
|
||||
@@ -35,10 +11,6 @@ function loadBuilds()
|
||||
$('#buildBox').load(createLink('projectrelease', 'ajaxLoadBuilds', "projectID=" + projectID + "&productID=" + productID + "&branch=" + branch), function()
|
||||
{
|
||||
$('#build').attr('data-placeholder', multipleSelect).chosen();
|
||||
$.each($('#build').attr('data-notemptybuilds').split(','), function(index, value)
|
||||
{
|
||||
notEmptyBuilds[value] = value;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('confirmLink', $confirmLink);?>
|
||||
<?php js::set('notEmptyBuilds', $notEmptyBuilds);?>
|
||||
<?php js::set('projectID', $projectID);?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
@@ -53,7 +51,12 @@
|
||||
<tr>
|
||||
<th><?php echo $lang->release->includedBuild;?></th>
|
||||
<td id='buildBox'><?php echo html::select('build[]', $builds, '', "class='form-control chosen' multiple data-placeholder='{$lang->build->placeholder->multipleSelect}'");?></td>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="sync" value="1" id="sync" checked>
|
||||
<label for="sync"><?php echo $lang->release->syncFromBuilds?></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->date;?></th>
|
||||
@@ -84,7 +87,6 @@
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php echo html::hidden('sync', 'false');?>
|
||||
<?php echo html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -96,7 +96,6 @@ class release extends control
|
||||
$this->view->builds = $builds;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->view->lastRelease = $this->release->getLast($productID, $branch);
|
||||
$this->view->notEmptyBuilds = $this->build->filterLinked(array_keys($builds));
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
$('#submit').click(function()
|
||||
{
|
||||
var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/);
|
||||
var name = $('#name').val();
|
||||
var date = $('#date').val();
|
||||
var build = $('#build').val();
|
||||
var notEmptyBuild = false;
|
||||
|
||||
$.each(build, function(index, value)
|
||||
{
|
||||
if(typeof(notEmptyBuilds[value]) != 'undefined')
|
||||
{
|
||||
notEmptyBuild = true;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
if(name && build && notEmptyBuild && dateFormat.test(date))
|
||||
{
|
||||
var result = confirm(confirmLink) ? true : false;
|
||||
$('#sync').val(result);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->release->batchUnlinkStory = "Mehrere Storys entfernen";
|
||||
$lang->release->batchUnlinkBug = "Mehrere Bugs entfernen";
|
||||
|
||||
$lang->release->confirmDelete = "Möchten Sie dieses Releas löschen?";
|
||||
$lang->release->confirmLink = "Whether to link the stories completed in the version and the bugs solved to the release?";
|
||||
$lang->release->syncFromBuilds = "Link the stories completed in the version and the bugs solved to the release";
|
||||
$lang->release->confirmUnlinkStory = "Möchten Sie diese Story löschen?";
|
||||
$lang->release->confirmUnlinkBug = "Möchten Sie diesen Bug löschen?";
|
||||
$lang->release->existBuild = '『Build』『%s』 existiert bereits. Sie können den 『name』 ändern oder ein anderes 『build』 wählen.';
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->release->batchUnlinkStory = "Batch Unlink Stories";
|
||||
$lang->release->batchUnlinkBug = "Batch Unlink Bugs";
|
||||
|
||||
$lang->release->confirmDelete = "Do you want to delete this release?";
|
||||
$lang->release->confirmLink = "Whether to link the stories completed in the version and the bugs solved to the release?";
|
||||
$lang->release->syncFromBuilds = "Link the stories completed in the version and the bugs solved to the release";
|
||||
$lang->release->confirmUnlinkStory = "Do you want to remove this story?";
|
||||
$lang->release->confirmUnlinkBug = "Do you want to remove this bug?";
|
||||
$lang->release->existBuild = '『Build』『%s』existed. You could change『name』or choose a『build』.';
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->release->batchUnlinkStory = "Retirer Stories par Lot";
|
||||
$lang->release->batchUnlinkBug = "Retirer Bugs par Lot";
|
||||
|
||||
$lang->release->confirmDelete = "Voulez-vous réellement supprimer cette release ?";
|
||||
$lang->release->confirmLink = "Whether to link the stories completed in the version and the bugs solved to the release?";
|
||||
$lang->release->syncFromBuilds = "Link the stories completed in the version and the bugs solved to the release";
|
||||
$lang->release->confirmUnlinkStory = "Voulez-vous retirer cette story de la release ?";
|
||||
$lang->release->confirmUnlinkBug = "Voulez-vous retirer ce bug de la release ?";
|
||||
$lang->release->existBuild = '『Build』『%s』existant. Vous pouvez changer『name』ou choisir un『build』.';
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->release->batchUnlinkStory = "批量移除{$lang->SRCommon}";
|
||||
$lang->release->batchUnlinkBug = "批量移除Bug";
|
||||
|
||||
$lang->release->confirmDelete = "您确认删除该发布吗?";
|
||||
$lang->release->confirmLink = "是否将版本中完成的{$lang->SRCommon}和已解决的Bug关联到发布下?";
|
||||
$lang->release->syncFromBuilds = "将版本中完成的{$lang->SRCommon}和已解决的Bug关联到发布下";
|
||||
$lang->release->confirmUnlinkStory = "您确认移除该{$lang->SRCommon}吗?";
|
||||
$lang->release->confirmUnlinkBug = "您确认移除该Bug吗?";
|
||||
$lang->release->existBuild = '『版本』已经有『%s』这条记录了。您可以更改『发布名称』或者选择一个『版本』。';
|
||||
|
||||
@@ -225,7 +225,7 @@ class releaseModel extends model
|
||||
$branches[$build->branch] = $build->branch;
|
||||
$projects[$build->project] = $build->project;
|
||||
|
||||
if($this->post->sync == 'true')
|
||||
if($this->post->sync)
|
||||
{
|
||||
$build->stories = trim($build->stories, ',');
|
||||
$build->bugs = trim($build->bugs, ',');
|
||||
@@ -233,7 +233,7 @@ class releaseModel extends model
|
||||
if($build->bugs) $release->bugs .= ',' . $build->bugs;
|
||||
}
|
||||
}
|
||||
if($this->post->sync == 'true' and $release->bugs)
|
||||
if($this->post->sync and $release->bugs)
|
||||
{
|
||||
$releaseBugs = $this->loadModel('bug')->getReleaseBugs(array_keys($builds), $release->product, $release->branch);
|
||||
$release->bugs = join(',', array_intersect(explode(',', $release->bugs), array_keys($releaseBugs)));
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('confirmLink', $lang->release->confirmLink);?>
|
||||
<?php js::set('notEmptyBuilds', $notEmptyBuilds);?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
@@ -36,7 +34,12 @@
|
||||
<tr>
|
||||
<th><?php echo $lang->release->includedBuild;?></th>
|
||||
<td><?php echo html::select('build[]', $builds, '', "class='form-control chosen' multiple data-placeholder='{$lang->build->placeholder->multipleSelect}'");?></td>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="sync" value="1" id="sync" checked>
|
||||
<label for="sync"><?php echo $lang->release->syncFromBuilds?></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->date;?></th>
|
||||
@@ -67,7 +70,6 @@
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php echo html::hidden('sync', 'false');?>
|
||||
<?php echo html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -698,6 +698,7 @@ class reportModel extends model
|
||||
{
|
||||
$effort = $this->dao->select('count(*) as count, sum(consumed) as consumed')->from(TABLE_EFFORT)
|
||||
->where('LEFT(date, 4)')->eq($year)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF($accounts)->andWhere('account')->in($accounts)->fi()
|
||||
->fetch();
|
||||
|
||||
|
||||
@@ -149,20 +149,6 @@ class buildTest
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for filterLinked method
|
||||
*
|
||||
* @param array $buildIdList
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function filterLinkedTest($buildIdList)
|
||||
{
|
||||
$notEmptyBuilds = $this->objectModel->filterLinked($buildIdList);
|
||||
sort($notEmptyBuilds);
|
||||
return empty($notEmptyBuilds) ? 'null' : join(',', $notEmptyBuilds);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function getLast test by build
|
||||
*
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 buildModel->filterLinked();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
不传任何数据 >> null
|
||||
迭代版本未关联需求和Bug >> null
|
||||
迭代版本关联需求和Bug >> 101
|
||||
项目版本关联版本关联需求和Bug >> 102
|
||||
项目版本关联版本未关联需求和Bug >> null
|
||||
版本列表中关联需求和Bug >> 101
|
||||
版本列表中混合项目版本和迭代版本 >> 101,102
|
||||
|
||||
*/
|
||||
|
||||
$build = new buildTest();
|
||||
|
||||
$buildData = new stdclass();
|
||||
$buildData->id = 100;
|
||||
$buildData->product = 1;
|
||||
$buildData->project = 1;
|
||||
$buildData->execution = 2;
|
||||
$buildData->name = 'test1';
|
||||
$buildData->date = date('Y-m-d');
|
||||
$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec();
|
||||
$buildId1 = $buildData->id;
|
||||
|
||||
$buildData->id = 101;
|
||||
$buildData->name = 'test2';
|
||||
$buildData->stories = '1,2,3';
|
||||
$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec();
|
||||
$buildId2 = $buildData->id;
|
||||
|
||||
$buildData = new stdclass();
|
||||
$buildData->id = 102;
|
||||
$buildData->product = 1;
|
||||
$buildData->project = 1;
|
||||
$buildData->execution = 0;
|
||||
$buildData->builds = ",$buildId2,";
|
||||
$buildData->name = 'test3';
|
||||
$buildData->date = date('Y-m-d');
|
||||
$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec();
|
||||
$buildId3 = $buildData->id;
|
||||
|
||||
$buildData = new stdclass();
|
||||
$buildData->id = 103;
|
||||
$buildData->product = 1;
|
||||
$buildData->project = 1;
|
||||
$buildData->execution = 0;
|
||||
$buildData->builds = ",$buildId1,";
|
||||
$buildData->name = 'test4';
|
||||
$buildData->date = date('Y-m-d');
|
||||
$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec();
|
||||
$buildId4 = $buildData->id;
|
||||
|
||||
|
||||
r($build->filterLinkedTest(array())) && p() && e('null'); //不传任何数据
|
||||
r($build->filterLinkedTest(array($buildId1))) && p() && e('null'); //迭代版本未关联需求和Bug
|
||||
r($build->filterLinkedTest(array($buildId2))) && p() && e('101'); //迭代版本关联需求和Bug
|
||||
r($build->filterLinkedTest(array($buildId3))) && p() && e('102'); //项目版本关联版本关联需求和Bug
|
||||
r($build->filterLinkedTest(array($buildId4))) && p() && e('null'); //项目版本关联版本未关联需求和Bug
|
||||
r($build->filterLinkedTest(array($buildId1, $buildId2))) && p() && e('101'); //版本列表中关联需求和Bug
|
||||
r($build->filterLinkedTest(array($buildId3, $buildId2))) && p() && e('101,102'); //版本列表中混合项目版本和迭代版本
|
||||
Reference in New Issue
Block a user