/**
  * Resolves a CKEditor toolbar item.
  *
  * @param string|array $item  The CKEditor item.
  * @param array        $items The CKEditor items.
  *
  * @throws \Ivory\CKEditorBundle\Exception\DependencyInjectionException If the toolbar item does not exist.
  *
  * @return array The resolved CKEditor toolbar item.
  */
 protected function resolveToolbarItem($item, array $items)
 {
     if (is_string($item) && $item[0] === '@') {
         $itemName = substr($item, 1);
         if (!isset($items[$itemName])) {
             throw DependencyInjectionException::invalidToolbarItem($itemName);
         }
         return $items[$itemName];
     }
     return $item;
 }
예제 #2
0
 /**
  * Merges the toolbars into the CKEditor configurations.
  *
  * @param array $config The CKEditor configuration.
  *
  * @return array The CKEditor configuration with merged toolbars.
  */
 protected function mergeToolbars(array $config)
 {
     $toolbars = array();
     $toolbarConfigs = array_merge($this->getDefaultToolbars(), $config['toolbars']['configs']);
     foreach ($toolbarConfigs as $name => $toolbar) {
         $toolbars[$name] = array();
         foreach ($toolbar as $item) {
             if (is_string($item) && $item[0] === '@') {
                 $itemName = substr($item, 1);
                 if (!isset($config['toolbars']['items'][$itemName])) {
                     throw DependencyInjectionException::invalidToolbarItem($itemName);
                 }
                 $item = $config['toolbars']['items'][$itemName];
             }
             $toolbars[$name][] = $item;
         }
     }
     foreach ($config['configs'] as $name => $configuration) {
         if (isset($configuration['toolbar']) && is_string($configuration['toolbar'])) {
             if (!isset($toolbars[$configuration['toolbar']])) {
                 throw DependencyInjectionException::invalidToolbar($configuration['toolbar']);
             }
             $config['configs'][$name]['toolbar'] = $toolbars[$configuration['toolbar']];
         }
     }
     unset($config['toolbars']);
     return $config;
 }