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

Erstellen Sie Ihren Start: Erweiterte Zeitplanungsbefehle

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Automatic Time-Zone Detection
Building Your Startup: Requesting Scheduling Changes

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.

Zeitplanoptionen erweitern

Als die Alpha-Testphase des Meeting-Planers begann, war die deutlichste Merkmalslücke die Unfähigkeit, ein Meeting zu ändern, nachdem es geplant wurde. Aber es fehlten auch noch andere Funktionen, wie zum Beispiel das Versenden einer Einladung, die in E-Mails verloren gegangen ist, die Umplanung einer Besprechung oder das Anzeigen und Bearbeiten der vom Organisator ausgewählten Steuerungseinstellungen.

Interessanterweise wurde mir auch klar, dass die Möglichkeit, Besprechungen nach der Planung einfach anpassen zu können, die Marke Meeting Planner treffen oder brechen könnte. Zum Beispiel gibt es viel Social-Engineering in Post-Scheduling-Meeting-Anpassung. Oft müssen Sie den / die Teilnehmer fragen, ob es in Ordnung ist, die Zeit oder den Ort anzupassen. Vielleicht möchten Sie sich nur 15 Minuten früher oder am nächsten Tag zur gleichen Zeit und am gleichen Ort treffen. Aber Sie können diese Änderungen nicht ohne Zustimmung vornehmen.

Die Seite einfach zu verstehen und einfach zu bedienen mit all diesen Fähigkeiten ist meine wichtigste Richtlinie. Wie könnte ich eine zunehmende Anzahl von Funktionen hinzufügen, ohne die Benutzeroberfläche zu überladen oder zu überdecken? Wie würde das auf mobilen und Desktop-Schnittstellen funktionieren?

Im heutigen Tutorial werde ich die Erweiterung der Navigationsleiste mithilfe von Bootstrap und die Grundlagen zum Erstellen einiger der erweiterten Planungsfunktionen in Meeting Planner behandeln. In der nächsten Woche werde ich das komplexere Feature für die Teilnehmer erstellen, um Änderungen anzufordern und für andere, sie anzunehmen oder abzulehnen.

Ich hoffe, dass Sie alle neuen Planungsfunktionen 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.

Erweitern der Navigationsleiste

Sehen wir uns zunächst an, wie die vorhandene Navigationsleiste erweitert werden kann. Hier ist eine Liste der Funktionen, die ich hinzufügen wollte:

  • Änderungen an Orten, Daten und Uhrzeiten einer Besprechung zulassen, nachdem sie abgeschlossen wurde
  • Anfordern von kleineren Anpassungen an einem Meeting, wie können wir uns eine Stunde früher treffen? Oder an diesem anderen vorgeschlagenen Ort?
  • Ein Meeting mit den gleichen Teilnehmern und Orten neu planen.
  • Wiederholen eines Meetings mit Teilnehmern, Orten, Wochentagen und Tageszeiten eines vergangenen Meetings, um das Planen eines neuen Meetings zu erleichtern.
  • Zeigen Sie den Teilnehmern eine chronologische Übersicht aller Planungsaktivitäten für ein Meeting.
  • Anzeigen und Aktualisieren der Einstellungen für ein Meeting

Wie Sie sehen können, war nicht nur eine Menge Funktionalität zu erstellen, sondern ich hatte auch keine klare Idee, wo es in der Benutzeroberfläche platziert werden sollte, ohne ein Durcheinander zu verursachen.

Die Befehlsleiste musste auch abhängig vom Status einer Besprechung geändert werden. Besprechungen, die sich in der Planungsphase befanden, hatten andere Optionen als ausstehende, bestätigte oder abgeschlossene Besprechungen.

Frühe UX-Ideen führten zurück zum Bootstrap

Meine ursprüngliche Idee war es, einen kleinen Link für die erweiterten Einstellungen bereitzustellen, der eine versteckte Befehlsleiste anzeigen würde. Ich experimentierte zunächst damit, aber es war nicht ästhetisch ansprechend.

Dann habe ich die Bootstrap-Dokumentation überprüft und das Dropdown-Kombinationsfeld gefunden:

Build Your Startup Advanced Scheduling - Bootstrap Documentation of Dropdown

Es hat mir gefallen, wie es funktioniert hat. Daher habe ich beschlossen, die meisten erweiterten Befehle in eine nach links gerichtete Dropdown-Schaltfläche zu platzieren.

