This commit is contained in:
Catouse
2016-04-29 09:40:45 +08:00
9 changed files with 48 additions and 91 deletions
+1
View File
@@ -332,6 +332,7 @@ class block extends control
$this->app->user = new stdclass();
$this->app->user->account = 'guest';
}
$this->app->user->rights = $this->loadModel('user')->authorize($this->app->user->account);
$sso = base64_decode($this->get->sso);
$this->view->sso = $sso;
+17 -13
View File
@@ -129,31 +129,35 @@ $lang->block->availableBlocks->case = 'My case';
$lang->block->availableBlocks->story = 'My story';
$lang->block->availableBlocks->product = $lang->productCommon;
$lang->block->availableBlocks->project = $lang->projectCommon;
$lang->block->availableBlocks->plan = 'Plan list';
$lang->block->availableBlocks->release = 'Release list';
$lang->block->availableBlocks->build = 'Build list';
$lang->block->availableBlocks->testtask = 'Test build list';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['qa'] = '测试';
$lang->block->moduleList['todo'] = '待办';
$lang->block->moduleList['qa'] = 'Test';
$lang->block->moduleList['todo'] = 'Todo';
$lang->block->modules['product'] = new stdclass();
$lang->block->modules['product']->availableBlocks = new stdclass();
$lang->block->modules['product']->availableBlocks->list = $lang->productCommon . '列表';
$lang->block->modules['product']->availableBlocks->story = '需求列表';
$lang->block->modules['product']->availableBlocks->plan = '计划列表';
$lang->block->modules['product']->availableBlocks->release = '发布列表';
$lang->block->modules['product']->availableBlocks->list = $lang->productCommon . ' list';
$lang->block->modules['product']->availableBlocks->story = 'Story list';
$lang->block->modules['product']->availableBlocks->plan = 'Plan list';
$lang->block->modules['product']->availableBlocks->release = 'Release list';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . '列表';
$lang->block->modules['project']->availableBlocks->task = '任务列表';
$lang->block->modules['project']->availableBlocks->build = '版本列表';
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . ' list';
$lang->block->modules['project']->availableBlocks->task = 'Task list';
$lang->block->modules['project']->availableBlocks->build = 'Build list';
$lang->block->modules['qa'] = new stdclass();
$lang->block->modules['qa']->availableBlocks = new stdclass();
$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表';
$lang->block->modules['qa']->availableBlocks->case = '用例列表';
$lang->block->modules['qa']->availableBlocks->testtask = '版本列表';
$lang->block->modules['qa']->availableBlocks->bug = 'Bug list';
$lang->block->modules['qa']->availableBlocks->case = 'Case list';
$lang->block->modules['qa']->availableBlocks->testtask = 'Test build list';
$lang->block->modules['todo'] = new stdclass();
$lang->block->modules['todo']->availableBlocks = new stdclass();
$lang->block->modules['todo']->availableBlocks->list = '待办列表';
$lang->block->modules['todo']->availableBlocks->list = 'Todo list';
$lang->block->orderByList = new stdclass();
+11 -7
View File
@@ -122,13 +122,17 @@ $lang->block->orderBy = '排序';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = '我的待办';
$lang->block->availableBlocks->task = '我的任务';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->availableBlocks->todo = '我的待办';
$lang->block->availableBlocks->task = '我的任务';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->availableBlocks->plan = '计划列表';
$lang->block->availableBlocks->release = '发布列表';
$lang->block->availableBlocks->build = '版本列表';
$lang->block->availableBlocks->testtask = '测试版本列表';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = $lang->projectCommon;
+2 -2
View File
@@ -84,7 +84,7 @@ js::set('refresh', $lang->refresh);
</div>
</td>
</tr>
<?php $showOs = strpos(",$showFields,", ',os,') !== false;?>
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
<tr>
<th><?php echo $lang->bug->type;?></th>
@@ -97,7 +97,7 @@ js::set('refresh', $lang->refresh);
unset($lang->bug->typeList['trackthings']);
echo html::select('type', $lang->bug->typeList, $type, "class='form-control'");
?>
<?php if($showOs):?>
<?php if($showOS):?>
<span class='input-group-addon fix-border'><?php echo $lang->bug->os?></span>
<?php echo html::select('os', $lang->bug->osList, $os, "class='form-control'");?>
<?php endif;?>
+5 -5
View File
@@ -178,7 +178,6 @@ $lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->list = array('link' => '%s', 'fixed' => true);
$lang->product->menu->index = 'Index|product|index|locate=no';
$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
@@ -191,6 +190,7 @@ $lang->product->menu->view = array('link' => 'Info|product|view|productID=%s'
$lang->product->menu->project = "{$lang->projectCommon}s|product|project|status=all&productID=%s";
$lang->product->menu->create = array('link' => '<span class="icon-plus">&nbsp;</span>New|product|create', 'float' => 'right');
$lang->product->menu->all = array('link' => '<span class="icon-cubes">&nbsp;</span>All|product|index|locate=no&productID=%s', 'float' => 'right');
$lang->product->menu->index = array('link' => "<i class='icon-home'></i>Homepage|product|index|locate=no", 'float' => 'right');
$lang->story = new stdclass();
$lang->productplan = new stdclass();
@@ -207,7 +207,6 @@ $lang->project = new stdclass();
$lang->project->menu = new stdclass();
$lang->project->menu->list = array('link' => '%s', 'fixed' => true);
$lang->project->menu->index = 'Index|project|index|locate=no';
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,importbug,burn');
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
@@ -220,6 +219,7 @@ $lang->project->menu->product = array('link' => "{$lang->productCommon}|projec
$lang->project->menu->view = 'Info|project|view|projectID=%s';
$lang->project->menu->create = array('link' => '<span class="icon-add">&nbsp;</span>New|project|create', 'float' => 'right');
$lang->project->menu->all = array('link' => "<i class='icon-th-large'></i>&nbsp;{$lang->projectCommon}s|project|index|locate=no&status=undone&projectID=%s", 'float' => 'right');
$lang->project->menu->index = array('link' => "<i class='icon-home'></i>Homepage|project|index|locate=no", 'float' => 'right');
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -231,28 +231,28 @@ $lang->qa = new stdclass();
$lang->qa->menu = new stdclass();
$lang->qa->menu->product = array('link' => '%s', 'fixed' => true);
$lang->qa->menu->index = 'Index|qa|index|locate=no&productID=%s';
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->qa->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
$lang->qa->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s');
$lang->qa->menu->index = array('link' => "<i class='icon-home'></i>Homepage|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->bug = new stdclass();
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->index = 'Index|qa|index|locate=no&productID=%s';
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
$lang->bug->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s');
$lang->bug->menu->index = array('link' => "<i class='icon-home'></i>Homepage|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testcase = new stdclass();
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->index = 'Index|qa|index|locate=no&productID=%s';
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase');
$lang->testcase->menu->index = array('link' => "<i class='icon-home'></i>Homepage|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testtask = new stdclass();
$lang->testtask->menu = $lang->testcase->menu;
+5 -5
View File
@@ -178,7 +178,6 @@ $lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->list = array('link' => '%s', 'fixed' => true);
$lang->product->menu->index = '首页|product|index|locate=no';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
@@ -191,6 +190,7 @@ $lang->product->menu->view = array('link' => '概况|product|view|productID=%
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;添加{$lang->productCommon}|product|create", 'float' => 'right');
$lang->product->menu->all = array('link' => "<i class='icon-cubes'></i>&nbsp;所有{$lang->productCommon}|product|all|productID=%s", 'float' => 'right');
$lang->product->menu->index = array('link' => "<i class='icon-home'></i>产品主页|product|index|locate=no", 'float' => 'right');
$lang->story = new stdclass();
$lang->productplan = new stdclass();
@@ -207,7 +207,6 @@ $lang->project = new stdclass();
$lang->project->menu = new stdclass();
$lang->project->menu->list = array('link' => '%s', 'fixed' => true);
$lang->project->menu->index = '首页|project|index|locate=no';
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
@@ -220,6 +219,7 @@ $lang->project->menu->product = $lang->productCommon . '|project|manageproduct
$lang->project->menu->view = array('link' => '概况|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;添加{$lang->projectCommon}|project|create", 'float' => 'right');
$lang->project->menu->all = array('link' => "<i class='icon-th-large'></i>&nbsp;所有{$lang->projectCommon}|project|all|status=undone&projectID=%s", 'float' => 'right');
$lang->project->menu->index = array('link' => "<i class='icon-home'></i>项目主页|project|index|locate=no", 'float' => 'right');
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -231,28 +231,28 @@ $lang->qa = new stdclass();
$lang->qa->menu = new stdclass();
$lang->qa->menu->product = array('link' => '%s', 'fixed' => true);
$lang->qa->menu->index = '首页|qa|index|locate=no&productID=%s';
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->qa->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
$lang->qa->menu->testtask = array('link' => '版本|testtask|browse|productID=%s');
$lang->qa->menu->index = array('link' => "<i class='icon-home'></i>测试主页|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->bug = new stdclass();
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->index = '首页|qa|index|locate=no&productID=%s';
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
$lang->bug->menu->testtask = array('link' => '版本|testtask|browse|productID=%s');
$lang->bug->menu->index = array('link' => "<i class='icon-home'></i>测试主页|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testcase = new stdclass();
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->index = '首页|qa|index|locate=no&productID=%s';
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '版本|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase');
$lang->testcase->menu->index = array('link' => "<i class='icon-home'></i>测试主页|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testtask = new stdclass();
$lang->testtask->menu = $lang->testcase->menu;
+6 -40
View File
@@ -115,7 +115,7 @@ class deptModel extends model
*
* @param int $rootDeptID
* @param string $userFunc
* @param array|int $param
* @param int $param
* @access public
* @return string
*/
@@ -216,21 +216,6 @@ class deptModel extends model
return html::a(helper::createLink('group', 'managemember', "groupID=$groupID&deptID={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
}
/**
* Create project manage members link.
*
* @param int $dept
* @param array $params
* @access public
* @return void
*/
public function createPrjManageMemberLink($dept, $params)
{
$projectID = $params['projectID'];
$team2Import = $params['team2Import'];
return html::a(helper::createLink('project', 'managemembers', "projectID=$projectID&team2Import=$team2Import&deptID={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'");
}
/**
* Get sons of a department.
*
@@ -353,35 +338,16 @@ class deptModel extends model
* Get user pairs of a department.
*
* @param int $deptID
* @param string $params
* @access public
* @return array
*/
public function getDeptUserPairs($deptID = 0, $params = '')
public function getDeptUserPairs($deptID = 0)
{
$fields = 'account, realname';
if(strpos($params, 'devfirst')!== false) $fields .= ", INSTR(',td,pm,qd,qa,dev,', role) AS roleOrder";
$orderBy = strpos($params, 'first') !== false ? 'roleOrder DESC, account' : 'account';
$childDeptIds = $this->getAllChildID($deptID);
$users = $this->dao->select($fields)->from(TABLE_USER)
return $this->dao->select('account, realname')->from(TABLE_USER)
->where('deleted')->eq(0)
->beginIF($deptID)->andWhere('dept')->in($childDeptIds)->fi()
->orderBy($orderBy)
->fetchAll('account');
/* Cycle the user records to append the first letter of his account. */
foreach($users as $account => $user)
{
$firstLetter = ucfirst(substr($account, 0, 1)) . ':';
if(strpos($params, 'noletter') !== false) $firstLetter = '';
$users[$account] = $firstLetter . $user->realname;
}
/* Append empty users. */
if(strpos($params, 'noempty') === false) $users[''] = '';
return $users;
->beginIF($deptID)->andWhere('dept')->in($this->getAllChildID($deptID))->fi()
->orderBy('account')
->fetchPairs();
}
/**
+1 -1
View File
@@ -235,7 +235,7 @@ class group extends control
}
$group = $this->group->getById($groupID);
$groupUsers = $this->group->getUserPairs($groupID);
$allUsers = $this->loadModel('dept')->getDeptUserPairs($deptID, 'noempty, noletter');
$allUsers = $this->loadModel('dept')->getDeptUserPairs($deptID);
$otherUsers = array_diff_assoc($allUsers, $groupUsers);
$title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->manageMember;
-18
View File
@@ -981,24 +981,6 @@ class taskModel extends model
->fetchPairs();
}
/**
* Get tasks a story.
*
* @param int $storyID
* @param int $projectID
* @access public
* @return array
*/
public function getStoryTasks($storyID, $projectID = 0)
{
return $this->dao->select('*')
->from(TABLE_TASK)
->where('story')->eq((int)$storyID)
->andWhere('deleted')->eq(0)
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->fetchAll();
}
/**
* Get counts of some stories' tasks.
*