Skip to content

Commit

Permalink
fix(bbcode): highlight.js does not work after changing post content (…
Browse files Browse the repository at this point in the history
…#3817)

* fix(bbcode): highlight.js does not work after changing post content

Signed-off-by: Sami Mazouz <[email protected]>

* chore(bbcode): organize bbcode code

Signed-off-by: Sami Mazouz <[email protected]>

* Apply fixes from StyleCI

---------

Signed-off-by: Sami Mazouz <[email protected]>
Co-authored-by: StyleCI Bot <[email protected]>
  • Loading branch information
SychO9 and StyleCIBot committed May 2, 2023
1 parent 412dacd commit 12eaa61
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 26 deletions.
5 changes: 5 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@
"require": {
"flarum/core": "^1.7"
},
"autoload": {
"psr-4": {
"Flarum\\BBCode\\": "src"
}
},
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
Expand Down
30 changes: 4 additions & 26 deletions extend.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,14 @@
* LICENSE file that was distributed with this source code.
*/

namespace Flarum\BBCode;

use Flarum\Extend;
use s9e\TextFormatter\Configurator;
use s9e\TextFormatter\Renderer;

return [
new Extend\Locales(__DIR__.'/locale'),

(new Extend\Formatter)
->render(function (Renderer $renderer, $context, string $xml) {
$renderer->setParameter('L_WROTE', resolve('translator')->trans('flarum-bbcode.forum.quote.wrote'));

return $xml;
})
->configure(function (Configurator $config) {
$config->BBCodes->addFromRepository('B');
$config->BBCodes->addFromRepository('I');
$config->BBCodes->addFromRepository('U');
$config->BBCodes->addFromRepository('S');
$config->BBCodes->addFromRepository('URL');
$config->BBCodes->addFromRepository('IMG');
$config->BBCodes->addFromRepository('EMAIL');
$config->BBCodes->addFromRepository('CODE');
$config->BBCodes->addFromRepository('QUOTE', 'default', [
'authorStr' => '<xsl:value-of select="@author"/> <xsl:value-of select="$L_WROTE"/>'
]);
$config->BBCodes->addFromRepository('LIST');
$config->BBCodes->addFromRepository('DEL');
$config->BBCodes->addFromRepository('COLOR');
$config->BBCodes->addFromRepository('CENTER');
$config->BBCodes->addFromRepository('SIZE');
$config->BBCodes->addFromRepository('*');
}),
->render(Render::class)
->configure(Configure::class),
];
59 changes: 59 additions & 0 deletions src/Configure.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/

namespace Flarum\BBCode;

use s9e\TextFormatter\Configurator;

class Configure
{
public function __invoke(Configurator $config)
{
$this->addTagsFromRepositories($config);
$this->adaptHighlightJs($config);
}

protected function addTagsFromRepositories(Configurator $config): void
{
$config->BBCodes->addFromRepository('B');
$config->BBCodes->addFromRepository('I');
$config->BBCodes->addFromRepository('U');
$config->BBCodes->addFromRepository('S');
$config->BBCodes->addFromRepository('URL');
$config->BBCodes->addFromRepository('IMG');
$config->BBCodes->addFromRepository('EMAIL');
$config->BBCodes->addFromRepository('CODE');
$config->BBCodes->addFromRepository('QUOTE', 'default', [
'authorStr' => '<xsl:value-of select="@author"/> <xsl:value-of select="$L_WROTE"/>'
]);
$config->BBCodes->addFromRepository('LIST');
$config->BBCodes->addFromRepository('DEL');
$config->BBCodes->addFromRepository('COLOR');
$config->BBCodes->addFromRepository('CENTER');
$config->BBCodes->addFromRepository('SIZE');
$config->BBCodes->addFromRepository('*');
}

/**
* Fix for highlight JS not working after changing post content.
*
* @link https://github.com/flarum/framework/issues/3794
*/
protected function adaptHighlightJs(Configurator $config): void
{
$codeTag = $config->tags->get('CODE');
$script = '
<script>
if(window.hljsLoader && !document.currentScript.parentNode.hasAttribute(\'data-s9e-livepreview-onupdate\')) {
window.hljsLoader.highlightBlocks(document.currentScript.parentNode);
}
</script>';
$codeTag->template = str_replace('</pre>', $script.'</pre>', $codeTag->template);
}
}
33 changes: 33 additions & 0 deletions src/Render.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/

namespace Flarum\BBCode;

use s9e\TextFormatter\Renderer;
use Symfony\Contracts\Translation\TranslatorInterface;

class Render
{
/**
* @var TranslatorInterface
*/
protected $translator;

public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}

public function __invoke(Renderer $renderer, $context, string $xml): string
{
$renderer->setParameter('L_WROTE', $this->translator->trans('flarum-bbcode.forum.quote.wrote'));

return $xml;
}
}

0 comments on commit 12eaa61

Please sign in to comment.