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

Membangun Startup Anda: Perintah Penjadualan 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

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

Final product image
What You'll Be Creating

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

Memperluaskan Opsyen Penjadualan

Memandangkan perjumpaan Mesyuarat Perancang alpha bermula, jurang ciri yang jelas adalah ketidakupayaan untuk menukar mesyuarat selepas ia dijadualkan. Tetapi ada juga ciri lain yang hilang, seperti mengembalikan jemputan yang hilang dalam e-mel, menjadualkan semula mesyuarat sepenuhnya, atau keupayaan untuk melihat dan mengedit tetapan kawalan yang dipilih oleh penganjur.

Menariknya, saya juga menyedari bahawa keupayaan untuk melaraskan mesyuarat dengan mudah selepas mereka telah dijadualkan boleh membuat atau memecahkan jenama Perancang Mesyuarat. Sebagai contoh, terdapat banyak kejuruteraan sosial dalam pelarasan mesyuarat selepas penjadualan. Seringkali, anda perlu bertanya kepada peserta (s) jika tidak baik untuk menyesuaikan waktu atau tempat. Mungkin anda hanya ingin bertemu 15 minit sebelum atau pada hari berikutnya pada masa dan tempat yang sama. Tetapi anda tidak boleh selalu membuat perubahan ini tanpa persetujuan.

Memastikan laman web ini mudah difahami dan mudah untuk digunakan dengan semua keupayaan ini adalah arahan Perdana saya. Bagaimana boleh menambah peningkatan bilangan ciri-ciri tanpa cluttering user interface atau terlalu menyembunyikan mereka? Bagaimana ini akan bekerja pada antara muka yang mudah alih dan desktop?

Dalam tutorial hari ini, saya akan meliputi mengembangkan bar navigasi menggunakan Bootstrap dan asas-asas membina beberapa ciri penjadualan lanjutan dalam Perancang Mesyuarat. Minggu depan, saya akan mengkaji membina ciri yang lebih kompleks untuk peserta untuk meminta perubahan dan untuk orang lain untuk menerima atau menolaknya.

Saya berharap anda akan mencuba semua ciri penjadualan baharu di tapak langsung dan berkongsi pandangan dan maklum balas anda di dalam komen di bawah. Saya mengambil bahagian dalam perbincangan, tetapi anda juga boleh menghubungi 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.

Memperluaskan Bar Navigasi

Pertama, mari kita melihat cara untuk mengembangkan bar navigasi sedia ada. Berikut adalah senarai ciri yang saya rancang untuk menambah:

  • Membenarkan perubahan kepada tempat, tarikh dan masa mesyuarat selepas ia dimuktamadkan.
  • Meminta pelarasan yang lebih kecil ke mesyuarat, seperti yang kita dapat berjumpa satu jam lebih awal? Atau di tempat lain yang disyorkan?
  • Menyusun semula mesyuarat sepenuhnya dengan peserta dan tempat yang sama.
  • Mengulangi mesyuarat menggunakan peserta, tempat, hari-hari minggu dan masa hari dari Mesyuarat lepas untuk membuat penjadualan mesyuarat baru lebih mudah.
  • Menunjukkan kepada peserta sejarah kronologi semua aktiviti perancangan untuk mesyuarat.
  • Melihat dan mengemaskini seting untuk mesyuarat.

Seperti yang anda lihat, bukan sahaja terdapat banyak fungsi untuk membina, tetapi saya juga tidak mempunyai idea yang jelas di mana untuk meletakkannya di antara muka pengguna tanpa membuat kekacauan.

Bar arahan juga perlu diubah bergantung pada status mesyuarat. Mesyuarat yang berada dalam fasa perancangan mempunyai pilihan yang berbeza daripada mesyuarat yang telah selesai, disahkan, atau sudah selesai.

Idea-idea UX Awal Membawa Kembali kepada Bootstrap

Idea awal saya adalah untuk menyediakan pautan Tetapan Advanced yang akan memaparkan bar arahan tersembunyi. Saya bereksperimen dengan ini pada mulanya, tetapi ia tidak menyenangkan secara estetik.

Kemudian, saya menyemak dokumentasi Bootstrap dan mendapati kotak kombo juntai:

Build Your Startup Advanced Scheduling - Bootstrap Documentation of Dropdown

