configureListItemTag(); } protected function setUp(): void { if (!isset($this->configurator->tags['LI'])) { $this->configurator->Litedown; } $this->createTaskTag(); $this->configureListItemTag(); } protected function configureListItemTag(): void { if (!isset($this->configurator->tags['LI'])) { return; } $tag = $this->configurator->tags['LI']; $callback = Helper::class . '::filterListItem'; if (!$tag->filterChain->containsCallback($callback)) { $tag->filterChain->append($callback) ->resetParameters() ->addParameterByName('parser') ->addParameterByName('tag') ->addParameterByName('text') ->setJS(file_get_contents(__DIR__ . '/filterListItem.js')); } $dom = $tag->template->asDOM(); foreach ($dom->query('//li[not(xsl:if[@test="TASK"])]') as $li) { $if = $li->prependXslIf('TASK'); $if->appendXslAttribute('data-s9e-livepreview-ignore-attrs', 'data-task-id'); $if->appendXslAttribute('data-task-id')->appendXslValueOf('TASK/@id'); $if->appendXslAttribute('data-task-state')->appendXslValueOf('TASK/@state'); } $dom->saveChanges(); } protected function createTaskTag(): void { $tag = $this->configurator->tags->add('TASK'); $tag->attributes->add('id')->filterChain->append('#identifier'); $tag->attributes->add('state')->filterChain->append('#identifier'); $tag->template = ' '; } }