6
* @author Gyger Jean-Luc
10
Yii::import('zii.widgets.CMenu');
14
protected $items = array();
16
public function addMenuItem(MenuItem $item) {
17
$this->items[] = $item;
20
public function render() {
23
foreach($this->items as $item) {
24
if($item->countVisible() > 0)
25
$html .= $item->render();
35
protected $isVisible = true;
39
protected $subItems = array();
41
function __construct( $icon, $title, $link, $visible=true) {
43
$this->title = $title;
45
$this->isVisible = $visible;
48
public function countVisible($index = 0, $countNextSplit=true) {
51
for($i=$index; $i<count($this->subItems); $i++) {
52
if($this->subItems[$i] != ',_cmSplit') {
53
if($this->subItems[$i]->isVisible)
63
public function addMenuItem(MenuItem $item) {
64
$this->subItems[] = $item;
67
public function setVisible($flag) {
68
$this->isVisible = $flag;
71
public function addSplit($access = true) {
73
$this->subItems[] = ',_cmSplit';
76
public function render() {
77
if(!$this->isVisible) return '';
80
$html .= $this->icon.",";
81
$html .= "'".addslashes($this->title)."',";
82
$html .= "'".$this->link."',";
83
$html .= "'_self',null";
86
for($i=0; $i < count($this->subItems); $i++) {
87
if($this->subItems[$i] == ',_cmSplit') {
88
if($this->countVisible($i+2, false)>0) {
89
$html .= $this->subItems[$i];
93
$html .= $this->subItems[$i]->render();
105
class HoruxMenu extends CMenu {
106
protected $systemMenuCount = 0;
107
protected $accessMenuCount = 0;
108
protected $componentMenuCount = 0;
109
protected $extensionMenuCount = 0;
110
protected $toolMenuCount = 0;
115
$this->render('ViewHoruxMenu');
118
public function generateMenu() {
121
/******************************************
124
$horux = new MenuItem('null', 'Horux', '#');
126
$horux->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-controlPanel.png\" />'",
127
Yii::t("app",'Control Panel',array(), "messages"),
128
('controlPanel.ControlPanel'),
134
$horux->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-superUser.png\" />'",
135
Yii::t("app",'Super User',array(), "messages"),
136
('superuser.userList'),
137
Yii::app()->controller->isAccess('superuser.userList')
139
$horux->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-superGroupUser.png\" />'",
140
Yii::t("app",'Super User Group',array(), "messages"),
141
('superuser.userGroupList'),
142
Yii::app()->controller->isAccess('superuser.userGroupList')
146
$horux->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-configure.png\" />'",
147
Yii::t("app",'Configuration',array(), "messages"),
148
('configuration.config'),
149
Yii::app()->controller->isAccess('configuration.config')
152
/******************************************
155
$system = new MenuItem('null', Yii::t("app",'System',array(), "messages"), '#');
157
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-site.png\" />'",
158
Yii::t("app",'Site',array(), "messages"),
160
Yii::app()->controller->isAccess('site.Site')
162
if(Yii::app()->controller->isAccess('site.Site'))
163
$this->systemMenuCount++;
165
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-department.png\" />'",
166
Yii::t("app",'Department',array(), "messages"),
168
Yii::app()->controller->isAccess('site.department')
170
if(Yii::app()->controller->isAccess('site.department'))
171
$this->systemMenuCount++;
176
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-horuxcontroller.png\" />'",
177
Yii::t("app",'Horux Controller',array(), "messages"),
178
('horuxController.horuxController'),
179
Yii::app()->controller->isAccess('horuxController.horuxController')
181
if(Yii::app()->controller->isAccess('horuxController.horuxController'))
182
$this->systemMenuCount++;
185
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-hardware.png\" />'",
186
Yii::t("app",'Hardware',array(), "messages"),
187
('hardware.HardwareList'),
188
Yii::app()->controller->isAccess('hardware.HardwareList')
190
if(Yii::app()->controller->isAccess('hardware.HardwareList'))
191
$this->systemMenuCount++;
193
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-openLevel.png\" />'",
194
Yii::t("app",'Open time',array(), "messages"),
195
('openTime.openTimeList'),
196
Yii::app()->controller->isAccess('openTime.openTimeList')
198
if(Yii::app()->controller->isAccess('openTime.openTimeList'))
199
$this->systemMenuCount++;
204
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-notification.png\" />'",
205
Yii::t("app",'Notification',array(), "messages"),
206
('system.Notification'),
207
Yii::app()->controller->isAccess('system.Notification')
209
if(Yii::app()->controller->isAccess('system.Notification'))
210
$this->systemMenuCount++;
213
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-alarm.png\" />'",
214
Yii::t("app",'Alarms',array(), "messages"),
216
Yii::app()->controller->isAccess('system.Alarms')
218
if(Yii::app()->controller->isAccess('system.Alarms'))
219
$this->systemMenuCount++;
223
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-service.png\" />'",
224
Yii::t("app",'Horux Service',array(), "messages"),
226
Yii::app()->controller->isAccess('system.Service')
228
if(Yii::app()->controller->isAccess('system.Service'))
229
$this->systemMenuCount++;
232
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-standalone.png\" />'",
233
Yii::t("app",'Standalone',array(), "messages"),
234
('system.Standalone'),
235
Yii::app()->controller->isAccess('system.Standalone')
237
if(Yii::app()->controller->isAccess('system.Standalone'))
238
$this->systemMenuCount++;
241
$system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-systemStatus.png\" />'",
242
Yii::t("app",'System Status',array(), "messages"),
244
Yii::app()->controller->isAccess('system.Status')
246
if(Yii::app()->controller->isAccess('system.Status'))
247
$this->systemMenuCount++;
250
/******************************************
253
$access = new MenuItem('null', Yii::t("app",'Access',array(), "messages"), '#');
255
$access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-user2.png\" />'",
256
Yii::t("app",'User',array(), "messages"),
258
Yii::app()->controller->isAccess('user.UserList')
261
if(Yii::app()->controller->isAccess('user.UserList'))
262
$this->accessMenuCount++;
264
$access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-userGroup.png\" />'",
265
Yii::t("app",'User group',array(), "messages"),
266
('userGroup.UserGroupList'),
267
Yii::app()->controller->isAccess('userGroup.UserGroupList')
269
if(Yii::app()->controller->isAccess('userGroup.UserGroupList'))
270
$this->accessMenuCount++;
275
$access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-key.png\" />'",
276
Yii::t("app",'Key',array(), "messages"),
278
Yii::app()->controller->isAccess('key.KeyList')
281
if(Yii::app()->controller->isAccess('key.KeyList'))
282
$this->accessMenuCount++;
286
$access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-accessLevel.png\" />'",
287
Yii::t("app",'Access Level',array(), "messages"),
288
('accessLevel.accessLevelList'),
289
Yii::app()->controller->isAccess('accessLevel.accessLevelList')
291
if(Yii::app()->controller->isAccess('accessLevel.accessLevelList'))
292
$this->accessMenuCount++;
295
$access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-nonWorkingDay.png\" />'",
296
Yii::t("app",'Non Working Days',array(), "messages"),
297
('nonWorkingDay.nonWorkingDay'),
298
Yii::app()->controller->isAccess('nonWorkingDay.nonWorkingDay')
300
if(Yii::app()->controller->isAccess('nonWorkingDay.nonWorkingDay'))
301
$this->accessMenuCount++;
304
/******************************************
307
$componnents = new MenuItem('null', Yii::t("app",'Components',array(), "messages"), '#');
309
/*$db = $this->Application->getModule('horuxDb')->DbConnection;
311
if(!$db) return $menu->render();
315
$cmd=$db->createCommand("SELECT * FROM hr_install WHERE type='component'");
316
$data = $cmd->query();
317
$data = $data->readAll();
319
foreach($data as $d) {
320
$cmd=$db->createCommand("SELECT * FROM hr_install AS i LEFT JOIN hr_component as c ON c.id_install=i.id WHERE i.type='component' AND c.parentmenu=0 AND i.id=".$d['id']);
321
$data2 = $cmd->query();
322
$data2 = $data2->read();
324
$asset = $this->Application->getAssetManager();
325
$url = $asset->publishFilePath('./protected/pages/components/'.$d['name'].'/assets/'.$data2['iconmenu']);
326
$item = new MenuItem("'<img src=\"".$url."\" />'",
327
Yii::t("app",$data2['menuname'],array(), $d['name']),
329
Yii::app()->controller->isAccess($data2['page'])
332
if(Yii::app()->controller->isAccess($data2['page']))
333
$this->componentMenuCount++;
335
$cmd=$db->createCommand("SELECT * FROM hr_install AS i LEFT JOIN hr_component as c ON c.id_install=i.id WHERE i.type='component' AND c.parentmenu=".$data2['id']." AND c.parentmenu>0 AND i.id=".$d['id']);
336
$data2 = $cmd->query();
337
$data2 = $data2->readAll();
339
foreach($data2 as $d2) {
340
$asset = $this->Application->getAssetManager();
341
$url = $asset->publishFilePath('./protected/pages/components/'.$d2['name'].'/assets/'.$d2['iconmenu']);
343
$item->addMenuItem(new MenuItem("'<img src=\"".$url."\" />'",
344
Yii::t("app",$d2['menuname'],array(), $d['name']),
346
Yii::app()->controller->isAccess($d2['page'])));
349
$componnents->addMenuItem($item);
352
/******************************************
355
$extensions = new MenuItem('null', Yii::t("app",'Extensions',array(), "messages"), '#');
356
$extensions->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-install.png\" />'",
357
Yii::t("app",'Install/Uninstal',array(), "messages"),
358
('installation.extensions'),
359
Yii::app()->controller->isAccess('installation.extensions')
362
if(Yii::app()->controller->isAccess('installation.extensions')) {
363
$this->extensionMenuCount++;
364
$extensions->addSplit();
368
$extensions->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-hardware.png\" />'",
369
Yii::t("app",'Devices Manager',array(), "messages"),
370
('installation.devices'),
371
Yii::app()->controller->isAccess('installation.devices')
373
if(Yii::app()->controller->isAccess('installation.devices'))
374
$this->extensionMenuCount++;
376
$extensions->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-component.png\" />'",
377
Yii::t("app",'Component Manager',array(), "messages"),
378
('installation.components'),
379
Yii::app()->controller->isAccess('installation.components')
381
if(Yii::app()->controller->isAccess('installation.components'))
382
$this->extensionMenuCount++;
385
$extensions->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-themes.png\" />'",
386
Yii::t("app",'Template Manager',array(), "messages"),
387
('installation.template'),
388
Yii::app()->controller->isAccess('installation.template')
390
if(Yii::app()->controller->isAccess('installation.template'))
391
$this->extensionMenuCount++;
394
$extensions->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-language.png\" />'",
395
Yii::t("app",'Language Manager',array(), "messages"),
396
('installation.language'),
397
Yii::app()->controller->isAccess('installation.language')
399
if(Yii::app()->controller->isAccess('installation.language'))
400
$this->extensionMenuCount++;
403
/******************************************
406
$tools = new MenuItem('null', Yii::t("app",'Tools',array(), "messages"), '#');
408
$tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-globalCheckin.png\" />'",
409
Yii::t("app",'Gloal Check-in',array(), "messages"),
410
('tool.GlobalCheckin'),
411
Yii::app()->controller->isAccess('tool.GlobalCheckin')
414
if(Yii::app()->controller->isAccess('tool.GlobalCheckin'))
415
$this->toolMenuCount++;
417
$tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-guilog.png\" />'",
418
Yii::t("app",'Horux Web Client log',array(), "messages"),
420
Yii::app()->controller->isAccess('tool.GuiLog')
423
$tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-update.png\" />'",
424
Yii::t("app",'Horux Update',array(), "messages"),
426
Yii::app()->controller->isAccess('update.Update')
430
if(Yii::app()->controller->isAccess('tool.GuiLog'))
431
$this->toolMenuCount++;
437
$tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-recycling.png\" />'",
438
Yii::t("app",'Recycling a Key',array(), "messages"),
440
Yii::app()->controller->isAccess('key.recycling')
443
if(Yii::app()->controller->isAccess('key.recycling'))
444
$this->toolMenuCount++;
447
/******************************************
450
$help = new MenuItem('null', Yii::t("app",'Info',array(), "messages"), '#');
451
$help->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-help.png\" />'",
452
Yii::t("app",'Horux About',array(), "messages"),
454
/*Yii::app()->controller->isAccess('help.About')*/1
459
$help->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-systemInfo.png\" />'",
460
Yii::t("app",'System Info',array(), "messages"),
462
Yii::app()->controller->isAccess('help.SystemInfo')
467
$menu->addMenuItem($horux);
468
$menu->addMenuItem($system);
469
$menu->addMenuItem($access);
470
$menu->addMenuItem($componnents);
471
$menu->addMenuItem($extensions);
472
$menu->addMenuItem($tools);
473
$menu->addMenuItem($help);
475
echo $menu->render();