Перейти к контенту

Назначение куратора для темы


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

Ну что, кто-нить нашёл ошибку в коде для 2.1.*

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

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

  • Ответы 103
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Вот вообщем нашёл код для куратора темы. Работает. Сразу говорю, код не мой, выкладываю не свою разработку. Тестил у себя на 2.1.4, сказали, что тестили ещё и на 2.1.7.

 

+---------------------------------------------------------------------
|   Invision Power Board v2.1.x
|  =================================================================
|   При поддержке [url=http://ibresource.ru]ibresource.ru[/url]
|   И [url=http://respublika16.ru]respublika16.ru[/url]
|  =================================================================
+---------------------------------------------------------------------
|
|   > Мод "Куратор/Модератор одной темы"
|   > Автор fr0z3n aka andar!l
|
|   > Автор оригинального мода для версий 2.0.х Пухыч
|   > Версия: 1.0
|   > Дата: 19.02.2007
|
+---------------------------------------------------------------------
|
|   > Эта модификация позволяет добавить куратора для темы. 
|   > Куратор может удалять, и редактировать сообщения в пределах одной
|   > темы. Добавлять куратора может супермодератор
|
+---------------------------------------------------------------------
|
|   > Автор не несет ответственности за проблемы в связи с 
|   > использованием этой модификации
|   > Используйте мод на свой страх и риск.
|
|   > Author is not responsible for any consequences of using this
|   > forum modification, including those caused by this module
|   > Use at your own risk
|
+---------------------------------------------------------------------

######################################################################
Выполнить SQL запрос в базе данных вашего форума. Не забывайте сменить
префикс (ibf_) таблиц на свой если вы не используете стандартный.
======================================================================
ALTER TABLE `ibf_topics` ADD `curator_id` VARCHAR( 255 ) DEFAULT NULL;
======================================================================

######################################################################
./sources/action_public/moderate.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
function auto_run()
{
----------------------------------------------------------------------
НАЙТИ НИЖЕ
----------------------------------------------------------------------
$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember' );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator//
//$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember' );
$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember', 'topiccurator' );
//curator//
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
case 'editmember':
  $this->edit_member();
  break;
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
 case 'topiccurator':   
  $this->topic_curator(); 
  break;
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
/*-------------------------------------------------------------------------*/
// Edit member
/*-------------------------------------------------------------------------*/

function edit_member()
----------------------------------------------------------------------
ВЫШЕ, ДОБАВИТЬ
----------------------------------------------------------------------
//-----------------------------------------
// Topic curator
//-----------------------------------------
function topic_curator()
	{

	 //-----------------------------------------
	 // Check Permissions
	 //-----------------------------------------
		$passed = 0;

		if ($this->ipsclass->member['g_is_supmod'] == 1)
		{
			$passed = 1;
		}

		else if ($this->moderator['add_curator'] == 1)
		{
			$passed = 1;
		}
		else 
		{
			$passed = 0;
		}

		if ($passed != 1) $this->moderate_error();

		if ( ! $this->topic['tid'] )
		{
			$this->moderate_error();
		}

	//-----------------------------------------------
	// Are we checking first?
	//-----------------------------------------------
	 $update='';

	 if ($this->ipsclass->input['check'] == 1)
		{
			$user_list=$this->ipsclass->input['topic_curator'];
			if (isset($user_list) and $user_list != "")
		{
			//---------------------------
			// Sort out the array
			//---------------------------

			$user_list = str_replace(  "<br>", "<br />" , trim($user_list) );
			$user_list = str_replace(  "<br /><br />", "<br />" , trim($user_list) );
			$user_list = preg_replace( "#^(<br />){1}#", "" , $user_list );
			$user_list = preg_replace( "#(<br />){1}$#", "" , $user_list );
			$user_list = preg_replace( "#<br />\s+#",  ","  , $user_list );


		$this->ipsclass->DB->simple_construct( array(  'select' => 'id, name',
														'from'   => 'members',
														'where'  => "LOWER(name)='{$user_list}'"
													));
		$this->ipsclass->DB->simple_exec();

			if ( ! $this->ipsclass->DB->get_num_rows() )
				{
					$this->moderate_error('cp_error_no_mem');
					return;
				}
			else
				{
					$cc_array = $this->ipsclass->DB->fetch_row(); 
				}

		$this->ipsclass->DB->do_update( 'topics', array ('curator_id' =>addslashes(serialize($cc_array)),),"tid={$this->ipsclass->input['t']}" );
		$update="Добавлен куратор: <b>{$cc_array['name']}</b>";
		//  $this->ipsclass->DB->do_update
		}
	else
		{
		$this->ipsclass->DB->do_update( 'topics', array ('curator_id' =>'',),"tid={$this->ipsclass->input['t']}" );
		$update="Куратор удалён!";
		} 
	}
	$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => 'tid='.intval($this->ipsclass->input['t']) ) );
	$this->ipsclass->DB->simple_exec();

	$this->topic = $this->ipsclass->DB->fetch_row();

	$list = unserialize(stripslashes($this->topic['curator_id']));
	$this->output .= $this->ipsclass->compiled_templates['skin_mod']->topic_curator_splash ($this->forum, $this->topic, $this->ipsclass->return_md5_check(),$list['name'], $update );
	// $print->pop_up_window( "", $this->output );
	$this->ipsclass->print->pop_up_window( "", $this->output );
}

----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
function delete_post()
{
// Get this post id.

$this->ipsclass->input['p'] = intval($this->ipsclass->input['p']);
----------------------------------------------------------------------
НИЖЕ НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic', 'from' => 'posts', 'where' => "topic_id={$this->topic['tid']} and pid={$this->ipsclass->input['p']}" ) );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator//
//$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic', 'from' => 'posts', 'where' => "topic_id={$this->topic['tid']} and pid={$this->ipsclass->input['p']}" ) );
$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic, curator_id', 'from' => 'posts p LEFT JOIN '.SQL_PREFIX.'topics t ON (tid=topic_id)', 'where' => "topic_id={$this->topic['tid']} and pid={$this->ipsclass->input['p']}" ) );
//curator//
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
else if ( ($this->ipsclass->member['g_delete_own_posts'] == 1) and ( $this->ipsclass->member['id'] == $post['author_id'] ) )
{
$passed = 1;
}
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator//
else if ($post['curator_id'])
{
 $list = unserialize(stripslashes($post['curator_id']));
 if ($this->ipsclass->member['id']==$list['id']) $passed = 1;
}
//curator//
======================================================================

######################################################################
./sources/classes/post/class_post_edit.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
//-----------------------------------------
// Load the old post
//-----------------------------------------
----------------------------------------------------------------------
НИЖЕ НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'posts', 'where' => "pid=".intval($this->ipsclass->input['p']) ) );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator
//$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'posts', 'where' => "pid=".intval($this->ipsclass->input['p']) ) );
$this->ipsclass->DB->simple_construct(array( 'select' => '*, curator_id', 'from' => 'posts p LEFT JOIN '.SQL_PREFIX.'topics t ON (tid=topic_id)', 'where' => "pid=".intval($this->ipsclass->input['p'])  ) );
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['edit_post'])
{
$can_edit = 1;
}
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
if ($this->orig_post['curator_id']) 
{
 $list = unserialize(stripslashes($this->topic['curator_id']));
 if ($this->ipsclass->member['id']==$list['id']) $can_edit = 1;
}
//curator
######################################################################
./sources/action_public/topics.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['delete_post']) return $button;
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
if ($this->topic['curator_id'])
{ 
$curator = unserialize(stripslashes($this->topic['curator_id']));
if ($this->ipsclass->member['id']==$curator['id']) return $button;
}
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['edit_post']) return $button;
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ 
----------------------------------------------------------------------
//curator
if ($this->topic['curator_id'])
{ 
$curator = unserialize(stripslashes($this->topic['curator_id']));
if ($this->ipsclass->member['id']==$curator['id']) return $button;
}
//curator
----------------------------------------------------------------------
НАЙТИ (примерно строка 1093)
----------------------------------------------------------------------
$member['member_group']  = $this->ipsclass->compiled_templates['skin_topic']->member_group( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_title'] );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator
//$member['member_group']  = $this->ipsclass->compiled_templates['skin_topic']->member_group( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_title'] );
$curator = unserialize(stripslashes($this->topic['curator_id']));
$member['member_group']  = $member['id']==$curator['id'] ? "<strong>Куратор темы</strong>" : $this->ipsclass->compiled_templates['skin_topic']->member_group( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_title'] );
//curator
======================================================================

######################################################################
./sources/action_public/forums.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
if ($this->pinned_print == 0)
		{
			// we've a pinned topic, but we've not printed the pinned
			// starter row, so..

			$show	= $this->announce_out ? 1 : 0;
			$p_start = $this->ipsclass->compiled_templates['skin_forum']->render_pinned_start( $show );

			$this->pinned_print = 1;
		}
----------------------------------------------------------------------
ДОБАВИТЬ НИЖЕ
----------------------------------------------------------------------
//curator
$list = unserialize(stripslashes($topic['curator_id']));
if ($list['id'])
{
$topic['curator']='Куратор темы: <a href="./index.php?showuser='.$list['id'].'">'.$list['members_display_name']."</a>";
}
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->pinned_print == 1)
		{
			//-----------------------------------------
			// Nope, so..
			//-----------------------------------------

			$p_end = $this->ipsclass->compiled_templates['skin_forum']->render_pinned_end();

			$this->pinned_print = 0;
		}
----------------------------------------------------------------------
ДОБАВИТЬ НИЖЕ
----------------------------------------------------------------------
//curator
$list = unserialize(stripslashes($topic['curator_id']));
if ($list['id'])
{
$topic['curator']='Куратор темы: <a href="./index.php?showuser='.$list['id'].'">'.$list['members_display_name']."</a>";
}
//curator
======================================================================

######################################################################
Выполнить SQL запрос в базе данных вашего форума. Не забывайте сменить
префикс (ibf_) таблиц на свой если вы не используете стандартный.
======================================================================
ALTER TABLE `ibf_moderators` ADD `add_curator` TINYINT( 1 ) DEFAULT 0;
----------------------------------------------------------------------
ЕСЛИ ВЫ ХОТИТЕ ЧТОБЫ ВСЕ ТЕКУЩИЕ МОДЕРАТОРЫ МОГЛИ УСТАНАВЛИВАТЬ 
УСТНЫЕ ПРЕДУПРЕЖДЕНИЯ ВЫПОЛНИТЕ СЛЕДУЮЩИЙ ЗАПРОС
----------------------------------------------------------------------
UPDATE `ibf_moderators` SET `add_curator` = '1'
======================================================================

######################################################################
ACP Home > Cache Control > Moderators > Update cache

Может навигацию не правильно написал, вообщем обновите кэш модераторов.
Без этого работать не будет.
######################################################################

######################################################################
./sources/action_admin/moderator.php
======================================================================
НАЙТИ ( ЭТА СТРОКА ПОВТОРЯЕТСЯ ДВА РАЗА )
----------------------------------------------------------------------
'allow_warn'   => intval($this->ipsclass->input['allow_warn']),
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ (ПОСЛЕ КАЖДОГО ПОВТОРЕНИЯ)
----------------------------------------------------------------------
// curator
'add_curator'	=> intval($this->ipsclass->input['add_curator']),
// curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->adskin->form_yes_no("allow_warn", $mod['allow_warn'] )
									 )	  );	
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ
----------------------------------------------------------------------
//curator
	$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Добавлять кураторов тем?</b><div class='desctext'>Куратор может удалять/редактировать сообщения в курируемой им теме.</div>" ,
											  $this->ipsclass->adskin->form_yes_no("add_curator", $mod['add_curator'] )
									 )	  );
