* Add lang and priv.

This commit is contained in:
Yagami
2020-10-21 09:14:39 +08:00
parent c1e6e6a82c
commit 7772cb6d63
17 changed files with 457 additions and 229 deletions
+1 -1
View File
@@ -159,7 +159,7 @@ $lang->product->viewMenu = new stdclass();
$lang->product->viewMenu->requirement = array('link' => "Requirement|product|browse|productID=%s&branch=&browseType=unclosed&param=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->story = array('link' => "Story|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
$lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->viewMenu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->viewMenu->module = 'Module|tree|browse|productID=%s&view=story';
+189 -67
View File
@@ -122,20 +122,56 @@ $lang->common->common = 'Module Commun';
/* Main menu. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> My|my|index|';
$lang->mainNav->program = '<i class="icon icon-menu-project"></i> Program|program|browse|';
$lang->mainNav->program = '<i class="icon icon-menu-stack"></i> Program|program|browse|';
$lang->mainNav->product = '<i class="icon icon-menu-project"></i> Product|product|index|';
$lang->mainNav->project = '<i class="icon icon-menu-doc"></i> Project|program|prjbrowse|';
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
$lang->reporting = new stdclass();
$lang->dividerMenu = ',admin,';
/* Program set menu. */
$lang->program = new stdclass();
$lang->program->menu = new stdclass();
$lang->program->menu->index = 'Home|program|pgmindex|';
$lang->program->menu->browse = array('link' => 'Program|program|pgmbrowse|', 'alias' => 'pgmcreate,pgmedit,pgmgroup,pgmmanagepriv,pgmmanageview,pgmmanagemembers');
$lang->program->viewMenu = new stdclass();
$lang->program->viewMenu->view = array('link' => 'View|program|pgmview|program=%s');
$lang->program->viewMenu->product = array('link' => 'Product|program|pgmproduct|program=%s');
$lang->program->viewMenu->project = array('link' => "Project|program|pgmproject|program=%s");
$lang->program->viewMenu->personnel = array('link' => "Member|personnel|accessible|program=%s");
$lang->program->viewMenu->stakeholder = array('link' => "Stakeholder|program|pgmstakeholder|program=%s", 'alias' => 'createstakeholder');
$lang->personnel = new stdClass();
$lang->personnel->menu = new stdClass();
$lang->personnel->menu->accessible = array('link' => "Accessible|personnel|accessible|program=%s");
$lang->personnel->menu->putinto = array('link' => "Investment|personnel|putinto|program=%s");
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->program = 'Home|program|index';
$lang->menu->product = $lang->productCommon . '|product|index|locate=no';
$lang->menu->project = 'Iteration|project|index|locate=no';
$lang->menu->doc = 'Doc|doc|index|';
$lang->menu->qa = 'Qa|qa|index';
$lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->home = 'Home|product|index|';
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
$lang->product->viewMenu = new stdclass();
$lang->product->viewMenu->requirement = array('link' => "Requirement|product|browse|productID=%s&branch=&browseType=unclosed&param=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->story = array('link' => "Story|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
$lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->viewMenu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->viewMenu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->product->viewMenu->view = array('link' => '概况|product|view|productID=%s', 'alias' => 'edit');
$lang->release = new stdclass();
$lang->branch = new stdclass();
$lang->productplan = new stdclass();
$lang->release->menu = $lang->product->viewMenu;
$lang->branch->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
/* System menu. */
$lang->system = new stdclass();
@@ -221,7 +257,7 @@ $lang->my = new stdclass();
$lang->my->menu = new stdclass();
$lang->my->menu->index = 'Accueil|my|index';
$lang->my->menu->todo = 'Todo|my|todo|';
$lang->my->menu->calendar = 'Todo|my|todo|';
$lang->my->menu->program = array('link' => 'Program|my|program|');
$lang->my->menu->task = array('link' => 'Tâche|my|task|', 'subModule' => 'task');
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
@@ -245,19 +281,19 @@ $lang->todo = new stdclass();
$lang->todo->menu = $lang->my->menu;
/* Product menu settings. */
$lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->scrumproduct = new stdclass();
$lang->scrumproduct->menu = new stdclass();
$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->dynamic = 'Historique|product|dynamic|productID=%s';
$lang->product->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
$lang->product->menu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->menu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->product->menu->view = array('link' => "Vue d'ensemble|product|view|productID=%s", 'alias' => 'edit');
$lang->scrumproduct->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->scrumproduct->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->scrumproduct->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
$lang->scrumproduct->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->scrumproduct->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->scrumproduct->menu->dynamic = 'Dynamics|product|dynamic|productID=%s';
$lang->scrumproduct->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
$lang->scrumproduct->menu->branch = '@branch@|branch|manage|productID=%s';
$lang->scrumproduct->menu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->scrumproduct->menu->view = array('link' => 'Overview|product|view|productID=%s', 'alias' => 'edit');
if(!empty($config->URAndSR))
{
@@ -267,15 +303,9 @@ if(!empty($config->URAndSR))
$lang->product->dividerMenu = ',plan,project,doc,';
$lang->productplan = new stdclass();
$lang->release = new stdclass();
$lang->branch = new stdclass();
$lang->story = new stdclass();
$lang->story = new stdclass();
$lang->branch->menu = $lang->product->menu;
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
$lang->story->menu = $lang->product->menu;
/* Project menu settings. */
$lang->project = new stdclass();
@@ -545,47 +575,48 @@ $lang->navGroup->my = 'my';
$lang->navGroup->todo = 'my';
$lang->navGroup->effort = 'my';
$lang->navGroup->product = 'program';
$lang->navGroup->story = 'program';
$lang->navGroup->branch = 'program';
$lang->navGroup->productplan = 'program';
$lang->navGroup->release = 'program';
$lang->navGroup->tree = 'program';
$lang->navGroup->project = 'program';
$lang->navGroup->task = 'program';
$lang->navGroup->qa = 'program';
$lang->navGroup->bug = 'program';
$lang->navGroup->doc = 'program';
$lang->navGroup->testcase = 'program';
$lang->navGroup->testtask = 'program';
$lang->navGroup->testreport = 'program';
$lang->navGroup->testsuite = 'program';
$lang->navGroup->caselib = 'program';
$lang->navGroup->feedback = 'program';
$lang->navGroup->deploy = 'program';
$lang->navGroup->stakeholder = 'program';
$lang->navGroup->personnel = 'program';
$lang->navGroup->programplan = 'program';
$lang->navGroup->workestimation = 'program';
$lang->navGroup->budget = 'program';
$lang->navGroup->review = 'program';
$lang->navGroup->reviewissue = 'program';
$lang->navGroup->weekly = 'program';
$lang->navGroup->milestone = 'program';
$lang->navGroup->pssp = 'program';
$lang->navGroup->design = 'program';
$lang->navGroup->repo = 'program';
$lang->navGroup->issue = 'program';
$lang->navGroup->risk = 'program';
$lang->navGroup->auditplan = 'program';
$lang->navGroup->cm = 'program';
$lang->navGroup->nc = 'program';
$lang->navGroup->job = 'program';
$lang->navGroup->jenkins = 'program';
$lang->navGroup->compile = 'program';
$lang->navGroup->build = 'program';
$lang->navGroup->productplan = 'product';
$lang->navGroup->release = 'product';
$lang->navGroup->branch = 'product';
$lang->navGroup->durationestimation = 'program';
$lang->navGroup->story = 'project';
$lang->navGroup->tree = 'project';
$lang->navGroup->task = 'project';
$lang->navGroup->qa = 'project';
$lang->navGroup->bug = 'project';
$lang->navGroup->doc = 'project';
$lang->navGroup->testcase = 'project';
$lang->navGroup->testtask = 'project';
$lang->navGroup->testreport = 'project';
$lang->navGroup->testsuite = 'project';
$lang->navGroup->caselib = 'project';
$lang->navGroup->feedback = 'project';
$lang->navGroup->deploy = 'project';
$lang->navGroup->stakeholder = 'project';
$lang->navGroup->programplan = 'project';
$lang->navGroup->workestimation = 'project';
$lang->navGroup->budget = 'project';
$lang->navGroup->review = 'project';
$lang->navGroup->reviewissue = 'project';
$lang->navGroup->weekly = 'project';
$lang->navGroup->milestone = 'project';
$lang->navGroup->pssp = 'project';
$lang->navGroup->design = 'project';
$lang->navGroup->repo = 'project';
$lang->navGroup->issue = 'project';
$lang->navGroup->risk = 'project';
$lang->navGroup->auditplan = 'project';
$lang->navGroup->cm = 'project';
$lang->navGroup->nc = 'project';
$lang->navGroup->job = 'project';
$lang->navGroup->jenkins = 'project';
$lang->navGroup->compile = 'project';
$lang->navGroup->build = 'project';
$lang->navGroup->durationestimation = 'project';
$lang->navGroup->stage = 'system';
$lang->navGroup->measurement = 'system';
@@ -810,4 +841,95 @@ $lang->icons['unlock'] = 'unlock-alt';
$lang->icons['confirmStoryChange'] = 'search';
$lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->product = $lang->productCommon . '|product|index|locate=no';
$lang->menu->scrum->project = "$lang->projectCommon|project|index|locate=no";
$lang->menu->scrum->doc = 'Doc|doc|index|';
$lang->menu->scrum->qa = 'QA|qa|index';
/* Waterfall menu. */
$lang->menu->waterfall = new stdclass();
$lang->menu->waterfall->programindex = array('link' => 'Index|program|index|program={PROGRAM}');
$lang->menu->waterfall->programplan = array('link' => 'Plan|programplan|browse|program={PROGRAM}', 'subModule' => 'programplan');
$lang->menu->waterfall->project = array('link' => $lang->projectCommon . '|project|task|projectID={PROJECT}', 'subModule' => ',project,task,');
$lang->menu->waterfall->weekly = array('link' => 'Weekly|weekly|index|program={PROGRAM}', 'subModule' => ',milestone,');
$lang->menu->waterfall->doc = array('link' => 'Doc|doc|index|program={PROGRAM}');
$lang->menu->waterfall->product = array('link' => 'Story|product|browse|product={PRODUCT}', 'subModule' => ',story,');
$lang->menu->waterfall->design = 'Design|design|browse|product={PRODUCT}';
$lang->menu->waterfall->ci = 'Code|repo|browse|';
$lang->menu->waterfall->qa = array('link' => 'QA|bug|browse|product={PRODUCT}', 'subModule' => ',testcase,testtask,testsuite,testreport,caselib,');
$lang->menu->waterfall->release = array('link' => 'Release|release|browse|product={PRODUCT}', 'subModule' => 'release');
$lang->menu->waterfall->issue = 'Issue|issue|browse|';
$lang->menu->waterfall->risk = 'Risk|risk|browse|';
$lang->menu->waterfall->list = array('link' => 'More|workestimation|index|program={PROGRAM}', 'class' => 'dropdown dropdown-hover waterfall-list', 'subModule' => 'stakeholder,workestimation,durationestimation,budget,pssp,stakeholder');
$lang->waterfall = new stdclass();
$lang->waterfall->subMenu = new stdclass();
$lang->waterfall->subMenu->list = new stdclass();
$lang->waterfall->subMenu->list->workestimation = array('link' => 'Workestimation|workestimation|index|program=%s', 'subModule' => 'durationestimation,budget');
$lang->waterfall->subMenu->list->stakeholder = array('link' => 'Stakeholder|stakeholder|browse|', 'subModule' => 'stakeholder');
$lang->waterfall->subMenu->list->program = 'Project|program|PRJEdit|';
$lang->waterfallproduct = new stdclass();
$lang->workestimation = new stdclass();
$lang->budget = new stdclass();
$lang->programplan = new stdclass();
$lang->review = new stdclass();
$lang->weekly = new stdclass();
$lang->milestone = new stdclass();
$lang->design = new stdclass();
$lang->auditplan = new stdclass();
$lang->cm = new stdclass();
$lang->nc = new stdclass();
$lang->pssp = new stdclass();
$lang->issue = new stdclass();
$lang->risk = new stdclass();
$lang->stakeholder = new stdclass();
$lang->durationestimation = new stdclass();
$lang->workestimation->menu = new stdclass();
$lang->budget->menu = new stdclass();
$lang->programplan->menu = new stdclass();
$lang->review->menu = new stdclass();
$lang->weekly->menu = new stdclass();
$lang->milestone->menu = new stdclass();
$lang->design->menu = new stdclass();
$lang->auditplan->menu = new stdclass();
$lang->cm->menu = new stdclass();
$lang->pssp->menu = new stdclass();
$lang->issue->menu = new stdclass();
$lang->risk->menu = new stdclass();
$lang->stakeholder->menu = new stdclass();
$lang->waterfallproduct->menu = new stdclass();
$lang->durationestimation->menu = new stdclass();
$lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate');
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
$lang->workestimation->menu->index = 'Workload|workestimation|index|program={PROGRAM}';
$lang->workestimation->menu->duration = array('link' => 'Duration|durationestimation|index|program={PROGRAM}', 'subModule' => 'durationestimation');
$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget');
$lang->durationestimation->menu = $lang->workestimation->menu;
$lang->budget->menu = $lang->workestimation->menu;
$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=gantt');
$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=lists', 'alias' => 'create');
$lang->waterfallproduct->menu->plan = array('link' => "{$lang->planCommon}|productplan|browse|productID={PRODUCT}", 'subModule' => 'productplan');
$lang->waterfallproduct->menu->story = 'Story|product|browse|product={PRODUCT}';
$lang->waterfallproduct->menu->track = 'Track|story|track|product={PRODUCT}';
if($config->URAndSR)
{
$lang->waterfallproduct->menu->requirement = array('link' => "{$urCommon}|product|browse|productID={PRODUCT}&branch=&browseType=unclosed&param=0&storyType=requirement");
$lang->waterfallproduct->menu->story = array('link' => "{$srCommon}|product|browse|productID={PRODUCT}");
}
$lang->nc->menu = $lang->auditplan->menu;
$lang->noMenuModule = array('my', 'todo', 'effort', 'program', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'holiday', 'custom', 'auditcl', 'subject', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search');
include (dirname(__FILE__) . '/menuOrder.php');
+189 -67
View File
@@ -122,20 +122,56 @@ $lang->common->common = 'Module chung';
/* Main menu. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> My|my|index|';
$lang->mainNav->program = '<i class="icon icon-menu-project"></i> Program|program|browse|';
$lang->mainNav->program = '<i class="icon icon-menu-stack"></i> Program|program|browse|';
$lang->mainNav->product = '<i class="icon icon-menu-project"></i> Product|product|index|';
$lang->mainNav->project = '<i class="icon icon-menu-doc"></i> Project|program|prjbrowse|';
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|custom|estimate|';
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
$lang->reporting = new stdclass();
$lang->dividerMenu = ',admin,';
/* Program set menu. */
$lang->program = new stdclass();
$lang->program->menu = new stdclass();
$lang->program->menu->index = 'Home|program|pgmindex|';
$lang->program->menu->browse = array('link' => 'Program|program|pgmbrowse|', 'alias' => 'pgmcreate,pgmedit,pgmgroup,pgmmanagepriv,pgmmanageview,pgmmanagemembers');
$lang->program->viewMenu = new stdclass();
$lang->program->viewMenu->view = array('link' => 'View|program|pgmview|program=%s');
$lang->program->viewMenu->product = array('link' => 'Product|program|pgmproduct|program=%s');
$lang->program->viewMenu->project = array('link' => "Project|program|pgmproject|program=%s");
$lang->program->viewMenu->personnel = array('link' => "Member|personnel|accessible|program=%s");
$lang->program->viewMenu->stakeholder = array('link' => "Stakeholder|program|pgmstakeholder|program=%s", 'alias' => 'createstakeholder');
$lang->personnel = new stdClass();
$lang->personnel->menu = new stdClass();
$lang->personnel->menu->accessible = array('link' => "Accessible|personnel|accessible|program=%s");
$lang->personnel->menu->putinto = array('link' => "Investment|personnel|putinto|program=%s");
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->program = 'Home|program|index';
$lang->menu->product = $lang->productCommon . '|product|index|locate=no';
$lang->menu->project = 'Iteration|project|index|locate=no';
$lang->menu->doc = 'Doc|doc|index|';
$lang->menu->qa = 'Qa|qa|index';
$lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->home = 'Home|product|index|';
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
$lang->product->viewMenu = new stdclass();
$lang->product->viewMenu->requirement = array('link' => "Requirement|product|browse|productID=%s&branch=&browseType=unclosed&param=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->story = array('link' => "Story|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
$lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->viewMenu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->viewMenu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->product->viewMenu->view = array('link' => '概况|product|view|productID=%s', 'alias' => 'edit');
$lang->release = new stdclass();
$lang->branch = new stdclass();
$lang->productplan = new stdclass();
$lang->release->menu = $lang->product->viewMenu;
$lang->branch->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
/* System menu. */
$lang->system = new stdclass();
@@ -245,21 +281,21 @@ $lang->todo = new stdclass();
$lang->todo->menu = $lang->my->menu;
/* Product menu settings. */
$lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->scrumproduct = new stdclass();
$lang->scrumproduct->menu = new stdclass();
$lang->product->menu->story = array('link' => 'Câu chuyện|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->plan = array('link' => 'Kế hoạch|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => 'Phát hành|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = 'Lộ trình|product|roadmap|productID=%s';
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->dynamic = 'Lịch sử|product|dynamic|productID=%s';
$lang->product->menu->doc = array('link' => 'Tài liệu|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
$lang->product->menu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->menu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->product->menu->view = array('link' => 'Tổng quan|product|view|productID=%s', 'alias' => 'edit');
$lang->scrumproduct->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->scrumproduct->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->scrumproduct->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
$lang->scrumproduct->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->scrumproduct->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->scrumproduct->menu->dynamic = 'Dynamics|product|dynamic|productID=%s';
$lang->scrumproduct->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
$lang->scrumproduct->menu->branch = '@branch@|branch|manage|productID=%s';
$lang->scrumproduct->menu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->scrumproduct->menu->view = array('link' => 'Overview|product|view|productID=%s', 'alias' => 'edit');
if(!empty($config->URAndSR))
if($config->URAndSR)
{
$lang->product->menu->requirement = array('link' => "{$urCommon}|product|browse|productID=%s&branch=&browseType=unclosed&param=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->story = array('link' => "{$srCommon}|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
@@ -267,15 +303,9 @@ if(!empty($config->URAndSR))
$lang->product->dividerMenu = ',plan,project,doc,';
$lang->productplan = new stdclass();
$lang->release = new stdclass();
$lang->branch = new stdclass();
$lang->story = new stdclass();
$lang->story = new stdclass();
$lang->branch->menu = $lang->product->menu;
$lang->story->menu = $lang->product->menu;
$lang->productplan->menu = $lang->product->menu;
$lang->release->menu = $lang->product->menu;
$lang->story->menu = $lang->product->menu;
/* Project menu settings. */
$lang->project = new stdclass();
@@ -545,47 +575,48 @@ $lang->navGroup->my = 'my';
$lang->navGroup->todo = 'my';
$lang->navGroup->effort = 'my';
$lang->navGroup->product = 'program';
$lang->navGroup->story = 'program';
$lang->navGroup->branch = 'program';
$lang->navGroup->productplan = 'program';
$lang->navGroup->release = 'program';
$lang->navGroup->tree = 'program';
$lang->navGroup->project = 'program';
$lang->navGroup->task = 'program';
$lang->navGroup->qa = 'program';
$lang->navGroup->bug = 'program';
$lang->navGroup->doc = 'program';
$lang->navGroup->testcase = 'program';
$lang->navGroup->testtask = 'program';
$lang->navGroup->testreport = 'program';
$lang->navGroup->testsuite = 'program';
$lang->navGroup->caselib = 'program';
$lang->navGroup->feedback = 'program';
$lang->navGroup->deploy = 'program';
$lang->navGroup->stakeholder = 'program';
$lang->navGroup->personnel = 'program';
$lang->navGroup->programplan = 'program';
$lang->navGroup->workestimation = 'program';
$lang->navGroup->budget = 'program';
$lang->navGroup->review = 'program';
$lang->navGroup->reviewissue = 'program';
$lang->navGroup->weekly = 'program';
$lang->navGroup->milestone = 'program';
$lang->navGroup->pssp = 'program';
$lang->navGroup->design = 'program';
$lang->navGroup->repo = 'program';
$lang->navGroup->issue = 'program';
$lang->navGroup->risk = 'program';
$lang->navGroup->auditplan = 'program';
$lang->navGroup->cm = 'program';
$lang->navGroup->nc = 'program';
$lang->navGroup->job = 'program';
$lang->navGroup->jenkins = 'program';
$lang->navGroup->compile = 'program';
$lang->navGroup->build = 'program';
$lang->navGroup->productplan = 'product';
$lang->navGroup->release = 'product';
$lang->navGroup->branch = 'product';
$lang->navGroup->durationestimation = 'program';
$lang->navGroup->story = 'project';
$lang->navGroup->tree = 'project';
$lang->navGroup->task = 'project';
$lang->navGroup->qa = 'project';
$lang->navGroup->bug = 'project';
$lang->navGroup->doc = 'project';
$lang->navGroup->testcase = 'project';
$lang->navGroup->testtask = 'project';
$lang->navGroup->testreport = 'project';
$lang->navGroup->testsuite = 'project';
$lang->navGroup->caselib = 'project';
$lang->navGroup->feedback = 'project';
$lang->navGroup->deploy = 'project';
$lang->navGroup->stakeholder = 'project';
$lang->navGroup->programplan = 'project';
$lang->navGroup->workestimation = 'project';
$lang->navGroup->budget = 'project';
$lang->navGroup->review = 'project';
$lang->navGroup->reviewissue = 'project';
$lang->navGroup->weekly = 'project';
$lang->navGroup->milestone = 'project';
$lang->navGroup->pssp = 'project';
$lang->navGroup->design = 'project';
$lang->navGroup->repo = 'project';
$lang->navGroup->issue = 'project';
$lang->navGroup->risk = 'project';
$lang->navGroup->auditplan = 'project';
$lang->navGroup->cm = 'project';
$lang->navGroup->nc = 'project';
$lang->navGroup->job = 'project';
$lang->navGroup->jenkins = 'project';
$lang->navGroup->compile = 'project';
$lang->navGroup->build = 'project';
$lang->navGroup->durationestimation = 'project';
$lang->navGroup->stage = 'system';
$lang->navGroup->measurement = 'system';
@@ -810,4 +841,95 @@ $lang->icons['unlock'] = 'unlock-alt';
$lang->icons['confirmStoryChange'] = 'search';
$lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->product = $lang->productCommon . '|product|index|locate=no';
$lang->menu->scrum->project = "$lang->projectCommon|project|index|locate=no";
$lang->menu->scrum->doc = 'Doc|doc|index|';
$lang->menu->scrum->qa = 'QA|qa|index';
/* Waterfall menu. */
$lang->menu->waterfall = new stdclass();
$lang->menu->waterfall->programindex = array('link' => 'Index|program|index|program={PROGRAM}');
$lang->menu->waterfall->programplan = array('link' => 'Plan|programplan|browse|program={PROGRAM}', 'subModule' => 'programplan');
$lang->menu->waterfall->project = array('link' => $lang->projectCommon . '|project|task|projectID={PROJECT}', 'subModule' => ',project,task,');
$lang->menu->waterfall->weekly = array('link' => 'Weekly|weekly|index|program={PROGRAM}', 'subModule' => ',milestone,');
$lang->menu->waterfall->doc = array('link' => 'Doc|doc|index|program={PROGRAM}');
$lang->menu->waterfall->product = array('link' => 'Story|product|browse|product={PRODUCT}', 'subModule' => ',story,');
$lang->menu->waterfall->design = 'Design|design|browse|product={PRODUCT}';
$lang->menu->waterfall->ci = 'Code|repo|browse|';
$lang->menu->waterfall->qa = array('link' => 'QA|bug|browse|product={PRODUCT}', 'subModule' => ',testcase,testtask,testsuite,testreport,caselib,');
$lang->menu->waterfall->release = array('link' => 'Release|release|browse|product={PRODUCT}', 'subModule' => 'release');
$lang->menu->waterfall->issue = 'Issue|issue|browse|';
$lang->menu->waterfall->risk = 'Risk|risk|browse|';
$lang->menu->waterfall->list = array('link' => 'More|workestimation|index|program={PROGRAM}', 'class' => 'dropdown dropdown-hover waterfall-list', 'subModule' => 'stakeholder,workestimation,durationestimation,budget,pssp,stakeholder');
$lang->waterfall = new stdclass();
$lang->waterfall->subMenu = new stdclass();
$lang->waterfall->subMenu->list = new stdclass();
$lang->waterfall->subMenu->list->workestimation = array('link' => 'Workestimation|workestimation|index|program=%s', 'subModule' => 'durationestimation,budget');
$lang->waterfall->subMenu->list->stakeholder = array('link' => 'Stakeholder|stakeholder|browse|', 'subModule' => 'stakeholder');
$lang->waterfall->subMenu->list->program = 'Project|program|PRJEdit|';
$lang->waterfallproduct = new stdclass();
$lang->workestimation = new stdclass();
$lang->budget = new stdclass();
$lang->programplan = new stdclass();
$lang->review = new stdclass();
$lang->weekly = new stdclass();
$lang->milestone = new stdclass();
$lang->design = new stdclass();
$lang->auditplan = new stdclass();
$lang->cm = new stdclass();
$lang->nc = new stdclass();
$lang->pssp = new stdclass();
$lang->issue = new stdclass();
$lang->risk = new stdclass();
$lang->stakeholder = new stdclass();
$lang->durationestimation = new stdclass();
$lang->workestimation->menu = new stdclass();
$lang->budget->menu = new stdclass();
$lang->programplan->menu = new stdclass();
$lang->review->menu = new stdclass();
$lang->weekly->menu = new stdclass();
$lang->milestone->menu = new stdclass();
$lang->design->menu = new stdclass();
$lang->auditplan->menu = new stdclass();
$lang->cm->menu = new stdclass();
$lang->pssp->menu = new stdclass();
$lang->issue->menu = new stdclass();
$lang->risk->menu = new stdclass();
$lang->stakeholder->menu = new stdclass();
$lang->waterfallproduct->menu = new stdclass();
$lang->durationestimation->menu = new stdclass();
$lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate');
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
$lang->workestimation->menu->index = 'Workload|workestimation|index|program={PROGRAM}';
$lang->workestimation->menu->duration = array('link' => 'Duration|durationestimation|index|program={PROGRAM}', 'subModule' => 'durationestimation');
$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget');
$lang->durationestimation->menu = $lang->workestimation->menu;
$lang->budget->menu = $lang->workestimation->menu;
$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=gantt');
$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=lists', 'alias' => 'create');
$lang->waterfallproduct->menu->plan = array('link' => "{$lang->planCommon}|productplan|browse|productID={PRODUCT}", 'subModule' => 'productplan');
$lang->waterfallproduct->menu->story = 'Story|product|browse|product={PRODUCT}';
$lang->waterfallproduct->menu->track = 'Track|story|track|product={PRODUCT}';
if($config->URAndSR)
{
$lang->waterfallproduct->menu->requirement = array('link' => "{$urCommon}|product|browse|productID={PRODUCT}&branch=&browseType=unclosed&param=0&storyType=requirement");
$lang->waterfallproduct->menu->story = array('link' => "{$srCommon}|product|browse|productID={PRODUCT}");
}
$lang->nc->menu = $lang->auditplan->menu;
$lang->noMenuModule = array('my', 'todo', 'effort', 'program', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'holiday', 'custom', 'auditcl', 'subject', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search');
include (dirname(__FILE__) . '/menuOrder.php');
+2 -2
View File
@@ -122,9 +122,9 @@ $lang->common->common = '公有模块';
/* 主导航菜单。*/
$lang->mainNav = new stdclass();
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> 地盘|my|index|';
$lang->mainNav->program = '<i class="icon icon-stack"></i> 项目集|program|pgmindex|';
$lang->mainNav->program = '<i class="icon icon-folder"></i> 项目集|program|pgmindex|';
$lang->mainNav->product = '<i class="icon icon-menu-project"></i> 产品|product|index|';
$lang->mainNav->project = '<i class="icon icon-menu-doc"></i> 项目|program|prjbrowse|';
$lang->mainNav->project = '<i class="icon icon-file"></i> 项目|program|prjbrowse|';
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> 组织|custom|estimate|';
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> 后台|admin|index|';
+4 -3
View File
@@ -139,9 +139,10 @@ class group extends control
$this->view->position[] = $group->name;
$this->view->position[] = $this->lang->group->manageView;
$this->view->group = $group;
$this->view->projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('type')->eq('project')->orderBy('order_desc')->fetchPairs('id', 'name');
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->orderBy('order_desc')->fetchPairs('id', 'name');
$this->view->group = $group;
$this->view->programs = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('type')->eq('program')->orderBy('order_desc')->fetchPairs('id', 'name');
$this->view->projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('type')->eq('project')->orderBy('order_desc')->fetchPairs('id', 'name');
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->orderBy('order_desc')->fetchPairs('id', 'name');
$menugroup = array();
foreach($this->lang->menugroup as $moduleName => $groupName) $menugroup[$groupName][$moduleName] = $moduleName;
+6
View File
@@ -1,3 +1,8 @@
function toggleProgram()
{
$('#programBox').toggle($('#program').prop("checked"));
}
function toggleProduct()
{
$('#productBox').toggle($('#product').prop("checked"));
@@ -30,6 +35,7 @@ $(function()
$('.group-item input:checkbox[name^="allchecker"]').prop('checked', allChecked);
var id = $(this).attr('id');
if(id == 'program') toggleProgram();
if(id == 'product') toggleProduct();
if(id == 'project') toggleProject();
if($('#' + id + 'ActionBox').length == 1) $('#' + id + 'ActionBox').toggle($(this).prop("checked"));
+1
View File
@@ -26,6 +26,7 @@ $lang->group->confirmDelete = 'Möchten Sie die Gruppe löschen?';
$lang->group->successSaved = 'Gespeichert!';
$lang->group->errorNotSaved = 'Fehlgeschlagen. Bitte aktion und Gruppe wählen.';
$lang->group->viewList = 'Anzeige ist zulässig.';
$lang->group->programList = 'Access Program';
$lang->group->productList = 'Produkte sind zugänglich.';
$lang->group->projectList = 'Projekte sind zugänglich.';
$lang->group->dynamic = 'Access Dynamics';
+1
View File
@@ -26,6 +26,7 @@ $lang->group->confirmDelete = 'Do you want to delete this user group?';
$lang->group->successSaved = 'Saved.';
$lang->group->errorNotSaved = 'Failed. Please select actions and groups.';
$lang->group->viewList = 'Access Sight';
$lang->group->programList = 'Access Program';
$lang->group->productList = 'Access Product';
$lang->group->projectList = 'Access Project';
$lang->group->dynamic = 'Access Dynamics';
+1
View File
@@ -26,6 +26,7 @@ $lang->group->confirmDelete = "Voulez-vous supprimer ce groupe d'utilisateu
$lang->group->successSaved = 'Sauvé.';
$lang->group->errorNotSaved = 'Echec. Veuillez sélectionner actions et groupes.';
$lang->group->viewList = 'Accès Consultation';
$lang->group->programList = 'Accè Programs';
$lang->group->productList = 'Accès ' . $lang->productCommon . 's';
$lang->group->projectList = 'Accès ' . $lang->projectCommon . 's';
$lang->group->dynamic = 'Accès Historique';
+1
View File
@@ -26,6 +26,7 @@ $lang->group->confirmDelete = 'Bạn có muốn xóa người dùng này gr
$lang->group->successSaved = 'Đã lưu.';
$lang->group->errorNotSaved = 'Thất bại. Vui lòng select actions and groups.';
$lang->group->viewList = 'Truy cập Sight';
$lang->group->programList = 'Truy cập Program';
$lang->group->productList = 'Truy cập Product';
$lang->group->projectList = 'Truy cập Project';
$lang->group->dynamic = 'Truy cập Dynamics';
+1
View File
@@ -26,6 +26,7 @@ $lang->group->confirmDelete = '您确定删除该用户分组吗?';
$lang->group->successSaved = '成功保存';
$lang->group->errorNotSaved = '没有保存,请确认选择了权限数据。';
$lang->group->viewList = '可访问视图';
$lang->group->programList = '可访问项目集';
$lang->group->productList = '可访问' . $lang->productCommon;
$lang->group->projectList = '可访问项目';
$lang->group->dynamic = '可查看动态';
+13
View File
@@ -47,6 +47,19 @@
</div>
</td>
</tr>
<tr id='programBox' style='display:none'>
<th class='text-right'><?php echo $lang->group->programList?></th>
<td>
<?php if($programs):?>
<div class='input-group'>
<?php echo html::select("actions[programs][]", $programs, isset($group->acl['programs']) ? join(',', $group->acl['programs']) : '', "class='form-control chosen' multiple")?>
<span class='input-group-addon strong'><?php echo $lang->group->noticeVisit?></span>
</div>
<?php else:?>
<?php echo $lang->group->noneProgram;?>
<?php endif;?>
</td>
</tr>
<tr id='productBox' style='display:none'>
<th class='text-right'><?php echo $lang->group->productList?></th>
<td>
+2 -2
View File
@@ -478,12 +478,12 @@ class program extends control
$this->view->programID = $programID;
$this->view->program = $this->program->getPGMByID($programID);
$this->view->users = $this->loadModel('user')->getPairs('nodeleted');
$this->view->users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
$this->view->deptUsers = $deptUsers;
$this->view->dept = $dept;
$this->view->depts = array('' => '') + $this->dept->getOptionMenu();
$this->view->stakeholders = $this->program->getStakeholders($programID, 't1.id_desc');
$this->view->parentStakeholders = $this->program->getStakeholdersByList($parentIdList);
$this->view->parentStakeholders = $this->program->getStakeholdersByPGMList($parentIdList);
$this->display();
}
+16 -18
View File
@@ -454,7 +454,7 @@ class programModel extends model
->where('deleted')->eq('0')
->beginIF($from == 'program')
->andWhere('type')->in('program,project')
->andWhere('id')->in($this->app->user->view->programs . $this->app->user->view->projects)
->andWhere('id')->in($this->app->user->view->programs . ',' . $this->app->user->view->projects)
->fi()
->beginIF($from == 'product')
->andWhere('type')->eq('program')
@@ -467,7 +467,7 @@ class programModel extends model
while($program = $stmt->fetch())
{
$link = $from == 'program' ? helper::createLink('program', 'pgmview', "programID=$program->id") : helper::createLink('product', 'all', "programID=$program->id" . $vars);
$linkHtml = html::a($link, "<i class='icon icon-stack'></i> " . $program->name, '', "id='program$program->id' class='text-ellipsis' title=$program->name");
$linkHtml = html::a($link, "<i class='icon icon-folder'></i> " . $program->name, '', "id='program$program->id' class='text-ellipsis' title=$program->name");
if(isset($programMenu[$program->id]) and !empty($programMenu[$program->id]))
{
@@ -535,7 +535,7 @@ class programModel extends model
*/
public function getStakeholders($programID = 0, $orderBy, $pager = null)
{
return $this->dao->select('t2.*, t1.id')->from(TABLE_STAKEHOLDER)->alias('t1')
return $this->dao->select('t2.account,t2.realname,t2.role,t2.qq,t2.mobile,t2.phone,t2.weixin,t2.email,t1.id')->from(TABLE_STAKEHOLDER)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.user=t2.account')
->where('t1.objectID')->eq($programID)
->andWhere('t1.objectType')->eq('program')
@@ -552,7 +552,7 @@ class programModel extends model
* @access public
* @return void
*/
public function getStakeholdersByList($programIdList = 0)
public function getStakeholdersByPGMList($programIdList = 0)
{
return $this->dao->select('distinct user as account')->from(TABLE_STAKEHOLDER)
->where('objectID')->in($programIdList)
@@ -589,13 +589,22 @@ class programModel extends model
$this->dao->insert(TABLE_STAKEHOLDER)->data($stakeholder)->exec();
}
/* Only changed account update userview. */
/* If any account changed, update his view. */
$oldAccounts = array_keys($oldJoin);
$changedAccounts = array_diff($accounts, $oldAccounts);
$changedAccounts = array_merge($changedAccounts, array_diff($oldAccounts, $accounts));
$changedAccounts = array_unique($changedAccounts);
$this->loadModel('user')->updateUserView($programID, 'program', $changedAccounts);
/* Update children user view. */
$childPgmList = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('program')->fetchPairs();
$childPRJList = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('project')->fetchPairs();
$childProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('program')->eq($programID)->fetchPairs();
if(!empty($childPGMList)) $this->user->updateUserView($childPGMList, 'program', $changedAccounts);
if(!empty($childPRJList)) $this->user->updateUserView($childPRJList, 'project', $changedAccounts);
if(!empty($childProducts)) $this->user->updateUserView($childProducts, 'product', $changedAccounts);
}
/**
@@ -957,6 +966,7 @@ class programModel extends model
->where('type')->in('project,program')
->andWhere('status')->ne('closed')
->andWhere('deleted')->eq('0')
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->programs . ',' . $this->app->user->view->projects)->fi()
->beginIF($projectID > 0)->andWhere('path')->like($path . '%')->fi()
->orderBy('grade desc, `order`')
->get();
@@ -1037,7 +1047,7 @@ class programModel extends model
public function createPRJManageLink($project)
{
$link = $project->type == 'program' ? helper::createLink('program', 'PRJbrowse', "programID={$project->id}") : helper::createLink('program', 'index', "projectID={$project->id}", '', '', $project->id);
$icon = $project->type == 'program' ? '<i class="icon icon-stack"></i> ' : '<i class="icon icon-menu-doc"></i> ';
$icon = $project->type == 'program' ? '<i class="icon icon-folder"></i> ' : '<i class="icon icon-file"></i> ';
return html::a($link, $icon . $project->name, '_self', "id=project{$project->id} title='{$project->name}' class='text-ellipsis'");
}
@@ -1125,18 +1135,6 @@ class programModel extends model
$this->dao->insert(TABLE_USERGROUP)->data($groupPriv)->exec();
}
/* Init groups. */
$groups = $this->dao->select('name, `desc`')->from(TABLE_GROUP)
->where('PRJ')->eq(0)
->andWhere('role')->in('dev,qa,pm,po,others')
->fetchAll();
foreach($groups as $group)
{
$group->PRJ = $projectID;
$this->dao->insert(TABLE_GROUP)->data($group)->exec();
}
return $projectID;
}
}
+2 -2
View File
@@ -52,9 +52,9 @@
<td class='c-name text-left pgm-title table-nest-title' title='<?php echo $program->name?>'>
<span class="table-nest-icon icon<?php if($program->type == 'program') echo ' table-nest-toggle' ?>"></span>
<?php if($program->type == 'program'):?>
<?php echo html::a($this->createLink('program', 'pgmview', "programID=$program->id"), "<i class='icon icon-stack'></i> " . $program->name);?>
<?php echo html::a($this->createLink('program', 'pgmview', "programID=$program->id"), "<i class='icon icon-folder'></i> " . $program->name);?>
<?php else:?>
<?php echo html::a($this->createLink('program', 'index', "programID=$program->id", '', '', $program->id), "<i class='icon icon-menu-doc'></i> " . $program->name);?>
<?php echo html::a($this->createLink('program', 'index', "programID=$program->id", '', '', $program->id), "<i class='icon icon-file'></i> " . $program->name);?>
<?php endif;?>
</td>
<td class='c-status'><span class="status-program status-<?php echo $program->status?>"><?php echo zget($lang->project->statusList, $program->status, '');?></span></td>
+1 -1
View File
@@ -90,7 +90,7 @@ class stakeholder extends control
$this->view->position[] = $this->lang->stakeholder->batchCreate;
$this->view->project = $this->loadModel('program')->getPGMByID($this->session->PRJ);
$this->view->users = $this->user->getPairs('all|nodeleted');
$this->view->users = $this->user->getPairs('all|nodeleted|noclosed');
$this->view->deptUsers = $deptUsers;
$this->view->dept = $dept;
$this->view->projectID = $this->session->PRJ;
+27 -66
View File
@@ -864,6 +864,7 @@ class userModel extends model
continue;
}
/* Merge acls. */
if(!empty($acl['programs'])) $acls['programs'] = !empty($acls['programs']) ? array_merge($acls['programs'], $acl['programs']) : $acl['programs'];
if(!empty($acl['projects'])) $acls['projects'] = !empty($acls['projects']) ? array_merge($acls['projects'], $acl['projects']) : $acl['projects'];
if(!empty($acl['products'])) $acls['products'] = !empty($acls['products']) ? array_merge($acls['products'], $acl['products']) : $acl['products'];
@@ -878,7 +879,7 @@ class userModel extends model
if($sprintAllow) $acls['sprints'] = array();
if($viewAllow) $acls['views'] = array();
if($actionAllow) unset($acls['actions']);
$sql = $this->dao->select('module, method')->from(TABLE_GROUP)->alias('t1')
->leftJoin(TABLE_USERGROUP)->alias('t2')->on('t1.id = t2.group')
->leftJoin(TABLE_GROUPPRIV)->alias('t3')->on('t2.group = t3.group')
@@ -1652,21 +1653,21 @@ class userModel extends model
$parentStakeholderGroup = $this->stakeholder->getParentStakeholderGroup($programIdList);
/* Get auth users. */
$authUsers = array();
if(!empty($users)) $authUsers = $users;
$authedUsers = array();
if(!empty($users)) $authedUsers = $users;
if(empty($users))
{
foreach($programs as $program)
{
$stakeholders = zget($stakeholderGroup, $program->id, array());
if($program->acl == 'program') $stakeholders += zget($parentStakeholderGroup, $program->id, array());
$authUsers += $this->getProgramAuthUsers($program, $stakeholders);
$authedUsers += $this->getProgramAuthedUsers($program, $stakeholders);
}
}
/* Get all programs user view. */
$stmt = $this->dao->select("account,programs")->from(TABLE_USERVIEW)->where('account')->in($authUsers);
if(empty($users) and $authUsers)
$stmt = $this->dao->select("account,programs")->from(TABLE_USERVIEW)->where('account')->in($authedUsers);
if(empty($users) and $authedUsers)
{
foreach($programs as $programID => $program) $stmt->orWhere("CONCAT(',', programs, ',')")->like("%,{$programID},%");
}
@@ -1719,8 +1720,8 @@ class userModel extends model
$parentStakeholderGroup = $this->stakeholder->getParentStakeholderGroup($projectIdList);
/* Get auth users. */
$authUsers = array();
if(!empty($users)) $authUsers = $users;
$authedUsers = array();
if(!empty($users)) $authedUsers = $users;
if(empty($users))
{
foreach($projects as $project)
@@ -1729,13 +1730,13 @@ class userModel extends model
$teams = zget($teamGroups, $project->id, array());
if($project->acl == 'program') $stakeholders += zget($parentStakeholderGroup, $project->id, array());
$authUsers += $this->getProjectAuthUsers($project, $stakeholders, $teams);
$authedUsers += $this->getProjectAuthedUsers($project, $stakeholders, $teams);
}
}
/* Get all programs user view. */
$stmt = $this->dao->select("account,projects")->from(TABLE_USERVIEW)->where('account')->in($authUsers);
if(empty($users) and $authUsers)
$stmt = $this->dao->select("account,projects")->from(TABLE_USERVIEW)->where('account')->in($authedUsers);
if(empty($users) and $authedUsers)
{
foreach($projects as $projectID => $project) $stmt->orWhere("CONCAT(',', projects, ',')")->like("%,{$projectID},%");
}
@@ -1856,8 +1857,8 @@ class userModel extends model
$stakeholderGroup = $this->loadModel('stakeholder')->getStakeholderGroup($projectIdList);
/* Get auth users. */
$authUsers = array();
if(!empty($users)) $authUsers = $users;
$authedUsers = array();
if(!empty($users)) $authedUsers = $users;
if(empty($users))
{
foreach($sprints as $sprint)
@@ -1865,13 +1866,13 @@ class userModel extends model
$stakeholders = zget($stakeholderGroup, $sprint->project, array());
$teams = zget($teamGroups, $sprint->id, array());
$authUsers += $this->getSprintAuthUsers($sprint, $stakeholders, $teams);
$authedUsers += $this->getSprintAuthedUsers($sprint, $stakeholders, $teams);
}
}
/* Get all programs user view. */
$stmt = $this->dao->select("account,sprints")->from(TABLE_USERVIEW)->where('account')->in($authUsers);
if(empty($users) and $authUsers)
$stmt = $this->dao->select("account,sprints")->from(TABLE_USERVIEW)->where('account')->in($authedUsers);
if(empty($users) and $authedUsers)
{
foreach($sprints as $sprintID => $sprint) $stmt->orWhere("CONCAT(',', sprints, ',')")->like("%,{$sprintID},%");
}
@@ -1937,10 +1938,10 @@ class userModel extends model
if($project->type == 'project' && $project->parent != 0 && $project->acl == 'program')
{
$path = trim($project->path, ",$project->id,");
$programs = $this->dao->select('id,openedBy,PM,PO,QD,RD')->from(TABLE_PROJECT)->where('id')->in($path)->fetchAll();
$programs = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->in($path)->fetchAll();
foreach($programs as $program)
{
if($program->PO == $account OR $program->QD == $account OR $program->RD == $account OR $program->PM == $account) return true;
if($program->PM == $account || $program->openedBy == $account) return true;
}
}
@@ -1995,7 +1996,7 @@ class userModel extends model
}
/**
* Get project auth users.
* Get project authed users.
*
* @param object $project
* @param array $stakeholders
@@ -2003,7 +2004,7 @@ class userModel extends model
* @access public
* @return array
*/
public function getProjectAuthUsers($project, $stakeholders, $teams)
public function getProjectAuthedUsers($project, $stakeholders, $teams)
{
$users = array();
@@ -2022,15 +2023,11 @@ class userModel extends model
if($project->type == 'project' && $project->parent != 0 && $project->acl == 'program')
{
$path = trim($project->path, ",$project->id,");
$programs = $this->dao->select('id,openedBy,PM,PO,QD,RD')->from(TABLE_PROJECT)->where('id')->in($path)->fetchAll();
$programs = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->in($path)->fetchAll();
foreach($programs as $program)
{
$users[$program->openedBy] = $program->openedBy;
$users[$program->PM] = $program->PM;
$users[$program->PO] = $program->PO;
$users[$program->QD] = $program->QD;
$users[$program->RD] = $program->RD;
}
}
@@ -2038,14 +2035,14 @@ class userModel extends model
}
/**
* Get program auth users.
* Get program authed users.
*
* @param object $program
* @param array $stakeholders
* @access public
* @return array
*/
public function getProgramAuthUsers($program, $stakeholders)
public function getProgramAuthedUsers($program, $stakeholders)
{
$users = array();
@@ -2060,7 +2057,7 @@ class userModel extends model
}
/**
* Get sprint auth users.
* Get sprint authed users.
*
* @param object $sprint
* @param array $stakeholders
@@ -2068,9 +2065,9 @@ class userModel extends model
* @access public
* @return array
*/
public function getSprintAuthUsers($sprint, $stakeholders, $teams)
public function getSprintAuthedUsers($sprint, $stakeholders, $teams)
{
return $this->getProjectAuthUsers($sprint, $stakeholders, $teams);
return $this->getProjectAuthedUsers($sprint, $stakeholders, $teams);
}
/**
@@ -2110,42 +2107,6 @@ class userModel extends model
return $users;
}
/**
* Get project white list users.
*
* @param object $project
* @param array $groupUsers
* @param array $teams
* @access public
* @return array
*/
public function getProjectWhiteListUsers($project, $groupUsers, $teams)
{
$users = array();
foreach(explode(',', trim($this->app->company->admins, ',')) as $admin) $users[$admin] = $admin;
$users[$project->PO] = $project->PO;
$users[$project->QD] = $project->QD;
$users[$project->RD] = $project->RD;
$users[$project->PM] = $project->PM;
$users[$project->openedBy] = $project->openedBy;
if(isset($project->feedback)) $users[$project->feedback] = $project->feedback;
$users += $teams;
if($project->acl == 'custom')
{
foreach(explode(',', $project->whitelist) as $whitelist)
{
if(empty($whitelist)) continue;
$users += zget($groupUsers, $whitelist, array());
}
}
return $users;
}
/**
* Judge an action is clickable or not.
*