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

[2.1.x]eXTended Reputation System


Raynor

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

Подскажите пожалуйста и мне:

Вроде всё установилось нормально, но: если юзеру нельзя добавлять/убавлять репутацию (напр самому себе, или если гость и гостям запрещено и т.п.), то он видит вместо картинок +/- пустые квадраты, типа рисунков там нет. Если можно - то всё ок, видно и работает. Где и что я упустил?

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

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

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

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

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

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

А вот ответа на решение проблемы, я так не увидел в этой теме.

Как можно исправить баг, у некоторых пользователей проблема, не могут изменять репутацию в за посты, картинка + и - есть, но она не активна.

С учётом того, что в профи изменять репутацию они могут.

 

Было предположение что проблема тут:

//-----------------------------------------------
// skin_profile (Просмотр профиля) / show_profile
//-----------------------------------------------

================================================================================
======
НАХОДИМ
-------
<!--{WARN_LEVEL}-->
----------------
ДОБАВЛЯЕМ ПОСЛЕ:
----------------
<script type="text/javascript">
function rep_change_window_open(addr) 
{
win1 = open(addr,"win1","menubar=no,status=no,toolbar=no,width=600,height=225");
}
</script>
<br/>{$info['reputation_text']}{$info['reputation_minus']} <b>{$info['reputation_scores']}</b> {$info['reputation_add']}
================================================================================
=====

//--------------------------------------------
// skin_topic (Просмотр темы) / topic_page_top
//--------------------------------------------

================================================================================
======
НАХОДИМ
-------
<script type="text/javascript" src="jscripts/ipb_topic.js"></script>
----------------
ДОБАВЛЯЕМ ПОСЛЕ:
----------------
<script type="text/javascript">
function rep_change_window_open(addr) 
{
win1 = open(addr,"win1","menubar=no,status=no,toolbar=no,width=600,height=225");
}
</script>
================================================================================
======

//---------------------------------------
// skin_topic (Просмотр темы) / RenderRow
//---------------------------------------

================================================================================
======
НАХОДИМ
-------
			{$author['warn_text']} {$author['warn_minus']}{$author['warn_img']}{$author['warn_add']}
----------------
ДОБАВЛЯЕМ ПОСЛЕ:
----------------
<if="author['reputation_allow'] == "true"">
		<br/> <br/>{$author['reputation_text']}{$author['reputation_minus']}  <b>{$author['reputation_scores']}</b>  {$author['reputation_add']}
</if>

================================================================================
======

Что именно исправить надо?

 

И ещё есть такой касяк, когда создал группу и переместил туда пользователя (с уже имеющейся репутацией), то у данного пользователя (в профиле и темах) репутация 0 а при нажатие на этот 0, видно все прибавления и понижения. После перемещения

добавляю репут. выводит 1 а не то что было +1

 

ipb 2.1.7

 

Помогите пожайлуста, что делать если я импортирую настройки xml, а вместо названия и т.д. пустота?

 

Версия 2.1.4

 

Где пустота? В админке?

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

ну шо?

кто перепишет блок номер 2 для topics.php под версию 2.3.1?))

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

Хмммм... Уважаемые, а можно сделать было так, чтобы менялось само название репутации?

То есть, если надо, можешь в своих личных данных изменить с Репутация на Карма или Авторитет (на что угодно), и в темах будет отображаться вместо Репутация: 13 +/- - Карма: 13 +/-

Пример можно увидеть здесь:

http://www.uteha.ru/forum/index.php?showtopic=2261

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

В lang-файле. Для примера возьму слово "Карма". Замени

 

'rep_value' => "Репутация",

 

на

 

'rep_value' => "Карма",

 

Далее, в skin_global->global_board_header меняй

 

<a href="{ipb.script_url}act=rep&type=rating">Репутация</a>

 

на

 

<a href="{ipb.script_url}act=rep&type=rating">Карма</a>

 

Точно так же в lang_topic.php и lang_profile.php заменяй

 

