/** * Test methods */ public function testMethods() { $form = new Form(); $step = new WizardStep(); $step->setStepForm($form); $this->assertSame($form, $step->getStepForm()); $step->setTextDomain('exampleTextDomain'); $this->assertSame('exampleTextDomain', $step->getTextDomain()); $step->setDescriptionPartial('exampleDescriptionPartial'); $this->assertSame('exampleDescriptionPartial', $step->getDescriptionPartial()); $this->assertFalse($step->canFinishWizard()); $this->assertTrue($step->canCancelWizard()); $this->assertFalse($step->canSkip()); $step->setOption('finish', true); $step->setOption('cancel', false); $step->setOption('skip', true); $this->assertTrue($step->canFinishWizard()); $this->assertFalse($step->canCancelWizard()); $this->assertTrue($step->canSkip()); $this->assertFalse($step->hasPreviousStep()); $step->setPreviousStep('examplePreviousStep'); $this->assertSame('examplePreviousStep', $step->getPreviousStep()); $this->assertTrue($step->hasPreviousStep()); $this->assertFalse($step->hasNextStep()); $step->setNextStep('exampleNextStep'); $this->assertSame('exampleNextStep', $step->getNextStep()); $this->assertTrue($step->hasNextStep()); }
/** * Get step model * * @param string $step * @return \Core\View\Model\WizardStep */ protected function getStep($step) { $model = new WizardStep(array('textDomain' => 'central')); switch ($step) { case $this->startStep: $auth = $this->getAuthenticationService(); $model->setOptions(array('finish' => false, 'next' => $auth->hasIdentity() ? 'layout' : 'user')); break; case 'user': $model->setOptions(array('finish' => false, 'next' => 'layout')); break; case 'layout': $settings = $this->getStepStore('settings'); if (empty($settings)) { $start = $this->getStepStore($this->startStep); $this->setStepStore('settings', array('headTitle' => $start['subdomain'], 'keywords' => $start['subdomain'], 'description' => $start['subdomain'])); } $model->setOptions(array('finish' => false, 'next' => 'content')); break; case 'content': $model->setOptions(array('finish' => true, 'next' => 'settings')); break; case 'settings': $auth = $this->getAuthenticationService(); $model->setOptions(array('finish' => true, 'next' => $auth->hasIdentity() ? 'check' : 'finish')); break; case 'check': $expired = false; $hash = $this->params()->fromQuery('hash'); if (!empty($hash)) { $data = $this->getServiceLocator()->get('Grid\\MultisiteCentral\\Model\\SiteWizardData'); if ($data->has($hash)) { $this->unsetStepStack(); foreach ($data->get($hash) as $stepName => $values) { $this->pushStepStack($stepName); $this->setStepStore($stepName, $values); } // $data->delete( $hash ); } else { $expired = true; } } if ($expired) { $model->setDescriptionPartial('grid/multisite-central/site-wizard/expired')->setOptions(array('finish' => false, 'next' => $this->startStep)); } else { $postfix = $this->getServiceLocator()->get('Config')['modules']['Grid\\MultisiteCentral']['domainPostfix']; $model->setVariable('stores', $this->getStepStores(false))->setVariable('domainPostfix', $postfix)->setDescriptionPartial('grid/multisite-central/site-wizard/check')->setOptions(array('finish' => true, 'next' => 'finish')); } break; default: throw new RuntimeException('Step: ' . $step . ' is not supported'); } if ($step == 'check') { $model->setStepForm(new Form()); } else { $model->setDescriptionPartial('grid/multisite-central/site-wizard/description')->setStepForm($this->getServiceLocator()->get('Form')->get('Grid\\MultisiteCentral\\SiteWizard\\' . ucfirst($step))); } return $model; }