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:
孙广明
2022-12-05 02:30:02 +00:00
43 changed files with 91 additions and 221 deletions
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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>");
}
}
}
+1 -1
View File
@@ -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';?>
+1 -1
View File
@@ -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();
+1 -1
View File
@@ -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>";
+1 -1
View File
@@ -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);
?>
+1 -1
View File
@@ -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);
?>
+1 -1
View File
@@ -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'>
+1
View File
@@ -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';
+2 -1
View File
@@ -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';
+2 -1
View File
@@ -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';
+2 -1
View File
@@ -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';
+2 -1
View File
@@ -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 = '描述';
+1 -1
View File
@@ -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)
{
+1 -1
View File
@@ -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>
+1 -2
View File
@@ -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)
{
+7 -4
View File
@@ -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>
+1 -1
View File
@@ -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";
+1 -1
View File
@@ -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";
+1 -1
View File
@@ -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...";
+1 -1
View File
@@ -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'] = "推荐给朋友";
+1 -1
View File
@@ -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'] = "推薦給朋友";
+1 -3
View File
@@ -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;
+5 -5
View File
@@ -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.';
+5 -5
View File
@@ -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.';
+5 -5
View File
@@ -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.';
+5 -5
View File
@@ -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 = '『可用工作日』应当是数字。';
+14 -13
View File
@@ -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>
+4 -4
View File
@@ -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'>
+1 -6
View File
@@ -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"));
}
}
-28
View File
@@ -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;
});
});
}
+6 -4
View File
@@ -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>
-1
View File
@@ -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();
}
-23
View File
@@ -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);
}
});
+1 -1
View File
@@ -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.';
+1 -1
View File
@@ -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』.';
+1 -1
View File
@@ -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』.';
+1 -1
View File
@@ -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』这条记录了。您可以更改『发布名称』或者选择一个『版本』。';
+2 -2
View File
@@ -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)));
+6 -4
View File
@@ -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>
+1
View File
@@ -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();
-14
View File
@@ -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
*
-70
View File
@@ -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'); //版本列表中混合项目版本和迭代版本