Работа на конкурс по разработке описания софта VIZWP
Предлагаю свое видение WP-плагина, с учетом ошибок, совершенных при интеграции rblogger.ru с медиа-блокчейнами «Голос», Steemit и Viz World. Публикация в рамках конкурса.
Задачи, решаемые ПО
Полностью автономное приложение, позволяющее использовать все функции БЧ без обращения к сторонним сервисам.
Проблемы
Основная проблема разработки полнофункционального Вордпресс-плагина для подавляющего большинстве сайтов использующих Вордпресс — отсутствие возможности запуска скриптов Node.js на стороне сервера. Без этой возможности (средствами WP + JS на стороне браузера пользователя) не могут быть реализованы такие функции, как регистрация новых пользователей через делегирование и отложенный постинг. Если реализовать механизм регистрации с помощью заранее подготовленных инвайтов, то страдает только функционал отложенного постинга.
Проблема отложенного постинга может быть решена путем создание доверенного, стабильного сервиса, который по API сможет выполнять действия, требующие авторизации в БЧ. При наступлении времени публикации сервис обрабатывает запрос от WP, отправляя пост в БЧ.
Кроме того, стоит подумать о том, что на базе такого сервиса можно реализовать гораздо более безопасное хранение ключей пользователей, не подвергая их риску компрометации при взломе сайта/сервера, где установлен плагин.
В случае отказа от такого усложнения архитектуры, можно урезать функционал отложенного постинга: пост будет опубликован в БЧ только при открытии любой страницы консоли WP одним из пользователей, обладающих правами администратора/редактора.
В любом случае, небольшое уменьшение функциональности CMS гораздо менее важно, чем доступность установки на всех сайтах с WP. То есть лучше отказаться от использования Node.js для взаимодействия плагина с БЧ.
Список функций
Публикации
- размещение опубликованных постов в БЧ
- обновление постов при изменении
- экспорт публикаций БЧ > WP
-- проверка «владения» аккаунтом по постинг-ключу
-- копирование публикаций из БЧ в БД Вордпресса, с сохранением тегов и прочих параметров.
- кастомизация формы создания/редактирования поста
--добавление поля картинки-превью
-- добавление поля «короткого описания»
Кошелек
- авторизация по active-key с сохранением на стороне браузера
- переводы токенов на другие аккаунты
- переводы VIZ < SHARES
- старт конвертации SHARES < VIZ
- остановка конвертации SHARES < VIZ
- обзор транзакций с фильтрами по аккаунтам/датам/типам
Голосование (реализация в виде виджета внутри single.php установленной темы)
- отправка/«снятие» голоса за публикацию
- отображение текущего значения будущей/сложившейся выплаты
- возможность присоединиться к «паровозу», голосующему за редакционные посты
- возможность присоединиться к «паровозу», голосующему за все посты, опубликованные через приложение
Комментирование (реализация в виде виджета внутри single.php установленной темы)
- отправка комментариев
- редактирование комментариев
- голосование за комментарии
- отображение будущей/сложившейся выплаты при наличии голосов
Регистрация аккаунтов
- генерация инвайтов с заданными параметрами
- хранение инвайтов
- уведомления об исчерпании доступных инвайтов
Менеджер аккаунтов
Аккаунты БЧ разделены на две логические группы: «аккаунты редакции» и аккаунты пользователей. Пользователь/редактор добавляет/удаляет аккаунты и их постинг-ключи. Виджет менеджера аккаунтов находится в профиле пользователя или на главной странице консоли.
Батарейка (возможное место размещения — admin bar)
- отображение текущего значения Voting Power текущего аккаунта
- периодическое обновление значения
Голосование за делегатов
- список делегатов с отображением текущих голосов
- возможность поставить/снять голос
Описание взаимодействия VIZ.world и WordPress с т.з. редакции
Установка и настройка
- Установка плагина осуществляется с помощью штатных механизмов WP. После установки администратор добавляет в менеджер аккаунтов один или несколько редакционных VIZ аккаунтов и их постинг-ключи.
- Если предполагается регистрация новых пользователей, администратор сайта заранее создает инвайты в менеджере аккаунтов.
Сценарий: публикация
Перед публикацией администратор/редактор выбирает аккаунт БЧ, из аккаунтов добавленных в менеджере аккаунтов (редакционные + свои). После публикации поста на уровне WP, выполняется скрипт в на стороне браузера: выводится уведомление, «блокирующее страницу»: «Дождитесь публикации в БЧ». После успешной/неуспешной публикации в БЧ выводится соответствующее уведомление. И блокируется возможность менять permalink.
Описание взаимодействия VIZ.world и WordPress с т.з. пользователя
Сценарий: регистрация, пользователь без аккаунта в БЧ
После создания учетной записи WP для нового пользователя, WP выводит в области уведомлений приглашение создать VIZ аккаунт, если есть доступные инвайты. Пользователь выбирает имя VIZ аккаунта, и если оно свободно, происходит активация инвайта с созданием нового аккаунта. Ключи отправляются на указанный при регистрации адрес почты, имя аккаунта и постинг-ключ сохраняется в менеджере аккаунтов.
Сценарий: регистрация, с аккаунтом в БЧ
Вариант 1: регистрация по постинг-ключу. Пользователь на отдельной страницу регистрации вводит имя аккаунта и постинг-ключ. WP проверяет постинг-ключ и создает учетную запись. Имя аккаунта и постинг-ключ сохраняются в менеджере аккаунтов.
Вариант 2: штататная регистрация WP, после которой внутри консоли выводится уведомление указать существующий аккаунт в менеджере аккаунтов.
Сценарий: Голосование за пост, незарегистрированный пользователь
При нажатии на кнопку голосования, WP предлагает создать аккаунт WP или зарегистрироваться с постинг-ключем.
Сценарий: публикация
Перед публикацией пользователь выбирает аккаунт БЧ, из аккаунтов добавленных в менеджере аккаунтов. После публикации поста на уровне WP. Выполняется скрипт в на стороне браузера пользователя: выводится уведомление, «блокирующее страницу»: «Дождитесь публикации в БЧ». После успешной/неуспешной публикации в БЧ выводится соответствующее уведомление. И блокируется возможность менять permalink.
Сценарий: удаление поста
После удаления пост на уровне WP штатными средствами помечается как удаленный, но блокируется возможность удалить пост из корзины, чтобы не нарушалась «связь» между постами внутри WP и постами, размещенными в БЧ.
Заключение
Разработка плагина должна подчиняться принципам максимального удобства установки, настройки и использования администраторами, не имеющими опыта по взаимодействию с БЧ. Необходимо вести разработку в open source формате и опубликовать плагин в штатном «магазине» плагинов WP.