الخميس، 28 يوليو 2011

How To: Visual Web Part 1


تمت كتابة هذه المقالة كمحاضرة تم إلقاؤها في جامعة الأمير سلطان في الرياض برعاية مجموعة RSUG





You can download the article as PDF from the following link
How To: Visual Web Part 1



Create empty SharePoint project









- You should change http://stg-sp2010 to your URL.









Add new visual web part











- Change Feature1 --> RSUGHelloSharePoint2010Feature





Change web part namespace

1. Open RSUGHelloSharePoint2010.cs file and change the name space of RSUGHelloSharePoint2010 class to RSUGVisualWebPart01.








2. Open RSUGHelloSharePoint2010.webpart file.

3. Change name attribute value to RSUGVisualWebPart01.RSUGHelloSharePoint2010, $SharePoint.Project.AssemblyFullName$.








4. Open RSUGHelloSharePoint2010UserControl.ascx.cs.

5. Change namespace of RSUGHelloSharePoint2010UserControl class to RSUGVisualWebPart01.








6. Open RSUGHelloSharePoint2010UserControl.ascx file.

7. Change Inherits attribute value to RSUGVisualWebPart01.RSUGHelloSharePoint2010UserCon trol.








8. Open SharePointProjectItem.spdata file.

9. Change Namespace attribute value to RSUGVisualWebPart01.








Change web part control location

1. Open Elements.xml file.

2. Change Value attribute of Group property value to RSUG.








3. Open RSUGHelloSharePoint2010.cs file.

4. Change value of _ascxPath variable to @"~/_CONTROLTEMPLATES/RSUG/RSUGHelloSharePoint2010UserControl.ascx".








5. Open SharePointProjectItem.spdata file and change value of Target attribute to CONTROLTEMPLATES\RSUG\.








Add public property

1. Open RSUGHelloSharePoint2010UserControl.ascx file and add the following code to end of the file:




2. Open RSUGHelloSharePoint2010UserControl.ascx.cs file and add the following code:




3. Open RSUGHelloSharePoint2010.cs file and add MyHello public property as following:




4. Update CreateChildControls method code to be as following:




Visual web part localization

1. Add mapping to resources folder.






2. Add resource file “rsugvisualwebpart01.ar-sa.resx”.












3. Open Elements.xml file and change value of Value property as following:




4. Open RSUGHelloSharePoint2010.webpart file and change Title property value as following:




5. Take copy from rsugvisualwebpart01.ar-sa.resx file rename it to rsugvisualwebpart01.en-us.resx.








Deployment and Usage





1. Create web part page and press “Add web part” on one of web part zones.












الخميس، 21 يوليو 2011

كيف تمنع جزء من النص من الظهور في نتائج بحث شيربوينت 2010


في جميع المشاريع التي تعتمد على شيربوينت 2010 كمنصة عمل لا بد أنها ستحتوي على محرك بحث ضمن محتوى البوابة أو الموقع, مع إمكانيات البحث الأخرى التي يوفرها شيربوينت 2010 SharePoint, لكن يجب ضبط إعدادات محرك البحث على شيربوينت 2010 بشكل صحيح لتحقيق أفضل نتائج ضمن البحث. ومن المشاكل التي قد تواجه عملية البحث هي إظهار نتائج قد يظن البعض بأنها غير مرتبطة مباشرة بالصفحة التي ظهرت فيها, وطبعاً لا يمكن أن يحصل هذا الأمر فنتائج البحث التي يُظهرها شيربوينت 2010 دقيقة جداً, لكن هناك عدة عوامل لعدم تطابق نتائج البحث مع الرابط الذي يعرضه شيربوينت ومنها:
  • عدم تحديث فهرس محرك بحث شيربوينت 2010 بعد إجراء التعديلات الأخيرة. حيث من الممكن أن شيربوينت قد نفذ عملية فهرسة لبعض البيانات التي تم تحديثها أو حذفها ولم يتم تحديث فهرس شيربوينت, لذلك قد تظهر في نتائج البحث.
  • في بعض الأحيان تتكرر بعض النصوص في كل صفحة من صفحات الموقع, وهذا يعني أن أي كلمة ضمن هذه النصوص ستظهر في نتائج البحث لجميع الصفحات, وكمثال على ذلك القوائم العلوية وتذييل الصفحة Page Footer وغيرها من النصوص التي تظهر في كل صفحة من صفحات الموقع, مثال لو كانت القائمة العلوية تحتوي على النص "مركز التدريب" وهو رابط إلى موقع مركز التدريب, عند البحث عن الكلمة التدريب ستظهر صفحات قد يُعتقد بأن لا علاقة لها بنتائج البحث ولكن الحقيقة أن النص في القائمة العلوية هو المعني بهذه المشكلة, ولحل هذه المشكلة يجب منع محرك البحث في شيربوينت 2010 من فهرسة بعض النصوص التي تتكرر كما سبق, ولتحقيق ذلك يجب إحاطة النصوص التي لا ترغب في فهرستها ضمن الوسم <div class=”noindex”></div> عندها سيتجاهل محرك البحث النصوص الموجودة ضمن هذا الوسم. كما في المثال التالي:

