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

[2.1.x]Модераторские теги


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

дописал возможность редактировать комменты модерам

 

принцип такой:

http://img515.imageshack.us/img515/2387/newmodexss5.jpg

и

http://img77.imageshack.us/img77/4899/newmodexeditmj8.jpg

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

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

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

Мне нужно сделать так, что бы нельзя было цитировать сообщения с этими тегами, как это сделать?
Ссылка на комментарий
Поделиться на других сайтах

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

Люди, ну сделайте плиз под 2.2.2 версию..

Очень плиз:D))

Заранее благодарен.

 

 

Ступил.

все работает, теги отрабатываются., только ставить их приходиться ручками, кнопок вызова нету, и где они вообще должны появиться?? (скрин скиньте если не в лом.)

Кэш чистил.

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

все работает, теги отрабатываются...

 

И что, даже при полном и быстром редактированиии сообщений при помощи RTE-редактора они у Вас преобразовывались в нормальный вид типа [mod=nickname]text[/mod]?

 

Странно. Я пока не добавил в \sources\classes\bbcode\class_bbcode_core.php

примерно после строк:

//-----------------------------------------

// CODE

//-----------------------------------------

 

$t = preg_replace( "#<!--c1-->(.+?)<!--ec1-->#", '[co-de]' , $t );

$t = preg_replace( "#<!--c2-->(.+?)<!--ec2-->#", '[/co-de]', $t );

P.S. в примере между co-de - дефис надо убрать. Я поставил из-за того, что тут форум постоянно преобразовывал текст между ними в блок кода :D

 

 

строчки:

//---------------------------------------------------

// Converting moderator tag's by OverHerz

//--------------------------------------------------

 

$t = preg_replace( "#<!--mod1-->(.+?)<!--name_st-->(.+?)<!--name_end-->(.+?)<!--emod1-->#", '[mod=\\2]', $t);

$t = preg_replace( "#<!--mod2-->(.+?)<!--emod2-->#", '[/mod]', $t);

$t = preg_replace( "#<!--excl1-->(.+?)<!--name_st-->(.+?)<!--name_end-->(.+?)<!--eexcl1-->#", '[ex=\\2]', $t);

$t = preg_replace( "#<!--excl2-->(.+?)<!--eexcl2-->#", '[/ex]' , $t );

то RTE-редактор не хотел нормально отображать редактируемый код. После внесения этих изменений - уже все ок.

 

И еще.. у кого был установлен мод от Vicer'a, по-моему нужно выполнить к базе 2 запроса, чтобы запретить пользователям редактировать сообщения, в которых были использованы предыдущие теги:

UPDATE ibf_posts set has_modcomment=1 WHERE post LIKE '%<!--mod1-->%';

UPDATE ibf_posts set has_modcomment=1 WHERE post LIKE '%<!--excl1-->%';

В данном случае можно воспользоваться также конструкцией REGEXP '<!--mod1-->|<!--excl1-->', но пришлось от нее отказаться, поскольку мой mysql начал вылетать)

 

 

P.P.S. Кстати, редактировать сообщения пользователи не могут, но вот удалить свое сообщение или даже свою тему - могут, что не есть гут.

 

Запрещаем удалять модерированные посты их авторам:

файл:sources/action_public/moderate.php

Находим в функции post_delete():

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

Вставляем выше:

// prevent to delete post with moderator tag's
	if (preg_match("#\<!--mod1-->(.+?)<!--emod1-->(.+?)<!--mod2-->(.+?)<!--emod2-->#is", $post['post']) && $this->ipsclass->member['is_mod'] == 0) {
		$passed = 0;
	}
	if (preg_match("#\<!--excl1-->(.+?)<!--eexcl1-->(.+?)<!--excl2-->(.+?)<!--eexcl2-->#is", $post['post']) && $this->ipsclass->member['is_mod'] == 0) {
		$passed = 0;
	}
//

 

Запрещаем удалять темы с модерированными постами их авторам:

 

Находим в функции topic_delete():

// Do we have a linked topic to remove?

 

Выше вставляем:

// Check if topic have moderated posts and have user rights to delete it
	$mod_check = "";
	if ($this->ipsclass->member['is_mod'] == 0) {
		$mod_check = "post LIKE '%<!--mod1-->%<!--emod2-->%'";
	}
	if ($this->ipsclass->member['is_mod'] == 0) {
		if (strlen(mod_check)) $mod_check .= " OR ";
		$mod_check .= "post LIKE '%<!--excl1-->%<!--eexcl2-->%'";
	}
	if (strlen($mod_check)) {
	  if ($DB->simple_exec_query(  array( 'select' => 'count(pid) as counter', 'from' => 'posts', 'where' => "topic_id = ".$this->topic['tid']." AND ( ".$mod_check." )" ) ) ){
			$this->moderate_error();
	  }
	}
