Как?
Очистить все исправления наверно. Хотя может симпл идентична экстендид в некоторых файлах, я не ставил. Но чтобы не мучаться сам посмотри.
Чтобы меня не доставали выкладываю инструкцию тут.
Напоминаю, что для тех у кого мод стоял на 2.1.7 не надо делать пункты 1-3.
Будьте окуратны и смотрите где надо добавлять перед а где после.
В профиле репутацию я убрал. Тоесть она отображаеться но её нельзя изминять. Просто мне показалось это тупым, тем более что в 2.2.2 есть своя система оценки пользователей. По-этому репа должна даваться только в темах за конкретные посты как мод спасибо.
1) Выполнить SQL-запросы:
SQL
ALTER TABLE `ibf_members` ADD `reputation` INT NOT NULL ;
ALTER TABLE `ibf_members` ADD `rep_allow` TINYINT( 1 ) DEFAULT '1' NOT NULL ;
ALTER TABLE `ibf_members` ADD `rep_notify` TINYINT( 1 ) DEFAULT '1' NOT NULL ;
CREATE TABLE `ibf_reputation` (
`id` int(11) NOT NULL auto_increment,
`from_user` int(11) NOT NULL default '0',
`to_user` int(11) NOT NULL default '0',
`forum` int(11) NOT NULL default '0',
`topic` int(11) NOT NULL default '0',
`post` int(11) NOT NULL default '0',
`created` int(11) NOT NULL default '0',
`message` text NOT NULL,
`rating` int(11) NOT NULL default '0',
`anonym` TINYINT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ;
2) Импорт настроек:
ACP -> TOOLS & SETTINGS -> View All General Settings -> Import an XML settings file
Админцентр -> НАСТРОЙКИ -> Все основные настройки -> Импорт системных настроек (XML)
Загружаем XML с настройками (
reputation_system.xml). Теперь в системных настройках должны появится настройки Reputation System
3) Копирование файлов:
Скопировать папки из данного архива в директорию с форумом (корень форума)
Скопировать файл из архива lang_reputation.php во все папки существующие в cache/lang_cache/ (например: /cache/lang_cache/ru/)
4) Редактирование файлов:
./index.php
./sources/classes/class_session.php
./sources/sql/mysql_queries.php
./sources/action_public/topics.php
./sources/action_public/profile.php
./sources/action_public/usercp.php
./sources/lib/func_usercp.php
./sources/action_admin/member.php4.1) ./index.php
НАХОДИМ:
CODE
'component' => array( 'component' , 'component' , array() ),
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
'rep' => array( 'reputation' , 'reputation' , array() ),
4.2) ./sources/classes/class_session.php
НАХОДИМ (load_member):
CODE
id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track,
ДОБАВЛЯЕМ ПОСЛЕ (не потеряйте запятую! после rep_notify должна стоят запятая!!!):
CODE
rep_allow, rep_notify,
4.3) ./sources/sql/mysql_queries.php
НАХОДИМ 2 РАЗА (topics_get_posts, topics_get_posts_with_join):
(Не потеряйте запятую после 'm.members_display_name', где она есть!!)
CODE
me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
m.reputation,
4.4) ./sources/action_public/topics.php
НАХОДИМ:
CODE
//------
// Add it to the cached list
//------
$this->cached_members[ $row['author_id'] ] = $poster;
}
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
$poster['reputation_minus'] = str_replace("{PID}", $row['pid'], $poster['reputation_minus']);
$poster['reputation_add'] = str_replace("{PID}", $row['pid'], $poster['reputation_add']);
НАХОДИМ:
CODE
return $member;
ДОБАВЛЯЕМ ПЕРЕД:
CODE
if(strtolower($this->ipsclass->input['act']) == 'st' OR $this->ipsclass->input['act'] == 'rep')
{
$member['reputation_allow'] = true;
$member['reputation_text'] = $this->ipsclass->lang['reputation'];
if (($this->ipsclass->member['id'] != $member['id']) && ($this->ipsclass->member['posts'] >= $this->ipsclass->vars['rep_posts']) && $this->ipsclass->member['rep_allow'])
{
$member['reputation_minus'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_minus&mid={$member['id']}&p={PID}\");' title='{$this->ipsclass->lang['rep_dec']}'>{$this->ipsclass->lang['minus']}</a>";
$member['reputation_add'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_add&mid={$member['id']}&p={PID}\");' title='{$this->ipsclass->lang['rep_inc']}'>{$this->ipsclass->lang['plus']}</a>";
}
else
{
$member['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
$member['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
}
$member['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";
}
4.5) ./sources/action_public/profile.php
НАХОДИМ:
CODE
//------
// PHOTO
//------
ДОБАВЛЯЕМ ПЕРЕД:
CODE
//------
// Reputation
//-----
$member['reputation_t'] = $this->ipsclass->lang['reputation'];
if (($this->ipsclass->member['id'] != $member['id']) && ($this->ipsclass->member['posts'] >= $this->ipsclass->vars['rep_posts']))
{
$member['reputation_m'] = "<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>";
$member['reputation_a'] = "<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
{
$member['reputation_m'] = "{$this->ipsclass->lang['minus_disabled']}";
$member['reputation_a'] = "{$this->ipsclass->lang['plus_disabled']}";
}
$member['reputation_s'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";
4.6) ./sources/action_public/usercp.php
НАХОДИМ:
CODE
if ( $open_qreply == FALSE )
{
$open_qreply = 0;
}
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
$rep_notify = $this->ipsclass->member['rep_notify'];
НАХОДИМ:
CODE
$html_qr = "<select name='OPEN_QR' class='forminput'>";
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
$html_rep_notify = "<select name='REP_NOTIFY' class='forminput'>";
НАХОДИМ:
CODE
$html_qr .= $open_qreply == 1 ? "<option value='1' selected='selected'>".$this->ipsclass->lang['yes']."</option>\n<option value='0'>".$this->ipsclass->lang['no']."</option>"
: "<option value='1'>".$this->ipsclass->lang['yes']."</option>\n<option value='0' selected='selected'>".$this->ipsclass->lang['no']."</option>";
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
$html_rep_notify .= $rep_notify == 1 ? "<option value='1' selected='selected'>".$this->ipsclass->lang['yes']."</option>\n<option value='0'>".$this->ipsclass->lang['no']."</option>"
: "<option value='1'>".$this->ipsclass->lang['yes']."</option>\n<option value='0' selected='selected'>".$this->ipsclass->lang['no']."</option>";
НАХОДИМ:
CODE
'QR' => $html_qr."</select>",
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
'REP_NOTIFY' => $html_rep_notify."</select>",
4.7) ./sources/lib/func_usercp.php
НАХОДИМ:
CODE
'view_prefs' => $this->ipsclass->input['postpage']."&".$this->ipsclass->input['topicpage'],
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
'rep_notify' => intval($this->ipsclass->input['REP_NOTIFY']),
4.8) ./sources/action_admin/member.php
НАХОДИМ:
CODE
$form['website'] = $this->ipsclass->adskin->form_input( "website" , $mem['website'] );
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
$form['reputation'] = $this->ipsclass->adskin->form_input("reputation", $mem['reputation']);
$form['rep_allow'] = $this->ipsclass->adskin->form_yes_no("rep_allow", $mem['rep_allow'] );
НАХОДИМ:
CODE
'mgroup_others' => $_POST['mgroup_others'] ? ','.implode( ",", $_POST['mgroup_others'] ).',' : '',
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
'reputation' => $this->ipsclass->input['reputation'],
'rep_allow' => $this->ipsclass->input['rep_allow'],
4.9) ./skin_acp/IPB2_Standard/acp_skin_html/cp_skin_member.php
НАХОДИМ:
CODE
<br />
<fieldset class='formmain-fieldset'>
<legend><strong>Другая информация</strong></legend>
ДОБАВЛЯЕМ ПЕРЕД:
CODE
<br>
<fieldset class='formmain-fieldset'>
<legend><strong>Настройки репутации</strong></legend>
<table cellpadding='0' cellspacing='0' border='0' width='100%'>
<tr>
<td width='40%' class='tablerow1'><strong>Репутация пользователя</strong></td>
<td width='60%' class='tablerow2'>{$form['reputation']}</td>
</tr>
<tr>
<td width='40%' class='tablerow1'><strong>Может изменять репутацию других пользователей?</strong></td>
<td width='60%' class='tablerow2'>{$form['rep_allow']}</td>
</tr>
</table>
</fieldset>
5) Редактирование скинов
Admin CP -> LOOK & FEEL -> * -> Edit Template HTML
(Админцентр -> ВНЕШНИЙ ВИД -> * -> Изменить HTML фрагменты)
5.1) skin_profile (Просмотр профиля) / show_profile
НАХОДИМ:
CODE
<!--{WARN_LEVEL}-->
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
<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']}<b>{$info['reputation_scores']}</b> {$info['reputation_text_2']}
5.2) skin_topic (Просмотр темы) / topic_page_top
НАХОДИМ:
CODE
<script type="text/javascript" src="jscripts/ipb_topic.js"></script>
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
<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>
5.3) skin_topic (Просмотр темы) / RenderRow
НАХОДИМ:
CODE
{$author['warn_text']} {$author['warn_minus']}{$author['warn_img']}{$author['warn_add']}
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
<if="$author['reputation_allow'] == "true"">
<br/> <br/>{$author['reputation_text']}{$author['reputation_minus']} <b>{$author['reputation_scores']}</b> {$author['reputation_add']}
</if>
5.4) skin_ucp (Личные данные пользователя) / settings_end
НАХОДИМ:
CODE
<if="$this->ipsclass->vars['posting_allow_rte'] == 1">
<tr>
<td>{$this->ipsclass->lang['type_of_editor']}<div class='desc'>{$this->ipsclass->lang['rte_text']}</div></td>
<td>{$data['editor']}</td>
</tr>
</if>
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
<tr>
<td class="formsubtitle" colspan="2">{$this->ipsclass->lang['rep_settings']}</td>
</tr>
<tr>
<td>{$this->ipsclass->lang['rep_notify']}</td>
<td align='left'>{$data[REP_NOTIFY]}</td>
</tr>
5.5) skin_profile/personal_portal_main
НАХОДИМ:
CODE
<p>{$member['_member_rank_img']}</p>
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
<!-- REP -->
<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>
<b>{$member['reputation_t']}</b> <b>{$member['reputation_s']}</b> {$this->ipsclass->lang['reputation_2']}
<!-- / REP -->
5.6) skin_global (Основные HTML фрагменты) / global_board_header
НАХОДИМ:
CODE
<div class='ipb-top-right-link'><a href="{$this->ipsclass->base_url}act=Members">{ipb.lang['tb_mlist']}</a></div>
ДОБАВЛЯЕМ ПОСЛЕ (или перед. Как хотите.):
CODE
<div class='ipb-top-right-link'><a href="{$this->ipsclass->base_url}act=rep&type=rating">Репутация</a></div>
5.7) Делаем ребилд кэша для каждого скина:
Админцентр -> ВНЕШНИЙ ВИД -> Утилиты для стилей -> Перестройка кэш файлов -> Перестроить все кэш файлы
ACP -> LOOK & FEEL -> Skin Tools -> Rebuild Skin Set Cache -> Rebuild All
6) Редактирование языков:
./cache/lang_cache/*/lang_topic.php
./cache/lang_cache/*/lang_profile.php
./cache/lang_cache/*/lang_ucp.php
6.1) ./cache/lang_cache/*/lang_topic.php
./cache/lang_cache/*/lang_profile.php
НАХОДИМ:
CODE
$lang = array (
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
//Simple Reputation System
'reputation' => "Репутация: ",
'reputation_2' => "(змінювати репутацію можна тільки у темах)",
'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' => "Изменение репутации",
6.2) ./cache/lang_cache/*/lang_ucp.php
НАХОДИМ:
CODE
$lang = array (
ДОБАВЛЯЕМ ПОСЛЕ:
CODE
'rep_settings' => "Настройки репутации",
'rep_notify' => "Уведомлять через личные сообщения об изменениях в репутации?",