From 1f6bd44b2552bda6e620969d5d0b7561d289c744 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 29 Jul 2015 14:04:06 -0600 Subject: [PATCH] first whack at a processMarkdown json method --- classes/controller.php | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/classes/controller.php b/classes/controller.php index 03412df4..aa17b87f 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -13,6 +13,8 @@ use Grav\Common\Page\Collection; use Grav\Common\User\User; use Grav\Common\Utils; use Grav\Common\Backup\ZipBackup; +use Grav\Common\Markdown\Parsedown; +use Grav\Common\Markdown\ParsedownExtra; use RocketTheme\Toolbox\File\JsonFile; class AdminController @@ -493,6 +495,39 @@ class AdminController return true; } + protected function taskProcessMarkdown() + { +// if (!$this->authoriseTask('process markdown', ['admin.pages', 'admin.super'])) { +// return; +// } + + $page = $this->admin->page(true); + + if (!$page) { + $this->admin->json_response = ['status' => 'error', 'message' => 'No Page found']; + return false; + } + + $markdown = !empty($this->post['markdown']) ? $this->post['markdown'] : null; + if ($markdown) { + $defaults = (array) $this->grav['config']->get('system.pages.markdown'); + + // Initialize the preferred variant of Parsedown + if ($defaults['extra']) { + $parsedown = new ParsedownExtra($page, $defaults); + } else { + $parsedown = new Parsedown($page, $defaults); + } + + $html = json_encode($parsedown->text($markdown)); + $this->admin->json_response = ['status' => 'success', 'message' => $html]; + return; + } + $this->admin->json_response = ['status' => 'error', 'message' => 'No markdown text found']; + + return; + } + /** * Enable plugin. *