Neos\Neos\Setup\Step\SiteImportStep::buildForm PHP Method

buildForm() protected method

Returns the form definitions for the step
protected buildForm ( Neos\Form\Core\Model\FormDefinition $formDefinition ) : void
$formDefinition Neos\Form\Core\Model\FormDefinition
return void
    protected function buildForm(FormDefinition $formDefinition)
    {
        $page1 = $formDefinition->createPage('page1');
        $page1->setRenderingOption('header', 'Create a new site');
        $introduction = $page1->createElement('introduction', 'Neos.Form:StaticText');
        $introduction->setProperty('text', 'There are two ways of creating a site. Choose between the following:');
        $importSection = $page1->createElement('import', 'Neos.Form:Section');
        $importSection->setLabel('Import a site from an existing site package');
        $sitePackages = array();
        foreach ($this->packageManager->getFilteredPackages('available', null, 'neos-site') as $package) {
            $sitePackages[$package->getPackageKey()] = $package->getPackageKey();
        }
        if (count($sitePackages) > 0) {
            $site = $importSection->createElement('site', 'Neos.Form:SingleSelectDropdown');
            $site->setLabel('Select a site package');
            $site->setProperty('options', $sitePackages);
            $site->addValidator(new NotEmptyValidator());
            $sites = $this->siteRepository->findAll();
            if ($sites->count() > 0) {
                $prune = $importSection->createElement('prune', 'Neos.Form:Checkbox');
                $prune->setLabel('Delete existing sites');
            }
        } else {
            $error = $importSection->createElement('noSitePackagesError', 'Neos.Form:StaticText');
            $error->setProperty('text', 'No site packages were available, make sure you have an active site package');
            $error->setProperty('elementClassAttribute', 'alert alert-warning');
        }
        if ($this->packageManager->isPackageActive('Neos.SiteKickstarter')) {
            $separator = $page1->createElement('separator', 'Neos.Form:StaticText');
            $separator->setProperty('elementClassAttribute', 'section-separator');
            $newPackageSection = $page1->createElement('newPackageSection', 'Neos.Form:Section');
            $newPackageSection->setLabel('Create a new site package with a dummy site');
            $packageName = $newPackageSection->createElement('packageKey', 'Neos.Form:SingleLineText');
            $packageName->setLabel('Package Name (in form "Vendor.DomainCom")');
            $packageName->addValidator(new PackageKeyValidator());
            $siteName = $newPackageSection->createElement('siteName', 'Neos.Form:SingleLineText');
            $siteName->setLabel('Site Name (e.g. "domain.com")');
        } else {
            $error = $importSection->createElement('neosKickstarterUnavailableError', 'Neos.Form:StaticText');
            $error->setProperty('text', 'The Neos Kickstarter package (Neos.SiteKickstarter) is not installed, install it for kickstarting new sites (using "composer require typo3/neos-kickstarter")');
            $error->setProperty('elementClassAttribute', 'alert alert-warning');
        }
        $explanation = $page1->createElement('explanation', 'Neos.Form:StaticText');
        $explanation->setProperty('text', 'Notice the difference between a site package and a site. A site package is a Flow package that can be used for creating multiple site instances.');
        $explanation->setProperty('elementClassAttribute', 'alert alert-info');
        $step = $this;
        $callback = function (FinisherContext $finisherContext) use($step) {
            $step->importSite($finisherContext);
        };
        $this->closureFinisher = new ClosureFinisher();
        $this->closureFinisher->setOption('closure', $callback);
        $formDefinition->addFinisher($this->closureFinisher);
        $formDefinition->setRenderingOption('skipStepNotice', 'You can always import a site using the site:import command');
    }