Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
ALTER TABLE `zt_project` CHANGE `lifetime` `lifetime` char(30) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `zt_story` ADD `category` varchar(30) NOT NULL DEFAULT 'feature' AFTER `type`;
|
||||
ALTER TABLE `zt_testtask` ADD `type` varchar(255) NOT NULL DEFAULT '' AFTER `build`;
|
||||
ALTER TABLE `zt_testtask` ADD `testreport` mediumint(8) unsigned NOT NULL AFTER `status`;
|
||||
|
||||
@@ -1060,6 +1060,7 @@ CREATE TABLE IF NOT EXISTS `zt_testtask` (
|
||||
`desc` text NOT NULL,
|
||||
`report` text NOT NULL,
|
||||
`status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait',
|
||||
`testreport` mediumint(8) unsigned NOT NULL,
|
||||
`auto` varchar(10) NOT NULL DEFAULT 'no',
|
||||
`subStatus` varchar(30) NOT NULL default '',
|
||||
`deleted` enum('0','1') NOT NULL default '0',
|
||||
|
||||
@@ -373,10 +373,10 @@ class build extends control
|
||||
}
|
||||
if($varName == 'testTaskBuild')
|
||||
{
|
||||
$builds = $this->build->getExecutionBuildPairs($executionID, $productID, $branch, 'noempty,notrunk');
|
||||
$builds = array('' => '') + $this->build->getExecutionBuildPairs($executionID, $productID, $branch, 'noempty,notrunk');
|
||||
if($isJsonView) die(json_encode($builds));
|
||||
|
||||
if(empty($builds))
|
||||
if(empty(array_filter($builds)))
|
||||
{
|
||||
$projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project');
|
||||
|
||||
@@ -385,7 +385,7 @@ class build extends control
|
||||
$html .= html::a("javascript:loadExecutionBuilds($executionID)", $this->lang->refresh);
|
||||
die($html);
|
||||
}
|
||||
die(html::select('build', $builds, $build, "class='form-control'"));
|
||||
die(html::select('build', $builds, $build, "class='form-control' onchange='loadTestReports(this.value)'"));
|
||||
}
|
||||
if($varName == 'dropdownList')
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$config->custom = new stdClass();
|
||||
$config->custom->canAdd['story'] = 'reasonList,sourceList,priList';
|
||||
$config->custom->canAdd['story'] = 'reasonList,sourceList,priList,categoryList';
|
||||
$config->custom->canAdd['task'] = 'priList,typeList,reasonList';
|
||||
$config->custom->canAdd['bug'] = 'priList,severityList,osList,browserList,typeList,resolutionList';
|
||||
$config->custom->canAdd['testcase'] = 'priList,typeList,stageList,resultList,statusList';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priority';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Close Reason';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priority';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Close Reason';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priorité';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Raison Fermeture';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Ưu tiên';
|
||||
$lang->custom->story->fields['sourceList'] = 'Nguồn';
|
||||
$lang->custom->story->fields['reasonList'] = 'Lý do đóng';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = '默认货币';
|
||||
$lang->custom->project->fields['unitList'] = '预算单位';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = '类型';
|
||||
$lang->custom->story->fields['priList'] = '优先级';
|
||||
$lang->custom->story->fields['sourceList'] = '来源';
|
||||
$lang->custom->story->fields['reasonList'] = '关闭原因';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->project->defaultCurrency = '預設貨幣';
|
||||
$lang->custom->project->fields['unitList'] = '預算單位';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = '類型';
|
||||
$lang->custom->story->fields['priList'] = '優先順序';
|
||||
$lang->custom->story->fields['sourceList'] = '來源';
|
||||
$lang->custom->story->fields['reasonList'] = '關閉原因';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Rechte kopieren';
|
||||
$lang->group->copyOptions['copyUser'] = 'Benutzer kopieren';
|
||||
|
||||
$lang->group->versions[''] = 'Verlauf';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copy Users';
|
||||
|
||||
$lang->group->versions[''] = 'History';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copier Privilèges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copier Utilisateurs';
|
||||
|
||||
$lang->group->versions[''] = 'History';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -1746,3 +1746,97 @@ $lang->changelog['12.3'][] = 'ci-commitResult';
|
||||
$lang->changelog['12.5'][] = 'story-batchToTask';
|
||||
$lang->changelog['12.5'][] = 'custom-product';
|
||||
$lang->changelog['12.5'][] = 'custom-project';
|
||||
|
||||
$lang->changelog['15.0.rc1'][] = 'program-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-product';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-start';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-suspend';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-activate';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-close';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-project';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-stakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-createStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unlinkStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-batchUnlinkStakeholders';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-group';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageView';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-managePriv';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageGroupMember';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-copyGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-editGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-qa';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGuide';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-moduleOpen';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-accessible';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-invest';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-workAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-contributeAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-testtask';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-doc';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-calendarAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-trackAB';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-processStoryChange';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-story';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-trackAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-importplanstories';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'automation-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'group-manageProjectAdmin';
|
||||
$lang->changelog['15.0.rc1'][] = 'user-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-editStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-browseStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setDefaultConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-deleteStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-index';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-buildIndex';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectbuild-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-browseAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-changeStatus';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-batchCreate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-issue';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewIssueAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-communicate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expectation';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-deleteExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-createExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-editExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-userIssue';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copy người dùng';
|
||||
|
||||
$lang->group->versions[''] = 'Lịch sử';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限';
|
||||
$lang->group->copyOptions['copyUser'] = '复制用户';
|
||||
|
||||
$lang->group->versions[''] = '修改历史';
|
||||
$lang->group->versions['15_0_rc1'] = '禅道15.0.rc1';
|
||||
$lang->group->versions['12_5'] = '禅道12.5';
|
||||
$lang->group->versions['12_3'] = '禅道12.3';
|
||||
$lang->group->versions['11_6_2'] = '禅道11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限';
|
||||
$lang->group->copyOptions['copyUser'] = '複製用戶';
|
||||
|
||||
$lang->group->versions[''] = '修改歷史';
|
||||
$lang->group->versions['15_0'] = '禪道15.0';
|
||||
$lang->group->versions['12_5'] = '禪道12.5';
|
||||
$lang->group->versions['12_3'] = '禪道12.3';
|
||||
$lang->group->versions['11_6_2'] = '禪道11.6.2';
|
||||
|
||||
@@ -41,20 +41,64 @@ class personnelModel extends model
|
||||
/* Determine who can be accessed based on access control. */
|
||||
$program = $this->loadModel('program')->getByID($programID);
|
||||
$personnelList = array();
|
||||
if($program->acl != 'open')
|
||||
$personnelList = $this->dao->select('t2.id,t2.dept,t2.account,t2.role,t2.realname,t2.gender')->from(TABLE_USERVIEW)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account')
|
||||
->where('t2.deleted')->eq(0)
|
||||
->beginIF($program->acl != 'open')->andWhere("CONCAT(',', t1.programs, ',')")->like("%,$programID,%")
|
||||
->beginIF($deptID > 0)->andWhere('t2.dept')->eq($deptID)->fi()
|
||||
->beginIF($browseType == 'bysearch')->andWhere($accessibleQuery)->fi()
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
|
||||
if($program->acl == 'open')
|
||||
{
|
||||
$personnelList = $this->dao->select('t2.id,t2.dept,t2.account,t2.role,t2.realname,t2.gender')->from(TABLE_USERVIEW)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account')
|
||||
->where("CONCAT(',', t1.programs, ',')")->like("%,$programID,%")
|
||||
->beginIF($deptID > 0)->andWhere('t2.dept')->eq($deptID)->fi()
|
||||
->beginIF($browseType == 'bysearch')->andWhere($accessibleQuery)->fi()
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
foreach($personnelList as $personnel)
|
||||
{
|
||||
if(!$this->canViewProgram($programID, $personnel->account)) unset($personnelList[$personnel->id]);
|
||||
}
|
||||
}
|
||||
|
||||
return $personnelList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if you have permission to view the program.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $account
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function canViewProgram($programID, $account)
|
||||
{
|
||||
if(strpos($this->app->company->admins, ",{$account},") !== false) return true;
|
||||
static $groupAcl = array();
|
||||
if(empty($groupAcl)) $groupAcl = $this->dao->select('id,acl')->from(TABLE_GROUP)->fetchPairs();
|
||||
|
||||
static $userGroups = array();
|
||||
if(empty($userGroups)) $userGroups = $this->dao->select('*')->from(TABLE_USERGROUP)->fetchGroup('account', 'group');
|
||||
|
||||
$programRight = false;
|
||||
if(isset($userGroups[$account]))
|
||||
{
|
||||
foreach($userGroups[$account] as $groupID => $userGroup)
|
||||
{
|
||||
$group = json_decode($groupAcl[$groupID]);
|
||||
if(!isset($group->programs))
|
||||
{
|
||||
$programRight = true;
|
||||
continue;
|
||||
}
|
||||
elseif(in_array($programID, $group->programs))
|
||||
{
|
||||
$programRight = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $programRight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get invest person list.
|
||||
*
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
<?php include '../../common/view/header.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<?php if($acl != 'open'): ?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
@@ -24,19 +23,15 @@ js::set('deptID', $deptID);
|
||||
<a id="bysearchTab" class="btn btn-link querybox-toggle"><i class="icon icon-search muted"></i><?php echo $lang->personnel->search;?></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<?php if($acl != 'open'): ?>
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
<?php echo $deptTree;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="main-col">
|
||||
<div id="queryBox" class="cell <?php if($browseType == 'bysearch') echo ' show';?>" data-module="accessible"></div>
|
||||
<?php if(!empty($personnelList)):?>
|
||||
<form class="main-table table-personnel" action="" data-ride="table">
|
||||
<table id="accessibleList" class="table has-sort-head">
|
||||
<thead>
|
||||
@@ -67,12 +62,5 @@ js::set('deptID', $deptID);
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $acl == 'open' ? $lang->personnel->openedPGMTip : $lang->noData;?></span>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -95,7 +95,7 @@ $lang->story->source = 'Von';
|
||||
$lang->story->sourceNote = 'Hinweis';
|
||||
$lang->story->fromBug = 'Von Bug';
|
||||
$lang->story->title = 'Titel';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->category = 'Category';
|
||||
$lang->story->color = 'Color';
|
||||
$lang->story->toBug = 'ToBug';
|
||||
$lang->story->spec = 'Beschreibung';
|
||||
@@ -387,3 +387,11 @@ $lang->story->convertToTask->fieldList['spec'] = "Description";
|
||||
$lang->story->convertToTask->fieldList['pri'] = 'Priority';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = 'Mailto';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = 'AssignTo';
|
||||
|
||||
$lang->story->categoryList['feature'] = 'Feature';
|
||||
$lang->story->categoryList['interface'] = 'Interface';
|
||||
$lang->story->categoryList['performance'] = 'Performance';
|
||||
$lang->story->categoryList['safe'] = 'Safe';
|
||||
$lang->story->categoryList['experience'] = 'Experience';
|
||||
$lang->story->categoryList['improve'] = 'Improve';
|
||||
$lang->story->categoryList['other'] = 'Other';
|
||||
|
||||
@@ -96,7 +96,7 @@ $lang->story->source = 'From';
|
||||
$lang->story->sourceNote = 'Note';
|
||||
$lang->story->fromBug = 'From Bug';
|
||||
$lang->story->title = 'Title';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->category = 'Category';
|
||||
$lang->story->color = 'Color';
|
||||
$lang->story->toBug = 'ToBug';
|
||||
$lang->story->spec = 'Description';
|
||||
@@ -388,3 +388,11 @@ $lang->story->convertToTask->fieldList['spec'] = "Description";
|
||||
$lang->story->convertToTask->fieldList['pri'] = 'Priority';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = 'Mailto';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = 'AssignTo';
|
||||
|
||||
$lang->story->categoryList['feature'] = 'Feature';
|
||||
$lang->story->categoryList['interface'] = 'Interface';
|
||||
$lang->story->categoryList['performance'] = 'Performance';
|
||||
$lang->story->categoryList['safe'] = 'Safe';
|
||||
$lang->story->categoryList['experience'] = 'Experience';
|
||||
$lang->story->categoryList['improve'] = 'Improve';
|
||||
$lang->story->categoryList['other'] = 'Other';
|
||||
|
||||
@@ -95,7 +95,7 @@ $lang->story->source = 'De';
|
||||
$lang->story->sourceNote = 'Note';
|
||||
$lang->story->fromBug = 'Depuis Bug';
|
||||
$lang->story->title = 'Titre';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->category = 'Category';
|
||||
$lang->story->color = 'Couleur';
|
||||
$lang->story->toBug = 'Vers Bug';
|
||||
$lang->story->spec = 'Description';
|
||||
@@ -387,3 +387,11 @@ $lang->story->convertToTask->fieldList['spec'] = "Description";
|
||||
$lang->story->convertToTask->fieldList['pri'] = 'Priority';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = 'Mailto';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = 'AssignTo';
|
||||
|
||||
$lang->story->categoryList['feature'] = 'Feature';
|
||||
$lang->story->categoryList['interface'] = 'Interface';
|
||||
$lang->story->categoryList['performance'] = 'Performance';
|
||||
$lang->story->categoryList['safe'] = 'Safe';
|
||||
$lang->story->categoryList['experience'] = 'Experience';
|
||||
$lang->story->categoryList['improve'] = 'Improve';
|
||||
$lang->story->categoryList['other'] = 'Other';
|
||||
|
||||
@@ -95,7 +95,7 @@ $lang->story->source = 'Từ';
|
||||
$lang->story->sourceNote = 'Ghi chú';
|
||||
$lang->story->fromBug = 'Từ Bug';
|
||||
$lang->story->title = 'Tiêu đề';
|
||||
$lang->story->type = 'Loại';
|
||||
$lang->story->category = 'Category';
|
||||
$lang->story->color = 'Màu';
|
||||
$lang->story->toBug = 'Tới Bug';
|
||||
$lang->story->spec = 'Mô tả';
|
||||
@@ -387,3 +387,11 @@ $lang->story->convertToTask->fieldList['spec'] = "Description";
|
||||
$lang->story->convertToTask->fieldList['pri'] = 'Priority';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = 'Mailto';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = 'AssignTo';
|
||||
|
||||
$lang->story->categoryList['feature'] = 'Feature';
|
||||
$lang->story->categoryList['interface'] = 'Interface';
|
||||
$lang->story->categoryList['performance'] = 'Performance';
|
||||
$lang->story->categoryList['safe'] = 'Safe';
|
||||
$lang->story->categoryList['experience'] = 'Experience';
|
||||
$lang->story->categoryList['improve'] = 'Improve';
|
||||
$lang->story->categoryList['other'] = 'Other';
|
||||
|
||||
@@ -96,7 +96,7 @@ $lang->story->source = "来源";
|
||||
$lang->story->sourceNote = '来源备注';
|
||||
$lang->story->fromBug = '来源Bug';
|
||||
$lang->story->title = "{$lang->SRCommon}名称";
|
||||
$lang->story->type = "类型";
|
||||
$lang->story->category = "类型";
|
||||
$lang->story->color = '标题颜色';
|
||||
$lang->story->toBug = '转Bug';
|
||||
$lang->story->spec = "描述";
|
||||
@@ -388,3 +388,11 @@ $lang->story->convertToTask->fieldList['spec'] = "{$lang->SRCommon}描述"
|
||||
$lang->story->convertToTask->fieldList['pri'] = '优先级';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = '抄送给';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = '指派给';
|
||||
|
||||
$lang->story->categoryList['feature'] = '功能';
|
||||
$lang->story->categoryList['interface'] = '接口';
|
||||
$lang->story->categoryList['performance'] = '性能';
|
||||
$lang->story->categoryList['safe'] = '安全';
|
||||
$lang->story->categoryList['experience'] = '体验';
|
||||
$lang->story->categoryList['improve'] = '改进';
|
||||
$lang->story->categoryList['other'] = '其他';
|
||||
|
||||
@@ -96,7 +96,7 @@ $lang->story->source = "來源";
|
||||
$lang->story->sourceNote = '來源備註';
|
||||
$lang->story->fromBug = '來源Bug';
|
||||
$lang->story->title = "{$lang->SRCommon}名稱";
|
||||
$lang->story->type = "類型";
|
||||
$lang->story->category = "類型";
|
||||
$lang->story->color = '標題顏色';
|
||||
$lang->story->toBug = '轉Bug';
|
||||
$lang->story->spec = "描述";
|
||||
@@ -388,3 +388,11 @@ $lang->story->convertToTask->fieldList['spec'] = "{$lang->SRCommon}描述"
|
||||
$lang->story->convertToTask->fieldList['pri'] = '優先順序';
|
||||
$lang->story->convertToTask->fieldList['mailto'] = '抄送給';
|
||||
$lang->story->convertToTask->fieldList['assignedTo'] = '指派給';
|
||||
|
||||
$lang->story->categoryList['feature'] = '功能';
|
||||
$lang->story->categoryList['interface'] = '介面';
|
||||
$lang->story->categoryList['performance'] = '效能';
|
||||
$lang->story->categoryList['safe'] = '安全';
|
||||
$lang->story->categoryList['experience'] = '體驗';
|
||||
$lang->story->categoryList['improve'] = '改進';
|
||||
$lang->story->categoryList['other'] = '其他';
|
||||
|
||||
@@ -155,6 +155,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<?php if(strpos(",$showFields,", ',pri,') !== false): // begin print pri selector?>
|
||||
<div class='table-col w-150px'>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->story->category;?></span>
|
||||
<?php echo html::select('category', $lang->story->categoryList, 'feature', "class='form-control chosen'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='table-col w-120px'>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->story->pri;?></span>
|
||||
|
||||
+31
-11
@@ -244,6 +244,8 @@ class testtask extends control
|
||||
$executions = empty($productID) ? array() : $this->loadModel('product')->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
|
||||
$builds = empty($productID) ? array() : $this->loadModel('build')->getProductBuildPairs($productID, 0, 'notrunk', true);
|
||||
|
||||
$testreports = empty($build) ? array() : $this->dao->select('id,title')->from(TABLE_TESTREPORT)->where('builds')->like('%' . $build . '%')->fetchPairs('id','title');
|
||||
|
||||
/* Set menu. */
|
||||
$productID = $this->product->saveState($productID, $this->products);
|
||||
|
||||
@@ -258,6 +260,7 @@ class testtask extends control
|
||||
$this->view->executions = $executions;
|
||||
$this->view->builds = $builds;
|
||||
$this->view->build = $build;
|
||||
$this->view->testreports = $testreports;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|qdfirst|nodeleted');
|
||||
|
||||
$this->display();
|
||||
@@ -317,13 +320,14 @@ class testtask extends control
|
||||
$this->view->position[] = $this->lang->testtask->common;
|
||||
$this->view->position[] = $this->lang->testtask->view;
|
||||
|
||||
$this->view->productID = $productID;
|
||||
$this->view->task = $task;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter');
|
||||
$this->view->actions = $this->loadModel('action')->getList('testtask', $taskID);
|
||||
$this->view->build = $build;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->task = $task;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter');
|
||||
$this->view->actions = $this->loadModel('action')->getList('testtask', $taskID);
|
||||
$this->view->build = $build;
|
||||
$this->view->testreportTitle = $this->dao->select('title')->from(TABLE_TESTREPORT)->where('id')->eq($task->testreport)->fetch('title');
|
||||
$this->view->stories = $stories;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -742,14 +746,16 @@ class testtask extends control
|
||||
$this->view->position[] = $this->lang->testtask->edit;
|
||||
|
||||
/* Create testtask from testtask of test.*/
|
||||
$productID = $productID ? $productID : key($this->products);
|
||||
$projectID = $this->lang->navGroup->testtask == 'qa' ? 0 : $this->session->project;
|
||||
$executions = empty($productID) ? array() : $this->product->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
|
||||
$builds = empty($productID) ? array() : $this->loadModel('build')->getProductBuildPairs($productID, 0, 'notrunk', true);
|
||||
$productID = $productID ? $productID : key($this->products);
|
||||
$projectID = $this->lang->navGroup->testtask == 'qa' ? 0 : $this->session->project;
|
||||
$executions = empty($productID) ? array() : $this->product->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
|
||||
$builds = empty($productID) ? array() : $this->loadModel('build')->getProductBuildPairs($productID, 0, 'notrunk', true);
|
||||
$testreports = $this->dao->select('id,title')->from(TABLE_TESTREPORT)->where('builds')->like('%' . $task->build . '%')->fetchPairs('id','title');
|
||||
|
||||
$this->view->task = $task;
|
||||
$this->view->executions = $executions;
|
||||
$this->view->builds = $builds;
|
||||
$this->view->testreports = $testreports;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('nodeleted', $task->owner);
|
||||
$this->view->contactLists = $this->user->getContactLists($this->app->user->account, 'withnote');
|
||||
|
||||
@@ -1413,4 +1419,18 @@ class testtask extends control
|
||||
$pairs = $this->testtask->getPairs($productID, $executionID);
|
||||
die(html::select('testtask', $pairs, '', "class='form-control chosen'"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get test report.
|
||||
*
|
||||
* @param int $buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetTestReports($buildID)
|
||||
{
|
||||
/* Testreport list. */
|
||||
$pairs = $this->dao->select('id,title')->from(TABLE_TESTREPORT)->where('builds')->like('%' . $buildID . '%')->fetchPairs('id','title');
|
||||
die(html::select('testreport', $pairs, '', "class='form-control chosen'"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +94,25 @@ function loadExecutionBuilds(executionID)
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load test report.
|
||||
*
|
||||
* @param int buildID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadTestReports(buildID)
|
||||
{
|
||||
link = createLink('testtask', 'ajaxGetTestReports', 'buildID=' + buildID);
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="testreport" name="testreport" class="form-control"></select>';
|
||||
$('#testreport').replaceWith(data);
|
||||
$('#testreport_chosen').remove();
|
||||
$("#testreport").chosen();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* when begin date input change and end date input is null
|
||||
* change end date input to begin's after day
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
function loadProductRelated()
|
||||
{
|
||||
loadExecutions($('#product').val());
|
||||
data = '<select id="build" name="build" class="form-control"></select>';
|
||||
$('#build').replaceWith(data);
|
||||
buildData = '<select id="build" name="build" class="form-control" onchange="loadTestReports(this.value)"></select>';
|
||||
$('#build').replaceWith(buildData);
|
||||
$('#build_chosen').remove();
|
||||
$("#build").chosen();
|
||||
$('#build').trigger("chosen:updated");
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->testtask->desc = 'Beschreibung';
|
||||
$lang->testtask->mailto = 'Mail an';
|
||||
$lang->testtask->status = 'Status';
|
||||
$lang->testtask->subStatus = 'Sub Status';
|
||||
$lang->testtask->testreport = 'Test Report';
|
||||
$lang->testtask->assignedTo = 'Zugeordnet';
|
||||
$lang->testtask->linkVersion = 'Version';
|
||||
$lang->testtask->lastRunAccount = 'Ausgeführt von';
|
||||
|
||||
@@ -75,6 +75,7 @@ $lang->testtask->desc = 'Description';
|
||||
$lang->testtask->mailto = 'Mailto';
|
||||
$lang->testtask->status = 'Status';
|
||||
$lang->testtask->subStatus = 'Sub Status';
|
||||
$lang->testtask->testreport = 'Test Report';
|
||||
$lang->testtask->assignedTo = 'Assigned';
|
||||
$lang->testtask->linkVersion = 'Build';
|
||||
$lang->testtask->lastRunAccount = 'RunBy';
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->testtask->desc = 'Description';
|
||||
$lang->testtask->mailto = 'Mailto';
|
||||
$lang->testtask->status = 'Statut';
|
||||
$lang->testtask->subStatus = 'Sous-statut';
|
||||
$lang->testtask->testreport = 'Test Report';
|
||||
$lang->testtask->assignedTo = 'Affecté';
|
||||
$lang->testtask->linkVersion = 'Build';
|
||||
$lang->testtask->lastRunAccount = 'Jouée par';
|
||||
|
||||
@@ -72,6 +72,7 @@ $lang->testtask->desc = 'Mô tả';
|
||||
$lang->testtask->mailto = 'Mail tới';
|
||||
$lang->testtask->status = 'Tình trạng';
|
||||
$lang->testtask->subStatus = 'Tình trạng con';
|
||||
$lang->testtask->testreport = 'Test Report';
|
||||
$lang->testtask->assignedTo = 'Đã giao';
|
||||
$lang->testtask->linkVersion = 'Bản dựng';
|
||||
$lang->testtask->lastRunAccount = 'Chạy bởi';
|
||||
|
||||
@@ -75,6 +75,7 @@ $lang->testtask->desc = '描述';
|
||||
$lang->testtask->mailto = '抄送给';
|
||||
$lang->testtask->status = '当前状态';
|
||||
$lang->testtask->subStatus = '子状态';
|
||||
$lang->testtask->testreport = '相关测试报告';
|
||||
$lang->testtask->assignedTo = '指派给';
|
||||
$lang->testtask->linkVersion = '版本';
|
||||
$lang->testtask->lastRunAccount = '执行人';
|
||||
|
||||
@@ -75,6 +75,7 @@ $lang->testtask->desc = '描述';
|
||||
$lang->testtask->mailto = '抄送給';
|
||||
$lang->testtask->status = '當前狀態';
|
||||
$lang->testtask->subStatus = '子狀態';
|
||||
$lang->testtask->testreport = '相關測試報告';
|
||||
$lang->testtask->assignedTo = '指派給';
|
||||
$lang->testtask->linkVersion = '版本';
|
||||
$lang->testtask->lastRunAccount = '執行人';
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<table class='table table-form'>
|
||||
<?php if(isset($executionID)):?>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->testtask->product;?></th>
|
||||
<th class='w-100px'><?php echo $lang->testtask->product;?></th>
|
||||
<td class='w-p35-f'><?php echo html::select('product', $products, $productID, "class='form-control chosen' onchange='loadProductRelated()'");?></td><td></td>
|
||||
</tr>
|
||||
<?php else:?>
|
||||
@@ -41,7 +41,7 @@
|
||||
<th class='w-80px'><?php echo $lang->testtask->build;?></th>
|
||||
<td class='w-p35-f'>
|
||||
<div class='input-group' id='buildBox'>
|
||||
<?php echo html::select('build', empty($builds) ? '' : $builds, $build, "class='form-control chosen'");?>
|
||||
<?php echo html::select('build', empty($builds) ? '' : $builds, $build, "class='form-control chosen' onchange='loadTestReports(this.value)'");?>
|
||||
<?php if(isset($executionID) and $executionID and empty($builds)):?>
|
||||
<span class='input-group-addon'><?php echo html::a(helper::createLink('build', 'create', "executionID=$executionID&productID=$productID&projectID=$projectID", '', true), $lang->build->create, '', "data-toggle='modal' data-type='iframe' data-width='95%'")?> </span>
|
||||
</div>
|
||||
@@ -78,6 +78,10 @@
|
||||
<th><?php echo $lang->testtask->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->testtask->statusList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->testtask->testreport;?></th>
|
||||
<td><?php echo html::select('testreport', $testreports, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->testtask->name;?></th>
|
||||
<td colspan='2'><?php echo html::input('name', '', "class='form-control'");?></td>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<form method='post' class="main-form form-ajax" enctype="multipart/form-data" id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->testtask->execution;?></th>
|
||||
<th class='w-100px'><?php echo $lang->testtask->execution;?></th>
|
||||
<td class='w-p35-f'>
|
||||
<?php
|
||||
echo html::select('execution', $executions, $task->execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");
|
||||
@@ -35,7 +35,7 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->testtask->build;?></th>
|
||||
<th><?php echo $lang->testtask->build;?></th>
|
||||
<td class='w-p35-f'><span id='buildBox'><?php echo html::select('build', $builds, $task->build, "class='form-control chosen'");?></span></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
@@ -67,6 +67,10 @@
|
||||
<th><?php echo $lang->testtask->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->testtask->statusList, $task->status, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->testtask->testreport;?></th>
|
||||
<td><?php echo html::select('testreport', $testreports, $task->testreport, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->testtask->name;?></th>
|
||||
<td colspan='2'><?php echo html::input('name', $task->name, "class='form-control'");?></td>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<table class="table table-data table-fixed">
|
||||
<?php $isOnlybody = helper::inOnlyBodyMode(); ?>
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->testtask->execution;?></th>
|
||||
<th class='w-90px'><?php echo $lang->testtask->execution;?></th>
|
||||
<td><?php echo $isOnlybody ? $task->executionName : html::a($this->createLink('execution', 'story', "executionID=$task->execution"), $task->executionName, '', "title='{$task->executionName}'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -128,6 +128,10 @@
|
||||
<th><?php echo $lang->testtask->status;?></th>
|
||||
<td class='task-<?php echo $task->status?>'><?php echo $this->processStatus('testtask', $task);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->testtask->testreport;?></th>
|
||||
<td class="c-name" title="<?php echo $testreportTitle;?>"><?php echo empty($task->testreport) ? '' : html::a($this->createLink('testreport', 'view', "reportID=$task->testreport"), $testreportTitle);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -303,7 +303,7 @@ class userModel extends model
|
||||
$this->loadModel('mail');
|
||||
if($this->config->mail->mta == 'sendcloud' and !empty($user->email)) $this->mail->syncSendCloud('sync', $user->email, $user->realname);
|
||||
|
||||
return $usereID;
|
||||
return $userID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user