public function handleAttached(Form $form) { $presenters = array(); foreach ($form->presenter->context->findByTag('presenter') as $name => $item) { if (substr($name, -7) === 'Factory') { $name = substr($name, 0, -7); } $presenter = $this->presenterFactory->formatPresenterFromServiceName($name); $class = $this->presenterFactory->getPresenterClass($presenter); if (!is_subclass_of($class, '\\CmsModule\\Content\\Presenters\\PagePresenter')) { continue; } $name = substr($name, 0, -9); $name = explode('.', $name); $name = implode(':', $name); $presenters[$name] = $name; } $components = array(); foreach ($this->widgetManager->getWidgets() as $name => $factory) { $components[$factory['class']] = ucfirst($name) . 'Control'; } $form['presenter']->setItems($presenters); $form['component']->setItems($components); $module = $form['target']->value ? $form['target']->value : key($this->modules); $form['layout']->setItems(array_keys($this->templateManager->getLayoutsByModule($module)), FALSE)->setDisabled(FALSE)->setPrompt('-- All --'); }
/** * Array of all resources. * * @return array */ protected function scanResources() { $ret = array(); foreach ($this->presenterFactory->getPresenters() as $class => $name) { $schema = $this->reader->getSchema($class); foreach ($schema as $item) { if (!array_key_exists($item['resource'], $ret)) { $ret[$item['resource']] = array(); } $ret[$item['resource']] = array_unique(array_merge($ret[$item['resource']], $item['privilege'] ? (array) $item['privilege'] : array())); } } return $ret; }