وثائق المطورين

حزمة رسمية للـ TypeScript وأخرى لـ PHP. نفس العقد، نفس المسارات، نفس الصلاحيات التي يفحصها تطبيق قُرب نفسه.

TypeScript1.7.0PHP1.7

تخصيص المجتمع

الإعدادات، الهوية، الوثائق القانونية، القائمة الجانبية والإعلانات.

ts
const settings = await gurb.community.getSettings()

await gurb.community.updateSettings({ pageVisibility: { news: false } })
await gurb.community.updateBranding({ primaryColor: '#093431', city: 'الرياض' })
await gurb.community.updateLegal({ terms: 'نص الشروط…' })

await gurb.sidebar.update({ items: menu })          // PUT — replaces the whole menu
await gurb.advertisements.update('ad1', { isActive: false })

لا تقرأ الإعدادات ثم تكتب الكتلة كاملة

الخادم يدمج بعمق لـ pageVisibility فقط. أي مفتاح آخر ترسله يستبدل نظيره المخزّن بالكامل — فدورة قراءة‑تعديل‑كتابة تدهس homeWidgets وwidgetConfig وguestAccess بما كانت تحمله عمليتك. الاستجابة تقول نجاح. ولا أحد يكتشف حتى يبلّغ عضو عن قائمة مفقودة.

السلسلة الفارغة تعليمة حقيقية

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

ts
await gurb.community.updateLegal({ terms: '' })        // restores the standard template
await gurb.community.updateLegal({ privacyPolicy: '…' }) // leaves terms untouched

تغيير النوع ليس مجرد مفتاح تبديل

الانتقال من عام إلى خاص يعيد ضبط موافقة معاينة الزوار على كل صف في كل قسم، في نفس المعاملة — والرجوع لا يستعيدها.

القائمة والإعلانات محجوبتان بالخطة حتى في القراءة

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