//curator
======================================================================
Возможность добавлять куратора для модераторов ставится
при добавлении/редактировании модератора
======================================================================

######################################################################
Заходим в админку 
ACP Home > Skin Manager Home > Edit Template HTML
Выбираем там группу фрагментов Forum Index в ней выбираем фрагмент render_forum_row
======================================================================
Ищем в фрагменте 
----------------------------------------------------------------------
</span> {$data['PAGES']}
 <div class="desc"><span onclick='return span_desc_to_input("{$data['tid']}");' id='tid-desc-{$data['tid']}'>{$data['description']}</span>
----------------------------------------------------------------------
Вставляем после этого 
----------------------------------------------------------------------
<span class="forumdesc"><if="$data['curator']"><i>{$data['curator']}</i></if></span>
======================================================================

######################################################################
Заходим в админцентр
ACP Home > Look & feel > Edit Template HTML (В меню стиля)
======================================================================
Нажимаем Add Template Bit (Добавить фрагмент)
----------------------------------------------------------------------
New Template Bit Name (Название фрагмента):
----------------------------------------------------------------------
topic_curator_splash
----------------------------------------------------------------------
New Template Bit Incoming Data Variables (Входящие переменные):
----------------------------------------------------------------------
$forum="", $topic="", $auth_key="", $list_user="", $update=""
----------------------------------------------------------------------
Template group (Группа фрагмента):
----------------------------------------------------------------------
skin_mod
----------------------------------------------------------------------
Тело фрагмента
----------------------------------------------------------------------
</script><script language='javascript' type="text/javascript">
<!--
function find_users()
{
url = "index.php?act=legends&CODE=finduser_one&s=&entry=textarea&name=topic_curator&sep=none";
window.open(url,'FindUsers','width=400,height=250,resizable=yes,scrollbars=yes'); 
}
//-->
</script>
<div class='borderwrap'>
<div class='maintitle'><table><tr><td width="99%">Добавить куратора для темы {$topic['title']}<td width="1%"><a href="java script:self.close();"><b>[X]</b></a><td></td></tr></table></div>
<div class='row2'><center>{$update}</center></div>
<div class='tablepad'>Впишите точное имя пользователя или воспользуйтесь поиском</div>
<form action='{$this->ipsclass->baseurl}' method='POST' name='REPLIER' >
<input type='hidden' name='s' value='{$this->ipsclass->session_id}'>
<input type='hidden' name='act' value='mod'>
<input type='hidden' name='CODE' value='topiccurator'>
<input type='hidden' name='f' value='{$forum['id']}'>
<input type='hidden' name='t' value='{$topic['tid']}'>
<input type='hidden' name='auth_key' value='$auth_key' />
<input type='hidden' name='check' value='1'>
<table width="100%" cellspacing="0">
<tr>
<td class='pformright' align='center'>
<input type="text" name='topic_curator' size='30' value={$list_user}><br />
<input type='button' class='forminput' name='findusers' onclick='find_users()' value='{$this->ipsclass->lang['find_user_names']}' />
</td></tr></table>
<div class='formsubtitle' align='center'><input type='submit' value='Сохранить' class='button' /></div>
</form>
</div>
======================================================================
Заходим в админцентр
ACP Home > Look & feel > Edit Template HTML (В меню стиля)
Выбираем "Topic view" в нем "TableFooter"
======================================================================
НАЙТИ
----------------------------------------------------------------------
<form name="modform" method="post" action="{ipb.script_url}act=mod&CODE=postchoice&f={$data['TOPIC']['forum_id']}&t={$data['TOPIC']['tid']}" onsubmit="return checkdelete();">
----------------------------------------------------------------------
ВЫШЕ ДОБАВИТЬ
----------------------------------------------------------------------
<form method="POST" name="modformCurator" action="{$this->ipsclass->base_url}">
<input type="hidden" name="act" value="mod" />
<input type="hidden" name="CODE" value="topiccurator" />
<input type="hidden" name="f" value="{$data['TOPIC']['forum_id']}" />
<input type="hidden" name="t" value="{$data['TOPIC']['tid']}" />
<input type="hidden" name="auth_key" value="{$auth_key}" />
<input type="submit" value="Управление Куратором" class="button" target="_blank" /></form>
======================================================================

