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

Membina Permulaan Anda: Meminta Penjadualan Perubahan

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

Malay (Melayu) translation by Seurion (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah sebahagian daripada siri Envato Tuts+ Bangun Permulaan Anda dengan PHP. Dalam siri ini, saya saya membimbing anda melalui pelancaran permulaan dari konsep realiti yang menggunakan aplikasi Mesyuarat Perancang saya sebagai contoh kehidupan sebenar. Setiap langkah di sepanjang jalan, saya akan melepaskan kod Mesyuarat Perancang sebagai contoh sumber terbuka anda boleh belajar daripada. Saya akan juga menangani isu-isu berkaitan dengan permulaan perniagaan yang timbul.

Perubahan Mesyuarat Pelan

Seperti fasa ujian alpha Mesyuarat Perancang mula, jurang mempunyai gambaran paling jelas ialah ketidakupayaan untuk menukar Mesyuarat selepas ia telah dijadualkan. Ia bukanlah satu masalah yang mudah. Adakah ia baik untuk menukar mesyuarat tanpa kebenaran peserta? Atau adakah anda bertanya? Atau melakukan salah satu, bergantung kepada peranan anda dalam menganjurkan Mesyuarat? Bagaimana jika anda hanya ingin bertanya apakah itu baik-baik saja untuk memenuhi 15 minit kemudian — yang harus mudah, betul-betul?

Penyelesaian semua ini memerlukan beberapa aspek yang membayangkan aspek sosial menyesuaikan sesuatu mesyuarat.

Dari masa ke masa, saya menyedari bahawa keupayaan untuk melaraskan mesyuarat dengan mudah selepas mereka telah dijadualkan boleh membuat atau memecahkan jenama Perancang Mesyuarat.

Dalam episod terakhir kami di Penjadualan Lanjutan, saya melaksanakan Buat Perubahan, yang membolehkan penganjur atau peserta dengan keizinan penganjuran untuk menjadualkan semula mesyuarat secara dasar tanpa meminta izin. Dalam tutorial ini, saya akan membantu anda melalui pembinaan Infrastruktur Perubahan Permintaan. Ia menghendaki peserta meminta perubahan dan kemudian orang lain boleh menerima atau menolaknya, yang mempengaruhi butiran kalendar mesyuarat akhir.

Semasa anda membaca, saya harap anda akan mencuba ciri "meminta perubahan" baharu di tapak langsung dan berkongsi pendapat dan maklum balas anda di dalam komen di bawah. Saya mengambil bahagian dalam perbincangan, tetapi anda juga boleh mengunjungi saya @reifman di Twitter. Saya sentiasa terbuka untuk idea-idea ciri baru untuk Perancang Mesyuarat serta cadangan untuk episod siri masa depan.

Sebagai peringatan, semua kod Perancang Mesyuarat disediakan sumber terbuka dan ditulis dalam Rangka Kerja Yii2 untuk PHP. Sekiranya anda ingin mengetahui lebih lanjut mengenai Yii2, periksa siri selari Pemrograman Dengan Yii2.

Mari kita mulakan.

Membina Perubahan Permintaan

Gunung Tinggi untuk Mendaki

Selain daripada pandangan mesyuarat dan ciri penjadualan, Permintaan Perubahan memerlukan lebih banyak masa dan kod baru daripada mana-mana ciri lain pada projek ini.

Seperti yang saya sebutkan dalam episod terakhir, pengekodan segala-galanya dengan asas Keselamatan mengambil sedikit lebih panjang daripada prototaip cepat, tetapi mereka bentuk dan membina ciri-ciri ini juga menyentuh banyak kawasan-kawasan pelantar yang lain:

  • Merancang dengan kejuruteraan sosial meminta dan membuat perubahan jadual.
  • Menjaga UX untuk permintaan perubahan mudah, membantu orang meminta dan memberi respons kepada permintaan perubahan tanpa mengganggu antara muka.
  • Permintaan pengendalian untuk pertemuan 1: 1 akan mudah, tetapi pengekodan untuk ciri peserta yang akan datang memerlukan infrastruktur yang jauh lebih canggih.
  • Mengendalikan maklum balas kepada permintaan dengan berbilang peserta di hadapan.
  • Menghantar pemberitahuan permintaan baru dan ditarik balik, respons yang diterima dan ditolak.
  • Mengemaskini maklumat kalendar dan Mesyuarat pengesahan apabila diterima permintaan menjejaskan Jadual.

Jadi, walaupun ini bukanlah gambar yang sempurna perubahan hanya untuk ciri ini, berikut adalah screenshot daripada tarik kod pelayan akhir pengeluaran.

Berikut adalah perubahan pada kod sedia ada:

Build Your Startup Request Scheduling Changes - Git Pull File Changes

Dan berikut adalah fail-fail baru:

Build Your Startup Request Scheduling Changes - Git Pull New Files

Terdapat banyak kod baru yang terlibat dengan ciri ini.

Jadual-jadual dan Pemindahan Mereka

Pada akhirnya, saya membuat keputusan mengenai seni bina yang dibina di sekitar dua meja. Yang pertama adalah Permintaan:

Inilah pemalar yang menjelaskan model seterusnya:

Terdapat dua cara untuk melaraskan masa: TIME_ADJUST_ABIT, iaitu jarak antara minit atau jam lebih awal atau lebih lama daripada masa yang dipilih, atau TIME_ADJUST_OTHER, waktu mesyuarat yang berbeza sama sekali.

Dan jadual kedua ialah Permintaan Permintaan:

Pada dasarnya, siapa yang meminta perubahan itu, yang memberi respons kepadanya dan apakah tindak balasnya ialah: menerima atau menolak.

Jadual kedua diperlukan untuk persekitaran peserta pelbagai.

Meminta Perubahan

Mesyuarat penganjur dan peserta boleh mencapai Perubahan Permintaan melalui menu Pilihan dropdown yang kami dibina pada episod terakhir:

Build Your Startup Request Scheduling Changes - Options Menu Request Changes

Borang Tukar Permintaan

RequestController.php's actionCreate() beban bentuk daripada permintaan pengguna perubahan:

Build Your Startup Request Scheduling Changes - Request a Change Form

Dan di sinilah kerumitan bermula. Apa jenis perubahan yang boleh diminta peserta?

  • Adakah anda ingin bertemu lebih awal atau lebih awal?
  • Adakah anda ingin bertemu pada masa yang sama sekali berbeza?
  • Adakah anda ingin bertemu di tempat lain?

Nota: Saya belum lagi melaksanakan keupayaan untuk menambah tempat-tempat baru dan masa-masa kini, anda boleh memilih masa tarikh ganti dan tempat dari mana-mana yang ditawarkan semasa proses perancangan.

Penurunan Masa Terdahulu dan Kemudian

Kod untuk membuat senarai jatuh turun adalah rumit. Saya membuatnya supaya anda boleh memilih masa dua setengah jam sebelum atau selepas, dalam kenaikan 15 minit berhampiran dengan masa asal dan kenaikan 30 minit selepas itu:

Saya mengisi $altTimesList dengan kekunci setiap masa yang mungkin dengan nilai masa yang disesuaikan disesuaikan untuk zon waktu pengguna. Kemudian saya menggunakan ksort() untuk menyusun senarai jatuh sebelum ini sebelum muncul.

Salah satu penasihat Perancang Mesyuarat (saya hanya mempunyai satu pada masa ini), mencadangkan menunjukkan masa mesyuarat yang dipilih pada masa ini, yang saya lakukan di bawah. Saya juga menambah pemisah dengan pilihan orang kurang upaya dalam dropdown. Ia membahagikan masa-masa awal dari masa yang akan datang tetapi tidak boleh dipilih:

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

Inilah kod lungsur turun, yang menunjukkan cara untuk melumpuhkan pemisah berdasarkan kunci indeks $currentStart:

Dan, apabila peserta ingin memilih salah satu daripada masa yang lain, terdapat JQuery untuk mengubah dropdown, kerumitan lain untuk membina borang:

Inilah /frontend/web/js/request.js:

Inilah bentuk yang kelihatan seperti dengan masa ganti yang tersembunyi:

Build Your Startup Request Scheduling Changes - Selecting a different place

Tempat yang berbeza hanya disatukan ke dalam senarai dropdown tempat (seperti yang anda lihat dengan imej teratas, dipaparkan).

Mengendalikan Permintaan

Sebaik sahaja permintaan itu dibuat, kami memberitahu pemohon bahawa peserta mesyuarat lain akan diberitahu. Dan, apabila permintaan aktif wujud untuk mesyuarat, ada pautan ke Lihat Mereka:

Build Your Startup Request Scheduling Changes - Meeting page View Requests

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

Senarai Permintaan Mesyuarat

Berikut ialah senarai permintaan mesyuarat, paling kerap hanya satu:

Build Your Startup Request Scheduling Changes - List of Meeting Requests

Permintaan::buildSubject() mewujudkan rentetan di atas berdasarkan kandungan permintaan, iaitu masa dan/atau perubahan tempat:

Fungsi ini digunakan dalam e-mel pemberitahuan serta berkali-kali.

Terdapat juga had dalam RequestController.php yang menghalang pengguna membuat lebih daripada satu permintaan setiap mesyuarat pada satu masa:

Berikut ialah halaman permintaan paparan yang menunjukkan had:

Build Your Startup Request Scheduling Changes - Viewing a Request

Jika ia adalah permintaan anda sendiri, anda boleh Menarik Balik Permintaan Anda.

Seperti yang anda lihat, terdapat banyak fungsi UX yang pelbagai untuk membina ini. Dan saya tidak menunjukkan kepada anda apabila orang lain selain daripada permintaan responden.

Permintaan dan Sambutan Pemberitahuan E-mel

Dalam proses membina ciri-ciri ini, saya membuat keputusan untuk membuat templat e-mel generic_html dan generic_text serta fungsi Permintaan::notifikasi() yang boleh digunakan untuk memudahkan penghantaran pelbagai jenis pengumuman di sekitar Perancang Mesyuarat.

Inilah kaedah Request::create() untuk menyediakan e-mel:

Aras $kandungan dikumpulkan untuk subjek e-mel, tajuk mesej dan perenggan, manakala butang $butang digunakan untuk sebarang butang arahan seperti Respond to Request atau View Meeting.

Berikut adalah kaedah notis(), serupa dengan tindakan awal() dan menyelesaikan() yang sebelumnya menghantar e-mel:

Pada asasnya, susun atur generic_html.php adalah berdasarkan template Kemaskini teks ringkas yang saya bercakap tentang dalam tutorial template e-mel kami. Ia menyediakan satu cara yang baik diformat untuk mengemaskini para peserta melalui e-mel dengan beberapa perenggan.

Berikut ialah file pandangan generic_html.php yang mengintegrasikan $data dan $konten. Ia menyemak bagi perenggan yang kedua dan ketiga, misalnya $p2, $p3 dan $button data:

Berikut adalah contoh pemberitahuan yang Rob Smith meminta saya untuk menukar waktu dan tempat mesyuarat kami (dihasilkan daripada kod di atas):

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

Menjawab Permintaan

Apabila saya mengklik Respond ke Permintaan, saya akan dibawa ke tindakan actionCreate() pengendali RequestResponse:

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

Sepanjang permintaan UX, saya memasukkan keupayaan orang untuk menulis nota menyediakan konteks permintaan dan tanggapan.

Satu cabaran dalam bentuk ini ialah menentukan bagaimana untuk mengarahkan tindak balas kepada kaedah pengawal yang berlainan berdasarkan butang yang dikemukakan telah diklik. Dalam erti kata lain, yang membezakan antara lain mengemukakan klik butang POST.

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

Pada asasnya, saya hanya menambah nilai nama 'menerima' atau 'menolak' pada setiap butang. Kemudian, ini dihantar sebagai nilai yang dipaparkan seperti yang ditunjukkan:

Apabila responden menerima atau menolak permintaan itu, mereka akan dipaparkan mesej kilat dan menghantar e-mel. Juga, mesyuarat itu tidak lagi mempunyai permintaan aktif untuk dipaparkan:

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

Inilah Perubahan Diminta Menerima pemberitahuan e-mel:

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

Banyak berlaku dalam Permintaan::accept() di bawah:

Sebelum menghantar e-mel, jadual mesyuarat dikemas kini untuk menunjukkan sebarang tarikh / masa baru dan / atau tempat baru. Selepas menghantar e-mel, mesyuarat itu dimuktamadkan. Ini menyampaikan kemas kini mesyuarat baru dengan fail kalendar yang dikemas kini kepada semua peserta:

Build Your Startup Request Scheduling Changes - Updating Meeting Notice

Apa yang akan Datang?

Saya harap anda telah menikmati tutorial ini. Membina ciri ini mengambil masa lebih lama daripada yang saya harapkan tetapi ternyata cukup baik. Saya fikir ia menambah dimensi untuk penjadualan dengan Perancang Mesyuarat yang tidak dapat ditandingi oleh perkhidmatan lain.

Sekiranya belum, jadilah jadual pertemuan pertama anda dengan Perancang Mesyuarat. Saya telah terus membuat kemajuan yang luar biasa terhadap keluaran beta, walaupun gangguan (pengekodan yang keras):

Saya juga bercadang untuk menulis sebuah tutorial tentang crowdfunding, jadi sila Pertimbangkan berikutan Laman WeFunder Mesyuarat Perancang kami.

Sila berkongsi ulasan anda di bawah. Saya sentiasa terbuka kepada idea ciri baru dan cadangan topik untuk tutorial masa depan. Anda juga boleh menghubungi saya @reifman.

Sentiasa siap sedia untuk semua ini dan lebih banyak tutorial yang akan datang dengan menyemak siri Bangunan Anda Permulaan Dengan PHP. Dan semestinya periksa Pemrograman Kami Dengan Siri Yii2 (Envato Tuts+).

Pautan Berkaitan

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.