Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/friendsofcake/bootstrap-ui/src/View/Helper/BreadcrumbsHelper.php
<?php
namespace BootstrapUI\View\Helper;

use
Cake\View\Helper\BreadcrumbsHelper as CoreBreadcrumbsHelper;

class
BreadcrumbsHelper extends CoreBreadcrumbsHelper
{
    use
OptionsAwareTrait;

   
/**
     * @inheritdoc
     */
   
protected $_defaultConfig = [
       
'ariaCurrent' => 'last',
       
'templates' => [
           
'wrapper' => '<nav aria-label="breadcrumb"><ol{{attrs}}>{{content}}</ol></nav>',
           
'item' => '<li{{attrs}}><a href="{{url}}"{{innerAttrs}}>{{title}}</a></li>',
           
'itemWithoutLink' => '<li{{attrs}}><span{{innerAttrs}}>{{title}}</span></li>',
           
'separator' => '',
        ],
    ];

   
/**
     * Default attributes for the templates
     *
     * @var array
     */
   
protected $_defaultAttributes = [
       
'class' => [
           
'wrapper' => 'breadcrumb',
           
'item' => 'breadcrumb-item',
        ],
    ];

   
/**
     * {@inheritDoc}
     */
   
public function render(array $attributes = [], array $separator = [])
    {
       
$attributes = $this->injectClasses($this->_defaultAttributes['class']['wrapper'], $attributes);

       
$this->_markActiveCrumb();

        return
parent::render($attributes, $separator);
    }

   
/**
     * {@inheritDoc}
     */
   
public function add($title, $url = null, array $options = [])
    {
       
$options = $this->injectClasses($this->_defaultAttributes['class']['item'], $options);

        return
parent::add($title, $url, $options);
    }

   
/**
     * {@inheritDoc}
     */
   
public function prepend($title, $url = null, array $options = [])
    {
       
$options = $this->injectClasses($this->_defaultAttributes['class']['item'], $options);

        return
parent::prepend($title, $url, $options);
    }

   
/**
     * {@inheritDoc}
     */
   
public function insertAt($index, $title, $url = null, array $options = [])
    {
       
$options = $this->injectClasses($this->_defaultAttributes['class']['item'], $options);

        return
parent::insertAt($index, $title, $url, $options);
    }

   
/**
     * Marks the active crumb in the current set of crumbs with an
     * `active` class and the `aria-current` attribute.
     *
     * @return void
     */
   
protected function _markActiveCrumb()
    {
        if (!
$this->crumbs) {
            return;
        }

       
$this->_clearActiveCrumb();

       
$key = null;
        if (
$this->getConfig('ariaCurrent') === 'lastWithLink') {
            foreach (
array_reverse($this->crumbs, true) as $key => $crumb) {
                if (isset(
$crumb['url'])) {
                    break;
                }
            }
        } else {
           
$key = count($this->crumbs) - 1;
        }

        if (!
$key) {
            return;
        }

       
$this->crumbs[$key]['options'] = $this->injectClasses('active', $this->crumbs[$key]['options']);

        if (isset(
$this->crumbs[$key]['url'])) {
           
$this->crumbs[$key]['options']['innerAttrs']['aria-current'] = 'page';
        } else {
           
$this->crumbs[$key]['options']['aria-current'] = 'page';
        }
    }

   
/**
     * Removes the `active` class and the `aria-current` attribute from
     * the active crumb in the current set of crumbs.
     *
     * @return void
     */
   
protected function _clearActiveCrumb()
    {
        foreach (
$this->crumbs as $key => $crumb) {
           
$this->crumbs[$key]['options'] = $this->removeClasses('active', $this->crumbs[$key]['options']);

            unset(
               
$this->crumbs[$key]['options']['innerAttrs']['aria-current'],
               
$this->crumbs[$key]['options']['aria-current']
            );
        }
    }
}