Beispiel #1
0
 /**
  * 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;
 }