СОХРАНИТЬ
######################################################################
Готово

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

  • 2 месяца спустя...
  • 2 недели спустя...
  • 2 недели спустя...
Подскажите пожалуйста, поставил я версию от Engelll'a, а как сделать чтобы куратора мог добавлять только 1 главный администратор, тоесть я? Прошу помочь в этом нелегком деле, спасибо за ранее.
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
Engell, спасибо, но я всё равно воспользовался версией от предыдущего постера, а у тебя содрал только кусок кода в Table Footer :D
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
ойп, поставил мод на 2.1.7 работает чудесно, однако куратора почему-то может добавлять только администратор, как сделать так, чтобы его мог добавить и обычный модератор?
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Скажите пожалуйста, может быть на каком-то другому форуме есть данный мод под 2.3.1?

 

Просто очень хочу поставить себе его на форум...

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

  • 4 недели спустя...
  • 1 месяц спустя...
А чем он от модератора отличается-то?
Ссылка на комментарий
Поделиться на других сайтах

вот версия для 23х.

Не работает в этой версии:

- вывод ника куратора под названием темы в списке тем; (вместо этого сделано уведомление, что в теме есть куратор)

- вывод группы участника в данной теме, если он куратор данной темы.

 

######################################################################
Выполнить SQL запрос в базе данных вашего форума. Не забывайте сменить
префикс (ibf_) таблиц на свой если вы не используете стандартный.
======================================================================
ALTER TABLE `ibf_topics` ADD `curator_id` VARCHAR( 255 ) DEFAULT NULL;
======================================================================

