Since I have no addon but a plugin, I assume I should either use "gdn_pluginManager_afterStart" or "container_init" and I have chosen "container_init". The file in /settings/bootstrap.php is not included
// Bootstrapping.
foreach ($addonManager->getEnabled() as $addon) {
/* @var Addon $addon */
if ($bootstrapPath = $addon->getSpecial('bootstrap')) {
$bootstrapPath = $addon->path($bootstrapPath);
include_once $bootstrapPath;
}
}
// Plugins startup
$addonManager->bindAllEvents($eventManager);
if ($eventManager->hasHandler('gdn_pluginManager_afterStart')) {
$eventManager->fire('gdn_pluginManager_afterStart', $dic->get(Gdn_PluginManager::class));
}
// Now that all of the events have been bound, fire an event that allows plugins to modify the container.
$eventManager->fire('container_init', $dic);
});
With that code in my plugin (I've also tried RJPlugins\CKEditorHtmlFormat and \RJPlugins\CKEditorHtmlFormat)
public function container_init(Container $dic) {
$dic->rule(FormatService::class)->addCall(
'registerFormat',
[
'Html',
new \Garden\Container\Reference(CKEditorHtmlFormat::class)
]
);
}
I receive the following error, which makes absolutely no sense to me:
Fatal Error in Gdn_Session.start();
Call to a member function getSession() on null
The error occurred on or near: /usr/share/nginx/html/vanilla/installations/release_current/library/core/class.session.php
439:
440: // Now retrieve user information.
441: if ($this->UserID > 0) {
442: // Instantiate a UserModel to get session info
443: $this->User = $userModel->getSession($this->UserID);
444:
445: $userSignedIn = false;
446: if ($this->User) {
447: $this->permissions->setPermissions($this->User->Permissions);
Backtrace:
[/usr/share/nginx/html/vanilla/installations/release_current/library/core/class.auth.php:64] Gdn_Session->start();
[/usr/share/nginx/html/vanilla/installations/release_current/bootstrap.php:517] Gdn_Auth->startAuthenticator();
[/usr/share/nginx/html/vanilla/installations/release_current/index.php:22] PHP::require_once();
Looks like what I'm doing in container_init is totally wrong.
public function container_init(Container $dic) {
$dic->rule(Vanilla\Formatting\FormatService::class)->addCall(
'registerFormat',
[
'Html',
new \Garden\Container\Reference(RJPlugins\CKEditorHtmlFormat::class)
]
);
}
2. I have that CKEditorHtmlFormat:
<?php
namespace RJPlugins;
use Vanilla\Formatting\Formats\HtmlFormat;
use Vanilla\Formatting\Html\HtmlSanitizer;
use VanillaHtmlFormatter;
use Vanilla\EmbeddedContent\LegacyEmbedReplacer;
use Gdn;
use Vanilla\Formatting\Formats\StaticCacheTranslationTrait;
use Vanilla\Formatting\Htm;
/**
* Handle special markup generated by CKEditor5.
*
* CKEditor5 inserts additional CSS classes which are stripped out by Vanillas
* default Html renderer.
*
*/
class CKEditorHtmlFormat extends HtmlFormat {
// use StaticCacheTranslationTrait;
const FORMAT_KEY = "html";
/** @var HtmlSanitizer */
private $htmlSanitizer;
/** @var HtmlEnhancer */
private $htmlEnhancer;
/** @var bool */
private $shouldCleanupLineBreaks;
/** @var HtmlPlainTextConverter */
private $plainTextConverter;
/**
* Constructor for dependency injection.
*
* @param HtmlSanitizer $htmlSanitizer
* @param HtmlEnhancer $htmlEnhancer
* @param HtmlPlainTextConverter $plainTextConverter
* @param bool $shouldCleanupLineBreaks
*/
public function __construct(
HtmlSanitizer $htmlSanitizer,
HtmlEnhancer $htmlEnhancer,
HtmlPlainTextConverter $plainTextConverter,
bool $shouldCleanupLineBreaks = true
) {
$this->htmlSanitizer = $htmlSanitizer;
$this->htmlEnhancer = $htmlEnhancer;
$this->plainTextConverter = $plainTextConverter;
$this->shouldCleanupLineBreaks = $shouldCleanupLineBreaks;
}
/**
* @inheritdoc
*/
public function renderHtml(string $content, bool $enhance = true): string {
return 'test';
...
I would expect that this simply returns a "test" for every Html post, but it does not, it simply renders them as html like before...
Comments
Since I have no addon but a plugin, I assume I should either use "gdn_pluginManager_afterStart" or "container_init" and I have chosen "container_init". The file in /settings/bootstrap.php is not included
With that code in my plugin (I've also tried RJPlugins\CKEditorHtmlFormat and \RJPlugins\CKEditorHtmlFormat)
I receive the following error, which makes absolutely no sense to me:
Looks like what I'm doing in container_init is totally wrong.
Okay, this is where I am:
1. In my plugin I have that method:
2. I have that CKEditorHtmlFormat:
I would expect that this simply returns a "test" for every Html post, but it does not, it simply renders them as html like before...