NPJ next: Документация/ФильтрСообществаРеализация ...

Главная | Каталог | Изменения | НовыеКомментарии | Пользователи | Вам запрещён доступРегистрация | Вход:  Пароль:  

Фильтр сообщества, реализация

Умолчательная настройка узла: community_filter = true

Актуальный чеклист разработки

NB: Всё, помеченное красным — в старом баг-трекере (он не сохранился).


  1. Модификация БД
    1. Патч в БД (написать, внедрить, внести в БТ)
    2. Загружать поле filter в _Load*
    3. Сохранять поле filter наравне с crossposted
    4. Второй патч — «шторки» (написать, внедрить, внести в БТ)
    5. Внедрить на все доступные мне узлы второй патч
  2. Распознавание фильтра по НПЖ-адресу
    • Работать только по наличию настройки $rh->community_filter=1;
    • внести in, by в число резервированных слов
    • INIT: сохранять распознанное в $this->npj_filter, больше нигде не отмечать
  3. Распознавание фильтра по URL-адресу
    • Работать только по наличию настройки $rh->community_filter=1;
    • http://npj.ru/in/prodesign/by/kuso/8721
    • http://npj.ru/prodesign/by/kuso/8721
    • http://npj.ru/in/prodesign/by/foreign/pixelapes/mendokusee/8721
  4. Конвертация НПЖ-адресов в URL
    1. Работать только по наличию настройки $rh->community_filter=1;
    2. Линк не должен рисовать «трупики» вокруг in/by
    3. Конвертация адреса вида in/.../by/... (принудительная установка фильтра)
      1. Пробовать загрузить из кэша и проверить, можем ли применять фильтр
    4. Конвертация адреса, когда он без фильтра
      1. Пробовать загрузить из кэша и проверить, можем ли применять фильтр
      2. Использовать $rh->account->npj_filter для постановки
    5. Принудительное создание адреса без фильтра in/kuso@npj
    6. NpjObject::_Load должен игнорировать in/../by/ & in/
    7. Вака-разметка: в логине может присутствовать /
    8. Ссылки вида in/slipper/by/kuso@synpj:4565/comments
  5. Использование фильтра
    1. Работать только по наличию настройки $rh->community_filter=1;
    2. Используем $rh->object->npj_filter
    3. Сообщение: редиректить, если фильтр не совпадает
      1. Это в handlers/record/show.php
    4. Комментарии: научиться фильтровать на базе фильтра
      1. Это в handlers/comments/show.php outer join or stuff
    5. Action feed: посты только в рамках фильтра — кажется сделать слишком сложно, откладываем
      1. Работать только по наличию настройки $rh->community_filter=1;
      2. Используем $rh->object->npj_filter
  6. Интерфейсы
    1. Работать только по наличию настройки $rh->community_filter=1;
    2. Комментарии: флип между доступными фильтрами
    3. Комментарии, модерация: уметь показывать и «зашторенные» для модератора (оставаясь в фильтре)
    4. Комментарии: показывать ссылку на установку или сброс шторки
    5. Комментарии, модерация: вкл./выкл. шторки в текущем фильтре, если можем
      1. Работать только по наличию настройки $rh->community_filter=1;
      2. типичный конфирм
      3. проверять права как у модераторов фильтра
      4. важно, что шторка должна быть установлена независимо на всё поддерево
    6. Не забыть размножить шаблоны и CSS между шкурами
      1. academic
      2. minikui

Разное

Метод реализации

  1. Правка в БД filter — содержит imploded через , логины аккаунтов «местного» узла, где может быть показано сообщение
  2. При постановке ссылки всегда пользуемся filter
    1. Если он не пустой, то берём первый элемент
  3. Правка в БД r1_filtered_comments таблица, содержит comment_id, filter_user_id, moderator_id, created_datetime
    1. Первые два понятно для чего
    2. Вторые два пока для статистики
    3. Альтернативный вариант реализации: поле filter в таблице r1_comments. А там фильтры перечислены через запятую, как у поста
      1. Плюсы варианта: похоже на пост, не нужно дополнительной таблицы
      2. Минусы варианта: обрезку фильтра придётся делать дополнительным проходом по комментам.
      3. С другой стороны, если фильтеренный комментарий скрывает и всё поддерево, наверное это самый простой способ сделать это дополнительным проходом.
      4. Однако, на каждый коммент придётся делать explode + array_flip + hash-search.
    4. Выбран основной вариант

Восстанавливаем адресную схему

Предлагаемый URL-формат:


Предлагаемый НПЖ-формат:


Как это делается:



 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Поделиться ссылкой