~horux-dev/horux-webcli/thfo

« back to all changes in this revision

Viewing changes to protected/extensions/widgets/horuxMenu/HoruxMenu.php

  • Committer: Thierry Forchelet
  • Date: 2011-02-25 13:30:15 UTC
  • Revision ID: thierry.forchelet@letux.ch-20110225133015-zxyj9w7sqv8ly971
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
/**
 
3
 * HoruxMenu
 
4
 *
 
5
 *
 
6
 * @author Gyger Jean-Luc
 
7
 * @version 1.0
 
8
 */
 
9
 
 
10
Yii::import('zii.widgets.CMenu');
 
11
 
 
12
 
 
13
class Menu {
 
14
    protected $items = array();
 
15
 
 
16
    public function addMenuItem(MenuItem $item) {
 
17
        $this->items[] = $item;
 
18
    }
 
19
 
 
20
    public function render() {
 
21
        $html = '[';
 
22
 
 
23
        foreach($this->items as $item) {
 
24
            if($item->countVisible() > 0)
 
25
                $html .= $item->render();
 
26
        }
 
27
 
 
28
        $html .= '];';
 
29
 
 
30
        return $html;
 
31
    }
 
32
}
 
33
 
 
34
class MenuItem {
 
35
    protected $isVisible = true;
 
36
    protected $icon;
 
37
    protected $title;
 
38
    protected $link;
 
39
    protected $subItems = array();
 
40
 
 
41
    function __construct( $icon, $title, $link, $visible=true) {
 
42
        $this->icon = $icon;
 
43
        $this->title = $title;
 
44
        $this->link = $link;
 
45
        $this->isVisible = $visible;
 
46
    }
 
47
 
 
48
    public function countVisible($index = 0, $countNextSplit=true) {
 
49
        $count = 0;
 
50
 
 
51
        for($i=$index; $i<count($this->subItems); $i++) {
 
52
            if($this->subItems[$i] != ',_cmSplit') {
 
53
                if($this->subItems[$i]->isVisible)
 
54
                    $count++;
 
55
            }
 
56
            else
 
57
            if(!$countNextSplit)
 
58
                return $count;
 
59
        }
 
60
        return $count;
 
61
    }
 
62
 
 
63
    public function addMenuItem(MenuItem $item) {
 
64
        $this->subItems[] = $item;
 
65
    }
 
66
 
 
67
    public function setVisible($flag) {
 
68
        $this->isVisible = $flag;
 
69
    }
 
70
 
 
71
    public function addSplit($access = true) {
 
72
        //if($access)
 
73
        $this->subItems[] = ',_cmSplit';
 
74
    }
 
75
 
 
76
    public function render() {
 
77
        if(!$this->isVisible) return '';
 
78
 
 
79
        $html = ',[';
 
80
        $html .= $this->icon.",";
 
81
        $html .= "'".addslashes($this->title)."',";
 
82
        $html .= "'".$this->link."',";
 
83
        $html .= "'_self',null";
 
84
 
 
85
 
 
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];
 
90
                }
 
91
            }
 
92
            else
 
93
                $html .= $this->subItems[$i]->render();
 
94
        }
 
95
 
 
96
        $html .= ']';
 
97
 
 
98
        return $html;
 
99
    }
 
100
 
 
101
}
 
102
 
 
103
 
 
104
 
 
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;
 
111
 
 
112
        function init(){
 
113
                parent::init();
 
114
 
 
115
                $this->render('ViewHoruxMenu');
 
116
        }
 
117
 
 
118
    public function generateMenu() {
 
119
        $menu = new Menu;
 
120
 
 
121
        /******************************************
 
122
                 * Horux menu
 
123
         */
 
124
        $horux = new MenuItem('null', 'Horux', '#');
 
125
 
 
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'),
 
129
                1
 
130
        ));
 
131
 
 
132
        $horux->addSplit();
 
133
 
 
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')
 
138
        ));
 
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')
 
143
        ));
 
144
        $horux->addSplit();
 
145
 
 
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')
 
150
        ));
 
151
 
 
152
        /******************************************
 
153
                 * System menu
 
154
         */
 
155
        $system = new MenuItem('null', Yii::t("app",'System',array(), "messages"), '#');
 
156
 
 
157
        $system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-site.png\" />'",
 
158
                Yii::t("app",'Site',array(), "messages"),
 
159
                ('site.Site'),
 
160
                Yii::app()->controller->isAccess('site.Site')
 
161
        ));
 
162
        if(Yii::app()->controller->isAccess('site.Site'))
 
163
            $this->systemMenuCount++;
 
164
 
 
165
        $system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-department.png\" />'",
 
