/** * Merges the toolbars into the CKEditor configs. * * @param array $config The CKEditor configuration. * * @throws \Ivory\CKEditorBundle\Exception\DependencyInjectionException If a toolbar does not exist. * * @return array The CKEditor configuration with merged toolbars. */ protected function mergeToolbars(array $config) { $resolvedToolbars = $this->resolveToolbars($config); unset($config['toolbars']); foreach ($config['configs'] as $name => $configuration) { if (!isset($configuration['toolbar']) || !is_string($configuration['toolbar'])) { continue; } if (!isset($resolvedToolbars[$configuration['toolbar']])) { throw DependencyInjectionException::invalidToolbar($configuration['toolbar']); } $config['configs'][$name]['toolbar'] = $resolvedToolbars[$configuration['toolbar']]; } return $config; }
/** * 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; }