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

Erstellen Sie Ihr Startup: Anfordern von Zeitplanänderungen

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Advanced Scheduling Commands
Building Your Startup: Meetings With Multiple Participants

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 Envato Tuts + Erstellen Sie Ihr Startup mit PHP-Serie. 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.

Ändern Sie Ihre Besprechungspläne

Als die Alpha-Testphase des Meeting-Planers begann, war die deutlichste Merkmalslücke die Unfähigkeit, ein Meeting zu ändern, nachdem es geplant wurde. Es ist kein einfaches Problem. Ist es in Ordnung, ein Meeting ohne die Erlaubnis eines Teilnehmers zu ändern? Oder solltest du fragen? Oder machen Sie beides, abhängig von Ihrer Rolle bei der Organisation des Meetings? Was, wenn Sie nur fragen wollen, ob es in Ordnung ist, sich 15 Minuten später zu treffen - das sollte einfach sein, oder?

Um all dies zu lösen, musste man sich über die sozialen Aspekte der Anpassung eines Meetings Gedanken machen.

Im Laufe der Zeit wurde mir klar, dass die Möglichkeit, Besprechungen nach der Planung einfach anpassen zu können, die Marke Meeting Planner treffen oder brechen könnte.

In unserer letzten Episode zu Advanced Scheduling habe ich Make Changes implementiert, die es einem Organisator oder Teilnehmer mit Organisationsberechtigungen ermöglichen, das Meeting im Wesentlichen ohne Erlaubnis zu planen. Im heutigen Tutorial führe ich Sie durch die Erstellung der Infrastruktur für Anforderungsänderungen. Es erfordert, dass Teilnehmer Änderung (en) anfordern und andere dann akzeptieren oder ablehnen können, was sich auf die endgültigen Details des Besprechungskalenders auswirkt.

Während Sie lesen, hoffe ich, dass Sie die neue Funktion "Änderung anfordern" auf der Live-Site ausprobieren und Ihre Gedanken und Ihr Feedback in den Kommentaren teilen. 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.

Lass uns anfangen.

Änderungswünsche für Gebäude

Ein hoher Berg zum Klettern

Abgesehen von der Besprechungsansicht und den Planungsfunktionen erforderte Request Changes mehr Zeit und neuen Code als jedes andere Feature in diesem Projekt.

Wie ich in der letzten Folge erwähnt habe, dauert das Codieren von allem mit Basissicherheit etwas länger als Rapid Prototyping, aber das Entwerfen und Erstellen dieses Features hat auch viele andere Plattformbereiche berührt:

  • Entwerfen mit dem Social Engineering des Anforderns und Vornehmens von Zeitplanänderungen.
  • Halten Sie die UX für Änderungsanforderungen einfach und helfen Sie Benutzern, Änderungsanforderungen anzufordern und darauf zu reagieren, ohne die Oberfläche zu überladen.
  • Die Bearbeitung von Anfragen für 1: 1-Besprechungen wäre einfach, aber die Codierung für die kommende Funktion für mehrere Teilnehmer würde eine viel komplexere Infrastruktur erfordern.
  • Verarbeiten der Antworten auf Anfragen mit mehreren Teilnehmern voraus.
  • Benachrichtigung per E-Mail über neue und zurückgezogene Anfragen, akzeptierte und abgelehnte Antworten.
  • Aktualisieren der Besprechungsbestätigung und der Kalenderdetails, wenn angenommene Anfragen den Zeitplan beeinflussen.

Dies ist zwar kein perfektes Bild der Änderungen für dieses Feature, hier finden Sie jedoch Screenshots des möglichen Produktions-Server-Code-Pull.

Hier sind die Änderungen des bestehenden Codes:

Build Your Startup Request Scheduling Changes - Git Pull File Changes

Und hier sind die neuen Dateien:

Build Your Startup Request Scheduling Changes - Git Pull New Files

Es gab eine Menge neuen Code mit dieser Funktion.

Die Tabellen und ihre Migrationen

Letztendlich entschied ich mich für eine Architektur, die um zwei Tische herum gebaut wurde. Der erste war Requests:

Hier sind die Konstanten, die das Modell weiter erklären:

Es gibt zwei Möglichkeiten, die Zeit anzupassen: TIME_ADJUST_ABIT, d. H. Intervalle von Minuten oder Stunden früher oder später als die gewählte Zeit, oder TIME_ADJUST_OTHER, insgesamt eine andere Besprechungszeit.

Und die zweite Tabelle war RequestResponses:

Grundsätzlich, wer hat die Änderung angefordert, wer hat darauf geantwortet und was die Antwort war: Akzeptieren oder ablehnen.

