Как запретить пользователям выбор иконки сообщений?

Автор federal24, 25 августа 2012, 16:16:16

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

federal24


karavan

Немного топорный способ пришел в голову, но вполне рабочий - удалить все иконки кроме стандартной из админки - смайлы и иконки - иконки сообщений. Тогда им выбирать будет не из чего )

federal24

Этот способ и мне пришел в голову :)
Но тогда я и сам не смогу изменить иконки...

teqwer

#3
Не стал создавать новую тему, ибо вопрос тот же: как запретить пользователям выбор иконки сообщений?
Создал свои иконки и хочу использовать эту фичу для выделения рекламных сообщений.
P.S.
Ага, сам разобрался! Может кому пригодиться, в файле: делаем правки в файле Post.template.php

// Выбор иконки сообщения доступен только админу.

if ($context['user']['is_admin']) {
echo '
<dt class="clear_left">
', $txt['message_icon'], ':
</dt>
<dd>
<select name="icon" id="icon" onchange="showimage()">';

// Loop through each message icon allowed, adding it to the drop down list.
foreach ($context['icons'] as $icon)
echo '
<option value="', $icon['value'], '"', $icon['value'] == $context['icon'] ? ' selected="selected"' : '', '>', $icon['name'], '</option>';

echo '
</select>
<img src="', $context['icon_url'], '" name="icons" hspace="15" alt="" />
</dd>
</dl><hr class="clear" />';
}
// Are you posting a calendar event?


teqwer

Осталось разобраться, как вставить эту функцию в файл Display.template.php, чтобы пользователь не мог сменить икону "на лету".

Не могу разобраться с синтаксисом, как правильно вставить $context['user']['is_admin'] для $message['can_modify'] и $message['id'], а то удалять эти переменные не хочется?

<div class="messageicon">
<img src="', $message['icon_url'] . '" alt=""', $message['can_modify'] ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />
</div>


Прошу вашей помощи, спасибо.

kak2z


<div class="messageicon">
<img src="', $message['icon_url'] . '" alt=""', $message['can_modify']&&$context['user']['is_admin'] ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />
</div>

попробуйте вот так)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

teqwer

Цитата: kak2z от 10 июня 2015, 08:17:21попробуйте вот так)
Благодарю! Вам плюс, это работает. А как добавить к этому выражению глобального модератора?

Yarik


teqwer

Цитата: Yarik от 10 июня 2015, 14:22:11
Попробуйте вместо admin - qmod
Пробовал, не работает! Перечитал эту тему, из всех вариантов:

$context['user']['is_gmod']
$context['user']['can_gmod']
$context['user']['is_global_mod']
$context['user']['gmod']

не один не работает.
Пробовал прописать на другом форуме, те же траблы из всех переменных работает только - $context['user']['is_admin']  wallbash

digger®

Глобальный модератор, в отличие от админа, это не фиксированное свойство, чтобы его проверять как 'is_gmod, а произвольная группа, которой вообще может не быть на форуме.
Посмотрите id группы и проверяйте, что этот id имеется в массиве групп пользователя.

kak2z

посмотрите ИД групп которые должны иметь доступ к иконкам...
и вот так вот проверяйте ИД группы
in_array(1, $user_info['groups'])
где 1 это ИД группы которая должна иметь доступ к иконкам)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

teqwer

попробовал так:

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify']&&in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />

не получается. Может ошибка в синтаксисе?

kak2z

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify'] || in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' /> 

не знаю где вы используете $user_info но вначале функции посмотрите эта переменная объявлена вначале как global//
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

teqwer

Вроде получилось, добавил $user_info в global

global $context, $settings, $options, $txt, $scripturl, $modSettings, $user_info;


Далее сделал так:

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify']&&in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />

как теперь в вышеприведенный код добавить еще одну группу с id - 1?

kak2z

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify'] || in_array(1, $user_info['groups']) || in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />
только надо ставить || а не &&
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

teqwer

Цитата: kak2z от 10 июня 2015, 20:41:47
только надо ставить || а не &&
Спасибо большое получилось, вопрос решен. Эхх...  буду изучать php без него никак  :-[

Yarik

Цитата: teqwer от 10 июня 2015, 20:30:42как теперь в вышеприведенный код добавить еще одну группу с id - 1?
Перечислить их через запятую

kak2z

Цитата: Yarik от 10 июня 2015, 21:06:08in_array(1, $user_info['groups'])
ошибку должно выдать если через запятую.. не проверял, но чуствую..
вот так тогда уже правильнее
in_array(array(1,2), $user_info['groups'])
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

teqwer

Все-таки при таком варианте функция не работала, и пользователь мог выбрать иконку "на лету":

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify'] || in_array(1, $user_info['groups']) || in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />

При таком варианте, с использованием операторов && и || все работает как положено:

<img src="', $message['icon_url'] . '" alt=""', $message['can_modify']&&in_array(1, $user_info['groups']) || in_array(2, $user_info['groups']) ? ' id="msg_icon_' . $message['id'] . '"' : '', ' />

Вопрос решен, спасибо за помощь!


federal24

Всего 3 года прошло O0 Как не странно, но до сих пор актуально))