src/Contao/View/Contao2BackendView/GlobalButtonRenderer.php
private function renderButton(CommandInterface $command)
    {
        $extra = $command->getExtra();
        $label = $this->translate($command->getLabel());

        if (isset($extra['href'])) {
            $href = $extra['href'];
        } else {
            $href = '';
            foreach ($command->getParameters() as $key => $value) {
                $href .= '&' . $key . '=' . $value;
            }

            /** @var AddToUrlEvent $event */
            $event = $this->dispatcher->dispatch(
                ContaoEvents::BACKEND_ADD_TO_URL,
                new AddToUrlEvent(
                    $href
                )
            );

            $href = $event->getUrl();
        }

        if (null === $label) {
            $label = $command->getName();
        }

        $buttonEvent = new GetGlobalButtonEvent($this->environment);
        $buttonEvent
            ->setAccessKey(isset($extra['accesskey']) ? \trim($extra['accesskey']) : null)
            ->setAttributes(' ' . \ltrim($extra['attributes']))
            ->setClass($extra['class'])
            ->setKey($command->getName())
            ->setHref($href)
            ->setLabel($label)
            ->setTitle($this->translate((string) $command->getDescription()));
        $this->dispatcher->dispatch(GetGlobalButtonEvent::NAME, $buttonEvent);

        // Allow to override the button entirely - if someone sets empty string, we keep it.
        if (null !== ($html = $buttonEvent->getHtml())) {
            return $html;
        }

        // Use the view native button building.
        return \sprintf(
            '<a href="%s" class="%s" title="%s"%s>%s</a> ',
            $buttonEvent->getHref(),
            $buttonEvent->getClass(),
            StringUtil::specialchars($buttonEvent->getTitle()),
            $buttonEvent->getAttributes(),
            $buttonEvent->getLabel()
        );
    }
private function renderButton(CommandInterface $command)
    {
        $extra = $command->getExtra();
        $label = $this->translate($command->getLabel());

        if (isset($extra['href'])) {
            $href = $extra['href'];
        } else {
            $href = '';
            foreach ($command->getParameters() as $key => $value) {
                $href .= '&' . $key . '=' . $value;
            }

            /** @var AddToUrlEvent $event */
            $event = $this->dispatcher->dispatch(
                ContaoEvents::BACKEND_ADD_TO_URL,
                new AddToUrlEvent(
                    $href
                )
            );

            $href = $event->getUrl();
        }

        if (null === $label) {
            $label = $command->getName();
        }

        $buttonEvent = new GetGlobalButtonEvent($this->environment);
        $buttonEvent
            ->setAccessKey(isset($extra['accesskey']) ? \trim($extra['accesskey']) : null)
            ->setAttributes(' ' . \ltrim($extra['attributes']))
            ->setClass($extra['class'])
            ->setKey($command->getName())
            ->setHref($href)
            ->setLabel($label)
            ->setTitle($this->translate((string) $command->getDescription()));
        $this->dispatcher->dispatch(GetGlobalButtonEvent::NAME, $buttonEvent);

        // Allow to override the button entirely - if someone sets empty string, we keep it.
        if (null !== ($html = $buttonEvent->getHtml())) {
            return $html;
        }

        // Use the view native button building.
        return \sprintf(
            '<a href="%s" class="%s" title="%s"%s>%s</a> ',
            $buttonEvent->getHref(),
            $buttonEvent->getClass(),
            StringUtil::specialchars($buttonEvent->getTitle()),
            $buttonEvent->getAttributes(),
            $buttonEvent->getLabel()
        );
    }
private function renderButton ( CommandInterface $ command ) { $ extra = $ command -> getExtra ( ) ; $ label = $ this -> translate ( $ command -> getLabel ( ) ) ; if ( isset ( $ extra [ 'href' ] ) ) { $ href = $ extra [ 'href' ] ; } else { $ href = '' ; foreach ( $ command -> getParameters ( ) as $ key => $ value ) { $ href .= '&' . $ key . '=' . $ value ; } /** @var AddToUrlEvent $event */ $ event = $ this -> dispatcher -> dispatch ( ContaoEvents :: BACKEND_ADD_TO_URL , new AddToUrlEvent ( $ href ) ) ; $ href = $ event -> getUrl ( ) ; } if ( null === $ label ) { $ label = $ command -> getName ( ) ; } $ buttonEvent = new GetGlobalButtonEvent ( $ this -> environment ) ; $ buttonEvent -> setAccessKey ( isset ( $ extra [ 'accesskey' ] ) ? \ trim ( $ extra [ 'accesskey' ] ) : null ) -> setAttributes ( ' ' . \ ltrim ( $ extra [ 'attributes' ] ) ) -> setClass ( $ extra [ 'class' ] ) -> setKey ( $ command -> getName ( ) ) -> setHref ( $ href ) -> setLabel ( $ label ) -> setTitle ( $ this -> translate ( ( string ) $ command -> getDescription ( ) ) ) ; $ this -> dispatcher -> dispatch ( GetGlobalButtonEvent :: NAME , $ buttonEvent ) ; // Allow to override the button entirely - if someone sets empty string, we keep it. if ( null !== ( $ html = $ buttonEvent -> getHtml ( ) ) ) { return $ html ; } // Use the view native button building. return \ sprintf ( '<a href="%s" class="%s" title="%s"%s>%s</a> ' , $ buttonEvent -> getHref ( ) , $ buttonEvent -> getClass ( ) , StringUtil :: specialchars ( $ buttonEvent -> getTitle ( ) ) , $ buttonEvent -> getAttributes ( ) , $ buttonEvent -> getLabel ( ) ) ; }
Render a single header button.

@param CommandInterface $command The command definition.

@return string
Render a single header button .