Файл: core/admin/templates.php
Строк: 172
<?php
if (!defined('BLOG')) { die('Access Denied!'); }
$_GET['act'] = !empty($_GET['act']) ? check($_GET['act']) : '';
$file = !empty($_GET['file']) ? urldecode($_GET['file']) : '';
$sys_tmp = array(
'header_index' => 'Шапка главной',
'header' => 'Шапка остальные',
'footer_index' => 'Низ главной',
'footer' => 'Низ остальные',
);
switch($_GET['act']):
default:
show_header('Редактирование страниц');
$arrfiles = array();
$globfiles = glob(TEMPLATES_PATH . '*.tpl');
foreach ($globfiles as $filename) {
$arrfiles[] = basename($filename);
}
$total = !empty($arrfiles) ? count($arrfiles) : 0;
$onpage = 10;
if ($total > 0) {
for ($i = 0; $i < $total; $i++) {
$filename = str_replace('.tpl', '', $arrfiles[$i]);
$size = size(filesize(TEMPLATES_PATH . $arrfiles[$i]));
$strok = count(file(TEMPLATES_PATH . $arrfiles[$i]));
$name = !empty($sys_tmp[$filename]) ? $sys_tmp[$filename] : $arrfiles[$i];
echo '<div class="downlist2"> ';
echo ' <b>' . $name . '</b> (' . $size . ')<br />';
echo 'Кол. строк: ' . $strok . '<br />';
echo 'Изменен: ' . date('d.m.Y в H:i', filemtime(TEMPLATES_PATH . $arrfiles[$i])) . '<br />';
echo '<a href="?a=templates&act=edit&file=' . $arrfiles[$i] . '">Редактировать</a> | ';
echo '<a href="?a=templates&act=obzor&file=' . $arrfiles[$i] . '">Просмотр</a> | ';
echo '<a href="?a=templates&act=del&file=' . $arrfiles[$i] . '">Удалить</a><br /></div>';
}
//echo show_pages('?a=templates');
echo '<div class="downlist2">Всего файлов: <b>' . (int)$total . '</b><br /></div>';
}
else echo '<div class="downlist2"><b>Файлов еще нет!</b></div>';
echo '<div class="downlist2"><img src="' . ICONS . 'add.png" alt="" /> <a href="?a=templates&act=new">Создать</a><br />';
echo '<img src="' . ICONS . 'user.gif" alt="" /> <a href="?a=templates&act=faq">Помощь</a><br /></div>';
break;
# ###########################################################################################
# # Обзор файла ##
# ###########################################################################################
case 'obzor':
if (preg_match('|^[a-z0-9_.-]+$|i', $file)) {
if (file_exists(TEMPLATES_PATH . $file)) {
show_header('Просмотр файла ' . $file, '', '', 'Y');
$opis = file_get_contents(TEMPLATES_PATH . $file);
$count = count(file(TEMPLATES_PATH . $file));
echo '<div class="downlist2">Строк: ' . num($count) . '<br /></div>';
echo '<div class="downlist2">' . highlight_code(check($opis)) . '<br /></div>';
echo '<div class="downlist2"><a href="?a=templates&act=edit&file=' . $file . '">Редактировать</a> / ';
echo '<a href="?a=templates&act=del&file=' . $file . '">Удалить</a><br /></div>';
echo '<div class="downlist2"><img src="' . ICONS . 'return.png" alt="" /> <a href="?a=templates">Вернуться</a><br /></div>';
}
else {
addMessage('Ошибка! Данного файла не существует!', 'error');
redirect('./?a=templates');
}
}
else {
addMessage('Ошибка! Недопустимое название страницы!', 'error');
redirect('./?a=templates');
}
break;
# ###########################################################################################
# # Редактирование файла ##
# ###########################################################################################
case 'edit':
if (preg_match('|^[a-z0-9_.-]+$|i', $file)) {
if (file_exists(TEMPLATES_PATH . $file)) {
if (!empty($_POST['submit'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$msg = !empty($_POST['msg']) ? $_POST['msg'] : '';
$msg = str_replace('&', '&', $msg);
$fp = fopen(TEMPLATES_PATH . $file, 'a+');
flock ($fp, LOCK_EX);
ftruncate($fp, 0);
fputs ($fp, $msg);
fflush($fp);
flock ($fp, LOCK_UN);
fclose($fp);
addMessage('Файл успешно сохранён!','ok');
redirect('./?a=templates&act=edit&file=' . $file);
}
else addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!','error');
}
$mainfile = file_get_contents(TEMPLATES_PATH . $file);
$filename = str_replace('.tpl', '', $file);
$mainfile = str_replace('&', '&', $mainfile);
show_header('Редактирование файла ' . $file);
echo '<div class="downlist2"><form action="?a=templates&act=edit&file=' . $file . '&rnd=' . $_SESSION['token'] . '" name="form" method="post"><textarea style="width:98%;" rows="20" name="msg">' . check($mainfile) . '</textarea><br />';
quickpaste('msg');
quicktags();
echo '<br /><input type="submit" name="submit" value="Сохранить" /></form></div>';
echo '<div class="downlist2"><img src="' . ICONS . 'return.png" alt="" /> <a href="?a=templates">Вернуться</a><br /></div>';
}
else {
addMessage('Ошибка! Данного файла не существует!','error');
redirect('./?a=templates');
}
}
else {
addMessage('Ошибка! Недопустимое название страницы!','error');
redirect('./?a=templates');
}
break;
# ###########################################################################################
# # Помощь ##
# ###########################################################################################
case 'faq':
show_header('Сокрашенные коды');
echo '<div class="downlist2"><img src="../images/editor/a.gif" alt="" /> - Тег служит для создания гипертекста (ссылок). Гипертекст позволяет осуществлять мгновенный переход от одного фрагмента текста к другому.<br />';
echo '<img src="../images/editor/img.gif" alt="" /> - Тег служит для внедрения графики на страницы. alt - Выводит текст к картинке. Полезно, если браузер не отображает графику на странице.<br />';
echo '<img src="../images/editor/br.gif" alt="" /> - Тег служит для перевода текста на следующую строку<br />';
echo '<img src="../images/editor/hr.gif" alt="" /> - Тег добавляет в HTML документ горизонтальную линию. Перед и после линии помещается пустая строка<br />';
echo '<img src="../images/editor/b.gif" alt="" /> - Тег создает жирный текст<br />';
echo '<img src="../images/editor/big.gif" alt="" /> - Тег выводит более крупный текст<br />';
echo '<img src="../images/editor/small.gif" alt="" /> - Тег выводит более мелкий текст<br />';
echo '<img src="../images/editor/i.gif" alt="" /> - Тег создает наклонный текст<br />';
echo '<img src="../images/editor/u.gif" alt="" /> - Тег указывает, что текст должен быть подчеркнут<br />';
echo '<img src="../images/editor/right.gif" alt="" /> - Тег создает новый блок. Текст выровнен по правому краю<br />';
echo '<img src="../images/editor/center.gif" alt="" /> - Тег создает новый блок. Текст выровнен по центру<br />';
echo '<img src="../images/editor/left.gif" alt="" /> - Тег создает новый блок. Текст выровнен по левому краю<br />';
echo '<img src="../images/editor/red.gif" alt="" /> - Тег изменяет цвет текста на красный<br />';
echo '<img src="../images/editor/green.gif" alt="" /> - Тег изменяет цвет текста на зеленый<br />';
echo '<img src="../images/editor/blue.gif" alt="" /> - Тег изменяет цвет текста на синий<br />';
echo '<img src="../images/editor/yellow.gif" alt="" /> - Тег изменяет цвет текста на желтый<br /></div>';
echo '<div class="downlist2"><img src="' . ICONS . 'return.png" alt="" /> <a href="?a=templates">Вернуться</a><br /></div>';
break;
# ###########################################################################################
# # Создание файла ##
# ###########################################################################################
case 'new':
if (!empty($_POST['newfile'])) {
$newfile = check($_POST['newfile']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (preg_match('|^[a-z0-9_-]+$|i', $newfile)) {
if (!file_exists(TEMPLATES_PATH . $newfile . '.tpl')) {
$fp = fopen(TEMPLATES_PATH . $newfile . '.tpl', "a+");
flock ($fp, LOCK_EX);
fputs ($fp, '');
fflush($fp);
flock ($fp, LOCK_UN);
fclose($fp);
chmod(TEMPLATES_PATH . $newfile . '.tpl', 0666);
addMessage('Новый файл успешно создан!','ok');
redirect('./?a=templates&act=edit&file=' . $newfile . '.tpl');
}
else addMessage('Ошибка! Файл с данным названием уже существует!', 'error');
}
else addMessage('Ошибка! Недопустимое название файла!', 'error');
}
else addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!', 'error');
}
show_header('Создание нового файла');
if (!is_dir(TEMPLATES_PATH)) mkdir(TEMPLATES_PATH, 0755);
if (is_writeable(TEMPLATES_PATH)) {
echo '<div class="downlist2"><form action="?a=templates&act=new&rnd=' . $_SESSION['token'] . '" method="post">';
echo 'Название файла:<br />';
echo '<input type="text" name="newfile" maxlength="20" /><br /><br />';
echo '<input value="Создать файл" type="submit" /></form><br />';
echo 'Разрешены латинские символы и цифры, а также знаки дефис и нижнее подчеркивание<br /></div>';
} else {
echo '<div class="downlist2"><b>Директория недоступна для создания файлов!</b></div>';
}
echo '<div class="downlist2"><img src="' . ICONS . 'return.png" alt="" /> <a href="?a=templates">Вернуться</a><br /></div>';
break;
# ###########################################################################################
# # Удаление файла ##
# ###########################################################################################
case 'del':
if (preg_match('|^[a-z0-9_.-]+$|i', $file)) {
if (file_exists(TEMPLATES_PATH . $file)) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ( !array_key_exists(str_replace('.tpl', '', $file), $sys_tmp) ) {
if (unlink (TEMPLATES_PATH . $file)) {
addMessage('Файл успешно удален!','ok');
redirect('./?a=templates');
}
else addMessage('Ошибка! Не удалось удалить файл!','error');
}
else addMessage('Ошибка! Запрещено удалять системные файлы!','error');
}
show_header('Удаление файла ' . $file);
echo '<div class="downlist2">Вы подтверждаете что хотите удалить файл <b>' . $file . '</b><br />';
echo '<b><a href="?a=templates&act=del&file=' . $file . '&rnd=' . $_SESSION['token'] . '">Да, Удалить</a></b><br /></div>';
echo '<div class="downlist2"><img src="' . ICONS . 'return.png" alt="" /> <a href="?a=templates">Вернуться</a><br /></div>';
}
else {
addMessage('Ошибка! Данного файла не существует!','error');
redirect('./?a=templates');
}
}
else {
addMessage('Ошибка! Недопустимое название страницы!','error');
redirect('./?a=templates');
}
break;
# ###########################################################################################
# # Удаление файла ##
# ###########################################################################################
endswitch;
# Вспомогательная функция быстрой вставки
function quickpaste($form) {
echo '<script language="JavaScript" type="text/javascript">
function tag(text1, text2) {
if ((document.selection)) {
document.form.' . $form . '.focus();
document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
} else if(document.forms['form'].elements['' . $form . ''].selectionStart!=undefined) {
var element = document.forms['form'].elements['' . $form . ''];
var str = element.value;
var start = element.selectionStart;
var length = element.selectionEnd - element.selectionStart;
element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);
} else document.form.' . $form . '.value += text1+text2;
}
</script>';
}
# Функция вывода админских тегов
function quicktags() {
echo 'Быстрые теги <br />';
echo '<a href="#form" onclick="javascript:tag('<a href="">', '</a>');"><img src="' . IMAGES . 'editor/a.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<img src="', '" alt="image" />');"><img src="' . IMAGES . 'editor/img.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<br />', '');"><img src="' . IMAGES . 'editor/br.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<hr />', '');"><img src="' . IMAGES . 'editor/hr.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<b>', '</b>');"><img src="' . IMAGES . 'editor/b.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<big>', '</big>');"><img src="' . IMAGES . 'editor/big.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<small>', '</small>');"><img src="' . IMAGES . 'editor/small.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<i>', '</i>');"><img src="' . IMAGES . 'editor/i.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<u>', '</u>');"><img src="' . IMAGES . 'editor/u.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<div style="text-align:left">', '</div>');"><img src="' . IMAGES . 'editor/left.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<div style="text-align:center">', '</div>');"><img src="' . IMAGES . 'editor/center.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<div style="text-align:right">', '</div>');"><img src="' . IMAGES . 'editor/right.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<span style="color:#ff0000">', '</span>');"><img src="' . IMAGES . 'editor/red.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<span style="color:#00ff00">', '</span>');"><img src="' . IMAGES . 'editor/green.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<span style="color:#0000ff">', '</span>');"><img src="' . IMAGES . 'editor/blue.gif" alt="" /></a>';
echo '<a href="#form" onclick="javascript:tag('<span style="color:#ffff00">', '</span>');"><img src="' . IMAGES . 'editor/yellow.gif" alt="" /></a>';
echo '<br />';
}
?>