Пропустить

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

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

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

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

Сообщение Fray98rus » 18.12.2009 20:17

Вероятно у вас не хватает постов, чтобы повлиять. или другие условия не выполняются.
Аватара пользователя
Fray98rus
Former team member
 
Сообщения: 449
Зарегистрирован: 14.10.2007 19:21
Откуда: Санкт-Петербург
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

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

Сообщение FladeX » 18.12.2009 20:21

posemon1
мод точно правильно установили? Проверьте на всякий случай еще раз. Возможно, где-то не внесли изменения или в базе чего-то не хватает.
Хотя может быть и из-за настроек. Но по идее, если нет прав на изменение репутации, то и форма изменения репутации не должна отображаться.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
FladeX
Former team member
 
Сообщения: 2079
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск
Благодарил (а): 6 раз.
Поблагодарили: 53 раз.

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

Сообщение m@x3r » 19.12.2009 9:42

в мене вот така проблема поставив юзеру +
а пише що Репутация: 0 [ ? ]
но коли я нажимаю на 0 там показує що я поставив +
но як зробити коли ставиш + то щоб не 0 був а там 1 якщо ще раз поставив 2 ?

m@x3r
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 30.05.2009 13:55
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение MAzZY » 19.12.2009 10:11

m@x3r, у нас принят русский язык. Будьте добры писать именно на нем. Устное предупреждение.
Аватара пользователя
MAzZY
Former team member
 
Сообщения: 2952
Зарегистрирован: 14.05.2005 23:43
Благодарил (а): 61 раз.
Поблагодарили: 54 раз.
Предупреждения: 1

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

Сообщение m@x3r » 19.12.2009 17:22

у меня вот такая проблема поставил юзеру
а пишет что Репутация: 0 [? ]
но когда я нажимаю на 0 там показывает что я поставил
но как сделать когда ставишь то чтобы не 0 был а там 1 если еще раз поставил 2?

m@x3r
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 30.05.2009 13:55
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение romeo_piter » 28.12.2009 3:07

Ктото обновлялся с этим модом до 3.0.6?
А то потеря репы - смерти подобна...юзвери загрызут :cry:

romeo_piter
phpBB 2.0.15
 
Сообщения: 477
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 63 раз.
Поблагодарили: 8 раз.

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

Сообщение Fray98rus » 28.12.2009 4:38

А сделать бэкапы и обновиться на локалхосте религия не позволяет?
Аватара пользователя
Fray98rus
Former team member
 
Сообщения: 449
Зарегистрирован: 14.10.2007 19:21
Откуда: Санкт-Петербург
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

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

Сообщение romeo_piter » 28.12.2009 5:14

Если честно, я не хочу мучиться с Денвером. Остальные моды меня мало заботят.
Если тут скажут, что мод Олега работает - буду обновляться, если нет - то нет.

romeo_piter
phpBB 2.0.15
 
Сообщения: 477
Зарегистрирован: 02.04.2009 17:28
Благодарил (а): 63 раз.
Поблагодарили: 8 раз.

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

Сообщение FladeX » 28.12.2009 13:55

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 для форумов | форум про форумы
Аватара пользователя
FladeX
Former team member
 
Сообщения: 2079
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск
Благодарил (а): 6 раз.
Поблагодарили: 53 раз.

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

Сообщение boloto » 30.12.2009 12:54

Сделал небольшой, но удобный аддон к моду. Позволяет на странице топика видеть кол-во отзывов по сообщению.
Т.е. вот так:
Repa_topic_prosilver.png
вот так выглядит в топике (аккуратно и ненавязчиво) ProSilver
Repa_topic_subsilver2.png
вот так выглядит в топике SubSilver2
Repa_review.png
Страничка просмотра отзывов в Prossilver и Subsilver

Небольшие комментарии: я уверен, что можно сделать более изящно и толково. Я сделал, по мере своих знаний и умений. На странице топика специально выводится ненавязчиво и особо не выделяется. На странице просмотра отзывов умышленно не делаю запрос на заголовок сообщения, чтобы не нагружать лишним запросом, вместо этого выводится просто 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 - topic23115-270.html#p269074
Последний раз редактировалось boloto 19.05.2010 0:05, всего редактировалось 2 раз(а).
Аватара пользователя
boloto
phpBB 2.0.0
 
Сообщения: 122
Зарегистрирован: 29.09.2009 16:41
Благодарил (а): 39 раз.
Поблагодарили: 12 раз.

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

Сообщение FladeX » 30.12.2009 13:21

boloto, спасибо, хорошо придумали :)
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
Аватара пользователя
FladeX
Former team member
 
Сообщения: 2079
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск
Благодарил (а): 6 раз.
Поблагодарили: 53 раз.

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

Сообщение mau » 04.01.2010 0:20

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

[phpBB Debug] PHP Notice: in file /reputation.php on line 238: Undefined variable: pagination
Люди, которые и впрямь любят животных, всегда спрашивают их имена
Аватара пользователя
mau
phpBB 2.0.5
 
Сообщения: 228
Зарегистрирован: 28.04.2008 11:26
Откуда: Россия
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.

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

Сообщение boloto » 04.01.2010 14:41

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 (по умолчанию), а такое ох и маловероятно на моем форуме ;)
Аватара пользователя
boloto
phpBB 2.0.0
 
Сообщения: 122
Зарегистрирован: 29.09.2009 16:41
Благодарил (а): 39 раз.
Поблагодарили: 12 раз.

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

Сообщение mau » 04.01.2010 21:23

Спасибо, работает. А вот как изменить умолчание с 25 на большее количество?
Люди, которые и впрямь любят животных, всегда спрашивают их имена
Аватара пользователя
mau
phpBB 2.0.5
 
Сообщения: 228
Зарегистрирован: 28.04.2008 11:26
Откуда: Россия
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.

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

Сообщение boloto » 04.01.2010 22:56

mau писал(а):А вот как изменить умолчание с 25 на большее количество?
в админке в Размещение сообщений: Сообщений на странице: по умолчанию там 25. Можно изменить на другое число, но это само собой повлияет не только на репу, но и на кол-во отображаемых сообщений в топике.
А брать число отсюда для отображения кол-ва репы на страницу задумал автор мода Oleg NT.
Аватара пользователя
boloto
phpBB 2.0.0
 
Сообщения: 122
Зарегистрирован: 29.09.2009 16:41
Благодарил (а): 39 раз.
Поблагодарили: 12 раз.

Пред.След.

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

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы