Role v.0.5 - автороли, блоки ролей, аватары к ролям, визуальное выделение пользователей

В текущем обновление увы не все реализовано что планировалось, но даже то что готово думаю порадует владельцев плагина.


Новый функционал «Автороли»
— это функионал автоматического изменения роли пользователя в зависимости от набраного им рейтинга как в сторону увеличения так и в сторону его уменьшения).
Рейтинг при достижении/уменьшении порога которого будет меняться роль пользователю устанавливается в настройках роли. Также предусмотрена вожножность исключить пользователей из автоматического изменения ролей — настройка находится в конфиге.
По смыслу этот функционал схож с функционалом плагина «Уровни», но в виду того что с автором его так и не удалось посотрудничать в направлении интеграции — пришлось пилить самостоятельно.

Новый функционал «Аватары ролей»
— добавлена возможность загружать аватар для каждой роли. Насторйки размеров ресайзов для аватаров хрянятся в конфиге. Используются по умолчанию — в «блоках ролей», в кнопках выбора ролей при регистрации. Так же можно использовать в шаблонах небольшой код (о коде — ниже по тексту) для вывода аватара рядом с логином пользователя.

Новый функционал «Блок роли»
— теперь пользователей каждой роли можно вывести в блок в сайдбар, и по мимо этого можно указать на какой странице, или страницах, будет этот блок выводиться.

Также сделаны багфиксы (к сожалению пока не все), и некоторые доработки в сторону совместимости со сторонними плагинами.

Теперь немного хаков которые можно использовать в шаблонах.
код для получения роли пользователя в шаблоне:
{if $oUser && $oUser->getRole()}
    {assign var="aUserRole" value=$oUser->getRole()}
{/if}

вывод названия роли
{$aUserRole.object->getTitle()}
вывод аватара роли
<img src="{$aUserRole.object->getAvatarPath(24)}" />

Теперь используем все вместе.
пример изменения цвета логина пользователя в прямом эфире:
открываем файл \templates\skin\new-jquery\block.stream_comment.tpl и после строчки
{assign var="oBlog" value=$oTopic->getBlog()}
добавляем
{if $oUser && $oUser->getRole()}
    {assign var="aUserRole" value=$oUser->getRole()}
{/if}
и добавляем атрибут тегу если есть роль у пользователя, строку
<a href="{$oUser->getUserWebPath()}" class="user">{$oUser->getLogin()}</a> &rarr
изменяем к следующему виду
<a href="{$oUser->getUserWebPath()}" class="user" {if $aUserRole and $aUserRole.object and $aUserRole.object->getId()==1}style="color:red"{/if}>{$oUser->getLogin()}</a> &rarr


и еще пример для вывода иконки роли наложеной на аватар в профиле пользователя:
в файле \templates\skin\new-jquery\actions\ActionProfile\whois.tpl строку
<div class="user-profile">
изменяем на
<div class="user-profile" style="position: relative">
и после нее добавляем
{if $oUserProfile && $oUserProfile->getRole()}
	{assign var="aUserRole" value=$oUserProfile->getRole()}
	{if $aUserRole and $aUserRole.object}
	    <img src="{$aUserRole.object->getAvatarPath(24)}" style="position: absolute; top: 2px; left: 2px;" />
	{/if}
    {/if}


на сегодня все.

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

avatar
Что такое Новость?
А Стена что такое?
Я правильно понимаю, что можно запретить юзерам стирать свои посты или добавлять комментарии (то есть, можно сократить права по умолчанию)?
avatar
стена — это плагин стены
новости — это плагин cck
avatar
Баг небольшой нашелся: если картинка, опубликованная на стене, маленькая, а описание хотя бы два слова, то по клику в прямом эфире вот что имеем видеть:

