توفر هذه الصفحة توثيقًا لصفحة ويكيبيديا:معالج رفع الملفات التجريبي، والذي هو حاليًا في مرحلة الاختبار.
يتكون المعالج من صفحة ويكي واحدة عادية، موجودة حاليًا في ويكيبيديا:معالج رفع الملفات، وصفحة من تعليمات برمجية جافا سكريبت من جانب العميل، موجودة حاليًا في ميدياويكي:FileUploadWizard.js ، وصفحة .css مقابلة، موجودة حاليًا في ميدياويكي:FileUploadWizard.css.يضمّين كل محتوى النص الذي يستخدمه المعالج تقريبًا (القوالب والتراخيص والتحذيرات وما إلى ذلك) كنص ويكي قياسي في الصفحة الرئيسية، داخل عناصر <div>
- المخفي والجداول المتداخلة. تنشئ العناصر التفاعلية التي لا يمكن إنشاؤها بواسطة نص ويكي عادي (عناصر <form>
، والأزرار، وحقول نص الإدخال، ومربعات القوائم المنسدلة، وما إلى ذلك) بواسطة جافا سكريبت عند تحميل الصفحة. تحدد عناصر <span id="placeholderXYZ"/>
الفارغة في نص الويكي المواضع التي ستدرج فيها. لتنشيط جافا سكريبت، يجب تحميل صفحة الويكي بمعلمة withJS=
parameter.
اختبر كود جافا سكريبت باستخدام متصفح فايرفوكس 10.0 حتى الآن. وهو يستخدم مكتبة jQuery ، والتي تُستخدم بشكل شائع في نصوص ويكيبيديا النصية. تُخزن البيانات المستخدمة أثناء عملية الإدخال والتحميل في عنصر جافا سكريبت يسمى window.fuw
. تُخزن تمثيل بيانات الإدخال الموجودة في أي وقت أثناء عملية الإدخال مؤقتًا في window.fuw.opts
، وتخزن البيانات التي تمثل الحالة الحالية لظروف التحذير المختلفة (مثل أسماء الملفات السيئة والمقالات المستهدفة المفقودة وما إلى ذلك) في window.fuw.warn
.
أهم وظائف البرنامج النصي هي:
fuwGlobal()
window.fuw
العام، والتي تُنفّذ مرة واحدة عند تحميل الصفحة. يقوم بإنشاء عناصر النموذج التفاعلية (الأزرار والحقول النصية وما إلى ذلك) ويحدد الرؤية الأولية لمنطقة النموذج الرئيسية.fuwUpdateOptions()
onChange
الذي تتم مشاركته بواسطة معظم عناصر الإدخال. فهو يجمع المدخلات من جميع حقول الإدخال النشطة حاليًا، ويحدث المحتويات المخزنة مؤقتًا لكائن window.fuw.opts
منه، ويبدل الرؤية وحالة التمكين/التعطيل للأقسام الفرعية المختلفة للاستبيان استجابة للحالة الحالية للخيار أزرار الراديو. كما يقوم أيضًا بإظهار وإخفاء رسائل التحذير المختلفة استجابةً لنتيجة إجراءات التحقق السابقة المخزنة في window.fuw.warn
.fuw.validateInput()
fuwUpdateOptions(
)
، تحدد هذه الوظيفة ما إذا كانت الحالة الحالية لبيانات الإدخال كاملة وكافية للتحميل. ستقوم وظيفة fuwUpdateOptions()
بتمكين أو تعطيل زر الإرسال استجابة لهذا التحقق من الصحة. (البديل المحتمل: احتفظ بزر الإرسال ممكّنًا دائمًا وقم بتشغيل validateInput()
فقط عند النقر عليه، مع عرض رسالة تحذير إذا كان خطأ. أيهما أكثر سهولة في الاستخدام؟)fuw.collectInput()
window.fuw.opts
وتجميع مجموعة من window.fuw.descFields
منها، والتي تمثل السلاسل التي سيتم كتابتها في حقول قالب الوصف.fuw.formatOutput()
collectInput()
، قبل الرفع. تقوم هذه الوظيفة بتجميع كود صفحة الوصف الفعلية من كائن window.fuw.descFields
وسوم الترخيص، وإعداده للرفع، إما في وضع الرفع المحلي أو في وضع رفع كومنز. بالنسبة للرفع المحلي، فإنه يكتب القيم الناتجة في عناصر <input type="hidden"/>
المخفية في TargetForm، حيث يتم إرسالها إلى واجهة برمجة التطبيقات. في وضع كومنز، يتم تجميع نص الويكي الوصفي في سلسلة معاملات ليتم إلحاقها بعنوان URL الخاص بصفحة كومنز الخاصة:بالرفع، ويتم تحميل القيمة مسبقًا في نموذج رفع كومنز القياسي.في إصدار الاختبار الحالي، يتم استدعاء هذه الوظيفة أيضًا في نهاية كل استدعاء fuwUpdateOptions()
، من أجل الحفاظ على معاينة مستمرة للمخرجات لأغراض الاختبار. في الإصدار النهائي، سيكون كافيًا استدعاؤه مرة واحدة فقط، من حدث onClick لزر الإرسال (بعد عودة validateInput()
إلى القيمة true).
تحتوي صفحة الاستبيان حاليًا على ثلاثة عناصر <form>
منفصلة. الأول، <form id="fuwTargetForm">
، هو الذي يُستخدم فعليًا للرفع. العنصر العلني الوحيد الموجود فيه هو مربع اختيار الملف. جميع معلمات الرفع الأخرى موجودة في شكل عناصر <input type="hidden"/>
، والتي يتم ملء قيمها قبل الرفع بواسطة الدالة fuw.collectInput()
.
يتم الرفع عبر نموذج form.submit()
قياسي من هذا النموذج الهدف، مع ضبط إجراء النموذج على واجهة //ar.wikipedia.org/w/api.php
. يتم تحويل رسالة الإرجاع الخاصة بواجهة برمجة التطبيقات (API) إلى عنصر <iframe>
مخفي، حيث يقوم حدث onLoad
الخاص به بعد ذلك بتشغيل الوظيفة التي تعرض رسالة النجاح وتخفي الاستبيان الرئيسي (وبالتالي "تزوير" استدعاء AJAX غير متزامن - يعد هذا ضروريًا لأن استدعاء AJAX العادي لا يمكن الوصول إلى بيانات رفع الملف).
يحتوي عنصر <form>
الثاني، <form id="fuwScriptForm">
، على كافة عناصر التحكم المرئية الأخرى في استبيان الإدخال.
في النسخة التجريبية، يوجد عنصر <form>
ثالث، <form id="fuwTestForm">
، والذي يحتوي على حقول المعاينة في أسفل الصفحة.
وبصرف النظر عن إجراء الرفع الرئيسي، يرسل البرنامج النصي طلبات خادم إضافية في المواقف التالية. يتم إرسال كل ذلك عبر طلبات AJAX غير المتزامنة إلى واجهة api.php
، باستخدام مجمّع jQuery
ajax $.ajax([...])
.
الاستبيان
يحتوي الاستبيان حاليًا على اثني عشر قسمًا فرعيًا مصممًا لاثني عشر نوعًا مختلفًا من الملفات، خمسة منها حرة وسبعة غير حرة.
خيارات الملفات الحرة
خيارات الملفات غير الحرة
يحاول البرنامج النصي التعرف على مستويات الحالة التالية للمستخدم الحالي، استنادًا إلى المعلومات المأخوذة جزئيًا من متغيرات mw.config
القياسية وجزئيًا من استدعاء واجهة برمجة التطبيقات (API):
مسجل الخروج
سيتوقف البرنامج النصي ويعرض رسالة إعلام فقط إذا تم تشغيله بواسطة مستخدم قام بتسجيل الخروج، حيث لا يمكن للمستخدمين الذين قاموا بتسجيل الخروج رفع الملفات.
غير مؤكد
سيعرض البرنامج النصي إشعارًا بأن المستخدمين الذين لم يتم تأكيدهم تلقائيًا بعد لا يمكنهم رفع الملفات محليًا. ومع ذلك، سيتم تشغيل بقية البرنامج النصي بشكل طبيعي بالنسبة لهم، مع ظهور زر الإرسال "رفع محليا" فقط باللون الرمادي بينما يكون زر "الرفع إلى كومنز" ومفعلاً.
يمكن أيضًا إجراء الفروق التالية ولكنها لا تؤدي حاليًا إلى أي اختلافات فعلية في سلوك البرنامج النصي:
"مبتدئ"
تُعين الحالة إذا كان لدى المستخدم أقل من 100 تعديل. قد يُعرض على هؤلاء المستخدمين مجموعة من التعليمات اللطيفة والمفصلة إلى حد ما في المستقبل.
"مستخدم مشاكس"
تُعين الحالة إذا كان لدى المستخدم أكثر من 3 تنبيهات قياسية متعلقة بالصور على صفحة النقاش الخاصة به من بين آخر 30 تعديلاً لصفحة النقاش الخاصة به. قد يُعرض على هؤلاء المستخدمين مجموعة من التعليمات ذات الصياغة الأكثر إلحاحًا إلى حد ما فيما يتعلق بحقوق التأليف والنشر في المستقبل.
"عادي"/"إداري"
جميع المستخدمين الآخرين؛ قد يُعرض على هؤلاء المستخدمين مجموعة من التعليمات أقصر إلى حد ما وأقل كلامًا في المستقبل.
يقوم المعالج بإنتاج صفحات وصف الصورة باتباع التنسيق القياسي:
== ملخص =={{... [قالب الوصف مع المعلمات] ...}}== ترخيص =={{... [وسم ترخيص] ...}}
بالنسبة للملفات الحرة، فإنه يستخدم القالب القياسي {{معلومات}}. بالنسبة للملفات غير الحرة، فإنه يستخدم قالب {{تعليل استعمال غير حر 2}} الجديد، والذي يختلف عن القالب الأكثر شيوعًا {{تعليل استعمال غير حر}} في بعض التفاصيل. تم تصميم معلماته لتتوافق مع معايير المحتوى غير الحر الفردية بشكل أوثق من القالب القديم، وأيضًا لتكون متوافقة مع معلمات قالب {{معلومات}} الخاص بالملفات الحرة حيثما أمكن ذلك.
يستخدم قالب مبررات الاستعمال العادل المعلمات التالية:
{{تعليل استعمال غير حر 2| الوصف = | المؤلف =| النشر = (اختياري)| المصدر = | المقالة = | سبب الاستعمال =| قابل للاستبدال =| الاستبدال بنص = (اختياري)| الاستخدام الأدنى =| تجاري =| معلومات أخرى = (اختياري)}}
يتم اختيار الخيارات الفرعية المختلفة الموضحة أعلاه بطريقة تتوافق كل واحدة منها مع موقف نموذجي تكون فيه حقول مبررات الاستخدام العادل معينة إما لكونها مهمة أو تافهة/يمكن التنبؤ بها. سيوفر المعالج تلقائيًا بيانات قياسية مختصرة ومملوءة مسبقًا (أحيانًا قصيرة مثل "na") للمعلمات التي يمكن التنبؤ بها في كل حالة. يكون الجمع بين الأجزاء المعبأة مسبقًا والأجزاء المقدمة من المستخدم على النحو التالي ("الاستخدام الأدنى" يتطلب دائمًا إدخالاً يدويًا):""موضوع التعليق"، في مقالة مخصصة
| سبب الاستعمال = للتعرف البصري على موضوع المقالة. المقالة ككل مُخصصة لمناقشة هذا العمل.| قابل للاستبدال = n.a.| تجاري = n.a.
"موضوع التعليق"، وليس في مقالة مخصصة
| سبب الاستعمال = لدعم المناقشة الموسوعية لهذا العمل في هذه المقالة. الرسم التوضيحي مطلوب على وجه التحديد لدعم النقطة (النقاط) التالية: [إدخال المستخدم]| قابل للاستبدال = n.a.| تجاري = n.a.
"مقتطف"
| سبب الاستعمال = [إدخال المستخدم]| قابل للاستبدال = n.a.| الاستبدال بنص = [إدخال المستخدم]| تجاري = n.a.
"غلاف فني"
| سبب الاستعمال = لتكون بمثابة الوسيلة الأساسية للتعرف البصري في أعلى المقالة المخصصة للعمل المعني.| قابل للاستبدال = n.a.| تجاري = n.a.
"شعار"
| سبب الاستعمال = لتكون بمثابة الوسيلة الأساسية للتعرف البصري في أعلى المقالة المخصصة للكيان/المنظمة المعني(ة).| قابل للاستبدال = n.a.| تجاري = n.a.
"بورتري"
| سبب الاستعمال = للتعرف البصري على الشخص المعني، في أعلى مقالة سيرته الذاتية| قابل للاستبدال = [إدخال المستخدم]| تجاري = [إدخال المستخدم]| معلومات أخرى = لقد توفي موضوع الصورة منذ: [إدخال المستخدم]
"متنوع"
| سبب الاستعمال = [إدخال المستخدم]| قابل للاستبدال = [إدخال المستخدم]| الاستبدال بنص = [إدخال المستخدم]| تجاري = [إدخال المستخدم]