/** * Builds the navigation array items. * * @return array */ private function buildNavigationItems() { $manager = new MPFormsFormManager($this->form); $steps = range(0, $manager->getNumberOfSteps() - 1); $items = []; $firstFailingStep = $manager->validateSteps(); foreach ($steps as $step) { // Check if step can be accessed $cantBeAccessed = true !== $firstFailingStep && $step > $firstFailingStep; // Only active if current step or step cannot be accessed because of // previous steps $isActive = $step === $manager->getCurrentStep() || $cantBeAccessed; $items[] = ['isActive' => $isActive, 'class' => 'step_' . $step . ($cantBeAccessed ? ' forbidden' : ''), 'href' => $manager->getUrlForStep($step), 'title' => $manager->getLabelForStep($step), 'link' => $manager->getLabelForStep($step), 'nofollow' => true]; } \Haste\Generator\RowClass::withKey('class')->addFirstLast()->addEvenOdd()->applyTo($items); return $items; }
/** * Replace InsertTags. * * @param string $tag * * @return int|false */ public function replaceTags($tag) { if (strpos($tag, 'mp_forms::') === false) { return false; } $chunks = explode('::', $tag); $formId = $chunks[1]; $value = $chunks[2]; $form = \FormModel::findByPk($formId); $manager = new MPFormsFormManager($form->id); switch ($value) { case 'current': return (int) $manager->getCurrentStep() + 1; case 'total': return $manager->getNumberOfSteps(); case 'percentage': return ($manager->getCurrentStep() + 1) / $manager->getNumberOfSteps() * 100; case 'numbers': return $manager->getCurrentStep() + 1 . ' / ' . $manager->getNumberOfSteps(); } }