Rabb1t
Амбассадор
- Сообщения
- 2,968
- Реакции
- 1,429
- Команда форума
- #701
@CrazyHackGUT, оценю)
только не забудь пояснение написать как и с чем его едят ))@CrazyHackGUT, запихаем) хорошая работа)
не пробывал не проходит. буду перустанавливать@miki, "связь прервалась". Написано, же, что бд отвалилась)
--- Добавлено позже ---
Перезапустил сервер, авось проблемы у хостеры с сб были)
Поддерживаю, было бы неплохоЕсть такая идея. Добавить в СБ функцию добавления статических страниц. Иначе говоря, админы могут добавлять страницы, допустим, с правилами, и ссылаться на них через адреса вида:
?p=static&c=rules
Я давно хотел такое сделать, но никак руки не доходили.
А можно будет сделать чтобы некоторые страницы были видны только админам?Сейчас сижу в итоге и пилю... Набросок шаблона (да и код) уже готов. Осталось только в настройках добавить возможность добавлять эти самые страницы.
G-44 Bans
Только думаю на тему пункта "Последнее редактирование". Может, убрать его или отображать только админам?...
--- Добавлено позже ---
Сделал в виде настройки, которая если активна, то отображает всем админа и дату изменения. Если неактивна - то только авторизованным админам.
А вот последнее доступно всем админам кто авторизуется или же по определенным веб правам?Решил обойтись без насилия файлов админки. Всё управление статическими страницами будет прямо на странице со списком статических страниц.
Посмотреть вложение 18338
--- Добавлено позже ---
Допилил редактор страниц. Осталось попариться с сохранением страниц, а конкретно валидацией введенной пользователем ссылки.
--- Добавлено позже ---
Осталось пару моментов подкорректировать, но в целом вышло как-то так:
$xajax->registerFunction("removeExpiredAdmins");
$xajax->registerFunction("RemoveStaticPage");
$xajax->registerFunction("AddStaticPage");
$xajax->registerFunction("EditStaticPage");
$xajax->registerFunction("EditStaticSettings");
$username = $userbank->GetProperty("user");
function EditStaticSettings($enabled, $editors, $listing) {
global $userbank;
$objResponse = new xajaxResponse();
if (!$userbank->HasAccess(ADMIN_WEB_SETTINGS|ADMIN_OWNER)) {
$objResponse->addScript('ShowBox("Ошибка!", "У вас недостаточно прав для выполнения этой операции!", "red", "index.php?p=static");');
$log = new CSystemLog("w", "Ошибка доступа", "Администратор пытался создать статическую страницу, не имея на это прав.");
} else {
if ($GLOBALS['db']->Execute(sprintf("UPDATE `%s_settings` SET `value`=%d WHERE `setting`='page.static'", DB_PREFIX, ($enabled=="true")?1:0)) && $GLOBALS['db']->Execute(sprintf("UPDATE `%s_settings` SET `value`=%d WHERE `setting`='static.show_editor_public'", DB_PREFIX, ($editors=="true")?1:0)) && $GLOBALS['db']->Execute(sprintf("UPDATE `%s_settings` SET `value`=%d WHERE `setting`='static.show_allpages'", DB_PREFIX, ($listing=="true")?1:0))) {
$objResponse->addScript('ShowBox("Успех!", "Настройки модуля статических страниц сохранены.", "green", "index.php?p=static");');
$log = new CSystemLog("m", "Правка настроек статических страниц", "Изменены настройки статических страниц.");
} else
$objResponse->addScript('ShowBox("Ошибка!", "Не удалось сохранить Настройки модуля статических страниц. Повторите попытку.", "red", "", true);');
}
return $objResponse;
}
function AddStaticPage($title, $text, $url, $only_admins) {
global $userbank;
$objResponse = new xajaxResponse();
$only_admins = ($only_admins=="true")?1:0;
if (!$userbank->HasAccess(ADMIN_WEB_SETTINGS|ADMIN_OWNER)) {
$objResponse->addScript('ShowBox("Ошибка!", "У вас недостаточно прав для выполнения этой операции!", "red", "index.php?p=static");');
$log = new CSystemLog("w", "Ошибка доступа", "Администратор пытался создать статическую страницу, не имея на это прав.");
} else if (!preg_match("/^[aA0\--zZ9_]{1,}$/",$url))
$objResponse->addScript('ShowBox("Ошибка!", "В ссылке существуют недопустимые символы! Разрешены только английские символы, цифры и знак минуса и подчёркивания", "red", "", true);');
else {
if ($GLOBALS['db']->GetRow(sprintf("SELECT COUNT(*) FROM `%s_pages` WHERE `url` = %s", DB_PREFIX, $GLOBALS['db']->qstr($url)))[0] > 0)
$objResponse->addScript('ShowBox("Ошибка!", "Страница с такой ссылкой уже существует!", "red", "", true);');
else if ($GLOBALS['db']->Execute(sprintf("INSERT INTO `%s_pages` (`url`, `title`, `text`, `lastedit`, `editor`, `hidden`) VALUES (%s, %s, %s, %d, %d, %d)", DB_PREFIX, $GLOBALS['db']->qstr($url), $GLOBALS['db']->qstr($title), $GLOBALS['db']->qstr($text), time(), $userbank->GetProperty("aid"), $only_admins))) {
$objResponse->addScript('ShowBox("Успех!", "Статическая страница создана.", "green", "index.php?p=static");');
$log = new CSystemLog("m", "Создание статической страницы", "Создана статическая страница");
} else {
$objResponse->addScript('ShowBox("Ошибка!", "Не удалось создать статическую страницу.<br />Смотрите в системный лог.", "red", "index.php?p=static");');
$log = new CSystemLog("w", "Создание статической страницы", "Не удалось создать статическую страницу.");
}
}
return $objResponse;
}
function EditStaticPage($id, $title, $text, $url, $only_admins) {
global $userbank;
$objResponse = new xajaxResponse();
$only_admins = ($only_admins=="true")?1:0;
if (!$userbank->HasAccess(ADMIN_WEB_SETTINGS|ADMIN_OWNER)) {
$objResponse->addScript('ShowBox("Ошибка!", "У вас недостаточно прав для выполнения этой операции!", "red", "index.php?p=static");');
$log = new CSystemLog("w", "Ошибка доступа", "Администратор пытался отредактировать статическую страницу, не имея на это прав.");
} else if (!preg_match("/^[aA0\--zZ9_]{1,}$/",$url))
$objResponse->addScript('ShowBox("Ошибка!", "В ссылке существуют недопустимые символы! Разрешены только английские символы, цифры и знак минуса и подчёркивания", "red", "", true);');
else {
if ($GLOBALS['db']->Execute(sprintf("UPDATE `%s_pages` SET `title`=%s, `text`=%s, `url`=%s, `hidden`=%d, `editor`=%d, `lastedit`=%d WHERE `pid` = %d", DB_PREFIX, $GLOBALS['db']->qstr($title), $GLOBALS['db']->qstr($text), $GLOBALS['db']->qstr($url), $only_admins, $userbank->GetProperty("aid"), time(), $id))) {
$objResponse->addScript('ShowBox("Успех!", "Статическая страница отредактирована.", "green", "index.php?p=static");');
$log = new CSystemLog("m", "Редактирование статической страницы", sprintf("Изменена статическая страница под уникальным идентификатором %d", $id));
} else {
$objResponse->addScript(sprintf('ShowBox("Ошибка!", "Не удалось отредактировать статическую страницу под идентификатором %d.<br />Смотрите в системный лог для получения подробностей.", "red", "index.php?p=static");', $id));
$log = new CSystemLog("w", "Редактирование статической страницы", sprintf("Не удалось отредактировать статическую страницу под идентификатором %d: Страница не найдена", $id));
}
}
return $objResponse;
}
function RemoveStaticPage($id) {
global $userbank;
$objResponse = new xajaxResponse();
if (!$userbank->HasAccess(ADMIN_WEB_SETTINGS|ADMIN_OWNER)) {
$objResponse->addScript('ShowBox("Ошибка!", "У вас недостаточно прав для выполнения этой операции!", "red", "index.php?p=static");');
$log = new CSystemLog("w", "Ошибка доступа", "Администратор пытался удалить статическую страницу, не имея на это прав.");
} else {
if ($GLOBALS['db']->Execute(sprintf("DELETE FROM `%s_pages` WHERE `pid` = %s", DB_PREFIX, $id))) {
$objResponse->addScript('ShowBox("Успех!", "Статическая страница удалена.", "green", "index.php?p=static");');
$log = new CSystemLog("m", "Удаление статической страницы", sprintf("Удалена статическая страница под уникальным идентификатором %d", $id));
} else {
$objResponse->addScript(sprintf('ShowBox("Ошибка!", "Не удалось удалить статическую страницу под идентификатором %d.<br />Смотрите в системный лог для подробной информации.", "red", "index.php?p=static");', $id));
$log = new CSystemLog("w", "Удаление статической страницы", sprintf("Не удалось удалить страницу под уникальным идентификатором %d: Страница не найдена.", $id));
}
}
return $objResponse;
}
AddTab("<i class='zmdi zmdi-accounts zmdi-hc-fw'></i> Админлист", "index.php?p=adminlist", "Список администраторов на доступных серверах.");
if($GLOBALS['config']['page.static']=="1" || $userbank->is_admin())
AddTab("<i class='zmdi zmdi-copy zmdi-hc-fw'></i> Страницы", "index.php?p=static", "Список страниц, созданных администраторами.");
default:
case "static":
RewritePageTitle("Статическая страница");
$page = TEMPLATES_PATH . "/page.static.php";
break;
function RemoveStaticPage(id, name) {
if (confirm("Вы уверены, что хотите удалить страницу \"" + name + "\" (ID: " + id + ")?")) xajax_RemoveStaticPage(id);
}
INSERT INTO `sb_settings` (`setting`, `value`) VALUES ('page.static', '0');
INSERT INTO `sb_settings` (`setting`, `value`) VALUES ('static.show_editor_public', '0');
INSERT INTO `sb_settings` (`setting`, `value`) VALUES ('static.show_allpages', '0');
CREATE TABLE IF NOT EXISTS `sb_pages` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(32) NOT NULL,
`title` varchar(128) NOT NULL,
`text` text NOT NULL,
`lastedit` int(11) NOT NULL,
`editor` int(11) NOT NULL,
`hidden` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`pid`),
UNIQUE KEY `url` (`url`),
UNIQUE KEY `pid_2` (`pid`),
KEY `pid` (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;