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

Erstellen Sie Ihr Startup: Beenden der Gruppenplanung

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Meetings With Multiple Participants
Building Your Startup: Importing With the Google Contacts API

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

Final product image
What You'll Be Creating

Dieses Tutorial ist Teil der Building Your Startup with PHP-Serie auf Envato Tuts +. In dieser Serie führe ich Sie durch die Einführung eines Start-ups von der Idee zur Realität mit meiner Meeting-Planer-App als ein echtes Beispiel. Bei jedem Schritt werde ich den Meeting-Planer-Code als Open-Source-Beispiele veröffentlichen, von denen Sie lernen können. Ich werde auch auf geschäftliche Probleme im Zusammenhang mit dem Start eingehen, sobald sie auftreten.

Laufende Entwicklung von Gruppentreffen

Herzlich willkommen! Dies ist die Folge zu Building Your Startup: Meetings mit Multiple Participants. Heute werde ich die Arbeit beenden, die wir in dieser Episode begonnen haben: die Planung mehrerer Teilnehmertreffen.

Ein kurzer Refresher

Das Planen von Besprechungen mit mehreren Teilnehmern war immer ein Hauptziel von Meeting Planner, das nur mit einer 1: 1-Planung gestartet wurde. Mehrere Teilnehmertreffen sind die größte Herausforderung für Leute, die versuchen, sich gegenseitig einzuplanen und daher eine der wertvollsten Funktionen für den Meeting Planner-Dienst zu bieten.

Im heutigen Tutorial werde ich alle Bereiche der Website behandeln, die von mehreren Teilnehmermeetings betroffen sind, Listen von Empfängern mit unterschiedlichem Status bearbeiten und intelligent anzeigen, Benachrichtigungen und Benachrichtigungsfilter für Gruppen ordnungsgemäß verwalten und schließlich die kürzlich gestartete Anfrage aktualisieren Meeting ändert sich Feature.

Planen Sie Ihre erste Gruppentreffen

Bitte planen Sie noch heute Ihr eigenes Gruppentreffen! Lade ein paar Freunde ein, um dich für Kombucha oder Kava zu treffen. Teilen Sie Ihre Gedanken und Erfahrungen in den Kommentaren mit. Ich nehme an den Diskussionen teil, aber Sie können mich auch @reifman auf Twitter erreichen. Ich bin immer offen für neue Feature-Ideen für Meeting Planner sowie Vorschläge für zukünftige Serienepisoden.

Zur Erinnerung: Der gesamte Code für Meeting Planner wird als Open Source bereitgestellt und im Yii2 Framework for PHP geschrieben. Wenn Sie mehr über Yii2 erfahren möchten, schauen Sie sich meine Parallel-Serie Programmierung mit Yii2 an.

Überprüfung des Codes

Wie Sie sich vorstellen können, hat die Umwandlung von Meeting Planner von 1: 1-Meetings in Gruppentreffen fast den gesamten Code berührt. Ich musste durch alle Bereiche denken, den Code überprüfen und an vielen Stellen kleine bis mittlere Änderungen vornehmen. In anderen Bereichen war ich für mehrere Teilnehmer zuständig, und Änderungen wurden nicht benötigt oder waren geringfügig.

Zum Beispiel hat die Gruppenplanung berührt:

Meistens, wo ich zuvor nur an Teilnehmer [0], den ersten und einzigen Teilnehmer, gesendet hatte, musste ich nun das Teilnehmerfeld bearbeiten. Und dabei musste ich Folgendes überprüfen:

  • Ist dieser Teilnehmer ein Organisator?
  • Wurde diese Person alleine entfernt oder abgelehnt?
  • Wird diese Person in Zukunft Benachrichtigungen für dieses Meeting abbestellen?

Die Herausforderungen beim Testen

Mit mehr Ressourcen hätte ich dies durch automatisierte Tests umfassender erreichen können. Allerdings habe ich alles manuell ausgiebig getestet, um das Ziel zu erreichen.

Ich habe eine Catchall-Domain-E-Mail verwendet, um n1, n2, n3, n4 und n5 @ mytestdomain.com zu meinen Beispiel-Gruppentreffen einzuladen. Glücklicherweise erleichtern die Einladungen zu Meeting-Plannern das schnelle Einloggen mit jedem Konto, indem Sie innerhalb jeder Besprechungseinladung klicken. das half mir beim Testen.

Es war wichtig, fast den gesamten Konferenzplanungscode zu überprüfen.

