الأول من تموز ٢٠٠٦: بعد خمس سنوات من ظهور الإصدار الأول، تم إطلاق SPIP ١.٩
يمكن تحميل هذا الإصدار من العنوان الاعتيادي
أو استخدام ملف التثبيت الآلي spip_loader
الجديد الذي يقوم بتحميل الرزمة المضغوطة (zip) مباشرة الى خادم موقعك ويطلق عملية التثبيت.
* *
إليك أهم تحديثات [SPIP ١.٩] مقارنة بالإصدار السابق SPIP ١.٨.٣.
١. الموقع العمومي
صفحات نموذجية قياسية جديدة
تم تحديث الصفحات النموذجية الافتراضية بحيث تحسن دعمها لمقاييس تجمع النسيج (W3C) ومعايير الموصلية. كما تمت إعادة تقييم طريقة التصفح فيها مما أدى الى تبسيط أوراق الأنماط لتسهيل تخصيص التصميم (يعالج هذا القسم هذا الموضوع).
وتم بناء هذه الصفحات باعتماد الإدراج (include): فهناك ثلاثة إدراجات لقائمة التصفح حسب الأقسام وللترويسة ولكعب الصفحة. وتتكرر هذه الإدراجات في كل صفحة. كما دخل إدراجان للمنتديات والعرائض.
وتمت إعادة تصميم كلية للصفحات النموذجية التي تعرض استمارات SPIP لتحسين الموصلية، إضافة الى ذلك، أصبح تصميمها من خلال أوراق الأنماط أكثر سهولة: إستمارات أنيقة!.
ترخيص متطور
أما صفحات الترخيص الخلفي (backend) فتمت ترقيتها الى تنسيق RSS 2.0. وهناك إعداد في صفحة إعداد الموقع، يتيح تحديد ما إذا كنا نريد نشر كامل محتوى المقالات في تدفق RSS أو ملخص عنها فقط. ويشمل تدفق الترخيص أيضاً معلومات عن القسم الذي يحتوي المقال والمفاتيح والملفات المرتبطة به (podcasting). وفي وضعية القراءة، عندما يرخص موقعك موقعاً آخر يحتوي على تدفق مطور، يمكنه تحليل البيانات القادمة دون مشاكل. انظر المقال ترخيص المحتوى .
تنسيقات إضافية للمستندات
تم إدخال التنسيق SVG (أي Scalable Vector Graphics)، الذي يدعمه متصفح فايرفوكس ومؤخراً متصفح أوبرا، كنوع جديد من المستندات التي تُدرج في المقالات. وبما ان هذا التنسيق يشمل جافاسكريبت، فإن تدابير الأمان تشمل:
– في حال قام مستخدم ليس بمدير بتحميله، يتم تجريد المستند من كل أوامر جافاسكريبت أو أي وصلة الى ملف جافاسكريبت.
– في حال قام مدير بتحميله، يتم قبول المستند كما هو مما يحتم على المدراء فحص أوامر جافاسكريبت المدرجة فيه بعناية.
تم إدخال تنسيقات أخرى أيضاً منها: أبيووري (abw) وبلاندر (blend) وفلاش فيديو (flv) وأطقم حروف تروتايب (ttf) إضافة الى مجموعة تنسيقات من نوع «المستندات المفتوحة» (OpenOffice.org).
عناوين URL الصفحات
من أجل تسهيل إنشاء صفحات نموذجية جديدة، لم تعد الملفات الصغيرة من نوع s.php3
المثبتة في أصل الموقع لنداء الصفحة النموذجية s، ضرورية وبالتالي تم الاستغناء عنها.
هذه الملفات لن تظهر إذن في عناوين URL الافتراضية، التي يصبح اسمها «urls page»، والتي تظهر على شكل /spip.php?article12
(للمقال رقم ١٢) أو /spip.php?page=plan
(لخريطة الموقع).
اذا كانت صفحة xxx تحتاج الى دالات او عناصر إصافية كانت موجودة في xxx.php3
، يجب وضع هذه العناصر الإضافية في squelettes/xxx_fonctions.php
. مثلاً، اذا كانت الصفحة article توضع عناصرها الإضافية في squelettes/article_fonctions.php
.
ملاحظة:
– يأتي مع النظام ملف htaccess.txt ليتيح للزوار (ومحركات البحث) الذين تعوّدوا على العناوين القديمة الوصول الى هذه العناوين. وعند معظم المضيفين، يكفي نسخ هذا الملف باسم.htaccess
(ملف مخبأ) لتفعيله. ويتكفل هذا الملف أيضاً بعرض الأنواع الأخرى من عناوين الصفحات («عناوين URL النظيفة» وغيرها).
– في حال الارتقاء من إصدار سابق، وإذا أبقيت على الملفات القديمةarticle.php3
في أصل الموقع، فإن نداءها لا يزال يعمل بفضل ملف «وهمي» هو inc-public.php3 - ولكن يستحسن في آخر المطاف الانتقال الى الأداء الجديد لأنه ليس من المضمون أن يبقى القديم مدعوماً في إصدارات SPIP القادمة. - وتم نقل إدارة متغير الفترة ($delais
) الى علامة CACHE# التي تدخل مباشرة في الصفحة النموذجية (ولكن المتغير$delais
لا يزال يعمل إذا كان موجوداً).
إلا أنه لا يزال من الممكن تعديل المتغير $type_urls
في ملف ecrire/mes_options.php لاختيار نوع ثان من إدارة العناوين.
ملفات php أو php3
بشكل عام، كل ملفات .php3
تغيرت أسماؤها لتصبح .php
، إلا أن الأسماء القديمة لا تزال مدعومة من SPIP ولا سيما الملفات الشخصية (mes_fonctions.php3 وecrire/inc_connect.php3 أو ecrire/mes_options.php3).
مرشحات رسومية
جاءت مجموعة مهمة من المرشحات الجديدة لتطبّق معالجات رسومية مختلفة على صور الموقع العمومي.
وتتطلب هذه المرشحات وجود مكتبة GD2 في خادم الموقع.
وهناك بعض من هذه المرشحات ينطبق على الألوان (تحويل الى أسود وأبيض أو الى سيبيا أو تفتيح أو تعتيم...) وبعض آخر ينطبق على الدوران والتمويه واضفاء مؤثرات انعكاس وشبه شفافية وتطبيق قناع شفافية وغيرها من معالجات الصور. وهنا مقال يعرض كل هذه المرشحات لمعالجة الصور.
يتيح المرشح |couleur_extraire
استخراج لون معين من صورة قد تكون شعار (رمز) أو مستند مرفق لإنشاء لوحة ألوان كاملة. وهناك مقال يعرض استخدام مرشحات ألوان الصور .
كما ظهر المرشح |image_typo
الذي يتيح إنشاء صور كتابية، أي صور تعرض نص بخط مثبت في خادم الموقع مما يؤمن تجانس عرض النصوص في كل برامج التصفح دون الحاجة الى وجود الخط المستخدم في نظام الزائر (هذا المرشح لا يعمل بالعربية بعد). ويعرض مقال آخر الاستخدام الكامل لهذا المرشح (بالفرنسية). وإضافة الى مكتبة GD2 يتطلب هذا المرشح وجود مكتبة Freetype في الخادم (غالباً ما يتم تثبيته مع GD2).
تحسين تصغير الصور
في صفحة إعداد الموقع وفي باب «الوظائف المتطورة»، ننصح باختيار مكتبة GD2 (إذا كانت متوافرة في الخادم طبعاً). فتصغير الصور الذي يستخدم هذه المكتبة أصبح أكثر جودة ودقة: فهي تحافظ على المساحات الشفافة في صور GIF وPNG.
المرشح |reduire_image
تحول الى |image_reduire
(كل مرشحات معالجة الصور تبدأ بعبارة |image_
). إلا أن الاسم القديم لا يزال متوافراً.
ويأتي مرشح جديد هو |image_reduire_par
ليقوم بتصغير أبعاد الصورة حسب عامل معين (مثلاً: |image_reduire_par{2}
يصغّر أبعاد الصورة الى النصف).
علامات جديدة
-
#CACHE
. صار بالإمكان تحديد متغيرات$delais
العائدة للصفحات من داخل الصفحات النموذجية نفسها باستخدام#CACHE{period}
(ملاحظة: يمكن هنا أيضاً استخدام عبارة من نوع ٢٤*٣٦٠٠). هناك ميزة إضافية لهذه الكتابة الجديدة وهي إنتاج ترويسة HTTP تنبه الزائر الى أن الصفحة لن تتغير لفترة معينة من الوقت. -
#HTTP_HEADER
. تتيح تحديد ترويسات HTTP في الصفحات. على سبيل المثال،#HTTP_HEADER{Content-Type: text/css}
. مهم: يؤدي استخدام هذه العلامة الى إلغاء أزرار الإدارة، فهي إذن تحل مكان المتغير الشامل السابق$flag_preserver
الذي سيتخلى عنه SPIP ٢ كلياً. -
#CHEMIN{file}
(تحسّن#DOSSIER_SQUELETTE
). تعطي#CHEMIN{xxx}
المسار الكامل للوصول الى الملفxxx
أكان في أصل الموقع أو في مجلد الصفحات النموذجية أو فيdist/
الخ. -
#DESCRIPTIF_SITE_SPIP
. تسترجع هذه العلامة، كما يدل اسمها، وصف الموقع الذي يكون قد أدخل في صفحة الإعداد العام وهي مفيدة لعلامات meta. - تعديل علامة
#LOGO_SITE_SPIP
: أصبحت هذه العلامة، التي صارت مختلفة عن شعار الأقسام الافتراضي (rubon0.jpg)، تسترجع رمز الموقع (او شعاره وهو siteon0.jpg). ويتم إدخال رمز الموقع في صفحة الإعداد العام مثل عنوان الموقع ووصفه. - المواقع المرخصة: إنشاء علامتي
#SOURCE
و#URL_SOURCE
اللتان تسمحان بعرض اسم وعنوان مصدر المحتوى المرخص الأصلي. وفي المحتوى المرخص، تعرض علامة#TAGS
الوصلات الى المستندات المرفقة والمفاتيح والقسم على شكل تنسيقات صغيرة (microformats).
لمزيد من المعلومات أنظر ترخيص المحتوى. -
#CONFIG
. تتيح هذه العلامة التقنية عرض قيمة أي إعداد مخزن في جدولspip_meta
في قاعدة البيانات. -
#EVAL{}
. تقوم هذه العلامة التقنية أيضاً بتقييم عبارة PHP الموجودة داخل القوسين. فتعطي مثلاً،#EVAL{2*7}
النتيجة ١٤ وأما#EVAL{_DIR_IMG_PACK}
، فتعطي مسار المجلدecrire/img_pack/
(يستحسن استخدامها بحذر). - اصبحت الإدراجات (INCLURE) تتمتع بكتابة مبسطة بحيث تكتفي بتحديد اسم الصفحة النموذجية هكذا:
<INCLURE {fond=squelette2} {id_article}>
. (ملاحظة: لم يُقرر بعد ما إذا ستؤدي هذه الكتابة الى تخزين «داخلي» للمقطع المدرج في ملف الذاكرة المخبأة العائد للصفحة الحالية أم لا). - في مجال الأمان، صار من الممكن إبطال مرشحات الأمان كلياً على علامة ما بتزويدها بنجمة مزدوجة (مثلاً:
[(#TEXTE**)]
تتيح تصنيف أوامر PHP موجودة داخل مادة المقال - ولكن إذا أبقيتم على هذه الوظيفة كما هي في الصفحة النموذجية قد تتعرضون لمشاكل كبيرة). - صارت العلامات التي تشمل معاملات (اي تلك التي يتبع اسمها قوسان مزدوجان {}) تتمتع بكتابة مخففة اذ لم تعد الأقواص () والأقواس المعقوفة [] إجبارية: فيمكن من الآن كتابة
#EXPOSE{red}
بدلاً من[(#EXPOSE{red})]
.
ترقيم آلي للحلقات
تم دمج نظام شامل لترقيم نتائج حلقة ما: يستخدم هذا النظام معيار {pagination}
(الذي قد يأخذ معامل بقيمة عدد العناصر المعروضة على الصفحة: {pagination 5}
) وعلامتي #PAGINATION
و#ANCRE_PAGINATION
. وتمتلئ الصفحات النموذجية الافتراضية بأمثلة عن هذا النظام (انظر المقال Le système de pagination). يذكر أن هذا النظام لا يتوافق مع المساهمة التي مهدت له الطريق.
جديد المعايير
- يمكن لمعيار
{inverse}
أخذ اي علامة لتغيير اتجاه الفرز بشكل ديناميكي. فمن الممكن كتابة:<BOUCLE_example(ARTICLES){par #ENV{sort}}{inverse #ENV{sortorder}}>
، مما يسمح باختيار العمود الذي سيتم حسبه الفرز واتجاه هذا الفرز في عنوان URL (هكذا &sortorder=1 أو &sortorder=0). - صار جعل أي معيار شرطي (
{lang?}
) أكثر شمولاً ومتانة ويتمتع ببرمجة أكثر نظافة مما يحول دون تنفيذ وصلة (joint) عندما يكون غائباً. - يمكن الآن تمرير جدول قيم من عنوان URL الى المعيار
{xxx IN 1,2,3}
(انظر تعريف هذا المعيار)
إدارة أفضل للذاكرة المخبأة
لم يعد ملف الذاكرة المخبأة يعتمد فقط على عنوان الصفحة ولكن أيضاً على اسم النطاق (domain name) وقيمة متغير $dossier_squelettes
وعلى قيمة متغير شامل اسمه $marqueur
يتم تحديده بحرية. ويتيح ذلك من بين ما يتيح، تغيير الصفحة النموذجية في الوقت الحقيقي مع الحفاظ على الاستفادة من الذاكرة المخبأة (تخصيص ووظيفة «var_skel» الخ.)
لم يعد ملف الذاكرة المخبأة مضغوطاً إذا كان صغيراً (أقل من ١٦ كيلوبايت) لتحسين أداء الصفحات النموذجية التي تحتوي على الكثير من الإدراجات الصغيرة.
اللغات وأطقم الحروف
– صار تثبيت SPIP افتراضياً يعتمد طقم الحروف الشامل utf-8. ويقدم زراً في المجال الخاص يتيح تحويل الموقع الى هذا الطقم (ليس إجبارياً).
– دخلت لغة جديدة هي البوسنية.
– ويسمح مرشح |direction_css
قلب ورقة الأنماط (CSS) لتطبيقها على اللغات المكتوبة من اليمين الى اليسار كالعربية. واذا كان اسم ملف ورقة الأنماط style.css مثلاً، يستخدم المرشح (في حال كانت لغة الموقع تكتب من اليمين الى اليسار) ملف ورقة انماط style_rtl.css اذا وجد. اما في حال عدم وجود هذا الملف، فينشئ المرشح آلياً ورقة جديدة يستبدل فيها كل الخصائص left بعكسها أي right وبالعكس (ويخزنها في مجلد IMG/cache-css/). وغالباً ما ينطبق هذا المرشح على علامة #CHEMIN: [(#CHEMIN{style.css}|direction_css)]
.
٢. المجال الخاص والإدارة
إدخال AJAX
دخل على المجال الخاص وبشكل تجريبي (بعض الوظائف غير عاملة في انترنت اكسبلورر)، عناصر تصفح بتقنية AJAX (أو بالأحرى AJAH، عناصر HTML تنتج مباشرة في الخادم). وتتيح هذه العناصر تصفحاً أكثر غنى دون الحاجة الى إعادة تحميل الصفحة. وتتوجه هذه العناصر أساساً الى المواقع الضخمة (أي التي تحتوي على الكثير من الأقسام والمقالات).
فلدى إنشاء عدد معين من الأقسام، تتحول القائمة المنسدلة التي تتيح اختيار القسم الذي سيوضع فيه العنصر الحالي (مقال مثلاً)، الى متصفح صغير مكون من أربعة أعمدة تعرض بنية الموقع:
وإضافة الى تحسينه تصفح الموقع يشمل هذا المتصفح الصغير محرك بحث خاص به.
وتستغل لائحة العناصر (مثل المقالات) تقنية AJAX بطريقتين:
— عندما يكون هناك عدد كبير من العناصر، تتم إعادة تحميل عرض كل عشرة عناصر (مثلاً المقالات من ١ الى ١٠ ثم من ١١ الى ٢٠، الخ) دون إعادة تحميل الصفحة بكاملها، آي ان اللائحة فقط هي التي يتم تحديثها. ويتيح الزر الصغير على شكل + في أعلى اليسار، عرض كامل اللائحة أيضاً دون إعادة تحميل الصفحة.
— في ما يتعلق بالمقالات، إذا كان الموقع متعدد اللغات، يحول زر المايكروفون الذي يرمز الى تعدد اللغات، عرض اللائحة الى وضع يسمح بمتابعة حالة الترجمات.
سرعة العرض
كان عرض المجال الخاص بطيءً جداً في إنترنت إكسبلورر ٦. فتم تطوير مقطع برمجي جديد مخصص لهذا المتصفح أدى الى تسريع العرض ليعادل سرعة برامج التصفح الأخرى. لكن لا تدعو هذا الأمر يمنعكم من تفضيل برنامج فايرفوكس!
من جهة أخرى، تم تعطيل ضغطهذا التصرف ينطبق أيضاً على دالات action_
a_dist
المعرّف عنها في ملفات action/
a.php
.
يمكن كذلك تحميل فوق المكتبات القياسية التي تحملها دالة include_spip
وليس include_ecrire
(التي أعلنت قديمة ولكنها لا تزال تعمل). فلدى نداء include_spip('inc/
nom')
، يقوم SPIP هنا أيضاً بالبحث عن ملف يحمل الاسم نفسه في مجلد فرعي inc
داخل مجلدات SPIP_PATH
ويقوم بتحميله بدلاً من الملف القياسي.
يبدو واضحاً من كل ذلك أن هذه الواجهة تتيح إضافة مقاطع برمجية ومكتبات شخصية الى SPIP دون أي تعديل في مصادره.
كما يتميز نداء المقاطع البرمجية عبر دالة، وليس مباشرة، بفرض تسمية المتغيرات الشاملة مما يزيد في أمان النظام.
ويؤدي هذا العمل الى أمرين مهمين: دمج نظام ملحقات (plugins) من جهة، ومن جهة أخرى، إمكان توزيع مصادر SPIP على عدة مواقع.
الملحقات
تم إدخال نظام ملحقات (plugins). فتظهر قائمة فرعية جديدة في قائمة «إعداد الموقع» عندما يتم العثور على مجلد plugins/
في أصل الموقع. عندها يمكن تفعيل الملحقات المثبتة في هذا المجلد واحد تلو الآخر. لمزيد من المعلومات، أنظر المقال Installer un plugin (لا يزال بالفرنسية).
وهناك العديد من الملحقات في طور التطوير أساساً في منطقة SPIP على العنوان: http://zone.spip.org/trac/spip-zone... وتنشر المعلومات والأدلة عنها في موقع مساهمات SPIP على العنوان: SPIP Contrib.
توزيع المصادر
تسمح الآن إعادة كتابة مهمة لبرمجيات SPIP لنسخة واحدة من النظام بتشغيل عدة مواقع في وقت واحد دون الحاجة الى إنشاء نسخة منه لكل موقع. ويمكن إعداد هذه الوظيفة من قبل ضيف عنده عدة مواقع عند مضيف ما (ويملك عدة حسابات MySQL أو حساب واحد يميز القواعد بسابقة في اسم الجداول) كما من قبل مضيف يريد تقديم SPIP جاهزاً لزبائنه (للتخفيف من ضغط قراءة القرص الثابت من المواقع). ولا يمنع تثبيت مثل هذا أي مستخدم للنظام من تخصيصه حسب ذوقه بفضل نظام فوق التحميل المذكور في موضع آخر من هذا المقال. في المقابل تتطلب هذه الوظيفة من المضيف أن يتيح بعض التوجيهات لزبائنه مثل Alias وRewriteRule في ملفات htaccess. العائدة لهم أو أن يتكفل بها مباشرة في ملف httpd.conf (توجيه VirtualHost).
كشف آلي لجداول SPIP ووصلاتها
في صفحة نموذجية تحتوي على BOUCLE_a(xxx)
، يمكن لجدول xxx أن يكون أي جدول SQL يعرفه خادم SQL. عندها، سيطلب SPIP من خادم SQL أن يصف هذا الجدول مما يتيح له تصنيف الصفحة النموذجية واعتبار كل علامة #NOM
على أنها وصول الى الحقل <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+eHh4PC9jb2RlPg=="></span>.name
إذا وجد. ويتم كشف هذه الحقول أيضاً في معايير الحلقات.
وفي صفحة نموذجية تحتوي على BOUCLE_a(table table1 ... tablen)
، سيتم النظر الى الجداول الإضافية على أنها مرشحة لوصلة (joint) من خلال الحقول التي تحمل أسماء متشابهة. وسنقدم أمثلة ملموسة في توثيق المظام.
تحسينات أخرى
– إذا تم تفعيل متابعة التعديلات، أصبح من الممكن العودة الى إصدار سابق من المقال.
– صار شريط تحرير اختصارات الكتابة متوافراً في متصفح سافاري.
التثبيت والتحديث
spip_loader: تم إنشاء ملف spip_loader.php جديد للتثبيت الآلي لـSPIP ١.٩ (أنظر /spip-dev/INSTALL/). ويقوم هذا الملف آلياً بتحميل ملف zip نفسه المستخدم في التثبيت اليدوي. ومن جديد spip_loader أنه أصبح متعدد اللغات ومن السهل جداً تحريره لكي يثبت نسخة التطوير من النظام (SVN) بدلاً من النسخة الثابتة.
إذا أردت تحديث إصدار سابق من SPIP، يمكنك نسخ كل ملفات SPIP ١.٩ فوق الإصدار الموجود لديك كما في السابق. ولكن، ونظراً لإعادة التنظيم الجذرية التي دخلت على الملفات والمجلدات، ستحصل على خليط غير مرغوب فيه من الملفات القديمة والجديدة. هناك مقال أكثر شمولاً يوضح كيفية تنفيذ تحديث «نظيف»: article 3408.
* *
سيتم إدخال كل هذه التحديثات أول بأول في مقالات توثيق النظام. فهناك مقالات أكثر تفصيلاً هي في طور الإعداد وتتعلق بالنقاط الأكثر تقنية في الإصدار الجديد.
عموماً، نحن بحاجة إلى مساعدة لتحسين توثيق النظام: فلا تترددوا في الاشتراك في التحرير والتدقيق والتصحيح وتنظيم أدلة التوثيق.
أخيراً نوجه جزيل الشكر لكل الذين ساهموا في هذا الإصدار إن بإرسالهم أفكارهم وبتنبيهنا إلى الأخطاء (على لائحة المستخدمين أو في trac) أو بتطويرهم مقاطع برمجية أو صور أو توثيق إو بتأمين الدعم والتدريب للمستخدمين وعموماً بمشاركتنا عواطفهم.