logo
Разработка геоинформационной системы позиционирования городских объектов

4.3 Реализация модуля комментирования проблемы

На странице отдельной проблемы вне зависимости от того - авторизован пользователь или нет - выводится лента комментариев. Однако, если пользователь не вошел в систему, то он не имеет возможности оставлять новые комментарии, при этом вместо формы для ввода комментария выводится текстовое предложение входа в систему.

Если пользователь авторизован, то под лентой комментариев выводится форма ввода нового сообщения (рис. 4.5). Кроме этого пользователь имеет возможность ответить на чье-либо сообщение, нажав на кнопку “Ответить” напротив какого-либо сообщения ленты.

Рисунок 4.5 - Комментирование проблемы. Алгоритм

При нажатии кнопки “Отправить” параметры (значение текстового поля, ID пользователя, ID проблемы, ID комментария, к которому предназначался ответ - по умолчанию “0”) передаются с помощью HTTP-запроса на сервер к обработчику ajax.php в виде JSON-объекта (рис. 4.2). Результатом ответа сервера также будет JSON-объект, который содержит статус операции (выполнена без ошибок/присутствуют ошибки). Если запрос завершился ошибкой, то текст ошибки выводится в специальном окне, иначе, если комментарий был добавлен в базу данных и не присутствует прочих ошибок, то комментарий добавляется в общую ленту.

Если комментарий оставлен в ответ другому сообщению, то при наведении на него курсора комментарий-родитель выделяется цветом, с помощью jQuery.