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

Membangun Startup Anda: Perintah Penjadwalan Lanjutan

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

Indonesian (Bahasa Indonesia) translation by Yanti Baddolo (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah bagian dari seri Building Your Startup Dengan PHP di Envato Tuts+. Dalam seri ini, saya membimbing Anda melalui peluncuran startup dari konsep ke kenyataan menggunakan aplikasi Meeting Planner saya sebagai contoh nyata. Setiap langkah di sepanjang tutorial ini, saya akan merilis kode Meeting Plannersebagai contoh sumber terbuka yang bisa Anda pelajari. Saya juga akan membahas masalah bisnis terkait startup.

Memperluas Pilihan Penjadwalan

Seiring tahap pengujian alpha Meeting Planner dimulai, celah fitur yang paling jelas adalah ketidakmampuan untuk mengubah sebuah pertemuan setelah dijadwalkan. Tapi ada juga fitur lain yang hilang, seperti mengirim ulang undangan yang hilang di email, menjadwal ulang rapat seutuhnya, atau kemampuan untuk melihat dan mengedit pengaturan kontrol yang dipilih oleh panitia.

Yang menarik, saya juga mulai menyadari bahwa kemampuan untuk menyesuaikan pertemuan dengan mudah setelah mereka dijadwalkan dapat membuat atau menghancurkan merek Meeting Planner. Misalnya, ada banyak teknik sosial dalam penyesuaian pertemuan pasca penjadwalan. Seringkali, Anda perlu bertanya kepada peserta apakah boleh menyesuaikan waktu atau tempat. Mungkin Anda hanya ingin bertemu 15 menit lebih awal atau keesokan harinya pada waktu dan tempat yang sama. Tapi Anda tidak bisa selalu membuat perubahan ini tanpa persetujuan.

Menjaga situs mudah dimengerti dan mudah digunakan dengan semua kemampuan ini adalah tujuan utama saya. Bagaimana cara menambahkan peningkatan fitur tanpa mengacaukan antarmuka pengguna atau terlalu menyembunyikannya? Bagaimana ini bekerja pada antarmuka mobile dan desktop?

Dalam tutorial hari ini, saya akan membahas perluasan navigation bar menggunakan Bootstrap dan dasar-dasar untuk membangun beberapa fitur penjadwalan lanjutan di dalam Meeting Planner. Minggu depan, saya akan meninjau membangun fitur yang lebih kompleks bagi peserta untuk meminta perubahan dan orang lain dapat menerima atau menolaknya.

Saya harap Anda akan mencoba semua fitur penjadwalan baru di situsnya secara langsung dan berbagi pemikiran dan masukan Anda di komentar di bawah ini. Saya berpartisipasi dalam diskusi, tapi Anda juga bisa menghubungi saya @reifman di Twitter. Saya selalu terbuka terhadap gagasan fitur baru untuk Meeting Planner dan juga saran untuk episode untuk seri masa depan.

Sebagai pengingat, semua kode untuk Meeting Planner disediakan open source dan ditulis dalam Framework Yii2 untuk PHP. Jika Anda ingin mempelajari lebih lanjut tentang Yii2, lihat seri paralel saya Pemprograman Dengan Yii2.

Memperluas Navigation Bar

Pertama, mari kita lihat cara memperluas navigation bar yang ada. Berikut adalah daftar fitur yang akan saya tambahkan:

  • Memperbolehkan perubahan untuk tempat, tanggal dan waktu dari meeting setelah telah disepakati.
  • Meminta penyesuaian yang lebih kecil pada sebuah pertemuan, seperti dapatkah kita bertemu satu jam sebelumnya? Atau di tempat lain yang disarankan?
  • Menjadwalkan ulang pertemuan sepenuhnya dengan peserta dan tempat yang sama.
  • Mengulangi pertemuan dengan menggunakan peserta, tempat, hari dalam seminggu dan jam kerja dari pertemuan sebelumnya untuk mempermudah penjadwalan pertemuan baru.
  • Menunjukkan kepada peserta secara kronologis semua kegiatan perencanaan untuk sebuah pertemuan.
  • Melihat dan memperbarui pengaturan untuk rapat.

Seperti yang bisa Anda lihat, tidak hanya ada banyak fungsi untuk dibangun, namun saya juga tidak tahu bagaimana meletakkannya di antarmuka pengguna tanpa menimbulkan kekacauan.

Command bar juga perlu diubah tergantung pada status rapat. Rapat yang berada dalam tahap perencanaan memiliki pilihan yang berbeda daripada pertemuan yang tertunda, dikonfirmasi, atau telah selesai sebelumnya.

Ide UX Awal Kembali ke Bootstrap

Ide awal saya adalah menyediakan link Advanced Settings kecil yang akan menampilkan perintah tersembunyi. Saya bereksperimen dengan ini pada awalnya, tapi itu tidak estetis.

Kemudian, saya meninjau dokumentasi Bootstrap dan menemukan kotak combo dropdown:

Build Your Startup Advanced Scheduling - Bootstrap Documentation of Dropdown

Saya menyukai cara kerjanya. Jadi saya memutuskan untuk menempatkan sebagian besar perintah lanjutan pada tombol dropdown berorientasi kiri.

Inilah contoh bagaimana bentuknya dalam tahap perencanaan sebuah pertemuan:

Build Your Startup Advanced Scheduling - Meeting Planner Button Dropdown

Perhatikan bahwa bootstrap menawarkan kelas untuk menu dropup. Bilah perintah yang ditempatkan di bagian bawah halaman menggunakan dropup sebagai berikut:

Saya juga membuat file view partial yang akan diberikan tergantung pada status rapat. Misalnya, di /frontend/views/meeting/view_confirmed.php, Anda dapat melihat bagian _command_bar_past.php atau _command_bar_confirmed.php disertakan:

Menentukan Akses terhadap Perintah untuk Pengguna yang Berbeda

Saya tidak ingin membiarkan semua orang melihat semua perintahnya. Penyelenggara akan melihat lebih banyak perintah daripada peserta, namun pengaturan pertemuan sering memberi mereka akses juga.

Berikut adalah contoh untuk menentukan apakah akan menampilkan opsi untuk membuka kembali rapat dan membuat perubahan seolah-olah masih dalam tahap perencanaan:

Pilihannya disertakan dalam menu dropdown Bootstrap jika rapat belum melewati tanggal mulai dan penampilnya adalah penyelenggara atau penyelenggara telah memungkinkan peserta melakukan perubahan.

Sekarang, Mari selami membangun beberapa fungsi untuk berbagai perintah ini.

Membangun Perintah Penjadwalan Lanjutan

Tidak mungkin untuk membahas semua fitur baru yang masuk ke fitur penjadwalan ini. Singkatnya, saya akan membahas dasar-dasar dan aspek unik dari berbagai perintah.

Setiap Fitur Akan Lebih Banyak Memakan Waktu

Setelah menerapkan beberapa fitur keamanan yang lebih dalam di Meeting Planner, saya mencoba mematuhi standar pengkodean yang lebih ketat saat menambahkan fitur baru. Saya menghabiskan lebih banyak waktu untuk akses kontroler, cek akses model, dan batasan tingkat.

Selain itu, rilis beta juga akan mendukung lebih banyak peserta dalam sebuah pertemuan, jadi saya harus membuat arsitek kode dengan pemikiran itu saat saya mulai membuatnya.

Secara keseluruhan, semua yang saya lakukan membutuhkan waktu lebih lama dari pada mode prototyping yang cepat.

Saat saya membangun semua fitur pertemuan ini, saya sering merasakan peningkatan beban kerja saat saya menambahkannya basis kode. Anda akan melihat cek ini di kode di bawah ini.

Ada juga perhatian pada log historis Meeting yang akan kita buat terlihat. Jadi setiap tindakan akan sering membutuhkan catatan log. Dan catatan log sangat membantu untuk membatasi rate limit.

Membuat Perubahan pada Rapat

Salah satu cara mudah untuk memungkinkan perubahan pada pertemuan yang telah diselesaikan hanya untuk memungkinkan penyelenggara membukanya kembali, membawanya kembali ke tahap perencanaan. Kemudian, mereka dapat menambahkan waktu dan tempat tanggal, memilih yang baru, dan menyelesaikan rapat lagi.

Saya juga ingin panitia memberdayakan peserta untuk melakukan ini. Pada akhirnya kita perlu membangun kemampuan untuk melihat dan memperbarui pengaturan per pertemuan.

Saya menambahkan pengaturan agar peserta dapat meminta perubahan panitia atau membuatnya secara langsung.

Saat rapat dibuat, pengaturannya diinisialisasi dengan pengaturan default pengguna:

Anda dapat melihat hasil kontroler dan tampilan update baru untuk MeetingSettings di bawah ini:

Build Your Startup Advanced Scheduling - Meeting Settings

Inilah kode /frontend/controllers/MeetingController.php actionReopen():

Dan inilah kode model Meeting.php untuk memindahkan meeting kembali ke mode planning:

withinActionLimit sedang memeriksa berapa kali seseorang mencoba membuka kembali rapat. IncreaseSequence adalah untuk file .ics—sebagai tanggal pertemuan, waktu, dan perubahan tempat, file ics perlu diberitahu.

Gambar di bawah menunjukkan sebuah pertemuan yang telah dikonfirmasi dengan berbagai opsi lanjutan yang tersedia:

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

Saat pengguna mengeklik Make Changes pada menu di atas, status rapat dipindahkan kembali ke perencanaan dan mereka dapat kembali memperbarui tanggal, waktu, dan tempat:

Build Your Startup Advanced Scheduling - Reopened Meeting Planning

Menjadwal ulang sebuah Pertemuan

Jika acara telah menyebabkan peserta menyadari bahwa mereka hanya perlu memulai dari awal, opsi Reschedule membatalkan pertemuan saat ini dan membuat undangan perencanaan baru.

Saat ini, saya membatasi fitur ini ke penyelenggara (bukan peserta), namun saya mungkin akan memperpanjangnya nanti. Metode Meeting.php::Reschedule() mendukung orang yang melakukan tindakan:

Peserta dan tempat terpilih dikloning dalam pertemuan baru.

Mengulang sebuah Pertemuan

Pendekatan lain untuk penjadwalan adalah memungkinkan peserta untuk menduplikat pertemuan sebelumnya. Ke depan, saya mungkin membiarkan pemirsa menentukan peserta, tempat dan waktu mana yang diduplikasi, tapi untuk saat ini, Meeting Planner menciptakan sebuah pertemuan baru dengan peserta yang sama di tempat yang sama – dan hari dan waktu yang sama dua minggu kedepan.

MeetingTime :: createTimePlus() di bawah ini menambahkan Meeting Time pada hari dan minggu yang sama, tapi satu minggu ke depan, bahkan jika pertemuan asli terjadi beberapa bulan yang lalu. Perulangan while dibutuhkan untuk pertemuan yang lebih tua.

Mengirim Ulang Undangan

Saya juga membuat fitur kirim ulang jika peserta tidak menerima undangan asli atau konfirmasi akhir mereka.

Saya berencana untuk membangun kembali fungsi email keluar untuk bekerja secara asinkron dan mempermudah pengiriman ulang, namun untungnya metode saat ini berjalan dengan baik dalam skenario pengiriman ulang dengan sedikit perubahan.

Rekaman Pertemuan

Sepanjang rangkaian, kita telah membangun log dari setiap perubahan yang dilakukan pada pertemuan. Sekarang ada cara bagi peserta untuk melihat sejarah perencanaan. Seperti ini:

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

MeetingLogController.php memeriksa bahwa pemirsa adalah peserta rapat dan menyiapkan data untuk melihat log:

Lalu /frontend/views/meeting-log/index.php merender data seperti terlihat diatas:

Apa Selanjutnya?

Saya sekarang sedang dalam kode sprint yang intens untuk melengkapi rilis beta. Para editorial di Envato Tuts+ telah mencoba yang terbaik untuk mengalihkan perhatian saya dengan robot pengendali pikiran dan bunyi seperti OKCupid dari aplikasi workflow iOS mereka, namun gagal. Pembangunan Meeting Planner terus berlanjut dengan cepat.

Memecahkan teknik sosial dan UX bagi peserta pertemuan untuk meminta dan merespons penyesuaian penjadwalan yang lebih kecil dapat meningkatkan atau menghancurkan merek Meeting Planner, dan itulah yang paling saya kerjakan.

Jika belum, cobalah atur jadwal rapat pertama Anda dengan Meeting Planner. Saya juga berencana untuk menulis tutorial tentang crowdfunding, jadi mohon pertimbangkan untuk mengikuti halaman Meeting Planner WeFunder kami. Anda juga bisa menghubungi saya lewat @reifman. Saya selalu terbuka terhadap gagasan dan saran fitur baru untuk tutorial masa depan.

Nantikan terus untuk semua tutorial seperti ini dan yang lebih baru lagi dengan melihat seri Building Your Startup With PHP.

Link Terkait

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.