Aber lassen Sie uns zu den spezifischen Codierungsherausforderungen der zweiten Hälfte der Gruppenplanungsfunktion zurückkehren.

Teilnehmerlisten intelligent anzeigen

Vor einiger Zeit habe ich eine MiscHelpers-Methode erstellt, um Listen grammatikalisch korrekt in Englisch mit "und" vor dem Nachnamen anzuzeigen, wie im folgenden Besprechungsindex gezeigt:

Startup Series Group Scheduling - The Meeting Index

Ich wollte jedoch die Anzeige der Verfügbarkeit von Datum und Uhrzeit vereinfachen. Anstatt beispielsweise fünf Namen von Personen aufzulisten, die das Treffen bei Herkimer Coffee akzeptiert haben, habe ich MiscHelpers::listNames aktualisiert, um "alle anderen" zu sagen:

Sie können dies in Aktion unten sehen:

Startup Series Group Scheduling - Time and Place Availability Lists

Aber anstatt zu sagen "Keine Antwort von allen anderen", ist es richtiger zu sagen "Keine Antwort von jemand anderem", was der Code tut.

Im Folgenden sehen Sie, wie MeetingPlace::getWhereStatus() diese Zeichenfolgen für jeden Ort im Bereich "Besprechungsorte" vorbereitet:

Jeder Benutzer verfügt über eine MeetingPlaceChoice-Zeile, die sich auf einen MeetingPlace bezieht, der aufzeichnet, ob ein Platz akzeptabel, nicht akzeptabel oder noch nicht beantwortet ist. MeetingTimeChoice existiert auch ähnlich. Diese Information wird an listNames() übergeben.

Ablehnen und Zurückziehen von einer Besprechung

Gruppen verlangten auch mehr Komplexität, indem sie eine Besprechungseinladung ablehnten. Früher, wenn ein Teilnehmer abgelehnt hat, wurde das Treffen effektiv abgebrochen. Jetzt könnte man ablehnen und drei andere weitermachen lassen.

Wenn ein Teilnehmer eine Einladung zu einem Meeting erhält, kann er dies ablehnen. Aber wenn das Meeting bereits bestätigt und abgeschlossen wurde, dann ziehen sie im Wesentlichen zurück, wie Sie unten sehen können:

Startup Series Group Scheduling - Withdraw button in a Meeting View

Hinweis: Im obigen Bild sieht Sarah Smithers die Withdraw-Taste. Robert McSmith wurde von einem anderen Organisator, Jeff oder Alex, entfernt.

Wenn es sich jedoch um einen Organisator handelt (Besprechungsinhaber oder Organisator von mitgesprochenen Teilnehmern), können sie die Besprechung einfach abbrechen. Unten ist von _command_bar_confirmed.php. Es legt fest, welche Schaltflächen angezeigt werden sollen:

Priorisierung ist ein Schlüsselelement beim Aufbau eines Startups. Während ich also einem Benutzer, der sich zurückgezogen hatte, um einem Meeting beizutreten, einen Weg bieten wollte, entschied ich mich, dies für später zu der Asana-Aufgabenliste hinzuzufügen. Ein Benutzer, der sich wieder anmeldet, würde aktualisierte Benachrichtigungen und möglicherweise einige Aktualisierungen seiner Planungsdatenstrukturen benötigen.

Durch Benachrichtigungen denken

Während bei 1: 1-Meetings jede Änderung an die andere Partei gesendet werden musste, war dies für 12-Personen-Meetings nicht unbedingt sinnvoll - oder? Es kommt darauf an.

Anfangs habe ich allgemeine Richtlinien erstellt. Wenn ein Teilnehmer seine Einstellungen für ein bestimmtes Datum oder einen bestimmten Ort aktualisiert hat, müssen nur der Eigentümer und andere Organisatoren darüber informiert werden.

Ich habe in MeetingLog ein Array $groupSkip erstellt, das Ereignisse bestimmt, die nicht an andere Teilnehmer gesendet werden sollen:

In MeetingLog::getHistory überspringen wir die Benachrichtigung eines Teilnehmers für diese Ereignisse, aber benachrichtigen Sie die Organisatoren immer:

In einem ungewöhnlichen Beispiel wurde der Code mit mehreren Teilnehmern vereinfacht: Meeting::findFresh(), das nach Aktualisierungen von Besprechungsänderungen sucht, um sie per E-Mail zu teilen.