Die zweite Tabelle wird für eine Umgebung mit mehreren Teilnehmern benötigt.

Eine Änderung anfordern

Meeting-Organisatoren und Teilnehmer können über das Drop-down-Menü Options , das wir in der letzten Episode erstellt haben, auf Request Changes zugreifen:

Build Your Startup Request Scheduling Changes - Options Menu Request Changes

Das Anfrageänderungsformular

RequestController.php actionCreate() lädt das Formular, von dem sich die Anfrage des Benutzers ändert:

Build Your Startup Request Scheduling Changes - Request a Change Form

Und hier begann die Komplexität. Welche Arten von Änderungen könnten die Teilnehmer beantragen?

  • Möchtest du dich früher oder später treffen?
  • Willst du dich zu einer ganz anderen Zeit treffen?
  • Möchtest du dich an einem anderen Ort treffen?

Hinweis: Ich habe die Möglichkeit, neue Orte und Zeiten hinzuzufügen, noch nicht implementiert. Zurzeit können Sie alternative Datums- und Ortsangaben von allen während des Planungsprozesses angebotenen Daten auswählen.

Ein Drop-Down früherer und späterer Zeiten

Der Code zum Erstellen der Dropdown-Liste war kompliziert. Ich habe es so gemacht, dass man sich mal zweieinhalb Stunden früher oder später aussuchen konnte, in 15-Minuten-Schritten nahe der ursprünglichen Zeit und danach in 30-Minuten-Schritten:

Ich füllte $altTimesList mit Schlüsseln jeder möglichen Zeit mit Werten der freundlichen Zeit, die für die Zeitzone des Benutzers justiert wurde. Dann habe ich ksort() verwendet, um das Dropdown zu sortieren, so dass frühere Zeiten früher auftauchten.

Einer der Berater des Meeting Planners (ich habe momentan nur einen), schlug vor, die aktuell ausgewählte Meetingzeit anzuzeigen, die ich unten gemacht habe. Ich habe auch ein Trennzeichen mit der deaktivierten Option in einem Dropdown hinzugefügt. Es teilt frühere Zeiten von späteren Zeiten, ist aber nicht wählbar:

Build Your Startup Request Scheduling Changes - Enhanced Request Form with Separator

Hier ist der Dropdown-Code, der zeigt, wie das Trennzeichen basierend auf seinem $currentStart-Indexschlüssel deaktiviert wird:

Und wenn die Teilnehmer eine der anderen Zeiten auswählen möchten, gibt es JQuery, um die Dropdown-Listen zu ändern, was eine weitere Komplexität beim Erstellen der Formulare darstellt:

Hier ist /frontend/web/js/request.js:

So sieht das Formular aus, wenn die alternativen Zeiten ausgeblendet sind:

Build Your Startup Request Scheduling Changes - Selecting a different place

Unterschiedliche Orte sind nur in die Ortsauswahlliste integriert (wie Sie mit dem oberen, vorgestellten Bild sehen können).

Bearbeitung der Anfrage

Sobald die Anfrage gestellt wurde, teilen wir dem Anfragenden mit, dass andere Konferenzteilnehmer benachrichtigt werden. Und wenn aktive Anfragen für eine Besprechung vorhanden sind, gibt es eine Verknüpfung zu View Them:

Build Your Startup Request Scheduling Changes - Meeting page View Requests

Ich entschied, dass dies ein einfacher, übersichtlicher Ansatz für Menschen sein würde, um auf Anfragen zuzugreifen.

Die Liste der Besprechungsanfragen

Hier ist die Liste der Anfragen für ein Meeting, meistens nur eines:

Build Your Startup Request Scheduling Changes - List of Meeting Requests

Request::buildSubject() erstellt die obige Zeichenfolge basierend auf dem Inhalt der Anfrage, d. H. Zeit und / oder Ort ändern:

Diese Funktion wird auch in E-Mail-Benachrichtigungen wiederholt verwendet.

Es gibt auch Einschränkungen in RequestController.php, die verhindern, dass Benutzer mehr als eine Anfrage pro Meeting gleichzeitig bearbeiten können:

Hier ist die Ansichtsanforderungsseite mit der Einschränkung:

Build Your Startup Request Scheduling Changes - Viewing a Request

Wenn es Ihre eigene Anfrage ist, können Sie Ihre Anfrage zurückziehen.

Wie Sie sehen können, gab es viele verschiedene UX-Funktionen, die dafür entwickelt wurden. Und ich habe es dir nicht gezeigt, wenn andere Leute als der Anfragende antworten.