<div class=”noindex”>نص لن يظهر في نتائج البحث</div>


بعد تحديث معلومات محرك البحث لن يظهر النص السابق ضمن نتائج البحث.

إصدار أول كتاب عربي عن شيربوينت 2010



تم إصدار النسخة الأولى من كتاب تعلم شيربوينت 2010 باللغة العربية ولأول مرة, حيث تفتخر دار شعاع بأنه أول من أصدر كتاب باللغة العربية حول شيربوينت 2010 بالتعاون مع المهندس إسماعيل عنجريني





الجمعة، 15 يوليو 2011

تثبيت حزمة الإصلاح الكاملة 1 لشيربوينت 2010


مقدمة
بعد سلسلة من حزم الإصلاح لشيربوينت 2010 أصدرتها مايكروسوفت وتُسمى Hotfixes أو Cumulative Updates, أصدرت مايكروسوفت مؤخراً حزمة الإصلاح الأولى Service Pack 1 for SharePoint 2010 والتي تتضمن جميع حزم الإصلاح المتفرقة السابقة إضافة إلى مجموعة من الميزات الجديدة التي سترافق هذه الحزمة, ويُعتبر تطبيقها على بيئة العمل الحقيقية ضرورة يجب عدم التهاون فيها لما تحتويه من تحسينات على عمل شيربوينت 2010 سواء من ناحية الأداء أو من ناحية الأمان أو فيما يتعلق بميزات شيربوينت وخدماته.

الحصول على حزمة الإصلاح الكاملة لشيربوينت 2010 Service Pack 1 for SharePoint Server 2010

تتضمن حزمة الإصلاح الكاملة Service Pack 1 for SharePoint Servcer 2010 عدة ملفات يجب أن يتم أخذها بعين الاعتبار أثناء عملية تحميل هذه الحزمة على بيئة عمل شيربوينت 2010.
حزمة الإصلاح الكاملة Service Pack 1 for SharePoint Foundation 2010 على الرابط التالي:

حزمة الإصلاح الكاملة للغة العربيةMicrosoft SharePoint Foundation 2010 Language Pack Service Pack 1 على الرابط التالي:
حزمة الإصلاح الكاملة Service Pack 1 for SharePoint Server 2010 على الرابط التالي:
حزمة الإصلاح الكاملة للغة العربية Service Pack 1 for Server Language Pack 2010 على الرابط التالي:
Service Pack 1 for Microsoft Office Web Apps 2010
حزمة الإصلاح Cumulative Update June 2011
http://support.microsoft.com/kb/2536599


كيفية تحميل حزمة الإصلاح الكاملة على بيئة عمل شيربوينت 2010
يجب الالتزام بالترتيب المذكور في وثائق مايكروسوفت حول حزمة الإصلاح الكاملة وهي كما يلي:
  1. Service Pack 1 for SharePoint Foundation 2010.
  2. Microsoft SharePoint Foundation 2010 Language Pack Service Pack 1.
  3. Service Pack 1 for SharePoint Server 2010.
  4. Service Pack 1 for Server Language Pack 2010.
  5. Service Pack1 for Office Web Applications (عند وجود حزمة Office Web Application على مزرعة شيربوينت 2010 الحالية).
  6. June 2011 Cumulative Updates.