Saya suka cara ia berfungsi. Jadi saya memutuskan untuk menempatkan sebahagian perintah Lanjutan dalam butang juntai berorientasikan kiri.

Berikut adalah contoh yang sepertinya dalam fasa perancangan mesyuarat:

Build Your Startup Advanced Scheduling - Meeting Planner Button Dropdown

Perhatikan bahawa bootstrap menawarkan kelas untuk menu drop. Bar perintah yang diletakkan di bahagian bawah halaman menggunakan drop seperti berikut:

Saya juga mencipta fail paparan separa yang akan diberikan bergantung pada status mesyuarat. Sebagai contoh, dalam /frontend/views/meeting/view_confirmed.php, anda dapat melihat sama ada sebahagian _command_bar_past.php atau _command_bar_confirmed.php disertakan:

Menentukan Akses kepada Perintah untuk Penonton yang Berbeza

Saya tidak mahu membenarkan semua orang melihat semua arahan. Penganjur akan melihat lebih banyak arahan berbanding peserta, tetapi tetapan mesyuarat sering memberi mereka akses juga.

Berikut adalah contoh menentukan sama ada untuk memaparkan pilihan untuk membuka semula mesyuarat dan membuat perubahan kepadanya seolah-olah ia masih dalam fasa perancangan:

Pilihan adalah termasuk dalam menu juntai bawah Bootstrap jika Mesyuarat tidak diluluskan dengan tarikh mula dan penonton adalah Penganjur atau pihak penganjur membenarkan peserta untuk membuat perubahan.

Sekarang, marilah kita menyelami beberapa fungsi untuk pelbagai perintah ini.

Membina Perintah Penjadualan Terperinci

Ianya tidak mungkin untuk merangkumi semua kerja-kerja baru yang menceburi ini ciri-ciri penjadualan. Untuk keringkasan, saya akan menutup hanya asas dan mana-mana aspek yang unik pelbagai arahan.

Setiap Ciri Membawa Lebih Lama Sekarang

Selepas melaksanakan beberapa ciri keselamatan yang lebih dalam dalam Perancang Mesyuarat, saya cuba mematuhi piawaian pengekodan yang lebih ketat apabila saya menambah ciri-ciri baru. Saya menghabiskan lebih banyak masa pada akses pengawal, pemeriksaan akses model, dan pengehadan kadar.

Juga, pelepasan beta akan menyokong beberapa peserta dalam satu mesyuarat, jadi saya perlu membuat arkib kod itu dengan fikiran semasa saya pergi.

Secara keseluruhannya, Semua yang saya lakukan mengambil sedikit lebih lama daripada apa yang ia lakukan dalam mod prototaip cepat.

Kerana saya dibina sepanjang pelbagai Mesyuarat ciri-ciri ini, saya sering merasakan peningkatan beban kerja seperti yang saya menambah ke pangkalan Kod tersebut. Anda akan notis semakan ini dalam kod di bawah.

Terdapat juga perhatian pada log Mesyuarat sejarah yang kita buat boleh dilihat. Jadi setiap tindakan sering memerlukan rekod log. Dan rekod-rekod log adalah berguna untuk menyokong menghadkan kadar.

Membuat perubahan kepada Mesyuarat

Satu cara mudah untuk membenarkan perubahan kepada mesyuarat yang telah dimuktamadkan adalah hanya untuk membenarkan penganjur membuka semulanya, mengembalikannya ke fasa perancangan. Kemudian, mereka boleh menambah masa dan tempat tarikh, memilih yang baru, dan memuktamadkan mesyuarat itu lagi.

Saya juga mahukan penganjur memberi kuasa kepada peserta untuk melakukan ini. Ini diperlukan akhirnya membina keupayaan untuk melihat dan mengemas kini setiap tetapan mesyuarat.

Saya menambah tetapan untuk membolehkan peserta sama ada meminta perubahan penganjur atau membuatnya secara langsung.

Apabila mesyuarat dibuat, tetapannya dimulakan dengan tetapan lalai pengguna:

Anda dapat melihat hasil pengawal baru dan pandangan kemas kini untuk Mesyuarat Tetap di bawah:

Build Your Startup Advanced Scheduling - Meeting Settings

Berikut ialah /frontend/controllers/MeetingController.php's actionReopen():