Zuvor mussten wir herausfinden, welcher der beiden Benutzer die Aktionen ausgeführt hat und ob sie dies mitteilen oder nicht. Jetzt benachrichtigen wir den Besitzer und benachrichtigen die Teilnehmer:

Jede Filterung erfolgt tiefer in der Ereignisprotokolltextualisierung.

Erweiterte Benachrichtigungen: "Jeder ist verfügbar!"

Ich habe auch eine neue Benachrichtigung für Alarmierungsorganisatoren erstellt, wenn alle mindestens einem bestimmten Ort und einer bestimmten Uhrzeit zustimmen, MeetingLog::ACTION_SEND_EVERYONE_AVAILABLE:

Dies benachrichtigt die Organisatoren, wenn das Meeting fertiggestellt / bestätigt werden kann.

Hier ist der Code, der alle Besprechungs- und Besprechungszeiten anzeigt, um zu sehen, ob alle mindestens einen Platz akzeptieren:

In ähnlicher Weise habe ich eine Funktion erstellt, die dem Organisator anzeigt, dass Datum und Uhrzeit für niemanden akzeptabel sind, Meeting::isSomeoneAvailable():

Dies deutet darauf hin, dass sie zusätzliche Datumsangaben und / oder Orte vorschlagen sollten.

Besprechungserinnerungen aktualisieren

Alles über das Treffen von Erinnerungen funktionierte gut für mehrere Teilnehmer, aber ich musste Erinnerungen deaktivieren, wenn ein Teilnehmer abgelehnt oder von einer Besprechung zurückgezogen oder entfernt wurde:

STATUS_DEFAULT gibt einen Teilnehmer an, der zum Array von Benutzern hinzugefügt werden soll, um auch Erinnerungen per E-Mail zu senden.

Überprüfen von Kalenderdateien

Ich habe auch die Erstellung von Kalenderdateien für Einladungen überprüft, um sicherzustellen, dass alle Teilnehmer eingeschlossen sind. In Meeting::prepareDownloadIcs() habe ich ein Teilnehmer-Array zusammengestellt, an dem der Eigentümer und die Teilnehmer aktiv teilnehmen:

Während dieser Zeit habe ich auch gelernt, anzugeben, dass eine Kalenderdatei einer abgebrochenen Besprechung das Entfernen des Ereignisses aus dem Kalender einer Person auslösen sollte. Der ics Standard ist mächtig, aber nicht leicht zu erlernen.

Aktualisieren von Anforderungsänderungen für Gruppen

Wie ich vor kurzem geschrieben habe, erforderte die Funktion "Änderungen an der Besprechung anfordern" eine Menge Arbeit und neues UX.

Startup Series Group Scheduling - Request a Change to Your Meeting

Für mehrere Teilnehmertreffen musste das Social Engineering erneut geändert werden. Beispielsweise können Organisatoren Anfragen annehmen oder ablehnen und den Besprechungsplan ändern. Die Teilnehmer können jedoch nur Änderungsanfragen mit "Gefällt mir", "Nicht gefallen" oder "Nicht interessiert" ausdrücken. Und die Organisatoren sollten alle Antworten der Teilnehmer sehen, um sie bei ihrer Entscheidungsfindung zu unterstützen.

Folgendes sieht der Teilnehmer nach dem Absenden seiner Änderungsanfrage:

Startup Series Group Scheduling - Confirming Your Request

Neue Änderungsanforderungen müssen an alle Teilnehmer gesendet werden. Dies wird transparent durch die Aktivitätenprotokollbenachrichtigungen gehandhabt. Wenn eine Anforderung gestellt wird, wird dieses Ereignis in RequestController::actionCreate() submit erstellt:

So sieht die angeforderte Änderungsbenachrichtigung für andere Teilnehmer aus:

Startup Series Group Scheduling - Email Notification of Requested Changes to Participants

Jeder wird gebeten zu antworten. Ein Klick auf Respond to Request springt direkt zur Anfrage. Oder Sie finden es über die Liste der Anfragen aus dem Flash-Alert-Link in der oben gezeigten Besprechung.

Startup Series Group Scheduling - List of Requests

Neues UX für Teilnehmer, die auf Anfragen reagieren

Hier ist das Formular, das Teilnehmer sehen, wenn sie auf eine Anfrage antworten:

Startup Series Group Scheduling - Participants View of Responding to a Request

Wenn bereits andere Teilnehmerantworten vorhanden sind, werden diese angezeigt:

Startup Series Group Scheduling - Startup Series Group Scheduling - Participants View of Responding to a Request with Others Responses