ملاحظة: في حال أن بيئة عمل شيربوينت 2010 الحالية هي SharePoint Server 2010 فيجب البدء من الخطوة رقم 3.


الخطوات المفضلة لتنفيذ عملية تحميل حزمة الإصلاح الكاملة Service Pack 1 for SharePoint Server 2010 Steps
  1. وضع جميع الملفات الثنائية لحزم الإصلاح المذكورة سابقاً على جميع الخوادم ضمن مزرعة شيربوينت 2010 SharePoint Server 2010 Farm.
  2. تحويل جميع قواعد بيانات المحتوى تطبيقات الويب Content Databases إلى نمط القراءة فقط Read Only وذلك لمنع أي عملية تغيير قد تحصل على بيانات تطبيقات الويب أثناء تنفيذ خطوات تحميل حزمة الإصلاح الكاملة لشيربوينت 2010.
  3. تنفيذ عملية نسخ احتياطي لجميع قواعد البيانات الخاصة ببيئة عمل شيربوينت بما فيها قواعد البيانات الخاصة بموقع الإدارة المركزية Central Administration وقاعدة بيانات إعدادات بيئة عمل شيربوينت 2010 Configuration Database , وبالطبع قواعد بيانات المحتوى Content Databases.
  4. تنفيذ عملية نسخ لجميع الملفات الموجودة تحت المسار c:\inetpub\wwwroot\wss\VirtualDirectories.
  5. منع أي طلب من الوصول إلى خوادم مزرعة شيربوينت 2010 SharePoint 2010 Farm.
  6. البدء بتشغيل الملفات الثنائية لحزم الإصلاح الكاملة حسب الترتيب السابق. ويمكن تشغيل هذه الملفات على جميع الخوادم ضمن مزرعة شيربوينت 2010 بنفس الوقت لأن تأثير هذه العملية لا يتم تنفيذه إلى بعد تشغيل SharePoint Configuration Wizard.
  7. التأكد من انتهاء تحميل جميع الحزم الكاملة على جميع الخوادم, يجب تشغيل الأداة SharePoint 2010 Configuration Wizard على الخادم الذي يعمل عليه موقع الإدارة المركزية Central Administration.
  8. ستبدأ عملية تطبيق حزم الإصلاح بشكل فعلي الآن ولا يمكن التراجع عن هذه الخطوة, وفي حال حدوث أي خطأ أثناء هذه العملية يجب معرفته والعمل على حله بشكل صحيح ومن ثم إعادة تشغيل SharePoint 2010 Configuration Wizard على الخادم الذي يعمل عليه موقع الإدارة المركزية Central Administration.
  9. بعد الانتهاء من الخطوة رقم 8 بنجاح ابدأ بتشغيل SharePoint 2010 Configuration Wizard على باقي الخوادم بشكل متسلسل وتأكد من حل جميع المشاكل والأخطاء التي قد تحدث أثناء هذه العملية. علماً أن نجاح هذه العملية على أحد الخوادم إشارة جيدة إلى أنها ستنجح بنسبة 98% على باقي الخوادم.
  10. بعد الانتهاء من تنفيذ SharePoint 2010 Configuration Wizard على جميع الخوادم بشكل ناجح, يجب الآن الانتقال إلى موقع الإدارة المركزية Central Administration والتأكد من أن جميع الخدمات السابقة تعمل بشكل صحيح.

ملاحظة: يجب على مدير مزرعة شيربوينت 2010 SharePoint 2010 Farm التأكد من تحميل جميع حزم الإصلاح المتعلقة بجميع الخدمات المتوفرة على بيئة العمل مثل Project Server 2010 و TFS 2010 وغيرها والتي لم يتم التطرق إليها أعلاه.


تحديث بتاريخ 17-07-2011
يجب إعادة تثبيت June 2011 Hotfix على بيئة عمل شيربوينت 2010 في حال أنه تم تثبيت النسبخة June Hotfix قبل 08-07-2011 وذلك بسبب وجود بعض المشاكل التي ظهرت نتيئجة النسبة القديمة, ويمكن تحميلها من الرباط التالي


الاثنين، 11 يوليو 2011

كيف تستخدم الأداة SPDisposeCheck

