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

Xây dựng Startup của bạn: Hoàn thành Lập kế hoạch nhóm

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

Vietnamese (Tiếng Việt) translation by Andrea Ho (you can also view the original English article)

Final product image
What You'll Be Creating

Hướng dẫn này là một phần của loạt bài Xây dựng Khởi nghiệp Với PHP trên Envato Tuts. Trong loạt bài này, tôi hướng dẫn bạn thông qua việc khởi chạy một khởi động từ khái niệm này sang thực tế bằng cách sử dụng ứng dụng Lập kế hoạch cuộc họp của tôi làm ví dụ thực tế. Mỗi bước trên đường đi, tôi sẽ phát hành mã Lập kế hoạch cuộc họp dưới dạng ví dụ nguồn mở mà bạn có thể học hỏi. Tôi cũng sẽ giải quyết các vấn đề kinh doanh liên quan đến khởi động khi chúng phát sinh.

Đang diễn ra các cuộc họp nhóm

Chào mừng bạn! Đây là tập tiếp theo để Xây dựng Startup của bạn: Cuộc họp với nhiều người tham gia. Hôm nay, tôi sẽ hoàn thành công việc mà chúng tôi đã bắt đầu trong tập đó: lên lịch cho nhiều cuộc họp của người tham gia.

Giới thiệu tóm tắt

Lập kế hoạch cuộc họp với nhiều người tham gia luôn là mục tiêu chính cho Công cụ lập kế hoạch cuộc họp, được khởi chạy chỉ với lịch trình 1: 1. Nhiều cuộc họp của người tham gia là thử thách nhất đối với mọi người để cố gắng lên lịch với nhau và do đó một trong những tính năng có giá trị nhất cho dịch vụ Lập kế hoạch cuộc họp để cung cấp.

Trong hướng dẫn hôm nay, tôi sẽ xem xét tất cả các khu vực của trang web bị ảnh hưởng bởi nhiều cuộc họp, xử lý và hiển thị thông minh danh sách người nhận trạng thái khác nhau, quản lý đúng thông báo và lọc thông báo cho nhóm và cuối cùng nâng cấp yêu cầu được đưa ra gần đây tính năng thay đổi cuộc họp.

Lên lịch cuộc họp nhóm đầu tiên của bạn

Vui lòng lên lịch họp nhóm riêng của bạn ngay hôm nay! Mời một vài người bạn đến gặp bạn vì kombucha hoặc kava. Chia sẻ suy nghĩ và phản hồi của bạn về trải nghiệm của mọi người trong phần nhận xét bên dưới. Tôi tham gia vào các cuộc thảo luận, nhưng bạn cũng có thể liên hệ với tôi @reifman trên Twitter. Tôi luôn mở ra các ý tưởng về tính năng mới cho Công cụ lập kế hoạch cuộc họp cũng như các đề xuất cho các tập phim trong tương lai.

Xin nhắc lại, tất cả mã cho Công cụ lập kế hoạch cuộc họp được cung cấp nguồn mở và được viết trong Khung công tác Yii2 cho PHP. Nếu bạn muốn tìm hiểu thêm về Yii2, hãy xem loạt bài lập trình song song của tôi Lập trình với Yii2.

Xem xét mã

Như bạn có thể hình dung, việc chuyển đổi Công cụ lập kế hoạch cuộc họp từ các cuộc họp 1: 1 thành các cuộc họp nhóm đã chạm gần như tất cả mã. Tôi phải suy nghĩ qua tất cả các lĩnh vực, xem lại mã và thực hiện các thay đổi nhỏ đến vừa ở nhiều nơi. Ở các khu vực khác, tôi đã kiến ​​trúc cho nhiều người tham gia và không cần thay đổi hoặc nhỏ.

Ví dụ: đã lên lịch nhóm:

Chủ yếu là, trước đây tôi chỉ gửi cho người tham gia [0], người tham gia đầu tiên và duy nhất, bây giờ tôi cần xử lý mảng người tham gia. Và, khi làm như vậy, tôi cần kiểm tra:

  • Người tham gia này có phải là người tổ chức không?
  • Người này có bị xóa hoặc từ chối không?
  • Trong tương lai, người này đã chọn không nhận thông báo cho cuộc họp này?

Những thách thức của thử nghiệm

Với nhiều tài nguyên hơn, tôi có thể quản lý điều này một cách toàn diện hơn với thử nghiệm tự động. Tuy nhiên, làm việc solo với vận chuyển như một mục tiêu, tôi tự kiểm tra mọi thứ một cách toàn diện.