Hier ist ein Beispiel dafür, wie es in der Planungsphase eines Meetings aussieht:

Build Your Startup Advanced Scheduling - Meeting Planner Button Dropdown

Beachten Sie, dass Bootstrap eine Klasse für Drop-up-Menüs bietet. Eine Befehlsleiste am unteren Rand der Seite verwendet Drop-up wie folgt:

Ich habe auch Teilansichtsdateien erstellt, die abhängig vom Status einer Besprechung gerendert werden. Zum Beispiel können Sie in /frontend/views/meeting/view_confirmed.php sehen, dass entweder _command_bar_past.php oder _command_bar_confirmed.php partial enthalten ist:

Ermitteln des Zugriffs auf Befehle für verschiedene Betrachter

Ich wollte nicht zulassen, dass jeder alle Befehle sieht. Organisatoren sehen mehr Befehle als Teilnehmer, aber die Besprechungseinstellungen gewähren ihnen oft auch Zugriff.

Im Folgenden finden Sie ein Beispiel dafür, ob Sie die Option zum erneuten Öffnen eines Meetings anzeigen und Änderungen daran vornehmen möchten, als ob es sich noch in der Planungsphase befände:

Die Option ist im Drop-down-Menü Bootstrap enthalten, wenn das Meeting sein Startdatum nicht überschritten hat und der Viewer der Organisator ist oder der Organisator den Teilnehmern erlaubt hat, Änderungen vorzunehmen.

Lassen Sie uns nun einige Funktionen für diese verschiedenen Befehle entwickeln.

Erstellen der erweiterten Planungsbefehle

Es ist nicht möglich, alle neuen Arbeiten abzudecken, die mit diesen Planungsfunktionen verbunden waren. Der Kürze halber werde ich nur die Grundlagen und alle einzigartigen Aspekte verschiedener Befehle behandeln.

Jedes Feature dauert jetzt länger

Nach der Implementierung einiger tiefer gehender Sicherheitsfunktionen in Meeting Planner versuche ich, strengere Codierungsstandards einzuhalten, wenn ich neue Funktionen hinzufüge. Ich verbringe mehr Zeit mit Controllerzugriff, Modellzugriffsüberprüfungen und Ratenbegrenzung.

Außerdem wird die Beta-Version mehrere Teilnehmer in einem Meeting unterstützen, daher muss ich den Code so entwickeln, wie ich es mache.

Insgesamt dauert alles, was ich mache, etwas länger als im Rapid-Prototyping-Modus.

Als ich all diese verschiedenen Meetingfeatures erstellte, spürte ich häufig die erhöhte Arbeitslast, als ich die Codebasis hinzufügte. Sie werden diese Überprüfungen im folgenden Code bemerken.

Es gibt auch eine Aufmerksamkeit auf das historische Meetingprotokoll, das wir jetzt sichtbar machen werden. Daher erfordert jede Aktion oft einen Protokolleintrag. Und die Protokolldatensätze sind hilfreich, um die Ratenbegrenzung zu unterstützen.

Änderungen an einer Besprechung vornehmen

Eine einfache Möglichkeit, Änderungen an einem abgeschlossenen Meeting zuzulassen, besteht lediglich darin, dem Organisator zu ermöglichen, es wieder zu öffnen und es in die Planungsphase zurückzubringen. Anschließend können sie Datumsangaben und -orte hinzufügen, neue auswählen und das Meeting erneut abschließen.

Ich wollte auch, dass der Organisator seine Teilnehmer dazu befähigt, dies zu tun. Dies erforderte schließlich den Aufbau und die Aktualisierung von Meeting-Einstellungen.

Ich habe Einstellungen hinzugefügt, um es den Teilnehmern zu ermöglichen, entweder Änderungen von Organisatoren anzufordern oder sie direkt zu machen.

Wenn ein Meeting erstellt wird, werden seine Einstellungen mit den Standardeinstellungen des Benutzers initialisiert:

Sie können die Ergebnisse der neuen Controller- und Update-Ansicht für MeetingSettings unten sehen:

Build Your Startup Advanced Scheduling - Meeting Settings

Hier ist /frontend/controllers/MeetingController.php's actionReopen():

Und hier ist der Meeting.php-Modellcode, um das Meeting zurück in den Planungsmodus zu verschieben:

Das withinActionLimit überprüft, wie häufig versucht wird, ein Meeting erneut zu öffnen. IncreaseSequence ist für die .ics-Datei vorgesehen. Wenn sich Datum, Uhrzeit und Ort des Meetings ändern, muss die ics-Datei angegeben werden.

Das folgende Bild zeigt ein Meeting, das mit einer Vielzahl der verfügbaren erweiterten Optionen bestätigt wurde:

Build Your Startup Advanced Scheduling - Command bar with fully loaded Dropdown menu

Wenn der Benutzer im obigen Menü auf Make Changes klickt, wird der Status der Besprechung zurück in die Planung verschoben und sie können zurückkehren, um Datum, Uhrzeit und Ort zu aktualisieren:

Build Your Startup Advanced Scheduling - Reopened Meeting Planning

Planen Sie eine Besprechung neu

Wenn Ereignisse die Teilnehmer zu der Erkenntnis geführt haben, dass sie nur von vorn beginnen müssen, bricht die Option "Reschedule " das aktuelle Meeting ab und erstellt eine neue Planungseinladung.

Momentan beschränke ich diese Funktion auf Organisatoren (keine Teilnehmer), aber ich kann sie später erweitern. Die Methode "Meeting.php::Reschedule()" unterstützt die Person, die die Aktion ausführt:

Die Teilnehmer und der ausgewählte Ort werden in dem neuen Meeting geklont.

Wiederholen Sie eine Besprechung

Ein anderer Ansatz für die Planung besteht darin, Teilnehmern das Duplizieren vergangener Meetings zu ermöglichen. In Zukunft könnte ich den Betrachter entscheiden lassen, welche Teilnehmer, Orte und Zeiten dupliziert werden, aber für den Moment erstellt Meeting Planner ein neues Meeting mit den gleichen Teilnehmern am selben Ort - und einem identischen Tag der Woche und Uhrzeit des Tages und zwei Wochen in der Zukunft.

MeetingTime :: createTimePlus () unten fügt eine Besprechungszeit am selben Wochentag und zu derselben Tageszeit hinzu, aber eine Woche in der Zukunft, auch wenn das ursprüngliche Meeting vor Monaten stattgefunden hat. Die while-Schleife wurde für ältere Meetings benötigt.

Einladungen erneut senden

Ich habe auch ein Neusend-Feature erstellt, falls ein Teilnehmer seine ursprüngliche Einladung oder endgültige Bestätigung nicht erhalten hat.

Ich plane, die ausgehende E-Mail-Funktion neu zu erstellen, um asynchron zu arbeiten und die erneute Zustellung zu vereinfachen, aber zum Glück funktionierten die aktuellen Methoden im Resend-Szenario mit wenigen Änderungen.

Besprechungsverlauf

Während der gesamten Serie haben wir ein Protokoll aller an Meetings vorgenommenen Änderungen erstellt. Es gibt jetzt eine Möglichkeit für Teilnehmer, die Planungshistorie anzuzeigen. Es sieht aus wie das:

Build Your Startup Advanced Scheduling - Viewing the meeting history of events

Die MeetingLogController.php überprüft, ob der Viewer ein Teilnehmer der Besprechung ist und bereitet die Daten für die Anzeige des Protokolls vor:

Dann rendert das /frontend/views/meeting-log/index.php die oben gezeigten Daten:

Was kommt als nächstes?

Ich bin jetzt auf einem intensiven Code-Sprint, um die Beta-Version abzuschließen. Die Redaktionsgötter von Envato Tuts + haben ihr Bestes gegeben, um mich mit Gedanken kontrollierenden Robotern und OKCupid-ähnlichen Signaltönen aus ihrer iOS-gestützten Workflow-Anwendung abzulenken, aber sie sind gescheitert. Die Entwicklung des Meeting-Planers geht zügig voran.

Durch die Lösung von Social Engineering und UX für die Besprechung von Teilnehmern, um kleinere Terminanpassungen anzufordern und darauf zu reagieren, könnte die Marke Meeting Planner durchbrochen oder beschädigt werden, und daran arbeite ich am meisten.

Falls noch nicht geschehen, planen Sie Ihr erstes Meeting mit Meeting Planner. Ich plane auch, ein Tutorial über Crowdfunding zu schreiben, also beachte bitte unsere 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.