//end

Сохраняем файл.

 

P.P.P.S. Насчет того чтобы убиралось из цитат и мультицитат:

sources/classes/post/class_post.php

в функции check_multi_quote() ищем строку:

$raw_post = trim($raw_post)."\n";

выше вставляем:

// Prevent from quoting moderators exclams
$raw_post = preg_replace( "#\[mod(.+?)\](.+?)\[/mod\]#is", "", $raw_post );
$raw_post = preg_replace( "#\[ex(.+?)\](.+?)\[/ex\]#is", "", $raw_post );
//

 

Теперь возьмемся за инструменты модерирования:

файл:sources/action_public/moderate.php

Ищем строчку: function multi_alter_topics($mod_action="", $sql="")

выше

if ( $this->trash_forum and $this->trash_forum != $this->forum['id'] )
		{

добавляем:

// Moderator tags block
		$mod_check = "";
		if ($this->ipsclass->member['is_mod'] == 0) {
			$mod_check = "post LIKE '%<!--mod1-->%<!--emod2-->%'";
		}
		if ($this->ipsclass->member['is_mod'] == 0) {
			if (strlen($mod_check)) $mod_check .= " OR ";
			$mod_check .= "post LIKE '%<!--excl1-->%<!--eexcl2-->%'";
		}
		if (strlen($ex_clause) && is_array($this->tids) && count($this->tids)) {
			$DB->simple_construct(  array( 'select' => 'topic_id', 'from' => 'posts', 'where' => "topic_id IN (".implode(",", $this->tids).") AND ( ".$mod_check." ) GROUP BY topic_id" ) );
			$DB->simple_exec();
			if ($num_rows = $DB->get_num_rows()){
				$n_tids = array();
				$tids = array();
				while ($row = $DB->fetch_row())
				{
					$n_tids[] = $row['topic_id'];
				}
				if ( count($n_tids) == count($this->tids) )
				{
					$this->moderate_error();
					return;
				}
				foreach ($this->tids as $t) {
					if (!in_array($t, $n_tids))	$tids[] = $t;
				}
				$this->tids = $tids;
			}

		}
//

 

Теперь в функции function multi_delete_post()

ищем строку: if ($passed != 1) $this->moderate_error();

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

// Moderator tags block
	$mod_check = "";
	if ($this->ipsclass->member['is_mod'] == 0) {
		$ex_clause = "post NOT LIKE '%<!--mod1-->%<!--emod2-->%'";
	}
	if ($this->ipsclass->member['is_mod'] == 0) {
		if (strlen($mod_check)) $mod_check .= " AND ";
		$mod_check .= "post NOT LIKE '%<!--excl1-->%<!--eexcl2-->%'";
	}
	if (strlen($mod_check) && is_array($this->pids) && count($this->pids)) {
		$DB->simple_construct(  array( 'select' => 'pid', 'from' => 'posts', 'where' => "pid IN (".implode(",", $this->pids).") AND ( ".$mod_check." )" ) );
		$DB->query($DB->cur_query);

		if ( ! $num_rows = $DB->get_num_rows() )
		{
			$this->moderate_error();
			return;
		}

		$this->pids = array();

		while ($row = $DB->fetch_row())
		{
			$this->pids[] = $row['pid'];
		}
	}
//

 

Отдельное спасибо Vic'erу за идеи в его моде (здесь чуть переделанный код).

 

Если я в чем-то неправ - подскажите плиз)

 

Ну и еще на десерт остается разобраться как добавить кнопки в RTE-редактор)

 

Чуть не забыл.. Все выше сказанное проделывалось для линейки 2.2.х.

Жду замечаний и предложений )

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

И что, даже при полном и быстром редактированиии сообщений при помощи RTE-редактора они у Вас преобразовывались в нормальный вид типа [mod=nickname]text[/mod]?
Чуть не забыл.. Все выше сказанное проделалывалось для линейки 2.2.х.

ну мод вроде как для 2.1.x, поэтому там вопросов не возникает, а вот за антиудаление спасибо

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

ну мод вроде как для 2.1.x, поэтому там вопросов не возникает, а вот за антиудаление спасибо

Насколько мне показалось из нижеследующей цитаты, уважаемый господин ставил его под 2.2-линейку :D

Люди, ну сделайте плиз под 2.2.2 версию..