166
                Yii::t("app",'Department',array(), "messages"),
 
167
                ('site.department'),
 
168
                Yii::app()->controller->isAccess('site.department')
 
169
        ));
 
170
        if(Yii::app()->controller->isAccess('site.department'))
 
171
            $this->systemMenuCount++;
 
172
 
 
173
 
 
174
        $system->addSplit();
 
175
 
 
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')
 
180
        ));
 
181
        if(Yii::app()->controller->isAccess('horuxController.horuxController'))
 
182
            $this->systemMenuCount++;
 
183
 
 
184
 
 
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')
 
189
        ));
 
190
        if(Yii::app()->controller->isAccess('hardware.HardwareList'))
 
191
            $this->systemMenuCount++;
 
192
 
 
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')
 
197
        ));
 
198
        if(Yii::app()->controller->isAccess('openTime.openTimeList'))
 
199
            $this->systemMenuCount++;
 
200
 
 
201
        $system->addSplit();
 
202
 
 
203
 
 
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')
 
208
        ));
 
209
        if(Yii::app()->controller->isAccess('system.Notification'))
 
210
            $this->systemMenuCount++;
 
211
 
 
212
 
 
213
        $system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-alarm.png\" />'",
 
214
                Yii::t("app",'Alarms',array(), "messages"),
 
215
                ('system.Alarms'),
 
216
                Yii::app()->controller->isAccess('system.Alarms')
 
217
        ));
 
218
        if(Yii::app()->controller->isAccess('system.Alarms'))
 
219
            $this->systemMenuCount++;
 
220
 
 
221
        $system->addSplit();
 
222
 
 
223
        $system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-service.png\" />'",
 
224
                Yii::t("app",'Horux Service',array(), "messages"),
 
225
                ('system.Service'),
 
226
                Yii::app()->controller->isAccess('system.Service')
 
227
        ));
 
228
        if(Yii::app()->controller->isAccess('system.Service'))
 
229
            $this->systemMenuCount++;
 
230
 
 
231
 
 
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')
 
236
        ));
 
237
        if(Yii::app()->controller->isAccess('system.Standalone'))
 
238
            $this->systemMenuCount++;
 
239
 
 
240
 
 
241
        $system->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-systemStatus.png\" />'",
 
242
                Yii::t("app",'System Status',array(), "messages"),
 
243
                ('system.Status'),
 
244
                Yii::app()->controller->isAccess('system.Status')
 
245
        ));
 
246
        if(Yii::app()->controller->isAccess('system.Status'))
 
247
            $this->systemMenuCount++;
 
248
 
 
249
 
 
250
        /******************************************
 
251
                 * access menu
 
252
         */
 
253
        $access = new MenuItem('null', Yii::t("app",'Access',array(), "messages"), '#');
 
254
 
 
255
        $access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-user2.png\" />'",
 
256
                Yii::t("app",'User',array(), "messages"),
 
257
                ('user.UserList'),
 
258
                Yii::app()->controller->isAccess('user.UserList')
 
259
        ));
 
260
 
 
261
        if(Yii::app()->controller->isAccess('user.UserList'))
 
262
            $this->accessMenuCount++;
 
263
 
 
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')
 
268
        ));
 
269
        if(Yii::app()->controller->isAccess('userGroup.UserGroupList'))
 
270
            $this->accessMenuCount++;
 
271
 
 
272
 
 
273
        $access->addSplit();
 
274
 
 
275
        $access->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-key.png\" />'",
 
276
                Yii::t("app",'Key',array(), "messages"),
 
277
                ('key.KeyList'),
 
278
                Yii::app()->controller->isAccess('key.KeyList')
 
279
        ));
 
280
 
 
281
        if(Yii::app()->controller->isAccess('key.KeyList'))
 
282
            $this->accessMenuCount++;
 
283
 
 
284
        $access->addSplit();
 
285
 
 
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')
 
290
        ));
 
291
        if(Yii::app()->controller->isAccess('accessLevel.accessLevelList'))
 
292
            $this->accessMenuCount++;
 
293
 
 
294
 
 
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')
 
299
        ));
 
300
        if(Yii::app()->controller->isAccess('nonWorkingDay.nonWorkingDay'))
 
301
            $this->accessMenuCount++;
 
302
 
 
303
 
 
304
        /******************************************
 
305
                 * Component menu
 
306
         */
 
307
        $componnents = new MenuItem('null', Yii::t("app",'Components',array(), "messages"), '#');
 