Tôi đã sử dụng email miền catchall để tôi có thể mời n1, n2, n3, n4 và n5 @ mytestdomain.com đến các cuộc họp nhóm mẫu của mình. May mắn thay, lời mời của Hội nghị kế hoạch họp giúp bạn dễ dàng đăng nhập nhanh chóng bằng bất kỳ tài khoản nào bằng cách nhấp vào trong mỗi lời mời họp; điều này hỗ trợ thử nghiệm của tôi.

Điều quan trọng là phải xem xét gần như tất cả mã quy hoạch cuộc họp.

Nhưng hãy quay trở lại với những thách thức mã hóa cụ thể hơn trong nửa sau của tính năng lập kế hoạch nhóm.

Hiển thị thông minh danh sách người tham gia

Cách đây không lâu, tôi đã xây dựng một phương pháp MiscHelpers để hiển thị danh sách theo ngữ pháp một cách chính xác bằng tiếng Anh

Startup Series Group Scheduling - The Meeting Index

Tuy nhiên, tôi muốn đơn giản hóa việc hiển thị thời gian ngày và địa điểm sẵn có. Ví dụ: thay vì liệt kê năm tên của những người đã chấp nhận cuộc họp tại Herkimer Coffee, tôi đã cập nhật MiscHelpers :: listNames để nói,

Bạn có thể thấy điều này trong hành động dưới đây:

Startup Series Group Scheduling - Time and Place Availability Lists

Nhưng thay vì nói

Dưới đây, bạn có thể thấy MeetingPlace :: getWhereStatus () chuẩn bị các chuỗi này cho từng vị trí trong bảng điều khiển địa điểm cuộc họp:

Mỗi người dùng có một hàng MeetingPlaceChoice liên quan đến một MeetingPlace mà ghi lại cho dù một nơi là chấp nhận được, không được chấp nhận hoặc chưa trả lời. MeetingTimeChoice cũng tồn tại tương tự. Thông tin này được chuyển tới listNames ().

Từ chối và rút khỏi cuộc họp

Các nhóm cũng yêu cầu sự phức tạp hơn khi từ chối lời mời họp. Trước đó, nếu một người tham gia từ chối, cuộc họp đã bị hủy bỏ hiệu quả. Bây giờ, người ta có thể từ chối, để lại ba người khác tiếp tục.

Vì vậy, nếu một người tham gia nhận được lời mời tham dự một cuộc họp, họ có thể từ chối nó. Nhưng nếu cuộc họp đã được xác nhận và hoàn tất, thì về cơ bản họ rút tiền như bạn có thể thấy bên dưới:

Startup Series Group Scheduling - Withdraw button in a Meeting View

Lưu ý: Trong hình trên, Sarah Smithers nhìn thấy nút Rút tiền; Robert McSmith đã bị một nhà tổ chức khác, hoặc Jeff hoặc Alex loại bỏ.

Tuy nhiên, nếu đó là một người tổ chức (chủ sở hữu cuộc họp hoặc người tổ chức tham gia được xức dầu), họ chỉ có thể hủy cuộc họp. Dưới đây là từ _command_bar_confirmed.php. Nó xác định các nút để trình bày:

Ưu tiên là yếu tố then chốt của việc xây dựng một startup. Vì vậy, trong khi tôi muốn cung cấp một cách cho một người dùng đã rút lại để tham gia lại một cuộc họp, tôi quyết định thêm điều này vào danh sách nhiệm vụ Asana cho sau này. Người dùng tham gia lại sẽ cần thông báo cập nhật và có thể một số cập nhật cho cấu trúc dữ liệu lập lịch biểu của họ.

Suy nghĩ thông qua thông báo

Trong khi với các cuộc họp 1: 1, mọi thay đổi cần thiết để được gửi cho bên kia, điều này không nhất thiết phải có ý nghĩa đối với các cuộc họp 12 người — hay đã làm điều đó? Nó phụ thuộc.

Ban đầu, tôi đã tạo ra các hướng dẫn chung. Nếu người tham gia đang cập nhật tùy chọn của họ cho một ngày hoặc địa điểm cụ thể, chỉ chủ sở hữu và người tổ chức khác cần được cập nhật về điều này.

Tôi đã tạo một mảng $ groupSkip trong MeetingLog xác định các sự kiện không được gửi đến những người tham gia khác:

Trong MeetingLog :: getHistory, chúng tôi bỏ qua thông báo cho người tham gia về những sự kiện này nhưng luôn thông báo cho người tổ chức:

Trong một ví dụ khác thường, mã thực sự được thực hiện đơn giản hơn với nhiều người tham gia: Meeting :: findFresh (), tìm kiếm các cập nhật về các thay đổi cuộc họp để chia sẻ qua email.

