info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ 1 сообщение ]  Просмотры: 3261

Автор Сообщение
Не в сети
(Андрей)  
Администратор
Аватара пользователя

Стаж: 8 лет 6 месяцев 7 дней
Сообщения: 1223
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


Phpbbex Posts Rating

модификация позволяет оценивать сообщения, на основе чего строится репутация пользователя

оригинальная тема: https://www.phpbb-work.ru/posts-rating-t69.html

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

Сканы работы
Вложение:
adm.png
adm.png [ 67.57 КБ | Просмотров: 3260 ] adm.png

Вложение:
prava.png
prava.png [ 71.72 КБ | Просмотров: 3260 ] prava.png

Вложение:
memberlist.png
memberlist.png [ 14.1 КБ | Просмотров: 3260 ] memberlist.png

Вложение:
profil.png
profil.png [ 39.54 КБ | Просмотров: 3260 ] profil.png

Вложение:
viewtopic.png
viewtopic.png [ 49.56 КБ | Просмотров: 3260 ] viewtopic.png

Вложение:
viewtopic_on.png
viewtopic_on.png [ 48.84 КБ | Просмотров: 3260 ] viewtopic_on.png



ставится довольно просто, багов не замечено.

Итак, поехали:

Скачать модификацию из архива сайта:

Скачать из файлового архива сайта

Распаковать и содержимое папки root загрузить в корень сайта (где файл config.php).

Теперь редактируем файлы:

Открыть memberlist.php
Найти

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

      $sort_key_sql['m'] = 'u.user_rank';


Вставить после найденного

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

      if ($config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']))
      {
         $sort_key_text['r'] = $user->lang['USER_RATING'];
         $sort_key_text['o'] = $user->lang['USER_RATED'];
         if (!$config['rate_no_negative'] && !$config['rate_no_positive'])
         {
            $sort_key_sql['r'] = 'CAST(u.user_rating_positive AS SIGNED)-CAST(u.user_rating_negative AS SIGNED)';
            $sort_key_sql['o'] = 'CAST(u.user_rated_positive AS SIGNED)-CAST(u.user_rated_negative AS SIGNED)';
         }
         else if (!$config['rate_no_positive'])
         {
            $sort_key_sql['r'] = 'u.user_rating_positive';
            $sort_key_sql['o'] = 'u.user_rated_positive';
         }
         else if (!$config['rate_no_negative'])
         {
            $sort_key_sql['r'] = '-CAST(u.user_rating_negative AS SIGNED)';
            $sort_key_sql['o'] = '-CAST(u.user_rated_negative AS SIGNED)';
         }
      }


Найти

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

         'U_SORT_JOINED'         => $sort_url . '&sk=c&sd=' . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a'),


Вставить после найденного

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

         'U_SORT_RATING'         => ($config['rate_enabled']) ? $sort_url . '&sk=r&sd=' . (($sort_key == 'r' && $sort_dir == 'd') ? 'a' : 'd') : '',
         'U_SORT_RATED'         => ($config['rate_enabled']) ? $sort_url . '&sk=o&sd=' . (($sort_key == 'o' && $sort_dir == 'd') ? 'a' : 'd') : '',


Найти

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

      'WARNINGS'      => isset($data['user_warnings']) ? $data['user_warnings'] : 0,


Вставить после найденного

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

      'S_RATING'         => $config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']),
      'RATING'         => ($config['rate_no_positive'] ? 0 : $data['user_rating_positive']) - ($config['rate_no_negative'] ? 0 : $data['user_rating_negative']),
      'RATING_POSITIVE'   => $data['user_rating_positive'],
      'RATING_NEGATIVE'   => $data['user_rating_negative'],
      'RATED'            => ($config['rate_no_positive'] ? 0 : $data['user_rated_positive']) - ($config['rate_no_negative'] ? 0 : $data['user_rated_negative']),
      'RATED_POSITIVE'   => $data['user_rated_positive'],
      'RATED_NEGATIVE'   => $data['user_rated_negative'],


Открыть viewtopic.php
Найти

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

   'S_ENABLE_FEEDS_TOPIC'   => ($config['feed_topic'] && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $topic_data['forum_options'])) ? true : false,


Вставить после найденного

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

   'S_RATE_ENABLED'      => $config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']),


Найти

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

      'post_edit_locked'   => $row['post_edit_locked'],


Вставить после найденного

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

      'post_rating_negative'   => $row['post_rating_negative'],
      'post_rating_positive'   => $row['post_rating_positive'],


Найти

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

            'from'         => '',


Вставить после найденного

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

            'rating'         => 0,
            'rating_positive'   => 0,
            'rating_negative'   => 0,
            'rated'            => 0,
            'rated_positive'   => 0,
            'rated_negative'   => 0,


Найти

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

            'from'         => (!empty($row['user_from'])) ? $row['user_from'] : '',