308
 
 
309
        /*$db = $this->Application->getModule('horuxDb')->DbConnection;
 
310
 
 
311
        if(!$db) return $menu->render();
 
312
 
 
313
        $db->Active=true;
 
314
 
 
315
        $cmd=$db->createCommand("SELECT * FROM hr_install WHERE type='component'");
 
316
        $data = $cmd->query();
 
317
        $data = $data->readAll();
 
318
 
 
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();
 
323
 
 
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']),
 
328
                    ($data2['page']),
 
329
                    Yii::app()->controller->isAccess($data2['page'])
 
330
            );
 
331
 
 
332
            if(Yii::app()->controller->isAccess($data2['page']))
 
333
                $this->componentMenuCount++;
 
334
 
 
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();
 
338
 
 
339
            foreach($data2 as $d2) {
 
340
                $asset = $this->Application->getAssetManager();
 
341
                $url = $asset->publishFilePath('./protected/pages/components/'.$d2['name'].'/assets/'.$d2['iconmenu']);
 
342
 
 
343
                $item->addMenuItem(new MenuItem("'<img src=\"".$url."\" />'",
 
344
                        Yii::t("app",$d2['menuname'],array(), $d['name']),
 
345
                        ($d2['page']),
 
346
                        Yii::app()->controller->isAccess($d2['page'])));
 
347
            }
 
348
 
 
349
            $componnents->addMenuItem($item);
 
350
        }*/
 
351
 
 
352
        /******************************************
 
353
                 * Extension menu
 
354
         */
 
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')
 
360
        ));
 
361
 
 
362
        if(Yii::app()->controller->isAccess('installation.extensions')) {
 
363
            $this->extensionMenuCount++;
 
364
            $extensions->addSplit();
 
365
        }
 
366
 
 
367
 
 
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')
 
372
        ));
 
373
        if(Yii::app()->controller->isAccess('installation.devices'))
 
374
            $this->extensionMenuCount++;
 
375
 
 
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')
 
380
        ));
 
381
        if(Yii::app()->controller->isAccess('installation.components'))
 
382
            $this->extensionMenuCount++;
 
383
 
 
384
 
 
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')
 
389
        ));
 
390
        if(Yii::app()->controller->isAccess('installation.template'))
 
391
            $this->extensionMenuCount++;
 
392
 
 
393
 
 
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')
 
398
        ));
 
399
        if(Yii::app()->controller->isAccess('installation.language'))
 
400
            $this->extensionMenuCount++;
 
401
 
 
402
 
 
403
        /******************************************
 
404
                 * Tools menu
 
405
         */
 
406
        $tools = new MenuItem('null', Yii::t("app",'Tools',array(), "messages"), '#');
 
407
 
 
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')
 
412
        ));
 
413
 
 
414
        if(Yii::app()->controller->isAccess('tool.GlobalCheckin'))
 
415
            $this->toolMenuCount++;
 
416
 
 
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"),
 
419
                ('tool.GuiLog'),
 
420
                Yii::app()->controller->isAccess('tool.GuiLog')
 
421
        ));
 
422
 
 
423
        $tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-update.png\" />'",
 
424
                Yii::t("app",'Horux Update',array(), "messages"),
 
425
                ('update.Update'),
 
426
                Yii::app()->controller->isAccess('update.Update')
 
427
        ));
 
428
 
 
429
 
 
430
        if(Yii::app()->controller->isAccess('tool.GuiLog'))
 
431
            $this->toolMenuCount++;
 
432
 
 
433
 
 
434
 
 
435
 
 
436
 
 
437
        $tools->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-recycling.png\" />'",
 
438
                Yii::t("app",'Recycling a Key',array(), "messages"),
 
439
                ('key.recycling'),
 
440
                Yii::app()->controller->isAccess('key.recycling')
 
441
        ));
 
442
 
 
443
        if(Yii::app()->controller->isAccess('key.recycling'))
 
444
            $this->toolMenuCount++;
 
445
 
 
446
 
 
447
        /******************************************
 
448
                 * Help menu
 
449
         */
 
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"),
 
453
                ('help.About'),
 
454
                /*Yii::app()->controller->isAccess('help.About')*/1
 
455
        ));
 
456
 
 
457
        $help->addSplit();
 
458
 
 
459
        $help->addMenuItem( new MenuItem("'<img src=\"./themes/classic/images/menu/icon-16-systemInfo.png\" />'",
 
460
                Yii::t("app",'System Info',array(), "messages"),
 
461
                ('help.SystemInfo'),
 
462
                Yii::app()->controller->isAccess('help.SystemInfo')
 
463
        ));
 
464
 
 
465
 
 
466
 
 
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);
 
474
 
 
475
        echo $menu->render();
 
476
    }
 
477
 
 
478
}