<?php class pluginQuill extends Plugin { private $loadOnController = array( 'new-content', 'edit-content' ); public function adminHead() { // Load Quill only on the selected controllers to keep perfomance // For example, in the dashboard is not going to be included the Quill CSS and JS scripts. if (!in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) { return false; } $html = '<link rel="stylesheet" type="text/css" href="'.$this->htmlPath().'quill/quill.snow.css?version='.BLUDIT_VERSION.'">'.PHP_EOL; $html .= '<link rel="stylesheet" type="text/css" href="'.$this->htmlPath().'quill/bludit.css?version='.BLUDIT_VERSION.'">'.PHP_EOL; $html .= '<script charset="utf-8" src="'.$this->htmlPath().'quill/quill.min.js?version='.BLUDIT_VERSION.'"></script>'.PHP_EOL; return $html; } public function adminBodyEnd() { if (!in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) { return false; } $script = <<<EOF <script> var quill; // Function required for Media Manager to insert a file on the editor function insertMedia(filename) { var Delta = Quill.import("delta"); quill.updateContents(new Delta() .retain(quill.getSelection().index) .insert('<img alt="'+filename+'" src="'+DOMAIN_UPLOADS+filename+'" />') ); } $(document).ready(function() { quill = new Quill("#jscontent", { modules: { toolbar: [ [{ header: [1, 2, false] }], ['bold', 'italic', 'underline'], ['image', 'code-block'] ] }, placeholder: "Content, support Markdown and HTML.", theme: "snow" }); // Change button images event handler to open the Media Manager quill.getModule("toolbar").addHandler("image", openMediaManager); }); </script> EOF; return $script; } }