Вставить после найденного

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

            'rating'         => ($config['rate_no_positive'] ? 0 : $row['user_rating_positive']) - ($config['rate_no_negative'] ? 0 : $row['user_rating_negative']),
            'rating_positive'   => $row['user_rating_positive'],
            'rating_negative'   => $row['user_rating_negative'],
            'rated'            => ($config['rate_no_positive'] ? 0 : $row['user_rated_positive']) - ($config['rate_no_negative'] ? 0 : $row['user_rated_negative']),
            'rated_positive'   => $row['user_rated_positive'],
            'rated_negative'   => $row['user_rated_negative'],


Найти

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

$template->assign_vars(array(
   'S_NUM_POSTS' => sizeof($post_list))
);


Вставить после найденного

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

// Get user rates
$sql = 'SELECT *
   FROM ' . POST_RATES_TABLE . '
   WHERE user_id = ' . $user->data['user_id'] . '
      AND ' . $db->sql_in_set('post_id', $post_list);
$result = $db->sql_query($sql);

$user_rates = array();
while ($row = $db->sql_fetchrow($result))
{
   $user_rates[$row['post_id']] = $row;
}


Найти

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

      // we do not want to allow removal of the last post if a moderator locked it!
      !$row['post_edit_locked']
   )));


Вставить после найденного

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

   $user_rate = isset($user_rates[$row['post_id']]) ? $user_rates[$row['post_id']] : array('rate' => 0, 'rate_time' => 0);
   $rate_time = ($topic_data['topic_first_post_id'] != $row['post_id'] || !isset($config['rate_topic_time']) || $config['rate_topic_time'] == -1) ? $config['rate_time'] : $config['rate_topic_time'];


Найти

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

      'POSTER_AGE'      => $user_cache[$poster_id]['age'],


Вставить после найденного

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

      'S_POSTER_RATING'         => $config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']) && ($poster_id != ANONYMOUS),
      'POSTER_RATING'            => $user_cache[$poster_id]['rating'],
      'POSTER_RATING_POSITIVE'   => $user_cache[$poster_id]['rating_positive'],
      'POSTER_RATING_NEGATIVE'   => $user_cache[$poster_id]['rating_negative'],
      'POSTER_RATED'            => $user_cache[$poster_id]['rated'],
      'POSTER_RATED_POSITIVE'      => $user_cache[$poster_id]['rated_positive'],
      'POSTER_RATED_NEGATIVE'      => $user_cache[$poster_id]['rated_negative'],


Найти

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

      'POSTER_ID'         => $poster_id,


Вставить после найденного

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

      'POST_RATING_SHOW'      => $config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']) && ($row['post_rating_negative'] != 0 || $row['post_rating_positive'] != 0 || (empty($config['rate_only_topics']) || $topic_data['topic_first_post_id'] == $row['post_id']) && ($rate_time > 0 ? $rate_time + $row['post_time'] > time() : true)),
      'POST_RATING'         => ($config['rate_no_positive'] ? 0 : $row['post_rating_positive']) - ($config['rate_no_negative'] ? 0 : $row['post_rating_negative']),
      'POST_RATING_NEGATIVE'   => $row['post_rating_negative'],
      'POST_RATING_POSITIVE'   => $row['post_rating_positive'],
      'USER_RATE'            => $user_rate['rate'],
      'USER_CAN_MINUS'      => $config['rate_enabled'] && ($user->data['user_id'] != ANONYMOUS) && ($user->data['user_id'] != $poster_id) && (empty($config['rate_only_topics']) || $topic_data['topic_first_post_id'] == $row['post_id']) && ($rate_time > 0 ? $rate_time + $row['post_time'] > time() : true) && ($user_rate['rate'] >= 0) && ($user_rate['rate'] != 0 && $config['rate_change_time'] > 0 ? $config['rate_change_time'] + $user_rate['rate_time'] > time() : true) && ($config['rate_no_negative'] ? $user_rate['rate'] != 0 : true) && $auth->acl_get('u_canminus'),
      'USER_CAN_PLUS'         => $config['rate_enabled'] && ($user->data['user_id'] != ANONYMOUS) && ($user->data['user_id'] != $poster_id) && (empty($config['rate_only_topics']) || $topic_data['topic_first_post_id'] == $row['post_id']) && ($rate_time > 0 ? $rate_time + $row['post_time'] > time() : true) && ($user_rate['rate'] <= 0) && ($user_rate['rate'] != 0 && $config['rate_change_time'] > 0 ? $config['rate_change_time'] + $user_rate['rate_time'] > time() : true) && ($config['rate_no_positive'] ? $user_rate['rate'] != 0 : true) && $auth->acl_get('u_canplus'),


Открыть includes/constants.php
Найти

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

// Additional tables


Вставить после найденного

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

define('POST_RATES_TABLE',         $table_prefix . 'post_rates');


