Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
10000 ₽

WordPress backend and frontend - правка комментарием (кастомные поля)

истекло время актуальности


Подробное ТЗ по ссылке

https://docs.google.com/document/d/128pQsr0j3KZsSqQbjwRI9xnatHAdSYuX0iUHvBzBfPk/edit?usp=sharing 



Обновление #1 от 13 июля 2018
Интерфейс шагов:

Файлы которые могут понадобится:
plugins/ingame/game-module.php - объявление кастомных постов “Игры”
plugins/ingame/player-action.php - js/php/ajax библиотека которая отвечает за интерфейс. В комментариях в файле примеры использования.

CSS фреймворк: https://adminlte.io/

Где пишем код:
plugins/ingame/anyfiles…

В двух словах о сайте:
На сайте реализован базовый функционал игр типа play by post. В качестве текущей игры custom post, в качестве хода игрока - комментарий.

Требуется переделать интерфейс комментария. Ориентировочно на выходе должно получится следующее:


Видимость это:
Увидят ли это сообщение все пользователи или только автор поста.

Сообщение
Видимость: видят все
Особенности: wiziwig, аттач изображений, фильтруем все что не HTML (XSS защита)
Обязательное: да
Кубик
Видимость: видят все, если пользователь не поставил checkbox “тайно”. Если checkbox стоит - итог видит только мастер и пользователь сделавший ход.
Обязательное: нет
Поля кубика:
1. Сколько кубиков
2. Сколько граней (случайное число)
3. Модификатор
4. Иконка в виде солнышка или что это там - делать не нужно
5. Комментарий
6. Кнопка
7. Checkbox

Сколько кубиков: Если выставлено 3d8 следует читать
<?php
$result = rand(1, 8) + rand(1, 8) + rand(1, 8)
?>
Тип поля: input number max 100
По умолчанию: 1
Обязательно: обязательно при броске кубика
Сколько граней: случайное число от 1 до выбранного. В dropdown такие значения - 2,4,6,8,10,12,20,100
То есть если выставлено значение 1d8 это следует читать
<?php
$result = rand(1, 8)
?>
Тип поля: dropdown
По умолчанию: 2
Обязательно: обязательно при броске кубика
Модификатор: Если выставлено 2d8 + 3 Это следует читать
<?php
$result = rand(1, 8) + rand(1,8) + 3
?>
Тип поля: input number max 1000
По умолчанию: пусто
Обязательно: не обязательно при броске кубика
Комментарий: Вводится пользователем, по окончанию хода виден как
“пытаюсь взломать дверь 2d8+3 = 15”
По умолчанию: пусто
Обязательно: обязательно при броске кубика
Кнопка “Бросить”: Вот тут совсем интересно. Игрок может кубик до публикации комментария. Но итог броска он не увидит. Текущая форма броска кубика становится disable и происходит clone формы, появляется надпись “результат броска будет виден после завершения хода”.
disable формы - инпуты и кнопка теперь не кликабельны, неизменяемы.
clone формы - под выключенной формой появляется еще одна в которой можно бросить еще один кубик.
Итого, игрок может бросить кубик еще раз (можно поставить ограничение в 20 бросков кубика). Данные бросков пишутся в бд, при рефреше страницы не должны теряться.
Checkbox (тайно): Чекбокс определяет, будет ли виден данный бросок кубика всем пользователям или только автору поста и автору комментария.
По умолчанию: false

Комментарий (пояснение к ходу)
Видимость: видят все
Особенности: wiziwig, аттач изображений, фильтруем все что не HTML (XSS защита)
Обязательное: нет
Просто еще одно поле.
Сообщение для мастера
Видимость: видят все
Особенности: wiziwig, аттач изображений, фильтруем все что не HTML (XSS защита)
Обязательное: нет
Еще одно текстовое поле которое видит только автор поста и автор комментария.
Жду сообщение от:
Видимость: видят все
Особенности: дропдаун со списком пользователей которые участвуют в игре. Как забрать пользователей которые участвуют в игре?

$connected_users_args = array(
'meta_key' => '',
'meta_query' => array(),
'meta_query' => array(
array(
'key' => 'connected_games',
'value' => ':"'. get_the_ID() .'";',
'compare' => 'LIKE'
)
)
);
$connected_users = get_users( $connected_users_args );

Отображается как: Жду сообщения от $user->display_name

Повесить do_action() с данными:
$whowait = id пользователя который ждет сообщения
$fromuser = id пользователя от которого ждут ждут сообщения
Нужно чтобы в будущем прикрутить нотификации

Что еще нужно сделать, чего нет на картинке:
Кнопку “Удалить”. При нажатии этой кнопки все броски удаляются из бд. Все поля очищаются.
В wp комментариях есть фича “ответить”.


Если игрок выбирает “ответить”, после публикации комментария появляется надпись “в ответ на ход ИмяИгрока”.
Так же нужно повесить do_action()
$who_made - id пользователя сделавшего ход
$in_response_to - id пользователя в ответ которому делается ход

Комментарий после публикации. Автор поста может редактировать все параметры комментария (кроме тех которые видны только автору поста, может перебросить любой кубик). Также автор поста может удалить любой комментарий.

Как должен выглядеть комментарий после публикации


Еще немного о кубике:
2d8 + 4
Читается как:
$result = rand(1, 8) + rand(1, 8) + 4
Но в базе нам нужно хранить значение каждого кубика. Потому что в зависимости от настроек на фронте мы будет отображать или не отображать бросок каждого кубика.

Случай 1, на фронте будет

Крадусь
2d8 + 4 = 10

Случай 2

Крадусь
(5 + 1) + 4 = 10
Здесь цифры 5 и 1 - это бросок первого кубика и бросок второго кубика соответственно

Пока что мы реализуем Случай 1, но нужно будет приготовить функцию отображения Случая 2

P. S. Здесь выбор сущности *комментарий* указан так как эта сущность уже присутствует в wp, равно как и функционал для работы с ней. Если исполнитель считает что нужно создать новую сущность и дописать функционал для ее работы с кастомным постом, пользователями, админкой и т. д. - это допустимо. Естественно нужно чтобы запросы не были тяжелыми, не грузили бд на большом количестве ходов.

Приложения 1

Просмотр приложений доступен только зарегистрированным пользователям.

Сделать ставку!

Заказчик не желает делать предоплату? Оплата через Сейф поможет избежать возможного мошенничества.

  1. 7 дней10000 ₽
    Владислав Смоков
     2496  проверен   42  1

    Здравствуйте. Есть опыт работы с Wordpress по написанию плагинов и взаимодействию с API. Данная задача показалась мне очень нетривиальной, но интересной. Именно такие я люблю. Очень хотелось бы принять участие в разработке вашей игры. Пишите, обсудим детали.

    Болгария София | 13 июля 2018 |
  1. ставка отозвана