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

بناء  بدء التشغيل الخاص بك: استكمال جدولة المجموعات

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Meetings With Multiple Participants
Building Your Startup: Importing With the Google Contacts API

Arabic (العربية/عربي) translation by Saadkhaled (you can also view the original English article)

Final product image
What You'll Be Creating

هذا البرنامج التعليمي جزء من سلسلة "بناء بدء التشغيل الخاص بك مع سلسلة بي اتش بي Envato Tuts +. في هذه السلسلة، أنا سأعمل على توجيهكم من خلال الشروع في بدء تشغيل من المفهوم إلى الواقع باستخدام التطبيق "مخطط الاجتماع" لدي كمثال حياة حقيقية. كل خطوة على طول الطريق، سوف اطلق كود مخطط الاجتماع" كأمثلة مفتوحة المصدر يمكن أن تتعلم منها. أنا أيضا ساعالج القضايا المتعلقة ببدء الأعمال التجارية عند نشوئها.

التطوير المستمر  لاجتماعات الفريق

اهلا وسهلا! هذه هي حلقة المتابعة "لبناء بدء التشغيل الخاص بك": اجتماعات مع "العديد من المشاركين". اليوم، سوف اكمل العمل الذي بدأنا في تلك الحلقة: جدولة اجتماعات مشاركين متعددة.

تنشيطة قصيرة

جدولة الاجتماعات مع مشاركين متعددين كان دائماً هدفا رئيسيا ل"مخطط الاجتماع"، الذي بدأ مع جدولة 1:1 فقط.  اجتماعات المشاركين عدة هي الأكثر تحديا للناس لمحاولة الجدولة مع بعضهم البعض وبالتالي تعتبرواحدة من السمات الأكثر قيمة لخدمة "مخطط الاجتماع" للتقديم.

في درس اليوم، أنا ذاهب لتغطية استعراض جميع مجالات الموقع الذي تأثر اجتماعات المشاركين العديدة، المعالجة وبذكاء عرض قوائم المستفيدين من الوضع المتنوع، بشكل صحيح إدارة الإخطارات وتصفية الإخطار للمجموعات، وأخيراً تطوير المطلقة مؤخرا ميزة طلب تغييرات اجتماعات.

جدولة اجتماع المجموعة الأولى الخاصة بك

الرجاء جدولة اجتماع المجموعة الخاصة بك اليوم! قم بدعوة عدد قليل من الأصدقاء لمقابلتك ل"كمبوتشا" أو كافا. قم بمشاركة أفكارك والتغذية المرتدة من خبرة الجميع في التعليقات الواردة أدناه. اشارك في المناقشات، ولكن يمكنك أيضا الوصول إلي @reifman على تويتر. وأنا دائماً مفتوح لأفكارميزة جديدة ل"مخطط الاجتماع"،واقتراحات لحلقات سلسلة المستقبل  .

وللتذكير، كافة التعليمات البرمجية ل"مخطط الاجتماع" مفتوحة المصدر ومكتوب في إطار Yii2 بي ل PHP.إذا كنت ترغب في معرفة المزيد عن Yii2، تحقق من سلسلتي الموازية للبرمجة مع Yii2.

مراجعة التعليمات البرمجية

كما يمكنك أن تتخيل، تحويل "مخطط اجتماع" من اجتماعات 1:1 لاجتماعات المجموعة لمس تقريبا كافة التعليمات البرمجية. كان علي التفكير في جميع المجالات ومراجعة التعليمات البرمجية وعمل تغييرات صغيرة لمعتدلة في العديد من الأماكن. في مجالات أخرى، أنا صممت لمشاركين عدة، وتغيرات لم تكن ضرورية أو كانت طفيفة.

على سبيل المثال، جدولة المجموعة لُمست:

في الغالب، حيث سابقا ارسلت للمشتركين [0]، المشارك الأول والوحيد، الآن احتجته إلى معالجة مجموعة المشاركين. وفي القيام بذلك، احتجت للتحقق:

  • هل هذا المشارك منظم؟
  • وهل مسح هذا الشخص أو انخفض لوحده؟
  • في المستقبل، هل قد اختير هذا الشخص من الإخطارات لهذا الاجتماع؟

تحديات الاختبار

مع المزيد من الموارد، يمكن أن أكون تمكنت من هذا أكثر مع الاختبار الآلي. ومع ذلك، العمل منفرداً مع الشحن كهدف، و يدوياً اختبرت كل شيء كاملا

 استخدمت بريد إلكتروني ذا نطاق جامع حتى يمكنني دعوة n1, n2, n3,  n4 و n5@mytestdomain.com إلى اجتماعات مجموعة عينتي. لحسن الحظ، الدعوات ل"مخطط الاجتماع" تجعل من السهل تسجيل الدخول بسرعة مع أي حساب بالنقر داخل كل دعوة اجتماع؛ وساعد هذا في تجاربي.