Открыть includes/functions.php
Найти

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

      'BOARD_URL'         => $board_url,


Вставить после найденного

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

      'AJAX_TOKEN'      => generate_link_hash('ajax'),


Найти

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

   // application/xhtml+xml not used because of IE
   header('Content-type: text/html; charset=UTF-8');


Вставить перед найденным

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

   // Style settings
   $settings = array(
      'rate_no_positive',
      'rate_no_negative',

      // miniprofile
      'style_mp_show_rating',
      'style_mp_show_rating_detailed',
      'style_mp_show_rated',
      'style_mp_show_rated_detailed',

      // profile
      'style_p_show_rating',
      'style_p_show_rating_detailed',
      'style_p_show_rated',
      'style_p_show_rated_detailed',

      // memberlist
      'style_ml_show_rating',
      'style_ml_show_rating_detailed',
      'style_ml_show_rated',
      'style_ml_show_rated_detailed',
   );

   foreach ($settings as $setting)
   {
      $template->assign_var(strtoupper($setting), !empty($config[$setting]) ? $config[$setting] : false);
   }


Открыть includes/startup.php
Найти

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

// Report all errors, except notices and deprecation messages


Вставить перед найденным

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

// Configure autoloader
require(dirname(__FILE__).'/../classes/autoloader.php');
autoloader::init(dirname(__FILE__).'/../classes/');
autoloader::add_path(dirname(__FILE__).'/../modules/', 'module');


Открыть includes/ucp/ucp_pm_viewmessage.php
Найти

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

      'AUTHOR_FROM'      => (!empty($user_info['user_from'])) ? $user_info['user_from'] : '',


Вставить после найденного

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

      'S_RATE_ENABLED'         => $config['rate_enabled'] && (!$config['rate_no_negative'] || !$config['rate_no_positive']) && ($author_id != ANONYMOUS),
      'AUTHOR_RATING'            => (int) ($config['rate_no_positive'] ? 0 : $user_info['user_rating_positive']) - ($config['rate_no_negative'] ? 0 : $user_info['user_rating_negative']),
      'AUTHOR_RATING_POSITIVE'   => (int) $user_info['user_rating_positive'],
      'AUTHOR_RATING_NEGATIVE'   => (int) $user_info['user_rating_negative'],
      'AUTHOR_RATED'            => (int) ($config['rate_no_positive'] ? 0 : $user_info['user_rated_positive']) - ($config['rate_no_negative'] ? 0 : $user_info['user_rated_negative']),
      'AUTHOR_RATED_POSITIVE'      => (int) $user_info['user_rated_positive'],
      'AUTHOR_RATED_NEGATIVE'      => (int) $user_info['user_rated_negative'],


языковые правки. ru
Открыть language/ru/common.php
Найти

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

   'USER_POSTS'         => '%d сообщений',


Вставить после найденного

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

   // Ratings
   'USER_RATING'            => 'Репутация',
   'USER_RATED'            => 'Лояльность',

правки стиля. prosilver
Открыть styles/prosilver/template/memberlist_body.html
Найти

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

         <th class="name"><span class="rank-img"><a href="{U_SORT_RANK}">{L_RANK}</a></span><a href="{U_SORT_USERNAME}"><!-- IF S_SHOW_GROUP and .memberrow -->{L_GROUP_LEADER}<!-- ELSE -->{L_USERNAME}<!-- ENDIF --></a></th>


Вставить после найденного

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

         <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><th class="posts"><a href="{U_SORT_RATING}">{L_USER_RATING}</a></th><!-- ENDIF -->
         <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><th class="posts"><a href="{U_SORT_RATED}">{L_USER_RATED}</a></th><!-- ENDIF -->


Найти

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

      <th class="name"><span class="rank-img"><a href="{U_SORT_RANK}">{L_RANK}</a></span><a href="{U_SORT_USERNAME}"><!-- IF S_SHOW_GROUP -->{L_GROUP_MEMBERS}<!-- ELSE -->{L_USERNAME}<!-- ENDIF --></a></th>


Вставить после найденного

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

      <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><th class="posts"><a href="{U_SORT_RATING}">{L_USER_RATING}</a></th><!-- ENDIF -->
      <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><th class="posts"><a href="{U_SORT_RATED}">{L_USER_RATED}</a></th><!-- ENDIF -->


Найти

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

      <th class="name">{L_GROUP_MEMBERS}</th>


Вставить после найденного

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

      <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><th class="posts">&nbsp;</th><!-- ENDIF -->
      <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><th class="posts">&nbsp;</th><!-- ENDIF -->