Trước đó, chúng tôi phải xác định xem hai người dùng nào đã thực hiện hành động và có hay không thông báo. Bây giờ, chúng tôi chỉ thông báo cho chủ sở hữu và sau đó thông báo cho những người tham gia:

Bất kỳ tính năng lọc nào được thực hiện sâu hơn trong quá trình tạo văn bản cho sự kiện.

Thông báo nâng cao:

Tôi cũng đã tạo một thông báo mới để thông báo cho các nhà tổ chức khi mọi người đồng ý với ít nhất một địa điểm và thời gian cụ thể, MeetingLog :: ACTION_SEND_EVERYONE_AVAILABLE:

Điều này thông báo cho các nhà tổ chức khi cuộc họp sẵn sàng hoàn tất / xác nhận.

Đây là mã xem tất cả các địa điểm họp và thời gian họp để xem mọi người có đồng ý với ít nhất một địa điểm hay không:

Tương tự, tôi đã xây dựng một chức năng để thông báo cho người tổ chức rằng không có thời gian và địa điểm nào được chấp nhận cho bất kỳ ai, Cuộc họp :: isSomeoneAvailable ():

Điều này cho thấy rằng họ nên đề xuất thời gian và / hoặc địa điểm ngày bổ sung.

Cập nhật cuộc họp Nhắc nhở

Mọi thứ về lời nhắc cuộc họp đều hoạt động tốt cho nhiều người tham gia, nhưng tôi cần phải tắt lời nhắc nếu người tham gia đã từ chối hoặc rút khỏi cuộc họp hoặc bị xóa:

STATUS_DEFAULT cho biết người tham dự nên được thêm vào mảng người dùng để gửi email nhắc nhở.

Xem lại các tệp lịch

Tôi cũng đã xem xét công việc tạo các tệp lịch cho lời mời để đảm bảo rằng tất cả những người tham dự được bao gồm. Trong Meeting::prepareDownloadIcs(), tôi đã tập hợp một mảng người tham dự với chủ sở hữu và những người tham gia tích cực tham dự:

Trong thời gian này, tôi cũng đã học cách chỉ ra rằng tệp lịch của cuộc họp đã hủy sẽ kích hoạt xóa sự kiện khỏi lịch của người nào đó. Các tiêu chuẩn ics là mạnh mẽ mặc dù không dễ dàng học được.

Cập nhật yêu cầu thay đổi cho nhóm

Như tôi đã viết gần đây, tính năng Yêu cầu thay đổi cuộc họp yêu cầu nhiều công việc và UX mới.

Startup Series Group Scheduling - Request a Change to Your Meeting

Đối với nhiều cuộc họp của người tham gia, kỹ thuật xã hội cần thay đổi một lần nữa. Ví dụ: ban tổ chức có thể chấp nhận hoặc từ chối yêu cầu và thay đổi lịch họp. Tuy nhiên, người tham gia chỉ có thể thể hiện Thích, Không thích hoặc Không quan tâm đến các yêu cầu thay đổi. Và các nhà tổ chức sẽ thấy tất cả các phản ứng của người tham gia để hỗ trợ họ trong việc ra quyết định của họ.

Dưới đây là những gì người tham gia thấy sau khi họ gửi yêu cầu thay đổi của họ:

Startup Series Group Scheduling - Confirming Your Request

Yêu cầu thay đổi mới cần được gửi tới tất cả người tham gia. Điều này được xử lý một cách minh bạch bằng thông báo nhật ký hoạt động. Khi một yêu cầu được thực hiện, sự kiện này được tạo trong RequestController :: actionCreate () submit:

Dưới đây là thông báo thay đổi được yêu cầu trông như thế nào với những người tham gia khác:

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

Mọi người được yêu cầu trả lời. Nhấp vào Phản hồi yêu cầu sẽ chuyển ngay đến yêu cầu. Hoặc bạn có thể tìm thấy nó thông qua danh sách các yêu cầu từ liên kết cảnh báo flash trong cuộc họp được hiển thị ở trên.

Startup Series Group Scheduling - List of Requests

UX mới cho người tham gia trả lời yêu cầu

Dưới đây là biểu mẫu mà người tham gia thấy khi họ phản hồi yêu cầu:

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

Nếu có phản hồi của người tham gia khác, họ sẽ thấy họ:

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

Đây là phần trên cùng của biểu mẫu đó trong /frontend/views/request-response/_form.php:

GridView liệt kê các câu trả lời hiện có, ví dụ như Thích, Không thích, Trung lập và bất kỳ ghi chú cá nhân nào được đính kèm.