Объясните, Стена — это чат? Твиттер внутри сайта? А подгрузка новых сообщений в реальном времени есть? Или для чего это?
avatar
сори, но с этим багом к автору стены, на демо лишь показана интеграция
avatar
А кто-нибудь скажите, если знаете — эта Стена, которая заявлена как прям твиттер!, она ведь не обновляет в реальном времени микроблоги, для обновления надо жать F5? На этой демке — не обновляет. На демке самого плагина тоже. Но там вроде пишут, что это просто сервер не справляется, а не плагин; кроме того, если сравнивают с твиттером, то оно должно обновлять без перезагрузки страницы. Не хотелось бы 40 баксов заплатить, а потом понять, что тебя с твиттером-то, мягко говоря, надули.

Ну и чтобы два раза не вставать, скажу тоже: этот (Role) — классный плагин, удобный, всем советую.
avatar
Гениальный плагин, то что нужно! Огромное спасибо!
avatar
В «настроках», добавил юзера, не активировал. В списке нажимаю на «активировать» ничего не происходит. шаблон new-jquery, кэши все снес вроде.
avatar


конфликт с плагином неограниченное голосования админам. Минус не работает, отключил роле, все ок.
avatar
Нетланк, объясни идиоту…
Сделал я роль модера… дал права на удаление профилей.
объясни как юзер будет удалять людей?.. он же в админку не имеет доступа.
avatar
в настройках пользователя (модератора) вкладка «Люди»
avatar
О как… Шикарно!
avatar
баг с заменой темплейтов так и остался…