######################################################################
./sources/action_public/moderate.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
function auto_run()
{
----------------------------------------------------------------------
НАЙТИ НИЖЕ
----------------------------------------------------------------------
$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember' );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator//
//$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember' );
$post_array   = array( '04', '02', '20', '22', 'resync', 'prune_start', 'prune_finish', 'prune_move', 'editmember', 

'topiccurator' );
//curator//
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
case 'editmember':
  $this->edit_member();
  break;
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
 case 'topiccurator':   
  $this->topic_curator(); 
  break;
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
/*-------------------------------------------------------------------------*/
// Edit member
/*-------------------------------------------------------------------------*/

function edit_member()
----------------------------------------------------------------------
ВЫШЕ, ДОБАВИТЬ
----------------------------------------------------------------------
//-----------------------------------------
// Topic curator
//-----------------------------------------
function topic_curator()
	{

	 //-----------------------------------------
	 // Check Permissions
	 //-----------------------------------------
		$passed = 0;

		if ($this->ipsclass->member['g_is_supmod'] == 1)
		{
			$passed = 1;
		}

		else if ($this->moderator['add_curator'] == 1)
		{
			$passed = 1;
		}
		else 
		{
			$passed = 0;
		}

		if ($passed != 1) $this->moderate_error();

		if ( ! $this->topic['tid'] )
		{
			$this->moderate_error();
		}

	//-----------------------------------------------
	// Are we checking first?
	//-----------------------------------------------
	 $update='';

	 if ($this->ipsclass->input['check'] == 1)
		{
			$user_list=$this->ipsclass->input['topic_curator'];
			if (isset($user_list) and $user_list != "")
		{
			//---------------------------
			// Sort out the array
			//---------------------------

			$user_list = str_replace(  "<br>", "<br />" , trim($user_list) );
			$user_list = str_replace(  "<br /><br />", "<br />" , trim($user_list) );
			$user_list = preg_replace( "#^(<br />){1}#", "" , $user_list );
			$user_list = preg_replace( "#(<br />){1}$#", "" , $user_list );
			$user_list = preg_replace( "#<br />\s+#",  ","  , $user_list );


		$this->ipsclass->DB->simple_construct( array(  'select' => 'id, name',
														'from'   => 'members',
														'where'  => "LOWER(name)='{$user_list}'"
													));
		$this->ipsclass->DB->simple_exec();

			if ( ! $this->ipsclass->DB->get_num_rows() )
				{
					$this->moderate_error('cp_error_no_mem');
					return;
				}
			else
				{
					$cc_array = $this->ipsclass->DB->fetch_row(); 
				}

		$this->ipsclass->DB->do_update( 'topics', array ('curator_id' 

=>addslashes(serialize($cc_array)),),"tid={$this->ipsclass->input['t']}" );
		$update="Добавлен куратор: <b>{$cc_array['name']}</b>";
		//  $this->ipsclass->DB->do_update
		}
	else
		{
		$this->ipsclass->DB->do_update( 'topics', array ('curator_id' =>'',),"tid={$this->ipsclass->input['t']}" );
		$update="Куратор удалён!";
		} 
	}
	$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => 

'tid='.intval($this->ipsclass->input['t']) ) );
	$this->ipsclass->DB->simple_exec();

	$this->topic = $this->ipsclass->DB->fetch_row();

	$list = unserialize(stripslashes($this->topic['curator_id']));
	$this->output .= $this->ipsclass->compiled_templates['skin_mod']->topic_curator_splash ($this->forum, $this->topic, 

$this->ipsclass->return_md5_check(),$list['name'], $update );
	// $print->pop_up_window( "", $this->output );
	$this->ipsclass->print->pop_up_window( "", $this->output );
}

----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
function delete_post()
{
// Get this post id.

$this->ipsclass->input['p'] = intval($this->ipsclass->input['p']);
----------------------------------------------------------------------
НИЖЕ НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic', 'from' => 'posts', 'where' 

=> "topic_id={$this->topic['tid']} and pid={$this->ipsclass->input['p']}" ) );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator//
//$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic', 'from' => 'posts', 

'where' => "topic_id={$this->topic['tid']} and pid={$this->ipsclass->input['p']}" ) );
$this->ipsclass->DB->simple_construct( array( 'select' => 'pid, author_id, post_date, new_topic, curator_id', 'from' => 

'posts p LEFT JOIN '.SQL_PREFIX.'topics t ON (tid=topic_id)', 'where' => "topic_id={$this->topic['tid']} and 

pid={$this->ipsclass->input['p']}" ) );
//curator//
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
else if ( ($this->ipsclass->member['g_delete_own_posts'] == 1) and ( $this->ipsclass->member['id'] == $post['author_id'] ) )
{
$passed = 1;
}
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator//
else if ($post['curator_id'])
{
 $list = unserialize(stripslashes($post['curator_id']));
 if ($this->ipsclass->member['id']==$list['id']) $passed = 1;
}
//curator//
======================================================================

######################################################################
./sources/classes/post/class_post_edit.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
//-----------------------------------------
// Load the old post
//-----------------------------------------
----------------------------------------------------------------------
НИЖЕ НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'posts', 'where' => 

"pid=".intval($this->ipsclass->input['p']) ) );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator
//$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'posts', 'where' => 

"pid=".intval($this->ipsclass->input['p']) ) );
$this->ipsclass->DB->simple_construct(array( 'select' => '*, curator_id', 'from' => 'posts p LEFT JOIN '.SQL_PREFIX.'topics t 

ON (tid=topic_id)', 'where' => "pid=".intval($this->ipsclass->input['p'])  ) );
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['edit_post'])
{
$can_edit = 1;
}
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
if ($this->orig_post['curator_id']) 
{
 $list = unserialize(stripslashes($this->topic['curator_id']));
 if ($this->ipsclass->member['id']==$list['id']) $can_edit = 1;
}
//curator
######################################################################
./sources/action_public/topics.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['delete_post']) return $button;
----------------------------------------------------------------------
НИЖЕ ДОБАВИТЬ
----------------------------------------------------------------------
//curator
if ($this->topic['curator_id'])
{ 
$curator = unserialize(stripslashes($this->topic['curator_id']));
if ($this->ipsclass->member['id']==$curator['id']) return $button;
}
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->moderator['edit_post']) return $button;
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ 
----------------------------------------------------------------------
//curator
if ($this->topic['curator_id'])
{ 
$curator = unserialize(stripslashes($this->topic['curator_id']));
if ($this->ipsclass->member['id']==$curator['id']) return $button;
}
//curator
======================================================================

