Documentation/Index/DocumentStatePlugins: SageStateButton.inc

Plik SageStateButton.inc, 3.9 KB (dodany przez TS, 6 years temu)
xx
Line 
1<?php
2require_once(MOD_PATH.'ADocuments/plugins/buttons/AbstractCustomStateButton.inc');
3require_once(LIB_PATH.'widgets/DialogForm.inc');
4
5/**
6 * SageStateButton
7 *
8 * @author Tomasz Świenty
9 * @version 0.1
10 * @copyright Copyright (c) eDokumenty
11 */
12final class SageStateButton extends AbstractCustomStateButton {
13
14
15
16    protected static $cMethods = [
17        'saveAndSend'
18    ];
19
20
21
22    public function getCallableMethods() {
23
24        return self::$cMethods;
25
26    }
27
28
29
30    public static function saveAndSend($params = []) {
31
32        $pData = JSON::toArray($params);
33        $state = isset($pData['state']) ? $pData['state'] : FALSE;
34        $parent = isset($pData['parent']) ? $pData['parent'] : FALSE;
35        $dialog = isset($pData['dialog']) ? $pData['dialog'] : FALSE;     
36        $afterSubmit = isset($pData['afterSubmit']) ? $pData['afterSubmit'] : FALSE;
37
38        $pData['state'] = 'fireStage';
39
40        DialogForm::ssetSData($dialog, [__CLASS__ => $pData]);
41
42        JScript::add('(function() {'.$afterSubmit.'})()');
43
44    }
45
46
47
48    public static function getSaveAndSendButton($data = [], $toHtml = TRUE) {
49
50        $HWND = Application::registerClass(Application::makeRelativePath(__FILE__), __CLASS__);
51
52        $pData = JSON::toArray($data);
53        $state = isset($pData['state']) ? $pData['state'] : FALSE;
54        $parent = isset($pData['parent']) ? $pData['parent'] : FALSE;
55        $dialog = isset($pData['dialog']) ? $pData['dialog'] : FALSE;     
56        $afterSubmit = isset($pData['afterSubmit']) ? $pData['afterSubmit'] : FALSE;           
57
58        $saveAndSendButton = new StateButton($parent.'saveAndSendButton');
59        $saveAndSendButton->mainCaption = Translator::translate('Zapisz i wyślij');
60        $saveAndSendButton->width = '180px';       
61        $saveAndSendButton->height = '100px';       
62        $saveAndSendButton->clearMoreMenu();
63
64        if ($state == 'fireStage') {
65            $state = 'saveAndSend';
66            DialogForm::ssetSData($dialog, [__CLASS__ => NULL]);           
67        }
68
69        if ($state == 'saveAndSend') {
70            $saveAndSendStates = [
71                'sendFile' => [
72                    'icon'      => 'save-as',
73                    'caption'   => Translator::translate('Zapisz i wyślij'),
74                    'title'     => Translator::translate('Kliknij aby zapisać dokument i wysłać'),
75                    'onClick'   => '$A1(\''.$HWND.'\', \'\', '.(int)array_search('saveAndSend', self::$cMethods).', ({state:\'saveAndSend\', parent:\''.$parent.'\', dialog:\''.$dialog.'\', afterSubmit:\''.addslashes($afterSubmit).'\'}).toJSONString(), \'\')'
76                ]
77            ];
78
79            $saveAndSendButton->setStates($saveAndSendStates);
80            $saveAndSendButton->selectState('sendFile');             
81        }
82
83        return $saveAndSendButton;
84
85    }
86
87
88
89    public static function plug($parent, $data) {
90
91        $dialog = $parent->getDialog();
92
93        $sData = DialogForm::sgetSData($dialog->name);
94
95        $state = 'saveAndSend';
96        if (isset($sData[__CLASS__]['state'])) {
97            $state = $sData[__CLASS__]['state'];
98        }
99
100        if ($state == 'fireStage') {
101            $ptstid = 30; // OKREŚŁ ID ETAPU DO WYKONANIA           
102            $dialog->on('save',
103                function($dialogObject, $documentBean) use ($ptstid) {
104                    JScript::addAfter('App.openDialogByCls(\'P_WORKFLOW\', null, ({clsnam:\'DOCUMENT\', keyval:\''.$documentBean->get('doc_id').'\', ptstid:\''.$ptstid.'\'}).toJSONString())');
105                }
106            );           
107        }
108
109        $params = ['state' => $state, 'parent' => $parent->name, 'dialog' => $dialog->name, 'afterSubmit' => $dialog->onbSaveClick]; 
110
111        $saveAndSendButton = self::getSaveAndSendButton($params, FALSE);
112
113        return $saveAndSendButton;       
114
115    }
116
117}
118
119?>