[DEV] Reputation System / Система репутации

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

posemon1
мод точно правильно установили? Проверьте на всякий случай еще раз. Возможно, где-то не внесли изменения или в базе чего-то не хватает.
Хотя может быть и из-за настроек. Но по идее, если нет прав на изменение репутации, то и форма изменения репутации не должна отображаться.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
m@x3r
phpBB 1.0.0
Сообщения: 1
Стаж: 17 лет 3 месяца

Re: [DEV] Reputation System / Система репутации

Сообщение m@x3r »

в мене вот така проблема поставив юзеру +
а пише що Репутация: 0 [ ? ]
но коли я нажимаю на 0 там показує що я поставив +
но як зробити коли ставиш + то щоб не 0 був а там 1 якщо ще раз поставив 2 ?
MAzZY
Бывший член :)
Сообщения: 2925
Стаж: 21 год 4 месяца
Благодарил (а): 79 раз
Поблагодарили: 69 раз
Забанен: Бессрочно

Re: [DEV] Reputation System / Система репутации

Сообщение MAzZY »

m@x3r, у нас принят русский язык. Будьте добры писать именно на нем. Устное предупреждение.
m@x3r
phpBB 1.0.0
Сообщения: 1
Стаж: 17 лет 3 месяца

Re: [DEV] Reputation System / Система репутации

Сообщение m@x3r »

у меня вот такая проблема поставил юзеру
а пишет что Репутация: 0 [? ]
но когда я нажимаю на 0 там показывает что я поставил
но как сделать когда ставишь то чтобы не 0 был а там 1 если еще раз поставил 2?
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Ктото обновлялся с этим модом до 3.0.6?
А то потеря репы - смерти подобна...юзвери загрызут :cry:
Аватара пользователя
Fray98rus
Former team member
Сообщения: 442
Стаж: 18 лет 11 месяцев
Откуда: Санкт-Петербург
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: [DEV] Reputation System / Система репутации

Сообщение Fray98rus »

А сделать бэкапы и обновиться на локалхосте религия не позволяет?
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Если честно, я не хочу мучиться с Денвером. Остальные моды меня мало заботят.
Если тут скажут, что мод Олега работает - буду обновляться, если нет - то нет.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

romeo_piter писал(а):Ктото обновлялся с этим модом до 3.0.6?
Я обновлялся, всё нормально. А почему подумали, что могут быть проблемы при обновлении?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

Сделал небольшой, но удобный аддон к моду. Позволяет на странице топика видеть кол-во отзывов по сообщению.
Т.е. вот так:
Repa_topic_prosilver.png
Repa_topic_subsilver2.png
Repa_review.png
Небольшие комментарии: я уверен, что можно сделать более изящно и толково. Я сделал, по мере своих знаний и умений. На странице топика специально выводится ненавязчиво и особо не выделяется. На странице просмотра отзывов умышленно не делаю запрос на заголовок сообщения, чтобы не нагружать лишним запросом, вместо этого выводится просто id сообщения и линк на него.
Теперь код:
в файле reputation.php

заменить

Код: Выделить всё

$mode = request_var('mode', 'view');

if (!in_array($mode, array('view', 'change')))
{

Код: Выделить всё

$mode = request_var('mode', 'view', 'reviews');

if (!in_array($mode, array('view', 'change', 'reviews')))
{
после

Код: Выделить всё

		'body' => 'reputation_history_body.html')
	);


	page_footer();

}
добавить

Код: Выделить всё

