From 0f5e7090beb4c8b8e99aa87454c89b53ed11cc66 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 16 May 2015 19:27:43 +0200 Subject: we have working save and revert buttons --- lib/plugins/styler/action.php | 73 ++++++++++++++++++++++++++++++++++++++----- lib/plugins/styler/admin.php | 3 ++ 2 files changed, 69 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/plugins/styler/action.php b/lib/plugins/styler/action.php index 648190a2a..e2385e739 100644 --- a/lib/plugins/styler/action.php +++ b/lib/plugins/styler/action.php @@ -19,8 +19,8 @@ class action_plugin_styler extends DokuWiki_Action_Plugin { */ public function register(Doku_Event_Handler $controller) { - $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax'); - $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_action'); + $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax'); + $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_action'); } @@ -35,31 +35,90 @@ class action_plugin_styler extends DokuWiki_Action_Plugin { public function handle_action(Doku_Event &$event, $param) { $event->data = act_clean($event->data); if($event->data === 'styler_plugin_preview') { - msg('handle') ; $event->data = 'show'; $this->preview(); - } elseif ($event->data === 'styler_plugin_save') { + } elseif($event->data === 'styler_plugin_reset') { $event->data = 'show'; + $this->reset(); + } elseif($event->data === 'styler_plugin_revert') { + $event->data = 'show'; + $this->revert(); + } elseif($event->data === 'styler_plugin_save') { + $event->data = 'show'; + $this->save(); } } - protected function preview(){ + /** + * saves the preview.ini + */ + protected function preview() { global $conf; - $ini = $conf['cachedir'].'/preview.ini'; + $ini = $conf['cachedir'].'/preview.ini'; io_saveFile($ini, $this->makeini()); } + /** + * deletes the preview.ini + */ + protected function reset() { + global $conf; + $ini = $conf['cachedir'].'/preview.ini'; + io_saveFile($ini, ''); + } + + /** + * deletes the local style.ini replacements + */ + protected function revert() { + $this->replaceini(''); + $this->reset(); + } + + /** + * save the local style.ini replacements + */ + protected function save() { + $this->replaceini($this->makeini()); + $this->reset(); + } + + /** + * create the replacement part of a style.ini from submitted data + * + * @return string + */ protected function makeini() { global $INPUT; $ini = "[replacements]\n"; foreach($INPUT->arr('tpl') as $key => $val) { - $ini .= $key .' = "'.addslashes($val).'"'."\n"; + $ini .= $key.' = "'.addslashes($val).'"'."\n"; } return $ini; } + /** + * replaces the replacement parts in the local ini + * + * @param string $new the new ini contents + */ + protected function replaceini($new) { + global $conf; + $ini = DOKU_CONF."tpl/".$conf['template']."/style.ini"; + if(file_exists($ini)) { + $old = io_readFile($ini); + $old = preg_replace('/\[replacements\]\n.*?(\n\[.*]|$)/s', '\\1', $old); + $old = trim($old); + } else { + $old = ''; + } + + io_makeFileDir($ini); + io_saveFile($ini, "$old\n\n$new"); + } + /** * [Custom event handler which performs action] * diff --git a/lib/plugins/styler/admin.php b/lib/plugins/styler/admin.php index 8ecbd22a0..323bf61ec 100644 --- a/lib/plugins/styler/admin.php +++ b/lib/plugins/styler/admin.php @@ -61,6 +61,9 @@ class admin_plugin_styler extends DokuWiki_Admin_Plugin { } echo ''; echo ''; + echo ''; #FIXME only if preview.ini exists + echo ''; #FIXME only if local.ini exists + echo ''; echo ''; } -- cgit v1.2.3