public function proc_upd() { if (isset($_POST['objchange'])) { // Обработчик мультиформы $form = new ormMultiForm('change'); $class = ormClasses::get($form->getParam(0)); if (!$class->isInheritor('handbook') || $class->getSName() == 'handbook') { system::redirect('/reference'); } if (!user::issetRight('val_add')) { $form->withoutAdditions(); } if (!user::issetRight('val_del')) { $form->withoutRemoving(); } $form->process(); if ($_POST['parram'] == 'apply') { system::redirect('/reference/values/' . $class->id()); } else { system::redirect('/reference'); } } else { // Обработчик для еденичного изменения класса $mini_action = substr(system::action(), -3); if (system::action() == "proc_upd") { // Говорим какой объект нужно изменить $obj = ormObjects::get(system::POST('obj_id')); } else { if (system::action() == "proc_add") { // Говорим какой объект нужно создать $obj = new ormObject(); $obj->setClass(system::POST('class_id')); } } // Если произошли ошибки, перенаправляем на главную страницу модуля if ($obj->issetErrors()) { system::redirect('/reference/values/' . system::POST('class_id')); } // Присваиваем пришедшие значения полям в объекте $obj->loadFromPost($mini_action); // Сохраняем изменения $obj_id = $obj->save(); // Если объект не сохранился, выводим пользователю текст ошибки. if ($obj_id === false) { system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); ui::selectErrorFields($obj->getErrorFields()); $obj_id = empty($_POST['obj_id']) ? system::POST('class_id') : system::POST('obj_id'); system::redirect('/reference/val_' . $mini_action . '/' . $obj_id); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/reference/val_upd/' . $obj_id); } else { system::redirect('/reference/values/' . $obj->getClass()->id()); } } }
public function defAction() { if (!system::issetUrl(2)) { system::redirect('/reference'); } if ($class = ormClasses::get(system::url(2))) { if (!$class->isInheritor('handbook') || $class->getSName() == 'handbook') { system::redirect('/reference'); } ui::setNaviBar(lang::right('values')); ui::setHeader($class->getName()); ui::setBackButton('/reference'); if (user::issetRight('val_upd')) { $count = 0; $fields = $class->loadFields(); foreach ($fields as $field) { if ($field['f_view'] == 1) { $count++; } } } else { $count = 4; } $sel = new ormSelect($class->getSName()); if ($count > 5) { ui::newButton(lang::get('BTN_NEW_LIST'), '/reference/val_add/' . system::url(2)); $table = new uiTable($sel); $table->showSearch(true); $table->addColumn('name', 'Имя объекта'); $table->addColumn('id', '#', 200); $table->defaultRight('val_upd'); $table->addRight('val_upd', 'edit', single); $table->addRight('val_del', 'drop', multi); return $table->getHTML(); } else { ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); $form = new ormMultiForm('change'); $form->setData($sel); $form->showColumnID(); $form->setRight('val_proc_upd'); $form->moreParam(system::url(2)); if (!user::issetRight('val_upd') || !user::issetRight('val_add')) { $form->withoutAdditions(); } if (!user::issetRight('val_del')) { $form->withoutRemoving(); } return $form->getHTML(); } } else { system::redirect('/reference'); } }
function proc_view() { // Говорим какой объект нужно изменить if (!($obj = ormObjects::get(system::POST('obj_id'), 'eshop_order'))) { system::redirect('/eshop/list'); } $order = new eShopOrder($obj); $order->setState(system::POST('state', isInt)); $order->is_payment = system::POST('is_payment', isBool); if (system::POST('is_payment', isBool)) { $order->payment_date = date('Y-m-d H:i:s'); } $order->delivery_name = system::POST('delivery_name', isString); $order->delivery_surname = system::POST('delivery_surname', isString); $order->delivery_phone = system::POST('delivery_phone', isString); $order->delivery_address = system::POST('delivery_address', isText); $order->delivery_notice = system::POST('delivery_notice', isText); $order->notice = system::POST('notice', isText); $form = new ormMultiForm('goods'); $form->withoutAdditions(); $form->process(); // Сохраняем изменения $obj_id = $order->save(); // Если объект не сохранился, выводим пользователю текст ошибки. if ($obj_id === false) { //system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); ui::selectErrorFields($obj->getErrorFields()); system::redirect('/eshop/order_view/' . system::POST('obj_id')); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/eshop/order_view/' . $obj_id); } else { system::redirect('/eshop/list'); } }
protected function createObject() { // Проверяем обязательность полей reset($this->fields); while (list($fname, $field) = each($this->fields)) { if ($field['f_required'] && $field['f_relation'] == 2) { if (empty($this->new_parents) && !$this->issetParents()) { $this->newError(40, 'Поле "' . $field['f_name'] . '" обязательно для заполнения!', $fname); } } else { if (($field['f_type'] == 40 || $field['f_type'] == 45) && isset($this->new_prop[$fname]) && empty($this->new_prop[$fname])) { $this->new_prop[$fname] = 0; } else { if ($field['f_required'] && empty($this->new_prop[$fname]) && (empty($this->cur_prop[$fname]) || isset($this->new_prop[$fname]))) { $this->newError(40, 'Поле "' . $field['f_name'] . '" обязательно для заполнения!', $fname); } } } } if ($this->issetErrors() > 0) { return false; } // Основные характеристики объекта $sql = 'INSERT INTO <<objects>> SET o_class_id = "' . $this->class->id() . '", o_name = "' . $this->name . '", o_change_date = "' . date('Y-m-d H:i:s') . '", o_create_date = "' . date('Y-m-d H:i:s') . '";'; $this->id = db::q($sql); if ($this->id === false) { $this->newError(42, 'Ошибка в SQL запросе, при добавлении объекта!'); return false; } // Изменяем данные объекта $fields = ''; if (!empty($this->new_prop)) { while (list($key, $value) = each($this->new_prop)) { if (!$this->isPageField($key) && $key != 'name') { if ($this->fields[$key]['f_type'] != 105) { $fields .= $this->procValue($key, $value); } else { tags::changeTags($value, $this->id); } } } } $fields = substr($fields, 0, strlen($fields) - 2); if (!empty($fields)) { $fields = ', ' . $fields; } $sql = 'INSERT INTO <<__' . $this->class->getSName() . '>> SET obj_id = "' . $this->id . '"' . $fields . ';'; if (db::q($sql) !== false) { /* if (!empty($this->new_prop)) while (list($key, $value) = each ($this->new_prop)) $this->procValue($key, $value); */ while (list($key, $field_id) = each($this->subject)) { $form = new ormMultiForm('subject_list_' . $field_id); $form->process('save_subject', $this->id); } $this->next_prinud = true; $this->changeParents(false); return $this->id; } else { $this->newError(42, 'Ошибка в SQL запросе, при добавлении данных объекта!'); return false; } }
private function parseField($field, $TEMPLATE) { if (in_array($field['f_sname'], $this->read_only)) { $value = $this->obj->__get($field['f_sname']); page::assign('value', $value); if ($field['f_type'] == 90 || $field['f_type'] == 95 || $field['f_type'] == 105) { page::assign('val', $this->obj->__get('_' . $field['f_sname'])); } else { page::assign('val', $value); } $value = page::parse($TEMPLATE['read_only']); page::assign('content', $value); return page::parse($TEMPLATE['field_standart']); } // Определяем значение поля if (isset($_SESSION['SAVING_POST']) && ($field['f_type'] < 70 || $field['f_type'] > 85) && isset($_SESSION['SAVING_POST'][$field['f_sname']])) { $value = $_SESSION['SAVING_POST'][$field['f_sname']]; } else { if ($field['f_type'] == 105) { $value = $this->obj->__get('_' . $field['f_sname']); } else { $value = $this->obj->__get($field['f_sname']); } } page::assign('field.value', $value); // Для страниц, для кнопки "Показать \ скрыть доп. поля" if ($this->obj instanceof ormPage && in_array($field['f_sname'], $this->page_fields)) { $sh_page = isset($_SESSION['SH_FIELDS']) && $_SESSION['SH_FIELDS'] == 'show' ? '' : ' style="display:none;"'; page::assign('sh_page', $sh_page); } else { page::assign('sh_page', ''); } // Специальная обработка данных if ($field['f_type'] == 50) { page::assign('element', ui::CheckBox($field['f_sname'], 1, $value)); } else { if ($field['f_type'] == 32) { if (empty($value) || $value == '0000-00-00 00:00:00') { page::assign('field.date', ''); page::assign('field.time', '00:00'); } else { page::assign('field.date', date('d.m.Y', strtotime($value))); page::assign('field.time', date('H:i', strtotime($value))); } } else { if ($field['f_type'] == 25) { $time = empty($value) || $value == '0000-00-00' ? '' : date('d.m.Y', strtotime($value)); page::assign('field.date', $time); } else { if ($field['f_type'] == 30) { $time = empty($value) ? '' : date('H:i:s', strtotime($value)); page::assign('field.time', $time); } else { if ($field['f_type'] == 70 || $field['f_type'] == 75 || $field['f_type'] == 80 || $field['f_type'] == 85) { if (system::$isAdmin) { page::assign('element', ui::loadFile($field['f_sname'], $value)); } else { page::fParse('element', $TEMPLATE['upload_file_field']); } } else { if ($field['f_type'] == 73) { page::assign('element', ui::listFile($field['f_sname'], $value)); } else { if ($field['f_type'] == 90 || $field['f_type'] == 95) { // Выпадающий список или Список со множественным выбором // Получаем список объектов справочника page::assign('field.sname', $field['f_sname']); $data = ormObjects::getObjectsByClass($field['f_list_id']); $multi = $field['f_type'] == 95 ? 'selectbox_multi' : 'selectbox_template'; $empty = !$field['f_required'] ? ' ' : ''; if (system::$isAdmin) { page::assign('element', ui::SelectBox($field['f_sname'], $data, $value, 400, $empty, '', $multi)); if ($field['f_quick_add']) { page::fParse('plus', $TEMPLATE['field_' . $field['f_type'] . '_plus']); } else { page::assign('plus', ''); } } else { page::assign('element', ui::SelectBox($field['f_sname'], $data, $value, 200, $empty, '', $multi)); } } else { if ($field['f_type'] == 97) { // Подчиненный справочник // Получаем список объектов справочника $sel = new ormSelect($field['f_list_id']); $sel->where('parents', '=', $this->obj->id); // Выводим мультиформу для добавления и редактирования $form = new ormMultiForm('subject_list_' . $field['f_id']); $form->setData($sel); $form->insideForm(); $re = $form->getHTML(); // echo $re; page::assign('element', $re); } else { if ($field['f_type'] == 100) { // Связь с объектом page::assign('element', ui::objectLinks($this->obj, $field['f_id'])); } } } } } } } } } page::assign('field.id', $field['f_id']); page::assign('field.name', $field['f_name']); page::assign('field.hint', $field['f_hint']); page::assign('field.sname', $field['f_sname']); page::fParse('field.dotted', !empty($field['f_hint']) ? 'dotted' : ''); if (empty($field['f_max_size'])) { $field['f_max_size'] = $field['f_type'] == 60 ? 200 : 100; } page::assign('field.max_size', $field['f_max_size']); // Генерируем яву (создаем правила проверки для элементов формы) if ($field['f_required'] && ($field['f_type'] == 35 && $this->obj->id == '' || $field['f_type'] != 35)) { $msg = str_replace('%title%', $field['f_name'], lang::get('CONSTR_BASE_FIELD_E2')); if ($field['f_type'] == 60) { // HTML - редактор $this->addit_function .= page::parse(' function checkValue%field.sname%(){ var value = CKEDITOR.instances["%field.sname%"].getData(); return (value != "") ? true : [[ "cke_%field.sname%", "' . $msg . '" ]]; } '); $this->java .= page::parse('rules.push("function,checkValue%field.sname%");'); } else { if ($field['f_type'] == 100) { // Выбор объекта $this->addit_function .= page::parse(' function checkObjectLinks%field.sname%(){ var count = $("#objectsLinkList_%field.sname% > li").length; return (count > 0) ? true : [[ %field.sname%, "' . $msg . '" ]]; } '); $this->java .= page::parse('rules.push("function,checkObjectLinks%field.sname%");'); } else { if ($field['f_type'] == 32) { // Каледарь и время $this->java .= page::parse('rules.push("required,%field.sname%_date,' . $msg . '");'); } else { $this->java .= page::parse('rules.push("required,%field.sname%,' . $msg . '");'); } } } $zvezd = 'chek'; } else { $zvezd = ''; } page::assign('field.zvezd', $zvezd); if ($field['f_type'] == 15) { $this->java .= page::parse('rules.push("valid_email,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E3') . '");'); } if ($field['f_type'] == 20) { $this->java .= page::parse('rules.push("reg_exp,%field.sname%,^(((f|ht){1}tp:/)*/[-a-zA-Z0-9@:%_\\+.~#?&//=]+)*$|^\\/{1}, ' . lang::get('CONSTR_BASE_FIELD_E4') . '");'); } if ($field['f_type'] == 40) { $this->java .= page::parse('rules.push("digits_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E6') . '");'); } if ($field['f_type'] == 45) { $this->java .= page::parse('rules.push("float_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E7') . '");'); } if ($field['f_type'] == 47) { $this->java .= page::parse('rules.push("price_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E8') . '");'); } if (isset($TEMPLATE['field_' . $field['f_type']])) { return page::parse($TEMPLATE['field_' . $field['f_type']]); } else { return str_replace('%title%', $field['f_sname'], lang::get('CONSTR_BASE_FIELD_E5')); } }