Файл: admin/modules/pages.php
Строк: 246
<?php
defined('CAFE') or die (header ('Location: /'));
$_POST = clear_input ($_POST);
$_GET = clear_input ($_GET);
check_error ();
// если ошибок нет, выполняем нужные операции
if (empty ($error)) {
// сохраняем позиции страниц в меню
if ($_POST['save_position']) {
$menu_item_count = count ($_POST['id']); // определяем количество пунктов меню
// для каждого пункта заносим номер позиции в БД
for ($i = 0; $i <= $menu_item_count; $i++) {
$id = $_POST['id'][$i];
$position = $_POST['position'][$i];
$update = "UPDATE `" . DB_PREFIX . "_pages` SET `position` = '$position' WHERE `id` = '$id'";
make_query ($update, 'pos');
}
}
// добавляем новую страницу
if (isset($_POST['add'])) {
clear_html ($_POST, array ($_POST['text']));
translit ($_POST['url'], $_POST['title']);
timestamp ($_POST['date']);
$add_pages = "INSERT `" . DB_PREFIX . "_pages` (
`date`,
`url`,
`title`,
`text`,
`keywords`,
`description`,
`pid`)
VALUES (
'" . $date . "',
'" . $url . "',
'" . $_POST['title'] . "',
'" . $_POST['text'] . "',
'" . $_POST['keywords'] . "',
'" . $_POST['description'] . "',
'" . $_POST['pid'] . "'
)";
make_query ($add_pages, 'add');
}
// сохраняем измененную страницу
if (isset($_POST['update'])) {
clear_html ($_POST, array ($_POST['text']));
translit ($_POST['url'], $_POST['title']);
timestamp ($_POST['date']);
$update_pages = "UPDATE `" . DB_PREFIX . "_pages` SET
`date` = '" . $date . "',
`url` = '" . $url . "',
`title` = '" . $_POST['title'] . "',
`text` = '" . $_POST['text'] . "',
`keywords` = '" . $_POST['keywords'] . "',
`description` = '" . $_POST['description'] . "',
`pid` = '" . $_POST['pid'] . "'
WHERE `id` = '" . $_POST['id'] . "'";
make_query ($update_pages, 'upd');
}
// удаление страницы
if ($action == 'delete') terminator ();
}
?>
<div class="module-menu">
<a href="/admin/index.php?section=pages&action=list" title="Список созданных страниц">Список страниц</a>
<a href="/admin/index.php?section=pages&action=add&editor=1" title="Добавить новую страницу">Добавить новую страницу</a>
</div>
<div class="module-messages">
<?php
print_message ();
if (!empty ($error)) print_error ($error);
?>
</div>
<div class="module-content">
<?php
// выводим список страниц
if (empty($action) || $action == 'list') {
?>
<p class="section-title">Список страниц</p>
<?php
page_limit ('15');// высчитываем начальную и конечную запись для вывода
// поля разрешенные для сортировки
(!in_array ($_GET['order'], array ('date', 'title', 'position'))) ? $order = 'position' : $order = $_GET['order'];
$page_list = mysql_query ("SELECT * FROM `" . DB_PREFIX . "_pages` ORDER BY `" . $order . "` LIMIT " . $start_page . ", " . $end_page);
// если еще не создана ни одна страница, выводим сообщение
if (mysql_num_rows ($page_list) < '1') {
echo '<p style="margin-right:20px">Не создано ни одной страницы. Вы можете сделать это
прямо сейчас. <a href="/admin/index.php?section=pages&action=add&editor=1">Создать страницу?</a></p>';
} else {
?>
<p>
Сортировка:
<a href="/admin/index.php?section=pages&action=list&order=date">по дате</a>
<a href="/admin/index.php?section=pages&action=list&order=title">по алфавиту</a>
<a href="/admin/index.php?section=pages&action=list&order=position">без сортировки</a>
</p>
<div class="item-list">
<script type="text/javascript">
function position(change,name){
document.menu_list.elements["q"+name].value=(document.menu_list.elements["q"+name].value*1)+change
if(document.menu_list.elements["q"+name].value<0){
document.menu_list.elements["q"+name].value=0
}
}
</script>
<form name="menu_list" action="/admin/index.php?section=pages" method="post">
<?php
while ($rows = mysql_fetch_array ($page_list)) {
$data[] = array (
'id' => $rows['id'],
'pid' => $rows['pid'],
'title' => $rows['title'],
'position' => $rows['position'],
'url' => $rows['url']);
}
// TODO переделать попроще
$tree = array ();
foreach ($data as $row) {
$tree[(int) $row['pid']][] = $row;
}
function treePrint ($tree, $pid=0) {
if (empty ($tree[$pid])) return;
echo ' <ul>';
foreach ($tree[$pid] as $k => $row) {
echo '
<li class="item-list-tree">
<div class="item-list-row">
<div class="item-list-title">
<a ';
if ($row['position'] < "1") {echo 'style="color:#aaa"';}
echo 'href="/admin/index.php?section=pages&action=view&id=' . $row['id'] . '">' . $row['title'] . '</a>
</div>
<div class="item-list-events">';
if ($_SESSION['status'] == '1') {
echo '
<a href="/admin/index.php?section=pages&action=delete&id=' . $row['id'] . '">удалить</a> ';
}
echo '
<a href="/admin/index.php?section=pages&action=edit&editor=1&id=' . $row['id'] . '&pid=' . $row['pid'] . '">изменить</a>
<input type="hidden" name="id[]" value="' . $row['id'] . '">';
echo "<input class="item-list-number" type="button" value=" - " onclick="position(-1,'" . $row['id'] . "')">
<input class="item-list-number" id="q" . $row['id'] . "" name="position[]" type="text" value="" . $row['position'] . "">
<input class="item-list-number" type="button" value=" + " onclick="position(1,'" . $row['id'] . "')">
</div>
</div>";
if (isset ($tree[$row['id']]))
treePrint ($tree, $row['id']);
echo '
</li>';
}
echo '
</ul>';
}
treePrint ($tree);
?>
<p style="float:right"><input type="submit" name="save_position" value="сохранить"></p>
</form>
<?
// вывод пагинатора
pager (ceil (mysql_num_rows (mysql_query ("SELECT id FROM `" . DB_PREFIX . "_pages`")) / $end_page));
}
}
// просмотр страницы
if ($action == 'view' && isset ($_GET['id']) && empty ($error)) {
$view_pages = mysql_query ("SELECT * FROM `" . DB_PREFIX . "_pages` WHERE `id` = " . $_GET['id'] . " LIMIT 1");
$view_row = mysql_fetch_array ($view_pages, MYSQL_ASSOC);
echo '
<a href="/admin/index.php?section=pages&action=delete&id=' . $view_row['id'] . '">удалить</a>
<a href="/admin/index.php?section=pages&action=edit&editor=1&id=' . $view_row['id'] . '">изменить</a>
<h1>' . $view_row['title'] . '</h1>
<p>Дата размещения: ' . date ("j.m.Y H:i", $view_row['date']) . $view_row['text'];
}
// выводим форму добавления новой страницы, если выбрано добавление страницы или ее изменение
if (($action == 'add' || $action == 'edit') && empty ($error)) {
// если выбрано изменение страницы, делаем дополнительный запрос
if ($action == 'edit' && isset ($_GET['id']) && empty ($error)) {
$sql_list = @mysql_query ("SELECT * FROM `" . DB_PREFIX . "_pages` WHERE `id` = " . $_GET['id'] . " LIMIT 1");
$row = mysql_fetch_array ($sql_list, MYSQL_ASSOC);
}
?>
<div>
<p class="section-title">Добавление новой страницы</p>
<form action="/admin/index.php?section=pages" method="post">
<p><input type="hidden" name="id"<?php if (isset ($row['id'])) {echo ' value="' . $row['id'] . '"';} ?>></p>
<div>
<p class="form-title">Заголовок страницы: <br>
<input type="text" name="title" id="title" size="50"<?php if (isset ($row['title'])) {echo ' value="' . $row['title'] . '"';} ?>></p>
<p class="form-pid">Родительский раздел: <br>
<select size="1" name="pid">
<option selected value="0">/</option>
<?php
$sql_list_tree = mysql_query ("SELECT * FROM `" . DB_PREFIX . "_pages` ORDER BY `position`");
while ($treerows = mysql_fetch_array ($sql_list_tree)) {
$data[] = array (
'id' => $treerows['id'],
'pid' => $treerows['pid'],
'title' => $treerows['title']
);
}
$tree = array();
foreach ($data as $treerow) {
$tree[(int) $treerow['pid']][] = $treerow;
}
function treePrint ($tree, $pid=0) {
if (empty ($tree[$pid]))
return;
foreach ($tree[$pid] as $k => $treerow) {
if ($treerow['id'] != $_GET['id']) {
echo '<option ';
if ($_GET['pid'] == $treerow['id']) {echo 'selected ';}
echo 'value="' . $treerow['id'] . '">' . $treerow['title'] . '</option>';
}
if (isset ($tree[$treerow['id']]))
treePrint ($tree, $treerow['id']);
}
echo '</ul>';
}
treePrint($tree);
?>
</select></p>
</div>
<p>Содержимое страницы:<br>
<textarea name="text" cols=60 rows=10 id="editor"><?php echo $row['text']; ?></textarea></p>
<script type="text/javascript">
var ckeditor = CKEDITOR.replace('editor', {
skin : 'office2003',
toolbar : [['Bold','Italic','Strike','-','Subscript','Superscript'],
['Undo','Redo'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight'],
['Link','Unlink'],
['Maximize','ShowBlocks','Preview','Source'],'/',
['Format','Font','FontSize'],
['TextColor','BGColor'],
['Image','Table','HorizontalRule','Smiley','SpecialChar']]
});
AjexFileManager.init ( {
returnTo: 'ckeditor',
editor: ckeditor,
skin: 'light'
} );
</script>
<div id="fields">
<a style="cursor:pointer"
onclick="if (document.getElementById ('addfields').style.display == 'none') {
document.getElementById ('addfields').style.display = 'block';
document.getElementById ('fields').style.display = 'none';
} else {
document.getElementById ('addfields').style.display = 'none';
document.getElementById ('fields').style.display = 'block';
}">Показать дополнительные поля</a>
</div>
<div style="display:none" id="addfields">
<a style="cursor:pointer"
onclick="if (document.getElementById ('addfields').style.display == 'none') {
document.getElementById ('addfields').style.display = 'block';
document.getElementById ('fields').style.display = 'none';
} else {
document.getElementById ('addfields').style.display = 'none';
document.getElementById ('fields').style.display = 'block';
}">Скрыть дополнительные поля</a>
<p>Адрес страницы: <br>
<input type="text" name="url" id="url" size="60"<?php if (isset ($row['url'])) {echo ' value="' . $row['url'] . '"';} ?>> <a style="cursor:pointer" onclick="translit()"> автозаполнение</a></p>
<p>Дата добавления: <br>
<input type="text" name="date"<?php if (isset ($row['date'])) {echo ' value="' . date('H:i:s d.m.Y', $row['date']) . '"';} else {echo ' value="' . date ('H:i:s d.m.Y') . '"';} ?>></p>
<p>Ключевые слова: <br>
<input type="text" name="keywords" size="60"<?php if (isset ($row['keywords'])) {echo ' value="' . $row['keywords'] . '"';} ?>></p>
<p>Описание страницы: <br>
<input type="text" name="description" size="60"<?php if (isset ($row['description'])) {echo ' value="' . $row['description'] . '"';} ?>></p>
</div>
<p>
<?php
($action == 'edit') ? $name="update" : $name="add";
echo '<input type="submit" name="' . $name . '" value="сохранить">';
?>
</p>
</form>
</div>
<?php
}
?>
</div>