/** * Create the "new" button. * * @return CommandInterface|null */ protected function getCreateModelCommand() { $environment = $this->getEnvironment(); $definition = $environment->getDataDefinition(); $basicDefinition = $definition->getBasicDefinition(); $providerName = $environment->getDataDefinition()->getName(); $mode = $basicDefinition->getMode(); $config = $this->getEnvironment()->getController()->getBaseConfig(); $sorting = $this->getManualSortingProperty(); if ($serializedPid = $environment->getInputProvider()->getParameter('pid')) { $pid = IdSerializer::fromSerialized($serializedPid); } else { $pid = new IdSerializer(); } if ($basicDefinition->isClosed()) { return null; } $command = new Command(); $parameters = $command->getParameters(); $extra = $command->getExtra(); $extra['class'] = 'header_new'; $extra['accesskey'] = 'n'; $extra['attributes'] = 'onclick="Backend.getScrollOffset();"'; $command->setName('button_new')->setLabel($this->translate('new.0', $providerName))->setDescription($this->translate('new.1', $providerName)); $this->getPanel()->initialize($config); // Add new button. if ($mode == BasicDefinitionInterface::MODE_FLAT || $mode == BasicDefinitionInterface::MODE_PARENTEDLIST && !$sorting) { $parameters['act'] = 'create'; // Add new button. if ($pid->getDataProviderName() && $pid->getId()) { $parameters['pid'] = $pid->getSerialized(); } } elseif ($mode == BasicDefinitionInterface::MODE_PARENTEDLIST || $mode == BasicDefinitionInterface::MODE_HIERARCHICAL) { if ($environment->getClipboard()->isNotEmpty()) { return null; } $after = IdSerializer::fromValues($definition->getName(), 0); $parameters['act'] = 'paste'; $parameters['mode'] = 'create'; if ($mode == BasicDefinitionInterface::MODE_PARENTEDLIST) { $parameters['after'] = $after->getSerialized(); } if ($pid->getDataProviderName() && $pid->getId()) { $parameters['pid'] = $pid->getSerialized(); } } return $command; }