//Simple Reputation System
'reputation' => "Репутация: ",
'plus' => "<img src='style_images/1/r_add.gif' border='0' />",
'minus' => "<img src='style_images/1/r_minus.gif' border='0' />",
'plus_disabled' => "<img src='style_images/<#IMG_DIR#>/r_add1.gif' border='0' />",
'minus_disabled' => "<img src='style_images/<#IMG_DIR#>/r_minus1.gif' border='0' />",
'rep_inc' => "Поднять репутацию",
'rep_dec' => "Опустить репутацию",
'view_rep' => "Просмотреть репутацию",
'change_rep' => "Изменение репутации",

 

на

 

//Simple Reputation System
'reputation' => "Карма: ",
'plus' => "<img src='style_images/1/r_add.gif' border='0' />",
'minus' => "<img src='style_images/1/r_minus.gif' border='0' />",
'plus_disabled' => "<img src='style_images/<#IMG_DIR#>/r_add1.gif' border='0' />",
'minus_disabled' => "<img src='style_images/<#IMG_DIR#>/r_minus1.gif' border='0' />",
'rep_inc' => "Поднять карму",
'rep_dec' => "Опустить карму",
'view_rep' => "Просмотреть карму",
'change_rep' => "Изменение кармы",

 

В lang_ucp.php:

 

'rep_settings'	 => "Настройки репутации",
'rep_notify'	   => "Уведомлять через личные сообщения об изменениях в репутации?",

 

на

 

'rep_settings'	 => "Настройки кармы",
'rep_notify'	   => "Уведомлять через личные сообщения об изменениях в карме?",

 

Вроде бы всё.

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

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

 

1) При смене группы у пользователя, у него в топике и профиле отображается + 0 -, хотя при нажатие на 0 видно кто выставлял + или -.

Приходится самому пересчитывать кол-во Репутации и выставлять, через SQL запросом:

UPDATE `ibf_members` SET `reputation` = 'A' WHERE `ibf_members`.`id` =B LIMIT 1;

Где А - это уровень репутации

В - это ID юзера которому нужно изменить репутацию.

 

 

2) Так же толком не решилась проблема описываемая выше №800.

Решение её как я понял заключалась в `rep_allow`.

После смены группы, в db у юзера в столбце `rep_allow` стоит 0, вместо 1.

 

Итог: Как сделать так, чтобы после смены группы у пользователя, небыло вышеуказанных проблем?

 

Версия форума: IPB 2.1.7

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

Sonic_gd

Хммм... :D

Если речь идёт о самом изменении названия репутации, то это я знаю ;)

Посмотрите внимательно ссылку, которую я опубликовал.

Мне нужно сделать так, чтобы у пользователя в профиле настраивалось название репутации.

К примеру, базовое "Репутация", да?

Личные Данные -> Настройки форума -> Ваше название репутации: ....

Чтобы каждый мог сделать индивидуальное название.

В англ версии это есть, но я не слишком силён в php-коде, чтобы оттуда выдирать.

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

Установил мод, ошибок и затруднений не вызвало, но недаёт менять репутацию, +/- неактивны, а в профиле негде её менять, сначала думал чтото сделал нетак, переустановил пару раз, непомогло.

 

стоит IPB 2.1.7

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

С этой темой небольшой глюк. Если нажимаешь в первом посте ссылку "подробнее", то выходишь на эту страницу http://www.ibresource.ru/db/678/

Если на ней нажимаешь "Тема поддержки" выдаётся фига.

 

 

Мод отличный! Но есть вопрос-пожелание.

1. Как сделать так, чтобы некоторые группы пользователей не могли понижать репутацию, но могли повышать? Например, администраторы и супермодераторы могли бы, а модераторы и простые пользователи нет. У меня версия форума 2.1.7

 

2. Как насчёт ответа в истории репутации пользователя на комментарий к изменению репутации?

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

И нельзя ли отключить пользователям возможность менять репутацию в профиле? А то без привязки к конкретным постам получается плохо обоснованное изменение репутации. Может стоило сделать эту функцию опционально?
Ссылка на комментарий
Поделиться на других сайтах

