Класс ckdial предназначен для отображения диалоговых форм.
Диалоговая форма – это форма, в которой отображается группа чекбоксов для выбора вариантов действий и submit-кнопка для исполнения выбранного действия. Пример работы класса - в панели управления Wad-er в меню Утилиты-Резервное копирование, Утилиты-Очистить кеш.
Основные параметры класса
| Параметр | Значение по умолчанию | Описание |
| ajax | true | Возможность отправления данных формы с помощь ajax-технологии. |
| title | null | Заголовок для формы. |
| ok_mes | array() | Сообщение об успешном отправлении формы. |
| err_mes | Сообщение о неуспешном отправлении формы. | |
| btn_caption | Заголовок для кнопки отправления формы. | |
| _ckboxes | array() | Массив чекбоксов формы |
Описание методов
addCkbox()
public function addCkbox($id = '', $caption = '', $val = 0)
Добавление чекбокса к набору.
include_once(SYS_BASE_PATH.'main/classes/ckdial.class.php');
class ckdialm extends ckdial
{
//…
}
$f = new ckdialm();
$f->addCkbox('to_file', $parser->gt('file', __FILE__), 1);
execAction()
public function execAction()
Исполняемое действие. Метод вызывается, когда пользователь нажимает на кнопку формы. Метод абстрактный, должен переопределяться в дочернем классе.
show()
public function show()
Отображение формы.
Пример использования класса. Этот простой пример отображает на странице 2 чекбокса. При выборе одного из них происходит запись строки This is my string или в файл userdata/mess.txt, или в таблицу БД sys_messages. Под чекбоксами находится кнопка Сохранить, при нажатии на которую реализуется поставленная задача.
Внутри файла контроллера создаем класс ckdialm, который наследует свойства и методы класса ckdial. В этом классе происходит переопределение метода execAction():
include_once(SYS_BASE_PATH.'main/classes/ckdial.class.php');
class ckdialm extends ckdial
{
public function execAction()
{
global $parser;
if(ob_get_length()) ob_clean();
$string = 'This is my string';
if($this->_ckboxes['to_file']['val'])
{
$parser->toFile($string);
} else if ($this->_ckboxes['to_db']['val']) {
$date = $parser->utils->toDate();
$parser->conn->execute("INSERT INTO sys_messages(id, infotype, createdon, userid, userip, message, objid, pageid, objtype) VALUES('1000', '1', '$date', 'sys_superadmin', '127.0.0.1', '$string','0','0','0')");
}
print('ok');
exit;
}
}
Внутри метода контроллера необходимо создать объект класса ckdialm:
class test_controllers_index extends common_controller
{
public function index()
{
$f = new ckdialm();
$f->ok_mes = $this->parser->gt('savingok', __FILE__);
$f->btn_caption = $this->parser->gt('save', __FILE__);
$f->addCkbox('to_file', $this->parser->gt('file', __FILE__), 1);
$f->addCkbox('to_db', $this->parser->gt('db', __FILE__));
$f->show();
$this->render();
}
}