######################################################################
./sources/ipsclass.php
======================================================================
НАЙТИ  (прим. куратор будет выделен, но его группа отображена не будет)
----------------------------------------------------------------------
$member['member_group']	= $this->compiled_templates[ $skin_file ]->member_group( $group_name );
----------------------------------------------------------------------
ЗАМЕНИТЬ НА
----------------------------------------------------------------------
//curator
//$member['member_group']	= $this->compiled_templates[ $skin_file ]->member_group( $group_name );
$curator = unserialize(stripslashes($this->topic['curator_id']));
$member['member_group']  = $member['id']==$curator['id'] ? "<strong><font color=red>Куратор темы</font></strong>" : 

$member['member_group']	= $this->compiled_templates[ $skin_file ]->member_group( $group_name );
//curator
======================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Этот блок можно не делать. Он отвечает за вывод куратора
под названием темы в списке тем. 
В версии 23х функция не пашет.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
./sources/action_public/forums.php
======================================================================
НАЙТИ
----------------------------------------------------------------------
if ($this->pinned_print == 0)
		{
			// we've a pinned topic, but we've not printed the pinned
			// starter row, so..

			$show	= $this->announce_out ? 1 : 0;
			$p_start = $this->ipsclass->compiled_templates['skin_forum']->render_pinned_start( $show );

			$this->pinned_print = 1;
		}
----------------------------------------------------------------------
ДОБАВИТЬ НИЖЕ
----------------------------------------------------------------------
//curator
$list = unserialize(stripslashes($topic['curator_id']));
if ($list['id'])
{
$topic['curator']='Куратор темы: <a href="./index.php?showuser='.$list['id'].'">'.$list['members_display_name']."</a>";
}
//curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
if ($this->pinned_print == 1)
		{
			//-----------------------------------------
			// Nope, so..
			//-----------------------------------------

			$p_end = $this->ipsclass->compiled_templates['skin_forum']->render_pinned_end();

			$this->pinned_print = 0;
		}
----------------------------------------------------------------------
ДОБАВИТЬ НИЖЕ
----------------------------------------------------------------------
//curator
$list = unserialize(stripslashes($topic['curator_id']));
if ($list['id'])
{
$topic['curator']='Куратор темы: <a href="./index.php?showuser='.$list['id'].'">'.$list['members_display_name']."</a>";
}
//curator
======================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Блок вывода окончен. Делаем дальше.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


######################################################################
Выполнить SQL запрос в базе данных вашего форума. Не забывайте сменить
префикс (ibf_) таблиц на свой если вы не используете стандартный.
======================================================================
ALTER TABLE `ibf_moderators` ADD `add_curator` TINYINT( 1 ) DEFAULT 0;
----------------------------------------------------------------------
ЕСЛИ ВЫ ХОТИТЕ ЧТОБЫ ВСЕ ТЕКУЩИЕ МОДЕРАТОРЫ МОГЛИ УСТАНАВЛИВАТЬ 
УСТНЫЕ ПРЕДУПРЕЖДЕНИЯ ВЫПОЛНИТЕ СЛЕДУЮЩИЙ ЗАПРОС
----------------------------------------------------------------------
UPDATE `ibf_moderators` SET `add_curator` = '1'
======================================================================

######################################################################
acp > tools&settings > Cache Control > Moderators > Update cache

Может навигацию не правильно написал, вообщем обновите кэш модераторов.
Без этого работать не будет.
######################################################################

######################################################################
./sources/action_admin/moderator.php
======================================================================
НАЙТИ ( ЭТА СТРОКА ПОВТОРЯЕТСЯ ДВА РАЗА )
----------------------------------------------------------------------
'allow_warn'   => intval($this->ipsclass->input['allow_warn']),
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ (ПОСЛЕ КАЖДОГО ПОВТОРЕНИЯ)
----------------------------------------------------------------------
// curator
'add_curator'	=> intval($this->ipsclass->input['add_curator']),
// curator
----------------------------------------------------------------------
НАЙТИ
----------------------------------------------------------------------
$this->ipsclass->adskin->form_yes_no("allow_warn", $mod['allow_warn'] )
									 )	  );	
----------------------------------------------------------------------
НИЖЕ, ДОБАВИТЬ
----------------------------------------------------------------------
//curator
	$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Добавлять кураторов тем?</b><div 

class='desctext'>Куратор может удалять/редактировать сообщения в курируемой им теме.</div>" ,
											  $this->ipsclass->adskin->form_yes_no("add_curator", $mod['add_curator'] )
									 )	  );
