ويكيبيديا:معالج رفع الملفات/شرح

توفر هذه الصفحة توثيقًا لصفحة ويكيبيديا:معالج رفع الملفات التجريبي، والذي هو حاليًا في مرحلة الاختبار.

التكوين عدل

يتكون المعالج من صفحة ويكي واحدة عادية، موجودة حاليًا في ويكيبيديا:معالج رفع الملفات، وصفحة من تعليمات برمجية جافا سكريبت من جانب العميل، موجودة حاليًا في ميدياويكي: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([...]) .

  • عند الرفع، يقوم البرنامج النصي باسترداد عدد تعديلات المستخدم الحالي وملخصات التحرير لآخر 30 تعديلًا على صفحة نقاش المستخدم الخاصة به. يتم بعد ذلك فحص ملخصات التحرير بحثًا عن وسوم التحذيرات المتعلقة بالصور، مثل تلك التي تركها ImageTaggedBot. ومن هذه المعلومات، يحاول البرنامج النصي إجراء تقدير تقريبي لمستوى خبرة المستخدم. لا يتم استخدام هذه المعلومات حاليًا عمليًا، ولكن يمكن استخدامها في المستقبل للاختيار بين الإصدارات المختلفة لبعض التعليمات (انظر أدناه).
  • عندما يقوم المستخدم بإدخال اسم ملف ويكيبيديا المقصود، يقوم البرنامج النصي باسترداد معلومات الصورة لتحديد ما إذا كان الملف بهذا الاسم موجود بالفعل، إما محليًا أو في كومنز، وذلك لمنع المستخدم من الكتابة فوق ملف دون قصد.
  • بالنسبة للملفات غير الحرة، عندما يقوم المستخدم بإدخال اسم المقالة المقصودة، يقوم البرنامج النصي باسترداد معلومات الصفحة لتحديد ما إذا كانت تلك الصفحة موجودة، أو ما إذا كانت صفحة توضيح، أو ما إذا كانت تحويلة (وفي هذه الحالة سوف يقوم بتصحيحها تلقائيًا إلى هدف التحويلة). يتم ذلك لفرض الامتثال لوب:ممغح#10c .
  • بعد الرفع الناجح، يسترد البرنامج النصي معلومات الصورة عنه مرة أخرى. يعد ذلك ضروريًا للحصول على عنوان URL ومعلومات الحجم حول الصورة المصغرة للصورة الجديدة، والتي يتم عرضها بعد ذلك في رسالة النجاح.
  • إذا اختار المستخدم الكتابة فوق ملف موجود وقام أيضًا بإضافة بيانات جديدة لصفحة الوصف، فسيتم إرسال محتوى الصفحة كطلب تحرير منفصل لواجهة برمجة التطبيقات، لأن إجراء الرفع القياسي لن يعدل المحتويات النصية للصفحة.

الاستبيان

يحتوي الاستبيان حاليًا على اثني عشر قسمًا فرعيًا مصممًا لاثني عشر نوعًا مختلفًا من الملفات، خمسة منها حرة وسبعة غير حرة.

خيارات الملفات الحرة

  • عمل شخصي: يحتوي على المعايير القياسية (الترخيص والتاريخ) بالإضافة إلى سؤال حول "كيف حصلت على هذا؟" (محاولة تثبيط القائمين بالرفع من تقديم ادعاءات شاملة كاذبة بشأن "العمل الشخصي")، وخيار لتسمية مصدر إذا تم نشر العنصر مسبقًا في مكان آخر
  • الطرف الثالث: مصمم للسيناريو المتكرر "شخص ما أعطاني هذا العمل". يطلب الحصول على تفاصيل حول كيفية حصول القائم بالرفع على الإذن، وإعداده للحاجة إلى تقديم الأدلة.
  • موقع ويب حر: مصمم لموقع Flickr والمصادر الخارجية المشابهة. يطلب مصادر منفصلة للملف نفسه والترخيص.
  • ملكية عامة - قديم: يحتوي على أسئلة تفصيلية حول تاريخ النشر الأصلي للعنصر (متى وأين نُشر، وعمر المنشئ وما إلى ذلك). خيارات لثلاثة سيناريوهات قياسية للملكية العامة: نشر قبل عام 1929؛ منشورًا في الخارج وملكية عامة في الموطن الأصلي قبل تاريخ URAA (أي عادةً 70 عامًا p.m.a. قبل عام 1996)؛ ونشرت في الولايات المتحدة دون إشعار حقوق النشر و/أو التسجيل
  • ملكية عامة - أخرى: خيارات ملكية عامة - الحكومة الأمريكية، ملكية عامة -غير مؤهل وغيرها.

