app/Providers/PurifySetupProvider.php
<?php
namespace App\Providers;
use HTMLPurifier_HTMLDefinition;
use Stevebauman\Purify\Facades\Purify;
use Illuminate\Support\ServiceProvider;
class PurifySetupProvider extends ServiceProvider
{
const DEFINITION_ID = 'ckeditor-editor';
const DEFINITION_REV = 1;
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
/** @var \HTMLPurifier $purifier */
$purifier = Purify::getPurifier();
/** @var \HTMLPurifier_Config $config */
$config = $purifier->config;
$config->set('HTML.DefinitionID', static::DEFINITION_ID);
$config->set('HTML.DefinitionRev', static::DEFINITION_REV);
if ($def = $config->maybeGetRawHTMLDefinition()) {
$this->setupDefinitions($def);
}
$purifier->config = $config;
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Adds elements and attributes to the HTML purifier
* definition required by the ckeditor editor.
*
* @param HTMLPurifier_HTMLDefinition $def
*/
protected function setupDefinitions(HTMLPurifier_HTMLDefinition $def)
{
$def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
$def->addAttribute('figure', 'class', 'Text');
}
}