src/CoreBundle/EventListener/DcGeneral/Table/DcaSettingCondition/PasteButtonListener.php
public function handle(GetPasteButtonEvent $event)
    {
        if (!$this->wantToHandle($event)) {
            return;
        }

        $environment = $event->getEnvironment();
        $model       = $event->getModel();
        $clipboard   = $environment->getClipboard();
        // Disable all buttons if there is a circular reference.
        if ($clipboard->fetch(
            Filter::create()->andActionIs(ItemInterface::CUT)->andModelIs(ModelId::fromModel($model))
        )) {
            $event
                ->setPasteAfterDisabled(true)
                ->setPasteIntoDisabled(true);

            return;
        }

        $typeName = $model->getProperty('type');
        // If setting does not support children, omit them.
        if ($model->getId() && !$this->conditionFactory->supportsNesting($typeName)) {
            $event->setPasteIntoDisabled(true);
            return;
        }

        $collector = new ModelCollector($environment);
        if (!$this->acceptsAnotherChild($model, $collector)) {
            $event->setPasteIntoDisabled(true);
        }

        $definition    = $environment->getDataDefinition();
        $mode          = $definition->getBasicDefinition()->getMode();
        $relationships = new RelationshipManager($definition->getModelRelationshipDefinition(), $mode);
        if (!$relationships->isRoot($model)
            && ($parent = $collector->searchParentOf($model))
            && !$this->acceptsAnotherChild($parent, $collector)) {
            $event->setPasteAfterDisabled(true);
        }
    }
public function handle(GetPasteButtonEvent $event)
    {
        if (!$this->wantToHandle($event)) {
            return;
        }

        $environment = $event->getEnvironment();
        $model       = $event->getModel();
        $clipboard   = $environment->getClipboard();
        // Disable all buttons if there is a circular reference.
        if ($clipboard->fetch(
            Filter::create()->andActionIs(ItemInterface::CUT)->andModelIs(ModelId::fromModel($model))
        )) {
            $event
                ->setPasteAfterDisabled(true)
                ->setPasteIntoDisabled(true);

            return;
        }

        $typeName = $model->getProperty('type');
        // If setting does not support children, omit them.
        if ($model->getId() && !$this->conditionFactory->supportsNesting($typeName)) {
            $event->setPasteIntoDisabled(true);
            return;
        }

        $collector = new ModelCollector($environment);
        if (!$this->acceptsAnotherChild($model, $collector)) {
            $event->setPasteIntoDisabled(true);
        }

        $definition    = $environment->getDataDefinition();
        $mode          = $definition->getBasicDefinition()->getMode();
        $relationships = new RelationshipManager($definition->getModelRelationshipDefinition(), $mode);
        if (!$relationships->isRoot($model)
            && ($parent = $collector->searchParentOf($model))
            && !$this->acceptsAnotherChild($parent, $collector)) {
            $event->setPasteAfterDisabled(true);
        }
    }
public function handle ( GetPasteButtonEvent $ event ) { if ( ! $ this -> wantToHandle ( $ event ) ) { return ; } $ environment = $ event -> getEnvironment ( ) ; $ model = $ event -> getModel ( ) ; $ clipboard = $ environment -> getClipboard ( ) ; // Disable all buttons if there is a circular reference. if ( $ clipboard -> fetch ( Filter :: create ( ) -> andActionIs ( ItemInterface :: CUT ) -> andModelIs ( ModelId :: fromModel ( $ model ) ) ) ) { $ event -> setPasteAfterDisabled ( true ) -> setPasteIntoDisabled ( true ) ; return ; } $ typeName = $ model -> getProperty ( 'type' ) ; // If setting does not support children, omit them. if ( $ model -> getId ( ) && ! $ this -> conditionFactory -> supportsNesting ( $ typeName ) ) { $ event -> setPasteIntoDisabled ( true ) ; return ; } $ collector = new ModelCollector ( $ environment ) ; if ( ! $ this -> acceptsAnotherChild ( $ model , $ collector ) ) { $ event -> setPasteIntoDisabled ( true ) ; } $ definition = $ environment -> getDataDefinition ( ) ; $ mode = $ definition -> getBasicDefinition ( ) -> getMode ( ) ; $ relationships = new RelationshipManager ( $ definition -> getModelRelationshipDefinition ( ) , $ mode ) ; if ( ! $ relationships -> isRoot ( $ model ) && ( $ parent = $ collector -> searchParentOf ( $ model ) ) && ! $ this -> acceptsAnotherChild ( $ parent , $ collector ) ) { $ event -> setPasteAfterDisabled ( true ) ; } }
Generate the paste button.

@param GetPasteButtonEvent $event The event.

@return void
Generate the paste button .