/** * Handle the paste into and after buttons. * * @param GetPasteButtonEvent $event The event. * * @return void * * @throws \RuntimeException When more than one model is contained within the clipboard. */ public function handle(GetPasteButtonEvent $event) { $this->circularReference = $event->isCircularReference(); $this->environment = $event->getEnvironment(); $this->provider = $this->environment->getDataProvider(); $this->providerName = $this->provider->getEmptyModel()->getProviderName(); $clipboard = $this->environment->getClipboard(); $this->currentModel = $event->getModel(); $this->disablePI = true; $this->disablePA = true; // Only run for a MetaModels and if both values already disabled return here. if (substr($this->providerName, 0, 3) !== 'mm_' || $event->isPasteIntoDisabled() && $event->isPasteAfterDisabled()) { return; } $this->checkForAction($clipboard, 'copy'); $this->checkForAction($clipboard, 'create'); $this->checkForAction($clipboard, 'cut'); $event->setPasteAfterDisabled($this->disablePA)->setPasteIntoDisabled($this->disablePI); }
/** * Render the paste into button. * * @param GetPasteButtonEvent $event The event that has been triggered. * * @return string */ private function renderPasteIntoButton(GetPasteButtonEvent $event) { if (null !== ($value = $event->getHtmlPasteInto())) { return $value; } $label = $this->translate('pasteinto.0'); if ($event->isPasteIntoDisabled()) { return $this->renderImageAsHtml('pasteinto_.gif', $label, 'class="blink"'); } if ('pasteinto.1' !== ($opDesc = $this->translate('pasteinto.1'))) { $title = sprintf($opDesc, $event->getModel()->getId()); } else { $title = sprintf('%s id %s', $label, $event->getModel()->getId()); } return sprintf(' <a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a>', $event->getHrefInto(), specialchars($title), $this->renderImageAsHtml('pasteinto.gif', $label, 'class="blink"')); }
/** * Render the paste into button. * * @param GetPasteButtonEvent $event The event that has been triggered. * * @return string */ public function renderPasteIntoButton(GetPasteButtonEvent $event) { if ($event->getHtmlPasteInto() !== null) { return $event->getHtmlPasteInto(); } $strLabel = $this->translate('pasteinto.0', $event->getModel()->getProviderName()); if ($event->isPasteIntoDisabled()) { /** @var GenerateHtmlEvent $imageEvent */ $imageEvent = $this->getEnvironment()->getEventDispatcher()->dispatch(ContaoEvents::IMAGE_GET_HTML, new GenerateHtmlEvent('pasteinto_.gif', $strLabel, 'class="blink"')); return $imageEvent->getHtml(); } /** @var GenerateHtmlEvent $imageEvent */ $imageEvent = $this->getEnvironment()->getEventDispatcher()->dispatch(ContaoEvents::IMAGE_GET_HTML, new GenerateHtmlEvent('pasteinto.gif', $strLabel, 'class="blink"')); $opDesc = $this->translate('pasteinto.1', $this->getEnvironment()->getDataDefinition()->getName()); if (strlen($opDesc)) { $title = sprintf($opDesc, $event->getModel()->getId()); } else { $title = sprintf('%s id %s', $strLabel, $event->getModel()->getId()); } return sprintf(' <a href="%s" title="%s" %s>%s</a>', $event->getHrefInto(), specialchars($title), 'onclick="Backend.getScrollOffset()"', $imageEvent->getHtml()); }