SPIP ٢.٠

ينتقل SPIP الى الإصدار ٢.٠ سبع سنوات بعد إطلاق الإصدار ١.٠ وثماني سنوات بعد إصدار uZine وما يقارب السنتين بعد الإصدار السابق.

كان الفرع ١ من SPIP نظام نشر مدمج، أي أنه كان يعتمد على منظومة واحدة لقاعدة البيانات مهيئة للاستخدام مباشرة. ولكن وظائفه وبالأخص نظام الصفحات النموذجية الذي يعتمده، ولدت احتياجات جديدة لم يكن مهيئاً لها في الأساس. وكان مصنف الصفحات الجديد في الاصدار ١.٨، ١.٨.١ من SPIP قد حسن من أداء هذه الصفحات مما دفع بها لأن تستخدم لعرض أنواع مختلفة من المعلومات التي لم تكن مخصصة لها في الأساس مثل المعلومات الجغرافية وبرامج أحداث ومناسبات وكاتالوغات صور ومنتجات... وجاء SPIP ١.٩ ليدخل وسائل جديدة لتوسيع استخدام النظام وتثقيل دالاته ووضع نقاط إدخال في رموزه وتطعيمه بالملحقات. وظهر كل ذلك من خلال النجاح الذي حققته مواقع المساهمة في تطويره وجاء العديد من المساهمين ليعمون فريق تطويره. ولكن هذه الوظاذف الجديد للم تكن متاحة الا الى المبرمجين من خلال واجهة البرمجة المحسنة.

يبدو الفرع ٢ من SPIP إذن، كنظام نشر مدمج (متوافق مع الاصدارات السابقة) وكمنصة تطوير لتعدد خدام لغة الاستفسار المركبة (SQL) في آن واحد. وتوفر هذه المنصة مستويين من الخبرة للحفاظ على تطور درب التعلّم بموازاة زيادة الخدمات التي يقدمها النظام.

  • يتوجه المستوى الأول، الذي كان موجوداً في الاصدارات السابقة، الى الذين يريدون الإبداع الرسومي دون اللجوء الى البرمجة بلغات SQL وPHP وجافاسكريبت. فمن خلال معرفتهم بعلامات HTML وأوراق الأنماط وبفضل استعدادهم لتعلم نظام الصفحات النموذجية، يمكنهم عرض المعلومات الناتجة عن قواعد بيانات قد تكون مختلفة، بأساليب إبداعية.
  • اما المستوىالثان، فيتوجه الى المبرمجين الذين سيتمكنون من تطوير إضافات تدعم خدام SQL مختلفين بفضل واجهة برمجة ترتكز على خادم SQL افتراضي. ويمكن استخدام هذه الواجهة بشكل مستقل عن قاعدة البيانات التي ثبتها SPIP.

نظراً لتشعب الميزات الجديدة، يتمحور وصف الاصدار الجديد من SPIP حول ثلاثة مواضيع يعيد من خلال احياناً الى مقالات أخرى:

  • SPIP والنشر على النسيج
    • عناوين URL رمزية تتحكم بسيرتها وتتيح كتابة هرمية
    • إدراج وسائط متنوعة في النصوص
    • منتديات تتيح إلحاق مستندات
    • وظائف جديدة عديدة تدخل على العرائض
    • إدارة إصدارات متوازية من المقال نفسه
    • تثبيت آلي للملحقات
    • وصول متزامن الى عدة خدّام (MySQL وPostGres وSQLite ٢ و٣)
    • تسهيل تثبيت نواة مشتركة خاصة لدى مضيفي المواقع.
  • SPIP والتصميم
    • صفحات نموذجية تعتمد على أوراق أنماط LayoutGala
    • مرشحات جديدة
    • أسلوب جديد للإدراج خاصة إدراج استمارات بواسطة آجاكس
    • جديد في العلامات لا سيما العلامات التي تدير عناوين URL والمفاتيح البدائية
    • جديد في المعايير لا سيما في ما يتعلق بمحرك البحث ووصل جداول قاعدة البيانات
    • إدارة آلية لسلاسل اللغات المطلوب ترجمتها
    • أداة تدقيق معايير XML مدمجة يمكن تطبيقها على مجموعة من الصفحات.
  • SPIP وبرمجة النسيج
    • خادم افتراضي للغة الاستفسار المركبة يرتكز مباشرة على طبقات PHP السفلية
    • خطوط إدخال (pipelines) جديدة
    • تعريف مكتبات خارجية

نذكر أخيراً انه ابتداءاً من هذا الإصدار، سيتم توزيع SPIP وفقاً لاتفاقية ترخيص GNU/GPL 3. تتطرق هذه الاتفاقية، التي تخلف اتفاقية GNU/GPL 2 (عمرها ١٥ عاماً)، بوضوح أكبر الى حقوق المؤلف في بلدان أخرى غير الولايات المتحدة الأميركية إضافة الى تطور طرح البرامج الحرة. يمكن الاطلاع على التوضيحات الكاملة من مؤسسة البرامج الحرة وريتشارد ستولمان: الاتفاقية ولماذا الترقية الى GPLv3.

وكالعادة نشكر كل الذين ساهموا من قريب او من بعيد في انجاز هذا الإصدار. وشكرنا يتوجه أولاً الى المترجمين ولا سيما القادمين الجدد الذين بفضلهم صار SPIP متاحاً بالإندونيسية والبيرمانية والكامبودية (خمير) والسويدية.
شكراً أيضاً للذين تابعوا تطوير هذا الإصدار يوماً بيوم، ونشكرهم على صبرهم في وجه ضخامة الورشة والتجاهات الخاظئة التي اتخذتها أحياناً والتب فرضناها عليهم ونشكرهم على ثقتهم رغم المصاعب التي واجهناها.

SPIP والنشر على النسيج

SPIP هو نظام إنتاج مواقع وإدارتها، مزود بواجهة توفر بنية تحريرية موثوقة، اي دائمة وتطورية [1]. فبعد تثبيت النظام من خلال ملء خمس استمارات بسيطة، يكون SPIP جاهزاً للاستخدام ليدير موقعاً مزوداً بأحدث التقنيات يحرره شخص واحد او فريق كامل من المحررين.

في SPIP ٢.٠، تم إغناء الواجهة والتعامل معها وتحسين دعم مقاييس XHTML وأوراق الأنماط وتسريع التفاعل مع النظام باستخدام آجاكس [2]. تم توحيد وظائف تحميل المسندات من مختلف الأنواع مع الحفاظ على استخداماتها المتنوعة. بفضل هذا الصقل المتدرج للنظام، سيتمتع المستخدمون الجدد بواجهة متطورة بينما يحافظ المستخدمون القدامى على عاداتهم السليمة.

 مجموعة من عناوين URL الرمزية

تتيح عناوين URL جديدة تعرف بصفة «النظيفة» استخدام عدة أسماء للعناوين مرتبطة بعنصر واحد وبالأخص تغيير عنوان مقال، مما ينتج عنوان جديد دون تعطيل العنوان الأصلي. وعندما يطلب عميل HTTP العنوان الأصلي، سيتم توجيهه آلياً الى العنوان الجديد.

أصبحت إدارة هذه العناوين داخل جدول منفصل في قاعدة البيانات وهي تشكل في هذا الجدوال المفاتيح البدائية مما يسرّع استخدامها. وتم الحفاظ على التوافق مع عناوين URL القديمة خاصة لدى تحديث النظام.

هذه العناوين هي ثمرة العمل الريادي الذي قام به المرحوم طوغ (http://web.archive.org/web/20070309220121/toggg.com/spip/spip.php?article19 et http://web.archive.org/web/20070309220112/toggg.com/spip/spip.php?article18) الذي نهدي هذا الإصدار الى ذكراه (http://www.spip-contrib.net/Adieu-l-ami).

تم أيضاً إدخال مجموعة جديدة من عناوين URL إسمها arbo توفر كتابة هرمية مثل:

http://www.mysite.com/main_section/section1/section2/article

أخيراً، تكفي نقرة واحدة في جدول معروض في صفحات إدارة النظام لاختيار مجموعة عناوين URL. على أن الأسلوب القديم الذي كان يستخدم المتغير الشامل $type_urls لا يزال يعمل ولكن يستحسن إزالة هذا المتغير من ملف mes_options.php لعرض جدول الإعداد الجديد. اذا كان لديك مجموعة من عناوين URL شخصية في مجلد urls في مسار SPIP_PATH سيظهر آلياً في هذا الجدول.

 إدراج وسائط مختلفة في النص

تمت إعادة هندسية كاملة لقوالب img و emb التي تتيح إدراج مستندات في النصوص. فتستند الآن الى التوصيف الرسمي لأنواع MIME باستخدام مرشحات تحمل أسماء هذه الأنواع. وتوفر هذه الهندسة إمكان ضبط إدراج مستند من أي نوع بدقة وهي معروضة في article 3715 الذي يكمّل المقال استخدام القوالب الذي نشر لدى طرح SPIP 1.9.1.

يمكن للحررين إذن إدراج عدد أكبر من أنواع المستندات. وهكذا مثلاً، يعرض SPIP آلياً وبعلامات HTML محتوى ملفCSV ناتج عن جدول إلكتروني. يمكن أيضاً لملف نص (txt) ان يندرج بعد إعادة ترميز علامات «><» وإدخال علامة pre ليتم عرضه كما هو. أخيراً، وفي ما يتعلق بمستند HTML، سيتم آلياً استيراد أوراق أنماطه مما يتيح مثلاً تحويل موقع ثابت الى موقع ديناميكي يعتمد على SPIP.

 إلحاق مستندات بالمنتديات

يتيح خيار جديد للزوار إلحاق مستندات بمشاركاتهم في المنتديات. بالطبع لم يتم تفعيل هذا الخيار افتراضياً (يجب تفعيله ليعمل).

ويتم ضبط هذا الخيار بعرض لواق الملفات المقبولة مثلاً «gif,png,jpg,mp3» وتشير النجمة * الى ان اي نوع ملفات مسموح به باستثناء الملفات المعروف عنها انها تشكل ثغرة أمان محتملة.

 وظائف عديدة وجديدة للعرائض

هناك العديد من الوظائف الجديدة المعروضة في Les pétitions sous SPIP: البحث عن التواقيع وفرزها حسب معايير متعددة، تصفح، تدفق RSS، إحصاءات يومية وشهرية، واجهة اتصال بالجداول الالكترونية وعاراذض متعددة اللغات.

 إدارة نسخات متعددة من المقالات

يمكن للمجال الخاص في SPIP أن يتحكم بالتعارض في التحرير بين نسخات متنافسة من المقال او القسم او الخبر او المفتاح او المؤلف او الموقع المرخص.

العملية تجري كالتالي: لنفترض ان ليلى وزياد يفتحان المقال نفسه في الوقت نفسه لتحريره. ثم كل منهما يؤكد تعديلاته، إولاً ليلى وبعدها زياد.

هنا نحن أمام عدة حالات:

  • ليلى عدلت عنوان المقال وزياد عدل مادته: يقبل النظام التعديلين بحيث لا يلغي عنوان زياد (الذي لم يعدّل) عنوان ليلى.
  • ليلى عدلت عنوان المقال وزياد أيضاً:
    • إما أنهما أدخلا العنوان نفسه وليس هناك من مشكلة
    • او العنوانان مختلفان: يبلغ النظام زياد ويريه العنوان الذي أدخله والعنوان المخزّن في قاعدة البيانات والفرق بين الإثنين واستمارة لنسخ/لصق تعديلاته. العنوان المدخل لا يسجّل في قاعدة البيانات.

يتم معالجة هذه العناصر كل حقل على حدى بشكل مستقل: هكذا اذا حصل تعارض عى العنوان وليس على المقدمة يتم تسجيل المقدمة ولن تتعلق رسالة الخطأ الا بالعنوان.

 تسهيل استخدام الملحقات

— تثبيت يدوي و/او آلي

يتم تثبيت الملحقات في مجلد /plugins. بإنشاء مجلد فرعي اسمه /plugins/auto، يتم تفعيل تثبيت الملحقات الآلي.

من خلال التثبيت الآلي، يمكن إضافة:

  • كل ملحق بمفرده بتحديد عنوان URL لملف zip المناسب
  • قائمة ملحقات مدونة في تدفق RSS.

— العثور على ملحقات

هناك ثلاثة مواقع يمكن العثور على ملحقات فيها حسب تفضيلات مختلفة (تطوير، مساهمة، توثيق):

  • يمكن لكل الملحقات التي يتم تطويرها في «المنطقة» (اي منطقة الملحقات - Zone) ان تظهر في المجلد http://files.spip.org/spip-zone/، حسب رغبة مطوريها
  • يتطور موقع المساهمات SPIP-Contrib لتحسين البحث عن الملحقات
  • بمناسبة طرح هذا الإصدار من SPIP، تم إطلاق موقع جديد هو Plugins.spip الذي يقدم توثيقاً أكثر دقة للملحقات حسب موضوعها او توافقها مع اصدارات SPIP او لغتها الخ.

وتوفر مواقع Plugins.spip و SPIP-contrib تدفقات RSS يمكن استخدامها مباشرة للتثبيت الآلي للملحقات المتوافقة مع SPIP ٢.٠.

 الوصول الى عدة قواعد بيانات وخدّام ودمج جزئي وصفحات نموذجية آلية

أصبح SPIP متاحاً ليس فقط عبر MySQL ولكن أيضاً عبر خادم PostGreSQL وإضافات SQLite ٢ و٣ من لغة PHP. ويتم عرض هذه الخيارات في بداية تثبيت النظام ثم حفظها في ملف الاتصال. يذكر ان تنسيق نسخات الاحتياط هو نفسه لكل خدّام قواعد البيانات بحيث يصبح من الممكن العودة عن الخيار الأصلي باسترجاع نسخة احتياط بعد إادة تثبيت SPIP على خادم SQL مختلف.

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

وتتيح استمارة شبيهة باستمارة التثبيت وموجودة في قائمة صيانة الموقع، إدخال معلومات التعربف للاتصال بقاعدة بيانات أخرى وانتاج ملف اتصال يشبه ملف اتصال الموقع الأساسي وكاف لاستخدام القاعدة الأخرى. في حال قاعدة بيانات تم إنشاؤها في موقع SPIP آخر، يمكن لمعلومات التعريف ان تقتصر على نسخة من ملف الاتصال.

بعد تحديد معلومات التعريف يصبح من الممكن استخدام الصفحات النموذجية العائدة للموقع المصدر مع جداول قاعدة بيانات الموقع الوجهة وذلك بمناداة عامل إضافي هو connect تكون قيمته اسم ملف الاتصال (دون لاحقة .php). يمكن كذلك وفي صفحة نموذجية واحدة جمع حلقات تتوجه الى قواعد بيانات مختلفة بحيث يفتح SPIP خطوط اتصال مختلفة ويتنقل من واحد الى الآخر حسب الضرورة. يذكر انه يمكن ادارة قواعد البيانات هذه بأوامر SQL مختلفة عن تلك التي يستخدمها الموقع الأساسي وبهذه الحال يلعب SPIP دور المدمِج للمعلومات الواردة من قواعد بيانات مختلفة.

للتمكن من استكشاف جداول قاعدة ما بسرعة، يتم تنفيذ آلية تلقائية لإنشاء صفحة نموذجية عندما تصبح قيمة عامل page في عنوان URL على شكل table:the table.

وتقوم هذه الصفحة بمعاينة محتوى الجدول المذكور حسب عدة وضعيات تصفح ويتم إنشاء نسخة اتحتياطية من الصفحة.

ومن السهل تطوير برنامج مساعد لإدارة قواعد البيانات بواسطة SPIP يكون متعدد الخدّام.

ولا تتاح هذه الآلية الا لمسؤول الموقع وذلك كإجراء أمان ولكن يمكن توسيعها بتوسيع دالة autoriser_webmestre.

اما الوظيفة الأخرى التي تم تثبيت أقدامها من جراء العبور على قواعد بيانات متعددة، فهي النسخ الاحتياطي لجزء من قاعدة البيانات ودمجه لاحقاً بقاعدة موقع آخر.

هناك عرض موجز لوظائف قواعد البيانات في مقال كامل: Les bases de données en SPIP. ويقترح المقال نظام تسمية لملفات الاتصال يسمح لكل قواعد البيانات المثبتة التعرف بعضها على بعض دون اوامر وصف إضافية.

 مشاركة الموارد

أصبحت مشاركة الموارد المتوافرة منذ SPIP ١.٩ تطبق مهما كانت مجلدات بيانات SPIP لأنه تم الغاء الاقتصار على مجلد IMG.

ننصح مسؤولي المواقع بالمشاركة اذا كانوا يديرون عدة مواقع وذلك لتسهيل أعمال الصيانة. وتوفر لهم المشاركة أيضاً راحة تامة اذا أرادوا استغلال ميزة تعدد قواعد البيانات المذكورة في مكان آخد من هذا المقال.

ندعو كذلك جميع المضيفين الى اختبار هذه الوظيفة لأنهم سوف يوفرون مساحات كبيرة من الأقراص الثابتة ويخفضون عدد المرات التي يتم تحميل SPIP فيها في أجهزة الخدمة. لقد تم تطوير العديد من الاضافات التي تتيح إعداد المشاركة آلياً (انظر قسم المشاركة في SPIP-Contrib). تتيح المشاركة للنظام ان يلعب دور «مزرعة مدونات» او «خادم أنظمة نشر».

SPIP وتصميم المواقع

 صفحات نموذجية تعتمد على أوراق أنماط LayoutGala

يقدم SPIP في وقت واحد صفحات نموذجية قياسية منظمة تستخدم أساليب حديثة وأدوات موجهة الى مسؤولي المواقع (لغة الحلقات والعلامات والمعايير) تتيح لهم تخصيص مواقعهم بالذهاب أبعد من الصفحات النموذجية الجاهزة.

تعتمد الصفحات النموذجية التي تآتي مع SPIP (في مجلد «dist») الآن على بنية HTML تقدمها صفحات «Layout Gala» وتتيح تعديل ترتيب الكتل المختلفة بتغيير بضعة أسطر في ملف أوراق الأنماط:

<div id=»page»>
	<div id=»entete»>ترويسة</div>
	<div id=»conteneur»>
		<div id=»contenu»>محتوى</div>
	</div>
	<div id=»navigation»>تصفح</div>
	<div id=»extra»>إضافات</div>
	<div id=»pied»>ذيل الصفحة</div>
</div>

وتشمل علامات HTML افتراضياً التنسيقات الصغيرة (Microformats

وتتوافق الصفحات النموذجية ورموز المجال الخاص مع مقياس XHTML ١.٠ الصارم (strict). الا ان علامة Doctype المعلنة في الصفحات هي في مقياس XHTML الانتقالي (transitionnal) لعدم إجبار المحررين على تعلم منظومة معقدة ولا تخلو من الشوائب (انظر الفقرة الأولى من المقال مدقق XML المدمج).

وتطورت إدارة اختصارات الكتابة ودخلت عليها عدة متغبرات تسمح بجعلها أكثر شخصية (أنظر http://archives.rezo.net/spip-core....):

وتطورت إدارة اختصارات الكتابة ودخلت عليها عدة متغبرات تسمح بجعلها أكثر شخصية (أنظر http://archives.rezo.net/spip-core....):

 تخصيص العلامات التي يدخلها SPIP للأسود ،المائل:

$debut_italique = '<i>' ;
$fin_italique = '</i>'  ;
$debut_gras = '<strong>' ;
$fin_gras = </strong>' ;

 الفقرات: أصبحت SPIP ينشئ الفقرات في النصوص بطريقة ثابتة وواضحة. للرجوع الى الطريقة السابقة يكفي اعطاء متغير التخصيص $toujours_paragrapher قيمة false:

$GLOBALS['toujours_paragrapher'] = false;

 الغاء أنماط class=»spip» على الفقرات (p) والمائل (i) والأسود (strong) وبنود اللوائح (li). اما متغير التخصيص الضروري لإعادة هذه الأنماط فهي (لاحظ المسافة في البداية!):

$class_spip = ' class="spip"';

لاحظ انه في الحواشي، يتم الحفاظ على <p class="spip_note"> اذا تم الحفاظ على <p class="spip"> (من أجل التوافق التصاعدي)، والا فإنه يلغى هو الآخر.

يمكن إدخال تعدبلات أكثر دقة لإلغاء class="spip" من الفقرات لكن ليس من المائل:

$class_spip = '';
$debut_italique = '<i class="spip">';
$debut_gras = '<strong class="spip">';

من جهة أخرى، اذا أردنا فعلاً حذف class="spip" من الاختصارات الاخرى (ul وol والجداول وحجم العناوين وفقرات blockquote والخطوط الأفقية التي تنتجها الاختصارات)، يمكن ادخال:

$class_spip_plus = '';

 Poésie : - علامة Poésie: أصبحت العلامات التي ينتجها اختصار <poesie>: <blockquote class="spip_poesie">

 تاريخ النشر لأول مرة: نذكر اخيراً متغير تخصيص آخر حتى لو لم يتعلق بالأنماط. افتراضياً، تبقى سنة النشر حرة. لفرض عرض قائمة منسدلة تبدآ بسنة معينة (كما هو الحال في تاريخ النشر) يمكن تخصيص متغير $debut_date_publication، مثلاً:

$debut_date_publication = 1997;

 جديد المرشحات

— أصبح مرشح image_typo يدعم العربية (ولكن لا يزال في مرحلة اختبارية). يتم اكتشاف الأحرف العربية آلياً مما يشغّل عدداً من الأوامر التي تقوم بقلب ترتيب الأحرف (لتصبح من اليمين الى اليسار) والتحكم بنظام تركيب الأحدف العربية المعقد.

— دخل على SPIP ثلاثة مرشحات للتعامل مع الألوان هي: couleur_saturation و couleur_web و couleur_4096.

ويتقبل المرشح couleur_saturation قيمة بين صفر وواحد تحدد درجة إشباع اللون:

  • صفر: أبيض
  • واحد: اللون المكمِل مشبعاً (تنبيه: اللون المشبع بالكامل ليس الأسود.

هذا المرشح مفيد جداً لإنتاج تدرج ألوان حيث يكون مفعول مرشحي couleur_eclaircir و couleur_foncer غير ذي جدوى وخاصة اذا نسبب هذان المرشحان ببهنان الألوان (لأنهما يتعاملان مع الإضاءة وليس مع الإشباع).

اما المرشح couleur_web فيعطي أقرب لون من اللون المطلوب في طيف الـ ٢٥٦ لون المخصصة للنسيج. والهدف بالطبع ليس دعم شاشات ٢٥٦ لون (التي لم يعد لها وجود) ولكن للحد من عدد الألوان الممكنة المتطبقة على اي مرشح رسومي (مثل تلوين صورة نصية او تغيير ورقة أنماط) وبالتالي تجنب الحصول على ١٦ مليون نكهة (لون) من هذا الملف.

ويعطي مرشح couleur_4096 أقرب لون من اللون المطلوب في طيف من ٤٠٩٦ لون.

— وأخيراً أصبح مرشح couleur_extreme يتقبل متغيراً اختيارياً بين صفر وواحد (القيمة الافتراضية صفر) لضبط عتبة الإضاءة التي يتحول فيها الأسود الى الأبيض او بالعكس.

نذكر أيضاً ان التحويل بين نظام ألوان الشاشة (أحمر، أخضر، أزرق او RGB) ونظام اللون والاشباع والإضاءة (HSL) ونظام اللون والاشباع والقيمة (HSV) صار مدمجاً في مصادر النظام (ويستخدم داخلياً للتعامل مع الألوان). والحال ان التحويل الى نظام HSL أصبح مستخدماً في مرشح couleur_extreme مما يعني ان التحول بين الأسود والأبيض يعتمد على قاعدة «بصرية» وليس فقط على متوسط مكونات اللون.

— وأصبح المرشح الرسومي image_aplatir يتقبل معاملاً رابعاً يسمح بالحفاظ على الشفافية في صور PNG وGIF. انه مختصر (وبالتالي فهو مبسّط) من image_aplatir.

يجدر التنبيه الى انه في حال التحويل من تنسيق PNG مع الشفافية الى تنسيق GIF، لا تتيح هذه الدالة اختيار اللون الذي نحول النقاط نصف الشفافة اليه. في هذه الحال يجب استخدام image_aplatir.

— وأصبح المرشح الرسومي image_aplatir يتقبل معاملاً رابعاً يسمح بالحفاظ على الشفافية (خاصة للتحويل الى تنسيق GIF).

ويتيح مرشح image_format الجديد فرض التحول من تنسيق الى آخر مع الحفاظ على الشفافية في صور PNG وGIF. انه مختصر (وبالتالي فهو مبسّط) من image_aplatir.

يجدر التنبيه الى انه في حال الحويل من تنسيق PNG مع الشفافية الى تنسيق GIF، لا تتيح هذه الدالة اختيار اللون الذي نحول النقاظ نصف الشفافة اليه. في هذه الحال يجب استخدام image_aplatir.

— وتم إغناء مرشحات الصور بآلية تجميع وتنظيف الصور المؤقتة. هكذا، خلال تتالي عدة مرشحات في العبارة نفسها، وحدها الصورة النهائية تبقى محفوظة مما بوفر في مساحة القدص الثابت.

— ويقوم مرشح compacte_head الجديد بضغط مختلف ملفات جافاسكريبت وأوراق الأنماط التي تناديها الصفحات النموذجية، في ملفين وحيدين صغيري الحجم مما يسرّع تحميل الصفحات (لأن هذه الصفحات لا تنادي حينها، الا ملف جافاسكريبت واحد صغير بدلاً من عدة ملفات). واذا كنا نستخدم (كما هو الحال في صفحات مجلد dist) إدراج inc-head.html الذي يجمع كل نداءات جافاسكريبت وأوراق الأنماط، يمكن تفعيل هذه الوظيفة آلياً بفضل اعداد مناسب في صفحة اعداد SPIP.

 أساليب إدراج جديدة خاصة بلغة آجاكس

تفهم علامة #INCLURE العامل {env} على انه نقل لكل البيئة الى الصفحة المدرجة. وتعمل هذه الكتابة أيضاً مع <INCLURE ...>. اذا كان هناك معاملات اخرى موجودة، سيكون للقيم التي تآخذها الإولوية على البيئة المدرجة:

 <INCLURE{fond=gribouille/rubrique}{env}{lang=ar}>

يدرج صفحة gribouille/rubrique ويمرر لها قيم البيئة {id_rubrique} و {debut_pages} من الصفحة المنادية (اي من عنوان URL) ولكن مع فرض اللغة العربية حتى لو كان عنوان URL يحتوي على ?lang=XX.

اما معامل {ajax} فيتيح، اذا اضيف الى علامة #INCLURE او <INCLURE ...>، ادخال وظائف آجاكس آلياً على كل الروابط التي ترتبط بنمط آجاكس وكل الرواتط الموجودة في نمط تصفح. لمزيد من التفاصيل، انظر `ajax` pour les `inclure`.

نذكر ان علامة INCLURE تتقبل خط مائل (slash) نهائي اختياري لتتقرب من كتابة XML.

تشكل العلامات «الديناميكية» حالة إدراج اخرى. ويبدأ اسم هذه العلامات بعبارة #FORMULAIRE_ لأنها تنتج استمارات. ولقد تمت اعادة كتابة استمارات الموقع العمومي وبعض استمارات المجال الخاص باستخدام أسلوب جديد اسمه CVT (اي تحميل وتدقيق ومعالجة). ويتيح هذا الاسلوب انشاء استمارات جديدة بإنشاء صفحات نموذجية فقط ويتكفل SPIP بتكرار الاستمارات التي لم يتم ملؤها بشكل سليم او تخزينها في قاعدة البيانات.

هكذا، يحتوي مجلد prive/contenu/ الصفحات النموذجية العائدة الى محتوى العناصر التحريرية ويحتوي مجلد prive/editer/ الصفحات النموذجية العائدة الى استمارات التحرير المناسبة لها والتي تنادي ادراجات #FORMULAIRE_EDITER_... الموجودة في مجلد prive/formulaires. صار من الممكن تخصيص هذه الصفحات حسب أرقام الأقسام بإضافة لاحقة -xx.html على اسماء ملفاتها.

هذه الوظائف مفصلة في Formulaires CVT par l’exemple وLes formulaires CVT de SPIP.

 جديد العلامات

— أصبحت معالجة العلامات التي تبدأ بـ URL_ شاملة مما بعمم العلامات التي كانت متوافرة مسبقاً. اذا كانت العلامة لا تشمل اي معامل، مثل URL_type، ينتج مصنّف SPIP نداءً الى الدالة generer_url_entite المطبقة على $id_type (التي يجب ان تكون محددة في السياق) وعلى type. ونقع هنا على العلامات المعروفة URL_ARTICLE و URL_RUBRIQUE الخ. المعتمدة على دالات generer_url_article و generer_url_rubqiue الخ. التي أصبحت الآن مهملة لأنها تفتقد الى الشمول. اما اذا كانت العلامة تشمل معاملاً، سيتم تطبيق generer_url_entite عليه وليس على $id_type. وتأخذ عائلة العلامات هذه في الحسبان أي وصول الى قواعد بيانات SPIP متعددة اذا وجدت (أنظر أعلاه). وتتيح وظيفة التصفح عن بعد هذه خاصة اختبار مجموعة جديد من الصفحات النموذجية موجودة في موقع نشط دون تغيير إعداداته.

— اما علامة #EXPOSE (أنظر إبراز مقال موجود في قائمة)، فتوسع حقل تطبيقاتها. فتأخذ المفتاح البدائي العائد الى الحلقة المغلِّفة (او الحلقة المحددة بوضوح اذا استخدمنا كتابة #name:EXPOSE المسموح بها الآن) وتقارن بين قيمته الحالية في كل تكرار للحقة وقيمة المعامل الذي يحمل الاسم نفسه في عنوان URL المنادي. عندها تعرض معاملها الأول اذا كانت هاتان القيمتان متعادلتين وتعرض معاملها الثاني اذا لم تكونا متعادلتين. وتتوسع هذه المقارنة الى هرمية المفتاح الذي تم اختياره، اي بمعنى آخر، في حلقة RUBRIQUES، نقارن بين المفتاح البدائي في هذه الحلقة ورقم قسم المقال المعروض، وفي حلقة GROUPES_MOTS، نقارن بين مفتحها البدائي ورقم المفتاح المعروض.

— دخلت علامة جديدة هي #FILTRE تتيح، اذا أدخلت في صفحة نموذجية، تطبيق مرشح على كامل الصفحة التي تنتجها هذه الصفحة النموذجية. فمثلاً اذا أدخلنا العلامة التالية في الصفحة النموذجية:

#FILTRE{compacte_head}

سيتم ترشيح الصفحة الناتجة كلها بواسطة مرشح compacte_head.

— لتغيير نقاط التتمة (اي النقاط الثلاثة) التي تنتجها علامة #INTRODUCTION، يمكن الآن إضافة العبارة التالية في ملف mes_fonctions.php (او ملف mes_options):

define('_INTRODUCTION_SUITE', '&nbsp;(...)');

او

define('_INTRODUCTION_SUITE', '');

— اما المرشح couper الذي تناديه العلامة السابقة، فصار من الممكن استخدامه مستقلاً ويتقبل معاملاً اضافياً يحدد اي سلسلة نصية سيتم ادخالها في آخر النص المقطوع:

[(#TITRE|couper{10,'...'})]

— وتتيح علامة جديدة، هي #SESSION، الوصول الى معلومات الزائر الذي عرّف عن نفسه (رقم id_auteur ومعلومات أخرى تتعلق به) وتكييف الذاكرة المخبأة آلياً لتناسبه.

 

جديد المعايير

أصبح من الممكن إحداث وصلة بين جدولي SQL مباشرة بكتابة TABLE.NAME في المعيار. وتتم الوصلة اذا كان الجدول المشار اليه يحتوي حقلاً بنفس اسم حقل في الجدول الأساسي في الحلقة مع الأفضلية للمفتاح البدائي. وفي حال معيار لا يشمل معاملاً واضحاً {TABLE.NAME}، سيتم اعتماد قيمة NAME الموجودة في السياق الحالي (لا سيما المستوى الأول منه اي في عنوان URL). على سبيل المثال، الحلقة التالية تبحث عن تواقيع العرائض المتعلقة بترجمات نفس المقال:

<BOUCLE_signatures(SIGNATURES){articles.id_trad}  />

هنا يملك جدول signatures حقل مشابه لحقل في جدول articles وهو حقل id_article فعندما نعظي قيمة حقل id_trad في عنوان URL سيتم تحديد كل التواقيع في جدول signatures التي تناسب المقال الذي يملك قيمة id_trad نفسها في جدول articles.

وتتوافر هذه الوظيفة ايضاً من خلال معايير شرطية. على سبيل المثال، الحلقة التالية تعرض اما تواقيع عريض مقال معين (id_article موجود في السياق) او عرائض مرتبطة بترجمات المقل نفسه (اذا كان id_trad موجود في السياق):

<BOUCLE_signatures(SIGNATURES){id_article?} {articles.id_trad ?}  />

هذه الوظيفة تجعل من بعض المعايير قديمة (مثل معيار titre_mot مثلاً) ولكنها باقية من أجل التوافق.

هناك تغيير مهم في المعايير يتعلق بالبحث. كان SPIP سابقاً، يستخدم جدول SQL إضافي ليخزن فيه فهرسة عناصر الموقع لدى إنشائها. الا ان معاملات البحث في خدّام SQL أصبحت من السرعة بحيث لم يعد من الضروري الاحتفاظ بهذه الفهرسة المكلفة وأصبح معيار recherche يعتمد على هذه المعاملات. إضافة الى ذلك صار يتقبل معامل اختياري يحدد السلسلة المطلوب البحث عنها. وفي حال غياب هذه السلسلة يبقى متغير عنوان URL recherche هو المستخدم. هناك اذن، تعادل بين <BOUCLE_t(ARTICLES){recherche}> و <BOUCLE_t(ARTICLES){recherche #ENV{recherche}}>.

ان ميزات هذا التحسين عديدة:

  • البحث عن سلسلة يوفرها السياق داخل الصفحة النموذجية كما في
    <BOUCLE_m(MOTS){id_mot}>
     <BOUCLE_r(ARTICLES){recherche #TITRE}>...
      </BOUCLE_r>
    </BOUCLE_m>
    
  • تمرير السلسلة المطلوب البحث عنها الى صفحة نموذجية مدرجة كما في
    <INCLURE{fond=x}{recherche=NNN}>
    
  • استخدامها في قالب لتحديد عناصر تحتوي حقولها السلسلة كما في
    <modele1|recherche=spip>
    

في حال الاستخدام الشرطي لهذا المعيار، يجب التأكد من عدم وجود مسافات بين نقطة الاستفهام والقيمة المطلوبة:

{recherche ?#ENV{rech}}

وليس

{recherche ? #ENV{rech}}

الا اذا كنا نريد فعلاً مسافة قبل السلسلة المطلوب البحث عنها.

 

مع سالفلتوري my plugin ترجمه کردن برنامه разных språk

من المعروف ان سالفاتوري كائن قبيح وفظ وأحدب وفيه مسّ ويتكلم جميع اللغات (اذا كنت لا تصدق، إقرأ رواية اسم الوردة لأبرتو إيكو)

سالفاتوري هو أداتنا الجديدة التي تتيح تطوير ملحقات متعددة اللغات بتطبيق مزامنة آلية بين ملف اللغات الخاص به في خادم SPIP-Zone ومجال الترجمة في موقع SPIP (هذا المجال الذي يجمع جميع مترجمي SPIP). ندعوك الى الاطلاع على توثيقه والمساهمة فيه.

 

تدقيق XML

تم إغناء مدقق XML المدمج بإضافة وظيفة جديدة: فإذا كان معامله مجلداً وليس عنوان URL، يتعامل مع كل الملفات التي تعادل لاحقة اسمائها قيمة معامل عنوان URL ext في هذا المجلد. اما اذا غاب هذا المعامل يتم اعتماد لاحقة php. واذا لم يتم العثور على اي ملف php.، يعتمد كل ملفات html. التي يعتبرها كصفحات نموجية. ويتم انتاج المعاملات التي تتقبلها هذه الصفحات آلياً بعد تحليل محتواها. ولكن لا يمكن تنفيذ هذا التحليل على مقاطع سكريبت البرمجية لأن PHP يُصنّف ديناميكياً، الا ان هندسة SPIP العامة، خاصة عدم استخدم أمر exit، تتيح للمدقق تطبيق اختبار «أعمى» ولكنه مفيد جداً.

يظهر تأثير XML على SPIP أيضاً في تجديد كتابي صغير. أصبح هناك كابة مختصرة للحلقات التي لا تحتوي على مضمون وذلك بإيحاء من كتابة XML.

فإذا أخذنا مثلاً الحلقة التالية:

<BOUCLE_message(FORUMS){id_article}>
</BOUCLE_message>
#TOTAL_BOUCLE messages
</B_message>

يمكن الآن كتابتها هكذا:

<BOUCLE_message(FORUMS){id_article} />
#TOTAL_BOUCLE messages
<//B_message>

SPIP وبرمجة النسيج

يصف هذا القسم أدوات التطوير التي استخدمها فريق SPIP، وهي الدوات التي يجب على المطورين الآخرين التمرس بها للتمكن من تطوير إضافات للنظام يمكن نقلها بين البيئات المختلفة.

العديد من مواقع النسيج هي بحقيقتها تطبيقات على السبكة ويظهر ذلك من التفاعلية التي توفرها مع زائري المواقع. لذلك جاء الكثير من تطويرات الإصدار 2 ليأخذ في الحسبان إنشاء مواقع النكهة ٢ من النسيج (web ٢.٠): إدارة حلقات المستخدمين، المشاركة في الموقع العمومي، ادارة أفضل للأحداث المؤرخة...

 خادم SQL إفتراضي

تطلب إصدار SPIP الجديد جهداً كبيراً في إعادة كتابة استفسارات SQL لجعله قابلاً للنقل الى بيئات أخرى. ويعتمد هذا النقل على واجهة برمجة يكفي استخدامها لجعل اي إضافة للنظام قابلة للنقل هي الأخرى. وتقدم هذه الواجهة أيضاً إدارة لخروقات الأمان من نوع «الهجوم بحقن أوامر برمجية».

لا ترتكز هذه الواجهة على مكتبات موجودة مسبقاً لأن شمولية هذه المكتبات غير كافية لحل المشاكل المطروحة، بل ترتكز على مجمعة من حوالي ثلاثين دالة افتراضية يتم استنتاجها من برمجة SPIP السابقة. وتتيح عموميتها أيضاً باستخدامها في دمج قواعد بيانات SQL متنوعة بغض النظر عن خدمات SPIP الأخرى.

وتشمل الواجهة أداة تحكم بإصداراتها تتيح تنفيذ إضافات SPIP باستخدام إصدارات مختلفة من هذه الواجهة في حال تطور هذه الأخيرة.

وتستفيد قاعدة MySQL نفسها من إعادة الكتابة هذه لأنه تم التخلي عن تركيب استفسارات SQL الأكثر كلفة. هكذا يتم تأمين تناسق القاعدة تزايدياً وليس بمسح شامل ودوري. وتم تبديل الإقفال الشامل للخادم بقيود SQL ترفض آلياً كتابة منافسة ومتزامنة مع الكتابة الجارية.

وتمت إعادة تصنيف بعض الفهارس لتحسين أدائها. وأخيراً، أصبح المصنّف يحلل ضرورة الربط بين الجداول بدقة أكبر مما يعطي برمجة SQL أقرب للوضع المثالي.

يمكن معاينة هذه التحسينات بواسطة «عارض» SQL (اي profiler) متاح الآن في مفتش SPIP.

وتمت إعادة كتابة عملية التحديث بشكل كامل. فصارت تدير قواعد بيانات ضخمة كانت تتطلب في السابق أدواة خاصة في خادم SQL.

وهناك مقال مخصص يتوسع في تفصيل هذا التحسين: L’interface de SPIP avec SQL.

 توصيلات جديدة أكثر شمولية

تزايد عدد التوصيلات (pipelines) ليناهز الخمسين كما تضاعف عدد نداءاتها الى أكثر من ١٨٠ نقطة دخول.

ومن أهم التحسينات:

  • يتم نداء توصيلي pre_edition و post_boucle دائماً قبل وبعد تسجيل عنصر تحريري في قاعدة البيانات ان كان ذلك خلال إنشاء هذا العنصر او تعديله او تغيير وضعه.
  • يتيح توصيل recuperer_fond التأثير على نتيجة اي صفحة نموذجية مدرجة خلال معالجتها.
  • يتيح توصيلا pre_boucle و post_boucle تعديل تصرف اي حلقة دون تحميلها أوامر إضافية.

وتسمح تحسينات التوصيلات للملحقات التأثير أكثر على SPIP بأقل قدر من خطر عدم التوافق بين عضها.

 المكتبات الخارجية

أصبح SPIP يتصرف مثل phpMyAdmin لدى اتصاله بقاعدة MySQL: اذا لم يتم تحميل الإضافة، يستخدم تحميلاً آلياً dl('mysql.so') بعد التأكد من آ هذا التصرف مسموح له. ويتيح ذلك تثبيته في أجهزة خدمة معدّة بهذه الطريقة (مثل خادم يوبانتو مثلاً).

وتتيح دالة من دوال SPIP طلب تحيل آلي: charger_php_extension('mysql').

جاء دورك!

تتيح هذه التطورات التي دخلت على SPIP إمكان تطوير تطبيقات من نوع إنترانت واي نوع من تطبيقات الشبكة الأخرى إضافة الى مواقع إنترنت العادية ولك بدمج حلقات المستخدمين وتقنية آجاكس والصفحات الشخصية او الواجهات التفاعلية المتطورة.

حواشي

[1ليس من السهل وضع وصيانة بنية تحريرية لموقع يتطور باستمرار، فيتطلب ذلك خبرة أكيدة. فيمكن لبنية تحريرية سيئة التخطيط ان تحول دون تطر الموقع لأن الترقيات تصبح أكثر صعوبة. والحال ان منطق النشر الذي يوفره SPIP يؤسس لبنية تحريرية تبقي الموقع منظماً بشكل سليم حتى لو احتوى عشرات الآلاف من المقالات.

[2آجاكس (AJAX): مجموعة دوال جافاسكريبت التي تتيح التعامل مع بنية صفحة HTML وتحميل عناصر من هذه الصفحة بشكل منفرد وإنشاء مؤثرات بصرية متحركة في الصفحة.

مؤلف George نُشر في: تم التحديث: 13/07/23

الترجمات: عربي, català, corsu, English, Español, français, Nederlands, Türkçe