Найти

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

      <td><!-- IF memberrow.RANK_IMG --><span class="rank-img">{memberrow.RANK_IMG}</span><!-- ELSE --><span class="rank-img">{memberrow.RANK_TITLE}</span><!-- ENDIF --><!-- IF S_IN_SEARCH_POPUP and not S_SELECT_SINGLE --><input type="checkbox" name="user" value="{memberrow.USERNAME}" /> <!-- ENDIF -->{memberrow.USERNAME_FULL}<!-- IF S_SELECT_SINGLE --><br />[&nbsp;<a href="#" onclick="insert_single('{memberrow.A_USERNAME}'); return false;">{L_SELECT}</a>&nbsp;]<!-- ENDIF --></td>


Вставить после найденного

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

      <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><td class="posts"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_ML_SHOW_RATING and STYLE_ML_SHOW_RATING_DETAILED -->{memberrow.RATING} (+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE})<!-- ELSEIF STYLE_ML_SHOW_RATING_DETAILED -->+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE}<!-- ELSE --><span title="+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE}">{memberrow.RATING}</span><!-- ENDIF --><!-- ELSE -->{memberrow.RATING}<!-- ENDIF --></td><!-- ENDIF -->
      <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><td class="posts"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_ML_SHOW_RATED and STYLE_ML_SHOW_RATED_DETAILED -->{memberrow.RATED} (+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE})<!-- ELSEIF STYLE_ML_SHOW_RATED_DETAILED -->+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE}<!-- ELSE --><span title="+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE}">{memberrow.RATED}</span><!-- ENDIF --><!-- ELSE -->{memberrow.RATED}<!-- ENDIF --></td><!-- ENDIF -->


Найти

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

      <td colspan="<!-- IF S_VIEWONLINE -->5<!-- ELSE -->4<!-- ENDIF -->">{L_NO_MEMBERS}</td>


Заменить найденное на

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

      <td colspan="100">{L_NO_MEMBERS}</td>


Открыть styles/prosilver/template/memberlist_view.html
Найти

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

         <dt>{L_VISITED}:</dt> <dd>{VISITED}</dd>


Вставить после найденного

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

         <!-- IF (STYLE_P_SHOW_RATING or STYLE_P_SHOW_RATING_DETAILED) and S_RATING --><dt>{L_USER_RATING}:</dt> <dd><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_P_SHOW_RATING and STYLE_P_SHOW_RATING_DETAILED -->{RATING} (+{RATING_POSITIVE}/−{RATING_NEGATIVE})<!-- ELSEIF STYLE_P_SHOW_RATING_DETAILED -->+{RATING_POSITIVE}/−{RATING_NEGATIVE}<!-- ELSE --><span title="+{RATING_POSITIVE}/−{RATING_NEGATIVE}">{RATING}</span><!-- ENDIF --><!-- ELSE -->{RATING}<!-- ENDIF --></dd><!-- ENDIF -->
         <!-- IF (STYLE_P_SHOW_RATED or STYLE_P_SHOW_RATED_DETAILED) and S_RATING --><dt>{L_USER_RATED}:</dt> <dd><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_P_SHOW_RATED and STYLE_P_SHOW_RATED_DETAILED -->{RATED} (+{RATED_POSITIVE}/−{RATED_NEGATIVE})<!-- ELSEIF STYLE_P_SHOW_RATED_DETAILED -->+{RATED_POSITIVE}/−{RATED_NEGATIVE}<!-- ELSE --><span title="+{RATED_POSITIVE}/−{RATED_NEGATIVE}">{RATED}</span><!-- ENDIF --><!-- ELSE -->{RATED}<!-- ENDIF --></dd><!-- ENDIF -->


Открыть styles/prosilver/template/overall_header.html
Найти



Вставить перед найденным

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

<!--[if lt IE 9]>
   <script src="{ROOT_PATH}assets/js/jquery-ie8.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
   <script src="{ROOT_PATH}assets/js/jquery.js"></script>
<!--<![endif]-->


Открыть styles/prosilver/template/ucp_pm_viewmessage.html
Найти

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

      <!-- IF AUTHOR_FROM --><dd><strong>{L_LOCATION}:</strong> {AUTHOR_FROM}</dd><!-- ENDIF -->


