Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Plugins/TaskLists/Configurator.php
<?php declare(strict_types=1);

/**
* @package   s9e\TextFormatter
* @copyright Copyright (c) 2010-2021 The s9e authors
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Plugins\TaskLists;

use
s9e\TextFormatter\Configurator\Items\Tag;
use
s9e\TextFormatter\Plugins\ConfiguratorBase;

class
Configurator extends ConfiguratorBase
{
   
/**
    * {@inheritdoc}
    */
   
public function asConfig()
    {
        return;
    }

   
/**
    * {@inheritdoc}
    */
   
public function finalize()
    {
       
$this->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 = '<input data-task-id="{@id}" data-s9e-livepreview-ignore-attrs="data-task-id" type="checkbox">
            <xsl:if test="@state = \'checked\'"><xsl:attribute name="checked"/></xsl:if>
            <xsl:if test="not($TASKLISTS_EDITABLE)"><xsl:attribute name="disabled"/></xsl:if>
        </input>'
;
    }
}