Skip to content

Commit ee4cd93

Browse files
committed
support event EDIT_FORM_ADDTEXTAREA
new event passes new dokuwiki\Form\Form object
1 parent 88e027f commit ee4cd93

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

action/editor.php

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ class action_plugin_edittable_editor extends DokuWiki_Action_Plugin {
1919
/**
2020
* Register its handlers with the DokuWiki's event controller
2121
*/
22-
function register(Doku_Event_Handler $controller) {
22+
public function register(Doku_Event_Handler $controller)
23+
{
2324
// register custom edit buttons
2425
$controller->register_hook('HTML_SECEDIT_BUTTON', 'BEFORE', $this, 'secedit_button');
2526

2627
// register our editor
28+
$controller->register_hook('EDIT_FORM_ADDTEXTAREA', 'BEFORE', $this, 'editform');
2729
$controller->register_hook('HTML_EDIT_FORMSELECTION', 'BEFORE', $this, 'editform');
2830

2931
// register preprocessing for accepting editor data
@@ -50,12 +52,14 @@ function secedit_button(Doku_Event $event) {
5052
*
5153
* @param Doku_Event $event
5254
*/
53-
function editform(Doku_Event $event) {
55+
public function editform(Doku_Event $event)
56+
{
5457
global $TEXT;
5558
global $RANGE;
59+
global $INPUT;
5660

57-
if($event->data['target'] !== 'table') return;
58-
if(!$RANGE){
61+
if ($event->data['target'] !== 'table') return;
62+
if (!$RANGE){
5963
// section editing failed, use default editor instead
6064
$event->data['target'] = 'section';
6165
return;
@@ -69,7 +73,7 @@ function editform(Doku_Event $event) {
6973
$instructions = p_get_instructions($TEXT);
7074

7175
// Loop through the instructions
72-
foreach($instructions as $instruction) {
76+
foreach ($instructions as $instruction) {
7377
// Execute the callback against the Renderer
7478
call_user_func_array(array(&$Renderer, $instruction[0]), $instruction[1]);
7579
}
@@ -79,21 +83,36 @@ function editform(Doku_Event $event) {
7983
/** @var Doku_Form $form */
8084
$form =& $event->data['form'];
8185

82-
// data for handsontable
83-
$form->addHidden('edittable_data', $Renderer->getDataJSON());
84-
$form->addHidden('edittable_meta', $Renderer->getMetaJSON());
85-
$form->addElement('<div id="edittable__editor"></div>');
86+
if (is_a($form, dokuwiki\Form\Form::class)) { // $event->name is EDIT_FORM_ADDTEXTAREA
87+
// data for handsontable
88+
$form->setHiddenField('edittable_data', $Renderer->getDataJSON());
89+
$form->setHiddenField('edittable_meta', $Renderer->getMetaJSON());
90+
$form->addHTML('<div id="edittable__editor"></div>');
91+
92+
// set data from action asigned to "New Table" button in the toolbar
93+
foreach ($INPUT->post->arr('edittable__new', []) as $k => $v) {
94+
$form->setHiddenField("edittable__new[$k]", $v);
95+
}
96+
97+
// set target and range to keep track during previews
98+
$form->setHiddenField('target', 'table');
99+
$form->setHiddenField('range', $RANGE);
86100

87-
// FIXME add explanation here
88-
if(isset($_POST['edittable__new'])) {
89-
foreach($_POST['edittable__new'] as $k => $v) {
101+
} else { // $event->name is HTML_EDIT_FORMSELECTION
102+
// data for handsontable
103+
$form->addHidden('edittable_data', $Renderer->getDataJSON());
104+
$form->addHidden('edittable_meta', $Renderer->getMetaJSON());
105+
$form->addElement('<div id="edittable__editor"></div>');
106+
107+
// set data from action asigned to "New Table" button in the toolbar
108+
foreach ($INPUT->post->arr('edittable__new', []) as $k => $v) {
90109
$form->addHidden("edittable__new[$k]", $v);
91110
}
92-
}
93111

94-
// set target and range to keep track during previews
95-
$form->addHidden('target', 'table');
96-
$form->addHidden('range', $RANGE);
112+
// set target and range to keep track during previews
113+
$form->addHidden('target', 'table');
114+
$form->addHidden('range', $RANGE);
115+
}
97116
}
98117

99118
/**

0 commit comments

Comments
 (0)