Example #1
0
 protected function completedGUI()
 {
     $this->tabs['completed'] = 'Заполненные формы';
     $clientFormData = new Admin_Model_ClientFormData();
     //загружаем данные формы
     $formData = Gcontroller::loadclientFormStructure($this->nodeData['tree_link']);
     /*    $clientFormData = $typeClientForm->fetchRow( K_Db_Select::create()->where( "type_clientform_id=$clientFormKey" ) );
         $this->view->formStructure=unserialize( $clientFormData['type_clientform_content'] );*/
     $formStructure = json_decode($formData['form_structure']);
     $formStructure = K_Tree_Types::objectToArray($formStructure);
     $fieldCount = 0;
     $tableHead = '';
     foreach ($formStructure as $v) {
         if (isset($v['values']['name']) && isset($v['values']['label'])) {
             $tableHead .= '<th title="' . $v['values']['label'] . '">' . K_Str::trunc_ws($v['values']['label'], 15, $wordsafe = false, $dots = true) . '</th>';
             $colsKeys[] = $v['values']['name'];
             $fieldCount++;
         }
         if ($fieldCount > 3) {
             break;
         }
     }
     $tableHead = '<tr><th>Дата</th>' . $tableHead . '<th>&nbsp;&nbspУправление&nbsp;&nbsp&nbsp;&nbsp</th></tr>';
     return <<<HTML
      <script type="text/javascript">
                \$('#complited-forms-table-wrapper').ajaxLeaf(
 public function updateAction()
 {
     $this->disableRender = true;
     $typesTable = new K_Tree_Types_Model();
     $typeId = $this->getParam('id');
     $types = $typesTable->select()->where('`type_id`=' . (int) $typeId)->fetchRow();
     $types = $types->toArray();
     $form = new K_Form();
     $allowedkeys = array('type_desc', 'type_fields');
     $values = array();
     $formData = $form->getData();
     $formPostArray = isset($_POST['type_fields']) ? $_POST['type_fields'] : false;
     parse_str(substr($_POST['type_fields'], 1), $formPostArray);
     if ($formPostArray != false) {
         K_Loader::load('formbuilder', APP_PATH . '/plugins');
         $formBuilder = new Formbuilder($formPostArray);
         $formArray = $formBuilder->get_encoded_form_array();
     } else {
         throw new Exception("Не заданы поля для нового типа!");
     }
     if (!$formData) {
         throw new Exception("Невозможно обработать форму без данных!");
     }
     foreach ($formData as $elementKey => $elementValue) {
         if (in_array($elementKey, $allowedkeys)) {
             if (is_string($elementValue)) {
                 $elementValue = trim($elementValue);
             }
             $values[$elementKey] = $elementValue;
             if ($elementKey == 'type_fields' && json_decode($formArray['form_structure']) == null && !empty($formArray['form_structure'])) {
                 throw new Exception("Поля переданы не в json-формате! " . json_last_error());
             }
         }
     }
     K_Tree_Types::update($types['type_name'], $values['type_desc'], $formArray['form_structure'], $formArray);
     echo 'Тип успешно обновлён!';
 }
 protected function saveAction()
 {
     if (!K_Request::isPost()) {
         //ошибка
         $this->putAjax("ERROR");
     }
     $typeClientForm = new Admin_Model_ClientForm();
     //загружаем данные формы
     $formData = Gcontroller::loadclientFormStructure(trim($_POST['tree_link']));
     /*    $clientFormData = $typeClientForm->fetchRow( K_Db_Select::create()->where( "type_clientform_id=$clientFormKey" ) );
           $this->view->formStructure=unserialize( $clientFormData['type_clientform_content'] );*/
     $formStructure = json_decode($formData['form_structure']);
     $formStructure = K_Tree_Types::objectToArray($formStructure);
     foreach ($formStructure as $v) {
         if ($v['type'] == 'xform') {
             //сохраняем дополнительный настройки
             $Xform = $v['values'];
         } else {
             // сохраним ключи полей, что-бы сохранять в базу только то что надо.
             $formFields[] = $v['values']['name'];
             if (isset($v['values']['name']) && isset($v['vlds'])) {
                 $name = $v['values']['name'];
                 $nameAccos[$name] = $v['values']['label'];
                 $vlds = $v['vlds'];
                 $fieldVlds = array();
                 foreach ($vlds as $vld) {
                     if ($vld == "requred") {
                         $fieldVlds['requred'] = true;
                     } else {
                         $fieldVlds[] = $vld;
                     }
                 }
                 $validate[$name] = $fieldVlds;
             }
         }
     }
     // выбираем из поста только нужные поля
     foreach ($_POST as $k => $v) {
         if (in_array($k, $formFields)) {
             if (is_string($v)) {
                 $data[$k] = trim($v);
             }
             $data[$k] = $v;
         }
     }
     if ($typeClientForm->isValidRow($data, $validate)) {
         $clientFormData = new Admin_Model_ClientFormData();
         $saveDate = array('clientform_data_type' => trim($_POST['tree_link']), 'clientform_data_content' => serialize($data));
         // сахроняем форму и отправляем письма.
         if ($Xform['ck_save_db']) {
             $clientFormData->save($saveDate);
         }
         $render = new K_TemplateRender();
         $render->setTags($data);
         $mailer = new K_Mail();
         if (isset($Xform['ck_admin_email']) && $Xform['admin_mail_tmp'] && $Xform['admin_email']) {
             //Отправляем письмо на емеил админа
             $mailText = $render->assemble($Xform['admin_mail_tmp']);
             $mailer->setBody($mailText);
             $mailer->addTo($Xform['admin_email']);
             $mailer->send('*****@*****.**', 'Ползователь заполнил форму');
         }
         //  echo $data['ck_client_email'].'    '.$Xform['ck_client_email'].' '.$Xform['client_email_field_name'].'  '.$Xform['client_mail_tmp'];
         if (isset($Xform['client_email_ck_name']) && $Xform['client_email_ck_name']) {
             $clientEmailCkName = $Xform['client_email_ck_name'];
         }
         // echo $data[$clientEmailCkName].'    '.$Xform['ck_client_email'].' '.$Xform['client_email_field_name'].'  '.$Xform['client_mail_tmp'];
         if (isset($data[$clientEmailCkName]) && isset($Xform['ck_client_email']) && isset($Xform['client_email_field_name']) && isset($Xform['client_mail_tmp'])) {
             $clientEmailFieldName = $Xform['client_email_field_name'];
             if (isset($data[$clientEmailFieldName])) {
                 //Отправляем письмо на емеил пользователя
                 $mailText = $render->assemble($Xform['client_mail_tmp']);
                 $mailer->setBody($mailText);
                 $mailer->addTo($data[$clientEmailFieldName]);
                 $mailer->send('*****@*****.**', 'Ваша форма удачно отправленна');
             }
         }
         $jsonReturn['error'] = false;
         $jsonReturn['msg'] = '<strong>ОК:<strong> Форма удачно отправлена';
     } else {
         $jsonReturn['error'] = true;
         $jsonReturn['msg'] = $typeClientForm->getErrorsD($nameAccos);
     }
     if (K_Request::isAjax()) {
         $this->putJSON($jsonReturn);
     } else {
         $this->putAjax("ERROR");
     }
     //
     /*else{
       if($jsonReturn['error'] = false){
       
       //заготовка на случай если js отключен
       //загрузка промежуточного шаблона с выводом ошибок и формой для продолжения заполнения 
       
       
       }  
       else{
       // промежуточный шаблон с нотификацией о правильном заполнении и редирект туда от куда пришол пользователь.    
       
       
       }
       
       }*/
 }
Example #4
0
 public function completedFormAction()
 {
     $clientFormData = new Admin_Model_ClientFormData();
     $clientFormDataKey = $this->getParam('key');
     $data = $clientFormData->fetchRow(K_Db_Select::create()->where(array('clientform_data_id' => $clientFormDataKey)));
     //вытягиваем структуру формы.
     $formData = Gcontroller::loadclientFormStructure($data['clientform_data_type']);
     $formStructure = json_decode($formData['form_structure']);
     $formStructure = K_Tree_Types::objectToArray($formStructure);
     //выбираем пары имя, label
     foreach ($formStructure as $v) {
         if (isset($v['values']['name']) && isset($v['values']['label'])) {
             $name = $v['values']['name'];
             $lable = $v['values']['label'];
             $fields[$name] = $lable;
         }
     }
     if ($data) {
         $formDataHtml = '';
         $fromDataObj = unserialize($data['clientform_data_content']);
         foreach ($fromDataObj as $k => $v) {
             if (is_array($v)) {
                 $value = implode(', ', $v);
             } else {
                 $value = $v;
             }
             $formDataHtml .= '<tr><td>' . $fields[$k] . '</td><td>' . $value . '</td></tr>';
         }
         $this->putAjax('<table class="table-skeleton">' . $formDataHtml . '</table>');
     } else {
         $this->putAjax('ERROR');
     }
 }