diff --git a/config/filter.php b/config/filter.php index 7edeb5add1..6b0eff8b04 100644 --- a/config/filter.php +++ b/config/filter.php @@ -26,7 +26,6 @@ $filter->default->cookie['lang'] = 'reg::lang'; $filter->default->cookie['theme'] = 'reg::word'; $filter->default->cookie['fingerprint'] = 'reg::word'; $filter->default->cookie['hideMenu'] = 'equal::true'; -$filter->default->cookie['systemModel'] = 'code'; $filter->bug = new stdclass(); $filter->caselib = new stdclass(); diff --git a/module/common/lang/menuOrder.php b/module/common/lang/menuOrder.php index d60b29a0a0..6d4b6a7c24 100644 --- a/module/common/lang/menuOrder.php +++ b/module/common/lang/menuOrder.php @@ -141,15 +141,9 @@ $lang->group->menuOrder = $lang->company->menuOrder; $lang->user->menuOrder = $lang->company->menuOrder; /* system menu order. */ -$lang->system->menuOrder[1] = 'setmodel'; -$lang->system->menuOrder[5] = 'estimate'; -$lang->system->menuOrder[10] = 'stage'; -$lang->system->menuOrder[15] = 'measurement'; -$lang->system->menuOrder[20] = 'auditcl'; -$lang->system->menuOrder[25] = 'cmcl'; -$lang->system->menuOrder[30] = 'process'; -$lang->system->menuOrder[35] = 'reviewcl'; -$lang->system->menuOrder[40] = 'subject'; +$lang->system->menuOrder[5] = 'company'; +$lang->system->menuOrder[10] = 'scrum'; +$lang->system->menuOrder[15] = 'waterfall'; /* admin menu order. */ $lang->admin->menuOrder[5] = 'index'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index d5c6b2bf1c..7a2f4febac 100755 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -134,7 +134,7 @@ $lang->mainNav->my = ' 地盘|my|index|'; $lang->mainNav->program = ' 项目集|program|pgmbrowse|'; $lang->mainNav->product = ' 产品|product|index|'; $lang->mainNav->project = ' 项目|program|prjbrowse|'; -$lang->mainNav->system = ' 组织|custom|estimate|'; +$lang->mainNav->system = ' 组织|subject|browse|'; $lang->mainNav->admin = ' 后台|admin|index|'; $lang->reporting = new stdclass(); @@ -188,28 +188,23 @@ $lang->productplan->menu = $lang->product->menu; /* System menu. */ $lang->system = new stdclass(); $lang->system->menu = new stdclass(); -$lang->system->menu->estimate = array('link' => '估算|custom|estimate|'); -$lang->system->menu->stage = array('link' => '阶段|stage|browse|', 'subModule' => 'stage'); -$lang->system->menu->subject = array('link' => '科目|subject|browse|'); -$lang->system->menu->holiday = array('link' => '节假日|holiday|browse|'); -$lang->system->menu->custom = array('link' => '自定义|custom|configurewaterfall|'); -$lang->system->dividerMenu = ',auditcl,subject,'; +$lang->system->menu->company = array('link' => '全局设置|subject|browse|', 'subModule' => 'holiday'); +$lang->system->menu->scrum = array('link' => '敏捷模型|custom|configurescrum|'); +$lang->system->menu->waterfall = array('link' => '瀑布模型|custom|estimate|', 'subModule' => 'stage'); -if(isset($_COOKIE['systemModel']) and $_COOKIE['systemModel'] == 'scrum') -{ - $lang->system->menu = new stdclass(); - $lang->system->menu->subject = array('link' => '科目|subject|browse|'); - $lang->system->menu->holiday = array('link' => '节假日|holiday|browse|'); - $lang->system->menu->custom = array('link' => '自定义|custom|configurescrum|'); +$lang->subject = new stdclass(); +$lang->subject->menu = new stdclass(); +$lang->subject->menu->subject = array('link' => '科目|subject|browse|'); +$lang->subject->menu->holiday = array('link' => '节假日|holiday|browse|'); +$lang->subject->menu->concept = array('link' => '需求概念|custom|setstoryconcept|'); - $lang->mainNav->system = ' 组织|subject|browse|'; - unset($lang->system->dividerMenu); -} +$lang->holiday = new stdclass(); +$lang->holiday->menu = $lang->subject->menu; $lang->stage = new stdclass(); $lang->stage->menu = new stdclass(); -$lang->stage->menu->browse = array('link' => '阶段列表|stage|browse|', 'alias' => 'create,edit,batchcreate'); -$lang->stage->menu->settype = '阶段类型|stage|settype|'; +$lang->stage->menu->estimate = array('link' => '估算|custom|estimate'); +$lang->stage->menu->stage = array('link' => '阶段|stage|settype'); $lang->measurement = new stdclass(); $lang->measurement->menu = new stdclass(); @@ -956,6 +951,6 @@ $lang->waterfallproduct->menu->requirement = array('link' => "{$URCommon}|produc $lang->waterfallproduct->menu->story = array('link' => "{$SRCommon}|product|browse|productID={PRODUCT}"); $lang->nc->menu = $lang->auditplan->menu; -$lang->noMenuModule = array('my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'holiday', 'custom', 'auditcl', 'subject', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search'); +$lang->noMenuModule = array('my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'auditcl', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search'); include (dirname(__FILE__) . '/menuOrder.php'); diff --git a/module/common/view/header.html.php b/module/common/view/header.html.php index 26235464a6..36e485e9d7 100755 --- a/module/common/view/header.html.php +++ b/module/common/view/header.html.php @@ -10,7 +10,6 @@ include 'chosen.html.php'; navGroup, $app->rawModule) == 'program');?> navGroup, $app->rawModule) == 'project');?> navGroup, $app->rawModule) == 'product');?> -navGroup, $app->rawModule) == 'system');?>
diff --git a/module/custom/control.php b/module/custom/control.php index 46f86f3d4f..6a3f573de0 100644 --- a/module/custom/control.php +++ b/module/custom/control.php @@ -362,8 +362,11 @@ class custom extends control */ public function estimate() { - $this->lang->custom->menu = new stdclass(); + $this->lang->custom->menu = $this->lang->stage->menu; $this->lang->navGroup->custom = 'system'; + $key = array_search('custom', $this->lang->noMenuModule); + unset($this->lang->noMenuModule[$key]); + if(strtolower($this->server->request_method) == "post") { $this->loadModel('setting'); @@ -393,16 +396,20 @@ class custom extends control } /** - * Configure waterfall. + * Set story concept. * * @access public * @return void */ - public function configureWaterfall() + public function setStoryConcept() { + /* Process menu.*/ $this->app->loadLang('custom'); - $this->lang->custom->menu = new stdclass(); + $this->lang->custom->menu = $this->lang->subject->menu; $this->lang->navGroup->custom = 'system'; + $this->lang->system->menu->company['subModule'] .= ',custom'; + $key = array_search('custom', $this->lang->noMenuModule); + unset($this->lang->noMenuModule[$key]); if($_POST) { @@ -410,18 +417,11 @@ class custom extends control if(!$result) $this->send(array('result' => 'fail', 'message' => $this->lang->custom->notice->URSREmpty)); if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('custom', 'configurewaterfall'))); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('custom', 'setstoryconcept'))); } - $URSRName = $this->dao->select("`value`")->from(TABLE_CONFIG) - ->where('module')->eq('custom') - ->andWhere('section')->eq('common') - ->andWhere('`key`')->eq('URSRName') - ->fetch('value'); - - $this->view->title = $this->lang->custom->common; - $this->view->position[] = $this->lang->custom->common; - $this->view->URSRName = json_decode($URSRName); + $this->view->title = $this->lang->custom->setStoryConcept; + $this->view->position[] = $this->lang->custom->setStoryConcept; $this->display(); } @@ -503,32 +503,6 @@ class custom extends control $this->display(); } - /** - * Set waterfall model. - * - * @access public - * @return void - */ - public function setWaterfall() - { - setCookie("systemModel", 'waterfall', $this->config->cookieLife, $this->config->webRoot, '', false, true); - - die(js::locate($this->createLink('custom', 'estimate'))); - } - - /** - * Set scrum model. - * - * @access public - * @return void - */ - public function setscrum() - { - setCookie("systemModel", 'scrum', $this->config->cookieLife, $this->config->webRoot, '', false, true); - - die(js::locate($this->createLink('custom', 'configurescrum'))); - } - /** * Ajax save custom fields. * diff --git a/module/custom/js/configurewaterfall.js b/module/custom/js/configurewaterfall.js deleted file mode 100644 index 49f633ae10..0000000000 --- a/module/custom/js/configurewaterfall.js +++ /dev/null @@ -1,28 +0,0 @@ -$(function() -{ - $("[name='URAndSR']").change(function() - { - if($(this).val() == 0) - { - $('#URSRName').addClass('hidden'); - $('#customURSR').addClass('hidden'); - } - else - { - $('#URSRName').removeClass('hidden'); - } - }); - - $('[name^="URSRCustom"]').change(function() - { - if($(this).attr('checked')) - { - $('#customURSR').removeClass('hidden'); - } - else - { - $('#customURSR').addClass('hidden'); - } - }) -}) - diff --git a/module/custom/js/setstoryconcept.js b/module/custom/js/setstoryconcept.js new file mode 100644 index 0000000000..006e22a737 --- /dev/null +++ b/module/custom/js/setstoryconcept.js @@ -0,0 +1,15 @@ +$(function() +{ + $('[name^="URSRCustom"]').change(function() + { + if($(this).attr('checked')) + { + $('#customURSR').removeClass('hidden'); + } + else + { + $('#customURSR').addClass('hidden'); + } + }) +}) + diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php index b922c5db71..928422a871 100644 --- a/module/custom/lang/de.php +++ b/module/custom/lang/de.php @@ -40,7 +40,7 @@ $lang->custom->SRStory = "Software requirements"; $lang->custom->epic = "Epic"; $lang->custom->scrumStory = "Story"; $lang->custom->waterfallCommon = "Waterfall"; -$lang->custom->configureWaterfall = "Waterfall Configure"; +$lang->custom->setStoryConcept = "Set Story Concept"; $lang->custom->configureScrum = "Scrum Configure"; $lang->custom->object['program'] = 'Program'; @@ -226,8 +226,6 @@ $lang->custom->waterfall->URSRName = 'Combination of default requirements concep $lang->custom->scrum = new stdclass(); $lang->custom->scrum->setConcept = 'Set concept'; -$lang->custom->scrum->URAndSR = 'Are epic concept enabled?'; -$lang->custom->scrum->URSRName = 'A conceptual definition of epic?'; $lang->custom->URList[1] = 'User Requirement'; $lang->custom->URList[2] = 'UR'; @@ -246,8 +244,3 @@ $lang->custom->URSRList[4] = 'Epic/Story'; $lang->custom->URTips = 'Type like:Requirement'; $lang->custom->SRTips = 'Type like:Story'; - -$lang->custom->waterfallOptions = new stdclass(); -$lang->custom->waterfallOptions->URAndSR = array(); -$lang->custom->waterfallOptions->URAndSR[0] = 'No'; -$lang->custom->waterfallOptions->URAndSR[1] = 'Yes'; diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 13aa36cd3a..19fbc5c79c 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -40,7 +40,7 @@ $lang->custom->SRStory = "Software requirements"; $lang->custom->epic = "Epic"; $lang->custom->scrumStory = "Story"; $lang->custom->waterfallCommon = "Waterfall"; -$lang->custom->configureWaterfall = "Waterfall Configure"; +$lang->custom->setStoryConcept = "Set Story Concept"; $lang->custom->configureScrum = "Scrum Configure"; $lang->custom->object['program'] = 'Program'; @@ -226,8 +226,6 @@ $lang->custom->waterfall->URSRName = 'Combination of default requirements concep $lang->custom->scrum = new stdclass(); $lang->custom->scrum->setConcept = 'Set concept'; -$lang->custom->scrum->URAndSR = 'Are epic concept enabled?'; -$lang->custom->scrum->URSRName = 'A conceptual definition of epic?'; $lang->custom->URList[1] = 'User Requirement'; $lang->custom->URList[2] = 'UR'; @@ -246,8 +244,3 @@ $lang->custom->URSRList[4] = 'Epic/Story'; $lang->custom->URTips = 'Type like:Requirement'; $lang->custom->SRTips = 'Type like:Story'; - -$lang->custom->waterfallOptions = new stdclass(); -$lang->custom->waterfallOptions->URAndSR = array(); -$lang->custom->waterfallOptions->URAndSR[0] = 'No'; -$lang->custom->waterfallOptions->URAndSR[1] = 'Yes'; diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php index a90d80f9e3..bd35bee75c 100644 --- a/module/custom/lang/fr.php +++ b/module/custom/lang/fr.php @@ -40,7 +40,7 @@ $lang->custom->SRStory = "Software requirements"; $lang->custom->epic = "Epic"; $lang->custom->scrumStory = "Story"; $lang->custom->waterfallCommon = "Waterfall"; -$lang->custom->configureWaterfall = "Waterfall Configure"; +$lang->custom->setStoryConcept = "Set Story Concept"; $lang->custom->configureScrum = "Scrum Configure"; $lang->custom->object['program'] = 'Program'; @@ -226,8 +226,6 @@ $lang->custom->waterfall->URSRName = 'A conceptual definition of requirements an $lang->custom->scrum = new stdclass(); $lang->custom->scrum->setConcept = 'Set concept'; -$lang->custom->scrum->URAndSR = 'Is it going to be epic?'; -$lang->custom->scrum->URSRName = 'A conceptual definition of requirements?'; $lang->custom->URList[1] = 'User Requirement'; $lang->custom->URList[2] = 'UR'; @@ -246,8 +244,3 @@ $lang->custom->URSRList[4] = 'Epic/Story'; $lang->custom->URTips = 'Type like:Requirement'; $lang->custom->SRTips = 'Type like:Story'; - -$lang->custom->waterfallOptions = new stdclass(); -$lang->custom->waterfallOptions->URAndSR = array(); -$lang->custom->waterfallOptions->URAndSR[0] = 'No'; -$lang->custom->waterfallOptions->URAndSR[1] = 'Yes'; diff --git a/module/custom/lang/vi.php b/module/custom/lang/vi.php index dd2d8ea38e..266c8d91e1 100644 --- a/module/custom/lang/vi.php +++ b/module/custom/lang/vi.php @@ -40,7 +40,7 @@ $lang->custom->SRStory = "Software requirements"; $lang->custom->epic = "Epic"; $lang->custom->scrumStory = "Story"; $lang->custom->waterfallCommon = "Waterfall"; -$lang->custom->configureWaterfall = "Waterfall Configure"; +$lang->custom->setStoryConcept = "Set Story Concept"; $lang->custom->configureScrum = "Scrum Configure"; $lang->custom->object['program'] = 'Program'; @@ -226,8 +226,6 @@ $lang->custom->waterfall->URSRName = 'A conceptual definition of requirements an $lang->custom->scrum = new stdclass(); $lang->custom->scrum->setConcept = 'Set concept'; -$lang->custom->scrum->URAndSR = 'Is it going to be epic?'; -$lang->custom->scrum->URSRName = 'A conceptual definition of requirements?'; $lang->custom->URList[1] = 'User Requirement'; $lang->custom->URList[2] = 'UR'; @@ -246,8 +244,3 @@ $lang->custom->URSRList[4] = 'Epic/Story'; $lang->custom->URTips = 'Type like:Requirement'; $lang->custom->SRTips = 'Type like:Story'; - -$lang->custom->waterfallOptions = new stdclass(); -$lang->custom->waterfallOptions->URAndSR = array(); -$lang->custom->waterfallOptions->URAndSR[0] = 'No'; -$lang->custom->waterfallOptions->URAndSR[1] = 'Yes'; diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php index 18724ec521..6d2eb19641 100644 --- a/module/custom/lang/zh-cn.php +++ b/module/custom/lang/zh-cn.php @@ -34,14 +34,14 @@ $lang->custom->region = '区间'; $lang->custom->tips = '提示语'; $lang->custom->setTips = '设置提示语'; $lang->custom->isRange = '是否目标控制范围'; -$lang->custom->concept = "概念"; +$lang->custom->concept = "项目概念"; $lang->custom->URStory = "用户需求"; $lang->custom->SRStory = "软件需求"; $lang->custom->epic = "史诗"; $lang->custom->scrumStory = "故事"; $lang->custom->waterfallCommon = "瀑布"; -$lang->custom->configureWaterfall = "瀑布自定义"; -$lang->custom->configureScrum = "敏捷自定义"; +$lang->custom->setStoryConcept = "设置需求概念"; +$lang->custom->configureScrum = "敏捷模型自定义"; $lang->custom->object['program'] = '项目'; $lang->custom->program->fields['unitList'] = '预算单位'; @@ -221,7 +221,6 @@ $lang->custom->conceptOptions->hourPoint['1'] = '功能点'; $lang->custom->conceptOptions->hourPoint['2'] = '代码行'; $lang->custom->waterfall = new stdclass(); -$lang->custom->waterfall->URAndSR = '是否启用用户需求概念'; $lang->custom->waterfall->URSRName = '默认需求概念组合'; $lang->custom->scrum = new stdclass(); @@ -244,8 +243,3 @@ $lang->custom->URSRList[4] = '史诗/故事'; $lang->custom->URTips = '请输入如:用户需求'; $lang->custom->SRTips = '请输入如:软件需求'; - -$lang->custom->waterfallOptions = new stdclass(); -$lang->custom->waterfallOptions->URAndSR = array(); -$lang->custom->waterfallOptions->URAndSR[0] = '否'; -$lang->custom->waterfallOptions->URAndSR[1] = '是'; diff --git a/module/custom/model.php b/module/custom/model.php index a7147dd0d1..175629835e 100644 --- a/module/custom/model.php +++ b/module/custom/model.php @@ -361,25 +361,6 @@ class customModel extends model return $allMenu ? self::setMenuByConfig($allMenu, $customMenu) : null; } - /** - * Get system mode switcher. - * @param string $module - * @param string $method - * @access public - * @return array - */ - public function getModeSwitcher() - { - $current = (isset($_COOKIE['systemModel']) and $_COOKIE['systemModel'] == 'scrum') ? 'Scrum' : $this->lang->custom->waterfallCommon; - $link = (isset($_COOKIE['systemModel']) and $_COOKIE['systemModel'] == 'scrum') ? html::a(helper::createLink('custom', 'setwaterfall'), $this->lang->custom->waterfallCommon) : html::a(helper::createLink('custom', 'setscrum'), 'Scrum'); - - $output = "
"; - $output .= ""; - $output .= "
"; - - return $output; - } - /** * Merge shortcut query in featureBar. * @@ -601,7 +582,7 @@ class customModel extends model if(!$data->URName || !$data->SRName) return false; $newKey = max(array_keys($this->lang->custom->URSRList)) + 1; - $URSRName = $data->URName . '/' . $data->SRName; + $URSRName = $data->URName . '/' . $data->SRName; /* Delete old lang data, and add new. */ $this->lang->custom->URSRList[$newKey] = $URSRName; diff --git a/module/custom/view/configurescrum.html.php b/module/custom/view/configurescrum.html.php index c6cef2f28a..d8639ad710 100644 --- a/module/custom/view/configurescrum.html.php +++ b/module/custom/view/configurescrum.html.php @@ -24,18 +24,6 @@ custom->productProject->relation, zget($this->config->custom, 'productProject', '0_0'))?> - - config->custom, 'URAndSR', 0) == 0 ? 'hidden' : '';?> - - custom->waterfall->URSRName;?> - custom->URSRList, zget($config->custom, 'URSRName', 1), "class='form-control chosen'");?> - custom->common, "class='form-control'");?> - - - - custom->URTips}");?> - custom->SRTips}");?> - diff --git a/module/custom/view/configurewaterfall.html.php b/module/custom/view/setstoryconcept.html.php similarity index 81% rename from module/custom/view/configurewaterfall.html.php rename to module/custom/view/setstoryconcept.html.php index c6ee935fbe..26ae333e64 100644 --- a/module/custom/view/configurewaterfall.html.php +++ b/module/custom/view/setstoryconcept.html.php @@ -1,18 +1,18 @@ * @package ZenTaoPMS - * @version $Id: configurewaterfall.html.php 4129 2020-09-01 01:58:14Z sgm $ + * @version $Id: setstoryconcept.html.php 4129 2020-09-01 01:58:14Z sgm $ */ ?>
@@ -24,7 +24,7 @@ custom->waterfall->URSRName;?> custom->URSRList, zget($config->custom, 'URSRName', 1), "class='form-control chosen'");?> custom->common, "class='form-control'");?> - + diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index b9e09122dc..11b3c86048 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1146,20 +1146,18 @@ $lang->holiday->methodOrder[20] = 'delete'; /* Custom. */ $lang->resource->custom = new stdclass(); -$lang->resource->custom->index = 'index'; -$lang->resource->custom->set = 'set'; -$lang->resource->custom->project = 'project'; -$lang->resource->custom->product = 'product'; -$lang->resource->custom->restore = 'restore'; -$lang->resource->custom->flow = 'flow'; -$lang->resource->custom->working = 'working'; -$lang->resource->custom->setPublic = 'setPublic'; -$lang->resource->custom->timezone = 'timezone'; -$lang->resource->custom->estimate = 'estimate'; -$lang->resource->custom->configureWaterfall = 'configureWaterfall'; -$lang->resource->custom->configureScrum = 'configureScrum'; -$lang->resource->custom->setWaterfall = 'setWaterfall'; -$lang->resource->custom->setscrum = 'setscrum'; +$lang->resource->custom->index = 'index'; +$lang->resource->custom->set = 'set'; +$lang->resource->custom->project = 'project'; +$lang->resource->custom->product = 'product'; +$lang->resource->custom->restore = 'restore'; +$lang->resource->custom->flow = 'flow'; +$lang->resource->custom->working = 'working'; +$lang->resource->custom->setPublic = 'setPublic'; +$lang->resource->custom->timezone = 'timezone'; +$lang->resource->custom->estimate = 'estimate'; +$lang->resource->custom->setStoryContcept = 'setStoryContcept'; +$lang->resource->custom->configureScrum = 'configureScrum'; $lang->custom->methodOrder[5] = 'index'; $lang->custom->methodOrder[10] = 'set'; @@ -1171,10 +1169,8 @@ $lang->custom->methodOrder[35] = 'working'; $lang->custom->methodOrder[40] = 'setPublic'; $lang->custom->methodOrder[45] = 'timezone'; $lang->custom->methodOrder[50] = 'estimate'; -$lang->custom->methodOrder[55] = 'configureWaterfall'; +$lang->custom->methodOrder[55] = 'setStoryContcept'; $lang->custom->methodOrder[60] = 'configureScrum'; -$lang->custom->methodOrder[65] = 'setWaterfall'; -$lang->custom->methodOrder[70] = 'setscrum'; $lang->resource->datatable = new stdclass(); $lang->resource->datatable->setGlobal = 'setGlobal'; diff --git a/module/program/model.php b/module/program/model.php index 5482fbb1a1..220559f8cc 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -363,7 +363,7 @@ class programModel extends model while($program = $stmt->fetch()) { - $link = $from == 'program' ? helper::createLink('program', 'pgmproject', "programID=$program->id") : helper::createLink('product', 'all', "programID=$program->id" . $vars); + $link = $from == 'program' ? helper::createLink('program', 'pgmproduct', "programID=$program->id") : helper::createLink('product', 'all', "programID=$program->id" . $vars); $linkHtml = html::a($link, " " . $program->name, '', "id='program$program->id' class='text-ellipsis' title=$program->name"); if(isset($programMenu[$program->id]) and !empty($programMenu[$program->id]))