Merge branch 'master' of https://git.zcorp.cc/zentaopms
This commit is contained in:
+24
-10
@@ -263,19 +263,33 @@ $lang->index->menu->project = "{$lang->executionCommon}|project|browse";
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Home|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');;
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->myWork = array('link' => 'Work|my|work|mode=task');
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->task = array('link' => 'Aufgaben|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => 'Test Aufgaben|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => 'Story|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->myExecution = "Execution|my|execution|";
|
||||
$lang->my->menu->dynamic = 'Verlauf|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->contribute = array('link' => 'Contribute|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->score = 'Score|my|score|';
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->dividerMenu = ',program,requirement,dynamic,';
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->story = 'Story|my|work|mode=story';
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase';
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->execution = 'Execution|my|contribute|mode=execution';
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->story = 'Story|my|contribute|mode=story';
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testcase';
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
+24
-10
@@ -263,19 +263,33 @@ $lang->index->menu->project = "{$lang->executionCommon}|project|browse";
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Home|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');;
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->myWork = array('link' => 'Work|my|work|mode=task');
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->task = array('link' => 'Task|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => 'Request|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => 'Story|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->myExecution = "Execution|my|execution|";
|
||||
$lang->my->menu->dynamic = 'Dynamics|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->contribute = array('link' => 'Contribute|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->score = 'Score|my|score|';
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->dividerMenu = ',program,requirement,dynamic,';
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->story = 'Story|my|work|mode=story';
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase';
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->execution = 'Execution|my|contribute|mode=execution';
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->story = 'Story|my|contribute|mode=story';
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testcase';
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
+24
-10
@@ -263,19 +263,33 @@ $lang->index->menu->project = "{$lang->executionCommon}|project|browse";
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Accueil|my|index';
|
||||
$lang->my->menu->calendar = 'Todo|my|todo|';
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->myWork = array('link' => 'Work|my|work|mode=task');
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->task = array('link' => 'Tâche|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => 'Recette|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => 'Story|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->myExecution = "Execution|my|execution|";
|
||||
$lang->my->menu->dynamic = 'Historique|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->contribute = array('link' => 'Contribute|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->score = 'Score|my|score|';
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->dividerMenu = ',program,requirement,dynamic,';
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->story = 'Story|my|work|mode=story';
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase';
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->execution = 'Execution|my|contribute|mode=execution';
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->story = 'Story|my|contribute|mode=story';
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testcase';
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
@@ -36,21 +36,14 @@ $lang->index->menuOrder[10] = 'project';
|
||||
/* my menu order. */
|
||||
$lang->my->menuOrder[5] = 'index';
|
||||
$lang->my->menuOrder[10] = 'calendar';
|
||||
$lang->my->menuOrder[12] = 'myProject';
|
||||
$lang->my->menuOrder[20] = 'myExecution';
|
||||
$lang->my->menuOrder[25] = 'review';
|
||||
$lang->my->menuOrder[29] = 'requirement';
|
||||
$lang->my->menuOrder[31] = 'story';
|
||||
$lang->my->menuOrder[40] = 'task';
|
||||
$lang->my->menuOrder[45] = 'bug';
|
||||
$lang->my->menuOrder[50] = 'testtask';
|
||||
$lang->my->menuOrder[55] = 'nc';
|
||||
$lang->my->menuOrder[60] = 'dynamic';
|
||||
$lang->my->menuOrder[65] = 'profile';
|
||||
$lang->my->menuOrder[70] = 'changePassword';
|
||||
$lang->my->menuOrder[75] = 'score';
|
||||
$lang->my->menuOrder[80] = 'contacts';
|
||||
$lang->todo->menuOrder = $lang->my->menuOrder;
|
||||
$lang->my->menuOrder[15] = 'myWork';
|
||||
$lang->my->menuOrder[20] = 'myProject';
|
||||
$lang->my->menuOrder[25] = 'contribute';
|
||||
$lang->my->menuOrder[30] = 'score';
|
||||
$lang->my->menuOrder[35] = 'dynamic';
|
||||
$lang->my->menuOrder[40] = 'follow';
|
||||
$lang->my->menuOrder[45] = 'contacts';
|
||||
$lang->todo->menuOrder = $lang->my->menuOrder;
|
||||
|
||||
/* product menu order. */
|
||||
$lang->product->menuOrder[1] = 'requirement';
|
||||
|
||||
+25
-11
@@ -263,19 +263,33 @@ $lang->index->menu->project = "{$lang->executionCommon}|project|browse";
|
||||
$lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Home|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');;
|
||||
$lang->my->menu->myProject = array('link' => '项目|my|project|');
|
||||
$lang->my->menu->task = array('link' => 'Nhiệm vụ|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => 'Yêu cầu|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => 'Câu chuyện|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->myExecution = "Execution|my|execution|";
|
||||
$lang->my->menu->dynamic = 'Lịch sử|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->myWork = array('link' => 'Work|my|work|mode=task');
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->contribute = array('link' => 'Contribute|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->score = 'Score|my|score|';
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->dividerMenu = ',program,requirement,dynamic,';
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->story = 'Story|my|work|mode=story';
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase';
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->execution = 'Execution|my|contribute|mode=execution';
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->story = 'Story|my|contribute|mode=story';
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testcase';
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
@@ -265,17 +265,31 @@ $lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = '首页|my|index';
|
||||
$lang->my->menu->calendar = array('link' => '日程|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->myWork = array('link' => '待处理|my|work|mode=task');
|
||||
$lang->my->menu->myProject = array('link' => '项目|my|project|');
|
||||
$lang->my->menu->task = array('link' => '任务|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => '测试|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => "需求|my|story|", 'subModule' => 'story');
|
||||
$lang->my->menu->myExecution = "{$lang->execution->common}|my|execution|";
|
||||
$lang->my->menu->contribute = array('link' => '贡献|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '档案|my|profile|', 'alias' => 'editprofile');
|
||||
$lang->my->menu->score = '积分|my|score|';
|
||||
$lang->my->menu->contacts = '联系人|my|managecontacts|';
|
||||
|
||||
$lang->my->dividerMenu = ',program,requirement,dynamic,';
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = '任务|my|work|mode=task';
|
||||
$lang->my->workMenu->story = '需求|my|work|mode=story';
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testtask = '测试|my|work|mode=testtask&type=wait';
|
||||
$lang->my->workMenu->issue = '问题|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = '风险|my|work|mode=risk';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->execution = '执行|my|contribute|mode=execution';
|
||||
$lang->my->contributeMenu->task = '任务|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->story = '需求|my|contribute|mode=story';
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testtask = '用例|my|contribute|mode=testtask&type=wait';
|
||||
$lang->my->contributeMenu->issue = '问题|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = '风险|my|contribute|mode=risk';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
+18
-1
@@ -773,6 +773,7 @@ class commonModel extends model
|
||||
global $config, $lang, $app;
|
||||
|
||||
$moduleName = $app->rawModule;
|
||||
$methodName = $app->rawMethod;
|
||||
$mainMenu = $moduleName;
|
||||
if($moduleName == 'program') return;
|
||||
if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
|
||||
@@ -780,7 +781,7 @@ class commonModel extends model
|
||||
/* Set main menu by group. */
|
||||
$group = isset($lang->navGroup->$moduleName) ? $lang->navGroup->$moduleName : '';
|
||||
if($moduleName == 'admin') return;
|
||||
if($group == 'my' || $group == 'reporting' || $group == 'attend') return;
|
||||
if($group == 'my') self::getMyModuleMenu($moduleName, $methodName);
|
||||
if($group == 'project') self::getProgramModuleMenu($moduleName);
|
||||
|
||||
if(!isset($lang->$moduleName->menu))
|
||||
@@ -2408,6 +2409,22 @@ EOD;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get my module menu by methodName.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function getMyModuleMenu($moduleName, $methodName)
|
||||
{
|
||||
global $lang;
|
||||
if($methodName == 'work') $lang->my->menu = $lang->my->workMenu;
|
||||
if($methodName == 'contribute') $lang->my->menu = $lang->my->contributeMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get relations for two object.
|
||||
*
|
||||
|
||||
@@ -61,7 +61,7 @@ js::set('confirmDelete', $lang->user->confirmDelete);
|
||||
<table class='table has-sort-head' id='userList'>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php $vars = "param=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<?php $vars = "browseType=$browseType¶m=$param&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class='c-id'>
|
||||
<?php if($canBatchEdit):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
|
||||
+50
-3
@@ -67,6 +67,22 @@ class my extends control
|
||||
$this->locate($this->createLink('my', 'todo'));
|
||||
}
|
||||
|
||||
public function work($mode = 'task', $type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$moduleIndex = array_search('my', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
echo $this->fetch('my', $mode, "type=$type&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID");
|
||||
}
|
||||
|
||||
public function contribute($mode = 'task', $type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$moduleIndex = array_search('my', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
echo $this->fetch('my', $mode, "type=$type&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID");
|
||||
}
|
||||
|
||||
/**
|
||||
* My todos.
|
||||
*
|
||||
@@ -115,6 +131,7 @@ class my extends control
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->status = $status;
|
||||
$this->view->user = $user;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->account = $this->app->user->account;
|
||||
$this->view->orderBy = $orderBy == 'date_desc,status,begin,id_desc' ? '' : $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
@@ -160,6 +177,7 @@ class my extends control
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'story';
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -176,7 +194,7 @@ class my extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function story($type = 'assignedTo', $storyType = 'story', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
public function story($type = 'assignedTo', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Save session. */
|
||||
if($this->app->viewType != 'json') $this->session->set('storyList', $this->app->getURI(true));
|
||||
@@ -192,16 +210,16 @@ class my extends control
|
||||
/* Assign. */
|
||||
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->story;
|
||||
$this->view->position[] = $this->lang->my->story;
|
||||
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $type, $sort, $pager, $storyType);
|
||||
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $type, $sort, $pager, 'story');
|
||||
$this->view->users = $this->user->getPairs('noletter');
|
||||
$this->view->projects = $this->loadModel('program')->getPRJPairs();
|
||||
$this->view->type = $type;
|
||||
$this->view->storyType = $storyType;
|
||||
$this->view->recTotal = $recTotal;
|
||||
$this->view->recPerPage = $recPerPage;
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'story';
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -249,6 +267,7 @@ class my extends control
|
||||
$this->view->projects = $this->loadModel('program')->getPRJPairs();
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'task';
|
||||
|
||||
if($this->app->viewType == 'json') $this->view->tasks = array_values($this->view->tasks);
|
||||
$this->display();
|
||||
@@ -294,6 +313,7 @@ class my extends control
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'bug';
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -328,6 +348,7 @@ class my extends control
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->type = $type;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'testtask';
|
||||
$this->display();
|
||||
|
||||
}
|
||||
@@ -383,6 +404,7 @@ class my extends control
|
||||
$this->view->pageID = $pageID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'testcase';
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -442,10 +464,35 @@ class my extends control
|
||||
$this->view->executions = $this->user->getProjects($this->app->user->account, 'execution', $status, $pager);
|
||||
$this->view->status = $status;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->mode = 'execution';
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* My issues.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function issue()
|
||||
{
|
||||
$this->view->mode = 'issue';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* My risks.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function risk()
|
||||
{
|
||||
$this->view->mode = 'risk';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit profile
|
||||
*
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
$(function()
|
||||
{
|
||||
if(typeof(mode) != 'undefined')
|
||||
{
|
||||
if(mode == 'testcase') mode = 'testtask';
|
||||
$('#subNavbar li[data-id=' + mode + ']').addClass('active');
|
||||
}
|
||||
var scp = $('[data-id="changePassword"] a');
|
||||
var sign = config.requestType == 'GET' ? '&' : '?';
|
||||
scp.attr('href', scp.attr('href') + sign + 'onlybody=yes').modalTrigger({width:500, type:'iframe'});
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo html::a(inlink('bug', "type=assignedTo"), "<span class='text'>{$lang->bug->assignedTo}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('bug', "type=openedBy"), "<span class='text'>{$lang->bug->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('bug', "type=resolvedBy"), "<span class='text'>{$lang->bug->resolvedByMe}</span>" . ($type == 'resolvedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'resolvedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('bug', "type=closedBy"), "<span class='text'>{$lang->bug->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->bug->assignedTo}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=openedBy"), "<span class='text'>{$lang->bug->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=resolvedBy"), "<span class='text'>{$lang->bug->resolvedByMe}</span>" . ($type == 'resolvedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'resolvedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->bug->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -34,11 +35,10 @@
|
||||
$canBatchConfirm = common::hasPriv('bug', 'batchConfirm');
|
||||
$canBatchClose = (common::hasPriv('bug', 'batchClose') and strtolower($type) != 'closedby');
|
||||
$canBatchAssignTo = common::hasPriv('bug', 'batchAssignTo');
|
||||
|
||||
$canBatchAction = ($canBatchEdit or $canBatchConfirm or $canBatchClose or $canBatchAssignTo);
|
||||
?>
|
||||
<table class="table has-sort-head table-fixed" id='bugList'>
|
||||
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-100px">
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,24 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* The story view file of dashboard module of ZenTaoPMS.
|
||||
* The requirement view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: story.html.php 5116 2013-07-12 06:37:48Z chencongzhi520@gmail.com $
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<div class="btn-group active">
|
||||
<div class="btn-group">
|
||||
<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown'>
|
||||
<?php echo $lang->generalUR;?><span class='caret'></span>
|
||||
</button>
|
||||
<ul class='dropdown-menu'>
|
||||
<li><?php echo html::a($this->inLink($app->rawMethod, "mode=story&type=$type"), $lang->generalSR);?></li>
|
||||
<li><?php echo html::a($this->inLink($app->rawMethod, "mode=requirement&type=$type"), $lang->generalUR);?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo html::a(inlink('requirement', "type=assignedTo"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('requirement', "type=openedBy"), "<span class='text'>{$lang->my->storyMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('requirement', "type=reviewedBy"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('requirement', "type=closedBy"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=assignedTo"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=openedBy"), "<span class='text'>{$lang->my->storyMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=reviewedBy"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=closedBy"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -29,25 +41,28 @@
|
||||
</div>
|
||||
<?php else:?>
|
||||
<form id='myStoryForm' class="main-table table-story" data-ride="table" method="post">
|
||||
<table class="table has-sort-head table-fixed">
|
||||
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<table id='storyList' class="table has-sort-head table-fixed">
|
||||
<?php $vars = "mode=requirement&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php
|
||||
$canBatchEdit = common::hasPriv('story', 'batchEdit');
|
||||
$canBatchClose = (common::hasPriv('story', 'batchClose') && strtolower($type) != 'closedbyme');
|
||||
$canBatchEdit = common::hasPriv('story', 'batchEdit');
|
||||
$canBatchClose = (common::hasPriv('story', 'batchClose') and strtolower($type) != 'closedby');
|
||||
$canBatchReview = common::hasPriv('story', 'batchReview');
|
||||
$canBatchAssignTo = common::hasPriv('story', 'batchAssignTo');
|
||||
$canBatchAction = ($canBatchEdit or $canBatchClose or $canBatchReview or $canBatchAssignTo);
|
||||
?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id">
|
||||
<?php if($canBatchEdit or $canBatchClose):?>
|
||||
<?php if($canBatchAction):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th class='c-pri w-40px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-pri w-40px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-product'> <?php common::printOrderLink('productTitle', $orderBy, $vars, $lang->story->product);?></th>
|
||||
<th class='c-name'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->story->title);?></th>
|
||||
<th class='c-name'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->my->name);?></th>
|
||||
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
<th class='c-hours'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
|
||||
<th class='c-status'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
@@ -57,12 +72,15 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($stories as $story):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "id=$story->id", '', '', $story->PRJ);?>
|
||||
<?php
|
||||
$storyLink = $this->createLink('story', 'view', "id=$story->id");
|
||||
$canBeChanged = common::canBeChanged('story', $story);
|
||||
?>
|
||||
<tr>
|
||||
<td class="c-id">
|
||||
<?php if($canBatchEdit or $canBatchClose):?>
|
||||
<?php if($canBatchAction):?>
|
||||
<div class="checkbox-primary">
|
||||
<input type='checkbox' name='storyIdList[<?php echo $story->id;?>]' value='<?php echo $story->id;?>' />
|
||||
<input type='checkbox' name='storyIdList[<?php echo $story->id;?>]' value='<?php echo $story->id;?>' <?php if(!$canBeChanged) echo 'disabled';?>/>
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
@@ -70,31 +88,87 @@
|
||||
</td>
|
||||
<td class='c-pri'><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>' title='<?php echo zget($lang->story->priList, $story->pri, $story->pri);?>'><?php echo zget($lang->story->priList, $story->pri, $story->pri);?></span></td>
|
||||
<td class='c-product'><?php echo $story->productTitle;?></td>
|
||||
<td class='c-name nobr'><?php echo html::a($storyLink, $story->title, null, "style='color: $story->color'");?></td>
|
||||
<td class='c-name nobr <?php if(!empty($story->children)) echo "has-child" ?>'>
|
||||
<?php echo html::a($storyLink, $story->title, null, "style='color: $story->color'");?>
|
||||
<?php if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-double-right"></i></a>';;?>
|
||||
</td>
|
||||
<td class='c-user'><?php echo zget($users, $story->openedBy);?></td>
|
||||
<td class='c-hours'><?php echo $story->estimate;?></td>
|
||||
<td class='c-status'><span class='status-story status-<?php echo $story->status;?>'> <?php echo $this->processStatus('story', $story);?></span></td>
|
||||
<td class='c-stage'><?php echo zget($lang->story->stageList, $story->stage);?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
$vars = "story={$story->id}";
|
||||
common::printIcon('story', 'change', $vars, $story, 'list', 'fork', '', '', '', '', '', $story->PRJ);
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses', '', '', '', '', '', $story->PRJ);
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', '', '', 'iframe', true, '', '', $story->PRJ);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list', '', '', '', '', '', '', $story->PRJ);
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->PRJ);
|
||||
if($canBeChanged)
|
||||
{
|
||||
$vars = "story={$story->id}";
|
||||
common::printIcon('story', 'change', $vars, $story, 'list', 'fork');
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses');
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list');
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap');
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if(!empty($story->children)):?>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($story->children as $key => $child):?>
|
||||
<?php $storyLink = $this->createLink('story', 'view', "id=$child->id");?>
|
||||
<?php $class = $i == 0 ? ' table-child-top' : '';?>
|
||||
<?php $class .= ($i + 1 == count($story->children)) ? ' table-child-bottom' : '';?>
|
||||
<tr class='table-children<?php echo $class;?> parent-<?php echo $story->id;?>' data-id='<?php echo $child->id?>' data-status='<?php echo $child->status?>' data-estimate='<?php echo $child->estimate?>'>
|
||||
<td class="c-id">
|
||||
<?php if($canBatchAction):?>
|
||||
<div class="checkbox-primary">
|
||||
<input type='checkbox' name='storyIdList[<?php echo $child->id;?>]' value='<?php echo $child->id;?>' />
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php printf('%03d', $child->id);?>
|
||||
</td>
|
||||
<td class='c-pri'><span class='label-pri <?php echo 'label-pri-' . $child->pri;?>' title='<?php echo zget($lang->story->priList, $child->pri, $child->pri);?>'><?php echo zget($lang->story->priList, $child->pri, $child->pri);?></span></td>
|
||||
<td class='c-product'><?php echo $child->productTitle;?></td>
|
||||
<td class='c-name nobr'>
|
||||
<?php echo '<span class="label label-badge label-light" title="' . $this->lang->story->children .'">' . $this->lang->story->childrenAB . '</span> ' . html::a($storyLink, $child->title, null, "style='color: $child->color'");?>
|
||||
</td>
|
||||
<td class='c-user'><?php echo zget($users, $child->openedBy);?></td>
|
||||
<td class='c-hours'><?php echo $child->estimate;?></td>
|
||||
<td class='c-status'><span class='status-story status-<?php echo $child->status;?>'> <?php echo $this->processStatus('story', $child);?></span></td>
|
||||
<td class='c-stage'><?php echo zget($lang->story->stageList, $child->stage);?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
if($canBeChanged)
|
||||
{
|
||||
$vars = "story={$child->id}";
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'fork');
|
||||
common::printIcon('story', 'review', $vars, $child, 'list', 'glasses');
|
||||
common::printIcon('story', 'close', $vars, $child, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $child, 'list');
|
||||
common::printIcon('story', 'createCase', "productID=$child->product&branch=$child->branch&module=0&from=¶m=0&$vars", $child, 'list', 'sitemap');
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++;?>
|
||||
<?php endforeach;?>
|
||||
<?php endif;?>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="table-footer">
|
||||
<?php if($canBatchEdit or $canBatchClose):?>
|
||||
<?php if($canBatchAction):?>
|
||||
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
|
||||
<?php endif;?>
|
||||
<div class="table-actions btn-toolbar">
|
||||
<?php if(common::hasPriv('story', 'batchReview')):?>
|
||||
<?php
|
||||
if($canBatchEdit)
|
||||
{
|
||||
$actionLink = $this->createLink('story', 'batchEdit');
|
||||
$misc = "data-form-action='$actionLink'";
|
||||
echo html::commonButton($lang->edit, $misc);
|
||||
}
|
||||
?>
|
||||
<?php if($canBatchReview):?>
|
||||
<div class="btn-group dropup">
|
||||
<button type='button' class='btn' data-toggle='dropdown'><?php echo $lang->story->review;?> <span class='caret'></span></button>
|
||||
<ul class='dropdown-menu'>
|
||||
@@ -103,7 +177,7 @@
|
||||
unset($lang->story->reviewResultList['revert']);
|
||||
foreach($lang->story->reviewResultList as $key => $result)
|
||||
{
|
||||
$actionLink = $this->createLink('story', 'batchReview', "result=$key", '', '', $story->PRJ);
|
||||
$actionLink = $this->createLink('story', 'batchReview', "result=$key");
|
||||
if($key == 'reject')
|
||||
{
|
||||
echo "<li class='dropdown-submenu'>";
|
||||
@@ -115,7 +189,7 @@
|
||||
|
||||
foreach($lang->story->reasonList as $key => $reason)
|
||||
{
|
||||
$actionLink = $this->createLink('story', 'batchReview', "result=reject&reason=$key", '', '', $story->PRJ);
|
||||
$actionLink = $this->createLink('story', 'batchReview', "result=reject&reason=$key");
|
||||
echo "<li>";
|
||||
echo html::a('#', $reason, '', "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"");
|
||||
echo "</li>";
|
||||
@@ -131,12 +205,12 @@
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if(common::hasPriv('story', 'batchAssignTo')):?>
|
||||
<?php if($canBatchAssignTo):?>
|
||||
<div class="btn-group dropup">
|
||||
<button data-toggle="dropdown" type="button" class="btn"><?php echo $lang->story->assignedTo?> <span class="caret"></span></button>
|
||||
<?php
|
||||
$withSearch = count($users) > 10;
|
||||
$actionLink = $this->createLink('story', 'batchAssignTo', '', '', '', $story->PRJ);
|
||||
$actionLink = $this->createLink('story', 'batchAssignTo');
|
||||
echo html::select('assignedTo', $users, '', 'class="hidden"');
|
||||
if($withSearch)
|
||||
{
|
||||
@@ -164,6 +238,13 @@
|
||||
?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if($canBatchClose):?>
|
||||
<?php
|
||||
$actionLink = $this->createLink('story', 'batchClose');
|
||||
$misc = "data-form-action=\"$actionLink\"";
|
||||
echo html::commonButton($lang->close, $misc);
|
||||
?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The risk view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -11,26 +11,26 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<div class="btn-group active">
|
||||
<div class="btn-group">
|
||||
<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown'>
|
||||
<?php $label = $storyType == 'story' ? $lang->generalSR : $lang->generalUR;?>
|
||||
<?php echo $label;?><span class='caret'></span>
|
||||
<?php echo $lang->generalSR;?><span class='caret'></span>
|
||||
</button>
|
||||
<ul class='dropdown-menu'>
|
||||
<li><?php echo html::a($this->inLink('story', "type=$type"), $lang->generalSR);?></li>
|
||||
<li><?php echo html::a($this->inLink('story', "type=$type&storyType=requirement"), $lang->generalUR);?></li>
|
||||
<li><?php echo html::a($this->inLink($app->rawMethod, "mode=$mode&type=$type"), $lang->generalSR);?></li>
|
||||
<li><?php echo html::a($this->inLink($app->rawMethod, "mode=requirement&type=$type"), $lang->generalUR);?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo html::a(inlink('story', "type=assignedTo&storyType=$storyType"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('story', "type=openedBy&storyType=$storyType"), "<span class='text'>{$lang->my->storyMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('story', "type=reviewedBy&storyType=$storyType"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('story', "type=closedBy&storyType=$storyType"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=openedBy"), "<span class='text'>{$lang->my->storyMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=reviewedBy"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,13 +42,12 @@
|
||||
<?php else:?>
|
||||
<form id='myStoryForm' class="main-table table-story" data-ride="table" method="post">
|
||||
<table id='storyList' class="table has-sort-head table-fixed">
|
||||
<?php $vars = "type=$type&storyType=$storyType&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php
|
||||
$canBatchEdit = common::hasPriv('story', 'batchEdit');
|
||||
$canBatchClose = (common::hasPriv('story', 'batchClose') and strtolower($type) != 'closedby');
|
||||
$canBatchReview = common::hasPriv('story', 'batchReview');
|
||||
$canBatchAssignTo = common::hasPriv('story', 'batchAssignTo');
|
||||
|
||||
$canBatchAction = ($canBatchEdit or $canBatchClose or $canBatchReview or $canBatchAssignTo);
|
||||
?>
|
||||
<thead>
|
||||
@@ -61,12 +60,10 @@
|
||||
<?php endif;?>
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th class='c-pri w-40px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-name'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->my->name);?></th>
|
||||
<th class='c-pri w-40px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-product'> <?php common::printOrderLink('productTitle', $orderBy, $vars, $lang->story->product);?></th>
|
||||
<?php if($storyType == 'story'):?>
|
||||
<th class='c-name'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->my->name);?></th>
|
||||
<th class='c-plan'> <?php common::printOrderLink('plan', $orderBy, $vars, $lang->story->plan);?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
<th class='c-hours'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
|
||||
<th class='c-status'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
@@ -96,9 +93,7 @@
|
||||
<?php if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-double-right"></i></a>';;?>
|
||||
</td>
|
||||
<td class='c-product'><?php echo $story->productTitle;?></td>
|
||||
<?php if($storyType == 'story'):?>
|
||||
<td class='c-plan'><?php echo $story->planTitle;?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-user'><?php echo zget($users, $story->openedBy);?></td>
|
||||
<td class='c-hours'><?php echo $story->estimate;?></td>
|
||||
<td class='c-status'><span class='status-story status-<?php echo $story->status;?>'> <?php echo $this->processStatus('story', $story);?></span></td>
|
||||
@@ -140,7 +135,6 @@
|
||||
<td class='c-product'><?php echo $child->productTitle;?></td>
|
||||
<?php if($storyType == 'story'):?>
|
||||
<td class='c-plan'><?php echo $child->planTitle;?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-user'><?php echo zget($users, $child->openedBy);?></td>
|
||||
<td class='c-hours'><?php echo $child->estimate;?></td>
|
||||
<td class='c-status'><span class='status-story status-<?php echo $child->status;?>'> <?php echo $this->processStatus('story', $child);?></span></td>
|
||||
|
||||
@@ -11,15 +11,16 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo html::a(inlink('task', "type=assignedTo"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('task', "type=openedBy"), "<span class='text'>{$lang->my->taskMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('task', "type=finishedBy"), "<span class='text'>{$lang->my->taskMenu->finishedByMe}</span>" . ($type == 'finishedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'finishedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('task', "type=closedBy"), "<span class='text'>{$lang->my->taskMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('task', "type=canceledBy"), "<span class='text'>{$lang->my->taskMenu->canceledByMe}</span>" . ($type == 'canceledBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'canceledBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=openedBy"), "<span class='text'>{$lang->my->taskMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=finishedBy"), "<span class='text'>{$lang->my->taskMenu->finishedByMe}</span>" . ($type == 'finishedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'finishedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->my->taskMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=canceledBy"), "<span class='text'>{$lang->my->taskMenu->canceledByMe}</span>" . ($type == 'canceledBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'canceledBy' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,7 +34,7 @@
|
||||
<?php $canBatchEdit = common::hasPriv('task', 'batchEdit');?>
|
||||
<?php $canBatchClose = (common::hasPriv('task', 'batchClose') and $type != 'closedBy');?>
|
||||
<table class="table has-sort-head table-fixed" id='tasktable'>
|
||||
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id">
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<style>
|
||||
.w-230px{width:230px;}
|
||||
</style>
|
||||
@@ -20,12 +21,12 @@
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo "<span class='nav-title'>{$lang->testtask->common}: </span>";
|
||||
echo html::a(inlink('testtask', "type=wait"), "<span class='text'>{$lang->testtask->wait}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink('testtask', "type=done"), "<span class='text'>{$lang->testtask->done}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=testtask&type=wait"), "<span class='text'>{$lang->testtask->wait}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=testtask&type=done"), "<span class='text'>{$lang->testtask->done}</span>", '', "class='btn btn-link'");
|
||||
echo "<span class='divider'></span>";
|
||||
echo "<span class='nav-title'>{$lang->testcase->common}: </span>";
|
||||
echo html::a(inlink('testcase', "type=assigntome"), "<span class='text'>{$lang->testcase->assignToMe}</span>" . ($type == 'assigntome' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assigntome' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('testcase', "type=openedbyme"), "<span class='text'>{$lang->testcase->openedByMe}</span>" . ($type == 'openedbyme' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedbyme' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assigntome"), "<span class='text'>{$lang->testcase->assignToMe}</span>" . ($type == 'assigntome' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assigntome' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=openedbyme"), "<span class='text'>{$lang->testcase->openedByMe}</span>" . ($type == 'openedbyme' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedbyme' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -38,7 +39,7 @@
|
||||
<form id='myCaseForm' class="main-table table-case" data-ride="table" method="post">
|
||||
<table class="table has-sort-head" id='caseList'>
|
||||
<?php
|
||||
$vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID";
|
||||
$vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID";
|
||||
$this->app->loadLang('testtask');
|
||||
$canBatchRun = common::hasPriv('testtask', 'batchRun');
|
||||
$canBatchEdit = common::hasPriv('testcase', 'batchEdit');
|
||||
|
||||
@@ -11,18 +11,19 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('confirmDelete', $lang->testtask->confirmDelete)?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo "<span class='nav-title'>{$lang->testtask->common}: </span>";
|
||||
echo html::a(inlink('testtask', "type=wait"), "<span class='text'>{$lang->testtask->wait}</span>" . ($type == 'wait' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'wait' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink('testtask', "type=done"), "<span class='text'>{$lang->testtask->done}</span>" . ($type == 'done' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'done' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=wait"), "<span class='text'>{$lang->testtask->wait}</span>" . ($type == 'wait' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'wait' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=done"), "<span class='text'>{$lang->testtask->done}</span>" . ($type == 'done' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'done' ? ' btn-active-text' : '') . "'");
|
||||
echo "<span class='divider'></span>";
|
||||
echo "<span class='nav-title'>{$lang->testcase->common}: </span>";
|
||||
echo html::a(inlink('testcase', "type=assigntome"), "<span class='text'>{$lang->testcase->assignToMe}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink('testcase', "type=openedbyme"), "<span class='text'>{$lang->testcase->openedByMe}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=testcase&type=assigntome"), "<span class='text'>{$lang->testcase->assignToMe}</span>", '', "class='btn btn-link'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=testcase&type=openedbyme"), "<span class='text'>{$lang->testcase->openedByMe}</span>", '', "class='btn btn-link'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,7 +34,7 @@
|
||||
</div>
|
||||
<?php else:?>
|
||||
<table class="table has-sort-head table-fixed" id='taskList'>
|
||||
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
|
||||
@@ -71,15 +71,16 @@
|
||||
<?php endif;?>
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th class="c-date"> <?php common::printOrderLink('date', $orderBy, $vars, $lang->todo->date);?></th>
|
||||
<th class="c-type"> <?php common::printOrderLink('type', $orderBy, $vars, $lang->todo->type);?></th>
|
||||
<th class="c-date"> <?php common::printOrderLink('date', $orderBy, $vars, $lang->todo->date);?></th>
|
||||
<th class="c-type"> <?php common::printOrderLink('type', $orderBy, $vars, $lang->todo->type);?></th>
|
||||
<?php $style = $this->app->clientLang == 'en' ? "style='width:80px'" : '';?>
|
||||
<th class="c-pri w-80px" <?php echo $style;?>> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class="c-name"> <?php common::printOrderLink('name', $orderBy, $vars, $lang->todo->name);?></th>
|
||||
<th class="c-begin"> <?php common::printOrderLink('begin', $orderBy, $vars, $lang->todo->beginAB);?></th>
|
||||
<th class="c-end"> <?php common::printOrderLink('end', $orderBy, $vars, $lang->todo->endAB);?></th>
|
||||
<th class="c-status"><?php common::printOrderLink('status', $orderBy, $vars, $lang->todo->status);?></th>
|
||||
<th class="c-actions-5"><?php echo $lang->actions;?></th>
|
||||
<th class="c-name"> <?php common::printOrderLink('name', $orderBy, $vars, $lang->todo->name);?></th>
|
||||
<th class="c-assignedBy"><?php common::printOrderLink('assignedBy', $orderBy, $vars, $lang->todo->assignedBy);?></th>
|
||||
<th class="c-begin"> <?php common::printOrderLink('begin', $orderBy, $vars, $lang->todo->beginAB);?></th>
|
||||
<th class="c-end"> <?php common::printOrderLink('end', $orderBy, $vars, $lang->todo->endAB);?></th>
|
||||
<th class="c-status"> <?php common::printOrderLink('status', $orderBy, $vars, $lang->todo->status);?></th>
|
||||
<th class="c-actions-5"> <?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -98,6 +99,7 @@
|
||||
<td class="c-type"><?php echo $lang->todo->typeList[$todo->type];?></td>
|
||||
<td class="c-pri"><span title="<?php echo zget($lang->todo->priList, $todo->pri);?>" class='label-pri <?php echo 'label-pri-' . $todo->pri;?>' title='<?php echo zget($lang->todo->priList, $todo->pri, $todo->pri);?>'><?php echo zget($lang->todo->priList, $todo->pri)?></span></td>
|
||||
<td class="c-name" title="<?php echo $todo->name;?>"><?php echo html::a($this->createLink('todo', 'view', "id=$todo->id&from=my", '', true), $todo->name, '', "data-toggle='modal' data-type='iframe' data-title='" . $lang->todo->view . "' data-icon='check'");?></td>
|
||||
<td class="c-assignedBy"><?php echo zget($users, $todo->assignedBy);?></td>
|
||||
<td class="c-begin"><?php echo $todo->begin;?></td>
|
||||
<td class="c-end"><?php echo $todo->end;?></td>
|
||||
<td class="c-status"><span class="status-todo status-<?php echo $todo->status;?>"><?php echo $lang->todo->statusList[$todo->status];?></span></td>
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
$config->product = new stdclass();
|
||||
$config->product->orderBy = 'isClosed,order_desc';
|
||||
|
||||
$config->product->customBatchEditFields = 'line,PO,QD,RD,status,type,desc';
|
||||
$config->product->customBatchEditFields = 'PO,QD,RD,status,type,desc,acl';
|
||||
|
||||
$config->product->browse = new stdclass();
|
||||
$config->product->custom = new stdclass();
|
||||
$config->product->custom->batchEditFields = 'line,PO,QD,RD,status';
|
||||
$config->product->custom->batchEditFields = 'PO,QD,RD,status,type,acl';
|
||||
|
||||
$config->product->list = new stdclass();
|
||||
$config->product->list->exportFields = 'id,name,line,activeStories,changedStories,draftStories,closedStories,plans,releases,bugs,unResolvedBugs,assignToNullBugs';
|
||||
|
||||
+10
-13
@@ -768,33 +768,30 @@ class product extends control
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $browseType
|
||||
* @param int $param
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function all($programID = 0, $browseType = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
public function all($programID = 0, $browseType = 'noclosed', $orderBy = 'order_desc')
|
||||
{
|
||||
/* Load module and set session. */
|
||||
$this->loadModel('program');
|
||||
$this->lang->product->switcherMenu = $this->product->getSwitcher();
|
||||
$this->session->set('productList', $this->app->getURI(true));
|
||||
|
||||
/* Load pager and get tasks. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
/* Set language items. */
|
||||
$this->lang->product->switcherMenu = $this->product->getSwitcher();
|
||||
|
||||
$program = $programID ? $this->program->getPGMByID($programID) : 0;
|
||||
$programName = empty($program) ? '' : $program->name;
|
||||
/* Init vars. */
|
||||
$program = $programID ? $this->program->getPGMByID($programID) : 0;
|
||||
$programName = empty($program) ? '' : $program->name;
|
||||
$productStats = $this->product->getStats($orderBy, '', $browseType, '', 'story', $programID);
|
||||
|
||||
$this->view->title = $this->lang->product->common;
|
||||
$this->view->position[] = $this->lang->product->common;
|
||||
|
||||
$this->view->productStats = $this->product->getStats($orderBy, $pager, $browseType, '', 'story', $programID);
|
||||
$this->view->recTotal = count($productStats);
|
||||
$this->view->productStats = $productStats;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->programTree = $this->program->getPGMTreeMenu($programID, 'product', '&browseType=' . $browseType);
|
||||
$this->view->programID = $programID;
|
||||
$this->view->program = $program;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = 'ID';
|
||||
$lang->product->program = "Program";
|
||||
$lang->product->name = 'Name';
|
||||
$lang->product->code = 'Alias';
|
||||
$lang->product->line = 'Produktlinie';
|
||||
$lang->product->order = 'Sortierung';
|
||||
$lang->product->type = 'Typ';
|
||||
$lang->product->typeAB = 'Typ';
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = 'ID';
|
||||
$lang->product->program = "Program";
|
||||
$lang->product->name = "{$lang->productCommon} Name";
|
||||
$lang->product->code = 'Code';
|
||||
$lang->product->line = "{$lang->productCommon} Line";
|
||||
$lang->product->order = 'Rank';
|
||||
$lang->product->type = 'Type';
|
||||
$lang->product->typeAB = 'Type';
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = 'ID';
|
||||
$lang->product->program = "Program";
|
||||
$lang->product->name = "Nom du {$lang->productCommon}";
|
||||
$lang->product->code = 'Code';
|
||||
$lang->product->line = "Ligne Produit";
|
||||
$lang->product->order = 'Rang';
|
||||
$lang->product->type = 'Type';
|
||||
$lang->product->typeAB = 'Type';
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = 'ID';
|
||||
$lang->product->program = "Program";
|
||||
$lang->product->name = "Tên {$lang->productCommon}";
|
||||
$lang->product->code = 'Mã';
|
||||
$lang->product->line = "Dòng {$lang->productCommon}";
|
||||
$lang->product->order = 'Đánh giá';
|
||||
$lang->product->type = 'Loại';
|
||||
$lang->product->typeAB = 'Loại AB';
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = '编号';
|
||||
$lang->product->program = "所属项目集";
|
||||
$lang->product->name = "{$lang->productCommon}名称";
|
||||
$lang->product->code = "{$lang->productCommon}代号";
|
||||
$lang->product->line = "{$lang->productCommon}线";
|
||||
$lang->product->order = '排序';
|
||||
$lang->product->type = "{$lang->productCommon}类型";
|
||||
$lang->product->typeAB = "类型";
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -69,7 +69,6 @@ $lang->product->id = '編號';
|
||||
$lang->product->program = "所屬項目集";
|
||||
$lang->product->name = "{$lang->productCommon}名稱";
|
||||
$lang->product->code = "{$lang->productCommon}代號";
|
||||
$lang->product->line = "{$lang->productCommon}綫";
|
||||
$lang->product->order = '排序';
|
||||
$lang->product->type = "{$lang->productCommon}類型";
|
||||
$lang->product->typeAB = "類型";
|
||||
@@ -151,9 +150,9 @@ $lang->product->featureBar['browse']['reviewedbyme'] = $lang->product->reviewedB
|
||||
$lang->product->featureBar['browse']['draftstory'] = $lang->product->draftStory;
|
||||
$lang->product->featureBar['browse']['more'] = $lang->more;
|
||||
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
$lang->product->featureBar['all']['noclosed'] = $lang->product->unclosed;
|
||||
$lang->product->featureBar['all']['closed'] = $lang->product->statusList['closed'];
|
||||
$lang->product->featureBar['all']['all'] = $lang->product->allProduct;
|
||||
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
|
||||
@@ -531,7 +531,6 @@ class productModel extends model
|
||||
$product = $this->loadModel('file')->processImgURL($product, $this->config->product->editor->create['id'], $this->post->uid);
|
||||
$this->dao->insert(TABLE_PRODUCT)->data($product)->autoCheck()
|
||||
->batchCheck($this->config->product->create->requiredFields, 'notempty')
|
||||
->checkIF(strlen($product->code) == 0, 'code', 'notempty') //the value of product code can be 0 or 00.00
|
||||
->checkIF(!empty($product->name), 'name', 'unique')
|
||||
->checkIF(!empty($product->name), 'code', 'unique')
|
||||
->exec();
|
||||
@@ -581,7 +580,6 @@ class productModel extends model
|
||||
$product = $this->loadModel('file')->processImgURL($product, $this->config->product->editor->edit['id'], $this->post->uid);
|
||||
$this->dao->update(TABLE_PRODUCT)->data($product)->autoCheck()
|
||||
->batchCheck($this->config->product->edit->requiredFields, 'notempty')
|
||||
->checkIF(strlen($product->code) == 0, 'code', 'notempty') //the value of product code can be 0 or 00.0
|
||||
->check('name', 'unique', "id != $productID and deleted = '0'")
|
||||
->check('code', 'unique', "id != $productID and deleted = '0'")
|
||||
->where('id')->eq($productID)
|
||||
@@ -627,6 +625,7 @@ class productModel extends model
|
||||
$products[$productID]->line = $data->lines[$productID];
|
||||
$products[$productID]->status = $data->statuses[$productID];
|
||||
$products[$productID]->desc = strip_tags($this->post->descs[$productID], $this->config->allowedTags);
|
||||
$products[$productID]->acl = $data->acl[$productID];
|
||||
$products[$productID]->order = $data->orders[$productID];
|
||||
|
||||
/* Check unique name for edited products. */
|
||||
@@ -652,6 +651,11 @@ class productModel extends model
|
||||
->where('id')->eq($productID)
|
||||
->exec();
|
||||
if(dao::isError()) die(js::error('product#' . $productID . dao::getError(true)));
|
||||
|
||||
/* When acl is open, white list set empty. When acl is private,update user view. */
|
||||
if($product->acl == 'open') $this->loadModel('personnel')->updateWhitelist('', 'product', $productID);
|
||||
if($product->acl != 'open') $this->loadModel('user')->updateUserView($productID, 'product');
|
||||
|
||||
$allChanges[$productID] = common::createChanges($oldProduct, $product);
|
||||
}
|
||||
$this->fixOrder();
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
</div>
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php foreach($lang->product->featureBar['all'] as $key => $label):?>
|
||||
<?php echo html::a(inlink("all", "programID=$programID&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link' id='{$key}Tab'");?>
|
||||
<?php $recTotalLabel = $browseType == $key ? " <span class='label label-light label-badge'>{$recTotal}</span>" : '';?>
|
||||
<?php echo html::a(inlink("all", "programID=$programID&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>" . $recTotalLabel, '', "class='btn btn-link' id='{$key}Tab'");?>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
@@ -36,10 +37,10 @@
|
||||
</div>
|
||||
<div class="main-col">
|
||||
<form class="main-table table-product" data-ride="table" id="productListForm" method="post" action='<?php echo inLink('batchEdit', "programID=$programID");?>'>
|
||||
<?php $canOrder = common::hasPriv('product', 'updataOrder');?>
|
||||
<?php $canOrder = common::hasPriv('product', 'updateOrder');?>
|
||||
<?php $canBatchEdit = common::hasPriv('product', 'batchEdit');?>
|
||||
<table id="productList" class="table has-sort-head table-fixed">
|
||||
<?php $vars = "programID=$programID&browseType=$browseType&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
|
||||
<?php $vars = "programID=$programID&browseType=$browseType&orderBy=%s";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'>
|
||||
@@ -51,7 +52,6 @@
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->product->name);?></th>
|
||||
<th class='w-100px' title='<?php echo $lang->program->PGMCommon;?>'><?php echo $lang->program->PGMCommon;?></th>
|
||||
<th class='w-100px' title='<?php echo $lang->product->activeStoriesTitle;?>'><?php echo $lang->product->activeStories;?></th>
|
||||
<th class='w-100px' title='<?php echo $lang->product->changedStoriesTitle;?>'><?php echo $lang->product->changedStories;?></th>
|
||||
<th class='w-100px' title='<?php echo $lang->product->draftStoriesTitle;?>'><?php echo $lang->product->draftStories;?></th>
|
||||
@@ -63,6 +63,7 @@
|
||||
<?php if($canOrder):?>
|
||||
<th class='w-70px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->product->updateOrder);?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-actions w-60px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="sortable" id="productTableList">
|
||||
@@ -76,7 +77,6 @@
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td class="c-name" title='<?php echo $product->name?>'><?php echo html::a($this->createLink('product', 'browse', 'product=' . $product->id), $product->name);?></td>
|
||||
<td class='c-name' title='<?echo empty($programID) ? $product->programName : $programName;?>'><?php echo empty($programID) ? $product->programName : $programName;?></td>
|
||||
<td class='text-center'><?php echo $product->stories['active'];?></td>
|
||||
<td class='text-center'><?php echo $product->stories['changed'];?></td>
|
||||
<td class='text-center'><?php echo $product->stories['draft'];?></td>
|
||||
@@ -88,6 +88,9 @@
|
||||
<?php if($canOrder):?>
|
||||
<td class='c-actions sort-handler'><i class="icon icon-move"></i></td>
|
||||
<?php endif;?>
|
||||
<td class='c-actions'>
|
||||
<?php common::printIcon('product', 'edit', "product=$product->id", $product, 'list', 'edit');?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
@@ -100,7 +103,6 @@
|
||||
<?php echo html::submitButton($lang->edit, '', 'btn');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</form>
|
||||
|
||||
@@ -41,14 +41,13 @@
|
||||
<tr>
|
||||
<th class='w-60px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-200px required'><?php echo $lang->product->name;?></th>
|
||||
<th class='w-150px required'><?php echo $lang->product->code;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'line', ' hidden') . zget($requiredFields, 'line', '', ' required');?>'><?php echo $lang->product->line;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'PO', ' hidden') . zget($requiredFields, 'PO', '', ' required');?>'><?php echo $lang->product->PO;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'QD', ' hidden') . zget($requiredFields, 'QD', '', ' required');?>'><?php echo $lang->product->QD;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'RD', ' hidden') . zget($requiredFields, 'RD', '', ' required');?>'><?php echo $lang->product->RD;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'type', ' hidden') . zget($requiredFields, 'type', '', ' required');?>'><?php echo $lang->product->type;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'status', ' hidden') . zget($requiredFields, 'status', '', ' required');?>'><?php echo $lang->product->status;?></th>
|
||||
<th class='w-200px<?php echo zget($visibleFields, 'desc', ' hidden') . zget($requiredFields, 'desc', '', ' required');?>'><?php echo $lang->product->desc;?></th>
|
||||
<th class='w-200px<?php echo zget($visibleFields, 'acl', ' hidden');?>'><?php echo $lang->product->acl;?></th>
|
||||
<th class='w-80px'><?php echo $lang->product->order;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -62,14 +61,13 @@
|
||||
<tr>
|
||||
<td><?php echo sprintf('%03d', $productID) . html::hidden("productIDList[$productID]", $productID);?></td>
|
||||
<td title='<?php echo $products[$productID]->name?>'><?php echo html::input("names[$productID]", $products[$productID]->name, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("codes[$productID]", $products[$productID]->code, "class='form-control'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'line', ' hidden')?>' style='overflow:visible'><?php echo html::select("lines[$productID]", $lines, $products[$productID]->line, "class='form-control chosen'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'PO', ' hidden')?>' style='overflow:visible'><?php echo html::select("POs[$productID]", $poUsers, $products[$productID]->PO, "class='form-control chosen'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'QD', ' hidden')?>' style='overflow:visible'><?php echo html::select("QDs[$productID]", $qdUsers, $products[$productID]->QD, "class='form-control chosen'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'RD', ' hidden')?>' style='overflow:visible'><?php echo html::select("RDs[$productID]", $rdUsers, $products[$productID]->RD, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'type', 'hidden')?>'><?php echo html::select("types[$productID]", $lang->product->typeList, $products[$productID]->type, "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'status', 'hidden')?>'><?php echo html::select("statuses[$productID]", $lang->product->statusList, $products[$productID]->status, "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'desc', 'hidden')?>'><?php echo html::textarea("descs[$productID]", htmlspecialchars($products[$productID]->desc), "rows='1' class='form-control autosize'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'acl', 'hidden')?>'><?php echo html::select("acl[$productID]", $lang->product->aclList, $products[$productID]->acl, "class='form-control'");?></td>
|
||||
<td><?php echo html::input("orders[$productID]", $products[$productID]->order, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
@@ -29,10 +29,6 @@
|
||||
<th><?php echo $lang->product->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='form-control input-product-title' required");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->code;?></th>
|
||||
<td><?php echo html::input('code', '', "class='form-control input-product-code' required");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->PO;?></th>
|
||||
<td><?php echo html::select('PO', $poUsers, $this->app->user->account, "class='form-control chosen'");?></td><td></td>
|
||||
@@ -53,7 +49,8 @@
|
||||
foreach($lang->product->typeList as $key => $type) $productTypeList[$key] = $type . zget($lang->product->typeTips, $key, '');
|
||||
?>
|
||||
<?php echo html::select('type', $productTypeList, 'normal', "class='form-control'");?>
|
||||
</td><td></td>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->storyConcept;?></th>
|
||||
@@ -75,7 +72,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->acl;?></th>
|
||||
<td colspan='2'><?php echo nl2br(html::radio('acl', $lang->product->aclList, 'open', "onclick='setWhite(this.value);'", 'block'));?></td>
|
||||
<td colspan='2'><?php echo nl2br(html::radio('acl', $lang->product->aclList, 'private', "onclick='setWhite(this.value);'", 'block'));?></td>
|
||||
</tr>
|
||||
<tr class="hidden" id="whitelistBox">
|
||||
<th><?php echo $lang->whitelist;?></th>
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
<th class='w-140px'><?php echo $lang->product->name;?></th>
|
||||
<td class='w-p40-f'><?php echo html::input('name', $product->name, "class='form-control' required");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->code;?></th>
|
||||
<td><?php echo html::input('code', $product->code, "class='form-control' required");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->PO;?></th>
|
||||
<td><?php echo html::select('PO', $poUsers, $product->PO, "class='form-control chosen'");?></td><td></td>
|
||||
|
||||
@@ -134,13 +134,15 @@
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><strong><?php echo $lang->product->manager;?></strong></div>
|
||||
<div class="detail-title"><strong><?php echo $lang->product->manager;?></strong></div>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><i class="icon icon-person icon-sm"></i> <?php echo $lang->productCommon;?></th>
|
||||
<td><em><?php echo zget($users, $product->PO);?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><i class="icon icon-person icon-sm"></i> <?php echo $lang->product->qa;?></th>
|
||||
<td><em><?php echo zget($users, $product->QD);?></em></td>
|
||||
</tr>
|
||||
@@ -157,10 +159,6 @@
|
||||
<div class="detail-content">
|
||||
<table class="table table-data data-basic">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->line;?></th>
|
||||
<td><em><?php echo zget($lines, $product->line);?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->openedBy?></th>
|
||||
<td><em><?php echo zget($users, $product->createdBy);?></em></td>
|
||||
|
||||
@@ -557,6 +557,32 @@ class program extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get projects.
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $copyProjectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetCopyProjects($name = '', $copyProjectID = 0)
|
||||
{
|
||||
$projects = $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF($name)->andWhere('name')->like("%$name%")->fi()
|
||||
->fetchPairs();
|
||||
|
||||
$html = empty($projects) ? "<div class='text-center'>{$this->lang->noData}</div>" : '';
|
||||
foreach($projects as $id => $name)
|
||||
{
|
||||
$active = $copyProjectID == $id ? 'active' : '';
|
||||
$html .= "<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id=$id class='nobr $active'>" . html::icon($this->lang->icons['project'], 'text-muted') . $name . "</a></div>";
|
||||
}
|
||||
echo $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update program order.
|
||||
*
|
||||
@@ -728,6 +754,8 @@ class program extends control
|
||||
$acl = $copyProject->acl;
|
||||
$auth = $copyProject->auth;
|
||||
$whitelist = $copyProject->whitelist;
|
||||
$programID = $copyProject->parent;
|
||||
$model = $copyProject->model;
|
||||
|
||||
$products = $this->project->getProducts($copyProjectID);
|
||||
foreach($products as $product)
|
||||
@@ -743,7 +771,7 @@ class program extends control
|
||||
|
||||
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
$this->view->copyProjects = array('' => '') + $this->program->getPRJPairsByModel($model, $programID);
|
||||
$this->view->copyProjects = $this->program->getPRJPairsByModel();
|
||||
$this->view->products = $products;
|
||||
$this->view->allProducts = array('0' => '') + $allProducts;
|
||||
$this->view->productPlans = array('0' => '') + $productPlans;
|
||||
|
||||
@@ -8,3 +8,4 @@
|
||||
#copyProjectModal a.active:after {position: absolute; content: '\e92f'; font-family: ZentaoIcon; font-size: 20px; right: 25px;}
|
||||
#copyProjectModal a.cancel {color: #ff5d5d}
|
||||
#budget {border-right:0px;}
|
||||
#projectName{display: inline-block; width: 32%}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
$(function()
|
||||
{
|
||||
$('#copyProjects a').click(function(){setCopyProject($(this).data('id')); $('#copyProjectModal').modal('hide')});
|
||||
$('#copyProjects a').click(function()
|
||||
{
|
||||
setCopyProject($(this).data('id'));
|
||||
$('#copyProjectModal').modal('hide')
|
||||
});
|
||||
|
||||
setAclList($("#parent").val());
|
||||
|
||||
if(typeof(currentPlanID) == 'undefined')
|
||||
@@ -28,7 +33,7 @@ $(function()
|
||||
function setParentProgram()
|
||||
{
|
||||
var parentProgram = $("#parent").val();
|
||||
location.href = createLink('program', 'PRJCreate', 'model=' + model + '&programID=' + parentProgram + '&from=' + from + '©ProjectID=' + copyProjectID);
|
||||
location.href = createLink('program', 'PRJCreate', 'model=' + model + '&programID=' + parentProgram + '&from=' + from);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -209,3 +214,24 @@ function adjustPlanBoxMargin()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fuzzy search projects by project name.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
$('#projectName').on('keyup', function()
|
||||
{
|
||||
var name = $(this).val();
|
||||
name = name.replace(/\s+/g, '');
|
||||
link = createLink('program', 'ajaxGetCopyProjects', 'name=' + name + '&cpoyProjectID=' + copyProjectID);
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#copyProjects').html(data);
|
||||
$('#copyProjects a').click(function()
|
||||
{
|
||||
setCopyProject($(this).data('id')); $('#copyProjectModal').modal('hide')
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
@@ -38,8 +38,7 @@ $lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->program->PRJSource = 'Project source:';
|
||||
$lang->program->PRJStandalone = 'Projects that do not belong to a program.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
|
||||
@@ -38,8 +38,7 @@ $lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->program->PRJSource = 'Project source:';
|
||||
$lang->program->PRJStandalone = 'Projects that do not belong to a program.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
|
||||
@@ -38,8 +38,7 @@ $lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->program->PRJSource = 'Project source:';
|
||||
$lang->program->PRJStandalone = 'Projects that do not belong to a program.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
|
||||
@@ -38,8 +38,7 @@ $lang->program->copyTitle = 'Please select an project to copy';
|
||||
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
|
||||
$lang->program->errorNoProducts = 'At least one product is associated';
|
||||
$lang->program->copyNoProject = 'There are no items available to copy.';
|
||||
$lang->program->PRJSource = 'Project source:';
|
||||
$lang->program->PRJStandalone = 'Projects that do not belong to a program.';
|
||||
$lang->project->searchByName = 'Enter the project name to retrieve';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
|
||||
@@ -34,12 +34,11 @@ $lang->program->PRJStoryConcept = '需求概念组合';
|
||||
$lang->program->unbindWhielist = '项目删除白名单';
|
||||
$lang->program->PRJManageProducts = '关联产品';
|
||||
$lang->program->view = '项目集详情';
|
||||
$lang->program->copyTitle = '请选择一个项目来复制';
|
||||
$lang->program->copyTitle = '请选择要复制的项目';
|
||||
$lang->program->errorSameProducts = '项目不能关联多个相同的产品。';
|
||||
$lang->program->errorNoProducts = '最少关联一个产品';
|
||||
$lang->program->copyNoProject = '没有可用的项目来复制';
|
||||
$lang->program->PRJSource = '项目来源:';
|
||||
$lang->program->PRJStandalone = '没有所属项目集的项目';
|
||||
$lang->project->searchByName = '输入项目名称进行检索';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = '项目集';
|
||||
|
||||
@@ -1116,17 +1116,17 @@ class programModel extends model
|
||||
/**
|
||||
* Get project pairs by model and program.
|
||||
*
|
||||
* @param string $model
|
||||
* @param string $model scrum|waterfall
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getPRJPairsByModel($model, $programID = 0)
|
||||
public function getPRJPairsByModel($model = 'all', $programID = 0)
|
||||
{
|
||||
return $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->andWhere('parent')->eq($programID)
|
||||
->andWhere('model')->eq($model)
|
||||
->beginIF($programID)->andWhere('parent')->eq($programID)->fi()
|
||||
->beginIF($model != 'all')->andWhere('model')->eq($model)->fi()
|
||||
->andWhere('deleted')->eq('0')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->orderBy('id_desc')
|
||||
|
||||
@@ -13,9 +13,6 @@ $programsPinYin = common::convert2Pinyin($programNames);
|
||||
?>
|
||||
</div>
|
||||
<div class="col-footer">
|
||||
<div class='pull-left'>
|
||||
<?php echo html::a(helper::createLink('program', 'pgmbrowse', 'status=all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->project->all, '', 'class="not-list-item"'); ?>
|
||||
</div>
|
||||
<div class='pull-right'>
|
||||
<?php echo html::checkbox('showClosed', array('1' => $lang->program->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
|
||||
</div>
|
||||
@@ -46,9 +43,9 @@ $programsPinYin = common::convert2Pinyin($programNames);
|
||||
#programTree li.open > .list-toggle:before {border: none; height: 2px; width: 6px; left: 0; top: 2px; background: #fff;}
|
||||
#programTree li.open > .list-toggle:hover {background: #006AF1;}
|
||||
|
||||
#programTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 2px solid #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
|
||||
#programTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 1px dashed #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
|
||||
#programTree ul > li:before,
|
||||
#programTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 2px solid #cbd0db; top: -13px; bottom: 12px; left: -12px;}
|
||||
#programTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 1px dashed #cbd0db; top: -13px; bottom: 12px; left: -12px;}
|
||||
#programTree ul > li:last-child:before {bottom: auto; height: 29px;}
|
||||
#programTree ul > li:first-child:before {top: -9px;}
|
||||
#programTree ul > li.has-list:first-child:before {top: -13px;}
|
||||
@@ -61,11 +58,11 @@ $programsPinYin = common::convert2Pinyin($programNames);
|
||||
$('#programTree').tree();
|
||||
$(function()
|
||||
{
|
||||
$('input[name^="showClosed"]').click(function()
|
||||
{
|
||||
$('#showClosed1').click(function()
|
||||
{
|
||||
var showClosed = $(this).is(':checked') ? 1 : 0;
|
||||
$.cookie('showClosed', showClosed, {expires:config.cookieLife, path:config.webRoot});
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</div>
|
||||
<div class="col-footer">
|
||||
<?php echo html::a(helper::createLink('program', 'PRJBrowse', 'programID=0&status=all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->project->all, '', 'class="not-list-item"'); ?>
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->project->doneProjects?><i class='icon icon-angle-right'></i></a>
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->project->doneProjects;?><i class='icon icon-angle-right'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-col col-right">
|
||||
@@ -41,9 +41,9 @@
|
||||
#projectTree li.open > .list-toggle:before {border: none; height: 2px; width: 6px; left: 0; top: 2px; background: #fff;}
|
||||
#projectTree li.open > .list-toggle:hover {background: #006AF1;}
|
||||
|
||||
#projectTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 2px solid #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
|
||||
#projectTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 1px dashed #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
|
||||
#projectTree ul > li:before,
|
||||
#projectTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 2px solid #cbd0db; top: -13px; bottom: 12px; left: -12px;}
|
||||
#projectTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 1px dashed #cbd0db; top: -13px; bottom: 12px; left: -12px;}
|
||||
#projectTree ul > li:last-child:before {bottom: auto; height: 29px;}
|
||||
#projectTree ul > li:first-child:before {top: -9px;}
|
||||
#projectTree ul > li.has-list:first-child:before {top: -13px;}
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
<a class='table-nest-toggle table-nest-toggle-global' data-expand-text='<?php echo $lang->expand; ?>' data-collapse-text='<?php echo $lang->collapse; ?>'></a>
|
||||
<?php echo $lang->program->PGMName;?>
|
||||
</th>
|
||||
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->program->PGMPM);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->program->PGMBudget);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->program->PGMStatus);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->program->begin);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->program->end);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->program->PGMBudget);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->program->PGMPM);?></th>
|
||||
<th class='text-center w-240px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -51,11 +51,11 @@
|
||||
<?php echo html::a($this->createLink('program', 'index', "programID=$program->id", '', '', $program->id), $program->name);?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td><?php echo zget($users, $program->PM);?></td>
|
||||
<td class='text-left'><?php echo $program->budget ? $program->budget . ' ' . zget($lang->program->unitList, $program->budgetUnit) : '';?></td>
|
||||
<td class='c-status'><span class="status-program status-<?php echo $program->status?>"><?php echo zget($lang->project->statusList, $program->status, '');?></span></td>
|
||||
<td><?php echo $program->begin;?></td>
|
||||
<td><?php echo $program->end == LONG_TIME ? $lang->program->PRJLongTime : $program->end;?></td>
|
||||
<td class='text-left'><?php echo $program->budget ? $program->budget . ' ' . zget($lang->program->unitList, $program->budgetUnit) : '';?></td>
|
||||
<td><?php echo zget($users, $program->PM);?></td>
|
||||
<td class='text-right c-actions'>
|
||||
<?php if($program->type == 'program'):?>
|
||||
<?php common::printIcon('program', 'PRJStart', "programID=$program->id", $program, 'list', 'play', '', 'iframe', true, '', $this->lang->program->PGMStart);?>
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<div class='row'>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($products as $product):?>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-4" style="margin-bottom: 10px;">
|
||||
<?php $hasBranch = $product->type != 'normal' and isset($branchGroups[$product->id]);?>
|
||||
<div class="input-group<?php if($hasBranch) echo ' has-branch';?>">
|
||||
<?php echo html::select("products[$i]", $allProducts, $product->id, "class='form-control chosen' onchange='loadBranches(this)' data-last='" . $product->id . "'");?>
|
||||
@@ -176,9 +176,8 @@
|
||||
<div class='modal-header'>
|
||||
<button type='button' class='close' data-dismiss='modal'><i class="icon icon-close"></i></button>
|
||||
<h4 class='modal-title' id='myModalLabel'>
|
||||
<?php echo $lang->program->copyTitle;?>
|
||||
<?php if($programID) $lang->program->PRJStandalone = zget($programList, $programID, $lang->noData);?>
|
||||
<span class="label label-primary label-outline"><?php echo $lang->program->PRJSource . $lang->program->PRJStandalone;?></span>
|
||||
<?php echo $lang->program->copyTitle;?>
|
||||
<?php echo html::input('projectName', '', "class='form-control' placeholder={$lang->project->searchByName}");?>
|
||||
</h4>
|
||||
</div>
|
||||
<div class='modal-body'>
|
||||
@@ -190,13 +189,8 @@
|
||||
<?php else:?>
|
||||
<div id='copyProjects' class='row'>
|
||||
<?php foreach ($copyProjects as $id => $name):?>
|
||||
<?php if(empty($id)):?>
|
||||
<?php if($copyProjectID != 0):?>
|
||||
<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id='' class='cancel'><?php echo html::icon($lang->icons['cancel']) . ' ' . $lang->project->cancelCopy;?></a></div>
|
||||
<?php endif;?>
|
||||
<?php else: ?>
|
||||
<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id='<?php echo $id;?>' class='nobr <?php echo ($copyProjectID == $id) ? ' active' : '';?>'><?php echo html::icon($lang->icons['project'], 'text-muted') . ' ' . $name;?></a></div>
|
||||
<?php endif; ?>
|
||||
<?php $active = ($copyProjectID == $id) ? ' active' : '';?>
|
||||
<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id='<?php echo $id;?>' class='nobr <?php echo $active;?>'><?php echo html::icon($lang->icons['project'], 'text-muted') . ' ' . $name;?></a></div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -93,6 +93,7 @@ $lang->story->source = 'Von';
|
||||
$lang->story->sourceNote = 'Hinweis';
|
||||
$lang->story->fromBug = 'Von Bug';
|
||||
$lang->story->title = 'Titel';
|
||||
$lang->story->name = 'Name';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->color = 'Color';
|
||||
$lang->story->toBug = 'ToBug';
|
||||
|
||||
@@ -93,6 +93,7 @@ $lang->story->source = 'From';
|
||||
$lang->story->sourceNote = 'Note';
|
||||
$lang->story->fromBug = 'From Bug';
|
||||
$lang->story->title = 'Title';
|
||||
$lang->story->name = 'Name';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->color = 'Color';
|
||||
$lang->story->toBug = 'ToBug';
|
||||
|
||||
@@ -93,6 +93,7 @@ $lang->story->source = 'De';
|
||||
$lang->story->sourceNote = 'Note';
|
||||
$lang->story->fromBug = 'Depuis Bug';
|
||||
$lang->story->title = 'Titre';
|
||||
$lang->story->name = 'Name';
|
||||
$lang->story->type = 'Type';
|
||||
$lang->story->color = 'Couleur';
|
||||
$lang->story->toBug = 'Vers Bug';
|
||||
|
||||
@@ -93,6 +93,7 @@ $lang->story->source = 'Từ';
|
||||
$lang->story->sourceNote = 'Ghi chú';
|
||||
$lang->story->fromBug = 'Từ Bug';
|
||||
$lang->story->title = 'Tiêu đề';
|
||||
$lang->story->name = 'Name';
|
||||
$lang->story->type = 'Loại';
|
||||
$lang->story->color = 'Màu';
|
||||
$lang->story->toBug = 'Tới Bug';
|
||||
|
||||
@@ -93,10 +93,11 @@ $lang->story->source = "来源";
|
||||
$lang->story->sourceNote = '来源备注';
|
||||
$lang->story->fromBug = '来源Bug';
|
||||
$lang->story->title = "{$lang->productSRCommon}名称";
|
||||
$lang->story->name = '名称';
|
||||
$lang->story->type = "类型";
|
||||
$lang->story->color = '标题颜色';
|
||||
$lang->story->toBug = '转Bug';
|
||||
$lang->story->spec = "{$lang->productSRCommon}描述";
|
||||
$lang->story->spec = "描述";
|
||||
$lang->story->assign = '指派给';
|
||||
$lang->story->verify = '验收标准';
|
||||
$lang->story->pri = '优先级';
|
||||
|
||||
@@ -93,10 +93,11 @@ $lang->story->source = "來源";
|
||||
$lang->story->sourceNote = '來源備註';
|
||||
$lang->story->fromBug = '來源Bug';
|
||||
$lang->story->title = "{$lang->productSRCommon}名稱";
|
||||
$lang->story->name = '名稱';
|
||||
$lang->story->type = "{$lang->productSRCommon}類型";
|
||||
$lang->story->color = '標題顏色';
|
||||
$lang->story->toBug = '轉Bug';
|
||||
$lang->story->spec = "{$lang->productSRCommon}描述";
|
||||
$lang->story->spec = "描述";
|
||||
$lang->story->assign = '指派給';
|
||||
$lang->story->verify = '驗收標準';
|
||||
$lang->story->pri = '優先順序';
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
</tr>
|
||||
<?php $this->printExtendFields($story, 'table');?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<th><?php echo $lang->story->name;?></th>
|
||||
<td colspan='2'><?php echo html::input('title', $story->title, 'class="form-control"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -4,3 +4,4 @@
|
||||
.cycleConfig .checkbox-primary{float:left; width:100px;}
|
||||
.cycleConfig .tab-pane{padding:8px 0px;}
|
||||
.cycleConfig .tab-pane .input-group{width:380px}
|
||||
#name{height: 34px}
|
||||
|
||||
@@ -29,4 +29,12 @@ $(function()
|
||||
{
|
||||
if($(this).data('type'))$('input[id*=type][id*=config]').val($(this).data('type'));
|
||||
});
|
||||
|
||||
$('#pri').on('change', function()
|
||||
{
|
||||
var $select = $(this);
|
||||
var $selector = $select.closest('.pri-selector');
|
||||
var value = $select.val();
|
||||
$selector.find('.pri-text').html('<span class="label-pri label-pri-' + value + '" title="' + value + '">' + value + '</span>');
|
||||
});
|
||||
})
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
$(function()
|
||||
{
|
||||
loadList($('#type').val());
|
||||
|
||||
$('#pri').on('change', function()
|
||||
{
|
||||
var $select = $(this);
|
||||
var $selector = $select.closest('.pri-selector');
|
||||
var value = $select.val();
|
||||
$selector.find('.pri-text').html('<span class="label-pri label-pri-' + value + '" title="' + value + '">' + value + '</span>');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -87,11 +87,10 @@ $lang->todo->statusList['closed'] = '已关闭';
|
||||
//$lang->todo->statusList['cancel'] = '已取消';
|
||||
//$lang->todo->statusList['postpone'] = '已延期';
|
||||
|
||||
$lang->todo->priList[0] = '';
|
||||
$lang->todo->priList[3] = '一般';
|
||||
$lang->todo->priList[1] = '最高';
|
||||
$lang->todo->priList[2] = '较高';
|
||||
$lang->todo->priList[4] = '最低';
|
||||
$lang->todo->priList[3] = 3;
|
||||
$lang->todo->priList[1] = 1;
|
||||
$lang->todo->priList[2] = 2;
|
||||
$lang->todo->priList[4] = 4;
|
||||
|
||||
$lang->todo->typeList['custom'] = '自定义';
|
||||
$lang->todo->typeList['cycle'] = '周期';
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->todo->assignTo;?></h2>
|
||||
<h2><?php echo $lang->todo->assignedTo;?></h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin' id="todoAssignForm">
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->todo->assignTo;?></th>
|
||||
<th class='w-80px'><?php echo $lang->todo->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $members, $todo->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
@@ -112,15 +112,22 @@
|
||||
<th><?php echo $lang->todo->type;?></th>
|
||||
<td><?php echo html::select('type', $lang->todo->typeList, '', 'onchange="loadList(this.value);" class="form-control"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->todo->pri;?></th>
|
||||
<td><?php echo html::select('pri', $lang->todo->priList, '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->todo->name;?></th>
|
||||
<td colspan='2'>
|
||||
<div id='nameBox' class='hidden'><?php echo html::input('name', '', "class='form-control'");?></div>
|
||||
<div class='nameBox required'><?php echo html::input('name', isset($name) ? $name : '', "class='form-control'");?></div>
|
||||
<div class='input-group title-group required'>
|
||||
<div class='nameBox'><?php echo html::input('name', isset($name) ? $name : '', "class='form-control'");?></div>
|
||||
<span class="input-group-addon fix-border br-0" style="border-radius: 0px;"><?php echo $lang->todo->pri;?></span>
|
||||
<div class="input-group-btn pri-selector" data-type="pri">
|
||||
<button type="button" class="btn dropdown-toggle br-0" data-toggle="dropdown">
|
||||
<span class="pri-text"><span class="label-pri label-pri-3">3</span></span> <span class="caret"></span>
|
||||
</button>
|
||||
<div class='dropdown-menu pull-right'>
|
||||
<?php echo html::select('pri', $lang->todo->priList, 3, "class='form-control' data-provide='labelSelector' data-label-class='label-pri'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -123,17 +123,22 @@
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="row form-group">
|
||||
<label class="col-sm-1"><?php echo $lang->todo->pri;?></label>
|
||||
<div class="col-sm-2">
|
||||
<?php echo html::select('pri', $lang->todo->priList, $todo->pri, "class='form-control chosen'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row form-group">
|
||||
<label class="col-sm-1"><?php echo $lang->todo->name;?></label>
|
||||
<div class="col-sm-10">
|
||||
<div id='nameBox' class='hidden'><?php echo html::input('name', $todo->name, "class='form-control'");?></div>
|
||||
<div class='nameBox required'><?php echo html::input('name', $todo->name, "class='form-control'");?></div>
|
||||
<div class='input-group title-group required'>
|
||||
<div class='nameBox'><?php echo html::input('name', $todo->name, "class='form-control'");?></div>
|
||||
<span class="input-group-addon fix-border br-0" style="border-radius: 0px;"><?php echo $lang->todo->pri;?></span>
|
||||
<div class="input-group-btn pri-selector" data-type="pri">
|
||||
<button type="button" class="btn dropdown-toggle br-0" data-toggle="dropdown">
|
||||
<span class="pri-text"><span class="label-pri label-pri-<?php echo $todo->pri;?>"><?php echo $todo->pri;?></span></span> <span class="caret"></span>
|
||||
</button>
|
||||
<div class='dropdown-menu pull-right'>
|
||||
<?php echo html::select('pri', $lang->todo->priList, $todo->pri, "class='form-control' data-provide='labelSelector' data-label-class='label-pri'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row form-group">
|
||||
|
||||
@@ -122,9 +122,13 @@
|
||||
</tr>
|
||||
<?php if(isset($todo->assignedTo)):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->todo->assignTo;?></th>
|
||||
<th><?php echo $lang->todo->assignedTo;?></th>
|
||||
<td><?php echo zget($users, $todo->assignedTo);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->todo->assignedBy;?></th>
|
||||
<td><?php echo zget($users, $todo->assignedBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->todo->assignedDate;?></th>
|
||||
<td><?php echo formatTime($todo->assignedDate, DT_DATE1);?></td>
|
||||
|
||||
Reference in New Issue
Block a user