Hier ist der obere Teil dieses Formulars in /frontend/views/request-response/_form.php:

Die Gridview listet die vorhandenen Antworten auf, z. Like, Dislike, Neutral und jede persönliche Notiz angehängt.

Dann ist hier der Code für die untere Hälfte des Formulars, der "Like", "Dislike", "Don't Care" für Teilnehmer, aber "Accept and Make Changes" oder "Decline Request" für Besitzer anzeigt.

Startup Series Group Scheduling - Organizers View of Responding to a Request

Teilnehmer, die gesalbte Organisatoren sind, werden beide Schaltflächen angezeigt und können entweder ihre Meinung äußern oder die Änderung vornehmen oder ablehnen.

Hier ist die E-Mail-Benachrichtigung, dass eine Änderung akzeptiert wurde:

Startup Series Group Scheduling - Email Notification that Change was Accepted

Natürlich werden eine aktualisierte Einladung und Kalenderdateien an alle gesendet, wenn eine Änderung vorgenommen wird.

Immer mehr Verbesserungen zu machen

Ich hoffe, Sie haben diese zwei Episoden (heute und Building Your Startup: Meetings With Multiple Participants) genossen. Im Startup-Modus mit einer großen neuen Funktion gibt es immer einen fokussierten, straffen Startaufwand, der viele lose Enden rückgängig macht und Defekte ungeschliffen lässt.

Ein paar Beispiele dafür sind:

  • Wiederkehren von Besprechungen, die Sie abgelehnt oder zurückgezogen haben.
  • Verbesserte Darstellung der Teilnehmerliste in Einladungen.
  • Optionen, um die Teilnehmerliste und / oder ihre einzelnen Status von anderen Teilnehmern privat zu halten.
  • Verbesserte Handhabung und Präsentation von Gruppen-Kontaktinformationen und virtuellen Konferenzdetails, z.B. eine Konferenzleitung und Teilnahmecode.
  • Sichere URL zum Freigeben von Besprechungseinladungen Dies würde es Organisatoren ermöglichen, eine URL auf Facebook oder per E-Mail zu teilen, um neue Teilnehmer einzuladen.

Trotz dieser Unzulänglichkeiten habe ich hart gearbeitet, um dieses Level an Funktionalität und Benutzerfreundlichkeit für Meeting Planner zu erreichen. Ich bin sehr aufgeregt über seinen Fortschritt und höre gutes Feedback von Freunden und Kollegen.

Ich mache heute diese zwei Tutorials und nehme ein paar Tage offline im Wald für einige Ausfallzeiten. Ruhe ist wichtig. In Kontakt mit der Natur zu sein erinnert dich daran, was im Leben wichtig ist - Startups sind nicht immer, eigentlich. Sie können kreative Beschäftigungen sein, wichtig für unser Einkommen und unsere Karriere, sie können in einigen Fällen Menschen helfen, effizienter und produktiver zu leben - aber sie sind oft weit weg von der Erde, von Freundschaften und davon, anderen weniger Glücklichen zu helfen. Das sind alles Dinge, über die ich jeden Tag nachdenke und die ich in meiner Abwesenheit wiederholen werde.

Ich werde mich immer wieder fragen, ob ich alles mache, was ich mit meiner Zeit tun möchte - besonders im Lichte meiner Gehirnoperation.

Ich werde auch die Tatsache beherzigen, dass ich auf Meeting Planner stolz bin, vor allem auf die bisherige Arbeit und ihre wachsende Nützlichkeit. Insgesamt steht die Betaversion des Dienstes kurz vor dem Abschluss.

Mehrere Teilnehmertreffen waren das schwierigste und komplexeste verbleibende Arbeitselement. Mit Blick auf die Zukunft sind Funktionen und Aufgaben moderater, kleiner und leichter zu verwalten. Ich bin gespannt auf seine Zukunftsperspektiven!

Wenn Sie es noch nicht getan haben, planen Sie jetzt Ihr erstes Meeting mit Meeting Planner!

Ein Tutorial zum Thema Crowdfunding ist ebenfalls in Arbeit. Bitte folgen Sie unserer WeFunder Meeting Planner Seite.

Sie können mich auch erreichen @reifman. Ich bin immer offen für neue Feature-Ideen und Themenvorschläge für zukünftige Tutorials.

Bleiben Sie dran für all diese und weitere anstehende Tutorials, indem Sie die Building Your Startup With PHP-Serie ausprobieren.

verwandte Links

Advertisement
Advertisement
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.