خيارات الملفات غير الحرة

  • موضوع التعليق: مصمم لقالب {{عمل فني ثنائي الأبعاد غير حر}} والصور التاريخية والعناصر الأخرى، في تلك الحالات التي يكون فيها العنصر غير الحر موضوع تعليق صريح. يطلب من القائم بالرفع إما تأكيد أن المقالة بأكملها مخصصة لهذا العمل بالتحديد، أو تسمية ووصف المقطع المحدد الذي تمت مناقشته فيه. في ظل هذه الظروف، يتم إنتاج مبررات الاستعمال العادل القياسية مع كل شيء آخر باستثناء وسيطة "الحد الأدنى" المملوءة مسبقًا.
  • الفن ثلاثي الأبعاد : يشبه في الغالب ما سبق، ولكن مع حقول إدخال إضافية تصف حالة حقوق التأليف والنشر للصورة الفوتوغرافية مقارنةً بالعمل ثلاثي الأبعاد غير الحر المصور. سيتم الإصرار على أن يكون التصوير ثنائي الأبعاد إما مرخصًا بشكل حر (على سبيل المثال، مصنوعًا ذاتيًا)، أو مقدم من مؤلف العمل ثلاثي الأبعاد الأساسي (كما هو الحال في كثير من الأحيان، على سبيل المثال مع عروض الكمبيوتر للمباني المتوقعة).
  • مُقتطف : مصمم للقطات شاشة التلفزيون والأفلام وعينات الصوت وما إلى ذلك. يركز كثيرًا على وسائط مبررات الاستعمال العادل: "سبب الاستعمال" و"قابلية الاستبدال بالنص". سيتم ملء أجزاء مبررات الاستعمال العادل الأخرى بالقيم القياسية.
  • صورة غلاف: مصممة لأغلفة الكتب وما إلى ذلك. تطلب التأكيد على أن العنصر سيتم استخدامه بالطريقة المتعارف عليها ("التعريف البصري الأساسي" أعلى المقالة المخصصة). سوف تنتج الأساس المنطقي القياسي فقط لهذه الحالة.
  • شعار: على غرار ما سبق، ينتج الأساس المنطقي القياسي المعبأ مسبقًا ولكنه يصر على تأكيد سيناريو الاستخدام الأساسي.
  • صورة تاريخية: مصممة للحالة المتكررة من الصور التاريخية المستخدمة في مقالات السيرة الذاتية، مما يسمح بحجة مبررات الاستعمال العادل القياسية حول عدم إمكانية الاستبدال بالأشخاص المتوفين. يطلب الحصول على معلومات تفصيلية عن المصدر ويصر على حجة صريحة لقابلية الاستبدال (يجب على القائم بالرفع إثبات أنه قد تم بالفعل النظر في البدائل المحتملة)، بالإضافة إلى حجة "الفرص التجارية".
  • متنوع: استخدام عام غير حر، مصمم لكل شيء، بما في ذلك أي من الأنواع القياسية للعناصر (الصور الفوتوغرافية التاريخية والأعمال الفنية وما إلى ذلك) عند استخدامها في أي سيناريوهات باستثناء سيناريوهات الاستخدام القياسية المذكورة أعلاه. يطلب إدخال مبررات الاستعمال العادل لكل من معايير المحتوى غير الحر الرئيسية، بدون قيم قياسية مملوءة مسبقًا.

مستويات تجربة المستخدم عدل

يحاول البرنامج النصي التعرف على مستويات الحالة التالية للمستخدم الحالي، استنادًا إلى المعلومات المأخوذة جزئيًا من متغيرات 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.

"بورتري"

| سبب الاستعمال = للتعرف البصري على الشخص المعني، في أعلى مقالة سيرته الذاتية | قابل للاستبدال = [إدخال المستخدم] | تجاري = [إدخال المستخدم] | معلومات أخرى = لقد توفي موضوع الصورة منذ: [إدخال المستخدم]

"متنوع"

| سبب الاستعمال = [إدخال المستخدم] | قابل للاستبدال = [إدخال المستخدم] | الاستبدال بنص = [إدخال المستخدم] | تجاري = [إدخال المستخدم]