Ну если тебе нужно, чтобы в профиле только отображало, то замени в sources/action_public/profile.php

 

 //-----------------------------------------
		// Reputation
		//-----------------------------------------

		$info['reputation_text'] = $this->ipsclass->lang['reputation'];
		if (($this->ipsclass->member['id'] != $member['id']) && ($this->ipsclass->member['posts'] >= $this->ipsclass->vars['rep_posts']))
		{
			$info['reputation_minus'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_minus&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_dec']}'>{$this->ipsclass->lang['minus']}</a>";
			$info['reputation_add'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_add&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_inc']}'>{$this->ipsclass->lang['plus']}</a>";
		}
		else
		{
			$info['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
			$info['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
		}
		$info['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";

 

на

 

 //-----------------------------------------
		// Reputation
		//-----------------------------------------

		$info['reputation_text'] = $this->ipsclass->lang['reputation'];
			$info['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
			$info['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
		$info['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";

 

А чтобы репу мона было поднимать/опускать только за пост сделай так. В lang_reputation.php после

 

'error_12' => "Анонимные изменения репутации отключены",

 

добавь

 

'error_13' => "Не указан ID сообщения",

 

В sources/action_public/reputation.php в функции change_reputation($num) после

 

				if($this->message == '')
					$this->error_window(4);

 

добавь

 

				if(!$this->post)
					$this->error_window(13);

 

Вот вроде бы и всё.

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

Ясно, спасибо. А как же всё-таки сделать так, чтобы пользователи не могли опускать репу, а админы (админы+модераторы) могли?

 

И чтобы пользователи в профиле не могли без поста было изменять репутации , а админ (и модераторы, допустим) могли бы изменять репутацию без привязки к посту?

 

Я так понял приведённые выше изменения всех затрагивают.

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

Ну тогда так. На основе уже отредактированноых по выше приведённой иструкции файлов

 

Заменить в sources/action_public/profile.php

//-----------------------------------------
		// Reputation
		//-----------------------------------------

		$info['reputation_text'] = $this->ipsclass->lang['reputation'];
			$info['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
			$info['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
		$info['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";

 

на

 

//-----------------------------------------
		// Reputation
		//-----------------------------------------

		$info['reputation_text'] = $this->ipsclass->lang['reputation'];
		if ($this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod'])
		{
			$info['reputation_minus'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_minus&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_dec']}'>{$this->ipsclass->lang['minus']}</a>";
			$info['reputation_add'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_add&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_inc']}'>{$this->ipsclass->lang['plus']}</a>";
		}
		else
		{
			$info['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
			$info['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
		}
		$info['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";

 

и в sources/action_public/reputation.php

 

if(!$this->post)
					$this->error_window(13);

 

на

 

if(!$this->post && ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod']))
					$this->error_window(13);

 

А что бы только админы могли опускать репу:

 

В файле source/action_public/reputation.php функции check_permissions после

 

//Guest cannot vote!
			if(!$this->ipsclass->member['id'])
				$this->error_window(1);

 

добавить

 

//User cannot fo "minus" :)
			if($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod'])
				$this->error_window(14);

 

А в файл lang_reputation после

 

'error_13' => "Не указан ID сообщения",

 

добавить

 

'error_14' => "Только админы и модеры могут понижать репутацию",

 

Сам не тестил, но должно работать.

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

Ну тогда так. На основе уже отредактированноых по выше приведённой иструкции файлов

 

Вроде сделал как в последнем посте, а админ всё равно не может изменять репутацию через профиль.

 

А что бы только админы могли опускать репу:

 

В файле source/action_public/reputation.php функции check_permissions после

 

//Guest cannot vote!
			if(!$this->ipsclass->member['id'])
				$this->error_window(1);

 

добавить

 

//User cannot fo "minus" :)
			if($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod'])
				$this->error_window(14);

Сам не тестил, но должно работать.

 

 

А тут вообще интересно. Вместо окна в котором надо написать комментарий и т. д. выдаёт пустое белое окошко с надписью Закрыть

У меня правда глядя на код создаётся такое впечатление, что тут запрет вообще на изменение репутации, а не на минус. Но я в этом мало разбираюсь, так что не знаю. И кстати окошко вылезает и у админа. А ошибки эти $this->error_window(14); не надо прописывать в отдельный массив как сделано в том же файле?

 

		function error_window($code, $conf = 0)
	{
			$errors = array($this->ipsclass->lang['error_00'],
							$this->ipsclass->lang['error_01'],
							$this->ipsclass->lang['error_02'],
							$this->ipsclass->lang['error_03'],
							$this->ipsclass->lang['error_04'],
							$this->ipsclass->lang['error_05'],
							$this->ipsclass->lang['error_06'],
							$this->ipsclass->lang['error_07'],
							$this->ipsclass->lang['error_08'],
							$this->ipsclass->lang['error_09'],
							$this->ipsclass->lang['error_10'],
							$this->ipsclass->lang['error_11'],
							$this->ipsclass->lang['error_12']);

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

что тут запрет вообще на изменение репутации, а не на минус.

 

Чёрт) Точно) Нужно так:

 

//User cannot fo "minus" :)
			if($this->type == "minus" && ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod']))
				$this->error_window(14);

 

А ошибки эти $this->error_window(14); не надо прописывать в отдельный массив как сделано в том же файле?

 

Да, в этот же самоый массив и нужно прописать. Я думал там динамически сделано, не глянул. Заменить

 

$this->ipsclass->lang['error_12']);

 

на

 

$this->ipsclass->lang['error_12'],
$this->ipsclass->lang['error_13'],
$this->ipsclass->lang['error_14']
);

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

С минусом из поста всё заработало отлично, вот из профиля не совсем хочет.

 

Юзерам не видны кнопки изменения репутации в профиле (это хорошо), админу видны, но при попытке ими воспользоваться вылетает

 

Not Found

The requested URL /java script:rep_change_window_open("http://mydomen.ru/index.php was not found on this server.

 

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

 

 

:D

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

Ошибка перестала появляться, но что-то странное происходит. Я ж проверил, вроде всё работало, сейчас опять под админом захожу, проверяю, админ приравнен к простому пользователю. В профиле изменять репу не может, хотя в отличие от простых пользователей кнопки видит. Говорят либо "Только админы и модеры могут понижать репутацию", если хочу понизить, либо "Не указан ID сообщения" если повысить.

 

И почему-то не может ставить минус теперь за сообщения, тоже "Только админы и модеры могут понижать репутацию" Бррр.

 

Единственно что поменял - пробелы убрал и изменил текст ошибки на "Пользователям запрещено понижать репутацию". Непонятно.

 

----

Видимо меня проглючило когда я решил что оно заработало. Сейчас заново все действия выполнил не работает. Админ тоже не может уменьшать репутацию и не не может повышать её из профиля.

 

Ещё вопрос. При просмотре репутации есть такая таблица.

 

От пользователя	  Из темы	  Объяснение	  Уровень	  Дата

 

Почему-то у меня колонка "уровень" всегда пуста. Неплохо было бы, если б там стоял либо +1 либо -1, чтобы было понятно кем какое изменение репутации было произведено.

 

Это так должно быть, или я что-то упустил?

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

Ну с ошибкой касающейсяотсутствия для админа ID сообщения при изменении репутации в профиле пользователя, кажется решил проблему. Закомментрировал это

if(!$this->post && ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] || $this->ipsclass->member['is_mod']))
					$this->error_window(13);

Теперь вроде норма.

 

Но админ всё ещё не может понижать репутацию, хоть через посты, хоть через профиль...

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

Ну так подскажите кто-нть, почему при добавлении компонента он не добовляется, а добавляется пустота ? т.е. пустой компонент?

Поиск: lite_parser.

 

P.S. В файле ./ips_kernel/class_xml.php найти

var $lite_parser = 0;

заменить на

var $lite_parser = 1;

 

UPD: И проверьте чтобы в загружаемом xml в первой строке кодировка была нужная вам.

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


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

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

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