Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 /**
  * 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"'));
 }
Esempio n. 3
0
 /**
  * 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());
 }