من المهم أن تستعرض تقريبا كل تعليمات البرمجة لاجتماعات التخطيط.

ولكن دعونا نعود إلى تحديات الترميز المحددة أكثر للنصف الثاني من ميزة جدولة المجموعة  .

بذكاء عرض قوائم المشتركين

فترة من الوقت مضت، لقد بنيت أسلوب MiscHelpers لعرض قوائم نحوياً بشكل صحيح باللغة الإنكليزية مع "و" قبل اسم العائلة، كما هو مبين في فهرس الاجتماع أدناه:

Startup Series Group Scheduling - The Meeting Index

ومع ذلك، أردت أن أبسط عرض وقت التاريخ وتوافرالمكان . على سبيل المثال، بدلاً من أسماء خمسة من الأشخاص الذين قبلوا الجلسة في "مقهى هيركايمر"، لقد قمت بتحديث MiscHelpers::listNames للقول، "أي شخص آخر":

يمكنك أن ترى هذا في التنفيذ أدناه:

Startup Series Group Scheduling - Time and Place Availability Lists

ولكن بدلاً من القول "لا رد من كل شخص آخر،" أنه من المناسب أكثر القول "لا رد من أي شخص آخر،" التي تقوم بها التعليمات البرمجية.

أدناه، يمكنك أن ترى MeetingPlace::getWhereStatus() تقوم بإعداد هذه السلاسل لكل مكان في لوحة اماكن الاجتماع :

كل مستخدم لديه صف MeetingPlaceChoice يتصل ب MeetingPlace الذي يسجل ما إذا كان المكان مقبول أو غير مقبول أو لا رد بعد. MeetingTimeChoice أيضا موجود بالمثل. يتم تمرير هذه المعلومات إلى listNames().

التراجع والانسحاب من اجتماع

المجموعات تتطلب أيضا أن تكون أكثر تعقيدا مع خفض دعوة اجتماع. وفي وقت سابق، إذا رفض أحد المشاركين،الغي  الاجتماع بفعالية. الآن، قد يرفض أحد، ويترك ثلاثة أشخاص آخرين للاستمرار.

حتى إذا كان أحد المشاركين يتلقى دعوة لمقابلة، يمكنهم رفضه. لكن إذا سبق وأُكد الاجتماع ووضعت اللمسات الأخيرة، عندها هم أساسا يسحبون كما ترى أدناه:

Startup Series Group Scheduling - Withdraw button in a Meeting View

ملاحظة: في الصورة أعلاه، هي "سارة سميثرز " ترى زر السحب؛ Robert McSmith قد حذف بواسطة منظم آخر، أما من جيف أو أليكس.

ومع ذلك، إذا كان منظم (مالك الاجتماع أو مسحه منظم مشارك)، أنها مجرد إلغاء الاجتماع. أدناه هو من _command_bar_confirmed.php. فإنه يحدد أي الأزرار للعرض:

ترتيب الأولويات عنصر أساسي لبناء بدء تشغيل. ولذلك حين أردت أن اوفر وسيلة لمستخدم  سحب للانضمام إلى اجتماع، قررت إضافة هذا إلى قائمة المهام اسأنا في وقت لاحق. المستخدم الذي يعيد الانضمام سوف يحتاج إلى إعلامات محدثة وربما بعض التحديثات إلى بنيات بيانات الجدولة.

التفكيرخلال الإخطارات

بينما الاجتماعات مع 1:1،  كل تغيير نحتاج لإرساله إلى الطرف الآخر،هذا لم يكن له بالضرورة اي معنى لاجتماعات 12شخص-أو كان؟يختلف.

في البداية، أنا أنشئت مبادئ توجيهية عامة. إذا  أحد المشاركين جدد أولاوياته  ل  وقت أو مكان محدد، فقط المالك والمؤسسين الآخرين يحتاجوا إلى تحديث أولاوياتهم  المتعلقة بهذا .

انشأت مجموعة مصفوفة $groupSkip في MeetingLog التي حددت الأحداث التي لا ينبغي أن ترسل إلى المشاركين الآخرين:

في MeetingLog::getHistory،نحن نتخطى إخطار مشارك في هذه الأحداث ولكن دائماً نقوم بإخطار المنظمين:

وفي أحد الأمثلة الغير عادية، التعليمة البرمجية جُعلت أبسط مع العديد من المشاركين : Meeting::findFresh()، الذي يبحث عن  تحديثات  تغييرات اجتماع لمشاركتها عبر البريد الإلكتروني.