elseif ($mode == 'reviews')
{
	$posts_id = request_var('p', $user->data['user_id']);

	$start = request_var('start', 0);
	if ($start < 0)
	{
		$start = 0;
	}

	$page_title = $user->lang['REPUTATION_FOR_POST'];

	$sql = "SELECT r.*
		FROM " . REPUTATION_TABLE . " r
		WHERE reputation_post= $posts_id
		ORDER BY r.reputation_time DESC";
	$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
	
	$reprows = array();
	while ($row = $db->sql_fetchrow($result))
	{
		$reprows[] = $row;
	}
	$db->sql_freeresult($result);

	$users_cache = array();
	$topic_rev = '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=$posts_id") . '#p' . $posts_id . '">' . $posts_id . '</a>';

	$i = 0;


	foreach ($reprows as $reprows_key => $reprows_value)
	{
		$r_userid = $reprows_value['reputation_from'];
		$r_comment = nl2br(trim($reprows_value['reputation_comment']));
		$r_time = $user->format_date($reprows_value['reputation_time']);
		$r_type = $reprows_value['reputation_type'];
		$r_image_type = ($r_type) ? $user->img('icon_reputation_up', '+') : $user->img('icon_reputation_down', '&minus;');

			$sql = "SELECT u.username, u.user_colour
			FROM " . USERS_TABLE . " u
			WHERE u.user_id = $r_userid";
		$result = $db->sql_query($sql);

		$row = $db->sql_fetchrow($result);
		$db->sql_freeresult($result);
		$r_username = get_username_string('full', $r_userid, $row['username'], $row['user_colour']);


		$template->assign_block_vars('reputationrow', array(
			'ROWID'		=> $i + ($start + 1),
			'USERNAME'	=> $r_username,
			'COMMENT'	=> $r_comment,
			'TYPE'		=> $r_image_type,
			'TIME'		=> $r_time)
		);

		$i++;
	}

	$sql = "SELECT COUNT(*) AS rev_cnt
		FROM " . REPUTATION_TABLE . "
	WHERE reputation_post= $posts_id " ;
	$result = $db->sql_query($sql);

	$reputation_total_items = $db->sql_fetchfield('rev_cnt');

	$db->sql_freeresult($result);

	$pagination = generate_pagination(append_sid("{$phpbb_root_path}reputation.$phpEx", "mode=reviews&p=$posts_id"), $reputation_total_items, $config['topics_per_page'], $start);
	$on_page = on_page($reputation_total_items, $config['topics_per_page'], $start);

	$template->assign_vars(array(
		'PAGINATION'			=> $pagination,
		'TOTAL_COMMENTS'		=> ($reputation_total_items == 1) ? $user->lang['REPUTATION_TOTAL_ONE_COMMENT'] : sprintf($user->lang['REPUTATION_TOTAL_COMMENTS'], $reputation_total_items),
		'PAGE_NUMBER'			=> $on_page,
		'TOPIC'					=> $topic_rev
	));


	page_header($page_title);

	$template->set_filenames(array(
		'body' => 'reputation_topic_body.html')
	);


	page_footer();
}

в файле viewtopic.php
после

Код: Выделить всё

				'reputation'	=> $row['user_reputation_total'],
добавить

Код: Выделить всё

				'reviews'		=> '',
после

Код: Выделить всё

		$reputation = '';
	}
	// Reputation END
добавить

Код: Выделить всё

	// Review
	if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot'])
	{
	$reviews = '';
	}
	else
	{

	$sql = 'SELECT COUNT(*) AS rev_cnt
	FROM ' . REPUTATION_TABLE . 
	' WHERE reputation_post =' . $row['post_id'];
	
	$result = $db->sql_query($sql);
	$reviews_total_items = $db->sql_fetchfield('rev_cnt');
	if ( $reviews_total_items > 0 )
	{
	$reviews = '<a href="' . append_sid("{$phpbb_root_path}reputation.$phpEx", "mode=reviews&p=" . $row['post_id']) . '" title="' . $user->lang['REVIEWS_HISTORY'] . '">' . $user->lang['REVIEWS'] . '(' . $reviews_total_items . ')' . '</a>';
	}
	else
	{
	$reviews = '';
	}
	}
	
	// Review END
после

Код: Выделить всё

		'POST_ID'			=> $row['post_id'],
добавить

Код: Выделить всё

		'POST_REVIEWS'		=> $reviews,

в файле \language\ru\mods\reputation.php
после

Код: Выделить всё

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

