/** * Constructs a new step view * @param zibo\orm\builder\wizard\BuilderWizard $wizard */ public function __construct(BuilderWizard $wizard, $fieldsAction) { parent::__construct(self::TEMPLATE); $modelTable = $wizard->getVariable(BuilderWizard::VARIABLE_MODEL_TABLE); $fields = $modelTable->getFields(); $isFieldNameRequired = count($fields) <= 1; $this->set('wizard', $wizard); $this->set('isFieldNameRequired', $isFieldNameRequired); $this->addInlineJavascript('ziboOrmInitializeBuilderWizardField(' . ($isFieldNameRequired ? 'true' : 'false') . ', "' . $fieldsAction . '");'); }
/** * Action to invoke the model wizard * @param string $action Name of the model to reset the wizard with, 'reset' to restart the wizard * @return null */ public function indexAction($action = null, $actionArgument = null, $modelAction = null, $modelActionArgument = null) { $modelName = null; $fieldName = null; if ($action == self::ACTION_MODEL) { $modelName = $actionArgument; if ($modelAction == self::ACTION_FIELD) { if (!$modelActionArgument) { $fieldName = true; } else { $fieldName = $modelActionArgument; } } } $wizard = new BuilderWizard($this->request->getBasePath(), $modelName); if ($fieldName !== null) { $wizard->limitToField($fieldName); } elseif ($modelAction == self::ACTION_LIMIT) { switch ($modelActionArgument) { case BuilderWizard::LIMIT_MODEL: $wizard->limitToModel(); break; case BuilderWizard::LIMIT_DATA_FORMAT: $wizard->limitToDataFormats(); break; case BuilderWizard::LIMIT_INDEX: $wizard->limitToIndex(); break; } $this->response->setRedirect($this->request->getBasePath()); return; } $cancelUrl = $this->request->getBaseUrl() . '/' . Module::ROUTE_ADMIN; if (!$wizard->isNewModel()) { $modelTable = $wizard->getModelTable(); $cancelUrl .= '/' . BuilderController::ACTION_DETAIL . '/' . $modelTable->getName(); } $wizard->setCancelUrl($cancelUrl); if ($action == self::ACTION_RESET) { $wizard->reset(); $this->response->setRedirect($this->request->getBasePath()); return; } $wizard->invoke($this->request, $this->response); $view = $this->response->getView(); if ($view instanceof HtmlView) { $view = new BuilderWizardView($view); $sidebar = $view->getSidebar(); $sidebar->addPanel(new SidebarView($wizard)); $sidebar->setInformation(self::TRANSLATION_INFORMATION, true); } $this->response->setView($view); }
/** * Construct a new model filter view * @param zibo\orm\builder\form\ModelFilterForm $filterForm * @return null */ public function __construct(BuilderWizard $wizard) { parent::__construct(self::TEMPLATE); $translator = I18n::getInstance()->getTranslator(); $modelTable = $wizard->getModelTable(); $currentStep = $wizard->getCurrentStep(); $steps = array(); if ($modelTable) { $generalStep = $translator->translate(self::TRANSLATION_STEP_GENERAL_MODEL, array('model' => $modelTable->getName())); } else { $generalStep = $translator->translate(self::TRANSLATION_STEP_GENERAL); } $fieldNewStep = $translator->translate(self::TRANSLATION_STEP_FIELD_NEW); $dataFormatStep = $translator->translate(self::TRANSLATION_STEP_DATA_FORMAT); $indexStep = $translator->translate(self::TRANSLATION_STEP_INDEX); $finishStep = $translator->translate(self::TRANSLATION_STEP_FINISH); switch ($currentStep) { case ModelGeneralStep::NAME: $currentStep = $generalStep; break; case DataFormatStep::NAME: $currentStep = $dataFormatStep; break; case IndexStep::NAME: $currentStep = $indexStep; break; case FinishStep::NAME: $currentStep = $finishStep; break; } if ($wizard->isLimitedToModel()) { $steps[$generalStep] = false; } elseif ($wizard->isLimitedToDataFormats()) { $steps[$dataFormatStep] = false; } elseif ($wizard->isLimitedToIndex()) { $steps[$indexStep] = false; } else { $limitField = $wizard->getLimitField(); if (!$limitField) { $steps[$generalStep] = false; } if ($limitField && $limitField !== true) { $step = $translator->translate(self::TRANSLATION_STEP_FIELD, array('field' => $limitField)); if ($currentStep == FieldStep::NAME) { $currentStep = $step; } $steps[$step] = false; } else { $isFieldStep = $currentStep == FieldStep::NAME; $currentFieldName = null; if ($isFieldStep) { $currentFieldName = $wizard->getVariable(BuilderWizard::VARIABLE_FIELD); $currentStep = null; } if ($modelTable) { $fields = $modelTable->getFields(); foreach ($fields as $fieldName => $field) { if ($fieldName == ModelTable::PRIMARY_KEY) { continue; } $step = $translator->translate(self::TRANSLATION_STEP_FIELD, array('field' => $fieldName)); if ($fieldName == $currentFieldName) { $currentStep = $step; } $steps[$step] = false; } } if (!$currentStep) { $currentStep = $fieldNewStep; } $steps[$fieldNewStep] = false; } if (!$limitField) { $steps[$dataFormatStep] = false; $steps[$indexStep] = false; } } $steps[$finishStep] = false; $this->set('currentStep', $currentStep); $this->set('steps', $steps); }