sergey78 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 подскажите, плиз, как реализовать сабж. Цитата Ссылка на сообщение Поделиться на других сайтах
Jeka009 2 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 ищи было уже Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 Я могу вам дать вариант, но боюсь как бы вы не запутались, ибо у меня в таблице новостей в ячейке автор записываются и имя автора и его ID одновременно Цитата Ссылка на сообщение Поделиться на других сайтах
sergey78 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 Автор Я могу вам дать вариант, но боюсь как бы вы не запутались, ибо у меня в таблице новостей в ячейке автор записываются и имя автора и его ID одновременно с удовольствием посмотрел бы... Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 Ладно... Файл <engine/inc/editnews.php> После function CheckStatus(Form) { if(Form.allow_date.checked) { Form.allow_now.disabled = true; Form.allow_now.checked = false; } else { Form.allow_now.disabled = false; } } Добавить function getAuthor(id, news) { var ajax = new dle_ajax(); ajax.onShow ('Загрузка потенциальных авторов...'); var varsString = ""; ajax.setVar("action", 'list'); ajax.setVar("user_id", id ); ajax.setVar("news_id", news ); ajax.requestFile = "/engine/ajax/author.php"; ajax.method = 'GET'; ajax.element = 'author'; ajax.sendAJAX(varsString); } function saveAuthor(news) { var id = document.getElementById('sel_aut').value; var ajax = new dle_ajax(); ajax.onShow ('Запись автора...'); var varsString = ""; ajax.setVar("action", 'save'); ajax.setVar("user_id", id ); ajax.setVar("news_id", news ); ajax.requestFile = "/engine/ajax/author.php"; ajax.method = 'GET'; ajax.element = 'author'; ajax.sendAJAX(varsString); } Далее следующий код <tr> <td width="140" style="padding-left:5px;">{$lang['edit_info']}</td> <td>ID=<b>{$row['id']}</b>, {$lang['edit_eau']} <a href="?mod=editusers&action=list&search=yes&search_name={$row['autor']}"><b>{$row['autor']}</b></a></td> </tr> Заменить на этот <tr> <td width="140" style="padding-left:5px;">Информация:</td> <td>ID=<b>{$row['id']}</b>, опубликовал: <div id="author" style="display:inline;"><a href="?mod=editusers&action=list&search=yes&search_name={$author[1]}"><b>{$author[0]}</b></a> <a href="#" class="navigation" onclick="getAuthor({$author[1]}, {$id})">[сменить]</a></div> </td> </tr> После кода $categories_list = CategoryNewsSelection($cat_list, 0); Всавить этот код $author = explode ('||', $row['autor']); $userList = selectAuthor($author[1]); ---- в этом файле всё ---- Теперь открываем <engine/inc/functions.inc.php> Перед ?> Добавляем function selectAuthor ($current=false) { global $member_db, $db, $user_group; $db->query("SELECT user_id, name FROM user_list"); while($row = $db->get_row()) { $user = $row['name']; $user_id = $row['user_id']; if (!$current) $current = $member_db[10]; if ($current == $user_id) $sel = 'selected'; $user_list .= '<option value="'.$user_id.'" '.$sel.'>'.$user.'</option>'; $sel = ''; } return $user_list; } function getUser ($id) { global $db; $row = $db->super_query("SELECT name FROM user_list WHERE user_id = '$id'"); $user = $row['name']; return $user; --- здесь тоже всё --- Теперь в папке <engine/ajax> создаём файл с именем author.php и вот его содержание <?php /* ===================================================== Назначение: AJAX для смены автора новости ===================================================== */ @session_start(); @error_reporting(7); @ini_set('display_errors', true); @ini_set('html_errors', false); define('DATALIFEENGINE', true); define('ENGINE_DIR', '../..'); include ENGINE_DIR.'/data/config.php'; require_once ENGINE_DIR.'/inc/mysql.php'; require_once ENGINE_DIR.'/data/dbconfig.php'; require_once ENGINE_DIR.'/inc/functions.inc.php'; require_once ENGINE_DIR.'/modules/sitelogin.php'; if (!$is_logged OR $member_id['user_group'] > 1) die('Доступ запрещён'); $user_id = intval($_REQUEST['user_id']); $news_id = intval($_REQUEST['news_id']); if ($_REQUEST['action'] == 'list') { $userList = '<form name="chAuthor"><select name="author" id="sel_aut">'.selectAuthor($user_id).'</select></form> <a href="#" class="navigation" onclick="saveAuthor('.$news_id.')">[записать]</a>'; @header("HTTP/1.0 200 OK"); @header("HTTP/1.1 200 OK"); @header("Cache-Control: no-cache, must-revalidate, max-age=0"); @header("Expires: 0"); @header("Pragma: no-cache"); @header("Content-type: text/css; charset=windows-1251"); echo $userList; } elseif ($_REQUEST['action'] == 'save') { $new_author = getUser($user_id); $result = $db->query("UPDATE news set autor = '".$new_author."||$user_id' where id='$news_id'"); $userList = '<a href="?mod=editusers&action=list&search=yes&search_name='.$new_author.'"><b>'.$new_author.'</b></a> <a href="#" class="navigation" onclick="getAuthor('.$user_id.', '.$news_id.')">[сменить]</a>'; @header("HTTP/1.0 200 OK"); @header("HTTP/1.1 200 OK"); @header("Cache-Control: no-cache, must-revalidate, max-age=0"); @header("Expires: 0"); @header("Pragma: no-cache"); @header("Content-type: text/css; charset=windows-1251"); echo $userList; } else { @header("HTTP/1.0 200 OK"); @header("HTTP/1.1 200 OK"); @header("Cache-Control: no-cache, must-revalidate, max-age=0"); @header("Expires: 0"); @header("Pragma: no-cache"); @header("Content-type: text/css; charset=windows-1251"); echo 'Внимание! Обнаружена попытка взлома системы. Ваши данные отправлены администратору'; /* Ну и здесь если хотите отправляйте данные админу на почту */ } ?> <!-- Всё --> Единственный ньюанс, поскольку как я уже говорил у меня в таблице новостей в ячейке автор записываются и имя автора и его ID одновременно то отсюда и строчки:$author = explode ('||', $row['autor']); $userList = selectAuthor($author[1]);Суть в том, что функции selectAuthor() следует отправлять ID текущего автора статьи, но можно и не отправлять, но тогда при редактировании любой новости вам придётся вручную снова ставить автора, что неудобно. Вобщем разбирайтесь, удачи Цитата Ссылка на сообщение Поделиться на других сайтах
Гость Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 <#thank#> Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.