Dan di sini adalah kod model Meeting.php untuk bergerak dalam Mesyuarat kembali ke mod perancangan:

withinActionLimit sedang memeriksa bilangan kali seseorang cuba membuka semula mesyuarat. IncreaseSequence adalah untuk fail .ics-sebagai tarikh mesyuarat, masa, dan perubahan tempat, fail ics perlu diberitahu.

Imej di bawah menunjukkan mesyuarat yang telah disahkan dengan pelbagai pilihan lanjutan yang tersedia:

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

Apabila pengguna mengklik Buat Perubahan dalam menu di atas, status mesyuarat dipindahkan ke perancangan dan mereka boleh kembali untuk mengemas kini tarikh, masa, dan tempat:

Build Your Startup Advanced Scheduling - Reopened Meeting Planning

Menjadualkan Mesyuarat

Jika acara telah membawa peserta untuk menyedari mereka hanya perlu bermula, pilihan Reschedule membatalkan mesyuarat semasa dan membuat jemputan perancangan baru.

Pada masa ini, saya Hadkan ciri-ciri ini kepada penganjur (bukan peserta), tetapi saya boleh sampai lewat. Kaedah Meeting.php::Reschedule() menyokong mana-mana orang yang melaksanakan tindakan tersebut:

Peserta dan tempat yang dipilih adalah pengklonan dalam mesyuarat baru.

Ulangi Mesyuarat

Satu lagi pendekatan untuk penjadualan adalah untuk membolehkan peserta membuat penduaan lepas mesyuarat. Pada masa hadapan, saya mungkin membiarkan penonton membuat keputusan yang mana peserta, tempat dan times diduakan, tetapi sekarang, Mesyuarat Perancang mencipta mesyuarat baru dengan peserta sama di tempat yang sama — dan hari yang sama seminggu dan masa satu hari dan dua minggu di masa hadapan.

MeetingTime::createTimePlus() di bawah Tambah masa mesyuarat hari minggu yang sama dan masa hari, tetapi satu minggu di masa hadapan, walaupun Mesyuarat asal berlaku bulan lepas. while dalam gelung diperlukan untuk Mesyuarat lebih tua.

Hantar Jemputan

Saya juga membina ciri resend sekiranya peserta tidak menerima jemputan asal atau pengesahan akhir.

Saya bercadang untuk membina semula fungsi e-mel keluar untuk bekerja asynchronously dan memudahkan penghantaran semula, tetapi Mujurlah kaedah semasa bekerja dalam senario menghantar semula dengan beberapa perubahan.

Rapat Sejarah

Sepanjang siri ini, kami telah membina log setiap perubahan yang dibuat kepada mesyuarat. Sekarang ada cara untuk hadirin untuk melihat sejarah perancangan. Ia kelihatan seperti ini:

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

Mesyuarat MeetingLogController.php memeriksa bahawa penonton adalah peserta mesyuarat dan menyediakan data untuk melihat log:

Kemudian /frontend/views/meeting-log/index.php menerbitkan data yang ditunjukkan di atas:

Apa yang akan datang?

Saya kini berpuas hati dengan kod sprint untuk melengkapkan pelepasan beta. Dewa editorial di Envato Tuts+ telah mencuba yang terbaik untuk mengalihkan perhatian saya dengan robot kawalan minda dan bunyi seperti OKCupid dari aplikasi alur kerja berkuasa iOS mereka, tetapi mereka telah gagal. Pembangunan Perancang Mesyuarat berlangsung dengan pantas.

Menyelesaikan kejuruteraan sosial dan UX untuk menghadiri peserta untuk meminta dan memberi respons kepada pelarasan penjadualan yang lebih kecil boleh membuat atau memecahkan jenama Perancang Mesyuarat, dan itulah yang saya paling banyak bekerja.

Sekiranya belum, jadilah pertemuan pertama anda dengan Perancang Mesyuarat. Saya juga merancang untuk menulis tutorial mengenai crowdfunding, jadi sila pertimbangkan mengikuti halaman Perancang Mesyuarat WeFunder kami. Anda juga boleh menghubungi saya @reifman. Saya sentiasa terbuka kepada idea ciri baru dan cadangan topik untuk tutorial masa depan.

Tunggu selama semua tutorial ini dan lebih banyak lagi dengan memeriksa Bangunan Anda Startup Dengan siri PHP.

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.