/** * Clear the button if the User is not admin. * * @param GetOperationButtonEvent $event The event. * * @return void */ public function getOperationButton(GetOperationButtonEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel') { return; } $command = $event->getCommand(); if ($command->getName() == 'dca_combine') { $event->setHref(UrlBuilder::fromUrl($event->getHref())->setQueryParameter('id', ModelId::fromValues('tl_metamodel_dca_combine', $event->getModel()->getId())->getSerialized())->getUrl()); } }
/** * Check if we have to add the "Create variant" button. * * @param GetOperationButtonEvent $event The event. * * @return void */ public function createButton(GetOperationButtonEvent $event) { if ($event->getCommand()->getName() != 'createvariant') { return; } /** @var Model $model */ $model = $event->getModel(); $metamodel = $model->getItem()->getMetaModel(); if (!$metamodel->hasVariants() || $model->getProperty('varbase') === '0') { $event->setHtml(''); } }
/** * Retrieve the arguments for the callback. * * @param GetOperationButtonEvent $event The event being emitted. * * @return array */ public function getArgs($event) { $extra = $event->getCommand()->getExtra(); return array($event->getModel()->getPropertiesAsArray(), $this->buildHref($event->getCommand()), $event->getLabel(), $event->getTitle(), isset($extra['icon']) ? $extra['icon'] : null, $event->getAttributes(), $event->getEnvironment()->getDataDefinition()->getName(), $event->getEnvironment()->getDataDefinition()->getBasicDefinition()->getRootEntries(), $event->getChildRecordIds(), $event->getCircularReference(), $event->getPrevious() ? $event->getPrevious()->getId() : null, $event->getNext() ? $event->getNext()->getId() : null); }
/** * @param GetOperationButtonEvent $event */ public function prepareButton(GetOperationButtonEvent $event) { if ($event->getCommand()->getName() != 'ga_enabled') { return; } /** @var \Pimple $container */ global $container; /** @var SuperglobalsService $superGlobals */ $superGlobals = $container['avisota.superglobals']; /** @var EntityModel $model */ $model = $event->getModel(); /** @var Message $message */ $message = $model->getEntity(); if ($message->getGaEnable()) { $title = $message->getGaCampaign() ? $message->getGaCampaign() : $message->getSubject(); $title = sprintf($superGlobals->getLanguage('orm_avisota_message/ga_campain_title'), $title); $generateHtmlEvent = new GenerateHtmlEvent('assets/avisota/message-analytics-ga/images/analytics_icon.png', $title, sprintf('title="%s"', htmlentities($title, ENT_QUOTES, 'UTF-8'))); $event->getEnvironment()->getEventDispatcher()->dispatch(ContaoEvents::IMAGE_GET_HTML, $generateHtmlEvent); $event->setHtml($generateHtmlEvent->getHtml()); } else { $event->setHtml(''); } }
/** * Check if the Layouts by this theme is in used by message. * If layout in used, return where and can´t delete the theme. * * @param GetOperationButtonEvent $event The event. * * @return void */ public function deleteInformation(GetOperationButtonEvent $event) { $command = $event->getCommand(); $environment = $event->getEnvironment(); $dataDefinition = $environment->getDataDefinition(); if ($dataDefinition->getName() !== 'orm_avisota_theme' || $command->getName() !== 'delete') { return; } $themeEntity = $event->getModel()->getEntity(); $layoutCollection = $themeEntity->getLayouts(); $information = ''; while ($layoutEntity = $layoutCollection->current()) { $currentInformation = $this->getLayoutUsedInformation($layoutEntity, $environment); if (!$currentInformation) { $layoutCollection->next(); continue; } $information .= $currentInformation; $layoutCollection->next(); } if (!$information) { return; } $translator = $environment->getTranslator(); $information = $translator->translate('delete.information.theme', 'MCE') . $information; $event->setAttributes('onclick="alert(\'' . $information . '\'); Backend.getScrollOffset(); return false;"'); }
/** * Check if the Layout is in used by message. * If this in used, return where and can´t delete it. * * @param GetOperationButtonEvent $event The event. * * @return void */ public function deleteInformation(GetOperationButtonEvent $event) { $command = $event->getCommand(); $environment = $event->getEnvironment(); $dataDefinition = $environment->getDataDefinition(); if ($dataDefinition->getName() !== 'orm_avisota_layout' || $command->getName() !== 'delete') { return; } $entity = $event->getModel()->getEntity(); $dataProvider = $environment->getDataProvider(); $entityManager = $dataProvider->getEntityManager(); $repository = $entityManager->getRepository('Avisota\\Contao:Message'); $messageResult = $repository->findBy(array('layout' => $entity->getId()), array('subject' => 'ASC')); if (count($messageResult) < 1) { return; } $translator = $environment->getTranslator(); $information = $translator->translate('delete.information.layout', 'MCE'); foreach ($messageResult as $message) { $information .= "\\n"; $information .= $message->getCategory()->getTitle(); $information .= ' => '; $information .= $message->getSubject(); } $event->setAttributes('onclick="alert(\'' . $information . '\'); Backend.getScrollOffset(); return false;"'); }