Sau đó, đây là mã cho nửa dưới của biểu mẫu, sẽ hiển thị Thích, Không thích, Không quan tâm đến người tham gia nhưng Chấp nhận và Thực hiện thay đổi hoặc Từ chối yêu cầu cho chủ sở hữu.

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

Những người tham gia được tổ chức xức dầu được thể hiện cả hai bộ nút và có thể bày tỏ ý kiến ​​của họ hoặc thực hiện hoặc từ chối thay đổi.

Đây là thông báo qua email cho biết thay đổi đã được chấp nhận:

Startup Series Group Scheduling - Email Notification that Change was Accepted

Tất nhiên, các tệp lịch và lời mời được cập nhật sẽ được gửi cho mọi người nếu có thay đổi.

Luôn cải tiến nhiều hơn để thực hiện

Tôi hy vọng bạn đã thích hai tập này (hôm nay và Xây dựng khởi nghiệp của bạn: Cuộc họp với nhiều người tham gia). Trong chế độ khởi động với một tính năng mới rất lớn, luôn luôn có một nỗ lực tập trung, sắp xếp hợp lý, để lại nhiều kết thúc lỏng lẻo hoàn tác và các lỗi không được đánh bóng.

Một vài ví dụ về điều này bao gồm:

  • Tham gia lại các cuộc họp bạn đã từ chối hoặc rút khỏi.
  • Cải thiện bản trình bày của danh sách người tham gia trong lời mời.
  • Các tùy chọn để giữ danh sách người tham gia và / hoặc trạng thái cá nhân của họ riêng tư với những người tham gia khác.
  • Cải thiện việc xử lý và trình bày thông tin liên lạc nhóm và các chi tiết hội nghị ảo, ví dụ như một đường hội nghị và mã tham gia.
  • URL bảo mật để chia sẻ lời mời họp. Điều này sẽ cho phép các nhà tổ chức chia sẻ một URL trên Facebook hoặc qua email để mời những người tham gia mới.

Mặc dù có những thiếu sót này, tôi đã làm việc rất chăm chỉ để đạt được mức độ chức năng và khả năng sử dụng cho Công cụ lập kế hoạch cuộc họp. Tôi rất vui mừng về sự tiến bộ của nó và nghe phản hồi tốt về nó từ bạn bè và đồng nghiệp.

Tôi đang chuyển sang hai hướng dẫn này ngày hôm nay và tham gia một vài ngày ẩn trong rừng vì một số thời gian chết. Phần còn lại là quan trọng. Việc giữ liên lạc với thiên nhiên giúp nhắc nhở bạn về những gì quan trọng trong cuộc sống — khởi đầu không phải lúc nào cũng vậy. Họ có thể là những mục tiêu sáng tạo, quan trọng đối với thu nhập và nghề nghiệp của chúng tôi, có thể trong một số trường hợp giúp mọi người sống hiệu quả và hiệu quả hơn - nhưng họ thường xa trái đất, từ tình bạn và giúp đỡ những người kém may mắn. Đây là tất cả những gì tôi nghĩ về mỗi ngày và sẽ làm một lần nữa trong khi tôi đi.

Tôi sẽ tự hỏi mình nhiều lần khi tôi làm tất cả mọi thứ tôi muốn làm với thời gian của tôi - đặc biệt là trong ánh sáng của phẫu thuật não của tôi.

Tôi cũng sẽ lấy trái tim từ thực tế là tôi tự hào về Meeting Planner, đặc biệt là công việc cho đến nay và tính hữu dụng ngày càng tăng của nó. Nhìn chung, bản beta của dịch vụ sắp hoàn thành.

Nhiều cuộc họp của người tham gia là mục công việc còn nhiều khó khăn và phức tạp nhất. Nhìn về phía trước, các tính năng và nhiệm vụ trở nên vừa phải, nhỏ hơn và dễ quản lý hơn. Tôi rất vui mừng về triển vọng tương lai của nó!

Nếu bạn chưa có, hãy lên lịch cuộc họp đầu tiên của bạn với Công cụ lập kế hoạch cuộc họp ngay bây giờ!

Hướng dẫn về huy động vốn từ cộng đồng cũng đang được thực hiện, vì vậy, vui lòng thực hiện theo trang Lập kế hoạch cuộc họp WeFunder của chúng tôi.

Bạn cũng có thể liên hệ với tôi @reifman. Tôi luôn mở ý tưởng về tính năng mới và đề xuất chủ đề cho các hướng dẫn trong tương lai.

Tiếp tục theo dõi tất cả các hướng dẫn này và các hướng dẫn sắp tới khác bằng cách xem loạt bài Xây dựng Khởi động Với PHP của bạn.

Liên kết liên quan

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.