<td><textarea title="' . t('Описание') . '" name="f_category_desc[[ID]]">[DESCR_HTML]</textarea></td> <td><input title="' . t('Короткая ссылка') . '" name="f_category_slug[[ID]]" value="[SLUG_HTML]" maxlength="500" type="text"><div style="text-align: right;"><a href="' . getinfo('siteurl') . 'category/[SLUG_HTML]" target="_blank" title="' . t('Смотреть рубрику на сайте') . '">»»»</a></div></td> <td><input title="' . t('Порядок') . '" name="f_category_menu_order[[ID]]" value="[MENU_ORDER]" maxlength="500" type="text"></td> <td><input type="submit" name="f_edit_submit[[ID]]" value="' . t('Изменить') . '"> <br><input type="submit" name="f_delete_submit[[ID]]" value="' . t('Удалить') . '" onClick="if(confirm(\'' . t('Удалить рубрику?') . '\')) {return true;} else {return false;}" ></td> </tr></table> '; $out = mso_create_list($all, array('childs' => 'childs', 'format' => $format, 'format_current' => $format, 'class_ul' => '', 'class_ul_style' => 'list-style-type: none; margin: 0;', 'class_child_style' => 'list-style-type: none;', 'class_li_style' => 'margin: 5px 0;', 'title' => 'category_name', 'link' => 'category_slug', 'current_id' => false, 'prefix' => 'category/', 'count' => 'pages_count', 'id' => 'category_id', 'slug' => 'category_slug', 'menu_order' => 'category_menu_order', 'id_parent' => 'category_id_parent')); // добавляем форму, а также текущую сессию echo '<form method="post" class="fform">' . mso_form_session('f_session_id') . '<table class="page cats"> <colgroup style="width: 30px"> <colgroup style="width: 50px"> <colgroup style="width: 200px"> <colgroup> <colgroup style="width: 150px"> <colgroup style="width: 50px"> <colgroup style="width: 80px"> <tr> <th>ID</th> <th>' . t('Род.') . '</th> <th>' . t('Название') . '</th> <th>' . t('Описание') . '</th> <th>' . t('Ссылка') . '</th> <th>' . t('Пор.') . '</th> <th> </th>
} else { $form .= '<h3>' . $a_js . $MSO->widgets[$widget] . '</a></h3>'; } $form .= '<div class="admin_widgets" id="' . $d_id . '">'; $res = $func($num); if ($res) { $form .= $res; } else { $form .= '<p>' . t('Виджет не содержит настроек') . '</p>'; } $form .= '<input type="hidden" name="f_update_widgets[' . $widget . '--' . $num . ']" value="">'; $form .= '</div>' . NR; // div id= $form .= '</div>' . NR . NR; } } $form .= '</div>' . NR; } } else { $error .= '<div class="error">' . t('Сайдбары не определены. Обычно они регистрируются в файле <strong>functions.php</strong> вашего шаблона. Например:') . ' <br><strong>mso_register_sidebar(\'1\', \'' . t('Первый сайдбар') . '\');</strong></div>'; } if (!$error) { // добавляем форму, а также текущую сессию echo '<form method="post" class="admin_widgets">' . mso_form_session('f_session_id'); echo $form; echo '<button type="submit" name="f_submit" class="i save">' . t('Сохранить изменения') . '</button>'; echo '</form>'; } else { echo $error; } # end of file
<p class="info"><?php echo t('C помощью этого плагина вы можете организовать рассылку email-сообщений по списку.'); ?> </p> <?php $options = mso_get_option($options_key, 'plugins', array()); if (!isset($options['maillist'])) { $options['maillist'] = ''; } if (!isset($options['subject'])) { $options['subject'] = ''; } if (!isset($options['files'])) { $options['files'] = ''; } if (!isset($options['message'])) { $options['message'] = ''; } if (!isset($options['from'])) { $options['from'] = mso_get_option('admin_email_server', 'general', ''); } echo '<form action="" method="post">' . mso_form_session('f_session_id'); echo '<p><strong>' . t('Тема письма:') . '</strong></p><input name="f_subject" type="text" style="width: 100%" value="' . $options['subject'] . '">'; echo '<p><strong>' . t('От кого (email):') . '</strong></p><input name="f_from" type="text" style="width: 100%" value="' . $options['from'] . '">'; echo '<p><strong>' . t('Файл вложения (путь к файлу в «uploads»):') . '</strong></p><input name="f_files" type="text" style="width: 100%" value="' . $options['files'] . '">'; echo '<p><strong>' . t('Текст письма:') . '</strong></p><textarea name="f_message" style="width: 100%; height: 200px;">' . htmlspecialchars($options['message']) . '</textarea>'; echo '<p><strong>' . t('Список рассылки (один email в строке):') . '</strong></p><textarea name="f_list" style="width: 100%; height: 200px;">' . htmlspecialchars($options['maillist']) . '</textarea>'; echo '<br><input type="submit" name="f_submit_send" value="' . t('Разослать') . '" style="margin: 25px 0 5px 0;">'; echo '<input type="submit" name="f_save_list" value="' . t('Только сохранить список') . '" style="margin: 25px 0 5px 0;">'; echo '</form>';
$answers_array = add_empty_answers($answers_array); } $plug_path = getinfo('plugins_url') . 'samborsky_polls/'; //////////////////////////////////////////// // ВЫВОД ФОРМЫ //////////////////////////////////////////// ?> <h1><?php echo t('Добавление/Изменение голосования'); ?> </h1> <div class="polls_addEdit_form"> <form method="post"> <?php echo mso_form_session('f_session_id'); ?> <input type="hidden" name="act" value="<?php echo $act; ?> " /> <input type="hidden" name="id" value="<?php echo $qu->data->q_id; ?> " /> <h2><?php echo t('Вопрос:'); ?> </h2>
[type] => 'php' [text] => '' ... */ // pr($ushki); echo '<form method="post">' . mso_form_session('f_session_id') . ' <p><strong>' . t('Новая ушка:') . '</strong> ' . ' <input name="f_ushka_new" type="text" value=""> <button type="submit" name="f_submit_new">' . t('Добавить новую ушку') . '</button></p> </form>'; $form = ''; foreach ($ushki as $id => $us) { $form .= '<div class="ushki">'; $sel_html = $sel_php = ''; if ($us['type'] == 'php') { $sel_php = ' selected="selected" '; } else { $sel_html = ' selected="selected" '; } $form .= '<p class="ushki_title"><input name="f_ushka[' . $id . '][name]" type="text" value="' . $us['name'] . '" style="width: 400px;"> <select style="width: 150px;" name="f_ushka[' . $id . '][type]"><option value="html"' . $sel_html . '/>TEXT/HTML</option><option value="php"' . $sel_php . '>PHP</option></select> <label><input name="f_ushka[' . $id . '][delete]" type="checkbox"> ' . t('Удалить') . '</label> </p>'; $form .= '<p><textarea name="f_ushka[' . $id . '][text]">' . htmlspecialchars($us['text']) . '</textarea>'; $form .= '</div>'; } if ($form) { echo '<h2>' . t('Ушки') . '</h2><form method="post">' . mso_form_session('f_session_id'); echo $form; echo '<p class="br"><button type="submit" name="f_submit">' . t('Сохранить изменения') . '</button>'; echo '</form>'; }
function theme_switch_widget_custom($options = array(), $num = 1) { if (!isset($options['header'])) { $options['header'] = ''; } if (!isset($options['submit'])) { $options['submit'] = t('Переключить'); } // выводим списком шаблоны, которые отмечены и сохранены в опции theme_switch (через admin.php) $opt = mso_get_option('theme_switch', 'plugins', array()); if (!isset($opt['templates'])) { $opt['templates'] = array(); } $current_template = getinfo('template'); $out = ''; foreach ($opt['templates'] as $key => $val) { if ($key == $current_template) { $checked = 'checked="checked"'; } else { $checked = ''; } $out .= '<label><input type="radio" name="theme_switch_radio[]" value="' . $key . '" id="theme_switch_radio_' . $key . '" ' . $checked . '> ' . $val . '</label><br>' . NR; } if ($out) { $out = '<div class="mso-theme_switch">' . $options['header'] . '<form method="post">' . mso_form_session('f_session_id') . $out . '<p><button type="submit" name="f_theme_switch_submit" class="submit">' . $options['submit'] . '</button></p></form></div>'; } return $out; }
echo '</div>'; $text_email = t("Новая запись в гостевой книге") . ": \n" . $text_email; $text_email .= "\n" . t("Редактировать") . ": " . getinfo('siteurl') . 'admin/guestbook/editone/' . $CI->db->insert_id() . "\n"; if ($options['email'] and mso_valid_email($options['email'])) { mso_mail($options['email'], t('Новая запись в гостевой книге'), $text_email); } } else { echo '<div class="error">' . t('Ошибка добавления в базу данных...') . '</div>'; } mso_flush_cache(); // тут бы редирект, но мы просто убиваем сессию $CI->session->sess_destroy(); } } else { // тут форма, если не было post echo '<div class="guestbook_form"><form action="" method="post">' . mso_form_session('f_session_id'); echo '<table style="width: 100%;">'; foreach ($options['fields_arr'] as $key => $val) { echo '<tr><td style="vertical-align: top; text-align: right;" class="td1"><strong>' . t($val) . '</strong> </td><td class="td2">'; if ($key != 'text') { echo '<input name="f_fields_guestbook[' . $key . ']" type="text" style="width: 99%;"></td></tr>'; } else { echo '<textarea name="f_fields_guestbook[' . $key . ']" style="width: 99%; height: 100px;"></textarea></td></tr>'; } } // капча из плагина капчи echo '<tr><td style="vertical-align: top; text-align: right;" class="td1"><strong>' . t('Введите нижние символы') . ' </td> <td style="text-align: left;" class="td2"><input type="text" name="f_guestbook_captha" value="" maxlength="4"> <img src="' . getinfo('plugins_url') . 'captcha/img.php?image=' . $session['session_id'] . '&page=' . mso_slug(mso_current_url()) . '&code=' . time() . '" title="' . t('Защита от спама: введите только нижние символы') . '" align="absmiddle"></td></tr>'; echo '<tr><td class="td1"> </td><td style="vertical-align: top; text-align: left;" class="td2"><input type="submit" class="submit" name="f_submit_guestbook" value="' . t('Отправить') . '"></td></tr>'; echo '</table></form></div>'; }
echo '</div>'; $text_email = t("Новая запись в гостевой книге") . ": \n" . $text_email; $text_email .= "\n" . t("Редактировать") . ": " . getinfo('siteurl') . 'admin/guestbook/editone/' . $CI->db->insert_id() . "\n"; if ($options['email'] and mso_valid_email($options['email'])) { mso_mail($options['email'], t('Новая запись в гостевой книге'), $text_email); } } else { echo '<div class="mso-message-error">' . t('Ошибка добавления в базу данных...') . '</div>'; } mso_flush_cache(); // тут бы редирект, но мы просто убиваем сессию $CI->session->sess_destroy(); } } else { // тут форма, если не было post echo '<div class="mso-guestbook"><form method="post">' . mso_form_session('f_session_id'); foreach ($options['fields_arr'] as $key => $val) { echo '<p><label><span>' . t($val) . '</span>'; if ($key != 'text') { echo '<input name="f_fields_guestbook[' . $key . ']" type="text"></label></p>'; } else { echo '<textarea name="f_fields_guestbook[' . $key . ']" rows="10"></textarea></label></p>'; } } // капча из плагина капчи if (!function_exists('create_captha_img')) { require_once getinfo('plugins_dir') . 'captcha/index.php'; } $captcha = '<img src="' . create_captha_img(mso_md5($MSO->data['session']['session_id'] . mso_current_url())) . '" title="' . t('Защита от спама: введите только нижние символы') . '">'; echo '<p><label><span>' . t('Нижние символы:') . $captcha . '</span> <input type="text" name="f_guestbook_captha" value="" maxlength="4" required></label></p>';
function mso_admin_plugin_options($key, $type, $ar, $title = '', $info = '', $text_other = '', $show_goto_plugins = false) { if ($show_goto_plugins) { echo '<p><a href="' . getinfo('site_admin_url') . 'plugins" class="i plugins">' . t('Плагины') . '</a></p>'; } if ($title) { echo '<h1><a href="">' . $title . '</a></h1>'; } else { echo '<h1><a href="">' . t('Опции плагина') . '</a></h1>'; } if ($info) { echo '<p class="info">' . $info . '</p>'; } else { echo '<p class="info">' . t('Укажите необходимые опции плагина.') . '</p>'; } if ($text_other) { echo '<p>' . $text_other . '</p>'; } # тут получаем текущие опции $options = mso_get_option($key, $type, array()); // получаем опции # здесь смотрим post # в post должен быть $key . '-' . $type if ($post = mso_check_post(array('f_session_id', 'f_submit', $key . '-' . $type))) { # защита рефера mso_checkreferer(); # наши опции $in = $post[$key . '-' . $type]; if (isset($in['_mso_checkboxs'])) { $ch_names = array_keys($in['_mso_checkboxs']); // получили все чекбоксы $t = array(); // временный массив foreach ($ch_names as $val) { if (isset($in[$val])) { $t[$val] = '1'; } // если есть, значит отмечен } $t = array_merge($in['_mso_checkboxs'], $t); // объединим с чекбоксамии unset($in['_mso_checkboxs']); // удалим _mso_checkboxs $in = array_merge($in, $t); // объединим с $in // теперь в $in все чекбоксы } # перед проверкой удалим из $ar все типы info $ar1 = $ar; foreach ($ar1 as $m => $val) { if ($val['type'] == 'info') { unset($ar1[$m]); } } # проверяем их с входящим $ar - ключи должны совпадать # финт ушами: смотрим разность ключей массивов - красиво? # если будет разность, значит неверные входящие данные, все рубим if (array_diff(array_keys($ar1), array_keys($in))) { die('Error key. :-('); } $newoptions = array_merge($options, $in); // объединим if ($options != $newoptions) { mso_add_option($key, $newoptions, $type); // обновим $options = $newoptions; // сразу обновим переменную на новые опции mso_flush_cache(); // сбросим кэш } echo '<div class="update">' . t('Обновлено!') . '</div>'; } if ($ar) { # тут генерируем форму $form = ''; foreach ($ar as $m => $val) { if ($val['type'] == 'info') { if (isset($val['id'])) { $tag_id = ' id="' . $val['id'] . '"'; } else { $tag_id = ''; } if (isset($val['class'])) { $tag_class = ' ' . $val['class']; } else { $tag_class = ''; } $form .= '<div class="admin_plugin_options_info' . $tag_class . '"' . $tag_id . '>'; if (isset($val['title'])) { $form .= '<h3>' . $val['title'] . '</h3>'; } if (isset($val['text'])) { $form .= '<p>' . $val['text'] . '</p>'; } $form .= '</div>'; continue; } if (!isset($options[$m])) { $options[$m] = $val['default']; } $group_start = isset($val['group_start']) ? $val['group_start'] : ''; $group_end = isset($val['group_end']) ? $val['group_end'] : ''; /* // обрамление группы опций if (isset($val['group_start'])) { if ($val['group_start']) $group_start = '<div class="admin_plugin_options">'; else $group_start = ''; } else $group_start = '<div class="admin_plugin_options">'; if (isset($val['group_end'])) { if ($val['group_end']) $group_end = '</div>'; else $group_end = '<br>'; } else $group_end = '</div>'; */ if ($val['description']) { $val['description'] = '<span class="hint-options">' . $val['description'] . '</span>'; } if ($val['type'] == 'text') { if (isset($val['itype'])) { $itype = $val['itype']; } else { $itype = 'text'; } if ($itype == 'hidden') { $form .= $group_start . '<p><span>' . $val['name'] . '</span>' . '<input type="' . $itype . '" value="' . htmlspecialchars($options[$m]) . '" name="' . $key . '-' . $type . '[' . $m . ']' . '">' . $val['description'] . '</p>' . $group_end . NR; } else { $form .= $group_start . '<p><label><span>' . $val['name'] . '</span>' . '<input type="' . $itype . '" value="' . htmlspecialchars($options[$m]) . '" name="' . $key . '-' . $type . '[' . $m . ']' . '"></label>' . $val['description'] . '</p>' . $group_end . NR; } } elseif ($val['type'] == 'textarea') { if (isset($val['rows'])) { $rows = (int) $val['rows']; } else { $rows = 10; } $form .= $group_start . '<p><label><span>' . t($val['name']) . '</span>' . '<textarea rows="' . $rows . '" name="' . $key . '-' . $type . '[' . $m . ']' . '">' . htmlspecialchars($options[$m]) . '</textarea></label>' . $val['description'] . '</p>' . $group_end . NR; } elseif ($val['type'] == 'checkbox') { $ch_val = $options[$m]; if ($ch_val) { $checked = 'checked="checked"'; } else { $checked = ''; } $form .= $group_start . '<p><label><input class="checkbox" type="checkbox" value="' . $ch_val . '"' . ' name="' . $key . '-' . $type . '[' . $m . ']' . '" ' . $checked . '> <span>' . $val['name'] . '</span></label>' . $val['description'] . '</p>' . $group_end . NR; # поскольку не отмеченные чекбоксы не передаются в POST, сделаем массив чекбоксов в hidden $form .= '<input type="hidden" name="' . $key . '-' . $type . '[_mso_checkboxs][' . $m . ']" value="0">'; } elseif ($val['type'] == 'select') { $form .= $group_start . '<p><label><span>' . $val['name'] . '</span>' . '<select name="' . $key . '-' . $type . '[' . $m . ']' . '">'; // если есть values, то выводим - правила задания, как в ini-файлах if (isset($val['values'])) { $values = explode('#', $val['values']); foreach ($values as $v) { $v = trim($v); $v_t = $v; $ar = explode('||', $v); if (isset($ar[0])) { $v = trim($ar[0]); } if (isset($ar[1])) { $v_t = trim($ar[1]); } if (htmlspecialchars($options[$m]) == $v) { $checked = 'selected="selected"'; } else { $checked = ''; } $form .= NR . '<option value="' . $v . '" ' . $checked . '>' . $v_t . '</option>'; } } $form .= '</select></label>' . $val['description'] . '</p>' . $group_end . NR; } elseif ($val['type'] == 'radio') { $form .= $group_start . '<p><span>' . $val['name'] . '</span></p><p>'; if (!isset($val['delimer'])) { $delimer = '<br>'; } else { $delimer = stripslashes($val['delimer']); } // если есть values, то выводим - правила задания, как в ini-файлах if (isset($val['values'])) { $values = explode('#', $val['values']); foreach ($values as $v) { $v = trim($v); $v_t = $v; $ar = explode('||', $v); if (isset($ar[0])) { $v = trim($ar[0]); } if (isset($ar[1])) { $v_t = trim($ar[1]); } if (htmlspecialchars($options[$m]) == $v) { $checked = 'checked="checked"'; } else { $checked = ''; } $form .= NR . '<label><input type="radio" value="' . $v . '" ' . $checked . ' name="' . $key . '-' . $type . '[' . $m . ']' . '"> ' . $v_t . '</label>' . $delimer; } } $form .= $val['description'] . '</p><hr>' . $group_end . NR; } } # выводим форму echo NR . '<form method="post" class="mso_admin_plugin_options">' . mso_form_session('f_session_id'); echo $form; echo NR . '<button type="submit" name="f_submit" class="i save">' . t('Сохранить') . '</button>'; echo '</form>' . NR; } else { echo t('<p>Опции не определены.</p>') . NR; } }
} /** * MaxSite CMS * (c) http://max-3000.com/ */ ?> <div class="comment-form"> <form method="post" class="fform"> <input type="hidden" name="comments_page_id" value="<?php echo $page_id; ?> "> <?php echo mso_form_session('comments_session'); ?> <div class="comments-textarea"> <?php if (is_login()) { ?> <input type="hidden" name="comments_user_id" value="<?php echo getinfo('users_id'); ?> "> <div class="comments-user"> <?php echo tf('Привет'); ?>
$CI->db->join('page', 'page.page_id = comments.comments_page_id', 'left'); $CI->db->where('comments_id', $id); $query = $CI->db->get(); // если есть данные, то выводим if ($query->num_rows() > 0) { $row = $query->row_array(); //pr($row); $info_page = '<p><a href="' . getinfo('siteurl') . 'page/' . $row['page_slug'] . '#comment-' . $id . '">' . t('Комментарий к ') . '«' . htmlspecialchars($row['page_title']) . '»</a>' . ' | <a href="' . getinfo('site_admin_url') . 'page_edit/' . $row['page_id'] . '">' . t('Редактировать запись') . '</a>' . '</p>'; if ($row['users_nik']) { echo '<p><strong>' . t('Автор') . '</strong>: ' . '<a href="' . getinfo('site_admin_url') . 'users/edit/' . $row['users_id'] . '">' . $row['users_nik'] . '</a>' . ' | ' . $row['comments_author_ip'] . '</p>' . $info_page; } elseif ($row['comusers_nik']) { echo '<p><strong>' . t('Автор') . '</strong>: ' . '<a href="' . getinfo('site_admin_url') . 'comusers/edit/' . $row['comments_comusers_id'] . '">' . $row['comusers_nik'] . '</a>' . ' | <a href="' . getinfo('site_url') . 'users/' . $row['comments_comusers_id'] . '">' . t('Персональная страница') . '</a>' . ' | IP: ' . $row['comments_author_ip'] . ' | № ' . $row['comments_comusers_id'] . '</p>' . $info_page; } else { echo '<p><strong>' . t('Автор') . '</strong>: ' . htmlspecialchars($row['comments_author_name']) . ' | ' . $row['comments_author_ip'] . '</p>' . $info_page; } echo '<form method="post" class="comment_edit">' . mso_form_session('f_session_id'); //echo '<h3>' . t('Текст') . '</h3>'; // хуки для текстового поля комментирования mso_hook('admin_comment_edit'); mso_hook('comments_content_start'); $text = mso_xss_clean($row['comments_content']); if ($text != $row['comments_content']) { echo '<div class="error">' . t('Внимание! Возможна XSS-атака! Полный текст комментария') . '</div><textarea>' . htmlspecialchars($row['comments_content']) . '</textarea><p>' . t('Исправленный текст комментария') . '</p>'; } echo '<p><textarea name="f_comments_content" id="comments_content">' . htmlspecialchars($text) . '</textarea></p>'; echo '<h3>' . t('Дата') . '</h3> <p><input name="f_comments_date" type="text" value="' . htmlspecialchars($row['comments_date']) . '"></p>'; $comments_author_name = trim(htmlspecialchars($row['comments_author_name'])); if (!($comments_author_name or $row['comments_users_id'] or $row['comments_comusers_id'])) { $comments_author_name = t('Аноним'); }
function forms_show_form($options, $files, $fields, $format) { $out = ''; if (!$fields) { return ''; } // нет полей — выходим // удаляем временные файлы вложений перед отображением формы if ($files) { mso_flush_cache(false, 'forms_attaches/'); } // pr($fields); // начальная часть всегда однакова ??? $out .= '<div class="' . $format['container_class'] . '"><form method="post" enctype="multipart/form-data">' . mso_form_session('forms_session'); foreach ($fields as $key => $field) { $field = array_map('trim', $field); // pr($field); // ключ для каждого отправляемого поля $field_name = 'forms_fields[' . $key . ']'; $description = $field['description']; // название поля // подсказка в поле $placeholder = $field['placeholder'] ? ' placeholder="' . htmlspecialchars($field['placeholder']) . '"' : ''; // обязательные поля if ($field['require']) { // подсказка что это обязательное поле $require_title = ' ' . $options['require_title']; // если поле обязательное ставим ему required $required = ' required'; } else { $require_title = ''; $required = ''; } // подсказка после поля $tip = $field['tip'] ? str_replace('[tip]', $field['tip'], $format['tip']) : ''; $attr = $field['attr'] ? ' ' . $field['attr'] : ''; // атрибуты поля $value = htmlspecialchars($field['value']); // значение value по-умолчанию // если был POST, то ставим его (он уже обработан) if (isset($field['post_value'])) { $value = $field['post_value']; } if ($field['type'] == 'textarea') { // комбинируем name + placeholder + $required + $attr $field_param = 'name="' . $field_name . '" ' . $placeholder . $required . $attr; $out .= str_replace(array('[description]', '[require_title]', '[field_param]', '[value]', '[tip]'), array($description, $require_title, $field_param, $value, $tip), $format['textarea']); } elseif ($field['type'] == 'checkbox') { // дефолтное значение 0 или 1 $checked = $field['default'] ? ' checked="checked"' : ''; $field_param = 'name="' . $field_name . '" ' . $attr . $checked; // cкрытый input для того, чтобы передать неотмеченный чекбокс будет - value="0" $out .= '<input name="' . $field_name . '" value="0" type="hidden">'; $out .= str_replace(array('[description]', '[field_param]', '[tip]'), array($description, $field_param, $tip), $format['checkbox']); } elseif ($field['type'] == 'select') { if (!($values = $field['values'])) { continue; } // не указаны значение $default = $field['default']; // дефолтное значение $values = explode('#', $values); $option = ''; foreach ($values as $o) { $selected = $o == $default ? ' selected="selected"' : ''; $option .= '<option' . $selected . '>' . htmlspecialchars(tf($o)) . '</option>'; } $field_param = 'name="' . $field_name . '" ' . $attr; $out .= str_replace(array('[description]', '[require_title]', '[field_param]', '[option]', '[tip]'), array($description, $require_title, $field_param, $option, $tip), $format['select']); } else { // комбинируем name + placeholder + $required + $attr $field_param = 'name="' . $field_name . '" value="' . $value . '" type="' . $field['type'] . '"' . $placeholder . $required . $attr; $out .= str_replace(array('[description]', '[require_title]', '[field_param]', '[tip]'), array($description, $require_title, $field_param, $tip), $format['input']); } } // поля для $files вывести if ($files) { $out .= forms_files_fields($files, $format); } // антиспам if ($options['antispam']) { $antispam = $options['antispam']; $antispam_ok = $options['antispam_ok']; $require_title = ' ' . $options['require_title']; $input = '<input type="text" name="forms_fields[antispam]" required>'; $out .= str_replace(array('[antispam]', '[antispam_ok]', '[input]', '[require_title]'), array($antispam, $antispam_ok, $input, $require_title), $format['antispam']); } $submit = '<button type="submit">' . tf('Отправить') . '</button>'; if (!$options['reset']) { $reset = ''; } else { $reset = '<button type="reset">' . tf('Очистить форму') . '</button>'; } $out .= str_replace(array('[submit]', '[reset]'), array($submit, $reset), $format['buttons']); if (function_exists('ushka') and $options['ushka']) { $out .= ushka($options['ushka']); } // конец формы $out .= '</form></div>'; return $out; }
<span><a href="' . getinfo('site_admin_url') . 'page/category/[ID]" title="' . t('Список записей') . '" target="_blank">' . t('Записей:') . ' [COUNT]</a></span> </p> <p><span><textarea title="' . t('Описание') . '" name="f_category_desc[[ID]]" rows="2">[DESCR_HTML]</textarea></span></p> </td> <td class="t2"> <button type="submit" name="f_edit_submit[[ID]]" class="i save">' . t('Сохранить') . '</button> <br><button type="submit" name="f_delete_submit[[ID]]" class="i delete" onClick="if(confirm(\'' . t('Удалить рубрику?') . '\')) {return true;} else {return false;}">' . t('Удалить') . '</button> </td> </tr></table>'; $out = mso_create_list($all, array('childs' => 'childs', 'format' => $format, 'format_current' => $format, 'class_ul' => '', 'class_ul_style' => '', 'class_child_style' => '', 'class_li_style' => '', 'title' => 'category_name', 'link' => 'category_slug', 'current_id' => false, 'prefix' => 'category/', 'count' => 'pages_count', 'id' => 'category_id', 'slug' => 'category_slug', 'menu_order' => 'category_menu_order', 'id_parent' => 'category_id_parent')); // добавляем форму, а также текущую сессию echo '<form method="post" class="mso-cats">' . mso_form_session('f_session_id'); echo $out; # строчка для добавления новой рубрики echo ' <div> <h3>' . t('Добавить новую рубрику') . '</h3> <p><label><span>' . t('Название') . '<span><input type="text" name="f_new_name"></label></p> <p><label><span>' . t('Описание') . '<span><textarea name="f_new_desc"></textarea></label></p> <p><label><span>' . t('Ссылка') . '<span><input type="text" name="f_new_slug"></label></p> <p><label><span>' . t('Родитель') . '<span><input type="text" name="f_new_parent" value=""></label></p> <p><label><span>' . t('Порядок') . '<span><input type="text" name="f_new_order"></label></p> <p><button type="submit" name="f_new_submit" class="i add-new">' . t('Добавить новую рубрику') . '</button></p> </div> </form>'; # end file
$comments_content = str_replace('<p>', '<br>', $comments_content); $comments_content = str_replace('</p>', '', $comments_content); $comments_content = str_replace('<br />', '<br>', $comments_content); if (mb_strlen($comments_content, 'UTF-8') > 300) { $comments_content = mb_substr($comments_content, 0, 300, 'UTF-8') . ' ...'; } if ($row['comments_approved'] > 0) { $comments_approved = '+'; } else { $comments_approved = '-'; } $act = '<a href="' . $this_url . 'edit/' . $id . '">' . $author . '</a>'; $out = $comments_content_xss_start . $act . '<br>' . $comments_date . ' | ' . $row['comments_author_ip'] . ' | ' . $page_title . $comments_content_xss_end . '<p>' . $comments_content . '</p>' . NR; $CI->table->add_row($id, $id_out, $comments_approved, $out); } echo '<form method="post" class="fform admin_comments">' . mso_form_session('f_session_id'); echo $CI->table->generate(); echo ' <p class="br">' . t('C отмеченными:') . ' <input type="submit" name="f_aproved_submit" value="' . t('Разрешить') . '"> <input type="submit" name="f_unaproved_submit" value="' . t('Запретить') . '"> <input type="submit" name="f_delete_submit" onClick="if(confirm(\'' . t('Уверены?') . '\')) {return true;} else {return false;}" value="' . t('Удалить') . '"></p><br> '; echo '</form>'; echo mso_load_jquery('jquery.tablesorter.js') . ' <script> $(function() { $("table.tablesorter").tablesorter( {headers: { 1: {sorter: false}, 2: {sorter: false}, 3: {sorter: false} }}); }); </script>'; mso_hook('pagination', $pagination);
$error .= '<div class="error">' . t('К сожалению у вас нет доступных виджетов. Обычно они определяются в плагинах.') . '</div>'; } if ($MSO->sidebars) { foreach ($MSO->sidebars as $name => $sidebar) { // у сайддара уже может быть определены виджеты - считываем их из опций // потому что мы их будем там хранить // это простой массив с именами виджетов $options = mso_get_option('sidebars-' . mso_slug($name), 'sidebars', array()); $count_rows = count($options) + 1; if ($count_rows < 2) { $count_rows = 2; } $options = implode("\n", $options); // разделим по строкам $form .= '<h2>' . $sidebar['title'] . '</h2>' . '<p class="add-widget">Добавить виджет <select class="all_widgets" data-id-sb="' . $name . '"><option value="">' . t('—') . '</option>' . $select . '</select></p>'; $form .= '<textarea id="f_sidebars[' . $name . ']" name="f_sidebars[' . $name . ']" rows="' . $count_rows . '">'; $form .= htmlspecialchars($options); $form .= '</textarea>'; $all_name_sidebars[$name] = $sidebar['title']; } $form .= '<div><button type="submit" name="f_submit" class="i save">' . t('Сохранить изменения') . '</button></div>'; } else { $error .= '<div class="error">' . t('Сайдбары не определены. Обычно они регистрируются в файле <b>functions.php</b> вашего шаблона. Например:') . ' <br><b>mso_register_sidebar(\'1\', \'' . t('Первый сайдбар') . '\');</b></div>'; } if (!$error) { // добавляем форму, а также текущую сессию echo '<div class="sidebars"><form method="post">' . mso_form_session('f_session_id') . $form . '</form></div>'; } else { echo $error; } # end file
elem1.style.display = "none"; elem2.style.display = "block"; } else { elem1.style.display = "block"; elem2.style.display = "none"; } } </script>' . NR; // только первые 20 $f_all_tags .= tagclouds_widget_custom(array('max_num' => isset($editor_options['tags_count']) ? $editor_options['tags_count'] : 20, 'max_size' => '180', 'sort' => isset($editor_options['tags_sort']) ? $editor_options['tags_sort'] : 0, 'block_start' => '<p id="f_all_tags_max_num">', 'block_end' => ' <a title="' . t('Показать все метки') . '" href="#" onClick="shtags(1); return false;">>>></a></p>', 'format' => '<span style="font-size: [SIZE]%"><a href="#" onClick="addTag(\'[TAG]\'); return false;">[TAG]</a><sub style="font-size: 7pt;">[COUNT]</sub></span>')); // все метки $f_all_tags .= tagclouds_widget_custom(array('max_num' => 9999, 'max_size' => '180', 'sort' => isset($editor_options['tags_sort']) ? $editor_options['tags_sort'] : 0, 'block_start' => '<p id="f_all_tags_all" style="display: none;">', 'block_end' => ' <a title="' . t('Показать только самые популярные метки') . '" href="#" onClick="shtags(2); return false;"><<<</a></p>', 'format' => '<span style="font-size: [SIZE]%"><a href="#" onClick="addTag(\'[TAG]\'); return false;">[TAG]</a><sub style="font-size: 7pt;">[COUNT]</sub></span>')); } $fses = mso_form_session('f_session_id'); // сессия // получаем все типы страниц $all_post_types = ''; $query = $CI->db->get('page_type'); $page_type_js_obj = '{'; // для скрытия метаполей в зависимости от типа записи foreach ($query->result_array() as $row) { if ($f_page_type == $row['page_type_id']) { $che = 'checked="checked"'; } else { $che = ''; } $page_type_desc = $row['page_type_desc'] ? ' <em>(' . t($row['page_type_desc']) . ')</em>' : ''; $all_post_types .= '<label class="nocell"><input name="f_page_type[]" type="radio" ' . $che . ' value="' . $row['page_type_id'] . '"> ' . $row['page_type_name'] . $page_type_desc . '</label><br>'; $page_type_js_obj .= $row['page_type_name'] . ':' . $row['page_type_id'] . ',';
echo ' | <a href="' . getinfo('siteurl') . 'logout">' . tf('Выход') . '</a>'; } echo '</p>'; // если активация не завершена, то вначале требуем её завершить if ($comusers_activate_string != $comusers_activate_key) { echo '<form method="post">' . mso_form_session('f_session_id'); echo '<p><span style="color: red; font-weight: bold;" class="users-form">' . tf('Введите ключ активации') . ':</span> <input type="text" style="width: 200px;" class="users-form" name="f_comusers_activate_key"> '; echo '<input type="submit" name="f_submit[' . $comusers_id . ']" value="' . tf('Готово') . '"></p></form>'; echo '<p>' . tf('В случае проблем с активацией (не пришел ключ, указали ошибочный email), обращайтесь к администратору по email:') . ' <em>' . mso_get_option('admin_email', 'general', '-') . '</em></p>'; } else { echo '<form method="post" class="comusers-form fform">' . mso_form_session('f_session_id'); if ($login_form) { echo '<h3>' . tf('Для редактирования введите свой email и пароль') . '</h3>'; echo '<input type="hidden" value="' . getinfo('siteurl') . 'users/' . $comusers_id . '/edit" name="flogin_redirect">'; echo mso_form_session('flogin_session_id'); echo '<p><span class="ffirst ftitle">' . tf('Ваш email') . '</span><span><input type="text" name="flogin_user" class="flogin_user"></span></p>'; echo '<p><span class="ffirst ftitle">' . tf('Ваш пароль') . '</span><span><input type="password" name="flogin_password" class="flogin_password"></span></p>'; //echo '<p><span class="ffirst"></span><span><a href="' . getinfo('siteurl') . 'users/' . $comusers_id . '/lost">' . tf('Я забыл пароль') . '</a></span></p>'; } else { $CI =& get_instance(); $CI->load->helper('form'); echo '<input type="hidden" value="' . $comusers_email . '" name="f_comusers_email">'; echo '<input type="hidden" value="' . $comusers_password . '" name="f_comusers_password">'; echo '<h3>' . tf('Укажите свои данные') . '</h3>'; echo '<p><span class="ffirst ftitle">' . tf('Отображаемый ник') . '</span><span><input type="text" name="f_comusers_nik" value="' . $comusers_nik . '"></span></p>'; echo '<p><span class="ffirst ftitle">' . tf('Сайт (с http://)') . '</span><span><input type="text" name="f_comusers_url" value="' . $comusers_url . '"></p>'; echo '<p><span class="ffirst ftitle">' . tf('Аватарка (с http://, 80x80px)') . '</span><span><input type="text" name="f_comusers_avatar_url" value="' . $comusers_avatar_url . '"></p>'; echo '<p><span class="ffirst ftitle">' . tf('ICQ') . '</span><span><input type="text" name="f_comusers_icq" value="' . $comusers_icq . '"></p>'; echo '<p><span class="ffirst ftitle">' . tf('Twitter') . '</span><span><input type="text" name="f_comusers_msn" value="' . $comusers_msn . '"></p>'; echo '<p><span class="ffirst ftitle">' . tf('Jabber') . '</span><span><input type="text" name="f_comusers_jaber" value="' . $comusers_jaber . '"></p>';
function mso_page_content($page_content = '', $use_password = true, $message = 'Данная запись защищена паролем.') { global $page; mso_hook('content_start'); # хук на начало блока if ($use_password and $page['page_password']) { $form = '<p><strong>' . tf($message) . '</strong></p>'; $form .= '<form action="' . getinfo('siteurl') . 'page/' . $page['page_slug'] . '" method="post">' . mso_form_session('f_session_id'); $form .= '<input type="hidden" name="f_page_id" value="' . $page['page_id'] . '">'; $form .= '<p>' . tf('Пароль:') . ' <input type="text" name="f_password" value=""> '; $form .= '<input type="submit" name="f_submit" value="ОК"></p>'; $form .= '</form>'; // возможно пароль уже был отправлен if ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_page_id', 'f_password'))) { mso_checkreferer(); $f_page_id = (int) $post['f_page_id']; // номер записи $f_password = $post['f_password']; // пароль if ($f_page_id == $page['page_id'] and $f_password == $page['page_password']) { // верный пароль $page['page_password_ok'] = true; echo mso_hook('content_content', $page_content); } else { echo '<p style="color: red;">' . tf('<strong>Ошибочный пароль!</strong> Повторите ввод.') . '</p>' . $form; } } else { echo $form; } } else { echo mso_hook('content_content', $page_content); } }
<?php if (!defined('BASEPATH')) { exit('No direct script access allowed'); } echo '<h1>' . tf('Восстановление пароля комментатора') . '</h1>'; echo '<p><a href="' . getinfo('siteurl') . 'users">' . tf('Список комментаторов') . '</a></p>'; echo '<form action="" method="post" class="comusers-form">' . mso_form_session('f_session_id'); echo '<p>' . tf('Если у вас сохранился код активации, то вы можете сразу заполнить все поля. Если код активации утерян, то вначале введите только email и нажмите кнопку «Готово». На указанный email вы получите код активации. После этого вы можете вернуться на эту страницу и заполнить все поля.') . '</p>'; echo '<p><strong>' . tf('Ваш email') . ':</strong> <input type="text" name="f_comusers_email" value="">*</p>'; echo '<p><strong>' . tf('Ваш код активации') . ':</strong> <input type="text" name="f_comusers_activate_key" value=""></p>'; echo '<p><strong>' . tf('Новый пароль') . ':</strong> <input type="text" name="f_comusers_password" value=""></p>'; echo '<input type="submit" name="f_submit" value="' . tf('Готово') . '"></p></form>';
$CI =& get_instance(); $options_key = ''; if ($post = mso_check_post(array('f_session_id', 'f_submit'))) { mso_checkreferer(); $options = array(); $options['header'] = $post['f_header']; mso_add_option($options_key, $options, 'plugins'); echo '<div class="update">' . t('Обновлено!') . '</div>'; } ?> <h1><?php echo t('Плагин'); ?> </h1> <p class="info"><?php echo t('Описание'); ?> </p> <?php $options = mso_get_option($options_key, 'plugins', array()); if (!isset($options['header'])) { $options['header'] = ''; } $form = ''; $form .= '<h2>' . t('Настройки') . '</h2>'; $form .= '<p><strong>' . t('Заголовок:') . '</strong> ' . ' <input name="f_header" type="text" value="' . $options['header'] . '"></p>'; echo '<form method="post" class="fform">' . mso_form_session('f_session_id'); echo $form; echo '<button type="submit" name="f_submit">' . t('Сохранить изменения') . '</button>'; echo '</form>';
function forms_show_form($f = array(), $ushka = '', $forms_subscribe = true, $reset = true, $subject = '') { $out = ''; $antispam1 = rand(1, 10); $antispam2 = rand(1, 10); $id = 1; // счетчик для id label if ($subject) { // поле тема письма делаем в виде обязательнного поля select. // формируем массив для формы $subject_f['require'] = 1; // если в subject есть #, то это несколько значений - select // если нет, значит обычное текстовое поле $subject_f['type'] = mb_strpos($subject, '#') === false ? 'text' : 'select'; // если это одиночное поле, но при этом текст сабжа начинается // с _ то ставим тип hidden if ($subject_f['type'] == 'text' and mb_strpos($subject, '_') === 0) { $subject = mb_substr($subject . ' ', 1, -1, 'UTF-8'); $subject_f['type'] = 'hidden'; } $subject_f['description'] = tf('Тема письма'); //$subject_f['tip'] = t('Выберите тему письма'); $subject_f['values'] = $subject; $subject_f['value'] = $subject; $subject_f['default'] = ''; // pr($subject_f); // преобразования, чтобы сделать ключ для поля $f1['subject'] = $subject_f; // у поля тема будет ключ subject //pr($f1); foreach ($f as $key => $val) { $f1[$key] = $val; } $f = $f1; //pr($f1); } $out .= NR . '<div class="forms"><form method="post" class="plugin_forms fform">' . mso_form_session('forms_session'); $out .= '<input type="hidden" name="forms_antispam1" value="' . $antispam1 * 984 . '">'; $out .= '<input type="hidden" name="forms_antispam2" value="' . $antispam2 * 765 . '">'; // обязательные поля $out .= '<p><label class="ffirst ftitle" title="' . tf('Обязательное поле') . '" for="id-' . ++$id . '">' . tf('Ваше имя*') . '</label><span><input name="forms_name" type="text" value="" placeholder="' . tf('Ваше имя') . '" required id="id-' . $id . '"></span></p>'; $out .= '<p><label class="ffirst ftitle" title="' . tf('Обязательное поле') . '" for="id-' . ++$id . '">' . tf('Ваш email*') . '</label><span><input name="forms_email" type="email" value="" placeholder="' . tf('Ваш email') . '" required id="id-' . $id . '"></span></p>'; // тут указанные поля в $f // pr($f); foreach ($f as $key => $val) { if (!isset($val['type'])) { continue; } if (!isset($val['description'])) { $val['description'] = ''; } $val['type'] = trim($val['type']); $val['description'] = trim($val['description']); if (isset($val['require']) and trim($val['require']) == 1) { $require = '*'; $require_title = ' title="' . tf('Обязательное поле') . '"'; $required = ' required'; } else { $require = ''; $require_title = ''; $required = ''; } if (isset($val['attr']) and trim($val['attr'])) { $attr = ' ' . trim($val['attr']); } else { $attr = ''; } if (isset($val['value']) and trim($val['value'])) { $pole_value = htmlspecialchars(tf(trim($val['value']))); } else { $pole_value = ''; } if (isset($val['placeholder']) and trim($val['placeholder'])) { $placeholder = ' placeholder="' . htmlspecialchars(tf(trim($val['placeholder']))) . '"'; } else { $placeholder = ''; } $description = t(trim($val['description'])); if (isset($val['tip']) and trim($val['tip'])) { $tip = NR . '<p class="nop"><span class="ffirst"></span><span class="fhint">' . trim($val['tip']) . '</span></p>'; } else { $tip = ''; } if ($val['type'] == 'text') { //type_text - type для input HTML5 if (isset($val['type_text']) and trim($val['type_text'])) { $type_text = htmlspecialchars(trim($val['type_text'])); } else { $type_text = 'text'; } $out .= NR . '<p><label class="ffirst ftitle" for="id-' . ++$id . '"' . $require_title . '>' . $description . $require . '</label><span><input name="forms_fields[' . $key . ']" type="' . $type_text . '" value="' . $pole_value . '" id="id-' . $id . '"' . $placeholder . $required . $attr . '></span></p>' . $tip; } elseif ($val['type'] == 'select') { if (!isset($val['default'])) { continue; } if (!isset($val['values'])) { continue; } $out .= NR . '<p><label class="ffirst ftitle" for="id-' . ++$id . '"' . $require_title . '>' . $description . $require . '</label><span><select name="forms_fields[' . $key . ']" id="id-' . $id . '"' . $attr . '>'; $default = trim($val['default']); $values = explode('#', $val['values']); foreach ($values as $value) { $value = trim($value); if (!$value) { continue; } // пустые опции не выводим if ($value == $default) { $checked = ' selected="selected"'; } else { $checked = ''; } $out .= '<option' . $checked . '>' . htmlspecialchars(tf($value)) . '</option>'; } $out .= '</select></span></p>' . $tip; } elseif ($val['type'] == 'textarea') { $out .= NR . '<p><label class="ffirst ftitle ftop" for="id-' . ++$id . '"' . $require_title . '>' . $description . $require . '</label><span><textarea name="forms_fields[' . $key . ']" id="id-' . $id . '"' . $placeholder . $required . $attr . '>' . $pole_value . '</textarea></span></p>' . $tip; } elseif ($val['type'] == 'hidden') { $out .= NR . '<input name="forms_fields[' . $key . ']" type="hidden" value="' . $pole_value . '" id="id-' . $id . '"' . $attr . '>'; } } // обязательные поля антиспама и отправка и ресет $out .= NR . '<p><label class="ffirst ftitle" for="id-' . ++$id . '">' . $antispam1 . ' + ' . $antispam2 . ' =</label>'; $out .= '<span><input name="forms_antispam" type="text" required maxlength="3" value="" placeholder="' . tf('Укажите свой ответ') . '" id="id-' . $id . '"></span><p>'; if ($forms_subscribe) { $out .= NR . '<p><span class="ffirst"></span><label><input name="forms_subscribe" value="" type="checkbox" class="forms_checkbox"> ' . tf('Отправить копию письма на ваш e-mail') . '</label></p>'; } $out .= NR . '<p><span class="ffirst"></span><span class="submit"><button name="forms_submit" type="submit" class="forms_submit">' . tf('Отправить') . '</button>'; if ($reset) { $out .= ' <button name="forms_clear" type="reset" class="forms_reset">' . tf('Очистить форму') . '</button>'; } $out .= '</span></p>'; if (function_exists('ushka')) { $out .= ushka($ushka); } $out .= '</form></div>' . NR; return $out; }
</p> <pre>http://mysite.com/about | http://newsite.com/hello</pre><br> <p class="info"><?php echo t('При переходе к странице вашего сайта «http://mysite.com/about» будет осуществлен автоматический редирект на указанный «http://newsite.com/hello».'); ?> </p> <p class="info"><?php echo t('Третьим параметром вы можете указать тип редиректа: 301 или 302.'); ?> </p> <pre>http://mysite.com/about | http://newsite.com/hello | 301</pre><br> <p class="info"><?php echo t('Также можно использовать регулярные выражения.'); ?> </p> <pre>http://mysite.com/category/(.*) | http://newsite.com/$1 | 301</pre><br> <?php $options = mso_get_option($options_key, 'plugins', array()); if (!isset($options['all'])) { $options['all'] = ''; } if (!isset($options['all404'])) { $options['all404'] = ''; } echo '<form method="post">' . mso_form_session('f_session_id'); echo '<textarea name="f_all" rows="10">' . $options['all'] . '</textarea>'; echo '<p class="info">' . t('Здесь можно указать редиректы, которые сработают только при несуществующем типе данных (custom_page_404).') . '</p>'; echo '<textarea name="f_all404" rows="10">' . $options['all404'] . '</textarea>'; echo '<button type="submit" name="f_submit" class="i save">' . t('Сохранить изменения') . '</button>'; echo '</form>';
echo '<form method="post">' . mso_form_session('f_session_id'); if ($admin_view_files == 'table') { echo $CI->table->generate(); } else { echo '<div class="all-images">'; echo $out_all; echo '</div>'; } echo '<div class="sel-files"><button type="submit" name="f_delete_submit" class="i delete-file" onClick="if(confirm(\'' . t('Выделенные файы будут безвозвратно удалены! Удалять?') . '\')) {return true;} else {return false;}">' . t('Удалить') . '</button> <button type="button" id="check-all" class="mso-invert">' . t('Инвертировать выделение') . '</button></div> </form>'; $n = '\\n'; $up = $uploads_url; $mess = t('Предварительно нужно выделить файлы для галереи'); $session = mso_form_session('f_session_id'); $save_button = t('Сохранить'); echo <<<EOF <script> function toggleAll() { \tvar allCheckboxes = \$("input.f_check_files:enabled"); \tvar notChecked = allCheckboxes.not(':checked'); \tallCheckboxes.removeAttr('checked'); \tnotChecked.attr('checked', 'checked'); } \$(function() { \t\$("#check-all").click(function(){ \t\ttoggleAll() \t});
function mso_view_ini($all = false) { if (!$all) { return ''; } //pr($all); $CI =& get_instance(); $CI->load->library('table'); $tmpl = array('table_open' => '<table class="page "><colgroup style="width: 25%;">', 'row_alt_start' => '<tr class="alt">', 'cell_alt_start' => '<td class="alt">'); $CI->table->clear(); // очистим, если были старые данные $CI->table->set_template($tmpl); // шаблон таблицы // заголовки //$CI->table->set_heading(t('Настройка'), t('Значение')); $table = ''; $out = ''; $nav = ''; // блок навигации // сформируем массив всех опций - ключей $k_where = array(); foreach ($all as $k => $v) { if (isset($v['options_key']) and $v['options_key']) { $k_where[] = $v['options_key']; } } // делаем одним запросов выборку всех опций по этим ключам $CI->db->where_in('options_key', $k_where); $query = $CI->db->get('options'); if ($query->num_rows() > 0) { // есть запись $all_options = $query->result_array(); } else { $all_options = array(); } //pr($all_options); //pr($all); foreach ($all as $key => $row) { if (isset($row['options_key'])) { $options_key = stripslashes(trim($row['options_key'])); } else { continue; } if (!isset($row['options_type'])) { $options_type = 'general'; } else { $options_type = stripslashes(trim($row['options_type'])); } if (!isset($row['type'])) { if ($options_key !== 'none') { $type = 'textfield'; } else { $type = 'none'; } } else { $type = stripslashes(trim($row['type'])); } if (!isset($row['values'])) { $value = ''; } else { $values = _mso_ini_check_php(stripslashes(htmlspecialchars(trim($row['values'])))); } if (!isset($row['description'])) { $description = ''; } else { $description = _mso_ini_check_php(stripslashes(trim(t($row['description'])))); } if (!isset($row['delimer'])) { $delimer = '<br>'; } else { $delimer = stripslashes($row['delimer']); } if (!isset($row['default'])) { $default = ''; } else { $default = _mso_ini_check_php(stripslashes(htmlspecialchars(trim($row['default'])))); } // получаем текущее значение опции из массива $all_options $options_present = false; $value = t($default); // нет значения, поэтому берем дефолт foreach ($all_options as $v) { if ($v['options_type'] == $options_type and $v['options_key'] == $options_key) { $value = htmlspecialchars($v['options_value']); $options_present = true; // признак, что опция есть в базе break; } } $f = NR; // тип none не создает поля - фиктивная опция if ($options_key != 'none') { $name_f = 'f_options[' . $options_key . '_m_s_o_' . $options_type . ']'; } else { $name_f = ''; } if ($type == 'textfield') { $value = str_replace('_QUOT_', '"', $value); // в этом типе может быть свой type для input if (!isset($row['textfield_type'])) { $textfield_type = 'text'; } else { $textfield_type = stripslashes($row['textfield_type']); } $f .= '<input type="' . $textfield_type . '" name="' . $name_f . '" value="' . $value . '">' . NR; } elseif ($type == 'color') { $f .= mso_load_jquery('jscolor.js', getinfo('common_url') . 'jquery/jscolor/'); $f .= '<input type="text" name="' . $name_f . '" value="' . $value . '" class="color">' . NR; } elseif ($type == 'textarea') { $value = str_replace('_NR_', "\n", $value); $value = str_replace('_QUOT_', '"', $value); if (!isset($row['rows'])) { $rr = 7; } else { $rr = (int) $row['rows']; } $f .= '<textarea rows="' . $rr . '" name="' . $name_f . '">' . $value . '</textarea>' . NR; } elseif ($type == 'checkbox') { if ($value) { $checked = 'checked="checked"'; } else { $checked = ''; } $f .= '<label><input type="checkbox" name="' . $name_f . '" ' . $checked . '> ' . t($key) . '</label>' . NR; $f .= '<input type="hidden" name="f_all_checkbox[' . $options_key . '_m_s_o_' . $options_type . ']">' . NR; } elseif ($type == 'multicheckbox') { $mr = $value; // отмеченные пункты - массив в виде стандартного option if ($mr) { // служебные замены $mr = str_replace('&', '&', $mr); $mr = str_replace('"', '"', $mr); if (preg_match('|_serialize_|A', $mr)) { $mr = preg_replace('|_serialize_|A', '', $mr, 1); $mr = @unserialize($mr); } if (!is_array($mr)) { $mr = array($mr); } } else { $mr = array(); } // $mr теперь массив! $values = explode('#', $values); if ($values) { foreach ($values as $val) { $ar = explode('||', $val); if (isset($ar[0])) { $mr1 = trim($ar[0]); } // ключ чекбокса if (isset($ar[1])) { $mr2 = trim($ar[1]); } else { $mr2 = $mr1; } if (in_array($mr1, $mr)) { $checked = 'checked="checked"'; } else { $checked = ''; } //для каждого чекбокса свой ключ! $mkey = $options_key . '_' . mso_slug($mr1) . '_m_s_o_' . $options_type; $name_f1 = 'f_options[' . $mkey . ']'; $f .= '<label><input type="checkbox" name="' . $name_f . '[]" value="' . $mr1 . '" ' . $checked . '> ' . t($mr2) . '</label>' . $delimer . NR; } $f .= '<input type="hidden" name="f_all_checkbox[' . $options_key . '_m_s_o_' . $options_type . ']">' . NR; } } elseif ($type == 'radio') { $values = explode('#', $values); // все значения разделены # if ($values) { foreach ($values as $val) { $ar = explode('||', $val); if (isset($ar[0])) { $mr1 = trim($ar[0]); } // ключ if (isset($ar[1])) { $mr2 = trim($ar[1]); } else { $mr2 = $mr1; } if ($value == trim($mr1)) { $checked = 'checked="checked"'; } else { $checked = ''; } // преобразование в html $mr2 = str_replace('_QUOT_', '"', $mr2); $mr2 = str_replace('<', '<', $mr2); $mr2 = str_replace('>', '>', $mr2); $f .= '<label><input type="radio" name="' . $name_f . '" value="' . $mr1 . '" ' . $checked . '> ' . t($mr2) . '</label>' . $delimer . NR; } } } elseif ($type == 'select') { $values = explode('#', $values); // все значения разделены # if ($values) { $f .= '<select name="' . $name_f . '">'; foreach ($values as $val) { // $val может быть с || val - текст $val = trim($val); $val_t = $val; $ar = explode('||', $val); if (isset($ar[0])) { $val = trim($ar[0]); } if (isset($ar[1])) { $val_t = trim($ar[1]); } if ($value == $val) { $checked = 'selected="selected"'; } else { $checked = ''; } $f .= NR . '<option value="' . $val . '" ' . $checked . '>' . t($val_t) . '</option>'; } $f .= NR . '</select>' . NR; } } if ($description) { $f .= '<p><em>' . t($description) . '</em></p>'; } if ($options_key != 'none') { if (!$options_present) { $key = '<span title="' . $options_key . ' (' . $row['options_type'] . ')" class="mso-alert">* ' . t($key) . '</span>'; } else { $key = '<strong title="' . $options_key . ' (' . $row['options_type'] . ')">' . t($key) . '</strong>'; } } else { $key = ''; } // если есть новая секция, то выводим пустую инфо-строчку if (isset($row['section'])) { if ($CI->table->rows) { $table .= $CI->table->generate(); } $CI->table->clear(); // очистим, если были старые данные $tmpl['table_open'] = NR . '<table class="page page-responsive section_' . mso_slug($row['section']) . '"><colgroup style="width: 25%;">'; $CI->table->set_template($tmpl); // шаблон таблицы if (isset($row['section_description'])) { $CI->table->add_row(array('class' => 'section', 'colspan' => 2, 'data' => '<a id="a-' . mso_slug($row['section']) . '"></a><h2 class="section">' . t($row['section']) . '</h2><p>' . t($row['section_description']) . '</p>')); } else { $CI->table->add_row(array('class' => 'section', 'colspan' => 2, 'data' => '<a id="a-' . mso_slug($row['section']) . '"></a><div class="section"><h2>' . t($row['section']) . '</h2></div>')); } $nav .= '<a href="#a-' . mso_slug($row['section']) . '" id="' . mso_slug($row['section']) . '">' . t($row['section']) . '</a> '; } if ($key) { $CI->table->add_row($key, $f); } } if ($CI->table->rows) { $table .= $CI->table->generate(); } // последняя генерация $out .= '<form action="' . mso_current_url(true) . '" method="post">' . mso_form_session('f_session_id'); $out .= '<a id="atop"></a><input type="hidden" value="1" name="f_ini">'; // доп. поле - индикатор, что это ini-форма if ($nav) { $out .= '<p class="nav">' . str_replace(' ', '<span class="sep"></span>', trim($nav)) . '</p>'; } $out .= $table; // вывод подготовленной таблицы $out .= NR . '<a id="abottom"></a><button type="submit" name="f_submit" class="mso-save-ini i-save">' . t('Сохранить') . '</button>'; $out .= '</form>'; $out .= mso_load_jquery('jquery.cookie.js') . "\r\n<script>\r\n\t\$(function()\r\n\t{\r\n\t\t\$('table.page').hide();\r\n\r\n\t\tvar NameCookie = 'curSection_" . mso_segment(2) . "',\r\n\t\tcookieIndex = \$.cookie(NameCookie);\r\n\r\n\t\tif (cookieIndex != null && \$('table').is('.section_'+cookieIndex)) // есть кука и есть соответсвующая ей таблица\r\n\t\t{\r\n\t\t\t\$('table.section_'+cookieIndex).show();\r\n\t\t\t\$('#'+cookieIndex).addClass('current');\r\n\t\t}\r\n\t\telse // если нет куки или соответвующей таблицы\r\n\t\t{\r\n\t\t\t\$('table.page:first').show(); // показывем только первую таблицу\r\n\t\t\t\$('p.nav a:first').addClass('current'); // к первому пункту навигации добавляем класс\r\n\t\t}\r\n\r\n\t\t\$('p.nav a').click(function(){\r\n\t\t\tvar id = \$(this).attr('id');\r\n\t\t\t\$('table.page').hide();\r\n\r\n\t\t\t\$(this).addClass('current').siblings().removeClass(); // добавляем класс на кликнутый пункт, а у всех соседних удаляем\r\n\t\t\t\$('table.section_'+id).show();\r\n\t\t\t\$.cookie(NameCookie, id, {expires: 30, path: '/'});\r\n\t\t\treturn false;\r\n\t\t});\r\n\t});\r\n</script>"; return $out; }
function maxsite_auth_mso_options() { if (!mso_check_allow('maxsite_auth_edit')) { echo t('Доступ запрещен'); return; } # ключ, тип, ключи массива mso_admin_plugin_options('plugin_maxsite_auth', 'plugins', array('email' => array('type' => 'text', 'name' => t('Email'), 'description' => t('Укажите рабочий email, который будет использоваться для регистрации и входа на других сайтах.'), 'default' => ''), 'password' => array('type' => 'text', 'name' => t('Пароль'), 'description' => t('Укажите пароль, который будет использоваться для регистрации и входа на других сайтах. Не указывайте здесь пароль от своего сайта!'), 'default' => ''), 'unique' => array('type' => 'checkbox', 'name' => t('Делать уникальные пароли для каждого сайта'), 'description' => t('В этом случае для каждого сайта будет создан уникальный пароль на основе его адреса и вашего пароля. Для «прямого» входа на чужом сайте вы можете сгенерировать полученный пароль через приведенную ниже форму. Вы можете использовать его также для восстановления на чужом сайте.'), 'default' => '0')), t('Настройка Maxsite Auth'), t('С помощью Maxsite Auth вы можете осуществлять авторизацию на других сайтах с помощью своего. Достаточно лишь предварительно задать email и пароль, которые будут передаваться на исходный сайт, где вы автоматически будете зарегистрированы или авторизованы как комюзер (комментатор).')); echo '<br>'; if ($post = mso_check_post(array('f_url_submit', 'f_url'))) { $url = mb_strtolower($post['f_url']); $options = mso_get_option('plugin_maxsite_auth', 'plugins', array()); if (!$url) { echo '<div class="error">' . t('Нужно указать адрес сайта') . '</div>'; } elseif (!isset($options['password']) or !$options['password']) { echo '<div class="error">' . t('Следует указать свой пароль') . '</div>'; } elseif (!isset($options['unique']) or !$options['unique']) { echo '<div class="error">' . t('Вы не отметили создание уникального пароля для каждого сайта') . '</div>'; } else { $pas = $url; $pas = convert_uuencode(mso_md5($options['password'] . $pas)); $pas = mb_strtolower($pas); $pas = mso_slug($pas); $pas = substr($pas, 1, 20); echo '<div class="update">' . t('Пароль для ') . $url . ' — <input type="text" value="' . $pas . '"></div>'; } } echo '<form method="post" class="fform">' . mso_form_session('f_session_id') . ' <p class="hr head"><label class="fheader" for="f_url">' . t('Укажите адрес сайта (с http://), для которого необходимо узнать свой пароль') . '</label></p> <p><span><input type="text" name="f_url" id="f_url"></span></p> <p><span><button type="submit" name="f_url_submit" class="i execute">' . t('Узнать пароль для сайта') . '</button></span></p> </form>'; }