Content Commons — спільна бібліотека ресурсів і модерація
Контент, який користувачі надсилають для використання в різних продуктах (пісні WorshipCommons, уроки Lessons.church, шаблони FreeShow, шаблони сайтів B1), проходить через одну спільну чергу модерації, а не через окремий процес перевірки для кожного продукту. Ця сторінка описує життєвий цикл подання та схвалення, спільну модель даних для ресурсів і місце, де розташована модерація.
Основа ресурсів
Дві таблиці містять кожен елемент Commons, незалежно від продукту:
assets— основний публічний запис.status:pending|published|unpublished|removed. Дані, специфічні для типу (відомості про пісню, автори), зберігаються в допоміжних таблицях, які пов'язані черезassetId.assetFiles— кожен файл, прикріплений до ресурсу (аудіо, зображення, документи). Ця таблиця замінює старіші колонкиpathіfiles(зі значеннями, розділеними комами), які були в окремих таблицях контенту.submissions— одиниця модерації. Життєвий цикл:draft → pending → approved | rejected | withdrawn. Подання може бути новим ресурсом або змінами до вже опублікованого ресурсу (від автора оригіналу або від третьої сторони).
Після схвалення подання запускається специфічний для продукту publish hook (Api/src/modules/commons/helpers/publishHooks/, наприклад song.ts), який перетворює подання на записи цього продукту.
Процес подання
CommonsSubmissionController (Api/src/modules/commons/) — це API для кінцевих користувачів: створення чернетки, підготовка та прикріплення файлів, надсилання на перевірку або відкликання подання. Його фактичні клієнти — зовнішні сайти виробників (сайт WorshipCommons, Lessons.church, FreeShow, галерея шаблонів сайтів B1), а не B1Admin.
Використання для церков
Окрім модерації, B1Admin також читає дані безпосередньо зі спільної бази. Пошук у розділі Serving → Songs, у вікні "Add Song", виконує запит GET /songs?sundayReady=true разом із наявною зовнішньою базою пісень. Так відображаються опубліковані пісні WorshipCommons, які співробітники позначили як готові до недільного служіння (див. шлюз прослуховування нижче), а поруч із ними показано значок ліцензії. Після вибору пісні новий SongDetail зв'язується з джерелом через songDetailLinks. Це єдиний випадок, коли B1Admin окремої церкви безпосередньо працює з даними Commons, а не через інструменти Server Admin, доступні лише персоналу. Опис для церков дивіться в розділі підтримки Free Songs from WorshipCommons.
Черга модерації
Черга розташована в B1Admin → Server Admin → Commons (B1Admin/src/serverAdmin/components/CommonsTab.tsx). Доступ до неї контролюється дозволом Permissions.server.admin, тим самим, що відкриває розділи Churches, Impersonate і Jobs на цій сторінці. Це внутрішній інструмент для співробітників ChurchApps, а не для окремих церков.
Вона містить три вкладки:
- Queue — усі подання, що очікують на перевірку, для всіх продуктів; їх можна фільтрувати за продуктом і типом ресурсу. Кожен рядок показує позначку: новий ресурс, редагування від автора або редагування від третьої сторони. Також видно історію схвалень відправника, зведення змін полів і файлів та вік подання (позначається, якщо він перевищує 72 години). Review відкриває панель із детальним порівнянням полів, переглядом файлів і вбудованим попереднім переглядом продукту лише для читання. Схвалення та відхилення мають клавіатурні скорочення: j/k для навігації, a/r для дії.
- Reports — скарги щодо авторських прав і скарги щодо політики або якості для опублікованих ресурсів. Вони розділені на дві черги та історію вирішених скарг. Співробітник бере скаргу в роботу, а потім закриває її, вказавши результат (підтверджено, відхилено, дублікат) і дію (немає, зняти з публікації, видалити).
- Assets — пошук по опублікованому контенту з діями для кожного ресурсу: позначити як рекомендований, зняти з публікації або повторно опублікувати, видалити (причина: авторські права або політика). Для пісень шлюз прослуховування на цій вкладці визначає, чи пісня стає "готовою до недільного служіння". Співробітники позначають пісню після того, як прослухали всі опубліковані тональності та переконалися, що партитура, акорди й слайди на місці.
Кожна кінцева точка /commons/admin/* (CommonsAdminController.ts) самостійно повторно перевіряє дозвіл server-admin.
Цей дизайн навмисно передбачає єдину чергу: власний інтерфейс модерації /admin у WorshipCommons вилучено, а подання з усіх продуктів тепер перевіряються через інструменти Server Admin у B1Admin.
Охоплені компоненти
Api (модуль commons), B1Admin (Server Admin) і зовнішні сайти виробників: WorshipCommons, Lessons.church, FreeShow, конструктор сайтів B1 (шаблони).