الأحد، 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 آخر.