الهدف من الأداة SPDisposeCheck
تُستخدم هذه الأداة للتأكد من أن الشيفرة المكتوبة في المجمعات Assemblies لا تحتوي على ما سيسبب مشاكل غير متوقعة في ذاكرة الخادم التي تعمل عليها التطبيقات أو ما يسمى بـ Memory Leaks.

متى يجب استخدام هذه الأداة
يجب استخدام هذه الأداة من قبل المطورين الذين يستخدمون واجهة برمجة التطبيقات API دائماً قبل إطلاق العمل للمستخدم النهائي وذلك لتجنب أي مشكلة في ذاكرة الخادم Server RAM.

كيف يتم استخدام هذه الأداة
1 - يفضل دائماً قبل استخدام هذه الأداة الحصول على الإصدار الأخير منها على الرابط التالي:


2 - الأداء هي عبارة عن ملف تنفيذي EXE File يجب تنفيذه ليتم تركيب الأداة على جهازك.










3 - بعد الانتهاء من الخطوات السابقة (يمكن تجاوز الخطوة رقم 2 في حال أن الأداة موجودة مسبقاً على جهازك), نفذ الآن الخطوات التالية لتنفيذ عملية اختبار المجمعة Assembly التي تستخدم واجهة برمجة التطبيقات لشيربوينت SharePoint API:

- افتح منفذ الأوامر Command Line ونفذ الأمر التالي:

cd C:\Program Files (x86)\Microsoft\SharePoint Dispose Check


ملاحظة: المسار الذي تم وضعه في الأمر السابق قد يتغير حسب المستخدم أو يمكن أن تغييره أثناء عملية تركيب الأداة على جهازك.

- الآن نفذ الأمر التالي لفحص الشيفرة في إحدى المجمعات Assembly كما يلي:

SPDisposeCheck.exe DLL_PATH >> c:\disposeReport.txt

علماً أن DLL_PATH هو المسار الكامل للمجمعة على جهازك. أما بالنسبة للمسار c:\disposeReport.txt فهو اختياري ولكن يفضل استخدام هذه الطريقة لكي يتم تخزين جميع نتائج الاختبار في ملف نصي بدلاً من عرضه على الشاشة.

- بعد الانتهاء من تنفيذ الأمر السابق افتح الملف النصي الذي تم تحديده في الأمر السابق. حيث سيحتوي هذا الملف على جميع الملاحظات إضافة إلى العدد الإجمالي لهذه الملاحظات.

4 - جميع الملاحظات التي تكون نتيجة استخدام هذه الأداة تتعلق باستخدام التابع Dispose أو العبارة using عند الوصول إلى كائن Object باستخدام واجهة برمجة التطبيقات SharePoint API, إضافة إلى ذلك فليس بالضرورة أن جميع الملاحظات التي ستظهر يجب حلها وذلك بناء على الوثائق التي تتحدث عن هذه الأداة, لذلك يجب عدم التعديل على الشيفرة المتعلقة بالشيربوينت قبل التأكد منها.

الأحد، 3 أبريل 2011

كيف تستخدم جزء الويب المرئي - 1


إن حزمة التحسينات التي تم نشرها مع بيئة التطوير المتكاملة Visual Studio 2010 تعتبر من أهم المزايا التي سهلت عمل المطورين على شيربوينت 2010 من خلال هذه البيئة, ولعل من أهم التحسينات هي جزء الويب المرئي Visual Web Part الذي سهل عملية بناء أجزاء الويب على شيربوينت 2010, وهذا النوع من أجزاء الويب يتألف من قسمين, الأول هو عبارة عن صف class يعبر عن جزء الويب نفسه, والثاني هو عبارة عن عنصر تحكم Web User Control (ascx), ويسمى هذا النوع بجزء ويب مرئي لأن المطور يستطيع استخدام عنصر التحكم ascx لوضع جميع العناصر التي يحتاجها في بناء جزء الويب الجديد, ويتكفل القسم الأول (وهو الصف class) الذي يعبر عن جزء الويب نفسه بتحميل عنصر التحكم ascx في وقت التنفيذ. وفي هذه المقالة سنناقش جميع عناصر جزء الويب المرئي بكامل تفاصيله.

