function IndexFormsViewForm($form) { $form_id = SafeEnv($form['id'], 11, int); System::site()->AddBlock('forms', true, false, 'form'); System::site()->AddBlock('form_fields', true, true, 'field'); System::site()->AddTemplatedBox('', 'module/forms.html'); $vars['title'] = SafeDB($form['hname'], 255, str); System::site()->SetTitle($vars['title']); System::site()->BreadCrumbAdd($vars['title']); $vars['desc'] = SafeDB($form['desc'], 0, str, false, false); $controls = unserialize($form['form_data']); if (trim($form['action']) != '') { $action = SafeDB($form['action'], 250, str); } else { $action = Ufu("index.php?name=forms&form={$form_id}&op=save", 'forms/save/{form}/'); } $enctype = ''; foreach ($controls as $control) { $kind = FormsParseParams($control['kind']); $type = trim($control['type']); $value = ''; $name = $control['name']; if (isset($_GET['f_' . $name])) { $value = SafeDB($_GET['f_' . $name], 255, str); } if ($type != '') { $type = explode(',', $type); } else { $type = array(255, str, false); } if ($type[1] == 'file') { if ($type[0] == 0) { $max_size = intval(ini_get('upload_max_filesize')); $s_option = strtolower(substr(ini_get('upload_max_filesize'), -1)); } else { $max_size = $type[0] * 1024; $s_option = 'b'; } $max_size = FormatFileSize($max_size, $s_option); $max_length = false; } else { $max_size = false; $max_length = SafeDB($type[0], 11, int); } if ($kind['control'] == 'file') { $enctype = 'multipart/form-data'; } $control_vars = array(); $control_vars['hname'] = SafeDB($control['hname'] . ($kind['required'] ? ' *' : ''), 255, str); $control_vars['title'] = SafeDB($control['hname'], 255, str); $control_vars['control'] = FormsGetControl(SafeDB($name, 255, str), $value, $control['kind'], $control['type'], $control['values'], $value != '' ? 'disabled' : ''); $control_vars['required'] = $kind['required']; $control_vars['max_size'] = $max_size; $control_vars['max_length'] = $max_length; System::site()->AddSubBlock('form_fields', true, $control_vars); } $vars['open'] = System::site()->FormOpen($action, 'post', $enctype == 'multipart/form-data'); $vars['close'] = System::site()->FormClose(); $vars['submit'] = System::site()->Submit('Отправить форму'); // Капча $vars['show_kaptcha'] = !System::user()->Auth || System::config('forms/show_captcha') && !System::user()->isAdmin(); $vars['kaptcha_url'] = 'index.php?name=plugins&p=antibot'; $vars['kaptcha_width'] = '120'; $vars['kaptcha_height'] = '40'; System::site()->Blocks['forms']['vars'] = $vars; }
/** * Создает страницу конфигурации в админ панели * @param $Exe Значение параметра URL exe * @param string $Group Либо 0, либо имя группы * @param bool $ShowHiddenGroups Отображать скрытые группы * @param bool $ShowTitles Отображать заголовки у групп * @param string $ModuleName Заголовок текстового блока * @param string $SavePageParam Параметр ссылки на функию сохранения настроек * @return void */ function AdminConfigurationEdit($Exe, $Group = '', $ShowHiddenGroups = false, $ShowTitles = true, $ModuleName = '', $SavePageParam = 'a=configsave') { global $config, $conf_config_table, $conf_config_groups_table; // Вытаскиваем настройки и отсортировываем по группам $temp = System::database()->Select($conf_config_table, ''); $configs = array(); for ($i = 0, $cnt = count($temp); $i < $cnt; $i++) { $configs[$temp[$i]['group_id']][] = $temp[$i]; } unset($temp); // Вытаскиваем группы настроек if ($Group == '') { $q = ''; } else { $q = "`name`='{$Group}'"; } $cfg_grps = System::database()->Select($conf_config_groups_table, $q); // Добавляем форму и начинаем генерировать текст $text = '<form action="' . ADMIN_FILE . '?exe=' . $Exe . '&' . $SavePageParam . '" method="post">'; for ($i = 0, $cnt = count($cfg_grps); $i < $cnt; $i++) { // Если эта группа невидима то пропускаем её if ($Group === 0) { if ($cfg_grps[$i]['visible'] == 0) { continue; } } // Или если в ней нет настроек if (!isset($configs[$cfg_grps[$i]['id']])) { $jcnt = 0; } else { $jcnt = count($configs[$cfg_grps[$i]['id']]); } // Добавляем таблицу и заголовок группы настроек $text .= '<table cellspacing="1" cellpadding="0" class="configtable">'; if ($ShowTitles) { $text .= '<tr><th colspan="2" class="configtable-th">' . SafeDB($cfg_grps[$i]['hname'], 255, str) . '</th></tr>'; } // Добавляем настройки группы if ($jcnt > 0) { for ($j = 0; $j < $jcnt; $j++) { // Если настройка невидима то пропускаем её if ($configs[$cfg_grps[$i]['id']][$j]['visible'] == '0' && !$ShowHiddenGroups) { continue; } $name = SafeDB($configs[$cfg_grps[$i]['id']][$j]['name'], 255, str, false, false); $desc = SafeDB($configs[$cfg_grps[$i]['id']][$j]['description'], 255, str, false, false); $type = $configs[$cfg_grps[$i]['id']][$j]['type']; $value = $configs[$cfg_grps[$i]['id']][$j]['value']; $kind = $configs[$cfg_grps[$i]['id']][$j]['kind']; $hname = SafeDB($configs[$cfg_grps[$i]['id']][$j]['hname'], 255, str, false, false); $values = $configs[$cfg_grps[$i]['id']][$j]['values']; $text .= '<tr>' . '<td class="configtable-left">' . $hname . ($desc != '' ? '<br /><span class="configtable-desc">' . $desc . '</span>' : '') . '</td>' . '<td class="configtable-right">' . FormsGetControl($name, $value, $kind, $type, $values) . '</td>' . '</tr>'; } } else { $text .= '<tr><td class="configtable-left" align="center"> В этой группе пока нет настроек. </td></tr>'; } //Закрываем таблицу группы $text .= '</table>'; } $text .= '<table class="configtable-submit"><tr><td>' . System::site()->Submit('Сохранить') . '</td></tr></table>'; $text .= '</form>'; if ($ModuleName == '') { $ModuleName = 'Конфигурация'; } AddTextBox($ModuleName, $text); }
function AdminFormsFields() { if (!isset($_GET['id'])) { GO(ADMIN_FILE . '?exe=forms'); } $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('forms', "`id`='{$id}'"); $form = System::database()->FetchRow(); $fields = unserialize($form['form_data']); $cnt = count($fields); AddCenterBox('Поля формы "' . $form['hname'] . '"'); $text = ''; $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Название</th><th>Имя HTML</th><th>Предпросмотр</th><th>Тип</th><th>Максимальная длина</th><th>Вид</th><th>Функции</th></tr>'; if ($cnt > 0) { for ($i = 0; $i < $cnt; $i++) { $func = ''; $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=forms&a=editfield&id=' . SafeDB($form['id'], 11, int) . '&index=' . $i, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=forms&a=delfield&id=' . SafeDB($form['id'], 11, int) . '&index=' . $i, 'images/admin/delete.png', 'Удалить?'); $type = explode(',', $fields[$i]['type']); $text .= '<tr><td>' . SafeDB($fields[$i]['hname'], 255, str) . '</td><td>' . SafeDB($fields[$i]['name'], 255, str) . '</td><td>' . FormsGetControl($fields[$i]['name'], '', $fields[$i]['kind'], $fields[$i]['type'], $fields[$i]['values']) . '</td><td>' . SafeDB($type[1], 50, str) . '</td><td>' . SafeDB($type[0], 11, int) . '</td><td>' . $fields[$i]['kind'] . '</td><td>' . $func . '</td></tr>'; } } else { $text .= '<tr><td colspan="7" style="text-align: left;">В этой форме нет полей.</td></tr>'; } $text .= '</table>'; AddText($text); AdminFormsFieldEditor('add'); }