Вставить после найденного

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

      <!-- IF S_RATE_ENABLED and (STYLE_MP_SHOW_RATING or STYLE_MP_SHOW_RATING_DETAILED) --><dd><strong>{L_USER_RATING}:</strong> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATING and STYLE_MP_SHOW_RATING_DETAILED -->{AUTHOR_RATING} (+{AUTHOR_RATING_POSITIVE}/−{AUTHOR_RATING_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATING_DETAILED -->+{AUTHOR_RATING_POSITIVE}/−{AUTHOR_RATING_NEGATIVE}<!-- ELSE --><span title="+{AUTHOR_RATING_POSITIVE}/−{AUTHOR_RATING_NEGATIVE}">{AUTHOR_RATING}</span><!-- ENDIF --><!-- ELSE -->{AUTHOR_RATING}<!-- ENDIF --></dd><!-- ENDIF -->
      <!-- IF S_RATE_ENABLED and (STYLE_MP_SHOW_RATED or STYLE_MP_SHOW_RATED_DETAILED) --><dd><strong>{L_USER_RATED}:</strong> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATED and STYLE_MP_SHOW_RATED_DETAILED -->{AUTHOR_RATED} (+{AUTHOR_RATED_POSITIVE}/−{AUTHOR_RATED_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATED_DETAILED -->+{AUTHOR_RATED_POSITIVE}/−{AUTHOR_RATED_NEGATIVE}<!-- ELSE --><span title="+{AUTHOR_RATED_POSITIVE}/−{AUTHOR_RATED_NEGATIVE}">{AUTHOR_RATED}</span><!-- ENDIF --><!-- ELSE -->{AUTHOR_RATED}<!-- ENDIF --></dd><!-- ENDIF -->


Открыть styles/prosilver/template/viewtopic_body.html
Найти

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

<!-- BEGIN postrow -->


Вставить перед найденным

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

<!-- IF S_RATE_ENABLED -->
<script type="text/javascript">
jQuery(function($)
{
   $('li.rate-box').on('click', '.rate-minus, .rate-plus', function()
   {
      var action = $(this).hasClass('rate-minus') ? 'minus' : 'plus';
      var post_id = $(this).parents('.post').data('id');
      var $box = $(this).parents('.rate-box');
      $('.rate-value', $box).wrapInner('<span class="inline-preloader"></span>');
      $.getJSON('ajax.php', {'module': 'rating', 'action': action, 'post_id': post_id, 'token': '{AJAX_TOKEN}'})
      .done(function(data)
      {
         if (data.status != 'ok') return;
         var html = '';
         html += '<span class="rate-';
         html += (data.user_rate < 0) ? 'minus-voted' : (data.user_can_minus ? 'minus' : 'no-minus');
         html += '"></span><span class="rate-value rate-';
         html += (data.post_rating > 0) ? 'positive' : ((data.post_rating < 0) ? 'negative' : 'zero');
         html += '" title="+' + data.post_rating_positive + ' −' + data.post_rating_negative + '">';
         html += (data.post_rating_positive != 0 || data.post_rating_negative != 0) ? data.post_rating : '−';
         html += '</span><span class="rate-';
         html += (data.user_rate > 0) ? 'plus-voted' : (data.user_can_plus ? 'plus' : 'no-plus');
         html += '"></span>';
         $box.html(html);
      })
      .fail(function()
      {
         $('.rate-value', $box).text($('.rate-value span', $box).text());
      });
   });
});
</script>
<!-- ENDIF -->


Найти

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

   <div id="p{postrow.POST_ID}" class="post <!-- IF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF --><!-- IF postrow.S_UNREAD_POST --> unreadpost<!-- ENDIF --><!-- IF postrow.S_POST_REPORTED --> reported<!-- ENDIF --><!-- IF postrow.S_ONLINE and not postrow.S_IGNORE_POST --> online<!-- ENDIF -->">


После части строки

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

id="p{postrow.POST_ID}"


Вставить

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

 data-id="{postrow.POST_ID}"


Найти

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

         <!-- IF postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE -->


После части строки

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

 or postrow.U_QUOTE


Вставить

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

 or postrow.POST_RATING_SHOW


Найти

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

               <!-- IF postrow.U_QUOTE --><li class="quote-icon"><a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>{L_REPLY_WITH_QUOTE}</span></a></li><!-- ENDIF -->


Вставить после найденного

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

               <!-- IF postrow.POST_RATING_SHOW --><li class="rate-box"><span class="rate-<!-- IF postrow.USER_RATE < 0 -->minus-voted<!-- ELSEIF postrow.USER_CAN_MINUS -->minus<!-- ELSE -->no-minus<!-- ENDIF -->"></span><span class="rate-value rate-<!-- IF postrow.POST_RATING > 0 -->positive<!-- ELSEIF postrow.POST_RATING < 0 -->negative<!-- ELSE -->zero<!-- ENDIF -->"<!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --> title="+{postrow.POST_RATING_POSITIVE}/−{postrow.POST_RATING_NEGATIVE}"<!-- ENDIF -->><!-- IF postrow.POST_RATING_NEGATIVE != 0 or postrow.POST_RATING_POSITIVE != 0 -->{postrow.POST_RATING}<!-- ELSE -->−<!-- ENDIF --></span><span class="rate-<!-- IF postrow.USER_RATE > 0 -->plus-voted<!-- ELSEIF postrow.USER_CAN_PLUS -->plus<!-- ELSE -->no-plus<!-- ENDIF -->"></span></li><!-- ENDIF -->


Найти

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

      <!-- IF postrow.POSTER_FROM --><dd><strong>{L_LOCATION}:</strong> {postrow.POSTER_FROM}</dd><!-- ENDIF -->


Вставить после найденного

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

      <!-- IF (STYLE_MP_SHOW_RATING or STYLE_MP_SHOW_RATING_DETAILED) and postrow.S_POSTER_RATING --><dd><strong>{L_USER_RATING}:</strong> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATING and STYLE_MP_SHOW_RATING_DETAILED -->{postrow.POSTER_RATING} (+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATING_DETAILED -->+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE}<!-- ELSE --><span title="+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE}">{postrow.POSTER_RATING}</span><!-- ENDIF --><!-- ELSE -->{postrow.POSTER_RATING}<!-- ENDIF --></dd><!-- ENDIF -->
      <!-- IF (STYLE_MP_SHOW_RATED or STYLE_MP_SHOW_RATED_DETAILED) and postrow.S_POSTER_RATING --><dd><strong>{L_USER_RATED}:</strong> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATED and STYLE_MP_SHOW_RATED_DETAILED -->{postrow.POSTER_RATED} (+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATED_DETAILED -->+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE}<!-- ELSE --><span title="+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE}">{postrow.POSTER_RATED}</span><!-- ENDIF --><!-- ELSE -->{postrow.POSTER_RATED}<!-- ENDIF --></dd><!-- ENDIF -->


Открыть styles/prosilver/theme/stylesheet.css
Найти

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

@import url("colours.css");


Вставить после найденного

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

@import url("rating.css");

правки стиля. subsilver2
Открыть styles/subsilver2/template/memberlist_body.html
Найти

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

<th nowrap="nowrap" width="25%" align="{S_CONTENT_FLOW_BEGIN}"><a href="{U_SORT_USERNAME}">{L_USERNAME}</a></th>


Часть строки

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

width="25%"


Заменить на

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

width="15%"


Найти

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

   <th nowrap="nowrap" width="15%"><a href="{U_SORT_JOINED}">{L_JOINED}</a></th>


Вставить после найденного

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

   <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><th nowrap="nowrap" width="10%"><a href="{U_SORT_RATING}">{L_USER_RATING}</a></th><!-- ENDIF -->
   <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><th nowrap="nowrap" width="10%"><a href="{U_SORT_RATED}">{L_USER_RATED}</a></th><!-- ENDIF -->


Найти

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

            <td colspan="8"><b class="gensmall">{L_GROUP_LEADER}</b></td>


Часть строки

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

colspan="8"


Заменить на

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

colspan="10"


Найти

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

            <td colspan="8"><b class="gensmall">{L_GROUP_MEMBERS}</b></td>


Часть строки

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

colspan="8"


Заменить на

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

colspan="10"


Найти

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

      <td class="gen" align="center">{memberrow.POSTS}</td>


Вставить перед найденным

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

      <!-- IF (STYLE_ML_SHOW_RATING or STYLE_ML_SHOW_RATING_DETAILED) and U_SORT_RATING --><td class="gen" align="center"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_ML_SHOW_RATING and STYLE_ML_SHOW_RATING_DETAILED -->{memberrow.RATING} (+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE})<!-- ELSEIF STYLE_ML_SHOW_RATING_DETAILED -->+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE}<!-- ELSE --><span title="+{memberrow.RATING_POSITIVE}/−{memberrow.RATING_NEGATIVE}">{memberrow.RATING}</span><!-- ENDIF --><!-- ELSE -->{memberrow.RATING}<!-- ENDIF --></td><!-- ENDIF -->
      <!-- IF (STYLE_ML_SHOW_RATED or STYLE_ML_SHOW_RATED_DETAILED) and U_SORT_RATED --><td class="gen" align="center"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_ML_SHOW_RATED and STYLE_ML_SHOW_RATED_DETAILED -->{memberrow.RATED} (+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE})<!-- ELSEIF STYLE_ML_SHOW_RATED_DETAILED -->+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE}<!-- ELSE --><span title="+{memberrow.RATED_POSITIVE}/−{memberrow.RATED_NEGATIVE}">{memberrow.RATED}</span><!-- ENDIF --><!-- ELSE -->{memberrow.RATED}<!-- ENDIF --></td><!-- ENDIF -->


