Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

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

 

По просьбе пользователей сайта опубликую инструкцию по добавлению кнопки предупреждения пользователя во всплывающем профиле пользователя (шаблон 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

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

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

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

<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% будут пустыми.

 

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

  • Автор

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

 

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

 

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

 

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

 

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

 

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

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

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

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

  • Автор

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

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

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

  • Автор

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

  • Автор

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

 

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

 

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

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

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

  • Автор

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

 

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

 

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

 

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

 

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

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

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

 

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

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

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

 

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

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

  • 1 год спустя...

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.