Код: Выделить всё

	'REVIEWS'							=> 'Отзывы',
	'REVIEWS_HISTORY'					=> 'Посмотреть историю отзывов на это сообщение',
	'REVIEWS_NO_COMMENTS'				=> 'Этому <strong>сообщению</strong> ни один пользователь пока не изменял репутацию',
в файле \styles\prosilver\template\viewtopic_body.html
после

Код: Выделить всё

{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> &raquo; {postrow.POST_DATE}
добавить

Код: Выделить всё

<!-- IF postrow.POST_REVIEWS --><b>{postrow.POST_REVIEWS}</b><!-- ENDIF -->
в файле \styles\subsilver2\template\viewtopic_body.html
после

Код: Выделить всё

<!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE -->
добавить

Код: Выделить всё

<!-- IF postrow.POST_REVIEWS --><b>{postrow.POST_REVIEWS}</b><!-- ENDIF -->
создать два файла:
styles\prosilver\template\reputation_topic_body.html

Код: Выделить всё

<!-- INCLUDE overall_header.html -->	

<h2 class="solo">{PAGE_TITLE} :	{TOPIC} </h2>

<div class="forumbg forumbg-table">
	<div class="inner"><span class="corners-top"><span></span></span>

	<table class="table1" cellspacing="1" id="reputation-history">
	<thead>
	<tr>
		<th class="row-id">#</th>
		<th class="username-from">{L_REPUTATION_USERNAME_FROM}</th>
		<th class="comment">{L_REPUTATION_COMMENT}</th>
		<th class="type">{L_REPUTATION_TYPE}</th>
		<th class="time">{L_REPUTATION_TIME}</th>
	</tr>
	</thead>
	<tbody>
	<!-- BEGIN reputationrow -->

	<tr class="<!-- IF reputationrow.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
	<td class="row-id">{reputationrow.ROWID}</td>
	<td class="username-from"><!-- IF reputationrow.USERNAME -->{reputationrow.USERNAME}<!-- ELSE -->({L_REPUTATION_USER_REMOVED})<!-- ENDIF --></td>
	<td class="comment">{reputationrow.COMMENT}</td>
	<td class="type">{reputationrow.TYPE}</td>
	<td class="time">{reputationrow.TIME}</td>
	</tr>
	<!-- BEGINELSE -->
	<tr class="bg1">
		<td colspan="6">{L_REVIEWS_NO_COMMENTS}</td>
	</tr>
	<!-- END reputationrow -->
	</tbody>
	</table>

	<span class="corners-bottom"><span></span></span></div>
</div>


<hr />

<ul class="linklist">
	<li class="rightside pagination">{TOTAL_COMMENTS} &bull; <!-- IF PAGINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE -->{PAGE_NUMBER}<!-- ENDIF --></li>
</ul>

<!-- INCLUDE overall_footer.html -->
styles\subsilver2\template\reputation_topic_body.html

Код: Выделить всё

<!-- INCLUDE overall_header.html -->	
	<b class="gen">{L_REPUTATION_FOR_POST}:	{TOPIC} </b>

<table class="tablebg" width="100%" cellspacing="1" id="reputation-history">
<tr>
	<th nowrap="nowrap">#</th>
	<th nowrap="nowrap">{L_REPUTATION_USERNAME_FROM}</th>
	<th nowrap="nowrap">{L_REPUTATION_COMMENT}</th>
	<th nowrap="nowrap">{L_REPUTATION_TYPE}</th>
	<th nowrap="nowrap">{L_REPUTATION_TIME}</th>
</tr>
<!-- BEGIN reputationrow -->
<!-- IF reputationrow.S_ROW_COUNT is even --><tr class="row2"><!-- ELSE --><tr class="row1"><!-- ENDIF -->
	<td class="gen" align="center">&nbsp;{reputationrow.ROWID}&nbsp;</td>
	<td class="genmed" align="{S_CONTENT_FLOW_BEGIN}"><!-- IF reputationrow.USERNAME -->{reputationrow.USERNAME}<!-- ELSE -->({L_REPUTATION_USER_REMOVED})<!-- ENDIF --></td>
	<td class="genmed" align="{S_CONTENT_FLOW_BEGIN}">{reputationrow.COMMENT}</td>
	<td class="gen" align="center">{reputationrow.TYPE}</td>
	<td class="gen" align="center">{reputationrow.TIME}</td>
</tr>
<!-- BEGINELSE -->
<tr>
	<td class="gen" align="center" colspan="6">{L_REVIEWS_NO_COMMENTS}</td>
</tr>
<!-- END reputationrow -->
</table>

<table width="100%" cellspacing="0" cellpadding="0">
<tr>
	<td class="pagination">{TOTAL_COMMENTS}</td>
	<td align="{S_CONTENT_FLOW_END}"><!-- IF PAGINATION --><b class="nav"><a href="#" onclick="jumpto(); return false;">{PAGE_NUMBER}</a></b><br /><span class="pagination">{PAGINATION}</span><!-- ELSE -->{PAGE_NUMBER}<!-- ENDIF --></span></td>
</tr>
</table>

<!-- INCLUDE overall_footer.html -->

Буду рад, если гуру просмотрят и внесут правки в мой код, наверняка там много что можно оптимизировать.
Очень рекомендую прочитать дополнение от Kot - [DEV] Reputation System / Система репутации
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось boloto 08.11.2012 8:15, всего редактировалось 3 раза.
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

boloto, спасибо, хорошо придумали :)
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
mau
phpBB 2.0.0
Сообщения: 220
Стаж: 18 лет 4 месяца
Откуда: Россия
Благодарил (а): 6 раз
Поблагодарили: 12 раз