Найти

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

      <td class="row1" colspan="<!-- IF S_IN_SEARCH_POPUP -->9<!-- ELSE -->8<!-- ENDIF -->" align="center">


Часть строки

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

<!-- IF S_IN_SEARCH_POPUP -->9<!-- ELSE -->8<!-- ENDIF -->


Заменить на

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

<!-- IF S_IN_SEARCH_POPUP -->11<!-- ELSE -->10<!-- ENDIF -->


Найти

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

   <td class="cat" colspan="<!-- IF S_IN_SEARCH_POPUP -->9<!-- ELSE -->8<!-- ENDIF -->" align="center"><!-- IF S_IN_SEARCH_POPUP and not S_SELECT_SINGLE --><input class="btnlite" type="submit" value="{L_SELECT_MARKED}" /><!-- ELSE --><span class="gensmall">{L_SELECT_SORT_METHOD}:</span>&nbsp;<select name="sk">{S_MODE_SELECT}</select>&nbsp; <span class="gensmall">{L_ORDER}</span>&nbsp;<select name="sd">{S_ORDER_SELECT}</select>&nbsp; <input type="submit" name="submit" value="{L_SUBMIT}" class="btnlite" /><!-- ENDIF --></td>


Часть строки

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

<!-- IF S_IN_SEARCH_POPUP -->9<!-- ELSE -->8<!-- ENDIF -->


