Вход Регистрация
Файл: Arhmobi_esdcms/dpanel/menu.editor.php
Строк: 415
<?php
include_once '../sys/inc/start.php';
dpanel::check_access();
$doc = new document(6);
$groups groups::load_ini();
$doc->title __('Редактор меню');
$menu_files = (array) glob('/sys/ini/menu.*.ini');
$menus = array();
foreach (
$menu_files as $menu_path) {
if (!
preg_match('#menu.(.+?).ini$#ui'$menu_path$m))
continue;
$menus[] = $m[1];
}
if (!empty(
$_GET['menu'])) {
$menu = (string) $_GET['menu'];
if (!
in_array($menu$menus)) {
$doc->err(__('Запрошенное меню не найдено'));
exit;
}
$doc->title __('Меню "%s" - редактирование'$menu);
$m_obj = new menu($menu);
if (!empty(
$_GET['item'])) {
$item_name = (string) $_GET['item'];
if (!isset(
$m_obj->menu_arr[$item_name])) {
$doc->err(__('Ошибка при выборе пункта меню'));
}
$item $m_obj->menu_arr[$item_name];
$doc->title __('Меню "%s" - %s'$menu$item_name);
if (!empty(
$_POST['delete'])) {
if (empty(
$_POST['captcha']) || empty($_POST['captcha_session']) || !captcha::check($_POST['captcha'], $_POST['captcha_session'])) {
$doc->err(__('Проверочное число введено неверно'));
} else {
$ini ini::read('/sys/ini/menu.' $menu '.ini'true);
unset(
$ini[$item_name]);
if (
ini::save('/sys/ini/menu.' $menu '.ini'$initrue)) {
$doc->msg(__('Пункт меню успешно удален'));
} else {
$doc->err(__('Ошибка при сохранении файла'));
}
header('Refresh: 1; url=?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Меню "%s"'$menu), '?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
}
if (!empty(
$_POST['save'])) {
$name text::input_text(@$_POST['name']);
$url text::input_text(@$_POST['url']);
$counter text::input_text(@$_POST['counter']);
$icon text::input_text(@$_POST['icon']);
$razdel = (int) !empty($_POST['razdel']);
$is_vip = (int) !empty($_POST['is_vip']);
$group = (int) @$_POST['group'];
$position = (int) @$_POST['position'];
if (empty(
$name)) {
$doc->err(__('Название не может быть пустым'));
} elseif (
$name != $item_name && isset($m_obj->menu_arr[$name])) {
$doc->err(__('Выбранное название меню уже занято'));
} else {
$ini ini::read('/sys/ini/menu.' $menu '.ini'true);
if (
$name != $item_name) {
unset(
$ini[$item_name]);
}
$ini[$name] = array('url' => $url,
'counter' => $counter,
'icon' => $icon,
'razdel' => $razdel,
'is_vip' => $is_vip,
'group' => $group
);
arraypos::setPosition($ini$name$position);
if (
ini::save('/sys/ini/menu.' $menu '.ini'$initrue)) {
$doc->msg(__('Изменения успешно приняты'));
} else {
$doc->err(__('Ошибка при сохранении файла'));
}
header('Refresh: 1; url=?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Меню "%s"'$menu), '?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
}
if (isset(
$_GET['act']) && $_GET['act'] == 'delete') {
$doc->title __('Удаление пункта %s'$item_name);
$form = new form('?menu=' urlencode($menu) . '&amp;item=' urlencode($item_name) . '&amp;' passgen());
$form->captcha();
$form->button(__('Удалить'), 'delete');
$form->display();
} else {
$form = new form('?menu=' urlencode($menu) . '&amp;item=' urlencode($item_name) . '&amp;' passgen());
$form->text('name'__('Название'), $item_name);
$form->text('position'__('Позиция'), arraypos::getPosition($m_obj->menu_arr$item_name));
$form->text('url'__('Ссылка'), $item['url']);
$form->text('counter'__('Адрес счтчика'), $item['counter']);
$icons = (array) glob('/sys/images/icons/*.png');
$options = array();
$options[] = array('''[' __('Отсутствует') . ']');
foreach (
$icons as $icon_path) {
$icon str_replace('/sys/images/icons/'''filesystem::unixpath($icon_path));
$options[] = array($icon$icon$icon == @$item['icon']);
}
$form->select('icon'__('Иконка'), $options);
$form->checkbox('razdel'__('Разделитель'), @$item['razdel']);
$form->checkbox('is_vip'__('Только для VIP'), @$item['is_vip']);
$options = array();
foreach (
$groups as $group => $value) {
$options[] = array($group$value['name'], $group == @$item['group']);
}
$form->select('group'__('Для группы (и выше)') . '*'$options);
$form->bbcode('* ' __('Регулируется только отображение ссылки'));
$form->button(__('Применить'), 'save');
$form->display();
}
$doc->ret(__('Меню "%s"'$menu), '?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
if (isset(
$_GET['item_add'])) {
$doc->title __('Новый пункт меню %s'$menu);
if (!empty(
$_POST['create'])) {
$name text::input_text(@$_POST['name']);
$url text::input_text(@$_POST['url']);
$counter text::input_text(@$_POST['counter']);
$icon text::input_text(@$_POST['icon']);
$razdel = (int) !empty($_POST['razdel']);
$is_vip = (int) !empty($_POST['is_vip']);
$group = (int) @$_POST['group'];
$position = (int) @$_POST['position'];
if (empty(
$name)) {
$doc->err(__('Название не может быть пустым'));
} elseif (isset(
$m_obj->menu_arr[$name])) {
$doc->err(__('Выбранное название меню уже занято'));
} else {
$ini ini::read('/sys/ini/menu.' $menu '.ini'true);
$ini[$name] = array('url' => $url,
'counter' => $counter,
'icon' => $icon,
'razdel' => $razdel,
'is_vip' => $is_vip,
'group' => $group
);
arraypos::setPosition($ini$name$position);
if (
ini::save('/sys/ini/menu.' $menu '.ini'$initrue)) {
$doc->msg(__('Изменения успешно приняты'));
} else {
$doc->err(__('Ошибка при сохранении файла'));
}
header('Refresh: 1; url=?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Меню "%s"'$menu), '?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
}
$form = new form('?menu=' urlencode($menu) . '&amp;item_add&amp;' passgen());
$form->text('name'__('Название'));
$form->text('position'__('Позиция'), count($m_obj->menu_arr) + 1);
$form->text('url'__('Ссылка'), 'http://');
$form->text('counter'__('Адрес счетчика'), '');
$icons = (array) glob('/sys/images/icons/*.png');
$options = array();
$options[] = array('''[' __('Отсутствует') . ']');
foreach (
$icons as $icon_path) {
$icon str_replace('/sys/images/icons/'''filesystem::unixpath($icon_path));
$options[] = array($icon$icon);
}
$form->select('icon'__('Иконка'), $options);
$form->checkbox('razdel'__('Разделитель'));
$form->checkbox('is_vip'__('Только для VIP'));
$options = array();
foreach (
$groups as $group => $value) {
$options[] = array($group$value['name']);
}
$form->select('group'__('Для группы (и выше)') . '*'$options);
$form->bbcode('* ' __('Регулируется только отображение ссылки'));
$form->button(__('Создать'), 'create');
$form->display();
$doc->ret(__('Меню "%s"'$menu), '?menu=' urlencode($menu) . '&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
if (isset(
$_GET['sortable'])) {
$ini ini::read('/sys/ini/menu.' $menu '.ini'true);
$doc->clean();
//echo $_POST['sortable'];
$sortable explode(','$_POST['sortable']);
foreach (
$sortable as $position => $key) {
//$key = base64_decode($key);
// echo "$position $keyn";
arraypos::setPosition($ini$key$position 1);
}
header('Content-type: application/json');
if (
ini::save('/sys/ini/menu.' $menu '.ini'$initrue)) {
echo 
json_encode(array('result' => 1'description' => __('Порядок пунктов меню успешно сохранен')));
} else {
echo 
json_encode(array('result' => 0'description' => __('Не удалось сохранить порядок пунктов в меню')));
}
exit;
}
if (isset(
$_GET['up']) || isset($_GET['down'])) {
$ini ini::read('/sys/ini/menu.' $menu '.ini'true);
if (isset(
$_GET['up'])) {
$item_name $_GET['up'];
if (
misc::array_key_move($ini$item_name, - 1)) {
$doc->msg(__('Пункт "%s" успешно перемещен вверх'$item_name));
} else {
$doc->err(__('Пункт "%s" уже находится вверху'$item_name));
}
}
if (isset(
$_GET['down'])) {
$item_name $_GET['down'];
if (
misc::array_key_move($ini$item_name1)) {
$doc->msg(__('Пункт "%s" успешно перемещен вниз'$item_name));
} else {
$doc->err(__('Пункт "%s" уже находится внизу'$item_name));
}
}
if (
ini::save('/sys/ini/menu.' $menu '.ini'$initrue)) {
$doc->msg(__('Изменения успешно приняты'));
} else {
$doc->err(__('Ошибка при сохранении файла'));
}
$m_obj = new menu($menu);
}
$listing = new listing();
$position 0;
foreach (
$m_obj->menu_arr as $name => $item) {
$position++;
$post $listing->post();
$post->id $name;
$post->url '?menu=' urlencode($menu) . '&amp;item=' urlencode($name);
$post->title text::toValue($name);
$post->icon(@$item['icon']);
$post->action('up''?menu=' urlencode($menu) . '&amp;up=' urlencode($name) . '&amp;' passgen());
$post->action('down''?menu=' urlencode($menu) . '&amp;down=' urlencode($name) . '&amp;' passgen());
$post->action('delete''?menu=' urlencode($menu) . '&amp;item=' urlencode($name) . '&amp;act=delete&amp;' passgen());
if (empty(
$item['razdel'])) {
$post->content __('Ссылка') . ": $item[url]n";
if (!empty(
$item['icon'])) {
$icon = array('size' => 'small''src' => '/sys/images/icons/' $item['icon']);
}
} else {
$post->content "[b]" __('Разделитель') . "[/b]n";
$post->hightlight true;
}
if (!empty(
$item['for_vip'])) {
$post->content .= __('Только для [b]VIP[/b]-пользователей') . "n";
}
if (!empty(
$item['group'])) {
$post->content .= __('Только для группы [b]%s[/b] (%s)'groups::name($item['group']), $item['group']) . " n";
}
$post->content text::toOutput($post->content);
}
$listing->sortable '?sortable&amp;menu=' urlencode($menu);
$listing->display(__('Меню пусто'));
$doc->act(__('Добавить пункт'), '?menu=' urlencode($menu) . '&amp;item_add&amp;' passgen());
$doc->ret(__('Список меню'), '?' passgen());
$doc->ret(__('Админка'), './?' passgen());
exit;
}
$listing = new listing();
foreach (
$menus as $menu) {
$post $listing->post();
$post->title text::toValue($menu);
$post->url '?menu=' urlencode($menu);
$post->icon('menu.editor');
}
$listing->display(__('Нет меню для редактирования'));
$doc->ret(__('Админка'), './?' passgen());
Онлайн: 1
Реклама