أولاً يجب إنشاء مشروع جديد باستخدام بيئة التطوير Visual Studio 2010 من التصنيف SharePoint  2010, وعندها يمكن الاختيار بين أحد القالبين Empty SharePoint Project أو Visual Web Part, والفرق أن القالب الثاني يضيف بشكل تلقائي جزئ ويب واحد افتراضي إلى المشروع, أما باستخدام الأول فيتم إنشاء مشروع شيربوينت 2010 فارغ تماماً ولا يحتوي على أي عنصر إضافي, وفي هذه المقالة سيتم استخدام القالب Empty SharePoint Project وبعدها ستتم إضافة جزء ويب مرئي.



الخطوة الثانية هي تحديد مجموعة المواقع Site Collection التي سيتم نشر جزء الويب الجديد عليها, حيث يجب تحديد اسم الخادم الذي يعمل عليه شيربوينت 2010 مع رقم المنفذ Port Number كما في الشكل التالي, مع ملاحظة أنه لاداعي لإدخال رقم المنفذ في حال أنه يساوي 80:



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



الخطوة التالية هي إضافة جزئ ويب مرئي جديد إلى المشروع الذي تم إنشاؤه في الخطوة السابقة:





بعد إضافة جزء ويب مرئي جديد يتم إنشاء الملفات الخاصة بجزء الويب إضافة إلى إضافة ميزة Feature التي ستستخدم لنشر جزء الويب المرئي الجديد إلى الموقع الذي تم تحديده في الخطوة الثانية من إنشاء المشروع السابق:



نلاحظ أن جزء الويب المرئي الجديد يتألف من العناصر التالية:
  • CalculatorVisualWebPart, وهو عبارة عن الحاوية الرئيسية لجزء الويب المرئي وعند الضغط عليه مرتين يفتح عنصر التحكم CalculatorVisualWebPartUserControl.ascx.
  • وهو الصف class الذي يعبر عن جزء الويب نفسه, فمن المعلوم أن جزء الويب Web Part هو عبارة عن صف يرث الصف WebPart من فضاء الأسماء System.Web.UI.WebControls.WebParts, المهم أن هذا الصف يحتوي على الشيفرة التالية:



    حيث أن المتغير _ascxPath يحتوي على المسار الذي سيحتوي على عنصر التحكم ascx الذي سيتم تحميله في وقت التنفيذ من خلال الشيفرة في المنهج CreateChildControls().

    ملاحظة: يمكن تغيير مسار عنصر التحكم عند الضرورة إلى مجلد آخر بشرط تغييره في الملف SharePointProjectItem.spdata الذي سيأتي شرحه لاحقاً. مع العلم أن القسم الأول في مسار عنصر التحكم وهو _CONTROLTEMPLATES هو عبارة عن مجلد افتراضي Virtual Directory يشير إلى المجلد الفيزيائي التالي:

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES

    أما بالنسبة لباقي المسار فإن VisualWebPartArticle هو اسم المشروع و CalculatorVisualWebPart هو اسم جزء الويب المرئي ذاته, ويمكن تغيير هذين المسارين, أي ليس من الضروري الالتزام بهذه الطريقة المسار وإنما يتم توليد هذا المسار من خلال بيئة التطوير Visual Studio 2010 بشكل تلقائي كطريقة لمنع تكرار المسار ويجب على المطور تغيير هذا المسار ليتوافق مع إعدادات المشروع التي يعمل عليها, فمثلاً لو كان اسم المشروع الذي يعمل عليه هو SYRDEV وأنشأ مجلداً اسمه SYRDEV تحت المجلد الافتراضي _CONTROLTEMPLATES فمن الأفضل نقل مسار جزء الويب المرئي الجديد إلى تحت المجلد SYRDEV كنوع من الترتيب وحصر ملفات المشروع تحت مسار واحد.
  • هذا الملف هو عبارة عن ملف نصي يحتوي على شيفرة بصيغة XML, هذه الشيفرة تكون مفهومة من قبل الجزئية المسؤولة عن إدارة أجزاء الويب في شيربوينت 2010. ويجب المحافظة على هيكلية هذا الملف مع إمكانية التعديل على بعض القيم المتوفرة في الملف, وفيما يلي شرح لهذه القيم:
    • type: قيمة هذا العنصر هي المسار الكامل للصف الذي يعبر عن جزء الويب نفسه والموجود في الملف CalculatorVisualWebPart.cs الذي تم شرحه سابقاً, وتتألف هذه القيمة من قسمين, القسم الأول هو اسم الصف مع فضاء الأسماء namespace.class_name وهو في مثالنا هنا يساوي القيمة التالية:

      VisualWebPartArticle.CalculatorVisualWebPart.CalculatorVisualWebPart

      أما القسم الثاني فهو الاسم الكامل للجمعة الناتجة عن بناء هذا المشروع ويعبر عنها في مشروعنا بالقيمة التالية:

      $SharePoint.Project.AssemblyFullName$

      طبعاً القيمة السابقة ليست القيمة الحقيقية وإنما هي اختصار في بيئة التطوير Visual Studio 2010 يتم استبدالها بالقيمة الحقيقية أثناء عملية النشر Deploy وستكون هذه القيمة مساوية للقيمة التالية:

      VisualWebPartArticle, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14371a3110866f98

      مع العلم أن قيمة الخاصية PublicKeyToken ستكون مختلفة في المشروع الذي تنشئه أنت ويرجع إلى آلية توليد هذا الرقم.
    • importErrorMessage: هذه القيمة تُستخدم كرسالة خطأ عند حدوث مشكلة في تحميل نوع جزء الويب, بسبب مشكلة في المجمعة الخاصة به أو أية مشاكل في نشر جزء الويب, ونلاحظ وجود القيمة التالية:

      $Resources:core,ImportErrorMessage;

      وهذا التعبير هو تعبير الحصول على قيمة من ملف مصدر اللغة الذي اسمه core ومفتاح القيمة هو ImportErrorMessage, وسيتم استخدام هذا التعبير لاحقاً في هذه المقالة لتعيين عنوان ووصف جزء الويب إضافة إلى قيم أخرى.
    • بالنسبة للخصائص الأخرى مثل Title, Description فهي عبارة عن عنوان ووصف لجزء الويب بالترتيب.
  • CalculatorVisualWebPartUserControl.ascx: هذا الملف هو عنصر التحكم الذي أعطى صفة "مرئي" لنوع جزء ويب الجديد في شيربوينت 2010, وهو عنصر تحكم ASP.NET يمكن استخدامه تماماً كما يتم استخدامه في مشروع ASP.NET عادي بدون شيربوينت 2010, وهذا مما يعطي مرونة كبير للمطورين مقارنة بالشيفرة البرمجية اللازمة لتنفيذ نفس المخرجات في جزء الويب العادي. وطبعاً هذا الملف يحتوي على ملف لكتابة الشيفرة اسمه CalculatorVisualWebPartUserControl.ascx.cs.
  • Elements.xml: هذا الملف هو من أكثر الملفات شيوعاً عند استخدام بيئة التطوير Visual Studio 2010 لتطوير وبناء عناصر خاصة بشيربوينت 2010 وتختلف وظيفة هذا الملف باختلاف نوع العنصر الذي يتعامل معه يتم استخدام هذا الملف من قبل الميزة Feature التي ستستخدم لنشر جزء الويب المرئي الجاري تطويره, ويحتوي هذا الملف على الشيفرة التالية:


  • حيث تحتوي هذه الشيفرة على تعليمات تفيد تحديد المكان الذي سيحتوي على الملف CalculatorVisualWebPart.webpart, وهي قائمة مخفية اسمها wp تحت _catalogs, ولن يتم تغيير أية قيمة في هذا الملف ماعدا الخاصية Group حيث تحدد اسم المجموعة التي سيظهر تحتها جزء الويب أثناء محاولة إضافة جزء ويب جديد من خلال الضغط على "إضافة جزء ويب" في إحدى الصفحات, وسيتم تغيير قيمة هذه الخاصية لاحقاً بحيث تستخدم قيمة من ملفات مصدر اللغة أي أن اسم المجموعة سيختلف باختلاف اللغة المستخدمة في الموقع.
  • SharePointProjectItem.spdata: هذا الملف هو أحد الملفات التي تتكرر مع معظم العناصر التي تتم إضافتها إلى بيئة التطوير Visual Studio 2010 مثل الملف Elements.xml, لكن هذا الملف بشكل افتراضي يكون مخفي ويمكن مشاهدته بعد إظهار الملفات المخفية في المشروع من خلال الزر "إظهار جميع الملفات Show All Files" كما في الشكل التالي:





    يحتوي هذا الملف على مجموعة من القيم التي تفيد في عملية نشر ملفات أجزاء الويب من خلال بيئة التطوير Visual Studio 2010:



    ويجب التركيز على القيمتين التاليتين:
    • السطر الذي يحتوي اسم عنصر التحكم CalculatorVisualWebPartUserControl.ascx, حيث يُحدد في هذا السطر مسار المجلد الذي سيحتوي على ملف عنصر التحكم.
    • العنصر SafeControl, حيث يتم تحديد معلومات سطر للعنصر SafeControl سيتم كتابته في الملف web.config لتطبيق الويب المحدد في الخطوة الثانية أثناء إنشاء المشروع في أول هذه المقالة:
      • Assembly: الاسم الكامل للمجمعة الناتجة عن المشروع, وقد أشرنا سابقاً إلى أن $SharePoint.Project.AssemblyFullName$ هي قيمة يتم استبدالها من قبل بيئة التطوير Visual Studio 2010 أثناء تنفيذ عملية نشر المشروع Deploy, وهذه القيمة تساوي القيمة التالية:

        VisualWebPartArticle, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14371a3110866f98

        على أن قيمة الخاصية PublicKeyToken ستختلف عندك أثناء تنفيذ خطوات هذا المشروع.
      • Namespace: وهي قيمة فضاء الأسماء الذي يحتوي على صف جزء الويب المرئي الجديد ويتم تحديد فضاء الأسماء من خلال الملف CalculatorVisualWebPart.cs من خلال السطر المسبوق بكلمة namespace وفي هذا المشروع قيمة فضاء الأسماء الافتراضي هي:

        VisualWebPartArticle.CalculatorVisualWebPart