//curator
======================================================================
Возможность добавлять куратора для модераторов ставится
при добавлении/редактировании модератора
======================================================================



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Этот блок можно не делать. Он отвечает за вывод куратора
под названием темы в списке тем. 
В версии 23х функция не пашет.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Выбираем там группу фрагментов Forum Index в ней выбираем фрагмент render_forum_row
======================================================================
Ищем в фрагменте 
----------------------------------------------------------------------
</span> {$data['PAGES']}
 <div class="desc"><span onclick='return span_desc_to_input("{$data['tid']}");' 

id='tid-desc-{$data['tid']}'>{$data['description']}</span>
----------------------------------------------------------------------
Вставляем после этого 
----------------------------------------------------------------------
<span class="forumdesc"><if="$data['curator']"><i>{$data['curator']}</i></if></span>
======================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Блок вывода окончен. Делаем дальше.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

вывод уведомления о том, что в теме есть куратор.	
Для его работы нужно внести правку в файл forums.php
(в этом же мануале выше по тексту)	

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Выбираем там группу фрагментов Forum Index в ней выбираем фрагмент render_forum_row
======================================================================
Ищем в фрагменте 
----------------------------------------------------------------------
</span> {$data['PAGES']}
 <div class="desc"><span onclick='return span_desc_to_input("{$data['tid']}");' 

id='tid-desc-{$data['tid']}'>{$data['description']}</span>
----------------------------------------------------------------------
Вставляем после этого 
----------------------------------------------------------------------
<span class="forumdesc"><if="$data['curator']"><i>В теме есть куратор</i></if></span>
======================================================================
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

вывод уведомления окончен. делаем дальше.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


######################################################################
Заходим в админку 
ACP Home > Skin Manager Home > Edit Template HTML
######################################################################
Заходим в админцентр
ACP Home > Look & feel > Edit Template HTML (В меню стиля)
======================================================================
Нажимаем Add Template Bit (Добавить фрагмент)
----------------------------------------------------------------------
New Template Bit Name (Название фрагмента):
----------------------------------------------------------------------
topic_curator_splash
----------------------------------------------------------------------
New Template Bit Incoming Data Variables (Входящие переменные):
----------------------------------------------------------------------
$forum="", $topic="", $auth_key="", $list_user="", $update=""
----------------------------------------------------------------------
Template group (Группа фрагмента):
----------------------------------------------------------------------
skin_mod
----------------------------------------------------------------------
Тело фрагмента
----------------------------------------------------------------------
</script><script language='javascript' type="text/javascript">
<!--
function find_users()
{
url = "index.php?act=legends&CODE=finduser_one&s=&entry=textarea&name=topic_curator&sep=none";
window.open(url,'FindUsers','width=400,height=250,resizable=yes,scrollbars=yes'); 
}
//-->
</script>
<div class='borderwrap'>
<div class='maintitle'><table><tr><td width="99%">Добавить куратора для темы {$topic['title']}<td width="1%"><a 

href="java script:self.close();"><b>[X]</b></a><td></td></tr></table></div>
<div class='row2'><center>{$update}</center></div>
<div class='tablepad'>Впишите точное имя пользователя или воспользуйтесь поиском</div>
<form action='{$this->ipsclass->baseurl}' method='POST' name='REPLIER' >
<input type='hidden' name='s' value='{$this->ipsclass->session_id}'>
<input type='hidden' name='act' value='mod'>
<input type='hidden' name='CODE' value='topiccurator'>
<input type='hidden' name='f' value='{$forum['id']}'>
<input type='hidden' name='t' value='{$topic['tid']}'>
<input type='hidden' name='auth_key' value='$auth_key' />
<input type='hidden' name='check' value='1'>
<table width="100%" cellspacing="0">
<tr>
<td class='pformright' align='center'>
<input type="text" name='topic_curator' size='30' value={$list_user}><br />
<input type='button' class='forminput' name='findusers' onclick='find_users()' 

value='{$this->ipsclass->lang['find_user_names']}' />
</td></tr></table>
<div class='formsubtitle' align='center'><input type='submit' value='Сохранить' class='button' /></div>
</form>
</div>
======================================================================
Заходим в админцентр
ACP Home > Look & feel > Edit Template HTML (В меню стиля)
Выбираем "Topic view" в нем "mod_panel_wrapper"
======================================================================
НАЙТИ
----------------------------------------------------------------------
<form name="modform" method="post" action="{$this->ipsclass->base_url}" onsubmit="return checkdelete();">
----------------------------------------------------------------------
ВЫШЕ ДОБАВИТЬ
----------------------------------------------------------------------
<form method="POST" name="modformCurator" action="{$this->ipsclass->base_url}">
<input type="hidden" name="act" value="mod" />
<input type="hidden" name="CODE" value="topiccurator" />
<input type="hidden" name="f" value="{$data['TOPIC']['forum_id']}" />
<input type="hidden" name="t" value="{$data['TOPIC']['tid']}" />
<input type="hidden" name="auth_key" value="{$auth_key}" />
<input type="submit" value="Управление Куратором" class="button" target="_blank" /></form>
======================================================================

