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

Membangun Startup Anda: Meminta Perubahan Penjadwalan

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

Indonesian (Bahasa Indonesia) translation by Ilham Saputra (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah bagian dari Envato Tuts+ seri Membangun Startup Anda Dengan PHP. Dalam seri ini, saya memandu Anda melalui peluncuran startup dari konsep ke realitas menggunakan aplikasi saya Meeting Planner sebagai contoh nyata. Setiap langkah di sepanjang jalan, aku akan melepaskan kode Meeting Planner sebagai open source contoh Anda dapat belajar dari. Saya juga akan menangani masalah-masalah startup yang terkait dengan bisnis ketika mereka muncul.

Mengubah Rencana Pertemuan Anda

Saat fase pengujian alfa Meeting Planner dimulai, kesenjangan fitur paling jelas adalah ketidakmampuan untuk mengubah pertemuan setelah dijadwalkan. Ini bukan masalah yang mudah. Apakah boleh saja mengubah pertemuan tanpa izin dari peserta? Atau haruskah Anda bertanya? Atau apakah baik, tergantung pada peran Anda dalam mengatur pertemuan? Bagaimana jika Anda hanya ingin bertanya apakah boleh bertemu 15 menit kemudian—itu seharusnya mudah, bukan?

Memecahkan semua ini membutuhkan beberapa refleksi pada aspek sosial dalam menyesuaikan pertemuan.

Seiring waktu, saya menyadari bahwa kemampuan untuk menyesuaikan pertemuan dengan mudah setelah mereka dijadwalkan dapat membuat atau menghancurkan merek Meeting Planner.

Dalam episode terakhir kami di Penjadwalan Lanjutan, saya menerapkan Make Changes, yang memungkinkan penyelenggara atau peserta dengan mengatur izin untuk secara esensial menjadwalkan ulang pertemuan tanpa meminta izin. Dalam tutorial hari ini, saya akan memandu Anda membangun infrastruktur Request Changes. Ini mengharuskan peserta meminta perubahan dan kemudian yang lain dapat menerima atau menolaknya, mempengaruhi rincian kalender rapat akhir.

Saat Anda membaca, saya harap Anda akan mencoba fitur "minta perubahan" baru di situs langsung dan berbagi pemikiran dan umpan balik Anda di komentar di bawah. Saya berpartisipasi dalam diskusi, tetapi Anda juga dapat menghubungi saya @reifman di Twitter. Saya selalu terbuka untuk ide-ide fitur baru untuk Meeting Planner serta saran untuk episode seri mendatang.

Sebagai pengingat, semua kode untuk Meeting Planner diberikan sumber terbuka dan ditulis dalam Kerangka Yii2 untuk PHP. Jika Anda ingin mempelajari lebih lanjut tentang Yii2, periksa seri pararel saya Pemrograman dengan Yii2.

Mari kita mulai.

Perubahan Permintaan Bangunan

Gunung Tinggi untuk Mendaki

Selain dari tampilan pertemuan dan fitur penjadwalan, Permintaan Perubahan membutuhkan lebih banyak waktu dan kode baru daripada fitur lainnya pada proyek ini.

Seperti yang saya sebutkan di episode terakhir, pengkodean semuanya dengan keamanan dasar membutuhkan waktu lebih lama daripada pembuatan prototipe yang cepat, tetapi merancang dan membuat fitur ini juga menyentuh banyak area platform lainnya:

  • Merancang dengan rekayasa sosial untuk meminta dan membuat perubahan jadwal.
  • Menyimpan UX untuk permintaan perubahan sederhana, membantu orang-orang meminta dan menanggapi permintaan perubahan tanpa mengacaukan antarmuka.
  • Menangani permintaan untuk pertemuan 1:1 akan mudah, tetapi pengkodean untuk beberapa fitur peserta yang akan datang akan membutuhkan infrastruktur yang jauh lebih canggih.
  • Menangani tanggapan atas permintaan dengan beberapa peserta di depan.
  • Mengirim pemberitahuan melalui email tentang permintaan baru dan penarikan, tanggapan yang diterima dan ditolak.
  • Memperbarui konfirmasi rapat dan detail kalender saat permintaan yang diterima memengaruhi jadwal.

Jadi, meskipun ini bukan gambar sempurna dari perubahan hanya untuk fitur ini, berikut adalah tangkapan layar dari penarikan kode server produksi akhir.

Berikut ini perubahan kode yang ada:

Build Your Startup Request Scheduling Changes - Git Pull File Changes

Dan inilah file-file baru:

Build Your Startup Request Scheduling Changes - Git Pull New Files

Ada banyak kode baru yang terlibat dengan fitur ini.

Tabel dan Migrasi Mereka

Pada akhirnya, saya memutuskan pada arsitektur yang dibangun sekitar dua tabel. Yang pertama adalah Requests:

Berikut adalah konstanta yang menjelaskan model lebih lanjut:

Akan ada dua cara untuk menyesuaikan waktu: TIME_ADJUST_ABIT, yaitu interval menit atau jam lebih awal atau lebih lama dari waktu yang dipilih, atau TIME_ADJUST_OTHER, waktu pertemuan yang berbeda sama sekali.

Dan tabel kedua adalah RequestResponses:

Pada dasarnya, siapa yang meminta perubahan, siapa yang menanggapi dan apa tanggapannya: menerima atau menolak.

Tabel kedua diperlukan untuk lingkungan beberapa peserta.

Meminta Perubahan

Penyelenggara rapat dan peserta dapat mengakses Permintaan Perubahan melalui menu Options dropdown yang kami buat di episode terakhir:

Build Your Startup Request Scheduling Changes - Options Menu Request Changes

Formulir Perubahan Permintaan

RequestController.php's actionCreate() memuat formulir dari mana permintaan pengguna berubah:

Build Your Startup Request Scheduling Changes - Request a Change Form

Dan di sinilah kerumitan dimulai. Perubahan apa yang bisa diminta peserta?

  • Apakah Anda ingin bertemu lebih awal atau lebih lama?
  • Apakah Anda ingin bertemu pada waktu yang sama sekali berbeda?
  • Apakah Anda ingin bertemu di tempat yang berbeda?

Catatan: Saya belum menerapkan kemampuan untuk menambahkan tempat dan waktu baru—saat ini, Anda dapat memilih waktu tanggal dan tempat alternatif dari apa pun yang ditawarkan selama proses perencanaan.

Dropdown dari Awal dan Kemudian Times

Kode untuk membuat daftar dropdown sangat rumit. Saya membuatnya sehingga Anda dapat memilih waktu dua setengah jam lebih awal atau lebih, dengan penambahan 15 menit mendekati waktu awal dan 30 menit setelah itu:

Saya mengisi $altTimesList dengan kunci setiap waktu yang mungkin dengan nilai-nilai waktu ramah yang disesuaikan dengan zona waktu pengguna. Kemudian saya menggunakan ksort() untuk mengurutkan dropdown sehingga waktu sebelumnya muncul sebelum nanti.

Salah satu penasehat Meeting Planner (saya hanya punya satu saat ini), menyarankan untuk menunjukkan waktu rapat yang dipilih saat ini, yang saya lakukan di bawah. Saya juga menambahkan pemisah dengan opsi yang dinonaktifkan dalam dropdown. Ini membagi waktu sebelumnya dari waktu kemudian tetapi tidak dapat dipilih:

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

Berikut adalah kode dropdown, yang menunjukkan cara menonaktifkan pemisah berdasarkan kunci indeks $currentStart:

Dan, ketika peserta ingin memilih salah satu dari waktu lain, ada JQuery untuk mengubah dropdown, kerumitan lain untuk membangun formulir:

Berikut adalah /frontend/web/js/request.js:

Inilah bentuknya dengan waktu alternatif yang tersembunyi:

Build Your Startup Request Scheduling Changes - Selecting a different place

Tempat yang berbeda hanya diintegrasikan ke dalam daftar dropdown tempat (seperti yang Anda lihat dengan gambar unggulan teratas).

Menangani Permintaan

Setelah permintaan dibuat, kami memberi tahu pemohon bahwa peserta rapat lainnya akan diberitahu. Dan, setiap kali ada permintaan aktif untuk rapat, ada tautan ke View Them:

Build Your Startup Request Scheduling Changes - Meeting page View Requests

Saya memutuskan ini akan menjadi pendekatan yang sederhana dan rapi bagi orang-orang untuk mengakses permintaan.

Daftar Permintaan Rapat

Berikut daftar permintaan untuk rapat, paling sering hanya satu:

Build Your Startup Request Scheduling Changes - List of Meeting Requests

Request::buildSubject() membuat string di atas berdasarkan konten permintaan, yaitu waktu dan/atau perubahan tempat:

Fungsi ini digunakan berulang kali dalam pemberitahuan email juga.

Ada juga batasan di RequestController.php yang mencegah pengguna membuat lebih dari satu permintaan per pertemuan dalam satu waktu:

Berikut halaman permintaan tampilan yang menunjukkan pembatasan:

Build Your Startup Request Scheduling Changes - Viewing a Request

Jika itu permintaan Anda sendiri, Anda dapat Menarik Permintaan Anda.

Seperti yang Anda lihat, ada banyak fungsi UX yang beragam untuk dibangun untuk ini. Dan saya belum menunjukkan kepada Anda ketika orang-orang selain yang menanggapi pemohon.

Email Pemberitahuan Permintaan dan Tanggapan

Dalam proses membangun fitur ini, saya memutuskan untuk membuat template email generic_html dan generic_text serta fungsi Request::notify() yang dapat digunakan kembali untuk memudahkan pengiriman berbagai jenis pengumuman di seputar Meeting Planner.

Ini adalah metode Request::create() untuk menyiapkan email:

Array $content diisi untuk subjek email, judul pesan dan paragraf, sementara array $button digunakan untuk tombol perintah apa pun seperti Merespon Permintaan atau Tampilan Rapat.

Berikut ini metode notify(), serupa dengan tindakan sebelumnya send() dan finalize() yang mengirim email:

Pada dasarnya, tata letak generic_html.php didasarkan pada template pembaruan tekstual sederhana yang saya bicarakan dalam tutorial template email kami. Ini menyediakan cara yang diformat dengan baik untuk memperbarui peserta melalui email dengan beberapa paragraf.

Inilah file tampilan generic_html.php yang mengintegrasikan data $content dan $button. Ini memeriksa paragraf kedua dan ketiga, misalnya data $p2, $p3 dan $button:

Berikut contoh pemberitahuan bahwa Rob Smith meminta saya mengubah waktu dan tempat rapat kami (dihasilkan dari kode di atas):

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

Menanggapi Permintaan

Ketika saya mengklik Respon Permintaan, saya dibawa ke metode RequestResponse Controller's actionCreate():

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

Di seluruh permintaan UX, saya memasukkan kemampuan bagi orang untuk menulis catatan yang menyediakan konteks untuk permintaan dan tanggapan.

Salah satu tantangan bentuk ini adalah menentukan bagaimana mengarahkan tanggapan ke metode pengontrol yang berbeda berdasarkan tombol submit mana yang diklik. Dengan kata lain, membedakan antara klik tombol POST yang berbeda.

Berikut adalah /frontend/views/request-response/_form.php:

Pada dasarnya, saya baru saja menambahkan nilai name 'accept' atau 'reject' ke setiap tombol. Kemudian, ini dikirimkan sebagai nilai diposting seperti yang ditunjukkan:

Ketika responden menerima atau menolak permintaan, mereka diperlihatkan pesan flash dan mengirim email. Selain itu, rapat tidak lagi memiliki permintaan aktif untuk ditampilkan:

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

Berikut email pemberitahuan yang Diminta Perubahan Diterima:

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

Banyak hal terjadi di Request::accept() di bawah ini:

Sebelum mengirim email, jadwal pertemuan diperbarui untuk mencerminkan tanggal/waktu baru dan/atau tempat baru. Setelah mengirim email, rapat diselesaikan. Ini memberikan pembaruan rapat baru dengan file kalender yang diperbarui untuk semua peserta:

Build Your Startup Request Scheduling Changes - Updating Meeting Notice

Apa berikutnya?

Saya harap Anda menikmati tutorial ini. Membangun fitur ini membutuhkan waktu lebih lama daripada yang saya harapkan tetapi ternyata cukup baik. Saya pikir itu menambah dimensi untuk penjadwalan dengan Meeting Planner yang tak tertandingi oleh layanan lain.

Jika belum, jadwalkan pertemuan pertama Anda dengan Meeting Planner. Saya terus membuat kemajuan luar biasa menuju rilis beta, meskipun ada gangguan (koding itu sulit):

Saya juga berencana untuk menulis tutorial tentang crowdfunding, jadi mohon pertimbangkan untuk mengikuti halaman WeFunder Meeting Planner kami.

Silakan bagikan komentar Anda di bawah ini. Saya selalu terbuka untuk ide-ide fitur baru dan saran topik untuk tutorial selanjutnya. Anda juga dapat menghubungi saya @reifman.

Ikuti terus semua ini dan lebih banyak lagi tutorial yang akan datang dengan melihat seri Membangun Startup Anda Dengan PHP. Dan pastinya lihat Seri Programming With Yii2 (Envato Tuts+) kami.

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.