بعد شرح جميع عناصر جزء الويب المرئي السابق سيتم تنفيذ الخطوات التالية كتعديلات على الإعدادات الافتراضية لجزء الويب المرئي بعد إنشائه:
  1. تغيير فضاء الأسماء الافتراضي لجزء الويب المرئي.
  2. تغيير مسار المجلد الهدف الذي يحتوي على عنصر التحكم ascx.
  3. إضافة خاصية يمكن تغييرها من خلال تحرير خصائص جزء الويب المرئي في الصفحة التي تستخدم جزء الويب المرئي.
  4. استخدام جزء الويب المرئي لعرض عنصر تحكم ascx موجود في مشروع ASP.NET آخر.

الخميس، 31 مارس 2011

كيف يمكن استخدام ملفات المصادر الخاصة باللغة في ملفات تخطيط الصفحات


تعتبر ملفات تخطي الصفحات Page Layouts أحد العناصر الأساسية في عملية إنشاء الصفحات في المواقع التي يتم بناؤها باستخدام تقنية شيربوينت, ويتيح شيربوينت عملية إضافة ونشر ملفات تخطيط الصفحات باستخدام الميزات Features, وهذه الملفات تحتوي العديد من العناصر التي تفيد في عرض البيانات وتحديد طريقة عرضها وترتيبها, إضافة إلى احتوائها على مناطق لأجزاء الويب Web Part Zones, وهذه المناطق تفيد في عملية إضافة أجزاء ويب إلى الصفحات التي يتم إنشاؤها اعتماداً على ملف تخطيط صفحة معين مثل "صورة إلى اليمين ArticleRight.aspx" أو "صفحة أجزاء ويب BlankWebPartPage.aspx" وغيرها من أنواع الصفحات الافتراضية أو الإضافية التي يتم تخصيصها على حسب المشروع, ومن المعلوم أن لكل منطقة أجزاء ويب عنوان Title يُستخدم لإعطاء وصف واضح لمدخلي البيانات والمستخدمين الذين يتعاملون مع الصفحات في الموقع أثناء تحريرها, ومن المعلوم عند إنشاء مواقع ثنائية اللغة يجب الحرص على عرض النصوص بحسب اللغة التي يختاره المستخدم فمثلاً منطقة أجزاء الويب التي عنوانها في الإصدار العربي هو "المنطقة 1" يجب أن يكون العنوان في الإصدار الانجليزي هو "Title 1" وهكذا, وهنا سنركز على هذه النقطة فيما يخص بناء ملفات مصادر اللغة وكيفية نشرها واستخدامها. بالنسبة للأدوات المستخدمة فهي بيئة التطوير المتكاملة 2010 Visual Studio وبرنامج SharePoint Designer 2010 والاعتماد على تقنية الميزات Features لتنفيذ جميع عمليات النشر المرتبطة بملفات مخططات الصفحات وملفات مصادر اللغة.

