name = $name; $this->component = [ 'href' => $href, 'class' => $componentClass, 'text' => $message->escaped(), 'data-event-name' => 'menu.' . $trackingCode, ]; } /** * Named constructor for easier class creation when we want to additionally set things * like title or nodeId. Mostly a syntax sugar. * @param string $name Unique identifier * @param string $href And URL menu entry points to * @param string $componentClass A CSS class injected to component * @param Message $message Message * @param string $trackingCode Analytics tracking code * @return self */ public static function create( $name, $href, $componentClass, Message $message, $trackingCode ) { return new PageActionMenuEntry( $name, $href, $componentClass, $message, $trackingCode ); } /** * @inheritDoc */ public function getName() { return $this->name; } /** * @inheritDoc * */ public function getCSSClasses(): array { return []; } /** * @inheritDoc */ public function getComponents(): array { return [ $this->component ]; } /** * Set the menu entry title * @param Message $message Title message * @return $this */ public function setTitle( Message $message ): self { $this->component['title'] = $message->escaped(); return $this; } /** * Set the Menu entry ID html attribute * @param string $nodeID * @return $this */ public function setNodeID( $nodeID ): self { $this->component['id'] = $nodeID; return $this; } }