/** * 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()); } }
/** * Handle the event. * * @param HandleSubmitEvent $event The event. * * @return void */ public function handleEvent(HandleSubmitEvent $event) { $dispatcher = func_get_arg(2); $currentUrl = $this->environment->get('uri'); switch ($event->getButtonName()) { case 'save': // Could be a create action, always redirect to current page with edit action and id properly set. $url = UrlBuilder::fromUrl($currentUrl)->setQueryParameter('act', 'edit')->setQueryParameter('id', ModelId::fromModel($event->getModel())->getSerialized()); $dispatcher->dispatch(ContaoEvents::CONTROLLER_REDIRECT, new RedirectEvent($url->getUrl())); break; case 'saveNcreate': // We want to create a new model, set create action and pass the current id as "after" to keep sorting. $after = ModelId::fromModel($event->getModel()); $url = UrlBuilder::fromUrl($currentUrl)->unsetQueryParameter('id')->setQueryParameter('act', 'create')->setQueryParameter('after', $after->getSerialized()); $dispatcher->dispatch(ContaoEvents::CONTROLLER_REDIRECT, new RedirectEvent($url->getUrl())); break; default: // Do nothing. } }
/** * Generate an URL for downloading the given file. * * @param string $strFile The file that shall be downloaded. * * @return string */ protected function getDownloadLink($strFile) { return UrlBuilder::fromUrl(\Environment::get('request'))->setQueryParameter('file', urlencode($strFile))->getUrl(); }