وفي وقت سابق، كان يجب تحديد أي من كلا المستخدمين قام بنفيذ الإجراءات وابلاغ احدهما أولا. الآن، نحن نقوم بمجرد إعلام المالك، ثم نقم بإعلام المشاركين:

اي تصفية تتم بالعمق داخل تنصيص سجل الأحداث.

إعلامات محسنة: "الجميع متوفر!"

أنا أنشأت أيضا إعلام جديد لتنبيه المنظمين عندما كل شخص يكون مقبولاً من مكان معين ووقت،واحد على الأقل MeetingLog::ACTION_SEND_EVERYONE_AVAILABLE :

هذا يعلم المنظمين متى الاجتماع على استعداد لوضع اللمسات الأخيرة والتأكيد.

هنا هي التعليمات البرمجية التي تظهر في جميع أماكن الاجتماع وأوقات الاجتماعات معرفة ما إذا كان الجميع يتفق على مكان واحد على الأقل:

وبالمثل، لقد بنيت دالة لاظهار إشعارا إلى المنظم انه لا تواريخ الاوقات ولا الاماكن مقبولة لأي شخص، Meeting::isSomeoneAvailable():

وهذا يشير إلى أنه ينبغي أن يشيروا إلى أوقات تاريخ إضافية و/أو أماكن.

تحديث مذكرات الاجتماع

 كل شيء حول مذكرات الاجتماع عمل لعديد المشاركين، ولكن كنت بحاجة إلى إيقاف تشغيل التذكير إذا المشارك قد رفض أو سحب من الاجتماع أو تمت إزالته:

STATUS_DEFAULT يشير إلى أحد الحضور الذي ينبغي أن يضاف إلى مجموعة مستخدمين رسائل تذكير البريد الإلكتروني  أيضا.

استعراض ملفات التقويم

كما استعرضت أعمال توليد ملفات التقويم للدعوات و لضمان إدراج كافة الحضور. في Meeting::prepareDownloadIcs()، أضع معا صفيف حضور مع المالك والمشاركين الحاضرين بنشاط:

وخلال هذا الوقت، تعلمت أيضا كيفية الإشارة إلى أن ملف تقويم لجلسة تم إلغاؤها يجب ان يحفز إزالة الحدث من التقويم لشخص ما. الIcs القياسي قوي ولا يتعلم بسهولة.

تحديث طلب تغييرات للمجموعات

كما كتبت مؤخرا، ميزة "طلب التغييرات للاجتماع" تتطلب قدرا كبيرا من العمل وUXجديدة.

Startup Series Group Scheduling - Request a Change to Your Meeting

 بالنسبة للعديد من اجتماعات المشاركين، الهندسة الاجتماعية احتاجت إلى تغيير مرة أخرى. على سبيل المثال، المنظمين يمكنهم قبول أو رفض طلبات وتغيير جدول الاجتماع. ومع ذلك، يمكن للمشاركين فقط التصريح بالاعجاب أو عدم الاعجاب أوعدم الاهتمام حول طلبات التغيير. وينبغي أن يرى المنظمي ردود جميع المشاركين لمساعدتهم في اتخاذ القرارات.

هنا ما يرى المشاركين بعد ارسالهم طلب التغيير:

Startup Series Group Scheduling - Confirming Your Request

طلبات التغيير الجديد بحاجة ليتم إرسالها إلى جميع المشاركين. هذا يعالج شفافيا بإخطارات سجل النشاط. عندما يتم الطلب، يتم إنشاء هذا الحدث في إرسال RequestController::actionCreate():

هنا كيف يظهرالتغيير المطلوب  للمشاركين الآخرين:

Startup Series Group Scheduling - Email Notification of Requested Changes to Participants

كل شخص يُسأل الرد. النقر فوق الرد للطلب يذهب مباشرة للطلب. أو يمكنك العثور عليها من خلال قائمة الطلبات من رابط تنبيه الفلاش في الاجتماع المذكور أعلاه.

Startup Series Group Scheduling - List of Requests

 UX  جديدة لاستجابة المشاركين للطلبات 

هنا هو النموذج الذي المشاركين يروه عندما يستجيبون لطلب:

Startup Series Group Scheduling - Participants View of Responding to a Request

إذا كانت هناك ردود لمشاركين اخرين بالفعل، سوف يرونهم:

Startup Series Group Scheduling - Startup Series Group Scheduling - Participants View of Responding to a Request with Others Responses

هنا هو الجزء العلوي من ذلك النموذج في/frontend/views/request-response/_form.php:

يسرد Gridview الردود الموجودة، مثل حب أو كرة، ومحايدة، وأي ملاحظة شخصية مرفقة.

بعد ذلك، هنا هو الكود للنصف السفلي من النموذج، والذي سيعرض مثل، يكره، لا يكره, لايعيرأي اهتمام للمشاركين ولكن يقوم بالقبول وبإجراء تغييرات أو طلب خفض للمالكين.

Startup Series Group Scheduling - Organizers View of Responding to a Request

المشاركين الذين هم ممسوحين منظمين يظهر لهم كلا مجموعتي الأزرار يمكنهم التعبير عن رأيهم أو صنع أو رفض التغيير.

هنا هو إعلام بالبريد الإلكتروني بان التغيير قُبل:

Startup Series Group Scheduling - Email Notification that Change was Accepted

وبطبيعة الحال،ملفات الدعوة والتقويم المحدثة سترسل للجميع إذا تم إجراء تغيير.

دائماً المزيد من التحسينات للعمل

أتمنى ان تكون استمتعت في هاتين الحلقتين (اليوم وبناء بدء التشغيل الخاص بك : اجتماعات مشاركين متعددين). في وضع بدء التشغيل مع ميزة جديدة ضخمة، هناك دائماً جهدا إطلاق مركز ومبسط، مما يترك العديد من النهايات الهشة الغير منتهية والعيوب غير المصقولة.

بعض الأمثلة على ذلك ما يلي:

  • الانضمام إلى اجتماعات انت رفضت أو انسحبت منها.
  • عرض محسن من قائمة المشاركين في دعوات.
  • خيارات للحفاظ على قائمة المشاركين و/أو حالاتهم الفردية خاصة عن مشاركين اخرين.
  • معالجة محسنة وعرض  معلومات اتصال مجموعة وتفاصيل مؤتمر ظاهري، مثل خط مؤتمر وكود مشاركة.
  • عنوان URL امن لتبادل دعوات الاجتماع. وسيسمح للمنظمون مشاركة عنوان URL على الفيس بوك، أو عبر البريد الإلكتروني لدعوة مشاركين جدد.

وعلى الرغم من أوجه القصور هذه، لقد عملت جد للوصول إلى هذا المستوى من الوظيفة وقابلية للاستخدام لمخطط الاجتماع". أنا متحمس جدا عن التقدم المحرز وسماع ردود فعل جيدة حوله من الأصدقاء والزملاء.

أنا اليوم انتقل في كلا هاذان الدرسان وأخذ بضعة أيام دون اتصال في الغابة للتوقف قليلا. الباقي مهم.البقاء على اتصال مع الطبيعة يساعد بتذكيرك بما هو مهم في الحياة – الشركات الناشئة ليست دائماً، في الواقع. قد تكون المساعي ابداعية، هامة للدخل والوظائف، وقد وفي بعض الحالات تساعد الناس على العيش بأكثر كفاءة وإنتاجية، لكن انها غالباً بعيدة من الأرض ومن الصداقات، ومن مساعدة الآخرين أقل حظاً. هذه هو كل شيء افكر فيه كل يوم، وسافعله مرة أخرى بينما أنا بعيد.

أناساسأل نفسي مرارا وتكرارا هل أنا أفعل كل ما أريد أن افعله مع وقتي – لا سيما في ضوء عمليتي الجراحية في الدماغ.

سآخذ أيضا القلب من كوني فخور ب"مخطط الاجتماع"، لا سيما الأعمال حتى الآن وفائدته المتنامية.عموما، بيتا الخدمة أوشكت على الاكتمال.

وكانت عدة اجتماعات المشاركين عنصر العمل المتبقي الأكثر شاقا وتعقيدا. التطلع إلى المستقبل، الميزات والمهام أكثر اعتدالا وأصغر حجماً، ويمكن التحكم فيها بسهولة أكبر. أنا متحمس عن آفاقها المستقبلية!

إذا كنت لم تقم بعد، اذهب في جدولة الاجتماع الأول الخاص بك مع "مخطط الاجتماع" الآن!

برنامج تعليمي علاوة أيضا في الأشغال، لذا يرجى متابعة صفحتنا "مخطط الاجتماع وي فوندير".

يمكنك أيضا الوصول لي @reifman. أنا دائماً مفتوح لأفكار ميزة جديدة واقتراحات موضوع لدروس المستقبل.

ابقى متناغم مع كل هذا والمزيد من الدروس القادمة بالتحقق من سلسلة "بناء بدء التشغيل(الشركة الناشئة) الخاص بك مع تسلسل PHP".

روابط ذات صلة

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.