E-Mails zur Anfrage- und Antwortbenachrichtigung

Bei der Erstellung dieser Funktionen habe ich mich dazu entschlossen, generic_html - und generic_text -E-Mail-Vorlagen sowie eine wiederverwendbare Funktion Request::notify() zu erstellen, um die Zustellung verschiedener Arten von Ansagen rund um Meeting Planner zu vereinfachen.

Hier ist die Methode Request::create() zum Vorbereiten einer E-Mail:

Das $content-Array wird für den E-Mail-Betreff, die Nachrichtenüberschrift und die Absätze ausgefüllt, während das $button-Array für jede Befehlsschaltfläche wie beispielsweise Respond to Request oder View Meeting verwendet wird.

Hier ist die notify() -Methode, ähnlich den früheren Aktionen send() und finalize() ,die E-Mails senden:

Im Wesentlichen basiert das generic_html.php-Layout auf der einfachen textuellen Update-Vorlage, über die ich in unseren Tutorials für E-Mail-Vorlagen gesprochen habe. Es bietet eine gut formatierte Möglichkeit, Teilnehmer per E-Mail mit ein paar Absätzen zu aktualisieren.

Hier ist die generische_html.php Ansichtsdatei, die die $content und $button Daten enthält. Es prüft auf einen zweiten und dritten Absatz, z.B. $p2, $p3und $button data:

Hier ist ein Beispiel für eine Benachrichtigung, dass Rob Smith mich gebeten hat, die Uhrzeit und den Ort unserer Besprechung zu ändern (generiert aus dem obigen Code):

Build Your Startup Request Scheduling Changes - Email Notification of Requested Change

Responding to Requests

Wenn ich auf Respond to Request klicke, komme ich zur Methode actionCreate() des RequestResponse-Controllers:

Build Your Startup Request Scheduling Changes - Respond to Request Form - Accept or Decline

Während der Anfrage-UX habe ich die Möglichkeit für Personen integriert, Notizen zu schreiben, die Kontext für die Anfragen und Antworten bereitstellen.

Eine Herausforderung dieses Formulars bestand darin, zu bestimmen, wie Antworten auf verschiedene Controller-Methoden geleitet werden, auf deren Grundlage der Absenden-Button geklickt wurde. Mit anderen Worten, Sie unterscheiden zwischen verschiedenen Klick-Klicks für die Schaltfläche "Senden".

Hier ist /frontend/views/request-response/_form.php:

Im Wesentlichen habe ich nur name Werte von "accept" oder "reject" zu jeder Schaltfläche hinzugefügt. Dann wird dies wie gezeigt als gebuchter Wert geliefert:

Wenn der Responder die Anfrage akzeptiert oder ablehnt, wird eine Flash-Nachricht angezeigt und eine E-Mail gesendet. Außerdem hat das Meeting keine aktiven Anfragen mehr zum Anzeigen:

Build Your Startup Request Scheduling Changes - Meeting page after Request accepted

Hier ist die Requested Change Accepted-Benachrichtigungs-E-Mail:

Build Your Startup Request Scheduling Changes - Email notification of requested change being accepted

In Request::accept() passiert viel:

Vor dem Senden der E-Mail wird der Besprechungsplan aktualisiert, um ein neues Datum / eine neue Uhrzeit und / oder einen neuen Ort anzuzeigen. Nach dem Senden der E-Mail ist das Meeting abgeschlossen. Dies liefert ein neues Meeting-Update mit der aktualisierten Kalenderdatei an alle Teilnehmer:

Build Your Startup Request Scheduling Changes - Updating Meeting Notice

Was kommt als nächstes?

Ich hoffe, dir hat dieses Tutorial gefallen. Der Aufbau dieses Features dauerte länger als ich mir erhofft hatte, ist aber gut ausgegangen. Ich denke, es fügt der Planung mit Meeting Planner eine Dimension hinzu, die von anderen Services nicht erreicht wird.

Falls noch nicht geschehen, planen Sie Ihr erstes Meeting mit Meeting Planner. Trotz der Ablenkungen (Codierung ist hart) habe ich weiterhin unglaubliche Fortschritte in Richtung der Beta-Version gemacht:

Ich plane auch, ein Tutorial über Crowdfunding zu schreiben, also beachte bitte unsere WeFunder Meeting Planner Seite.

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

Bleiben Sie dran für all diese und weitere anstehende Tutorials, indem Sie die Building Your Startup With PHP-Serie ausprobieren. Und sehen Sie sich auf jeden Fall unsere Programmierung mit Yii2-Serie (Envato Tuts +) an.

verwandte Links

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.