Заменить на

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

<!-- IF S_IN_SEARCH_POPUP -->11<!-- ELSE -->10<!-- ENDIF -->


Открыть styles/subsilver2/template/memberlist_view.html
Найти

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

         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">{L_VISITED}: </td>
            <td width="100%"><b class="gen">{VISITED}</b></td>
         </tr>


Вставить после найденного

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

         <!-- IF (STYLE_P_SHOW_RATING or STYLE_P_SHOW_RATING_DETAILED) and S_RATING -->
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">{L_USER_RATING}: </td>
            <td width="100%"><b class="gen"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_P_SHOW_RATING and STYLE_P_SHOW_RATING_DETAILED -->{RATING} (+{RATING_POSITIVE}/-{RATING_NEGATIVE})<!-- ELSEIF STYLE_P_SHOW_RATING_DETAILED -->+{RATING_POSITIVE}/-{RATING_NEGATIVE}<!-- ELSE --><span title="+{RATING_POSITIVE}/-{RATING_NEGATIVE}">{RATING}</span><!-- ENDIF --><!-- ELSE -->{RATING}<!-- ENDIF --></b></td>
         </tr>
         <!-- ENDIF -->
         <!-- IF (STYLE_P_SHOW_RATED or STYLE_P_SHOW_RATED_DETAILED) and S_RATING -->
         <tr>
            <td class="gen" align="{S_CONTENT_FLOW_END}" nowrap="nowrap">{L_USER_RATED}: </td>
            <td width="100%"><b class="gen"><!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_P_SHOW_RATED and STYLE_P_SHOW_RATED_DETAILED -->{RATED} (+{RATED_POSITIVE}/-{RATED_NEGATIVE})<!-- ELSEIF STYLE_P_SHOW_RATED_DETAILED -->+{RATED_POSITIVE}/-{RATED_NEGATIVE}<!-- ELSE --><span title="+{RATED_POSITIVE}/-{RATED_NEGATIVE}">{RATED}</span><!-- ENDIF --><!-- ELSE -->{RATED}<!-- ENDIF --></b></td>
         </tr>
         <!-- ENDIF -->


Открыть styles/subsilver2/template/overall_header.html
Найти



Вставить перед найденным

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

<!--[if lt IE 9]>
   <script src="{ROOT_PATH}assets/js/jquery-ie8.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
   <script src="{ROOT_PATH}assets/js/jquery.js"></script>
<!--<![endif]-->


Открыть styles/subsilver2/template/viewtopic_body.html
Найти

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

<!-- BEGIN postrow -->
   <table class="tablebg" width="100%" cellspacing="1">


Заменить найдённое на

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

<!-- IF S_RATE_ENABLED -->
<script type="text/javascript">
jQuery(function($)
{
   $('div.rate-box').on('click', '.rate-minus, .rate-plus', function()
   {
      var action = $(this).hasClass('rate-minus') ? 'minus' : 'plus';
      var post_id = $(this).parents('.tablebg').data('id');
      var $box = $(this).parents('.rate-box');
      $('.rate-value', $box).wrapInner('<span class="inline-preloader"></span>');
      $.getJSON('ajax.php', {'module': 'rating', 'action': action, 'post_id': post_id, 'token': '{AJAX_TOKEN}'})
      .done(function(data)
      {
         if (data.status != 'ok') return;
         var html = '';
         html += '<span class="rate-';
         html += (data.user_rate < 0) ? 'minus-voted' : (data.user_can_minus ? 'minus' : 'no-minus');
         html += '"></span><span class="rate-value rate-';
         html += (data.post_rating > 0) ? 'positive' : ((data.post_rating < 0) ? 'negative' : 'zero');
         html += '" title="+' + data.post_rating_positive + ' −' + data.post_rating_negative + '">';
         html += (data.post_rating_positive != 0 || data.post_rating_negative != 0) ? data.post_rating : '−';
         html += '</span><span class="rate-';
         html += (data.user_rate > 0) ? 'plus-voted' : (data.user_can_plus ? 'plus' : 'no-plus');
         html += '"></span>';
         $box.html(html);
      })
      .fail(function()
      {
         $('.rate-value', $box).text($('.rate-value span', $box).text());
      });
   });
});
</script>
<!-- ENDIF -->

