الأربعاء، 7 أغسطس 2013

إضافة Like Button إلى صفحة شيربوينت 2013


من الإضافات الجديدة في شيربوينت 2013 هي إمكانية إضافة ميزة الإعجاب Like إلى أي عنصر من عناصر مكتبة المستندات Document Library أو الصفحات Pages. ولكن ولسبب ما فإن مايكروسوفت تتيح إمكانية عرض التقييم باستخدام النجوم Stars في الصفحات ولكن لا يظهر زر "أعجبني" في الصفحة. فيما يلي شرح آلية استخدام هذه الميزة مع شيفرة جافا سكريبت التي تمكن من استخدام هذه الميزة.

1 - يجب التأكد من أن خاصية التقييم مفعلة على مستوى مكتبة الصفحات Pages Library:
      - من التبويب "مكتبة" اختر إعدادات المكتبة.
      - من ثم اختر الرابط "إعدادات التصنيف"


      - يجب التأكد من إعدادات التقييم على أنها كما في الشكل التالي:


2 - بعد التأكد من ضبط إعدادات التقييم بشكل صحيح. يجب الآن إدراج عنصر التقييم في مخطط الصفحة Page Layout حيث يجب أن تظهر بالصفحة. ويتم ذلك بإدراج الشيفرة التالية علماً أنه يمكن تخصيص هذه الشيفرة بالشكل الذي يتناسب مع التصميم المعتمد:

<a href="javascript:void(0)" onclick="(function() {SURE_likepage.LikePage();})()"><span class="sure_likecount"></span>

3 - بعد ذلك يجب إدراج مرجع إلى الملف sure_like2013.js كما يلي:

<script type="text/javascript" src="FILE_PATH/sure_like2013.js"></script>

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


ويظهر بالشكل التالي في حال أن المستخدم الحالي ضغط على زر أعجبني مسبقاً لنفس الصفحة الحالي:


كما يمكن الاستفادة من القيمة $v_3.$2d_1 لمعرفة أسماء المستخدمين الذين أعجبوا بالصفحة الحالية.

ملاحظة: يمكن تخصيص الشكل السابق بحيث يتناسب مع التصميم المعتمد.


الخميس، 1 أغسطس 2013

استخدام المصادر في ملفات الجافا سكريبت Localized JavaScript


معظم استخدامات ملفات المصادر Resources لتمكين التطبيقات من دعم أكثر من لغة Localization ومعظمها تتم على مستوى الشيفرة التي يتم تنفيذها على السيرفر Server Side Code. لكن في بعض الأحيان نحتاج لدعم المصادر في شيفرة الجافا سكريبت. وهذه الإمكانية متوفرة في شيربوينت 2013 من خلال استخدام الملف ScriptResx.ashx. ويمكن استخدامه باتباع الخطوات التالية:

1 - يجب التأكد من أن ملف المصادر Resource File يدعم هذه الإمكانية وذلك بفتح الملف resx باستخدام محرر نصوص والتأكد من وجود السطر التالي:

<resheader name="scriptResx"> <value>true</value></resheader>
تحت العنصر التالي:
</xsd:schema>
وفي حال عدم توفره يجب إضافته.

2 - هذه الخطوة مرتبطة بكيفية استدعاء قيمة من ملف المصادر من خلال شيفرة الجافا سكريبت. حيث يمكن تعريف Namespace تحتوي على جميع قيم ملف المصد. مثلاً لنفترض أن الـ namespace لملف المصدر هو ProjectName.General وتوجد قيمة ضمن ملف المصدر يمكن الوصول إليها من خلال المفتاح SiteTitle عندها ضمن شيفرة الجافا سكريبت تكون الشيفرة كما يلي:

ProjectName.General.siteTitle

حيث يتم تغيير حالة الحرف الأول من المفتاح ليصبح حرفاً صغيراً. ولتعريف namespace لملف المصدر يجب فتح الملف ضمن محرر نصوص والبحث عن عنصر resheader الخاصية name له تساوي classFullName وفي حال عدم وجودها يجب إضافتها:


<resheader name="classFullName"><value>ProjectName.General</value></resheader>


3 - الآن يجب استخدام الملف ScriptResx.ashx كما يلي:


في الخطوة رقم 3 سيتم توليد ملف جافا سكريبت يحتوي على ملف المصدر ضمن الـ namespace المعرفة في الخطوة رقم 2.


تثبيت معالج الحدث على القوائم باستخدام الميزات List Event Handlers


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

تثبيت معالج الحدث باستخدام ميزة تعمل ضمن مجال مجموعة المواقع Scope=Site
يمكن تثبيت معالج الأحداث في شيربوينت 2013 على قائمة باستخدام ميزات ذات مجال Site أو مجال Web. وفي حال استخدام المجال Site للميزة عندها يمكن تحديد قيمة للخاصية Scope لتحديد مجال القوائم الذي سيثبت عليها معالج الحدث. في حال تحديد القيمة Site سيتم تثبيت معالج الحدث على جميع القوائم في مجموعة المواقع Site Collection، أما في حال تحديد القيمة Web فسيتم تثبيت معالج الحدث على الموقع الرئيسي فقط لمجموعة المواقع Root Web. ويجب الانتباه إلى أنه بغض النظر عن أي إعدادات أخرى فإن مالج الحدث سيتم تثبيته على جميع القوائم ضمن المجال المحدد في الخاصية Scope.

تثبيت معالج الحدث باستخدام ميزة تعمل ضمن مجال الموقع Scope=Web
عند استخدام المجال Scope = Web عندها يمكن تحديد قيم لبعض الإعدادات الإضافية. ومنها تحديد قيمة منطقية true|false للخاصية RootWebOnly، فعند تحديد القيمة true فإن معالج الحدث يمكن تثبيته فقط على القوائم التي تحت الموقع الرئيسي فقط ف يحال تفعيل الميزة على موقع فرعي سيؤدي ذلك إلى ظهور خطأ. أيضاً سيفحص شيربوينت 20103 العناصر Receivers للتأكد من قيمة الخاصية ListTemplateId، في حال تم تحديدها من قبل المطور فإن شيربوينت سيبحث عن قيمة الخاصية ListUrl، وفي حال أن كلا القيمتين محددتان فإن شيربوينت سيرسل خطأ يفيد بأنه يجب تحديد إحدى القيمتين فقط. وفي حال أن قيمة الخاصية ListUrl غير محددة فإن شيربوينت سيثبت معالج الحدث على جميع القوائم التي تطابق القيمة المعرفة في الخاصية ListTemplateId ضمن الموقع الحالي. ويجب الانتباه أن قيمة الخاصية ListTemplateId هي إحدى القيم المعرفة في الرابط التالي:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splisttemplatetype.aspx

وهي نفس قيم الخاصية SPList.BaseTemplate.

وفي حال أن قيمة الخاصية ListTemplateId غير محددة فإن شيربوينت يبحث عن قيمة الخاصية ListUrl، ففي حال توفرها فإن شيربوينت سيثبت معالج الحدث على القائمة المحددة بقية هذه الخاصية فقط. ويجب الانتباه إلى أن قيمة هذه الخاصية هي عبارة عن العنوان النسبي للقائمة Relative List URL. أما في حال عدم تحديد قيمة للخاصية ListUrl فإن شيربوينت سيثبت معالج الحدث على جميع القوائم في الموقع حيث تم تفعيل الميزة.