Иконка ресурса

[itslegend] Thread Moderator 0.9.1

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

Пример:
У пользователя test стоят такие права (приложен скриншот), а он может удалять физическим сообщения пользователя "лив" (так же приложен скрин).
Такая же проблема
Галочка вообще ни на что не влияет
Проверил на чистом тестовом,тоже самое поведение
 
Последнее редактирование:
Во вложении МОД, исправляющий глюк с hard_delete.
Так же немного исправлена модификация шаблона message_macros, т.к. с моим самописным стилем форум превратился в непойми что. На дефолте тоже работает исправно.
Alex Fair, если в будущем будете обновлять аддон, то функция на проверку возможности удаления, я привел к такому:
PHP:
    public function canDelete($type = 'soft', &$error = null)
    {
        $flag = parent::canDelete($type, $error);

        $visitor = \XF::visitor();
        $thread = $this->Thread;

        if (
            !$visitor->user_id || !$thread
            || !$thread->discussion_open
            || $this->isFirstPost()
        )
        {
            return $flag;
        }

        if (!$flag && $this->canThreadModeratorDoIt(
            $thread,
            function(\itslegend\ThreadModerator\Entity\ThreadModerator $threadModerator) use ($type) {
                return $threadModerator->hasPermission('delete_posts');
            },
            $error)
        )
        {
        if(!$flag && $this->canThreadModeratorDoIt(
            $thread,
            function(\itslegend\ThreadModerator\Entity\ThreadModerator $threadModerator) use ($type) {
                return ($type == 'hard' && !$threadModerator->hasPermission('hard_delete'));
            },
            $error)){return false;}
            return true;
        }

        return $flag;
    }
Установка:
Перезалить файлы, сделать ребилд плагина
 

Вложения

  • itslegend-ThreadModerator-0.9.1 Release Candidate 1.zip
    24.7 KB · Просмотры: 12
ZloyDed, а можно как то сделать под этот плагин банер пользователя куратор темы? а то на знаешь куратором, пропадают все банеры а у него остается просто текст. помогите если не трудно
 
ZloyDed, а можно как то сделать под этот плагин банер пользователя куратор темы? а то на знаешь куратором, пропадают все банеры а у него остается просто текст. помогите если не трудно
extra.less

Код:
.itsleg_tm-threadModerator {
    border: blue;
    background-color: blue;
    color: white;
    padding: 2px 15px;
    margin-top: 2px;
}
 
It Works, спасибо большое большой + сик в карму😇

It Works, а поможешь дальше разобраться? как совместить банеры сайта (админ, модер) с данным плагином?
 
Последнее редактирование модератором:
It Works, а поможешь дальше разобраться? как совместить банеры сайта (админ, модер) с данным плагином?
Удали ранее предложенный тебе выше код и используй одно из моих решений ниже:

  1. Включаем режим разработчика, добавив строку $config['development']['enabled'] = true; в конфиг по адресу корень/src/config.php.
  2. Переходим в раздел с модификациями шаблонов в админке форума: Внешний вид -> Модификации шаблонов -> [itslegend] Thread Moderator -> message_macros.
  3. В поле найти вместо существующей строки замены вставляем следующее:
    HTML:
    /(<div class="message-userDetails">.*?)(<xf:usertitle.*?\/>)(\s*<xf:userbanners.*?\/>.*?)<\/div>/si
  4. В поле заменить вместо указанного кода вставляем следующее:
    HTML:
    $1
    $2
    <xf:if is="$__globals.isUserThreadModerator">
        <div class="userBanner userBanner userBanner--primary message-userBanner itsleg_tm-threadModerator">
            <span class="userBanner-before"></span>
            <strong>{{ phrase('itsleg_tm_thread_moderator_user_mark') }}</strong>
            <span class="userBanner-after"></span>
        </div>
    </xf:if>
    $3
    </div>
  5. Сохраняем модификацию и отключаем режим разработчика, изменив значение массива из пункта 1 с true на false.
  1. Включаем режим разработчика, добавив строку $config['development']['enabled'] = true; в конфиг по адресу корень/src/config.php.
  2. Переходим в раздел с модификациями шаблонов в админке форума: Внешний вид -> Модификации шаблонов -> [itslegend] Thread Moderator -> message_macros.
  3. В поле заменить вместо указанного кода вставляем следующее:
    HTML:
    $1
    <xf:if is="$__globals.isUserThreadModerator">
        <h5 class="message-userTitle itsleg_tm-threadModerator">
            {{ phrase('itsleg_tm_thread_moderator_user_mark') }}
        </h5>
    </xf:if>
    $2
    </div>
  4. Сохраняем модификацию и отключаем режим разработчика, изменив значение массива из пункта 1 с true на false.
 
Stealth, спасибо)) и тебе +сик в карму :)
 
Дело в том что я писал ему, но сказал он что занят и нету времени
 
В плагине есть еще проблема. Он конфликтует с теми плагинами, которые тоже делают какие-нибудь правки/дополнения с темами.
Например с этим: Signature Once или с этим: SK Mark Thread as Read
Проблема в шаблоне thread_itsleg_tm_thread_moderators. Там зачем-то непонятный перебор массивов включен, который ни на что не влияет.
Решается просто:
Модификатор шаблона, простая замена.
Найти
HTML:
                                <xf:foreach loop="$thread.getPermissionsMap()" value="$_" key="$name">
                                    <xf:option name="permission[{$thread_moderator.user_id}][{$name}]"
                                           selected="{$thread_moderator.permissions_list.{$name}}"
                                           data-xf-init="tooltip"
                                           title="{{ phrase('itsleg_tm_permission_edit_{$name}_explain') }}"
                                           label="{{ phrase('itsleg_tm_permission_edit_{$name}_label') }}" />
                                </xf:foreach>
