Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
+12
-14
@@ -640,7 +640,7 @@ class actionModel extends model
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param string|int $productID all|int(like 123)|notzero all => include zero, notzero, greater than 0
|
||||
* @param string|int $executionID same as productID
|
||||
* @param string|int $projectID same as productID
|
||||
* @param string $date
|
||||
* @param string $direction
|
||||
* @access public
|
||||
@@ -657,14 +657,14 @@ class actionModel extends model
|
||||
if($productID == 'all') $products = $this->app->user->view->products;
|
||||
if($projectID == 'all') $projects = $this->app->user->view->projects;
|
||||
|
||||
if($productID == 'all' or $executionID == 'all')
|
||||
if($productID == 'all' or $projectID == 'all')
|
||||
{
|
||||
$projectCondition = $projectID == 'all' ? "project " . helper::dbIN($projects) : '';
|
||||
$projectCondition = $projectID == 'all' ? "execution " . helper::dbIN($projects) : '';
|
||||
$productCondition = $productID == 'all' ? "INSTR('," . $products . ",', product) > 0" : '';
|
||||
if(is_numeric($productID)) $productCondition = "product like'%,$productID,%' or product='$productID'";
|
||||
if(is_numeric($projectID)) $projectCondition = "project='$projectID'";
|
||||
if(is_numeric($projectID)) $projectCondition = "execution='$projectID'";
|
||||
|
||||
$condition = "(product =',0,' AND project = '0')";
|
||||
$condition = "(product =',0,' AND execution = '0')";
|
||||
if($projectCondition) $condition .= ' OR ' . $projectCondition;
|
||||
if($productCondition) $condition .= ' OR ' . $productCondition;
|
||||
if($this->app->user->admin) $condition = 1;
|
||||
@@ -672,15 +672,10 @@ class actionModel extends model
|
||||
|
||||
/* If is project, select its related. */
|
||||
$executions = array();
|
||||
$products = array();
|
||||
if(is_numeric($projectID))
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(isset($project->type) and $project->type == 'project')
|
||||
{
|
||||
$executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
|
||||
}
|
||||
if(isset($project->type) and $project->type == 'project') $executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
}
|
||||
|
||||
$this->loadModel('doc');
|
||||
@@ -697,9 +692,12 @@ class actionModel extends model
|
||||
->beginIF($date)->andWhere('date' . ($direction == 'next' ? '<' : '>') . "'{$date}'")->fi()
|
||||
->beginIF($account != 'all')->andWhere('actor')->eq($account)->fi()
|
||||
->beginIF(is_numeric($productID))->andWhere('product')->like("%,$productID,%")->fi()
|
||||
->beginIF(is_numeric($projectID))->andWhere('execution')->eq($projectID)->fi()
|
||||
->beginIF(!empty($executions))->markLeft()->orWhere('execution')->in($executions)->fi()->markRight()
|
||||
->beginIF(!empty($products))->markLeft()->orWhere('product')->in($products)->fi()->markRight()
|
||||
->andWhere()
|
||||
->markLeft(1)
|
||||
->where(1)
|
||||
->beginIF(is_numeric($projectID))->orWhere('execution')->eq($projectID)->fi()
|
||||
->beginIF(!empty($executions))->orWhere('execution')->in(array_keys($executions))->fi()
|
||||
->markRight(1)
|
||||
->beginIF($productID == 'notzero')->andWhere('product')->gt(0)->andWhere('product')->notlike('%,0,%')->fi()
|
||||
->beginIF($projectID == 'notzero')->andWhere('execution')->gt(0)->fi()
|
||||
->beginIF($projectID == 'all' or $productID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
|
||||
|
||||
@@ -47,7 +47,7 @@ class bug extends control
|
||||
$this->loadModel('task');
|
||||
|
||||
/* Set bug menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
@@ -32,7 +32,7 @@ class caselib extends control
|
||||
parent::__construct($moduleName, $methodName);
|
||||
|
||||
/* Set testtask menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
+18
-16
@@ -148,7 +148,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
|
||||
@@ -219,11 +219,9 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => 'Global Settings|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concept|custom|browsestoryconcept|');
|
||||
$lang->system->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|');
|
||||
$lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -289,7 +287,6 @@ $lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$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');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
@@ -303,7 +300,6 @@ else
|
||||
$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->team = array('link' => 'Team|my|team|', 'subModule' => 'user');
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
@@ -322,7 +318,7 @@ $lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->my->dividerMenu = ',myWork,score,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
@@ -516,17 +512,23 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => 'Benutzer|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Abteilung|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Gruppen|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = 'Verlauf|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Unternehmen|company|view');
|
||||
$lang->company->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Company|company|view');
|
||||
|
||||
/* Admin menu settings. */
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => 'Personnel|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,admin,backup,action');
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->model = array('link' => 'Model|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->message = array('link' => 'Message|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,backup,action');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concpet|custom|browsestoryconcept|');
|
||||
|
||||
$lang->company->menu = $lang->company->menu;
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
|
||||
+15
-20
@@ -148,7 +148,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
|
||||
@@ -219,11 +219,9 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => 'Global Settings|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concept|custom|browsestoryconcept|');
|
||||
$lang->system->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|');
|
||||
$lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -289,7 +287,6 @@ $lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$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');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
@@ -303,7 +300,6 @@ else
|
||||
$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->team = array('link' => 'Team|my|team|', 'subModule' => 'user');
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
@@ -322,7 +318,7 @@ $lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->my->dividerMenu = ',myWork,score,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
@@ -516,22 +512,21 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => 'User|company|browse', 'subModule' => ',user,');
|
||||
$lang->company->menu->dept = array('link' => 'Dept|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Group|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Company|company|view');
|
||||
|
||||
/* Admin menu settings. */
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => 'Personnel|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,admin,backup,action');
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->model = array('link' => 'Model|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->message = array('link' => 'Message|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,backup,action');
|
||||
|
||||
$lang->company->menu = $lang->company->menu;
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concpet|custom|browsestoryconcept|');
|
||||
|
||||
$lang->admin->subMenu = new stdclass();
|
||||
$lang->admin->subMenu->message = new stdclass();
|
||||
|
||||
@@ -148,7 +148,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
|
||||
@@ -219,11 +219,9 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => 'Global Settings|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concept|custom|browsestoryconcept|');
|
||||
$lang->system->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|');
|
||||
$lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -289,7 +287,6 @@ $lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$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');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
@@ -303,7 +300,6 @@ else
|
||||
$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->team = array('link' => 'Team|my|team|', 'subModule' => 'user');
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
@@ -322,7 +318,7 @@ $lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->my->dividerMenu = ',myWork,score,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
@@ -516,8 +512,6 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => 'Utilisateurs|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Compartiments|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Privilèges|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = 'Historique|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Entreprise|company|view');
|
||||
|
||||
/* Admin menu settings. */
|
||||
$lang->admin = new stdclass();
|
||||
|
||||
@@ -49,16 +49,14 @@ $lang->index->menuOrder[10] = 'project';
|
||||
|
||||
/* my menu order. */
|
||||
$lang->my->menuOrder[5] = 'index';
|
||||
$lang->my->menuOrder[10] = 'calendar';
|
||||
$lang->my->menuOrder[15] = 'myWork';
|
||||
$lang->my->menuOrder[20] = 'myProject';
|
||||
$lang->my->menuOrder[25] = 'myExecution';
|
||||
$lang->my->menuOrder[30] = 'contribute';
|
||||
$lang->my->menuOrder[35] = 'score';
|
||||
$lang->my->menuOrder[40] = 'dynamic';
|
||||
$lang->my->menuOrder[45] = 'follow';
|
||||
$lang->my->menuOrder[50] = 'team';
|
||||
$lang->my->menuOrder[55] = 'contacts';
|
||||
$lang->my->menuOrder[10] = 'myWork';
|
||||
$lang->my->menuOrder[15] = 'myProject';
|
||||
$lang->my->menuOrder[20] = 'myExecution';
|
||||
$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. */
|
||||
@@ -142,19 +140,17 @@ $lang->report->menuOrder[25] = 'staff';
|
||||
$lang->company->menuOrder[5] = 'browseUser';
|
||||
$lang->company->menuOrder[10] = 'dept';
|
||||
$lang->company->menuOrder[15] = 'browseGroup';
|
||||
$lang->company->menuOrder[20] = 'dynamic';
|
||||
$lang->company->menuOrder[25] = 'view';
|
||||
$lang->company->menuOrder[30] = 'addGroup';
|
||||
$lang->company->menuOrder[35] = 'batchAddUser';
|
||||
$lang->company->menuOrder[40] = 'addUser';
|
||||
$lang->company->menuOrder[20] = 'addGroup';
|
||||
$lang->company->menuOrder[25] = 'batchAddUser';
|
||||
$lang->company->menuOrder[30] = 'addUser';
|
||||
$lang->dept->menuOrder = $lang->company->menuOrder;
|
||||
$lang->group->menuOrder = $lang->company->menuOrder;
|
||||
$lang->user->menuOrder = $lang->company->menuOrder;
|
||||
|
||||
/* system menu order. */
|
||||
$lang->system->menuOrder[5] = 'company';
|
||||
$lang->system->menuOrder[10] = 'scrum';
|
||||
$lang->system->menuOrder[15] = 'waterfall';
|
||||
$lang->system->menuOrder[10] = 'team';
|
||||
$lang->system->menuOrder[15] = 'calendar';
|
||||
|
||||
/* admin menu order. */
|
||||
$lang->admin->menuOrder[5] = 'index';
|
||||
|
||||
+15
-15
@@ -148,7 +148,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
|
||||
@@ -219,11 +219,9 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => 'Global Settings|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concept|custom|browsestoryconcept|');
|
||||
$lang->system->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|');
|
||||
$lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -289,7 +287,6 @@ $lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$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');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
@@ -303,7 +300,6 @@ else
|
||||
$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->team = array('link' => 'Team|my|team|', 'subModule' => 'user');
|
||||
$lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
@@ -516,17 +512,21 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => 'Người dùng|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Phòng/Ban|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Phân quyền|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = 'Lịch sử|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Doanh nghiệp|company|view');
|
||||
|
||||
/* Admin menu settings. */
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => 'Personnel|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->admin->menu->message = array('link' => 'Thông báo|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,admin,backup,action');
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->model = array('link' => 'Model|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->message = array('link' => 'Message|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->system = array('link' => 'System|backup|index', 'subModule' => 'cron,backup,action');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concpet|custom|browsestoryconcept|');
|
||||
|
||||
$lang->company->menu = $lang->company->menu;
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
|
||||
@@ -148,7 +148,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> 测试|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> 代码|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> 文档|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> 统计|report|productSummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-group"></i> 组织|custom|browsestoryconcept|';
|
||||
$lang->mainNav->system = '<i class="icon icon-group"></i> 组织|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-cog-outline"></i> 后台|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> 项目集|$programModule|$programMethod|";
|
||||
|
||||
@@ -221,11 +221,9 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => '全局设置|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => '需求概念|custom|browsestoryconcept|');
|
||||
$lang->system->menu->company = array('link' => '人员|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => '团队|my|team|');
|
||||
$lang->system->menu->calendar = array('link' => '日程|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -291,7 +289,6 @@ $lang->my = new stdclass();
|
||||
$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');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
@@ -305,7 +302,6 @@ else
|
||||
$lang->my->menu->contribute = array('link' => '贡献|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->score = array('link' => '积分|my|score|', 'subModule' => 'score');
|
||||
$lang->my->menu->team = array('link' => '团队|my|team|', 'subModule' => 'user');
|
||||
$lang->my->menu->contacts = '联系人|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
@@ -324,7 +320,7 @@ $lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = '用例|my|contribute|mode=testcase&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = '测试单|my|contribute|mode=testtask&type=done';
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->my->dividerMenu = ',myWork,score,';
|
||||
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
@@ -527,13 +523,18 @@ $lang->company->menu->view = array('link' => '公司|company|view');
|
||||
/* 后台管理菜单设置。*/
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => '首页|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => '人员|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->admin->menu->message = array('link' => '通知|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => '自定义|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->system = array('link' => '系统|backup|index', 'subModule' => 'cron,backup,action');
|
||||
$lang->admin->menu->index = array('link' => '首页|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->model = array('link' => '模型|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => '自定义|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->message = array('link' => '通知|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->system = array('link' => '系统|backup|index', 'subModule' => 'cron,backup,action');
|
||||
|
||||
$lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => '需求概念|custom|browsestoryconcept|');
|
||||
|
||||
$lang->company->menu = $lang->company->menu;
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
@@ -665,9 +666,14 @@ $lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
|
||||
$lang->navGroup->company = 'system';
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
$lang->navGroup->user = 'system';
|
||||
$lang->navGroup->group = 'system';
|
||||
$lang->navGroup->dept = 'system';
|
||||
$lang->navGroup->ldap = 'system';
|
||||
$lang->navGroup->process = 'system';
|
||||
$lang->navGroup->activity = 'system';
|
||||
$lang->navGroup->zoutput = 'system';
|
||||
@@ -684,14 +690,9 @@ $lang->navGroup->overtime = 'attend';
|
||||
$lang->navGroup->lieu = 'attend';
|
||||
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->company = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->ldap = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
$lang->navGroup->webhook = 'admin';
|
||||
$lang->navGroup->sms = 'admin';
|
||||
$lang->navGroup->message = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->custom = 'admin';
|
||||
$lang->navGroup->cron = 'admin';
|
||||
$lang->navGroup->backup = 'admin';
|
||||
@@ -899,7 +900,8 @@ $lang->menu->scrum->qa = '测试|qa|index';
|
||||
$lang->menu->scrum->ci = '代码|repo|browse';
|
||||
$lang->menu->scrum->projectbuild = array('link' => '版本|projectbuild|browse|project={PROJECT}');
|
||||
$lang->menu->scrum->projectrelease = array('link' => '发布|projectrelease|browse|project={PROJECT}');
|
||||
$lang->menu->scrum->dynamic = array('link' => '动态|project|dynamic');
|
||||
$lang->menu->scrum->dynamic = array('link' => '动态|project|dynamic|project={PROJECT}');
|
||||
$lang->menu->scrum->other = array('link' => '其他|project|other', 'class' => 'dropdown dropdown-hover waterfall-list', 'subModule' => 'issue,risk,stakeholder');
|
||||
$lang->menu->scrum->projectsetting = array('link' => '设置|project|view|project={PROJECT}', 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
|
||||
@@ -20,13 +20,14 @@ $isQa = $rawModule == 'qa';
|
||||
<div id='mainHeader'>
|
||||
<div class='container'>
|
||||
<div id='heading'>
|
||||
<?php if($isProduct) echo isset($lang->product->switcherMenu) ? $lang->product->switcherMenu : '';?>
|
||||
<?php if($isQa) echo isset($lang->qa->switcherMenu) ? $lang->qa->switcherMenu : '';?>
|
||||
<?php if($isProduct) echo isset($lang->product->switcherMenu) ? $lang->product->switcherMenu : '';?>
|
||||
<?php if($isQa) echo isset($lang->qa->switcherMenu) ? $lang->qa->switcherMenu : '';?>
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<?php if($isProgram) echo isset($lang->program->switcherMenu) ? $lang->program->switcherMenu : '';?>
|
||||
<?php if($isProject) echo $this->loadModel('project')->getSwitcher($this->session->PRJ, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isProgram) echo isset($lang->program->switcherMenu) ? $lang->program->switcherMenu : '';?>
|
||||
<?php if($isProject) echo $this->loadModel('project')->getSwitcher($this->session->PRJ, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isExecution) echo $this->execution->getSwitcher($this->session->execution, $app->rawModule, $app->rawMethod);?>
|
||||
<?php elseif($this->config->systemMode == 'classic'):?>
|
||||
<?php if($isProject) echo isset($lang->project->switcherMenu) ? $lang->project->switcherMenu : '';;?>
|
||||
<?php if($isProject) echo isset($lang->project->switcherMenu) ? $lang->project->switcherMenu : '';;?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<nav id='navbar'><?php commonModel::printMainmenu($app->rawModule, $app->rawMethod);?></nav>
|
||||
|
||||
@@ -350,8 +350,8 @@ class custom extends control
|
||||
/* Process menu.*/
|
||||
$this->app->loadLang('custom');
|
||||
$this->lang->custom->menu = $this->lang->subject->menu;
|
||||
$this->lang->navGroup->custom = 'system';
|
||||
$this->lang->system->menu->company['subModule'] .= ',custom';
|
||||
$this->lang->navGroup->custom = 'admin';
|
||||
$this->lang->admin->menu->model['subModule'] .= ',custom';
|
||||
$key = array_search('custom', $this->lang->noMenuModule);
|
||||
if($key !== false) unset($this->lang->noMenuModule[$key]);
|
||||
|
||||
|
||||
@@ -472,8 +472,8 @@ class execution extends control
|
||||
|
||||
$execution = $this->commonAction($toExecution);
|
||||
$toExecution = $execution->id;
|
||||
$branches = $this->execution->getBranches($toExecution);
|
||||
$tasks = $this->execution->getTasks2Imported($toExecution, $branches);
|
||||
$branches = $this->execution->getBranches($toExecution);
|
||||
$tasks = $this->execution->getTasks2Imported($toExecution, $branches);
|
||||
$executions = $this->execution->getsToImport(array_keys($tasks), $execution->type);
|
||||
unset($executions[$toExecution]);
|
||||
unset($tasks[$toExecution]);
|
||||
@@ -803,7 +803,7 @@ class execution extends control
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->type = $this->session->executionStoryBrowseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->moduleTree = $this->loadModel('tree')->getProjectStoryTreeMenu($executionID, $startModuleID = 0, array('treeModel', 'createExecutionStoryLink'));
|
||||
$this->view->moduleTree = $this->loadModel('tree')->getExecutionStoryTreeMenu($executionID, $startModuleID = 0, array('treeModel', 'createExecutionStoryLink'));
|
||||
$this->view->tabID = 'story';
|
||||
$this->view->storyTasks = $storyTasks;
|
||||
$this->view->storyBugs = $storyBugs;
|
||||
|
||||
@@ -877,11 +877,42 @@ class executionModel extends model
|
||||
*/
|
||||
public function getMainAction($module, $method)
|
||||
{
|
||||
if($method == 'index' or $method == 'all') return;
|
||||
|
||||
$link = html::a(helper::createLink('execution', 'all'), "<i class='icon icon-list'></i>", '', "style='border: none;'");
|
||||
$html = "<p style='padding-top:5px;'>" . $link . "</p>";
|
||||
|
||||
return common::hasPriv('execution', 'all') ? $html : '';
|
||||
}
|
||||
|
||||
/*
|
||||
* Get execution switcher.
|
||||
*
|
||||
* @param int $executionID
|
||||
* @param string $currentModule
|
||||
* @param string $currentMethod
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSwitcher($executionID, $currentModule, $currentMethod)
|
||||
{
|
||||
$this->session->set('moreExecutionLink', $this->app->getURI(true));
|
||||
|
||||
$currentExecutionName = $this->lang->execution->common;
|
||||
if($executionID)
|
||||
{
|
||||
$currentExecution = $this->getById($executionID);
|
||||
$currentExecutionName = $currentExecution->name;
|
||||
}
|
||||
|
||||
$dropMenuLink = helper::createLink('execution', 'ajaxGetDropMenu', "objectID=$executionID&module=$currentModule&method=$currentMethod&extra=");
|
||||
$output = "<div class='btn-group header-angle-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentExecutionName}'><span class='text'><i class='icon icon-project'></i> {$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
|
||||
$output .= "</div></div>";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project pairs.
|
||||
*
|
||||
@@ -1195,7 +1226,7 @@ class executionModel extends model
|
||||
public function getBranches($executionID)
|
||||
{
|
||||
$productBranchPairs = $this->dao->select('product, branch')->from(TABLE_PROJECTPRODUCT)
|
||||
->where('execution')->eq($executionID)
|
||||
->where('project')->eq($executionID)
|
||||
->fetchPairs();
|
||||
$branches = $this->loadModel('branch')->getByProducts(array_keys($productBranchPairs));
|
||||
foreach($productBranchPairs as $product => $branch)
|
||||
@@ -1243,7 +1274,7 @@ class executionModel extends model
|
||||
*/
|
||||
public function getRelatedExecutions($executionID)
|
||||
{
|
||||
$products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('execution')->eq((int)$executionID)->fetchAll('product');
|
||||
$products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$executionID)->fetchAll('product');
|
||||
// $products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->fetchAll('product');
|
||||
if(!$products) return array();
|
||||
$products = array_keys($products);
|
||||
@@ -2274,7 +2305,7 @@ class executionModel extends model
|
||||
|
||||
if($executionType == 'execution')
|
||||
{
|
||||
$childSprints = $this->dao->select('id')->from(TABLE_EXECUTION)->where('execution')->eq($execution->id)->andWhere('type')->in('stage,sprint')->andWhere('deleted')->eq('0')->fetchPairs();
|
||||
$childSprints = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($execution->id)->andWhere('type')->in('stage,sprint')->andWhere('deleted')->eq('0')->fetchPairs();
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByExecution($execution->id);
|
||||
|
||||
$this->loadModel('user')->updateUserView(array($executionID), 'execution', $changedAccounts);
|
||||
|
||||
@@ -49,7 +49,7 @@ foreach($executions as $execution)
|
||||
?>
|
||||
</div>
|
||||
<div class="col-footer">
|
||||
<?php echo html::a(helper::createLink('program', 'prjbrowse'), '<i class="icon icon-cards-view muted"></i> ' . $lang->execution->all, '', 'class="not-list-item"'); ?>
|
||||
<?php echo html::a(helper::createLink('execution', 'all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->execution->all, '', 'class="not-list-item"'); ?>
|
||||
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->execution->doneProjects?><i class='icon icon-angle-right'></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,10 +61,10 @@ body.menu-hide {padding-left: 0;}
|
||||
#userNav .dropdown-submenu:focus > a, #userNav .dropdown-submenu:hover > a {background-color: rgba(0,0,0,.2);}
|
||||
#poweredBy{width: 40%; position: absolute; top: 4px; right: 0; padding: 0;}
|
||||
|
||||
#globalSearchDiv{width:50%; float: right; margin-right: 4px;}
|
||||
#globalSearchDiv{width:52%; float: right; margin-right: 4px;}
|
||||
@media screen and (max-height: 768px)
|
||||
{
|
||||
#globalSearchDiv{width: 60%;}
|
||||
#globalSearchDiv{width: 62%;}
|
||||
}
|
||||
#globalSearchDiv .input-group{width: 82%; float: right; margin-top: 2px;}
|
||||
@media screen and (max-height: 768px)
|
||||
|
||||
@@ -75,10 +75,6 @@
|
||||
}
|
||||
return 'doc';
|
||||
}
|
||||
if(moduleName === 'custom' && ['estimate', 'browsestoryconcept', 'configurescrum', 'setdefaultconcept'].includes(methodLowerCase))
|
||||
{
|
||||
return 'system';
|
||||
}
|
||||
if(['caselib', 'testreport', 'testsuite', 'testtask', 'testcase', 'bug', 'qa'].includes(moduleName))
|
||||
{
|
||||
return link.prj ? 'project' : 'qa';
|
||||
@@ -100,7 +96,7 @@
|
||||
}
|
||||
if(moduleName === 'execution' && methodLowerCase === 'all')
|
||||
{
|
||||
return link.params.from == 'project' ? 'project' : 'execution';
|
||||
return (link.params.from || link.params.$3) == 'project' ? 'project' : 'execution';
|
||||
}
|
||||
if(['repo', 'jenkins', 'job', 'compile'].includes(moduleName))
|
||||
{
|
||||
@@ -117,6 +113,7 @@
|
||||
{
|
||||
if(methodLowerCase === 'create' && (link.params.programID || link.params.$1)) return 'program';
|
||||
}
|
||||
if(moduleName === 'my') if(methodLowerCase === 'team' || methodLowerCase == 'calendar') return 'system';
|
||||
if(moduleName === 'tree')
|
||||
{
|
||||
if(methodLowerCase === 'browse')
|
||||
@@ -531,7 +528,7 @@ $.extend(
|
||||
gotoObject:function()
|
||||
{
|
||||
objectType = $('#searchType').attr('value');
|
||||
objectValue = $('input#globalSearchInput').attr('value');
|
||||
objectValue = $('#globalSearchInput').attr('value');
|
||||
|
||||
if(objectType && objectValue)
|
||||
{
|
||||
@@ -590,7 +587,7 @@ $(function()
|
||||
var $this = $(this);
|
||||
var isActiveType = $this.data('value') === searchType && searchType !== 'all';
|
||||
$this.closest('li').toggleClass('selected active', isActiveType);
|
||||
$this.html($this.data('name') + ' <span>#' + (val.length > 4 ? (val.substr(0, 4) + '...') : val) + "</span>");
|
||||
$this.html($this.data('name') + ' <span>#' + (val.length > 7 ? (val.substr(0, 7) + '...') : val) + "</span>");
|
||||
if(isActiveType) $dropmenu.addClass('with-active');
|
||||
});
|
||||
}
|
||||
|
||||
@@ -129,6 +129,7 @@ class my extends control
|
||||
*/
|
||||
public function todo($type = 'before', $userID = '', $status = 'all', $orderBy = "date_desc,status,begin", $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->lang->navGroup->my = 'system';
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
if($this->app->viewType != 'json')
|
||||
@@ -615,6 +616,8 @@ class my extends control
|
||||
*/
|
||||
public function team($orderBy = 'id', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$this->lang->navGroup->my = 'system';
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
@@ -3,6 +3,7 @@ $(function()
|
||||
if(typeof mode === 'string')
|
||||
{
|
||||
$('#subNavbar li[data-id=' + mode + ']').addClass('active');
|
||||
if(typeof rawMethod === 'string' && rawMethod == 'work') $('#subNavbar li[data-id=' + mode + '] a').append('<span class="label label-light label-badge">' + total + '</span>');
|
||||
}
|
||||
var scp = $('[data-id="changePassword"] a');
|
||||
var sign = config.requestType == 'GET' ? '&' : '?';
|
||||
|
||||
@@ -94,6 +94,6 @@ $lang->my->productLinkList['product-browse'] = 'By default, go to the list of
|
||||
global $config;
|
||||
$lang->my->projectLinkList = array();
|
||||
//$lang->my->projectLinkList['project-home'] = 'The default access to the project home page, you can understand the overall project status of the company';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-task'] = 'By default, you go to the task list for the most recent project iteration to see the task information for the current iteration';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['program-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
|
||||
@@ -76,7 +76,7 @@ $lang->my->form->lblContact = 'Contact Info';
|
||||
$lang->my->form->lblAccount = 'Account Info';
|
||||
|
||||
$lang->my->programLink = 'Program Default Page';
|
||||
$lang->my->productLink = 'Product Default Page';
|
||||
$lang->my->productLink = 'Product Default Page';
|
||||
$lang->my->projectLink = 'Project Default Page';
|
||||
|
||||
$lang->my->programLinkList = array();
|
||||
@@ -94,6 +94,6 @@ $lang->my->productLinkList['product-browse'] = 'By default, go to the list of
|
||||
global $config;
|
||||
$lang->my->projectLinkList = array();
|
||||
//$lang->my->projectLinkList['project-home'] = 'The default access to the project home page, you can understand the overall project status of the company';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-task'] = 'By default, you go to the task list for the most recent project iteration to see the task information for the current iteration';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['program-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
|
||||
@@ -94,6 +94,6 @@ $lang->my->productLinkList['product-browse'] = 'By default, go to the list of
|
||||
global $config;
|
||||
$lang->my->projectLinkList = array();
|
||||
//$lang->my->projectLinkList['project-home'] = 'The default access to the project home page, you can understand the overall project status of the company';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-task'] = 'By default, you go to the task list for the most recent project iteration to see the task information for the current iteration';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['program-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
|
||||
@@ -94,6 +94,6 @@ $lang->my->productLinkList['product-browse'] = 'By default, go to the list of
|
||||
global $config;
|
||||
$lang->my->projectLinkList = array();
|
||||
//$lang->my->projectLinkList['project-home'] = 'The default access to the project home page, you can understand the overall project status of the company';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-task'] = 'By default, you go to the task list for the most recent project iteration to see the task information for the current iteration';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['program-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
|
||||
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
|
||||
|
||||
@@ -96,6 +96,6 @@ $lang->my->productLinkList['product-browse'] = '默认进入最近一个产
|
||||
global $config;
|
||||
$lang->my->projectLinkList = array();
|
||||
//$lang->my->projectLinkList['project-home'] = '默认进入项目主页,可以了解公司整体的项目状况';
|
||||
$lang->my->projectLinkList['project-browse'] = '默认进入项目列表,可以查看所有的项目';
|
||||
$lang->my->projectLinkList['project-task'] = '默认进入最近一个项目迭代的任务列表,可以查看当前迭代下的任务信息';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['program-index'] = '默认进入最近一个项目仪表盘,可以查看当前项目概况';
|
||||
$lang->my->projectLinkList['project-browse'] = '默认进入项目列表,可以查看所有的项目';
|
||||
$lang->my->projectLinkList['project-execution'] = '默认进入项目下所有执行列表,查看所有执行信息';
|
||||
if($config->systemMode == 'new') $lang->my->projectLinkList['project-index'] = '默认进入最近一个项目仪表盘,可以查看当前项目概况';
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php $recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>"; ?>
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<style>
|
||||
.w-230px{width:230px;}
|
||||
</style>
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<?php js::set('confirmDelete', $lang->testtask->confirmDelete)?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
|
||||
@@ -132,7 +132,7 @@ class product extends control
|
||||
$this->loadModel('execution');
|
||||
|
||||
/* Set product, module and query. */
|
||||
$productID = $this->product->saveState($productID, $this->products);
|
||||
$productID = $this->app->rawModule != 'projectstory' ? $this->product->saveState($productID, $this->products) : $productID;
|
||||
$branch = ($branch === '') ? (int)$this->cookie->preBranch : (int)$branch;
|
||||
setcookie('preProductID', $productID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
setcookie('preBranch', (int)$branch, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
@@ -174,11 +174,25 @@ class product extends control
|
||||
{
|
||||
setcookie('treeBranch', (int)$branch, 0, $this->config->webRoot, '', false, false);
|
||||
$browseType = 'unclosed';
|
||||
$moduleTree = $this->tree->getTreeMenu($productID, 'story', $startModuleID = 0, array('treeModel', $createModuleLink), '', $branch, "¶m=$param&storyType=$storyType");
|
||||
if($this->app->rawModule == 'projectstory' and empty($productID))
|
||||
{
|
||||
$moduleTree = $this->tree->getExecutionStoryTreeMenu($this->session->PRJ, 0, array('treeModel', 'createProjectStoryLink'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($productID, 'story', $startModuleID = 0, array('treeModel', $createModuleLink), '', $branch, "¶m=$param&storyType=$storyType");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($productID, 'story', $startModuleID = 0, array('treeModel', $createModuleLink), '', (int)$this->cookie->treeBranch, "¶m=$param&storyType=$storyType");
|
||||
if($this->app->rawModule == 'projectstory' and empty($productID))
|
||||
{
|
||||
$moduleTree = $this->tree->getExecutionStoryTreeMenu($this->session->PRJ, 0, array('treeModel', 'createProjectStoryLink'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$moduleTree = $this->tree->getTreeMenu($productID, 'story', $startModuleID = 0, array('treeModel', $createModuleLink), '', (int)$this->cookie->treeBranch, "¶m=$param&storyType=$storyType");
|
||||
}
|
||||
}
|
||||
|
||||
if($browseType != 'bymodule' and $browseType != 'bybranch') $this->session->set('storyBrowseType', $browseType);
|
||||
@@ -201,7 +215,7 @@ class product extends control
|
||||
$stories = $this->product->getStories($productID, $branch, $browseType, $queryID, $moduleID, $storyType, $sort, $pager);
|
||||
if($this->app->rawModule == 'projectstory')
|
||||
{
|
||||
$this->session->set('currentProductType', $product->type);
|
||||
if(!empty($product)) $this->session->set('currentProductType', $product->type);
|
||||
$projectProducts = $this->product->getProducts($this->session->PRJ);
|
||||
$productPlans = $this->execution->getPlans($projectProducts);
|
||||
|
||||
@@ -244,13 +258,15 @@ class product extends control
|
||||
$showModule = !empty($this->config->datatable->productBrowse->showModule) ? $this->config->datatable->productBrowse->showModule : '';
|
||||
$this->view->modulePairs = $showModule ? $this->tree->getModulePairs($productID, 'story', $showModule) : array();
|
||||
|
||||
$productName = ($this->app->rawModule == 'projectstory' and empty($productID)) ? $this->lang->product->all : $this->products[$productID];
|
||||
|
||||
/* Assign. */
|
||||
$this->view->title = $this->products[$productID]. $this->lang->colon . $this->lang->product->browse;
|
||||
$this->view->position[] = $this->products[$productID];
|
||||
$this->view->title = $productName . $this->lang->colon . $this->lang->product->browse;
|
||||
$this->view->position[] = $productName;
|
||||
$this->view->position[] = $this->lang->product->browse;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->product = $product;
|
||||
$this->view->productName = $this->products[$productID];
|
||||
$this->view->productName = $productName;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $branch, '', true);
|
||||
|
||||
@@ -823,9 +823,18 @@ class productModel extends model
|
||||
{
|
||||
$this->config->product->search['actionURL'] = $actionURL;
|
||||
$this->config->product->search['queryID'] = $queryID;
|
||||
$this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
|
||||
$this->config->product->search['params']['product']['values'] = array($productID => $products[$productID], 'all' => $this->lang->product->allProduct);
|
||||
$this->config->product->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'story', $startModuleID = 0);
|
||||
$this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
|
||||
|
||||
if($this->app->rawModule == 'projectstory' and empty($productID))
|
||||
{
|
||||
$this->config->product->search['params']['product']['values'] = array('all' => $this->lang->product->allProduct, 'all' => $this->lang->product->allProduct);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->config->product->search['params']['product']['values'] = array($productID => $products[$productID], 'all' => $this->lang->product->allProduct);
|
||||
}
|
||||
|
||||
$this->config->product->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'story', $startModuleID = 0);
|
||||
if($this->session->currentProductType == 'normal')
|
||||
{
|
||||
unset($this->config->product->search['fields']['branch']);
|
||||
|
||||
@@ -51,9 +51,10 @@ $isProjectStory = $this->app->rawModule == 'projectstory';
|
||||
<a href='javascript:;' class='btn btn-link btn-limit text-ellipsis' data-toggle='dropdown' style="max-width: 120px;"><span class='text' title='<?php echo $productName;?>'><?php echo $productName;?></span> <span class='caret'></span></a>
|
||||
<ul class='dropdown-menu' style='max-height:240px; max-width: 300px; overflow-y:auto'>
|
||||
<?php
|
||||
echo "<li>" . html::a($this->createLink('projectstory', 'story', "productID=0"), $lang->product->all) . "</li>";
|
||||
foreach($projectProducts as $product)
|
||||
{
|
||||
echo "<li>" . html::a($this->createLink('projectstory', 'story', "productID=$product->id&branch=0&browseType=$browseType"), $product->name, '', "title='{$product->name}' class='text-ellipsis'") . "</li>";
|
||||
echo "<li>" . html::a($this->createLink('projectstory', 'story', "productID=$product->id&branch=0"), $product->name, '', "title='{$product->name}' class='text-ellipsis'") . "</li>";
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
|
||||
@@ -573,6 +573,89 @@ class project extends control
|
||||
$this->display('group', 'create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Project dynamic.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $type
|
||||
* @param string $param
|
||||
* @param int $recTotal
|
||||
* @param string $date
|
||||
* @param string $direction next|pre
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($projectID = 0, $type = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next')
|
||||
{
|
||||
$this->lang->noMenuModule[] = 'project';
|
||||
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('executionList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
$this->session->set('caseList', $uri);
|
||||
$this->session->set('testtaskList', $uri);
|
||||
|
||||
/* Append id for secend sort. */
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage = 50, $pageID = 1);
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = 'all';
|
||||
if($type == 'account')
|
||||
{
|
||||
$user = $this->loadModel('user')->getById($param, 'account');
|
||||
if($user) $account = $user->account;
|
||||
}
|
||||
$period = $type == 'account' ? 'all' : $type;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$actions = $this->loadModel('action')->getDynamic($account, $period, $sort, $pager, 'all', $projectID, $date, $direction);
|
||||
|
||||
/* The header and position. */
|
||||
$project = $this->project->getByID($projectID);
|
||||
$this->view->title = $project->name . $this->lang->colon . $this->lang->project->dynamic;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name);
|
||||
$this->view->position[] = $this->lang->project->dynamic;
|
||||
|
||||
$this->view->userIdPairs = $this->project->getTeamMemberPairs($project->parent);
|
||||
$this->view->accountPairs = $this->loadModel('user')->getPairs('noletter|nodeleted');
|
||||
|
||||
/* Assign. */
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->type = $type;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->account = $account;
|
||||
$this->view->param = $param;
|
||||
$this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $type);
|
||||
$this->view->direction = $direction;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execution list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function execution()
|
||||
{
|
||||
$PRJ = $this->session->PRJ;
|
||||
if(!$PRJ) $PRJ = current(explode(',', $this->app->user->view->projects));
|
||||
|
||||
$this->locate($this->createLink('execution', 'all', "status=all&executionID=0&from=project", '', false, $PRJ));
|
||||
}
|
||||
|
||||
/**
|
||||
* Project manage view.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#mainMenu .btn-group ul.dropdown-menu{max-height: 300px; overflow: auto;}
|
||||
#dynamics {padding: 10px 0;}
|
||||
.dynamic {position: relative; padding-left: 170px;}
|
||||
.dynamic-date {position: absolute; left: 0; top: 0; width: 150px; border: 2px solid #eee; border-radius: 4px; padding: 14px 20px; height: 58px;}
|
||||
.dynamic-date:before {content: ' '; display: block; position: absolute; right: -22px; top: 26px; height: 2px; width: 20px; background-color: #eee;}
|
||||
.dynamic-date > .date-label,
|
||||
.dynamic-date > .date-text {font-size: 18px; display: block;}
|
||||
.dynamic-date > .date-label + .date-text {font-size: 14px; line-height: 14px;}
|
||||
.dynamic-date > .date-label {margin-top: -8px;}
|
||||
.dynamic-date > .btn {position: absolute; right: 10px; top: 15px;}
|
||||
.dynamic .timeline {border: 2px solid #eee; border-radius: 4px; margin-bottom: 20px; padding: 10px 20px 10px 100px; transition: max-height .2s; overflow: hidden;}
|
||||
.dynamic .timeline-tag {left: -75px; font-size: 14px; color: #838A9D;}
|
||||
.dynamic .timeline-text {color: #3C4353;}
|
||||
.dynamic .text-muted {color: #838A9D;}
|
||||
.dynamic .label-id {top: -1px;}
|
||||
.dynamic.active .timeline,
|
||||
.dynamic.active .dynamic-date {border-color: #00a9fc;}
|
||||
.dynamic.active .dynamic-date:before {background-color: #00a9fc;}
|
||||
.dynamic.collapsed .timeline {max-height: 58px;}
|
||||
.dynamic.collapsed .timeline > li + li {display: none;}
|
||||
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8'; }
|
||||
@@ -8,5 +8,4 @@ $(function()
|
||||
});
|
||||
});
|
||||
|
||||
$('#project' + projectID).addClass('active');
|
||||
$(".tree .active").parent('li').addClass('active');
|
||||
|
||||
@@ -144,7 +144,6 @@ class projectModel extends model
|
||||
{
|
||||
$this->session->set('moreProjectLink', $this->app->getURI(true));
|
||||
|
||||
$this->loadModel('project');
|
||||
$currentProjectName = $this->lang->project->common;
|
||||
if($projectID)
|
||||
{
|
||||
|
||||
@@ -50,7 +50,7 @@ foreach($projects as $project)
|
||||
?>
|
||||
</div>
|
||||
<div class="col-footer">
|
||||
<?php echo html::a(helper::createLink('project', 'all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->project->all, '', 'class="not-list-item"'); ?>
|
||||
<?php echo html::a(helper::createLink('project', 'browse'), '<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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Executable
+128
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/**
|
||||
* The action->dynamic view file of dashboard 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: action->dynamic.html.php 1477 2011-03-01 15:25:50Z wwccss $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php foreach($lang->action->periods as $period => $label):?>
|
||||
<?php
|
||||
$label = "<span class='text'>$label</span>";
|
||||
$active = '';
|
||||
if($period == $type)
|
||||
{
|
||||
$active = 'btn-active-text';
|
||||
$label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
}
|
||||
echo html::a(inlink('dynamic', "projectID=$projectID&type=$period"), $label, '', "class='btn btn-link $active' id='{$period}'")
|
||||
?>
|
||||
<?php endforeach;?>
|
||||
<div class="btn-group">
|
||||
<?php
|
||||
$withSearch = count($accountPairs) > 8;
|
||||
$active = $param ? 'btn-active-text' : '';
|
||||
$current = $param ? zget($accountPairs, $account, $account) : $lang->execution->viewByUser;
|
||||
$current = "<span class='text'>" . $current . '</span>' . ' <span class="caret"></span>';
|
||||
?>
|
||||
<?php echo html::a('###', $current, '', "class='btn btn-link $active' data-toggle='dropdown'");?>
|
||||
<div class="dropdown-menu search-list<?php if($withSearch) echo ' search-box-sink';?>" data-ride="searchList">
|
||||
<?php if($withSearch):?>
|
||||
<div class="input-control search-box has-icon-left has-icon-right search-example">
|
||||
<input id="userSearchBox" type="search" autocomplete="off" class="form-control search-input">
|
||||
<label for="userSearchBox" class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label>
|
||||
<a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='list-group'>
|
||||
<?php
|
||||
$usersPinYin = common::convert2Pinyin($userIdPairs);
|
||||
foreach($userIdPairs as $userID => $name)
|
||||
{
|
||||
if(!$userID) continue;
|
||||
$searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $name, '') . '"') : '';
|
||||
echo html::a($this->createLink('project', 'dynamic', "projectID=$projectID&type=account¶m=$userID"), $name, '', $searchKey);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mainContent" class="main-content">
|
||||
<?php if(empty($dateGroups)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->action->noDynamic;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id="dynamics">
|
||||
<?php $firstAction = '';?>
|
||||
<?php foreach($dateGroups as $date => $actions):?>
|
||||
<?php $isToday = date(DT_DATE4) == $date;?>
|
||||
<div class="dynamic <?php if($isToday) echo 'active';?>">
|
||||
<div class="dynamic-date <?php if($type == 'all') echo 'w-200px';?>">
|
||||
<?php if($isToday):?>
|
||||
<span class="date-label"><?php echo $lang->action->dynamic->today;?></span>
|
||||
<?php endif;?>
|
||||
<span class="date-text"><?php echo $date;?></span>
|
||||
<button type="button" class="btn btn-info btn-icon btn-sm dynamic-btn"><i class="icon icon-caret-down"></i></button>
|
||||
</div>
|
||||
<ul class="timeline timeline-tag-left <?php if($type == 'all') echo 'margin-l-50px';?>">
|
||||
<?php if($direction == 'next') $actions = array_reverse($actions);?>
|
||||
<?php foreach($actions as $i => $action):?>
|
||||
<?php if(empty($firstAction)) $firstAction = $action;?>
|
||||
<li <?php if($action->major) echo "class='active'";?>>
|
||||
<div>
|
||||
<span class="timeline-tag"><?php echo $action->time?></span>
|
||||
<span class="timeline-text">
|
||||
<?php echo zget($accountPairs, $action->actor);?>
|
||||
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
|
||||
<span class="text"><?php echo $action->objectLabel;?></span>
|
||||
<span class="label label-id"><?php echo $action->objectID;?></span>
|
||||
<?php echo html::a($action->objectLink, $action->objectName);?>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php if(!empty($firstAction)):?>
|
||||
<?php
|
||||
$firstDate = date('Y-m-d', strtotime($firstAction->originalDate) + 24 * 3600);
|
||||
$lastDate = substr($action->originalDate, 0, 10);
|
||||
$hasPre = $this->action->hasPreOrNext($firstDate, 'pre');
|
||||
$hasNext = $this->action->hasPreOrNext($lastDate, 'next');
|
||||
$preLink = $hasPre ? inlink('dynamic', "projectID=$projectID&type=$type¶m=$param&recTotal={$pager->recTotal}&date=" . strtotime($firstDate) . '&direction=pre') : 'javascript:;';
|
||||
$nextLink = $hasNext ? inlink('dynamic', "projectID=$projectID&type=$type¶m=$param&recTotal={$pager->recTotal}&date=" . strtotime($lastDate) . '&direction=next') : 'javascript:;';
|
||||
?>
|
||||
<?php if($hasPre or $hasNext):?>
|
||||
<div id="mainActions" class='main-actions'>
|
||||
<nav class="container">
|
||||
<a id="prevPage" class="btn btn-info<?php if(!$hasNext) echo ' disabled';?>" href="<?php echo $nextLink;?>"><i class="icon icon-chevron-left"></i></a>
|
||||
<a id="nextPage" class="btn btn-info<?php if(!$hasPre) echo ' disabled';?>" href="<?php echo $preLink;?>"><i class="icon icon-chevron-right"></i></a>
|
||||
</nav>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
$('#dynamics').on('click', '.dynamic-btn', function()
|
||||
{
|
||||
$(this).closest('.dynamic').toggleClass('collapsed');
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -44,8 +44,7 @@ class projectStory extends control
|
||||
*/
|
||||
public function story($productID = 0, $branch = 0, $browseType = '', $param = 0, $storyType = 'story', $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->session->set('storyList',$this->app->getURI(true));
|
||||
if(empty($productID)) $productID = key($this->products);
|
||||
$this->session->set('storyList', $this->app->getURI(true));
|
||||
|
||||
$this->lang->menugroup->product = 'projectstory';
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ class qa extends control
|
||||
parent::__construct();
|
||||
|
||||
/* Set report menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
|
||||
|
||||
@@ -2313,7 +2313,7 @@ class storyModel extends model
|
||||
$type = strtolower($type);
|
||||
if($type == 'bysearch')
|
||||
{
|
||||
if($this->app->rawModule == 'projectstory') $this->session->PRJStoryQuery = $this->session->storyQuery;
|
||||
if($this->app->rawModule == 'projectstory') $this->session->executionStoryQuery = $this->session->storyQuery;
|
||||
$queryID = (int)$param;
|
||||
$products = $this->loadModel('execution')->getProducts($executionID);
|
||||
|
||||
@@ -2373,8 +2373,8 @@ class storyModel extends model
|
||||
->andWhere('t2.type')->eq($storyType)
|
||||
->beginIF($excludeStories)->andWhere('t2.id')->notIN($excludeStories)->fi()
|
||||
->beginIF($execution->type == 'project')
|
||||
->andWhere('t1.product')->eq($productID)
|
||||
->beginIF(!empty($branch))->andWhere('t2.branch')->eq($branch)->fi()
|
||||
->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID)
|
||||
->beginIF($type == 'bybranch')->andWhere('t2.branch')->eq($branch)->fi()
|
||||
->beginIF(isset($statusFeatureList) and in_array($type, array_keys($statusFeatureList)))->andWhere('t2.status')->eq($type)->fi()
|
||||
->beginIF(isset($otherFeatureList) and in_array($type, array_keys($otherFeatureList)))->andWhere('t2.' . substr($type, 0, -2))->eq($this->app->user->account)->fi()
|
||||
->beginIF($type == 'unclosed')->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi()
|
||||
|
||||
@@ -41,7 +41,7 @@ class testcase extends control
|
||||
$this->loadModel('user');
|
||||
|
||||
/* Set test case menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
@@ -37,7 +37,7 @@ class testreport extends control
|
||||
$this->app->loadLang('report');
|
||||
|
||||
/* Set testreport menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
@@ -32,7 +32,7 @@ class testsuite extends control
|
||||
parent::__construct($moduleName, $methodName);
|
||||
|
||||
/* Set testtask menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
@@ -38,7 +38,7 @@ class testtask extends control
|
||||
parent::__construct($moduleName, $methodName);
|
||||
|
||||
/* Set testtask menu group. */
|
||||
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
|
||||
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
|
||||
if(!$this->projectID)
|
||||
{
|
||||
$this->app->loadConfig('qa');
|
||||
|
||||
+23
-4
@@ -611,7 +611,7 @@ class treeModel extends model
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getProjectStoryTreeMenu($rootID, $startModule = 0, $userFunc)
|
||||
public function getExecutionStoryTreeMenu($rootID, $startModule = 0, $userFunc)
|
||||
{
|
||||
$extra['executionID'] = $rootID;
|
||||
$menu = "<ul id='modules' class='tree' data-ride='tree' data-name='tree-story'>";
|
||||
@@ -636,7 +636,9 @@ class treeModel extends model
|
||||
foreach($products as $id => $product)
|
||||
{
|
||||
$extra['productID'] = $id;
|
||||
$link = helper::createLink('execution', 'story', "executionID=$rootID&ordery=&status=byProduct&praram=$id");
|
||||
$projectProductLink = helper::createLink('projectstory', 'story', "productID=$id");
|
||||
$executionProductLink = helper::createLink('execution', 'story', "executionID=$rootID&ordery=&status=byProduct&praram=$id");
|
||||
$link = $this->app->rawModule == 'projectstory' ? $projectProductLink : $executionProductLink;
|
||||
if($productNum > 1) $menu .= "<li>" . html::a($link, $product, '_self', "id='product$id'");
|
||||
|
||||
/* tree menu. */
|
||||
@@ -656,13 +658,15 @@ class treeModel extends model
|
||||
$stmt = $this->dbh->query($query);
|
||||
while($module = $stmt->fetch())
|
||||
{
|
||||
/* if not manage, ignore unused modules. */
|
||||
/* If not manage, ignore unused modules. */
|
||||
if(isset($executionModules[$module->id])) $this->buildTree($treeMenu, $module, 'task', $userFunc, $extra);
|
||||
}
|
||||
if((isset($treeMenu[0]) and $branch) or isset($executionBranches[$branch]))
|
||||
{
|
||||
$childMenu = isset($treeMenu[0]) ? "<ul>{$treeMenu[0]}</ul>" : '';
|
||||
$link = helper::createLink('execution', 'story', "executionID=$rootID&ordery=&status=byBranch&praram=" . (empty($branch) ? "{$id},0" : $branch));
|
||||
$projectBranchLink = helper::createLink('projectstory', 'story', "productID=$id&branch=" . (empty($branch) ? 0 : $branch) . "&browseType=byBranch");
|
||||
$executionBranchLink = helper::createLink('execution', 'story', "executionID=$rootID&ordery=&status=byBranch&praram=" . (empty($branch) ? "{$id},0" : $branch));
|
||||
$link = $this->app->rawModule == 'projectstory' ? $projectBranchLink : $executionBranchLink;
|
||||
if($branchName) $treeMenu[0] = "<li>" . html::a($link, $branchName, '_self', "id='branch" . (empty($branch) ? "{$id}_0" : $branch) . "'") . "{$childMenu}</li>";
|
||||
}
|
||||
$tree .= isset($treeMenu[0]) ? $treeMenu[0] : '';
|
||||
@@ -866,6 +870,21 @@ class treeModel extends model
|
||||
return html::a(helper::createLink('execution', 'task', "executionID={$executionID}&type=byModule¶m={$module->id}"), $module->name, '_self', "id='module{$module->id}'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create link of project story.
|
||||
*
|
||||
* @param string $type
|
||||
* @param object $module
|
||||
* @param array $extra
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createProjectStoryLink($type, $module, $extra)
|
||||
{
|
||||
$productID = $extra['productID'];
|
||||
return html::a(helper::createLink('projectstory', 'story', "productID=$productID&branch=&browseType=byModule¶m={$module->id}"), $module->name, '_self', "id='module{$module->id}'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create link of execution story.
|
||||
*
|
||||
|
||||
@@ -2467,8 +2467,7 @@ class userModel extends model
|
||||
*/
|
||||
public function resetMenu()
|
||||
{
|
||||
$this->lang->navGroup->user = 'my';
|
||||
$this->lang->admin->menu = $this->lang->my->menu;
|
||||
$this->lang->navGroup->user = 'system';
|
||||
$this->lang->noMenuModule[] = 'user';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user