Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Taxonomy/src/Event/TaxonomiesEventHandler.php
<?php

namespace Croogo\Taxonomy\Event;

use
Cake\Event\EventListenerInterface;
use
Cake\ORM\TableRegistry;
use
Croogo\Core\Croogo;
use
Croogo\Core\Nav;

/**
 * Taxonomy Event Handler
 *
 * @category Event
 * @package  Croogo.Taxonomy.Event
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class TaxonomiesEventHandler implements EventListenerInterface
{

   
/**
     * implementedEvents
     */
   
public function implementedEvents()
    {
        return [
           
'Croogo.setupAdminData' => [
               
'callable' => 'onSetupAdminData',
            ],
           
'Controller.Links.setupLinkChooser' => [
               
'callable' => 'onSetupLinkChooser',
            ],
        ];
    }

   
/**
     * Setup admin data
     */
   
public function onSetupAdminData($event)
    {
       
$View = $event->getSubject();

        if (empty(
$View->viewVars['vocabulariesForAdminLayout'])) {
           
$vocabularies = [];
        } else {
           
$vocabularies = $View->viewVars['vocabulariesForAdminLayout'];
        }
        foreach (
$vocabularies as $v) {
           
$weight = 9999 + $v->weight;
           
Nav::add('sidebar', 'content.children.taxonomy.children.' . $v->alias, [
               
'title' => $v->title,
               
'url' => [
                   
'prefix' => 'admin',
                   
'plugin' => 'Croogo/Taxonomy',
                   
'controller' => 'Taxonomies',
                   
'action' => 'index',
                   
'?' => [
                       
'vocabulary_id' => $v->id,
                    ],
                ],
               
'weight' => $weight,
            ]);
        };
    }

   
/**
     * Setup Link chooser values
     *
     * @return void
     */
   
public function onSetupLinkChooser($event)
    {
       
$vocabulariesTable = TableRegistry::get('Croogo/Taxonomy.Vocabularies');
       
$vocabularies = $vocabulariesTable->find('all')->contain([
           
'Types'
       
]);

       
$linkChoosers = [];
        foreach (
$vocabularies as $vocabulary) {
            foreach (
$vocabulary->types as $type) {
               
$title = h($type->title . ' ' . $vocabulary->title);
               
$linkChoosers[$title] = [
                   
'description' => h($vocabulary->description),
                   
'url' => [
                       
'prefix' => 'admin',
                       
'plugin' => 'Croogo/Taxonomy',
                       
'controller' => 'Taxonomies',
                       
'action' => 'index',
                       
$vocabulary->id,
                       
'?' => [
                           
'type' => $type->alias,
                           
'chooser' => 1,
                        ],
                    ],
                ];
            }
        }
       
Croogo::mergeConfig('Croogo.linkChoosers', $linkChoosers);
    }
}