امتداد:نبيطات
![]() حالة الإصدار مستقر |
|
---|---|
![]() |
|
تنفيذ | MyWiki , صفحة خاصة , واجهة برمجة التطبيقات |
بيان | يسمح للمستخدمين بتمكين نبيطات تستند إلى جافا سكريبت يقدمها المستخدمين من صفحة تفضيلاتهم |
المؤلف/المؤلفون | Daniel Kinzler (Duesentriebنقاش) |
سياسة التوافق | تصدر اللقطات البرمجية مع ميدياويكي. الإصدار الرئيسي لا يتوافق مع الإصدارات السابقة. |
MediaWiki | 1.19+ |
ترخيص | رخصة جنو العمومية 2.0 أو ما بعدها |
التنزيل | README |
مثال | ويكيميديا كومنز: نظرة عامة على النبيطات، تفضيلات المستخدمين (انقر على «نبيطات»؛ يجب عليك أن تكون مسجل الدخول بالطبع) |
|
|
تنزيلات ربع سنوية | 201 (Ranked 51st) |
استخدام مواقع الويكي العمومية | 6,111 (Ranked 13th) |
ترجم الامتداد Gadgets لو كان متوفرا على translatewiki.net | |
المسائل | المهام المفتوحة · الإبلاغ عن عطل تقني |
يقدم امتداد Gadgets سبيل للمستخدمين يمكنهم من اختيار «نبيطات» مبنية على جافا سكريبت أو سي إس إس التي يقدمها مستخدمي موقع الويكي الآخرين.
تصمم النبيطات باستخدام قصاصات جافا سكريبت أو سي إس إس أو كلاهما موجودة في صفحات على نطاق الاسم ميدياويكي. تحدد كل نبيطة باستخدام سطر في MediaWiki:Gadgets-definition، يقدم اسم وبيان للنبيطة، وقائمة بقصاصات جافا سكريبت وسي إس إس التي تستعين بها (طالع فقرة الاستخدام التالية).
منذ أن النبيطات تضاف إلى نطاق الاسم ميدياويكي (حيث توجد كلا من القائمة التي تحدد النبيطات وقصاصات الكود البرمجي ذاتها)، يمكن فقط لإداري النظام (وكذلك إداري الواجهة بدءا من الإصدار 1.32) تعديل الكود البرمجي. يتعين أن يكون الأمر كما يلي: يمنح فقط المستخدمين الذين يحظون بثقة مجتمع الويكي المتينة صلاحية تعديل كود جافا سكريبت البرمجي الذي يستخدمه المستخدمين الآخرين، منذ أنه يسهل استخدام جافا سكريبت في قرصنة الحسابات أو التلصص على الأفراد.
التنصيب
- نزّل الملف/الملفات وضعها في دليل يحمل اسم
Gadgets
داخل مجلد extensions/
لديك. - أضف الكود التالي في الجزء الأسفل من ملف
LocalSettings.php
:wfLoadExtension( 'Gadgets' );
- تم التنفيذ – اذهب إلى Special:Version على موقع الويكي لديك كي تتحقق من أن الامتداد قد ثبت بنجاح.
الاستخدام
حال استحداث MediaWiki:Gadgets-definition مستخدمًا نبيطة واحدة صالحة على الأقل، سيظهر قسم جديد اسمه «النبيطات» في صفحة Special:Preferences لكل المستخدمين. يمكن للمستخدمين تفعيل النبيطات التي يرغبون في استخدامها من هذا القسم. نظرة عامة على النبيطات المحددة حاليًا بموجب MediaWiki:Gadgets-definition تظهر أيضًا في صفحة Special:Gadgets، إلى جانب وصلات شبكية مفيدة إلى صفحات الأقلمة والنصوص البرمجية أو صفحات الأطر المعنية لتيسير الإنشاء أو التعديل. توجد إحصائيات تتناول تفضيلات النبيطات متاحة على Special:GadgetUsage.
صيغة التحديد
يجب أن يبدأ كل سطر في MediaWiki:Gadgets-definition بالمحرف «*» (النجمة) كي يعرّف نبيطة. يجب أن يكون السطر بالصيغة التالية:
* mygadget [خيارات] | أسماء الصفحات
الخانة الأولى («mygadget» في المثال) هي الاسم الداخلي للنبيطة. يأتي عنوان صفحة التفضيلات من صفحة رسائل الواجهة (MediaWiki:Gadget-mygadget) حيث يمكن كتابة الاسم الكامل وبيان قصير لها، وهو ما يسمح أيضًا باستخدام ترميز نصوص الويكي.
[A-Za-z]
) ويجوز أن يتبعه أي عدد من الأحرف والأرقام ([0-9]
) والشرطات (-
) والشرطات التحتية (_
) والنقط (.
). إن السبب وراء هذا القيد هو أن الاسم الداخلي يتعين أن يكون صالحًا في صفة اسم بصيغة إتش تي إم إل، وكذلك في صفة مفتاح رسالة واجهة ميدياويكي وفي صفة اسم وحدة ResourceLoader برمجية.تنسيق الخيارات:
[ResourceLoader | option1 | option2 | ... optionN]
وسم ResourceLoader مطلوب إلا في حال كانت النبيطة تحتوي على أطر لا غير. تحتاج الخيارات التي ليست سوى «وسوم» أن تكون أسمائها مكتوبة كي يجري تفعيلها. تُتْبَع الخيارات التي تحتاج إلى قيمة علامة يساوي وقائمة قيم مفصولة بفاصلات. كافة المسافات الخالية اختيارية ويجوز حذفها.
[ResourceLoader | myflag | mykey = value1, value2, value3 ]
أمثلة:
* mygadget[ResourceLoader]|mygadget.js|mygadget.css
أو
* mygadget[ResourceLoader|package]| mygadget.js | mygadget-Foo.js | mygadget-data.json | mygadget.css
أو
* mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css
استخدام نطاق اسم تعريف النبيطات
يوجد سبيلين اثنين لتحديد النبيطات استنادا إلى $wgGadgetsRepoClass
.
لو كانت 'MediaWikiGadgetsDefinitionRepo'
(القيمة الافتراضية)، سوف تحدد قائمة النبيطات المتاحة على MediaWiki:Gadgets-definition.
سبيل آخر، وهو تحديد النبيطات على صفحات في نطاق الاسم تعريف النبيطات حينما تكون قيمة $wgGadgetsRepoClass
هي 'GadgetDefinitionNamespaceRepo'
.
إنشاء صفحة Gadget definition:mygadget
ووضع نص جسون البرمجي التالي فيها سوف يكون له نفس أثر mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css
.
{
"settings": {
"rights": [ "foo", "bar" ],
"default": false,
"package": false,
"hidden": false,
"skins": [],
"actions": [],
"category": ""
},
"module": {
"scripts": [ "mygadget.js" ],
"styles": [ "mygadget.css" ],
"datas": [],
"peers": [],
"dependencies": [],
"messages": [],
"type": ""
}
}
في المثال السابق، يستخدم كلا من Gadget:Mygadget.js
وGadget:mygadget.css
.
خيارات
الاسم | المتغيرات | الوصف | منذ |
---|---|---|---|
ResourceLoader |
لا شيء | يسم النصوص البرمجية للنبيطات في صفة متوافقة مع ResourceLoader . | ? |
dependencies |
أسماء وحدات برمجية مفصولة بفاصلة | طالع قائمة الوحدات البرمجية الافتراضية. لاحظ أن هذا الخيار ليس له أثر لو كانت النبيطة الحالية لا يوجد لها مصادر متوافقة مع ResourceLoader (أي عدم تحديد أنماط أو نصوص برمجية بوصفها متوافقة). | ? |
rights |
أسماء امتيازات مفصولة بفاصلة | يجعل النبيطة متاحة (وظاهرة في التفضيلات) للمستخدمين الذين يتمتعون بامتيازات معينة دون غيرهم. | ? |
hidden
|
لا شيء | إخفاء النبيطة من صفحة التفضيلات. يمكن استخدام هذا السبيل بطريقة من اثنين:
|
1.28 |
skins |
أسماء سمات مفصولة بفاصلة | يجعل النبيطة متاحة (وظاهرة في التفضيلات) للمستخدمين الذين يستخدمون سمات محددة لا غير. قبل إصدار ميدياويكي 1.32 كنا ننظر بعين الاعتبار السمة المختارة في تفضيلات المستخدم، لا تلك المعروضة حاليًا (كما هو الحال حين إضافة ?useskin=monobook في معرف الموارد الموحد، مهمة T199478). |
? |
actions |
أسماء تصرفات مفصولة بفاصلة | يجعل النبيطة متاحة لتصرفات الصفحة المحددة لا غير. على سبيل المثال، actions = edit, history ينتج عنه تحميل نبيطة أثناء التعديل وفي صفحات التاريخ لا غير. تحديد تصرف edit سوف ينتج عنه أيضًا تحميلها في action=submit . ينتج عن التصرفات غير الصالحة تعطيل النبيطة منذ أنها لا يمكن تشغيلها في أي مكان. |
1.38-wmf.16 |
default
|
لا شيء | تفعيل النبيطة بصفة افتراضية للجميع (ويشمل ذلك عناوين الآيبي). لا يزال للمستخدمين المسجلين تعطيلها من تفضيلاتهم. | 1.18 |
package
|
لا شيء | وضع علامة على هذه النبيطة في صفة محزومة. في هذا الوضع سيجري تنفيذ أول صفحة جافا سكريبت لا غير. يمكن استيراد الصفحات الأخرى مستخدمًا دالة require(). يمكّن هذا الوضع أيضًا استخدام صفحات جسون، التي لا يمكن ضمها خلاف ذلك. | 1.38-wmf.16 |
targets
|
desktop (الافتراضي) أو mobile أو desktop,mobile
|
اضبط مستهدف/مستهدفات ResourceLoader للنبيطة. | gerrit:60954 |
type
|
styles أو general
|
استخدم styles للوحدات البرمجية التي تعدل طراز العناصر الموجودة على الصفحة بالفعل لا غير (مثل أثناء تخصيص السمة أو الهيئة أو محتوى المقالة). سينتج عن هذا ضم ملفات سي إس إس الخاصة بالوحدة البرمجية من إتش تي إم إل الصفحة بدلًا من تحميلها باستخدام جافا سكريبت. لمزيد من التفاصيل، طالع ResourceLoader/Migration guide (users)#Gadget type.
إن استخدام
styles لن يحمّل أية ملفات جافا سكريبت محددة. فيما يخص النبيطات التي تعدّل طرز عناصر عن طريق كلًا من جافا سكريبت وكذلك سي إس إس، يتطلب الأمر وجود تعريفين اثنين مستقلين للنبيطة. |
1.28 |
peers
|
أسماء وحدات برمجية مفصولة بفاصلة | تتطلب نبيطات سي إس إس فقط (التي عادة ما تكون مخفية). سوف تحمّل هذه النبيطات قبل غيرها عن طريق dependencies ، وسوف تحمّل حتى لو كانت جافا سكريبت معطلة. لمزيد من التفاصيل، طالع ResourceLoader/Migration guide (users)#Gadget peers.
|
1.29.0-wmf.11 (قبل الإصدار) |
supportsUrlLoad
|
لا شيء | true | false | اجعل النبيطة متاحة للتحميل مع متغير استعلام معرف الموارد الموحد ?withgadget .
|
1.38 |
requiresES6
|
None | Allow use of ES6 syntax (ES2015) in the gadget. Enabling this means server-side syntax validation is skipped for the gadget. Any ES6-requiring gadgets are loaded together in a single web request, which isolates failures due to invalid or unsupported syntax to those gadgets only, without affecting other gadgets and MediaWiki software features. It is recommended to use a tool like ESLint to ensure only valid ES6 syntax is used. | 1.40.0-wmf.7 |
|
لا شيء | (رفع في 1.29) يجعل النبيطة تحمّل أولًا. يجب استخدام هذه بحرص، إلا إنها مطلوبة في بعض أمور البدء مثل تسجيل الملحقات في المحرر المرئي. | gerrit:75506 |
يمكنك تحديد تبعيات إضافية لنبيطاتك، على سبيل المثال:
* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css
هنا، نطلب من ResourceLoader تحميل الوحدات البرمجية jquery.ui
وjquery.effects.clip
مستخدمًا mygadget.
لاحظ أن النبيطات لا يمكن تبعيتها على نصوص برمجية من صفحات أو ملفات جامدة أو معرفات موارد موحدة خارجية، بل وحدات برمجية مسجلة بالفعل في ResourceLoader.
كي تجعل نصًا برمجيًا من صفحة يتبع نص برمجي آخر من صفحة، يجب على كليهما أن يكون نبيطة تسجل نفسها في صفة وحدة برمجية في ResourceLoader، ومن ثم يمكن لكليهما أن يتبع غيره مستخدمًا الصياغة البرمجية التالية:
* childgadget[ResourceLoader|dependencies=ext.gadget.parentgadget]|childgadget.js
إن أردت تفعيل نبيطة بصفة افتراضية، استخدم «default
»:
* mygadget[ResourceLoader|default|dependencies=mediawiki.util]|mygadget.js|mygadget.css
كي تجعل النبيطة متاحة للمستخدمين الذين يتمتعون بالتصاريح الملائمة لا غير، اضبط خيار rights
، على سبيل المثال:
* ImprovedDeletion [rights=delete] | ImprovedDeletion.js
يجعل النبيطة متاحة للمستخدمين الذين يمكنهم بالفعل حذف صفحات دون غيرهم.
لاحظ أن القيود تستند إلى التصاريح، لا مجموعات المستخدمين مثل الإداريين أو البيروقراطيين. إليك بعض الأمثلة الحقيقية:
* modrollback[ResourceLoader|rights=rollback]|modrollback.js * UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js * Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js
User rights
gadgets-edit
and gadgets-definition-edit
, which by default aren't given to any group.
يمكنك إضافة ما يلي في LocalSettings.php لديك كي تقدم التصاريح الملائمة للمستخدمين المنتمين إلى مجموعة إداري الواجهة.
يتطلب تعديل الصفحات الموجودة في نطاق الاسم «نبيطات» التمتع بحق gadgets-edit
وتعديل الصفحات الموجودة في نطاق اسم تعريف النبيطات يتطلب التمتع بحق gadgets-definition-edit
.
$wgGroupPermissions['interface-admin']['gadgets-edit'] = true;
$wgGroupPermissions['interface-admin']['gadgets-definition-edit'] = true;
صفحات
الخانات المتبقية في السطر تشير إلى كود جافا سكريبت أو سي إس إس أو جسون البرمجي الذي يشكّل النبيطة الموجود في رسائل النظام (MediaWiki:Gadget-mygadget.js وMediaWiki:Gadget-mygadget.css في المثال)؛ يتعين أن تنتهي أسماء تلك الرسائل بأي من «.js» أو «.css» على التوالي.
يمكن لأي نبيطة استخدام أي عدد من رسائل الكود البرمجي، على وجه التحديد، يمكن وضع الكود البرمجي العمومي في رسالة كود برمجي تستخدمها عدة نبيطات، خلاف الكود البرمجي الخاص بها المحدد، مثال ذلك:
* frobinator[ResourceLoader]|commonStuff.js|frob.js|frob.css|pretty.css * l33t[ResourceLoader]|commonStuff.js|tools.js|l33t.js * foobar[ResourceLoader|package]|foo.js|bar.js|foobar.json
يرجى ملاحظة أنه لو كان كودك البرمجي يحتوي على أسطر يمكن تفسيرها في صفة نص برمجي ويكي (مثل كود التوقيع ~~~~
)، ربما يجب عليك أن تحصرها في <nowiki>...</nowiki>
وأن تضع هذه الوسوم في تعليقات جافا سكريبت أو سي إس إس حتى لا يجري تفسيرها حينما تستخدم.
طالع السطرين الأول والأخير من MediaWiki:Gadget-externalsearch-bar.js مثالًا على ما ذكرنا.
فقرات
يمكن تقسيم قائمة النبيطات الموجودة في MediaWiki:Gadgets-definition إلى أقسام مستخدمًا أسطر تبدأ وتنتهي بعدد أثنين أو ثلاثة من المحارف «=» (علامة يساوي) توضع قبل وبعد اسم رسالة نظام تحدد اسم الفقرة، مثال ذلك:
== interface-gadgets ==
سوف يحدد هذا فقرة جديدة، ويكون عنوانها كما هو محدد في الصفحة MediaWiki:Gadget-section-interface-gadgets.
Popular gadgets
See meta:Gadgets for gadgets which are popular in Wikimedia communities.
انظر أيضا
هذا الامتداد يستخدم على واحد من مشاريع ويكيميديا أو أكثر من واحد. يعني هذا الأمر أن الامتداد مستقر ويعمل/تعمل جيدا بما فيه الكفاية ليستخدم/لتستخدم في مواقع تتمتع بمستوى زيارات مرتفع مثل هذه. ابحث عن اسم هذا الامتداد في ملفات الضبط CommonSettings.php وكذلك InitialiseSettings.php كي ترى أين تنصب. توجد قائمة كاملة بالامتدادات المنصبة على موقع ويكي بعينه على صفحة Special:Version الخاصة بموقع الويكي. |
هذا الامتداد مشمول في الحزم أو مزارع الويكي التالية أو كليهما: هذه ليست قائمة كاملة. بعض مزارع الويكي أو مستضيفين الويكي قد تحتوي على extension حتى لو كانت غير مدرجة في هذه القائمة. راجع دائمًا مزارع الويكي أو مستضيفين الويكي أو حزمتك كي تتأكد من الأمر. |