<!-- BEGIN postrow -->
   <table class="tablebg" data-id="{postrow.POST_ID}" width="100%" cellspacing="1">


Найти

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

               <td class="gensmall" width="100%"><div style="float: {S_CONTENT_FLOW_BEGIN};">&nbsp;<b>{L_POST_SUBJECT}:</b> <a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></div><div style="float: {S_CONTENT_FLOW_END};"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF --><b>{L_POSTED}:</b> {postrow.POST_DATE}&nbsp;</div></td>


После части строки

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

{postrow.POST_DATE}&nbsp;</div>


Добавить

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

<!-- IF postrow.POST_RATING_SHOW --><div class="rate-box" style="float: {S_CONTENT_FLOW_END};"><span class="rate-<!-- IF postrow.USER_RATE < 0 -->minus-voted<!-- ELSEIF postrow.USER_CAN_MINUS -->minus<!-- ELSE -->no-minus<!-- ENDIF -->"></span><span class="rate-value rate-<!-- IF postrow.POST_RATING > 0 -->positive<!-- ELSEIF postrow.POST_RATING < 0 -->negative<!-- ELSE -->zero<!-- ENDIF -->"<!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --> title="+{postrow.POST_RATING_POSITIVE}/−{postrow.POST_RATING_NEGATIVE}"<!-- ENDIF -->><!-- IF postrow.POST_RATING_NEGATIVE != 0 or postrow.POST_RATING_POSITIVE != 0 -->{postrow.POST_RATING}<!-- ELSE -->−<!-- ENDIF --></span><span class="rate-<!-- IF postrow.USER_RATE > 0 -->plus-voted<!-- ELSEIF postrow.USER_CAN_PLUS -->plus<!-- ELSE -->no-plus<!-- ENDIF -->"></span></div><!-- ENDIF -->


Найти

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

               <!-- IF postrow.POSTER_FROM --><br /><b>{L_LOCATION}:</b> {postrow.POSTER_FROM}<!-- ENDIF -->


Вставить после найденного

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

               <!-- IF (STYLE_MP_SHOW_RATING or STYLE_MP_SHOW_RATING_DETAILED) and postrow.S_POSTER_RATING --><br /><b>{L_USER_RATING}:</b> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATING and STYLE_MP_SHOW_RATING_DETAILED -->{postrow.POSTER_RATING} (+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATING_DETAILED -->+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE}<!-- ELSE --><span title="+{postrow.POSTER_RATING_POSITIVE}/−{postrow.POSTER_RATING_NEGATIVE}">{postrow.POSTER_RATING}</span><!-- ENDIF --><!-- ELSE -->{postrow.POSTER_RATING}<!-- ENDIF --><!-- ENDIF -->
               <!-- IF (STYLE_MP_SHOW_RATED or STYLE_MP_SHOW_RATED_DETAILED) and postrow.S_POSTER_RATING --><br /><b>{L_USER_RATED}:</b> <!-- IF not RATE_NO_POSITIVE and not RATE_NO_NEGATIVE --><!-- IF STYLE_MP_SHOW_RATED and STYLE_MP_SHOW_RATED_DETAILED -->{postrow.POSTER_RATED} (+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE})<!-- ELSEIF STYLE_MP_SHOW_RATED_DETAILED -->+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE}<!-- ELSE --><span title="+{postrow.POSTER_RATED_POSITIVE}/−{postrow.POSTER_RATED_NEGATIVE}">{postrow.POSTER_RATED}</span><!-- ENDIF --><!-- ELSE -->{postrow.POSTER_RATED}<!-- ENDIF --><!-- ENDIF -->


Открыть styles/subsilver2/theme/stylesheet.css
Найти

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

/* Layout


Вставить перед найденным

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

@import url("rating.css");


Завершение установки:

теперь необходимого запустить установочный файл.

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

http://ваш сайт/install_rate.php


После отработки удалите файл с сервера.

Очистите кэши шаблонов, темы и браузера.

Установите необходимые параметры работы в Администраторском разделе:
на вкладке Модули - работу самого мода,
на вкладка Права Пользователей и Групп - права выставления оценок. (Глобальные права - Права групп - Зарегистрированные пользователи - Разное - Может ставить оценку)

(где что - смотрите на сканах вверху страницы).

Всё. успехов в применении.


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Posts,Rating,phpbb.3.0,оценка сообщений,лайки
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ 1 сообщение ] 

Кто сейчас на сайте:

Всего посетителей: 0, из них зарегистрированных: 0, скрытых: 0 и гостей: 0 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

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

Часовой пояс: UTC + 2 часа



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете защищать свои темы паролем

Найти:
Перейти:  




cron

Текущее время: 28 мар 2024, 23:18

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид