Сообщения только админу

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

Буду благодарен за помощь как сделать так, чтобы пользователи могли писать письма только админу, а между собой переписку вести не могли?

Или здесь без плагина не обойтись?

16 комментариев

avatar
Где-то в каталоге есть плагин Feedback который добавляет форму обратной связи на сайт, тебе останется только отключить всем возможность писать сообщения, но это «костыль» да. Или тебе нужна двусторонняя связь?
avatar
Почему костыль-то? Нормальное решение.
avatar
Потому что нет двусторонней связи, админ не сможет ответить.
avatar
А конфиг придуман для чего? Ствим рейтинг 100 500 для того кто хочет писать и всё.
avatar
Да, мне нужна двусторонняя связь. Только админ-пользователь.
avatar
Тогда тебе надо всего лишь пошаманить с полем «кому» в функционале сообщений и ввести туда значение admin без возможности изменить его. Посмотри в каталоге расширений, там вроде есть система тикетов, но она скорее всего платная.
avatar
Тогда тебе надо всего лишь пошаманить с полем «кому» в функционале сообщений и ввести туда значение admin без возможности изменить его.
Спасибо за наводку. Возьму за основу реализации.
avatar
Я бы сделал так:
— В класс отправки ЛС добавить проверку: если пользователь отправляет не администратору -> false;
— В шаблоне оправки ЛС, если не администатор то в поле кому жестко прописан ник админа, нужный input -> disabled;
Короче работы меньше чем на час.
  • ff00
  • 0
avatar
Кому-то и меньше чем на час, а мне, не знающего программирования, на долго хватит :)
avatar
Ну так давай помогу, какая версия LS и что за шаблон?
avatar
Спасибо за помощь. Версия 1.03. Шаблон synio.
avatar
В файле:
classes/modules/talk/Talk.class.php
вставить после (71 строки) public function SendTalk($sTitle,$sText,$oUserFrom,$aUserTo,$bSendNotify=true,$bUseBlacklist=true) {
этот код:
#Запретить отправку ЛС обыкновенному пользователю не администратору
if(!$oUserFrom->isAdministrator() and !$aUserTo->isAdministrator()) return false;


В файле:
templates/skin/synio/actions/ActionTalk/add.tpl
найти:
<input type="text" class="input-text input-width-full autocomplete-users-sep" id="talk_users" name="talk_users" value="{$_aRequest.talk_users}" />

заменить на:
<input type="text" class="input-text input-width-full autocomplete-users-sep" id="talk_users" name="talk_users" value="{if $oUserCurrent->isAdministrator())}{$_aRequest.talk_users}{else}СЮДА_ВСТАВИТЬ_ЛОГИН_АДМИНИСТРАТОРА{/if}" {if !$oUserCurrent->isAdministrator())}disabled="disabled"{/if}/>


СЮДА_ВСТАВИТЬ_ЛОГИН_АДМИНИСТРАТОРА замеинть на логин админа

Не проверял!!! Установленного LS под рукой нету. С тебя лимонад.
avatar
немного подшаманил методом тыка.
<input type="text" class="input-text input-width-full autocomplete-users-sep" id="talk_users" name="talk_users" value="{if $oUserCurrent->isAdministrator()}{$_aRequest.talk_users}{else}admin{/if}" {if !$oUserCurrent->isAdministrator()}disabled="disabled"{/if} /></p>

заработало. но при отправке сообщения появляется ошибка:
Внимание: Необходимо указать, кому вы хотите отправить сообщение

хотя в поле стоит логин.
avatar
Ну так копни скрипт проверки заполненности полей.
avatar
Можно убрать:
{if !$oUserCurrent->isAdministrator()}disabled="disabled"{/if}

Но тогда ввод ников будет доступен, но можно еще просто скрыть ненужные поля:
<p{if !$oUserCurrent->isAdministrator()} style="display: none"{/if}><label for="talk_users">{$aLang.talk_create_users}:</label>
<input type="text" class="input-text input-width-full autocomplete-users-sep" id="talk_users" name="talk_users" value="{if $oUserCurrent->isAdministrator()}{$_aRequest.talk_users}{else}admin{/if}" /></p>
avatar
Спасибо! Работает. Теперь скрою поля. Вот лимонад ;)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.