@@ -63,6 +63,14 @@ class ManageBrick extends PortalBrick
63
63
const DEFAULT_DATA_LOADING = self ::ENUM_DATA_LOADING_LAZY ;
64
64
const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-default.html.twig ' ;
65
65
const DEFAULT_TILE_CONTROLLER_ACTION = 'Combodo \\iTop \\Portal \\Controller \\ManageBrickController::TileAction ' ;
66
+ const DEFAULT_LAYOUT_CHART_TEMPLATE_PATH = self ::ENUM_PAGE_TEMPLATE_PATH_CHART ;
67
+ const DEFAULT_LAYOUT_TABLE_TEMPLATE_PATH = self ::ENUM_PAGE_TEMPLATE_PATH_TABLE ;
68
+ const DEFAULT_LAYOUT_BADGE_TEMPLATE_PATH = self ::ENUM_PAGE_TEMPLATE_PATH_TABLE ;
69
+ const DEFAULT_TILE_CHART_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-chart.html.twig ' ;
70
+ const DEFAULT_TILE_TOP_LIST_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-top-list.html.twig ' ;
71
+ const DEFAULT_TILE_BADGE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-badge.html.twig ' ;
72
+ const DEFAULT_TILE_DEFAULT_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-default.html.twig ' ;
73
+ const DEFAULT_POPUP_EXPORT_EXCEL_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/popup-export-excel.html.twig ' ;
66
74
67
75
/** @var string DEFAULT_OQL */
68
76
const DEFAULT_OQL = '' ;
@@ -83,6 +91,19 @@ class ManageBrick extends PortalBrick
83
91
/** @var bool DEFAULT_GROUP_SHOW_OTHERS */
84
92
const DEFAULT_GROUP_SHOW_OTHERS = true ;
85
93
94
+ protected static $ DEFAULT_TEMPLATES_PATH = [
95
+ 'page ' => self ::DEFAULT_PAGE_TEMPLATE_PATH ,
96
+ 'tile ' => self ::DEFAULT_TILE_TEMPLATE_PATH ,
97
+ 'layout-chart ' => self ::DEFAULT_LAYOUT_CHART_TEMPLATE_PATH ,
98
+ 'layout-table ' => self ::DEFAULT_LAYOUT_TABLE_TEMPLATE_PATH ,
99
+ 'layout-badge ' => self ::DEFAULT_LAYOUT_BADGE_TEMPLATE_PATH ,
100
+ 'tile-chart ' => self ::DEFAULT_TILE_CHART_TEMPLATE_PATH ,
101
+ 'tile-top-list ' => self ::DEFAULT_TILE_TOP_LIST_TEMPLATE_PATH ,
102
+ 'tile-badge ' => self ::DEFAULT_TILE_BADGE_TEMPLATE_PATH ,
103
+ 'tile-default ' => self ::DEFAULT_TILE_DEFAULT_TEMPLATE_PATH ,
104
+ 'popup-export-excel ' => self ::DEFAULT_POPUP_EXPORT_EXCEL_TEMPLATE_PATH ,
105
+ ];
106
+
86
107
/** @var array $aDisplayModes */
87
108
static $ aDisplayModes = array (
88
109
self ::ENUM_DISPLAY_MODE_LIST ,
@@ -97,44 +118,13 @@ class ManageBrick extends PortalBrick
97
118
self ::ENUM_TILE_MODE_BAR ,
98
119
self ::ENUM_TILE_MODE_TOP ,
99
120
);
121
+ /** Initialized in its getter as we need DEFAULT_TEMPLATE static values to be accessible */
122
+ /** @var array $aDefaultPresentationData */
123
+ private static $ aDefaultPresentationData = [];
124
+
125
+ /** Specific data for the current brick, including brick definition overloads */
100
126
/** @var array $aPresentationData */
101
- public static $ aPresentationData = array (
102
- self ::ENUM_TILE_MODE_BADGE => array (
103
- 'decorationCssClass ' => 'fas fa-id-card fa-2x ' ,
104
- 'tileTemplate ' => 'itop-portal-base/portal/templates/bricks/manage/tile-badge.html.twig ' ,
105
- 'layoutTemplate ' => self ::ENUM_PAGE_TEMPLATE_PATH_TABLE ,
106
- 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
107
- 'need_details ' => true ,
108
- ),
109
- self ::ENUM_TILE_MODE_TOP => array (
110
- 'decorationCssClass ' => 'fas fa-signal fa-rotate-270 fa-2x ' ,
111
- 'tileTemplate ' => 'itop-portal-base/portal/templates/bricks/manage/tile-top-list.html.twig ' ,
112
- 'layoutTemplate ' => self ::ENUM_PAGE_TEMPLATE_PATH_TABLE ,
113
- 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
114
- 'need_details ' => true ,
115
- ),
116
- self ::ENUM_TILE_MODE_PIE => array (
117
- 'decorationCssClass ' => 'fas fa-chart-pie fa-2x ' ,
118
- 'tileTemplate ' => 'itop-portal-base/portal/templates/bricks/manage/tile-chart.html.twig ' ,
119
- 'layoutTemplate ' => self ::ENUM_PAGE_TEMPLATE_PATH_CHART ,
120
- 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_PIE ,
121
- 'need_details ' => false ,
122
- ),
123
- self ::ENUM_TILE_MODE_BAR => array (
124
- 'decorationCssClass ' => 'fas fa-chart-bar fa-2x ' ,
125
- 'tileTemplate ' => 'itop-portal-base/portal/templates/bricks/manage/tile-chart.html.twig ' ,
126
- 'layoutTemplate ' => self ::ENUM_PAGE_TEMPLATE_PATH_CHART ,
127
- 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_BAR ,
128
- 'need_details ' => false ,
129
- ),
130
- self ::ENUM_TILE_MODE_TEXT => array (
131
- 'decorationCssClass ' => 'fas fa-pen-square fa-2x ' ,
132
- 'tileTemplate ' => self ::DEFAULT_TILE_TEMPLATE_PATH ,
133
- 'layoutTemplate ' => self ::ENUM_PAGE_TEMPLATE_PATH_TABLE ,
134
- 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
135
- 'need_details ' => true ,
136
- ),
137
- );
127
+ public $ aPresentationData = [];
138
128
139
129
// Overloaded variables
140
130
public static $ sRouteName = 'p_manage_brick ' ;
@@ -163,6 +153,8 @@ class ManageBrick extends PortalBrick
163
153
protected $ bGroupShowOthers ;
164
154
/** @var int $iDefaultListLength */
165
155
protected $ iDefaultListLength ;
156
+ /** @var string $sPopupExportExcelTemplatePath */
157
+ protected $ sPopupExportExcelTemplatePath ;
166
158
167
159
/**
168
160
* Returns true if the $sDisplayMode need objects details for rendering.
@@ -174,7 +166,7 @@ class ManageBrick extends PortalBrick
174
166
static public function AreDetailsNeededForDisplayMode ($ sDisplayMode )
175
167
{
176
168
$ bNeedDetails = false ;
177
- foreach (static ::$ aPresentationData as $ aData )
169
+ foreach (static ::GetDefaultPresentationData () as $ aData )
178
170
{
179
171
if ($ aData ['layoutDisplayMode ' ] === $ sDisplayMode )
180
172
{
@@ -195,8 +187,8 @@ static public function AreDetailsNeededForDisplayMode($sDisplayMode)
195
187
*/
196
188
static public function GetPageTemplateFromDisplayMode ($ sDisplayMode )
197
189
{
198
- $ sTemplate = static ::DEFAULT_PAGE_TEMPLATE_PATH ;
199
- foreach (static ::$ aPresentationData as $ aData )
190
+ $ sTemplate = static ::$ DEFAULT_TEMPLATES_PATH [ ' page ' ] ;
191
+ foreach (static ::GetDefaultPresentationData () as $ aData )
200
192
{
201
193
if ($ aData ['layoutDisplayMode ' ] === $ sDisplayMode )
202
194
{
@@ -227,6 +219,7 @@ public function __construct()
227
219
$ this ->iGroupLimit = static ::DEFAULT_GROUP_LIMIT ;
228
220
$ this ->bGroupShowOthers = static ::DEFAULT_GROUP_SHOW_OTHERS ;
229
221
$ this ->iDefaultListLength = static ::DEFAULT_LIST_LENGTH ;
222
+ $ this ->sPopupExportExcelTemplatePath = static ::$ DEFAULT_TEMPLATES_PATH ['popup-export-excel ' ];
230
223
231
224
// This is hardcoded for now, we might allow area grouping on another attribute in the future
232
225
$ this ->AddGrouping ('areas ' , array ('attribute ' => 'finalclass ' ));
@@ -328,7 +321,7 @@ public function GetTileMode()
328
321
329
322
public function GetDecorationCssClass ()
330
323
{
331
- return static ::$ aPresentationData [$ this ->sTileMode ]['decorationCssClass ' ];
324
+ return static ::GetDefaultPresentationData () [$ this ->sTileMode ]['decorationCssClass ' ];
332
325
}
333
326
/**
334
327
* Sets the tile mode (display)
@@ -344,19 +337,65 @@ public function SetTileMode($sTileMode)
344
337
return $ this ;
345
338
}
346
339
340
+ public static function GetDefaultPresentationData ()
341
+ {
342
+ /** If the table isn't initialized yet, do it now */
343
+ if (count (static ::$ aDefaultPresentationData ) === 0 ) {
344
+ static ::$ aDefaultPresentationData = array (
345
+ self ::ENUM_TILE_MODE_BADGE => array (
346
+ 'decorationCssClass ' => 'fas fa-id-card fa-2x ' ,
347
+ 'tileTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['tile-badge ' ],
348
+ 'layoutTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['layout-table ' ],
349
+ 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
350
+ 'need_details ' => true ,
351
+ ),
352
+ self ::ENUM_TILE_MODE_TOP => array (
353
+ 'decorationCssClass ' => 'fas fa-signal fa-rotate-270 fa-2x ' ,
354
+ 'tileTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['tile-top-list ' ],
355
+ 'layoutTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['layout-table ' ],
356
+ 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
357
+ 'need_details ' => true ,
358
+ ),
359
+ self ::ENUM_TILE_MODE_PIE => array (
360
+ 'decorationCssClass ' => 'fas fa-chart-pie fa-2x ' ,
361
+ 'tileTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['tile-chart ' ],
362
+ 'layoutTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['layout-chart ' ],
363
+ 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_PIE ,
364
+ 'need_details ' => false ,
365
+ ),
366
+ self ::ENUM_TILE_MODE_BAR => array (
367
+ 'decorationCssClass ' => 'fas fa-chart-bar fa-2x ' ,
368
+ 'tileTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['tile-chart ' ],
369
+ 'layoutTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['layout-chart ' ],
370
+ 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_BAR ,
371
+ 'need_details ' => false ,
372
+ ),
373
+ self ::ENUM_TILE_MODE_TEXT => array (
374
+ 'decorationCssClass ' => 'fas fa-pen-square fa-2x ' ,
375
+ 'tileTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['tile-default ' ],
376
+ 'layoutTemplate ' => static ::$ DEFAULT_TEMPLATES_PATH ['layout-table ' ],
377
+ 'layoutDisplayMode ' => self ::ENUM_DISPLAY_MODE_LIST ,
378
+ 'need_details ' => true ,
379
+ ),
380
+ );
381
+ }
382
+
383
+ return static ::$ aDefaultPresentationData ;
384
+ }
385
+
347
386
/**
348
387
* @param string $sTileMode
349
388
*
350
389
* @return string[] parameters for specified type, default parameters if type is invalid
351
390
*/
352
391
public function GetPresentationDataForTileMode ($ sTileMode )
353
392
{
354
- if (isset (static ::$ aPresentationData [$ sTileMode ]))
393
+ if (isset (static ::GetDefaultPresentationData () [$ sTileMode ]))
355
394
{
356
- return static ::$ aPresentationData [$ sTileMode ];
395
+ return static ::GetDefaultPresentationData () [$ sTileMode ];
357
396
}
358
397
359
- return static ::$ aPresentationData [static ::DEFAULT_TILE_MODE ];
398
+ return static ::GetDefaultPresentationData () [static ::DEFAULT_TILE_MODE ];
360
399
}
361
400
362
401
/**
@@ -467,6 +506,15 @@ public function SetDefaultListLength($iDefaultListLength) {
467
506
return $ this ;
468
507
}
469
508
509
+ public function GetPopupExportExcelTemplatePath () {
510
+ return $ this ->sPopupExportExcelTemplatePath ;
511
+ }
512
+
513
+ public function SetPopupExportExcelTemplatePath ($ sPopupExportExcelTemplatePath ) {
514
+ $ this ->sPopupExportExcelTemplatePath = $ sPopupExportExcelTemplatePath ;
515
+ return $ this ;
516
+ }
517
+
470
518
/**
471
519
* Adds a grouping.
472
520
*
@@ -965,10 +1013,10 @@ public function LoadFromXml(DesignElement $oMDElement)
965
1013
966
1014
// Checking the navigation icon
967
1015
$ sDecorationClassNavigationMenu = $ this ->GetDecorationClassNavigationMenu ();
968
- if (empty ($ sDecorationClassNavigationMenu ) && isset (static ::$ aPresentationData [$ this ->sTileMode ]))
1016
+ if (empty ($ sDecorationClassNavigationMenu ) && isset (static ::GetDefaultPresentationData () [$ this ->sTileMode ]))
969
1017
{
970
1018
/** @var string $sDecorationClassNavigationMenu */
971
- $ sDecorationClassNavigationMenu = static ::$ aPresentationData [$ this ->sTileMode ]['decorationCssClass ' ];
1019
+ $ sDecorationClassNavigationMenu = static ::GetDefaultPresentationData () [$ this ->sTileMode ]['decorationCssClass ' ];
972
1020
if (!empty ($ sDecorationClassNavigationMenu ))
973
1021
{
974
1022
$ this ->SetDecorationClassNavigationMenu ($ sDecorationClassNavigationMenu );
0 commit comments