Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Startups

Пишем свой стартап: встречи с несколькими участниками

by
Read Time:11 minsLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Requesting Scheduling Changes
Building Your Startup: Completing Group Scheduling

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Этот учебник является частью серии Пишем свой стартап на PHP на Envato Tuts +. В этой серии я показываю вам запуск приложения от самой концепции до реального приложения, используя приложение «Планировщик встреч» в качестве примера. На каждом шаге я буду выкладывать код планировщика собраний в качестве примеров с открытым исходным кодом. Я также рассмотрю связанные с запуском бизнес-вопросы по мере их возникновения.

Введение в групповые встречи

Планирование встреч с несколькими участниками всегда было частью моего плана, но не частью самого раннего минимального жизнеспособного продукта (MVP). Альфа-релиз Планировщика собраний запускается только с расписанием 1: 1. Цель поддержки группового планирования состояла в списке задач, таких как гора Эверест, для альпиниста, нацеленного на семь вершин (и я даже не альпинист на открытом воздухе).

Несколько встреч участников являются наиболее сложными для планирования и, следовательно, ценными для предлагаемого Планировщика собраний. Я был взволнован, когда список бета-задач дошел до того, что я мог бы начать работу над этим.

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

Фактически, тестирование оказалось самым сложным аспектом построения этой функции. Это также помогло выявить недостатки в более раннем коде. Просто это не так уже просто ... отправка на несколько адресов электронной почты, проверка того, что каждый из них получает все правильные уведомления - и видит все правильные параметры меню на всем сайте.

В сегодняшнем учебном пособии я расскажу о том, как включить нескольких участников, обновить UX для групп, назначить организаторов, удалить участников, а также отсортировать даты, время и место по их популярности среди участников.

В следующем уроке я опишу оставшуюся часть работы: обзор всех областей сайта, затронутых встречами с несколькими участниками, обработка и интеллектуальное отображение списков получателей различного статуса, правильное управление уведомлениями и фильтрация уведомлений для групп и, наконец, обновление недавней функции запроса на изменение собрания.

Попробуйте спланировать групповое собрание

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

Я участвую в обсуждениях, но вы также можете связаться со мной @reifman в Twitter. Я всегда открыт для новых идей для планировщика собраний, а также предложений для будущих эпизодов этой серии.

Напомним, что весь код для Планировщика собраний предоставляется с открытым исходным кодом и написан на Yii2 Framework для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с моей параллельной серией Программирование с Yii2. Я слышал о Laravel, но Yii2 всегда быстро и легко удовлетворяет мои потребности.

Глядя назад

Когда я впервые разработал интерфейс планирования планировщика собраний, он отображал текущую доступность другого участника в своем собственном столбце. И это было немного запутанно, так как были отключенные элементы управления.

Meeting Planner Startup Series - The old You Them Availability PanelMeeting Planner Startup Series - The old You Them Availability PanelMeeting Planner Startup Series - The old You Them Availability Panel

В то время я беспокоился о том, как сделать пространство для отображения доступности групп.

К счастью, когда я перестроил UX для более отзывчивого опыта, я заменил столбец доступности участников небольшой текстовой сводкой:

Meeting Planner Startup Series - The newer built for mobile responsive planning viewMeeting Planner Startup Series - The newer built for mobile responsive planning viewMeeting Planner Startup Series - The newer built for mobile responsive planning view

Сводная информация о доступности по совпадению будет хорошо работать для групповых встреч.

Сначала перепроектировав для мобильных устройств, я решил самый значительный барьер UX для встреч нескольких участников!

Кодирование групповых встреч

Давайте начнем проходить через весь код и протестируем, что требуется несколько встреч участников.

Включение нескольких участников

Meeting Planner Startup Series - Who Panel - Enabled Button for More ParticipantsMeeting Planner Startup Series - Who Panel - Enabled Button for More ParticipantsMeeting Planner Startup Series - Who Panel - Enabled Button for More Participants

Самый смешной аспект групповых встреч - то, что их активизация была простой. Мне просто нужно было отключить отключение кнопки «плюс» на панели «Кто» для встреч на этапе планирования:

Затем я начал с создания MEETING_LIMIT в модели участника:

Он используется в MemberantController:: actionCreate() для отправки

Улучшение UX и связанных с ним функций

В течение долгого времени я хотел разрешить организаторам собрания удалять участников, места и даты, не загромождая интерфейс пользователя. Точно так же я понял, что для участников может быть несколько команд.

