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