أولاً يجب بناء مشروع جديد باستخدام القالب Empty SharePoint Project كما هو واضح في الشكل التالي:



الشاشة التالية تحدد عنوان URL مجموعة المواقع التي سيتم نشر الميزة الجديدة عليها, حدد العنوان المناسب حسب البيئة التي تستخدمها وباقي الخيارات كما في الشكل التالي:



بعد إنشاء المشروع الجديد يجب إضافة عنصر Element يحتوي على مخطط الصفحة كما في الخطوات التالية المبينة فيما يلي:





بالنسبة لإضافة مخطط صفحة Page Layouts يمكن نسخ صفحة من SharePoint Designer 2010 وإضافتها داخل العنصر PageLyouts الذي تم إنشاؤه في الخطة السابقة, ولنفترض تم نسخ الملف BlankWebPartPage.aspx الافتراضي في شيربوينت 2010 SharePoint مع تغيير اسمه إلى CustomBlankWebPart.aspx:



الآن يجب إضافة الشيفرة التالية إلى الملف Elements.xml ال موجود ضمن PageLaouts وذلك لنشر الملف الجديد باستخدام الميزة المرتبطة بالمشروع:



أما بالنسبة للقيمة التي سيتم وضعها مكان VALUE_HERE فيجب إدخال القيمة التالية كما هو بالضبط:

;#صفحة;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39;#

يجب الملاحظة بأنه يمكن استخدام نوع محتوى آخر غير صفحة, مثل صفحة المقالة أو أي نوع محتوى آخر عندها يجب تغيير اسم نوع المحتوى ورقمه في القيمة السابقة.

الآن يجب إضافة ملفات مصادر اللغة Resources files إلى المشروع بحيث يتم نشر هذه الملفات إلى المجلد App_GlobalResources الموجود ضمن مجلد تطبيق الويب في المسار التالي:

C:\inetpub\wwwroot\wss\VirtualDirectories

ومن أجل تحقيق هذا الهدف يجب إضافة عنصر فارغ Empty Elements ومن ثم تضاف ملفات المصدر إليه باللغات التي نريد التعامل معها:





بعد إضافة ملف مصدر اللغة العربية أضف مفتاح لقيمة جديدة كما يلي:
  • المفتاح: CustomBlankWebPart_TopZone
  • القيمة: تجربة

انسخ الملف العربي وغير اسمه إلى LocalizePageLayoutsResources.en-US.resx ومن ثم انسخ الملف العربي وغير اسمه إلى LocalizePageLayoutsResources.resx ليكون الشكل التالي:



بعد إضافة جميع المتطلبات يجب تعدل ملف تخطيط الصفحة CustomBlankWebPartPahe.aspx لاستخدام مفتاح القيمة الجديد حيث يتم استبدال القيمة Resources:cms,WebPartZoneTitle_Header بالقيمة Resources:LocalizePageLayoutsResources,CustomBlankWebPart_TopZone.

بالنسبة لملفات المصادر حتى يتم نشرها إلى المجلد App_GlobalResources يجب تنفيذ ما يلي:



جميع التعديلات والإضافات تم إنجازها والآن يجب تنفيذ عملية النشر من خلال تنفيذ الأمر Deploy. ومن ثم إنشاء صفحة من التخطيط CustomBlankWebPartPage.aspx كما يلي:


الخميس، 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 لتنفيذ عمليات التخصيص يساعد في توفير المرونة اللازمة لنشر هذا التخصيص على أي مشروع جديد مع قابلية إيقاف هذا التخصيص بإلغاء تفعيل الميزة.