public function configure() { unset($this['person_id']); $person = $this->getObject()->getPerson(); if (is_null($person)) { $person = new Person(); $this->getObject()->setPerson($person); } $personForm = new PersonForm($person, array('related_class' => 'tutor', 'embed_as' => 'person')); $personForm->getValidator('phone')->setOption('required', false); $this->embedMergeForm('person', $personForm); $this->getWidget('occupation_id')->setLabel('Occupation'); $this->setWidget('student_list', new csWidgetFormStudentMany(array('criteria' => new Criteria()))); $this->getWidget('student_list')->setLabel('Students'); $this->setValidator('student_list', new sfValidatorPass()); $this->setWidget('nationality', new sfWidgetFormChoice(array('choices' => BaseCustomOptionsHolder::getInstance('Nationality')->getOptions()))); $this->setValidator('nationality', new sfValidatorChoice(array('choices' => BaseCustomOptionsHolder::getInstance('Nationality')->getKeys(), 'required' => false))); $this->setDefault('student_list', array_map(create_function('$st', 'return $st->getStudentId();'), $this->getObject()->getStudentTutors())); }
public function actionAjax() { $model = new PersonForm(); // uncomment the following code to enable ajax-based validation /* if(isset($_POST['ajax']) && $_POST['ajax']==='person-form-edit_person-form') { echo CActiveForm::validate($model); Yii::app()->end(); } */ if (isset($_POST['PersonForm'])) { $model->attributes = $_POST['PersonForm']; if ($model->validate()) { // form inputs are valid, do something here print_r($_REQUEST); return; } } $this->render('person_form', array('model' => $model)); }
public function actionCalculate($id, $code) { // Загрузка таблицы для блока $table = Table::model()->findByPK((int) $id); if ($table === null) { throw new CHttpException('404'); } // Устанавливаем источники данных $person = null; $event = null; $personForm = new PersonForm(); $eventForm = new EventForm(); $this->performAjaxValidation(array($personForm, $eventForm), $code); if ($table->source_destiny_table == Table::SOURCE_FROM_USER && ($personFormData = Yii::app()->getRequest()->getPost('PersonForm')) !== null) { $personForm->setAttributes($personFormData); if ($personForm->validate()) { $person = new Person(); $person->setAttributes(array('name' => $personForm->name, 'gender' => $personForm->gender, 'date' => $personForm->date, 'time' => $personForm->getTime(), 'city_id' => $personForm->city_id)); } } if ($table->source_event_table == Table::SOURCE_FROM_USER && ($eventFormData = Yii::app()->getRequest()->getPost('EventForm')) !== null) { $eventForm->setAttributes($eventFormData); if ($eventForm->date != '' || $eventForm->city_id != '' || $eventForm->hour != '' || $eventForm->minute != '') { if ($eventForm->validate()) { $event = new Event(); $event->setAttributes(array('date' => $eventForm->date, 'time' => $eventForm->getTime(), 'city_id' => $eventForm->city_id)); } } } if (Yii::app()->request->isAjaxRequest) { if ($personForm->hasErrors() || $eventForm->hasErrors()) { $personForm->addErrors($eventForm->getErrors()); Yii::app()->ajax->failure($personForm->getErrors()); } else { $arr = explode('-', $code); $blockId = key_exists(0, $arr) ? (int) $arr[0] : ''; $this->widget('application.modules.bazi.widgets.TableWidget', array('model_id' => $table->id, 'block_id' => $blockId, 'person' => $person, 'event' => $event)); } } return false; }
/** * AJAX * Saves all changes made to a person * CODE: person_create * CODE: person_save_roles */ public function executeSave(sfWebRequest $request) { # security if (!$this->getUser()->hasCredential(array('Administrator', 'Staff', 'Pilot', 'Coordinator', 'Volunteer'), false)) { $this->getUser()->setFlash("warning", 'You don\'t have permission to access this url ' . $request->getReferer()); $this->redirect('dashboard/index'); } # validate person $person = PersonPeer::retrieveByPK($request->getParameter('person_id')); if (!$person instanceof Person) { return $this->renderText('Data is invalid! Please refresh and try again!'); } $saved_values = array(); $errors = array(); $form = new PersonForm($person, null, false); # email list $params = $request->getGetParameters(); $ids = array(); foreach ($params as $name => $value) { if (substr($name, 0, 11) == 'email_list_') { $ids[] = (int) substr($name, 11); } } $validator = new sfValidatorPropelChoice(array('model' => 'EmailList', 'column' => 'id', 'required' => false, 'multiple' => true, 'empty_value' => array())); $err = false; try { $ids = $validator->clean($ids); } catch (sfValidatorError $e) { $errors[] = 'Couldn\'t save mailing list. Please refresh and try again'; $err = true; } if (!$err) { $c = new Criteria(); $c->add(EmailListPersonPeer::PERSON_ID, $person->getId()); EmailListPersonPeer::doDelete($c); foreach ($ids as $id) { if ($request->getParameter('email_list_' . $id) == 1) { $email_list_person = new EmailListPerson(); $email_list_person->setListId($id); $email_list_person->setPersonId($person->getId()); $email_list_person->save(); $saved_values['email_list_' . $id] = 1; } else { $saved_values['email_list_' . $id] = 0; } } } $request_params = array_intersect_key($request->getGetParameters(), $form->getWidgetSchema()->getFields()); $params = array_merge($person->toArray(BasePeer::TYPE_FIELDNAME), $request->getGetParameters()); $params = array_intersect_key($params, $form->getWidgetSchema()->getFields()); $form->bind($params); if (!$form->isValid()) { foreach ($form->getErrorSchema()->getErrors() as $field => $e) { $errors[] = $e->__toString(); } } else { $form->save(); foreach ($request_params as $field => $v) { $saved_values[$field] = $form->getValue($field); } } /* # email blocked if ($request->hasParameter('email_blocked')) { $v = $form->getValidator('email_blocked'); try { $email_blocked = $v->clean($request->getParameter('email_blocked')); $person->setEmailBlocked($email_blocked == 1 ? 1 : 0); $saved_values['email_blocked'] = $person->getEmailBlocked(); }catch(sfValidatorError $e) { $errors[] = $e->__toString(); } } # email text only if ($request->hasParameter('email_text_only')) { $email_text_only = $request->getParameter('email_text_only'); $person->setEmailTextOnly($email_text_only == 1 ? 1 : 0); $saved_values['email_text_only'] = $person->getEmailTextOnly(); } # email if ($request->hasParameter('email')) { $validator = new sfValidatorEmail(array('required' => true), array('invalid' => 'Email address is invalid: %value%', 'required' => 'Email address is invalid')); $err = false; try { $email = $validator->clean($request->getParameter('email')); }catch(sfValidatorError $e) { $errors[] = $e->__toString(); $err = true; } if (!$err) { $person->setEmail($email); $saved_values['email'] = $email; } } # city $person->setCity($saved_values['city'] = $request->getParameter('city')); # county $person->setCounty($saved_values['county'] = $request->getParameter('county')); # state $person->setState($saved_values['state'] = $request->getParameter('state')); $person->save(); */ # roles if ($request->hasParameter('roles')) { if ($this->getUser()->hasCredential(array('Administrator'), false) == true) { $roles = $request->getParameter('roles'); $validator = new sfValidatorPropelChoice(array('model' => 'Role', 'column' => 'id', 'required' => false, 'multiple' => true, 'empty_value' => array())); $err = false; try { $roles = $validator->clean($roles); } catch (sfValidatorError $e) { $errors[] = 'Couldn\'t save roles. Please refresh and try again'; $err = true; } if (!$err) { $c = new Criteria(); $c->add(PersonRolePeer::PERSON_ID, $person->getId()); PersonRolePeer::doDelete($c); foreach ($roles as $role) { $person_role = new PersonRole(); $person_role->setPersonId($person->getId()); // if($s_role->getId()==$role){ // $role=$a_role->getId(); // } $person_role->setRoleId($role); $person_role->save(); } $saved_values['roles'] = $roles; } } else { $errors[] = 'You don\'t have permission to edit person roles!'; } } $this->errors = $errors; $this->saved_values = $saved_values; }
/** * Запускаем отрисовку виджета * * @return void */ public function run() { // Авторизован ли пользователь if (Yii::app()->user->isAuthenticated() === false) { return; } if (($user = Yii::app()->user->getProfile()) === null) { return; } // Загрузка таблицы для блока $table = Table::model()->with(array('descriptions'))->findByPK((int) $this->model_id); if ($table === null) { return; } // Устанавливаем источники данных $person = null; $event = null; $personForm = new PersonForm(); $eventForm = new EventForm(); $description = ''; if ($table->source_destiny_table == Table::SOURCE_USER) { $person = new Person(); $person->setAttributes(array('name' => $user->profile->name, 'gender' => $user->profile->gender, 'date' => $user->profile->birth_date, 'time' => $user->profile->birth_time, 'city_id' => $user->profile->city_id)); } elseif ($table->source_destiny_table == Table::SOURCE_ADMIN) { $person = $table->person; } elseif ($table->source_destiny_table == Table::SOURCE_FROM_USER && ($personFormData = Yii::app()->getRequest()->getPost('PersonForm')) !== null) { $personForm->setAttributes($personFormData); if ($personForm->validate()) { $person = new Person(); $person->setAttributes(array('name' => $personForm->name, 'gender' => $personForm->gender, 'date' => $personForm->date, 'time' => $personForm->getTime(), 'city_id' => $personForm->city_id)); } } if ($table->source_event_table == Table::SOURCE_USER) { $event = new Event(); $event->setAttributes(array('date' => date('Y-m-d'), 'time' => date('H:i'), 'city_id' => $user->profile->city_id)); } elseif ($table->source_event_table == Table::SOURCE_ADMIN) { $event = $table->event; } elseif ($table->source_event_table == Table::SOURCE_FROM_USER && ($eventFormData = Yii::app()->getRequest()->getPost('EventForm')) !== null) { $eventForm->setAttributes($eventFormData); if ($eventForm->date != '' || $eventForm->city_id != '' || $eventForm->hour != '' || $eventForm->minute != '') { if ($eventForm->validate()) { $event = new Event(); $event->setAttributes(array('date' => $eventForm->date, 'time' => $eventForm->getTime(), 'city_id' => $eventForm->city_id)); } } } if ($person !== null) { $validateResult = $person->validate(); $validateResult = $validateResult && ($event !== null ? $event->validate() : true); } if ($validateResult) { $calculator = new Calculator($person, $event); // Запуск расчета $calculator->run(); if ($table->active_luck_pillar > 0) { $calculator->numCurrentLuckColumn = (int) $table->active_luck_pillar; } // Определяем описание $description = $table->description; } else { if ($person !== null) { $personForm->addErrors($person->getErrors()); } if ($event !== null) { $eventForm->addErrors($event->getErrors()); } } if (Yii::app()->request->isAjaxRequest) { $this->controller->renderPartial('//bazi/widgets/TableWidget/_chart', array('model' => $table, 'calculator' => $calculator, 'description' => $description), false, true); } else { $this->render($this->view, array('model' => $table, 'calculator' => $calculator, 'description' => $description, 'personForm' => $personForm, 'eventForm' => $eventForm)); } }
public function init() { parent::init(); $this->addFieldExt('ids', '', Form::FIELD_NOT_RENDER); return $this; }