=(
avatar
ссылку на сайт в личку плис, и желательно доступ с правами админа
avatar
Опять-таки, конфликт; после установки нельзя проминусовать тему.
avatar
PHP Fatal error:  Call to a member function getId() on a non-object in /sitename/plugins/role/classes/modules/role/Role.class.php on line 216
avatar
url сайта и мыло покупки в личку плис
avatar
Исправление ошибки, когда нельзя поставить минус за топик. Спасибо моему другу Random'у :)


public function DeleteUserRole($oUserRole)
    {
// FIX - Random
        if (is_object($oUserRole)) {
                if ($this->oMapper->DeleteUserRole($oUserRole->getId()))
                        return true;
        } else if ($this->oMapper->DeleteUserRole($oUserRole)) {
            return true;
        }
        return false;
    }
avatar
спс, добавлю фикс в релиз
avatar
Могу предложить небольшой хак шаблона, позволяющий править/удалять комментарии только если:
— это коммент автора;
— юзер — создатель/админ/модер блога, в котором висит тред, в котором комментарий.
avatar
все предложения в трек плис.
но всеравно будут расматриваться не ранее 15 июня
avatar
Немножко пошаманил. Вынес омск из плагина в надлежащее ему место, то есть в ACL, и, соответственно, подправил хуки. Всё равно конфликт с механизмом кеширования variables в xCache. Вот же ж… ну как конфликт. Отдаются старые данные, да. gs() и var_ttl для xCache и так выставлены в 10 секунд. Сервер сказал okay.jpg, но выдержал.
P.S. И всё же чуток обидно — столько пропало возможностей для ускорения из-за этой доработки.
avatar
Кажется, понял, в чём дело. Права доступа берутся из user_is_administrator user_is_moderator из $oBlog. И именно их xCache очень агрессивно кеширует.
Ещё один выход — если позволят мощности, разбить количество слотов хранилища данных на большое, порядка 16, то есть:
xcache.var_count = 16
avatar
Нет. При тестировании на реально нагруженном сайте в топике с 2000+ комментариями и активным общением с «лесенками» обнаружен-таки Ёpic Fail.
Откат на unmodified, эх…
avatar
а при отключении возможности редактирования?
avatar
Так сервер держит и треды в 4000+ с 20-уровневыми лесенками.
avatar
Вот не вышло у меня допилить функционал под нужды, печаль. (Разграничение прав, да...)
avatar
Так, стоп. То же самое!
«Чистый» плагин, и всё те же баги. При любых комбинациях. ><
avatar
А вообще плагин классный, годный. Селестия одобряет.
Только вот баг превредный найден, который поломал БД. Суть такова, что при удалении пользователя этим плагином остается много зависимостей в БД, непочищенных, и поэтому темы/блоги/прочее, где светился удалённый пользователь — ломаются.
Выход простой: немного чаю, пошарить в MySQL запросами типа DELETE FROM `ls_comment` WHERE `user_id` NOT IN (SELECT `user_id` FROM `ls_user`)… но всё равно не очень-то и приятно.
… ладно. Автору сотни маффинов за труд, и ещё раз огромное спасибо.
Буду искать баги. Найду, напишу.
avatar
Совместная работа с плагинами:
aceadminpanel
admvote
birthdays
greeting
openid
page
role
showvotes
skinswitch
spoiler
usersearch

LS 0.5, полёт нормальный.
avatar
Купила плагин, помогите пожалуйста настроить вывод названия роли в профиле пользователя как тут: role.upbase.ru/profile/test1/ Никак не могу разобраться (((
avatar
Доброго. Почитайте выше в топике, после текста
Теперь немного хаков которые можно использовать в шаблонах.
достаточно добавить пару строчек в шаблон
avatar
Спасибо, иконку я вывела на аватарку, а вот с выводом надписи у меня ничего не получается :( Совершенно не разбираюсь в программинге, вот что я добавляла в whois.tpl — ничего не выводится, только синенький узкий прямоугольник…


{if $oUserProfile && $oUserProfile->getRole()}
        {assign var="aUserRole" value=$oUserProfile->getRole()}
        {if $aUserRole and $aUserRole.object}
         <span class="rule" style="padding: 2px 5px; text-align: center; background-color: #0066CC; color: #fff;">   {$aUserRole.object->getTitle()} </span>
        {/if}
    {/if}
avatar
По идее все правильно, смотреть нужно
avatar
Отправила ссылку на сайт в личку
avatar
Увы не в ближайшие дни. Пока не имею никакой возможности.
avatar
Пишу на всякий случай, вдруг кому сгодится, у меня заработало только когда я поставила:
{$aUserRole.object->getText()}
а с этим никак
{$aUserRole.object->getTitle()}
avatar
Еще работает
{$aUserRole.object->getName()}
как раз то что должно выводить getTitle
avatar
Может известно, но админпанель от авадима стоит+включаю роли, в сайдбаре получаю
Fatal error: Class 'PluginLightblue_ModuleComment_EntityComment' not found in /home/vhosts/themecafe.ru/httpdocs/engine/include/function.php(421) : eval()'d code on line 1
avatar
хотя это что то с моим плагином походу :) сначала пишу, потом читаю…
avatar
на админ сайте:
SQL Error: Table 'role.prefix_role_place_block' doesn't exist at /var/www/upbase/data/www/role.upbase.ru/plugins/role/classes/modules/role/mapper/Role.mapper.class.php line 410
Array ( [code] => 1146 [message] => Table 'role.prefix_role_place_block' doesn't exist [query] => SELECT r.*, prb.role_id FROM prefix_role_place_block prb LEFT JOIN prefix_role r ON prb.role_id = r.role_id WHERE '/' LIKE prb.place_url [context] => /var/www/upbase/data/www/role.upbase.ru/plugins/role/classes/modules/role/mapper/Role.mapper.class.php line 410 )
avatar
на демо пока нет обновлений
avatar
synio верстка глючит в режиме аватара — верхняя панель вся черная, на ней ничего не написано, и шапка частично наезжает на нее снизу.
avatar
#header-back мешает
avatar
вот как у меня выглядит в режиме аватара
и #header-back нет в верстке, это скорее всего чтото Ваше
avatar
это же synio, откуда там мое что то? :)у меня стоит последний двиг с гитхаба. ссылку кинул в личку с данными для доступа
avatar
в stable релизе его нет, а в github видимо появилос до того как плагин был отправлен на модерацию
avatar
Возможность бана все еще в разработке?
avatar
вывод аватара роли

Подскажите пожалуйста, а можно заменить стандартную аватарку на аватарку роли? Чтобы везде она отображалась по сайту вместо обычной аватарки, как это сделать?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.