public function onHeadEnd(\CmsModule\Events\RenderArgs $args) { if ($this->analyticsManager->getActivated() && $args->getPresenter() instanceof PagePresenter) { $control = $this->widgetManager->getWidget('googleAnalytics')->invoke(); $control->render($this->analyticsManager->getAccountId()); } }
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 --'); }
/** * Component factory. Delegates the creation of components to a createComponent<Name> method. * * @param string component name * @return IComponent the created component (optionally) */ protected function createComponent($name) { // parent if (($control = parent::createComponent($name)) == TRUE) { return $control; } // widget from widgetManager if ($this->widgetManager->hasWidget($name)) { return $this->widgetManager->getWidget($name)->invoke(); } throw new \Nette\InvalidArgumentException("Component or widget with name '{$name}' does not exist."); }
/** * @param $element * @param $name * @param LayoutEntity $layout * @param PageEntity $page * @param RouteEntity $route * @param LanguageEntity $language * @return BaseElement */ public function createInstance($element) { return $this->widgetManager->getWidget(self::ELEMENT_PREFIX . $element)->invoke(); }