Найдя такую полезную утилиту в кнопке Bootstrap dropdown в учебнике Advanced Commands, я решил использовать ее для отображения участников собрания:

Meeting Planner Startup Series - New Buttons and Dropdown Menu for Organizers Meeting Planner Startup Series - New Buttons and Dropdown Menu for Organizers Meeting Planner Startup Series - New Buttons and Dropdown Menu for Organizers

Организаторы обозначаются звездочкой. Участники, которые отклонили встречу, отображаются оранжевым цветом. Участники, которых удаляют организаторы, отображаются красным цветом.

Вот код в моем отображении /frontend/views/participant/_buttons.php:

Теперь любой может отправить сообщение любому участнику (функции заметок на собрания в настоящее время распространяются среди всех участников собрания).

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

Создание функций AJAX в кнопках участника

Я решил добавить AJAX на все эти параметры меню. Для этого потребовалось несколько сложных часов кодирования.

Вот код, который определяет начальное меню кнопок и готовит JavaScript:

Есть так много состояний кнопок, цветов и звезд, которые нужно обновить, так как изменения сделаны интерактивно на странице, что код становится довольно сложным. Я добавил функции в файл JavaScript meeting.js для toggleOrganizer(), т. е. сделать/удалить организатора, и toggleParticipant(), т. е. удалить/восстановить участника.

Эти требуемые сопутствующие методы контроллера JSON в EntantController.php обрабатывают запросы переключения и обновляют базу данных:

Активация функции аккордеона на панелях

Meeting Planner Startup Series - Open and Closed Panels with Bootstrap Accordion FeatureMeeting Planner Startup Series - Open and Closed Panels with Bootstrap Accordion FeatureMeeting Planner Startup Series - Open and Closed Panels with Bootstrap Accordion Feature

В то же время я также понял, что по мере того, как планы собраний будут усложняться с большим количеством получателей и вариантов, будет больше прокрутки. Я решил реализовать функцию аккордеона Bootstrap для всех панелей на нашем собрании.

Другими словами, теперь вы можете щелкнуть заголовок, чтобы свернуть или открыть все панели.

Ниже перечислены части для места встречи _panel.php:

Обратите внимание на приведенные выше настройки на panel-heading, а затем на окружающий div для panel-body. Они контролируют открытие и закрытие каждой панели.

Это привело к некоторым небольшим косметическим проблемам, таким как нежелательный отступ вокруг списка элементов, которые мне нужно будет очистить в будущем.

Модели для групповых встреч

В то время как я планировал несколько участников с самого начала, были некоторые незначительные и скромные улучшения инфраструктуры для их поддержки.

В то время как модели MeetingTimeChoice и MeetingPlaceChoice отслеживают, предпочитают ли участники конкретные даты и места, я хотел отслеживать общую доступность для всех участников в каждый момент времени. Это позволит мне сортировать места и время по их популярности, а также показывать самые популярные настройки в верхней части панелей.

Во-первых, я создал миграцию, чтобы добавить это в обе модели. Редко, что миграция влияет на несколько моделей, что делает этот вид особым:

Благодаря этой возможности я смог начать отображать возможные даты встречи и места, отсортированные по их популярности у участников, от MeetingController::actionView():

Вы можете увидеть это в действии на скриншоте ниже:

Meeting Planner Startup Series - Sorted Date Times and Places By PopularityMeeting Planner Startup Series - Sorted Date Times and Places By PopularityMeeting Planner Startup Series - Sorted Date Times and Places By Popularity

Чтобы отслеживать, являются ли участники организаторами и разрешено ли в будущем отказаться от уведомлений конкретного собрания, я добавил эту миграцию для таблицы Participant:

Я также добавил в Constant.php ряд констант для работы с этими свойствами:

И я знал, что было бы полезно иметь некоторые вспомогательные функции в рамках массивной модели Meeting. Например, IsOrganizer() сообщает мне, является ли текущий зритель организатором собрания:

Подождите, а что еще?

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

Если вы еще этого не сделали, то запланируйте свою первую встречу с Планировщиком встреч и попробуйте все это. Пожалуйста, поделитесь своими отзывами в комментариях ниже.

Учебник по crowdfunding также находится в работе, поэтому, пожалуйста, зайдите на страницу WeFunder Meeting Planner.

Вы также можете связаться со мной @reifman. Я всегда открыт для новых идей и предложений для будущих учебников.

Оставайтесь с нами и будьте в курсе всех новых уроков серии Пишем стартап на PHP.

Ссылки по теме

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.