diff --git a/module/product/ui/all.html.php b/module/product/ui/all.html.php
index 78af2f5aef..79a0de2a3e 100644
--- a/module/product/ui/all.html.php
+++ b/module/product/ui/all.html.php
@@ -47,27 +47,47 @@ foreach($productStats as $productID => $product)
$data[] = $item;
}
-$programMenuLink = createLink(
- $this->app->rawModule,
- $this->app->rawMethod,
- array(
- 'browseType' => $browseType == 'bySearch' ? 'noclosed' : $browseType,
- 'orderBy' => $orderBy,
- 'param' => $browseType == 'bySearch' ? 0 : $param,
- 'recTotal' => $recTotal,
- 'recPerPage' => $recPerPage,
- 'pageID' => $pageID,
- 'programID' => '%d'
- )
-);
-$programs = array_map(function($program)
+/* Closure function for generate program menu. */
+$fnGenerateProgramMenu = function($programList) use($lang, $programID, $browseType, $orderBy, $param, $recTotal, $recPerPage, $pageID)
{
- $program->icon = 'icon-cards-view';
- return $program;
-}, $programList);
+ $programMenuLink = createLink(
+ $this->app->rawModule,
+ $this->app->rawMethod,
+ array(
+ 'browseType' => $browseType == 'bySearch' ? 'noclosed' : $browseType,
+ 'orderBy' => $orderBy,
+ 'param' => $browseType == 'bySearch' ? 0 : $param,
+ 'recTotal' => $recTotal,
+ 'recPerPage' => $recPerPage,
+ 'pageID' => $pageID,
+ 'programID' => '%d'
+ )
+ );
+
+ /* Attach icon to each program. */
+ $programs = array_map(function($program)
+ {
+ $program->icon = 'icon-cards-view';
+ return $program;
+ }, $programList);
+
+ return programMenu
+ (
+ setStyle(array('margin-right' => '20px')),
+ set(array
+ (
+ 'title' => $lang->program->all,
+ 'programs' => $programs,
+ 'activeKey' => !empty($programList) ? $programID : null,
+ 'closeLink' => sprintf($programMenuLink, 0),
+ 'onClickItem' => jsRaw("function(data){window.programMenuOnClick(data, '$programMenuLink');}")
+ ))
+ );
+};
featureBar
(
+ to::before($fnGenerateProgramMenu($programList)),
set::link(createLink
(
$this->app->rawModule,
@@ -83,21 +103,6 @@ featureBar
'programID' => $programID
)
)),
- to::before
- (
- programMenu
- (
- setStyle(array('margin-right' => '20px')),
- set(array
- (
- 'title' => $lang->program->all,
- 'programs' => $programs,
- 'activeKey' => !empty($programList) ? $programID : null,
- 'closeLink' => sprintf($programMenuLink, 0),
- 'onClickItem' => jsRaw("function(data){window.programMenuOnClick(data, '$programMenuLink');}")
- ))
- )
- ),
hasPriv('product', 'batchEdit') ? item
(
set::type('checkbox'),