СОХРАНИТЬ
######################################################################

А теперь листаем страничку в начало поста. и поиском по странице ищем: 
"java script" 
без кавычек.
там де нашли, проверяем у себя в скине и файлах... пробел убираем;)

Изменено пользователем in_fact
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
У меня все вроде заработало. Но окно назначения куратора открывается в текущем окне. Т.е. нужно возвращаться чтобы вернуться в форум.
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

решил эту проблему, что бы заново не входить на форум, просто заменил этот код

href="java script:self.close();"><b>[X]</b></a><td></td></tr></table></div>

на этот где "forum" если у вас форум расположен типа того "www.мой_сай.ru/forum"

<a href="/forum">На форум</a><td></td></tr></table></div>

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

  • 3 месяца спустя...

Как же поправить исходники, чтобы всё-таки возле названия темы отображался куратор...?

Никак не могу победить... ИПБ 2.1.7

 

=== Этот пост можно (и нужно) удалить !!! ===

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

В общем, сам спросил - сам ответил...!

Путём исследований и методом проб и ошибок, добился следующего:

а) использовал часть кода от kazus`а + немного модифицировал неск. строк....

было: $curator='Куратор темы: <a href="./index.php?showuser='.$list['id'].'">'.$list['members_display_name']."</a>";

Под названием топика выводило просто Куратор темы:

стало: $curator='<a href="./index.php?showuser='.$list['id'].'"><strong>Куратор темы</strong></a>';

Теперь жирным шрифтом выводит всё тот же Куратор темы, только со ссылкой на существующего куратора конкретной темы...

Осталось только "добить" чтобы выводился ник куратора.... Чего-то $list['members_display_name'] не работает...

Копаю дальше...

 

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

 

Ну вот я его (код) и пАбидил..!!!

В итоге, для корректного отображения ника куратора, строчка кода приобрела вид:

$curator='Куратор темы: <a href="./index.php?showuser='.$list['id'].'"><strong>'.$list['name'].'</strong></a>';

Всё оказалось просто...! Дабы не быть голословным, прикрепляю картинкО..

post-43382-1216403625_thumb.png

В принципе, более_или_не_менее рабочий мод готов → 2.1.7_curator_my.zip

Спасибо за внимание..!!

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

вот версия для 23х.

Не работает в этой версии:

- вывод ника куратора под названием темы в списке тем; (вместо этого сделано уведомление, что в теме есть куратор)

- вывод группы участника в данной теме, если он куратор данной темы.

а "испарвление" ошибок и "не работает" проводилось? не подскажет никто?

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

  • 3 недели спустя...

Кому интересно.

Для IPB 2.3.x:

1. Чтобы выводить группу и надпись "Куратор темы" делаем следующее:

ipsclass.php:

Находим:

$member['member_group']	= $this->compiled_templates[ $skin_file ]->member_group( $group_name );

Добавляем ниже:

$curator = unserialize(stripslashes($this->topic['curator_id']));
$member['member_group']   .= ($member['id']==$curator['id']) ? "<br/><strong>Куратор темы</strong>" : "";

2. Чтобы выводить ник куратора в списке тем, под ее описанием, делаем следующее:

forums.php:

Находим:

if ($topic['pinned'] == 1)

Добавляем выше:

	$list = unserialize(stripslashes($topic['curator_id']));
if ($list['id'])
{
	  $topic['curator'] = "Куратор темы: <a href=\"./index.php?showuser=".$list['id']."\">".$list['name']."</a>";
}

В шаблонах изменения те же, что были описаны страницу назад.

 

Кому надо, поймет. Удачи.

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

  • 11 месяцев спустя...

Поставила этот мод на 2.3.4 . Перестало работать редактирование сообщений. Как быстрое, так и полное. При попыьке быстрого редактирования - никакой реакции. При попытке полного - сообщение:

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

Причина:

 

Некоторые требуемые файлы отсутствуют. Если вы хотели просмотреть тему, возможно эта тема перемещена или удалена. Вернитесь назад и попробуйте снова."

 

В чем может быть ошибка?

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

Где-то в post.php или cplass_edit_post.php скорее всего. Проверяйте проделанные действия nxfntkmytq/
Ссылка на комментарий
Поделиться на других сайтах

Где-то в post.php или cplass_edit_post.php скорее всего. Проверяйте проделанные действия nxfntkmytq/

Все было проверено несколько раз. От инструкции не отошла ни на шаг.

 

Вобщем, пока не удалила мод, редактирование не заработало. Возможно, у меня просто кривые руки :D А возможно - не подружился с другими модификациями, установленными на форуме. И эту возможность тоже нельзя сбрасывать со счетов.

 

Спасибо за ответ.

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

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

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

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

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

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

Зарузка...

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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.