الخميس، 9 ديسمبر 2010

إخفاء أحد عناصر قائمة إجراءات الموقع Site Actions

تعتبر قائمة إجراءات الموقع من أهم القوائم في الشيربوينت 2010 وأكثرها استخداماً حيث تضم العديد من الأوامر الهامة مثل أمر إنشاء صفحة جديدة, حيث عند اختيار الأمر "صفحة جديدة" تظهر نافذة منبثقة لإدخال اسم الصفحة الجديدة:





والنافذة المنبثقة تُنشئ صفحة جديدة من مخطط الصفحة الافتراضي الذي يمكن تعيينه من خلال إجراءات الموقع, وهي ميزة جديدة في شيربوينت 2010.





ولكن قد نضطر في بعض الأحيان إلى إخفاء الأوامر الافتراضية في قائمة إجراءات الموقع لأسباب تتعلق بالتخصيصات التي قد تتطلبها بعض المشاريع, وفي مثالنا هذا سنعمل على إخفاء الأمر "صفحة جديدة New Page" من خلال بناء ميزة تعمل على مستوى الموقع Web site وليس على مستوى مجموعة المواقع Site Collection.
بناء الميزة Feature باستخدام VS 2010
سنستخدم أداة التطوير Visual Studio 2010 المقدم من قبل شركة مايكروسوفت لتطوير الميزة الجديدة, حيث أن الإصدار 2010 يحتوي على أدوات تساعد في تطوير عناصر ومشاريع متكاملة مع شيربوينت 2010 SharePoint. ولإنشاء المشروع الجديد اختر القائمة File - New - Project ومن ثم اختر القائمة SharePoint - 2010, ومن ثم اختر نوع المشروع Empty SharePoint Project كما في الشكل التالي:





أدخل في حقل اسم المشروع SiteActionsMenuCustomization كاسم للمشروع, الآن ستظهر نافذة من خلالها يمكن تحديد عنوان مجموعة المواقع Site Collection التي سيتم نشر الحل الجديد عليها كما يلي:





من خلال الخطوات السابقة تم إنشاء مشروع شيربوينت فارغ لا يحتوي على أي عنصر, أما الخطوة التالية فهي إضافة ميزة Feature إلى المشروع, وذلك بالضغط على المجلد Features بزر الفأرة الأيمن واختيار الأمر Add Feature:




يتم إعطاء الميزة الجديدة اسم افتراضي هو Feature1 من الأفضل تغيير إلى اسم ذا معنى, وسنختار الاسم HideNewPageFromSiteActions, وتغيير عنوان الميزة إلى Site Actions - Hide New Page. أما اسم المجلد الذي سيتم إنشاؤه من أجل الميزة الجديدة داخل المجلد Template/Features فمن الممكن تغيير اسمه من خلال نافذة خصائص الميزة كما يلي:




الخطوة التالية هي بناء صف Class الهدف منه هو التقاط عملية إظهار الأمر "صفحة جديدة New Page" وإخفائه قبل تنفيذ عملية الإظهار. ولتنفيذ ذلك أضف مشروع جديد من النوع Class Library اسمه SiteActionsHelper وأضف إليه صف Class اسمه SiteActionsHidePage يرث الصف WebControl.
ملاحظة: يجب إضافة مرجع إلى المجمعة System.Web والمجمعة Microsoft.SharePoint.




طبعاً القيمة wsaCreatePage هي القيمة الفريدة المعرفة للأمر "صفحة جديدة New Page" في قائمة إجراءات الموقع Site Actions. ويمكن معرفة جميع القيم المعرفة لأوامر قائمة إجراءات الموقع يجب فتح الملف SiteAction.xml في المسار التالي:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\EditingMenu
بعد بناء المجمعة التي تحتوي على الشيفرة السابقة يجب الآن إضافتها إلى الميزة التي تم بناؤها سابقاً HideNewPageFromSiteActions, وذلك بإضافة ملف manifest.xml من خلال إضافة عنصر من النوع Empty Element إلى مشروع الشيربوينت 2010 وكتابة الشيفرة التالية فيه:








بعد تنفيذ جميع الخطوات السابقة يجب تنفيذ الخطوات التالية:
  • نشر الميزة الجديدة من خلال الأمر Deploy في Visual Studio 2010.
  • نشر المجموعة SiteActionsHelper إلى المجلد c:\windows\assembly أو GAC.
  • إضافة عنصر التحكم SiteActionsHidePage إلى الملف web.config ضمن القسم SafeControls.
نشر المجمعة SiteActionsHelper من خلال VS 2010
1. اضغط على المجلد Package في المشروع SiteActionsMenuCustomization.




2. اضغط على الخيار Advanced في النافذة الجديدة.




3. اضغط على الزر Add واختر Add Assembly form Project Output.




4. من القائمة Source Project اختر المشروع SiteActionsHelper.




5. الخطوة الأخيرة هي الضغط على الزر OK وحفظ الخيارات الجديدة للمجلد Package.
الآن لنشر الميزة الجديدة اختر الأمر Deploy كما في الشكل التالي:




بعد تنفيذ جميع الخطوات السابقة سيختفي الأمر "صفحة جديدة New Page" من قائمة إجراءات الموقع, مع ملاحظة أنه في حالة نشر الميزة على المجال Web أي على مستوى موقع Web Site فإن هذا الأمر يختفي فقط على مستوى هذا الموقع وهو الموقع الجذر Root web site لمجموعة الموقع التي تم تحديدها في بداية إنشاء المشروع, ولإخفاء الأمر "صفحة جديدة New Page" من جميع مواقع مجموعة المواقع يجب تغيير مجال الميزة ليكون على مستوى مجموعة الموقع وتحديد القيمة Site. ولتغيير هذه القيمة اضغط على اسم الميزة في المشروع كما في الشكل التالي:




ومن ثم اختر القيمة Site من القائمة Scope كما في الشكل التالي:




الخلاصة
من خلال العمل على مثل هذا المستوى من التخصيص تلاحظ أن شيربوينت 2010 قابل للتخصيص بشكل كبير جداً, إضافة إلى أن استخدام الميزات Features لتنفيذ عمليات التخصيص يساعد في توفير المرونة اللازمة لنشر هذا التخصيص على أي مشروع جديد مع قابلية إيقاف هذا التخصيص بإلغاء تفعيل الميزة.