....

все работает, теги отрабатываются., ...

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

Как сделать запрет на цитирование сообщений содержащих эти теги? Мне СРОЧНО надо это!!!!
Ссылка на комментарий
Поделиться на других сайтах

Доброй ночи.

У меня такая трабла. Поставил мод, всё нормально, теги вставляются,только вот тег [mod] и [ех] не меняет сообщение.. как было так и остаётся. Просто пишется как текст [mod]бла-бла-бла[/mod]. тоесть ожидаемого эффекта нету.

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

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

Добрый день , мод поставил, если руками прописывать все работает, на кнопочки не реагирует, и не могут пользователи теперь не смайлы, не изображение вставлять, в любой теме(любом топике) сделал все как надо и проверил уже раз 10, может подскажите что не так?!

Спасибо!

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

Добрый день , мод поставил, если руками прописывать все работает, на кнопочки не реагирует, и не могут пользователи теперь не смайлы, не изображение вставлять, в любой теме(любом топике) сделал все как надо и проверил уже раз 10, может подскажите что не так?!

Спасибо!

все уже сам исправил, спасибо:D

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

  • 2 недели спустя...
в интрукции написано:

Выполнить SQL запрос к базе:

ALTER TABLE ibf_posts ADD has_modcomment TINYINT(1) DEFAULT '0' NULL;

 

а как?

Админка -> SQL Toolbox -> в самом низу форма, куда вставляешь это:

ALTER TABLE ibf_posts ADD has_modcomment TINYINT(1) DEFAULT '0' NULL;

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

 

Кстати, я тоже немного переделал теги, но из-за того, что я не совсем знаю PHP, я не могу оптимизировать код :D

Вот скрин

Умеют отличать модераторов, супермодераторов и администраторов :)

 

Вот код (если кому нужно :)): http://zct.narod.ru/mod_tags_new.txt

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

Правим Post / PM Editor => editor_std

 

Это я нашел, сделал, а вот этот не могу найти, сделать

 

 

Открыть jscripts/ipb_bbcode.js

 

И вот этот!!!

 

Открыть jscripts/ipb_editor_std.js

 

Читай посты высше, ничего подобного не видел!!!

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

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

Если у тебя 2.2 - не будет работать в таком виде.

Если 2.1 - смотри: http://slil.ru/24307345

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

Добрался до "кнопки" и застрял тут:

 

//Открыть style_images/#НАЗВАНИЕ СКИНА#/folder_rte_files/rte_html.js

 

//Найти

 

button_code = '<td><div><img class="rteimage" src="' + g_imagesPath + 'code.gif" width="21" height="21" alt="'+js_tt_code+'" title="'+js_tt_code+'" onClick="wrap_tags(\'

\',\'

\')"></div></td>';

 

//Добавить ниже

 

button_mod = '<td><div><img class="rteimage" src="' + g_imagesPath + 'mod.gif" width="21" height="21" alt="Mod tag" title="Mod tag" onClick="wrap_tags(\'[mod]\',\'[/mod]\')"></div></td>';

button_ex = '<td><div><img class="rteimage" src="' + g_imagesPath + 'ex.gif" width="21" height="21" alt="Ex tag" title="Ex tag" onClick="wrap_tags(\'[ex]\',\'[/ex]\')"></div></td>';

 

 

//Найти

 

+ "\n" + button_link + "\n" + button_image + "\n" + button_email + "\n" + button_SEP + button_quote + button_code; // + button_SEP + button_smilies + "\n";

 

//Заменить на

 

+ "\n" + button_link + "\n" + button_image + "\n" + button_email + "\n" + button_SEP + button_quote + button_code + button_SEP + button_mod + button_ex; // + button_SEP + button_smilies + "\n";

 

 

 

Загрузить картинки в style_images/#НАЗВАНИЕ СКИНА#/folder_rte_files/folder_rte_images

 

лого

 

Название скина: formatsoft skin

 

Так что в каком там что искать я хз!!!

Может кто поможет?

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

Что я сделал не так? В редакторе сообщения все появилось. Но при нажатии ничего не происходит.

То же самое и с кнопкой транслит :D

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

Иод поставил, но вижу такое:

 

лого

 

уФТПЗПЕ РТЕДХРТЕЦДЕОЙЕ ПФ НПДЕТБФПТБ

 

как убрать, исправить?

 

ывфвфывфыв - это я писал :D

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

Фаиль открывается только на хостингде, тоесть когда сохраняешь даже задает вопрос, в какой кодировке сохранять!! :D

Так что фаил нормальный!

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

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

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

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