Заменить - пусто.

Есть вопрос, правда относится не к самому плагину, а к технической части.
В плагине есть битовые константы:
PHP:
    const PERMISSION_EDIT_FIRST_POST = 0b00001,
        PERMISSION_HARD_DELETE = 0b00010,
        PERMISSION_DELETE_POSTS = 0b00110,
        PERMISSION_MOVE_POSTS = 0b01000,
        PERMISSION_EDIT_POSTS = 0b10000;
Как эти константы были определены? Как мне найти биты других разрешений?
Вопрос задал в этой теме, т.к. если создам отдельную тему - меня пошлют сюда))
 
Не могу снять права с куратора темы. Получаю ошибку

Код:
LogicException: Attempted to set 'last_edit_user_id' while a save was pending without forceSet in src/XF/Mvc/Entity/Entity.php at line 605
XF\Mvc\Entity\Entity->set() in src/XF/Mvc/Entity/Entity.php at line 577
XF\Mvc\Entity\Entity->__set() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 96
itslegend\ThreadModerator\XF\Entity\Thread->_postSave() in src/addons/XFES/XF/Entity/Thread.php at line 11
XFES\XF\Entity\Thread->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/XF/Entity/Post.php at line 596
XF\Entity\Post->_postSave() in src/addons/DigitalPoint/Cloudflare/XF/Entity/Post.php at line 9
DigitalPoint\Cloudflare\XF\Entity\Post->_postSave() in src/addons/XFES/XF/Entity/Post.php at line 9
XFES\XF\Entity\Post->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 97
itslegend\ThreadModerator\XF\Entity\Thread->_postSave() in src/addons/XFES/XF/Entity/Thread.php at line 11
XFES\XF\Entity\Thread->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/XF/Mvc/Entity/Entity.php at line 1323
XF\Mvc\Entity\Entity->saveIfChanged() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 64
itslegend\ThreadModerator\XF\Entity\Thread->rebuildThreadModerators() in src/addons/itslegend/ThreadModerator/Repository/ThreadModerator.php at line 62
itslegend\ThreadModerator\Repository\ThreadModerator->deleteThreadModeratorBulk() in src/addons/itslegend/ThreadModerator/XF/Pub/Controller/Thread.php at line 105
itslegend\ThreadModerator\XF\Pub\Controller\Thread->actionThreadModerators() in src/XF/Mvc/Dispatcher.php at line 352
XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 258
XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2487
XF\App->run() in src/XF.php at line 524
XF::runApp() in index.php at line 20

XF 2.2.13

Вроде бы раньше было всё ок... а сейчас появилась проблема :(

Подскажите где в MySQL хранятся данные о кураторах чтобы снять руками?
 
Последнее редактирование:
Не могу снять права с куратора темы. Получаю ошибку

Код:
LogicException: Attempted to set 'last_edit_user_id' while a save was pending without forceSet in src/XF/Mvc/Entity/Entity.php at line 605
XF\Mvc\Entity\Entity->set() in src/XF/Mvc/Entity/Entity.php at line 577
XF\Mvc\Entity\Entity->__set() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 96
itslegend\ThreadModerator\XF\Entity\Thread->_postSave() in src/addons/XFES/XF/Entity/Thread.php at line 11
XFES\XF\Entity\Thread->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/XF/Entity/Post.php at line 596
XF\Entity\Post->_postSave() in src/addons/DigitalPoint/Cloudflare/XF/Entity/Post.php at line 9
DigitalPoint\Cloudflare\XF\Entity\Post->_postSave() in src/addons/XFES/XF/Entity/Post.php at line 9
XFES\XF\Entity\Post->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 97
itslegend\ThreadModerator\XF\Entity\Thread->_postSave() in src/addons/XFES/XF/Entity/Thread.php at line 11
XFES\XF\Entity\Thread->_postSave() in src/XF/Mvc/Entity/Entity.php at line 1277
XF\Mvc\Entity\Entity->save() in src/XF/Mvc/Entity/Entity.php at line 1323
XF\Mvc\Entity\Entity->saveIfChanged() in src/addons/itslegend/ThreadModerator/XF/Entity/Thread.php at line 64
itslegend\ThreadModerator\XF\Entity\Thread->rebuildThreadModerators() in src/addons/itslegend/ThreadModerator/Repository/ThreadModerator.php at line 62
itslegend\ThreadModerator\Repository\ThreadModerator->deleteThreadModeratorBulk() in src/addons/itslegend/ThreadModerator/XF/Pub/Controller/Thread.php at line 105
itslegend\ThreadModerator\XF\Pub\Controller\Thread->actionThreadModerators() in src/XF/Mvc/Dispatcher.php at line 352
XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 258
XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2487
XF\App->run() in src/XF.php at line 524
XF::runApp() in index.php at line 20

XF 2.2.13

Вроде бы раньше было всё ок... а сейчас появилась проблема :(

Подскажите где в MySQL хранятся данные о кураторах чтобы снять руками?
Я указывал разработчика, спросить можно у него
 
А где ты ищешь исполнителей? Тут на форуме? Или на сайтах фрилансеров?
Здесь конечно же, смысл где-то в другом месте искать? Тут люди которые прощупали движок, они быстрее сделают чем фрилансеры
 
Dkf, Вам ответили? Помогли с решением проблемы?
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу