Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
tasker

Добавление кнопки для предупреждения во всплывающий профиль и блок сообщения

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

Здравствуйте.

 

По просьбе пользователей сайта опубликую инструкцию по добавлению кнопки предупреждения пользователя во всплывающем профиле пользователя (шаблон showCard) и в блоке сообщения темы (шаблон post).

 

Итак, в шаблоне showCard надо найти код

<li><a href='{parse url="app=members&module=profile&section=friends&do=add&member_id={$member['member_id']}&secure_key={$this->member->form_hash}" base="public"}' title='{$this->lang->words['add_friend']}'>{parse replacement="add_friend"}/a></li>								
			</if>
		</if>

и после него вставить следующий код

<if test="$this->memberData['is_mod']">
		<li><a href='{parse url="app=members&module=profile&section=warnings&do=add&member={$member['member_id']}&from_app={$this->request['from_app']}&from_id1={$this->request['from_id1']}&from_id2={$this->request['from_id2']}" base="public"}' title='{$this->lang->words['warnings_add']}'>{parse replacement="t_announcement"}</a></li>
</if>

Это добавит кнопку для предупреждения пользователя из всплывающего мини-профиля. Кнопка будет отображаться только у админов.

post-54874-0-44769900-1375527269_thumb.jpg

 

В начало шаблона post надо вставить

<php>ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_profile' ), 'members' );</php>

А это код самой кнопки для предупреждения пользователя

<if test="$this->memberData['is_mod']">
		<li><a href='{parse url="app=members&module=profile&section=warnings&do=add&member={$post['author']['member_id']}&from_app={$this->request['from_app']}&from_id1={$this->request['from_id1']}&from_id2={$this->request['from_id2']}" base="public"}' title='{$this->lang->words['warnings_add']}' class='ipsButton_secondary'>{$this->lang->words['warnings_add']}</a></li>
</if>

вставьте его в нужном вам месте. Я вставил рядом с кнопкой для скрытия сообщения.

 

Это добавит кнопку для предупреждения пользователя из блока сообщения. Кнопка будет отображаться только у админов.

post-54874-0-58936100-1375527278_thumb.jpg

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

Кнопка будет отображаться только у админов.

А также у супермодераторов и модераторов форумов, исходя из условия

<if test="$this->memberData['is_mod']">

Что-то (условия) можете взять из этой темы http://ipbskins.ru/forum/topic7101.html

+

&from_app={$this->request['from_app']}&from_id1={$this->request['from_id1']}&from_id2={$this->request['from_id2']

значения параметров в 99% будут пустыми.

 

П.С. А почему ссылка сразу на форму выдачи предупреждений? Неудобно ведь. Один админ выдал пред, другой, перейдя по ссылке, не посмотрев историю, нажав на новую кнопку.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

А также у супермодераторов и модераторов форумов

 

Да. Так и задумывалось.

 

значения параметров в 99% будут пустыми.

 

Насколько понял, эти конкретные параметры особо на вынесение предупреждения не влияют. Позже ещё изучу код.

 

П.С. А почему ссылка сразу на форму выдачи предупреждений? Неудобно ведь. Один админ выдал пред, другой, перейдя по ссылке, не посмотрев историю, нажав на новую кнопку.

 

Такая была задача. Попросили сделать кнопку выдачи предупреждений. Сделал.

Поделиться сообщением


Ссылка на сообщение
from_app={$this->request['app']}
использовал, однако после вынесения предупреждения из форума в истории предупреждений не пишет где оно сделано. Надо изучать код вынесений и отображения предупреждений.

Поделиться сообщением


Ссылка на сообщение

from_app={$this->request['app']}

{$this->request['app']} можно заменить сразу на members раз это showCard

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Прикол в том, что при from_app=forums в описании вынесенного предупреждения не указывается где оно вынесено. Надо изучить код обработки параметра from_app и уж потом думать, что туда вставлять. В оригинальной кнопке было from_app=members и при просмотре предупреждения выводило, что оно вынесено в разделе "Профиль".

Поделиться сообщением


Ссылка на сообщение

Для forums требуется еще и ид поста (from_id1). Так что нет смысла его указывать в showCard

Для post можно, $this->request['from_id1'] поменять на ид поста и $this->request['from_app'] сразу захардкоть на forums

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

@siv1987, спасибо, что не заставил лезть в код. Для post сделал {$post['post']['pid']} работает отлично - в истории предупреждений видно где предупредили.

Поделиться сообщением


Ссылка на сообщение

Дальше поинтереснее задачи есть - расширить функционал списка "Кто в онлайне", улучшить инструменты модеров и админа по работе с IP пользователя. Скажем, если пользователь входил, но ничего при этом не писал, то стандартные инструменты не выводят IP использовавшийся для входа. Видимо, IP фиксируется только при регистрации и написании постов. Это не есть хорошо.

 

Ещё нужен хук для слежения за активностью пользователя. Не уверен, что IPB хранит все разделы и темы, которые посещал конкретный пользователь. А по куску лога web-сервера не установить какой это пользователь залогинился, чтобы по IP из лога выбоать его активность. Разве что по ID сессии что-то поковырять.

 

Буду изучать понемногу.

Поделиться сообщением


Ссылка на сообщение

Скажем, если пользователь входил, но ничего при этом не писал, то стандартные инструменты не выводят IP использовавшийся для входа. Видимо, IP фиксируется только при регистрации и написании постов. Это не есть хорошо.

В базе не предусмотрено хранения ip-адресов с каких пользователь зашел на форум. И смотря что считать входом - авторизацию, или создания новой сессии.

Поделиться сообщением


Ссылка на сообщение

В базе не предусмотрено хранения ip-адресов с каких пользователь зашел на форум.

 

Зачем тогда писать что-то типа "Этот IP использовался для входа" если на самом деле этот IP использовался для входа и написания сообщений?

 

И смотря что считать входом - авторизацию, или создания новой сессии.

 

Как и когда создаются и обновляются сессии мне ещё предстоит изучить. Время жизни сессии задаётся в настройках, значение её хранится в куках и в самом значении что-то зашифровано. Ну и в таблицах она по идее хранится. Сессии от PHP форум не использует, так понял.

 

Ладно, это уже для другого раздела.

Поделиться сообщением


Ссылка на сообщение

Зачем тогда писать что-то типа "Этот IP использовался для входа" если на самом деле этот IP использовался для входа и написания сообщений?

Ну логично же, что если написал пост значит этот айпи использовался и для входа.

 

Как и когда создаются и обновляются сессии мне ещё предстоит изучить.

Создается при первом заходе после 15 минут простаивания (или другое время указанное в настройках).

Обновляется каждый раз при обновлении страницы.

 

Сессии от PHP форум не использует, так понял.

Да, сессии хранятся в БД.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

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