بگذارید بازدیدکنندگان شرکت خودشان را اداره کنند
هدف
بگذارید کسانی که به درگاه شما وارد میشوند به یک شرکت تعلق داشته باشند: شرکتی بسازند، همکارانشان را دعوت کنند، ببینند چه کسانی آنجا هستند، نقشها را عوض کنند و در صورت لزوم بیرون بروند — همه از صفحهای که شما میکشید.
پیش از شروع
- درگاهی که از بازدیدکننده میخواهد وارد شود. ببینید از بازدیدکنندگان بخواهید وارد شوند.
- ارسال ایمیل، که مسئول نصب پارسور آن را راهاندازی میکند. دعوت یک پیام با پیوند است؛ بدون ایمیل کسی را نمیتوان دعوت کرد.
چرا اینها کار پلتفرم است و نه API سفارشی شما
هر چیز دیگری که درگاه شما میخواند و مینویسد از راه API سفارشی شما میگذرد. شرکت اینطور نیست، و دانستن دلیلش میارزد: اینکه چه کسی به کدام شرکت تعلق دارد نزد سرویس هویت پلتفرم نگه داشته میشود، و آن سرویس نشست یک بازدیدکننده را فقط از سرور خود درگاه میپذیرد. API سفارشی شما آنجا اجرا نمیشود — جایی اجرا میشود که جدولهای شما هستند — پس هیچ اسکریپتی که شما بنویسید اجازهٔ دعوتکردن کسی را نخواهد داشت.
بنابراین پلتفرم شش فراخوان را در اختیار شما میگذارد و شما صفحه را میکشید. هیچ صفحهٔ «افراد»ی درون پلتفرم ساخته نشده است: فهرست اعضا، جعبهٔ دعوت و انتخابگر نقش را خودتان میچینید، همانطور که بقیهٔ درگاهتان را.
شش فراخوان
| فراخوان | چه میکند |
|---|---|
startCompany(name) | شرکتی میسازد و این بازدیدکننده نخستین مالک آن میشود |
invitePerson(email) / invitePerson(email, role) | دعوتنامه ایمیل میکند. فقط مالکان. بدون نقش یعنی Member |
loadCompanyPeople(into) / loadCompanyPeople(into, companyInto) | افراد را در یک فیلد حالت میگذارد و خودِ شرکت را در فیلد دوم |
changePersonRole(person, role) | عوض میکند که یک همکار چه میتواند بکند |
removePerson(person) | همکاری را برمیدارد، یا دعوتی را که هنوز پذیرفته نشده پس میگیرد |
leaveCompany() | این بازدیدکننده از شرکت بیرون میرود |
نقشها Member، Billing و Owner هستند و هر کدام هر چه را قبلی میتواند، میتواند. فقط مالکان دعوت میکنند، نقش عوض میکنند و کسی را برمیدارند؛ این را پلتفرم تصمیم میگیرد، نه صفحهٔ شما.
گامها
۱. یک جعبهٔ متن بکشید و مقدار آن را به یک فیلد حالت مثل state.text وصل کنید.
۲. یک دکمه بکشید و در رویداد click آن بنویسید:
startCompany(getState("text"));
createRecord("par_client", { par_name: getState("text") });
loadCompanyPeople("people", "company");
۳. دکمهٔ دومی برای دعوتکردن:
invitePerson(getState("text"));
loadCompanyPeople("people", "company");
notify("دع وت فرستاده شد.");
۴. در screenLoad صفحه، loadCompanyPeople("people", "company"); را بگذارید تا صفحه با فهرستِ
پرشده باز شود.
startCompany دو کار میکند: شرکت را میسازد و نشست این بازدیدکننده را به آن شرکت میچرخاند. تنها
پس از آن است که portalCustomerId() چیزی پاسخ میدهد — و همان است که API پشت createRecord
میخواند تا رکورد خودتان شناسهٔ شرکت را بگیرد.
اگر برعکس انجامش دهید، شناسهای برای دادن به رکورد وجود ندارد. API شما هرگز شناسهای از صفحه نمیگیرد، و نباید هم بگیرد: پلتفرم آن را تصمیم میگیرد، و همین است که نمیگذارد کسی شرکت دیگری را از آنِ خود کند.
در فیلدهای حالت چه می نشیند
loadCompanyPeople("people", "company") دو فیلد را پر میکند:
-
state.people— یک سطر برای هر همکار و هر دعوتِ در انتظار:فیلد چیست idmember:…یاinvitation:…— همان را مستقیم بهremovePersonبدهیدnameنام او، یا نشانیای که دعوت به آن رفته است emailنشانیای که با آن وارد میشود roleMember،BillingیاOwnerstatusMemberیاInvitedisYouاینکه این سطر خودِ خوانندهٔ صفحه است یا نه -
state.company—{ name, role, canManage }. یک نوشته را بهstate.company.nameوصل کنید و دیدهشدن جعبهٔ دعوت را بهstate.company.canManageببندید تا به عضو عادی دکمهای نشان داده نشود که پاسخش رد است.
کسی که در هیچ شرکتی نیست فهرست خالی و شرکت خالی میگیرد، و این خطا نیست — دقیقاً همان چیزی است که فرم «شرکتی بسازید» برای آن هست.
دکمهٔ برداشتن که روی هر دو نوع سطر کار میکند
یک جدول را روی state.people تکرار کنید و در سطر یک دکمه بگذارید:
removePerson(row.id);
loadCompanyPeople("people", "company");
این همکار را برمیدارد یا دعوت را پس میگیرد، چون شناسهٔ سطر میگوید کدام است. شما این شرط را نمینویسید — و نباید بنویسید، چون این دو برای پلتفرم دو کار متفاوتاند و قاعدههایشان را فقط او میداند.
نقش یک دعوت را نمیتوان عوض کرد. changePersonRole روی سطر invitation: با جمله رد میشود: دعوت را
پس بگیرید و دوباره دعوت کنید.
رد شدن چه شکلی است
جملهٔ خود پلتفرم کنار همان دکمهای میآید که فشرده شده است — «فقط یک مالک میتواند افراد را دعوت کند»، «آخرین مالک نمیتواند شرکت را ترک کند»، «این نشانی از پیش در این شرکت است».
لازم نیست این پیامها را خودتان بنویسید و بهتر است پیشدستی نکنید: قاعدهها از آنِ پلتفرماند، و صفحهای که حدس بزند سرانجام اشتباه حدس میزند.
کسی که تنها مالک یک شرکت است، اول باید همکاری را مالک کند. این عمدی است: شرکتی که رکورد پشتش هست با یک فشردن دکمه بیمدیر رها نمیشود.