1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * CustomJSMenu jako custom widget |
---|
5 | * |
---|
6 | * @author Tomasz Świenty |
---|
7 | * @version 0.1 |
---|
8 | * @copyright Copyright (c) eDokumenty |
---|
9 | */ |
---|
10 | final class CustomJSMenu { |
---|
11 | |
---|
12 | |
---|
13 | /** |
---|
14 | * @var string[] |
---|
15 | */ |
---|
16 | private static $cMethods = [ |
---|
17 | 'execute' |
---|
18 | ]; |
---|
19 | |
---|
20 | |
---|
21 | /** |
---|
22 | * @return string[] |
---|
23 | */ |
---|
24 | public function getCallableMethods() { |
---|
25 | |
---|
26 | return self::$cMethods; |
---|
27 | |
---|
28 | } |
---|
29 | |
---|
30 | |
---|
31 | /** |
---|
32 | * @param $params |
---|
33 | * @return string|true |
---|
34 | */ |
---|
35 | public function execute($params) { |
---|
36 | |
---|
37 | $pData = JSON::toArray($params); |
---|
38 | |
---|
39 | return print_r($pData, TRUE); |
---|
40 | |
---|
41 | } |
---|
42 | |
---|
43 | |
---|
44 | /** |
---|
45 | * @param $args |
---|
46 | * @return bool |
---|
47 | */ |
---|
48 | public static function init($args) { |
---|
49 | |
---|
50 | if (!isset($args['menu']) OR !$args['menu'] instanceof JSMenu) { |
---|
51 | return FALSE; |
---|
52 | } |
---|
53 | |
---|
54 | $HWND = App::registerClass('./scripts/CustomJSMenu.inc', __CLASS__); |
---|
55 | |
---|
56 | // menu drugiego poziomu |
---|
57 | $newSubMenu = new JSMenu($args['menu']->name.'newSubMenu'); |
---|
58 | $newSubMenu->width = 260; |
---|
59 | $newSubMenu->addItem('document', Translator::translate('Nowy dokument'), NULL, 'on', TRUE); |
---|
60 | $newSubMenu->addItem('report', Translator::translate('Nowy raport'), NULL, 'on', TRUE); |
---|
61 | $newSubMenu->onChange = '(value) => {alert(value);}'; |
---|
62 | |
---|
63 | $args['menu']->addItem('new', Translator::translate('Nowy'), NULL, 'on', TRUE, $newSubMenu); |
---|
64 | $args['menu']->addItem('edit', Translator::translate('Edycja)'), NULL, 'on', TRUE); |
---|
65 | $args['menu']->onChange = ' |
---|
66 | (value) => { |
---|
67 | let params = '.(isset($args['params']) ? $args['params'] : '\'{}\'').'.parseJSON(); |
---|
68 | let keyval = (typeof params[\'keyval\'] !== \'undefined\') ? params[\'keyval\'] : []; |
---|
69 | let js_after = (typeof params[\'js_after\'] !== \'undefined\') ? params[\'js_after\'] : () => {}; |
---|
70 | |
---|
71 | if (value === \'new\') { |
---|
72 | $A1(\''.$HWND.'\', null, '.(int)array_search('execute', self::$cMethods).', ({contid:keyval, js_after:js_after}).toJSONString(), \'alert(text);\'); |
---|
73 | } |
---|
74 | |
---|
75 | if (value === \'edit\') { |
---|
76 | // moze byc wiele zaznaczonych -> edytuj tylko pierwszego klienta |
---|
77 | if (keyval.length) { |
---|
78 | App.openDialogByCls(\'CONTACT_EDIT\', keyval.shift()); |
---|
79 | } else { |
---|
80 | WidgetException(null, \'Wybierz klienta z listy\'); |
---|
81 | } |
---|
82 | } |
---|
83 | }'; |
---|
84 | |
---|
85 | } |
---|
86 | |
---|
87 | |
---|
88 | } |
---|
89 | |
---|
90 | if (isset($args)) { |
---|
91 | CustomJSMenu::init($args); |
---|
92 | } |
---|