| 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 | } |
|---|