Re: [DEV] Reputation System / Система репутации

Сообщение mau »

Дополнение очень нужное, но в моде из-за этого появляется еще одна ошибка при просмотре отзыва

[phpBB Debug] PHP Notice: in file /reputation.php on line 238: Undefined variable: pagination
Люди, которые и впрямь любят животных, всегда спрашивают их имена
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

mau писал(а):Дополнение очень нужное, но в моде из-за этого появляется еще одна ошибка при просмотре отзыва[phpBB Debug] PHP Notice: in file /reputation.php on line 238: Undefined variable: pagination
спасибо за отзыв. Да, действительно я провтыкал одну строку в reputation.php

Код: Выделить всё

	$pagination = generate_pagination(append_sid("{$phpbb_root_path}reputation.$phpEx", "mode=reviews&p=$posts_id"), $reputation_total_items, $config['topics_per_page'], $start);
перед

Код: Выделить всё

	$on_page = on_page($reputation_total_items, $config['topics_per_page'], $start);
сейчас откорректирую свой пост. откорректировал.

реально это может возникнуть, если отзывов за сообщение будет больше 25 (по умолчанию), а такое ох и маловероятно на моем форуме ;)
Аватара пользователя
mau
phpBB 2.0.0
Сообщения: 220
Стаж: 18 лет 4 месяца
Откуда: Россия
Благодарил (а): 6 раз
Поблагодарили: 12 раз

Re: [DEV] Reputation System / Система репутации

Сообщение mau »

Спасибо, работает. А вот как изменить умолчание с 25 на большее количество?
Люди, которые и впрямь любят животных, всегда спрашивают их имена
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

mau писал(а):А вот как изменить умолчание с 25 на большее количество?
в админке в Размещение сообщений: Сообщений на странице: по умолчанию там 25. Можно изменить на другое число, но это само собой повлияет не только на репу, но и на кол-во отображаемых сообщений в топике.
А брать число отсюда для отображения кол-ва репы на страницу задумал автор мода Oleg NT.
dar
phpBB 1.0.0
Сообщения: 0
Стаж: 16 лет 8 месяцев

Re: [DEV] Reputation System / Система репутации

Сообщение dar »

привет всем, помогите с данной проблемой, как найти и убрать синтаксическую ошибку в файле?

выходит надпись:

Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/name/public_html/forum/viewtopic.php on line 1102

есть программа какая нибудь где идет счет строк?

Вернуться в «Бета-версии модов для phpBB 3.0.x»