Перейти к публикации

редактировать поле Автор при редактировании новости


Рекомендованные сообщения

Я могу вам дать вариант, но боюсь как бы вы не запутались, ибо у меня в таблице новостей в ячейке автор записываются и имя автора и его ID одновременно

Ссылка на сообщение
Поделиться на других сайтах

Я могу вам дать вариант, но боюсь как бы вы не запутались, ибо у меня в таблице новостей в ячейке автор записываются и имя автора и его ID одновременно

с удовольствием посмотрел бы...

Ссылка на сообщение
Поделиться на других сайтах

Ладно...

Файл <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 текущего автора статьи, но можно и не отправлять, но тогда при редактировании любой новости вам придётся вручную снова ставить автора, что неудобно.

Вобщем разбирайтесь, удачи

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...