register_hook('HTML_SECEDIT_BUTTON', 'BEFORE', $this, 'sectionEditButton'); $controller->register_hook('EDIT_FORM_ADDTEXTAREA', 'BEFORE', $this, 'handleForm'); $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handlePost'); } public function sectionEditButton(Doku_Event $event) { if ($this->shallIgnore($event)) return; $event->data['name'] = $this->getLang('edit_diagram'); } public function handleForm(Doku_Event $event) { if ($this->shallIgnore($event)) return; global $TEXT; global $RANGE; global $INPUT; if (!$RANGE) { // section editing failed, use default editor instead $event->data['target'] = 'section'; return; } $event->stopPropagation(); $event->preventDefault(); /** @var Doku_Form $form */ $form = &$event->data['form']; $data = base64_encode($TEXT); $type = 'bpmn'; if ($event->data['target'] === 'plugin_bpmnio_dmn') $type = 'dmn'; $form->setHiddenField('plugin_bpmnio_data', $data); $form->addHTML(<<
{$data}
HTML); // used during previews $form->setHiddenField('target', "plugin_bpmnio_{$type}"); $form->setHiddenField('range', $RANGE); } public function handlePost(Doku_Event $event) { global $TEXT; global $INPUT; if (!$INPUT->post->has('plugin_bpmnio_data')) return; $TEXT = base64_decode($INPUT->post->str('plugin_bpmnio_data')); } private function shallIgnore(Doku_Event $event) { if ($event->data['target'] === 'plugin_bpmnio_bpmn') return false; if ($event->data['target'] === 'plugin_bpmnio_dmn') return false; return true; } }