صُنّفت هذه الوحدة على أنها محمية. تصل الوحدة لهذه المرحلة عندما تستخدم في صفحات كثيرة جدًا. فيجب أن تحمى بسبب أن عمليات التخريب أو الأخطاء تطال الكثير من الصفحات. كما هناك تعديلات غير مجدية تتم على هذه الوحدات تسبب تعب للخادم، إذا كنت ترى أن تعدل هذه الوحدة طبق تعديلك على الملعب أولا وبعد اختباره استدعِ أحدًا لديه صلاحية التعديل لتطبيقه .
الوحدة تُستخدم في عدّة الصفحات وقد تُلاحظ التغييرات على نطاق واسع، اختبرها في وحدة /ملعب أو /مختبر، أو في ملعب. فكر في مناقشة التغييرات على صفحة النقاش قبل تنفيذها.
As this is a meta template, it should not be transcluded directly on to talk pages when you want to tag a page. Instead, use the template provided by the WikiProject.
WikiProject banners are categorised into a subcategory of تصنيف:قوالب أشرطة مشاريع الويكي. It is not necessary to include a category link in the documentation for each project banner. Any project banners with issues are automatically added to تصنيف:أشرطة مشروع ويكي بأخطاء في التنسيق.
The template can be used at varying levels of complexity, from the very simple to the extremely complicated. Simple options are listed here first, with complexity increasing down the page.
Two different types of parameters are used: formatting and display:
Formatting parameters customise the meta-template for a particular project, defining link targets, categories, images, and text. All formatting parameters use UPPERCASE and underscores (_) instead of spaces, for example |PROJECT= and |NOTE_1_CAT=.
Display parameters customise the template output for each individual article that the banner is displayed on. These are the parameters which are entered on the talk page (|class=, |importance=, etc.) and they must be 'passed through' the project banner to the meta-template underneath. To 'pass' the parameter foo, you need to include the code foo={{{foo|}}}.
PROJECT(Required) – the name of the project without the word "WikiProject", used in a variety of contexts; first letter should usually be capitalised. Eg: Tulips
BANNER_NAME={{subst:FULLPAGENAME}} – it is assumed that page name of the banner template is "Template:WikiProject <PROJECT>". If this is not the case then define the page name in this parameter. Eg: Template:Tulips project
PROJECT_LINK – it is assumed that the project is located at "Wikipedia:WikiProject <PROJECT>". If this is not the case, then define the full link to the project page in this parameter. Eg: Wikipedia:WikiProject Tulips
PROJECT_NAME – if your project is not called "WikiProject <PROJECT>" then define the exact name of the project with this parameter.
substcheck – this allows the template to detect if it has been substituted instead of transcluded and give an error message. substcheck=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
listas(Required) – the 'listas' parameter must be passed through the template. Eg: listas={{{listas|}}}
IMAGE_LEFT – the location of an image to use in the top-left corner of the banner. Do not include the "File:" prefix. Images used on WikiProject banners must be free images – fair use images are not permitted. Eg: Tulipa suaveolens floriade to Canberra.jpg
IMAGE_LEFT_SIZE – the size of IMAGE_LEFT. Default is 80px. Eg: 50px
IMAGE_RIGHT – the location of an image to use in the top-right corner of the banner. Do not include the "File:" prefix. Images used on WikiProject banners must be free images – fair use images are not permitted. Eg: Tulipa suaveolens floriade to Canberra.jpg
IMAGE_RIGHT_SIZE – the size of IMAGE_RIGHT. Default is 80px. Eg: 50px
MAIN_TEXT – the default text is "This article is within the scope of [[WikiProject {{{PROJECT_LINK}}}]], a collaborative effort to improve the coverage of {{{PROJECT or MAIN_ARTICLE}}} articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the [[Talk:{{{PROJECT_LINK}}}]] discussion and see a list of open tasks." If defined, the alternate message will be displayed.
MAIN_ARTICLE – the default article is PROJECT; alternatively, the linked article can be changed to either a raw article title or more complicated text. Eg: (default) tulips → "...the coverage of توليبs on Wikipedia..." or (alternate) [[توليب]]s, [[زنبقية]] and related articles → "...the coverage of توليبs, زنبقية and related articles on Wikipedia..."
PORTAL – if the WikiProject maintains a portal, define this parameter with the portal name. The associated image is held centrally at Module:Portal/images. Eg: Tulips
BOTTOM_TEXT – if defined, contains text that will appear across the bottom of the banner and above the collapsed section (if one is present). Please do not use this parameter to 'hook' extra code to the bottom of the template – see the hooks section below for a better solution.
{{#invoke:WikiProject banner|main
|PROJECT = علم الأحياء
|substcheck=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>|listas={{{listas|}}}|PROJECT_LINK = ويكيبيديا:مشروع ويكي علم الأحياء
|IMAGE_LEFT = Tulipa suaveolens floriade to Canberra.jpg
|IMAGE_LEFT_SIZE = 50px
|MAIN_ARTICLE =[[توليب]]، و[[زنبقية]] والمقالات ذات الصلة
}}
المقالة من ضمن مواضيع مشروع ويكي علم الأحياء، وهو مشروعٌ تعاونيٌّ يهدف لتطوير وتغطية المحتويات المُتعلّقة بتوليب، وزنبقية والمقالات ذات الصلة في ويكيبيديا. إذا أردت المساهمة، فضلًا زر صفحة المشروع، حيث يُمكنك المشاركة في النقاشات ومطالعة قائمة بالمهام التي يُمكن العمل عليها.علم الأحياءويكيبيديا:مشروع ويكي علم الأحياءقالب:مشروع ويكي علم الأحياءعلم الأحياء
Many projects use the ويكيبيديا:دليل التقديرات schema to grade their articles by quality and the corresponding importance scale to place their articles in order of priority. In order to implement ويكيبيديا:ويكيبيديا من النسخة الثابتة, which uses a bot to automatically compile its statistics tables, you will need to follow the instructions at /Using the bot, as well as those outlined here.
class(Required)– the class parameter must be passed through, if the quality scale is used. Eg: class={{{class|}}}
auto the auto parameter must be passed through, if the auto assess option is needed. Eg: auto={{{auto|}}} Projects which use bots to automatically categorise articles can have the bot add the following parameter to the project banner, which triggers the display of a small notice that the article was tagged by a bot rather than a human:
|auto=stub, for an article which includes a stub template, to indicate that it has automatically been rated Stub-class;
|auto=inherit, to show that the class has automatically been inherited from other WikiProject's assessments on the same page;
|auto=length, to show that the class has automatically been deduced from the length of the article.
b1, b2, b3, b4, b5, b6 – the six B-class criteria parameters.
importance– if defined, enables the standard importance scale (Top, High, Mid, Low, NA, Unknown). Eg: importance={{{importance|}}}
IMPORTANCE_SCALE – configures the importance scale, if used. The possible options are:
standard – enables the 'standard' importance scale (Top, High, Mid, Low, NA and Unknown). (This is the default behaviour.)
inline – allows for a simple custom importance scale to be defined, generally with {{Importance mask}}.
subpage – allows for a more complex custom importance scale to be used using a subpage called /importance.
ASSESSMENT_LINK – the link to a WikiProject-specific quality (and/or importance) scale. If there is a page at "Wikipedia:WikiProject <PROJECTLINK>/Assessment" then this will be used by default. To override this, you can set this parameter to no.
المقالة من ضمن مواضيع مشروع ويكي علم الأحياء، وهو مشروعٌ تعاونيٌّ يهدف لتطوير وتغطية المحتويات المُتعلّقة بعلم الأحياء في ويكيبيديا. إذا أردت المساهمة، فضلًا زر صفحة المشروع، حيث يُمكنك المشاركة في النقاشات ومطالعة قائمة بالمهام التي يُمكن العمل عليها.علم الأحياءويكيبيديا:مشروع ويكي علم الأحياءقالب:مشروع ويكي علم الأحياءعلم الأحياء
Built into the module is the ability to display a number of other fields that contain useful information about the article. There are also three predefined fields for:
attention – pass this parameter through to enable the use of the attention note. Eg: attention={{{attention|}}}, then by including |attention=yes on the talk page.
infobox – pass this parameter through to enable the use of the needs-infobox note. Eg: infobox={{{needs-infobox|}}}, then by including |needs-infobox=yes on the talk page.
COLLAPSED – when more than a threshold number of notes and alerts are triggered on a page, they are automagically collapsed into a show/hide box. The threshold number can be customised by setting this parameter to the maximum number of notes on a page that will not trigger the collapse. The default is 2, so if three notes are triggered on a page, they will not be collapsed, but if a fourth is also triggered, the collapse box appears. So setting |COLLAPSED=0 will always create a collapse box (if there are any notes to fill it), while |COLLAPSED=999 will never trigger a collapse box. Eg: 6
COLLAPSED_HEAD – the heading for the collapsed section; the default is More information:Eg: Additional information:
NOTE_SIZE – the size of the image used for the icons. (It is recommended to precede the size with "x" as this specifies the height of the image instead of the width, which results in a neater banner because all rows have equal height.) The default is a height of 25px. Eg: x30px
{{#invoke:WikiProject banner|main
|PROJECT = علم الأحياء
|substcheck=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>|listas={{{listas|}}}|IMAGE_LEFT = Tulipa suaveolens floriade to Canberra.jpg
|QUALITY_SCALE = extended
|class={{{class|}}}|ASSESSMENT_LINK = Wikipedia:WikiProject Tulips/Article grading
|auto={{{auto|}}}|AUTO_ASSESS_CAT =|attention={{{attention|}}}|ATTENTION_CAT =|infobox={{{needs-infobox|}}}|INFOBOX_CAT =|note 1={{{needs-photo|}}}|NOTE_1_TEXT = This page has been marked as needing a [[صورة ضوئية]].
|NOTE_1_IMAGE = Gnome-dev-camera.svg
|NOTE_1_CAT = Wikipedia requested photographs of Floridiae
|note 2 ={{{audio-file|}}}|NOTE_2_TEXT = An [[صيغة ملف صوت|audio file]] has been created of this article.
|NOTE_2_IMAGE = Nuvola apps arts.svg
|NOTE_2_CAT = Tulips articles with audio files
}}
المقالة من ضمن مواضيع مشروع ويكي علم الأحياء، وهو مشروعٌ تعاونيٌّ يهدف لتطوير وتغطية المحتويات المُتعلّقة بعلم الأحياء في ويكيبيديا. إذا أردت المساهمة، فضلًا زر صفحة المشروع، حيث يُمكنك المشاركة في النقاشات ومطالعة قائمة بالمهام التي يُمكن العمل عليها.علم الأحياءويكيبيديا:مشروع ويكي علم الأحياءقالب:مشروع ويكي علم الأحياءعلم الأحياء
The module can accommodate task forces, each with its own image, links and importance scale, if desired. The following parameters are available:
tf 1 – this parameter must be passed through to enable and trigger the display of the task force section. Eg: tf 1={{{floridiae|}}}
TF_1_LINK – the full page name of the task force's project page. Eg: Wikipedia:WikiProject Tulips/Task forces/Floridiae
TF_1_NAME – the name of the task force. This is used as the label for the task force link (unless |TF_1_TEXT= is used instead). Eg: the Floridiae task force
TF_1_NESTED – if defined, a link of the form "/ [[{{{TF_1_LINK}}}|{{{TF_1_NESTED}}}]]" is added after the main project's name when the banner is collapsed inside a {{WikiProject banner shell}}. Eg: Floridiae
TF_1_TEXT – if defined, replaces the default "This page is supported by..." text. E.g.: This page is within the scope of the [[Wikipedia:WikiProject Tulips/Task forces/Floridiae|Floridiae task force]]. New participants are always welcome! If defined to be "none", then no output will be displayed, although appropriate categories will still be added.
TF_1_IMAGE – an image can be defined for each task force. Remember that all images must be free, not fair-use. Eg: Tulipa florenskyi 4.jpg
TF_1_QUALITY – if defined, enables the quality categorisations for the main project (e.g.: Category:FA-Class Tulips articles) to be duplicated for the task force. The class arising from |class= and |QUALITY_SCALE= will be used; Eg: yes
tf 1 importance– if defined, enables the use of a separate importance (or priority, if used) scale for the task force.Eg: tf 1 importance={{{floridiae-importance|}}}
TF_1_ASSESSMENT_CAT(Required if quality or importance assessments are used) – the assessment category to be used for the task force-specific quality and importance assessments. Identical in syntax to |ASSESSMENT_CAT=. Eg: Floridiae articles → Category:FA-Class Floridiae articles
TF_1_HOOK – additional code to "hook" on the template only if this task force is used.
TF_SIZE – the size of the taskforce icons. (It is recommended to precede the size with "x" as this specifies the height of the image instead of the width, which results in a neater banner because all rows have equal height.) The default is a height of 25px. Eg: x30px
المقالة من ضمن مواضيع مشروع ويكي علم الأحياء، وهو مشروعٌ تعاونيٌّ يهدف لتطوير وتغطية المحتويات المُتعلّقة بعلم الأحياء في ويكيبيديا. إذا أردت المساهمة، فضلًا زر صفحة المشروع، حيث يُمكنك المشاركة في النقاشات ومطالعة قائمة بالمهام التي يُمكن العمل عليها.علم الأحياءويكيبيديا:مشروع ويكي علم الأحياءقالب:مشروع ويكي علم الأحياءعلم الأحياء
If a task force has been deemed inactive, then the following parameter and text can be used:
|TF_N_TEXT = This _PAGETYPE_ is within the scope of the [[Wikipedia:WikiProject (name of project)/(name of task force)|(name of task force)]], a task force which is currently considered to be '''[[ويكيبيديا:سياسة مشاريع ويكيبيديا|inactive]]'''.
where "N " is the number of the task force, and the project and task force names are included where indicated.
The features described below are non-standard and should probably not be added to a project banner without the express agreement of the WikiProject's participants.
Enables a B-class checklist. There are six official criteria (although some projects use five) that an article needs to satisfy in order to be classified as B-class. A checklist can provide a helpful aid for editors to show where an article needs improvement.
B_DISPLAY_ON_START – if set to "yes", the checklist will be displayed on every Start-class article. The default behaviour is to only display on Start-class when one or more of the parameters b1-b6 have been filled in.
B_MAIN_CAT – specifies a category to use when any of the checklist parameters are blank.
B1_CAT to B6_CAT – specifies individual categories to use when the individual checklist parameters are blank or set to no.
The standard parameter names (i.e. b1, b2, etc.) should be passed as an alternative to any custom parameters (e.g. B-Class-1, B-Class-2, etc.). For example:
b1={{{B-Class-1|{{{b1|}}}}}}
If only the standard parameters are used, then eg: b1={{{b1|}}}, etc. is fine.
By default, the list of task forces will be collapsed into a show/hide box if there are more than 5 task forces. You can configure this behaviour with the following parameters:
TF_COLLAPSE – the threshold number of task forces for them to collapse, e.g. if |TF_COLLAPSE=3 then they will collapse whenever there are more than 3 task forces.
TF_HEADER – the heading for the collapsed section. The default is Associated task forces:
There are two main parameters, |TODO_LINK= and |TODO_TEXT=. Only one should be used at any time. If the to-do list is located on a different page then TODO_LINK should be used. However, if you've just got some text to include then you can use the TODO_TEXT option instead.
Styling can be adjusted using the |TODO_STYLE= and |TODO_TITLE_STYLE= parameters.
If you are using |TODO_LINK= and don't want to see the edit links at the top of the textbox, set TODO_EDITLINKS=no.
المقالة من ضمن مواضيع مشروع ويكي علم الأحياء، وهو مشروعٌ تعاونيٌّ يهدف لتطوير وتغطية المحتويات المُتعلّقة بعلم الأحياء في ويكيبيديا. إذا أردت المساهمة، فضلًا زر صفحة المشروع، حيث يُمكنك المشاركة في النقاشات ومطالعة قائمة بالمهام التي يُمكن العمل عليها.علم الأحياءويكيبيديا:مشروع ويكي علم الأحياءقالب:مشروع ويكي علم الأحياءعلم الأحياء
هذه مجرد قائمة مهام اختبارية لمساعدة المحررين في التأكد من أن النص
يظهر
بشكل
صحيح
عادةً، يجب إنشاء الصفحة الفرعية "/فرعية" فقط تحت صفحة نقاش المقالة، ما لم تكن لوحة إعلانات أو صفحة مشروع.
لاستخدام هذا القالب في المقالة، قم بإدراج {{مهام}} في أعلى صفحة نقاش تلك المقالة. لاستخدامه لمشروع أو كقائمة خاصة بك، أضفه إلى صفحة المشروع أو صفحتك الشخصية، على التوالي.
This feature adds a note than can be used to track when articles needs an image, photograph, diagram, illustration, etc. It will populate various categories such as
IM_IMAGE – specifies the icon to be used (without the File namespace prefix); the default is ([[File:Camera-photo.svg|20px]]).
image-type – pass through the type which can be used to accommodate other components that are needed, e.g. diagram, equation, map, etc. If this is not specified then "image or photograph" is used. E.g. |image-type={{{type|}}}.
image-details – to allow an editor to pass more details about the required image, e.g. |image-details={{{details|}}}.
image-location – pass this parameter through to allow an editor to specify the location of the requested image, e.g. |image-location={{{location|}}}. This will also populate categories of the form Category:Wikipedia requested photographs in Scotland.
IM_LOCATION_CATEGORY – a default category to use when the location is not specified or leads to a non-existent category.
image-topic – pass this through to allow an editor to specify a topic area that the photograph relates to, e.g. |image-topic={{{topic|}}}. This will populate categories such as Category:Wikipedia requested photographs of toys.
IM_TOPIC_CATEGORY – a default category in case the topic is not specified or leads to a non-existent category, e.g. |IM_TOPIC_CATEGORY=Wikipedia requested images of politics.
collaboration-candidate – pass the parameter that will trigger the collaboration candidate note, if used, e.g. |collaboration-candidate={{{collaboration-candidate|}}}
collaboration-current – the parameter that will trigger the current collaboration note, if used. E.g. |collaboration-current={{{collaboration|}}}
collaboration-past – the parameter that will trigger the past collaboration note, if used. e.g. |collaboration-past={{{past-collaboration|}}}
COLL_LINK – the full link to where the review for the particular article is held. E.g. |COLL_LINK=Wikipedia:WikiProject Paranormal/Collaboration
COLL_TEXT – the text to display in place of the default "project collaboration", e.g. |COLL_TEXT=Collaboration of the Month
COLL_IMAGE – the name of the image to use. If not specified then is used.
COLL_CANDIDATE_CAT – if defined, pages using |candidate=yes will be categorised into this category, e.g. |COLL_CANDIDATE_CAT=Paranormal collaboration candidates → Category:Paranormal collaboration candidates
COLL_CURRENT_CAT – if defined, pages using |current=yes will be categorised into this category, e.g. |COLL_CURRENT_CAT=Paranormal collaborations → Category:Paranormal collaborations
COLL_PAST_CAT – if defined, pages using |past=yes will be categorised into this category, e.g. |COLL_PAST_CAT=Past paranormal collaborations → Category:Past paranormal collaborations
a class – the parameter that will trigger the note. Accepted values are "pass", "fail", "current" (any capitalisation); everything else is treated as null. Eg: a class={{{A-Class|}}}
ACR_SUBPAGE_LINK – the full link to where the review for this particular article is held. Eg: Wikipedia:WikiProject Tulips/Assessment/{{SUBJECTPAGENAME}}
ACR_REVIEW_LINK – the full link to the main A-Class review page (where instructions etc. are held). Eg: Wikipedia:WikiProject Tulips/Review#A-Class review
Sometimes it is desirable to populate additional categories when certain task forces are used. For example the |attention= parameter is used to draw attention to articles which need immediate attention in the cycling project. Articles within the scope of the Tour de France task force populate the additional category of Category:Tour de France articles needing attention.
This can be achieved by using the following code:
{{#invoke:WikiProject banner|main
...
|tf 2={{{tdf|}}}|TF_2_LINK = Wikipedia:WikiProject Cycling/Tour de France task force
...
|tf 2 cat 1={{{attention|}}}|TF_2_CAT_1 = Tour de France articles needing attention
|tf 2 cat 2={{{needs-infobox|}}}|TF_2_CAT_2 = Tour de France articles needing infoboxes
}}
PR_IMAGE – the name of the image to use. If not specified then is used.
PR_CAT – if defined, pages using |peer review=yes will be categorised into this category, e.g. |PR_CAT=Requests for Tulips peer review → Category:Requests for Tulips peer review
PR_OLD_CAT – if defined, pages using |old peer review=yes will be categorised into this category.
peer review title – If the page has been moved since it was reviewed, pass this parameter to specify the old page title (the one the review was archived under) to make the link point correctly to the review.
PR_INVALID_CAT – if defined, pages without a valid existing peer review page will be categorised into this category.
WPBannerMeta incorporates a number of 'hooks' where advanced or customised features can be added. These should take the form of a subtemplate passed to the relevant hook parameter. Any relevant parameters should then be passed to the hook template – it may be necessary to repeat parameters that are already passed to the main template (|category={{{category|}}} and |class={{{class|}}} are commonly used).
The module uses a mask to normalise the values given to the |class= parameter, to ensure that invalid inputs are discarded (e.g. |class=cheesecake) and that equivalent inputs appear the same (e.g. |class=FA and |class=fA). This mask effectively controls which extended assessment scale values are accepted by the template (e.g. "Template-Class", "Redirect-Class", etc.). Projects which want to use more obscure assessment classes (e.g. "Future-Class", "Bplus-Class", etc.) or to not use all of the standard classes (e.g. not using "C-Class") can define their own custom mask, which will override the default. To achieve this, create the mask template in the /class subpage of your project banner template and set |QUALITY_CRITERIA=custom. Note that this will remove the project from project-independent quality assesments, and so no assessments will be inherited from other projects.
A number of WikiProjects have been identified as inactive or defunct (see تصنيف:Inactive WikiProjects). In this case, the project banner can be given a less prominent form. Keeping an inactive project's template on relevant talkpages helps any group of users who later wishes to revive the project. This template will auto-categorize the project banner into تصنيف:Inactive WikiProject banners.
The easiest way to convert a banner template to an inactive state, is to replace main with inactive.
The only required parameter is |PROJECT= - the name of the WikiProject (but without the word "WikiProject")
An additional parameter |PROJECT_STATUS= can be used to identify the status of the inactive project. Currently recognised values are inactive and defunct. The default is inactive.
All the other parameters can and should be retained, as this will make it easier to "revive" the project in the future.
require('strict')localp={}localsandbox-- = '/sandbox' -- BE SURE TO COMMENT OUT this definition when deploying to livelocalcfg=mw.loadData('Module:WikiProject banner/config'..(sandboxor''))localauxiliary=cfg.auxiliary_module..(sandboxor'')localargs_module=p--require('Module:Arguments')localmbox=require('Module:Message box').mainlocalyesno=require('Module:Yesno')localframe=mw.getCurrentFrame()locallang=mw.getLanguage(cfg.language)localcurrent_title=mw.title.getCurrentTitle()localparameter_format=function(parameter,value)returnframe:expandTemplate{title='para',args={parameter,valueor''}}endfunctionp.getArgs(frame,options)localargaliases=require('Module:WikiProject banner/argaliases')options.aliases=argaliases.aliasesoptions.numbered_aliases=argaliases.numbered_aliasesreturnrequire('Module:Arguments with aliases').getArgs(frame,options)endlocalwikilink=function(link,display)iflinkthenreturndisplayand'[['..link..'|'..display..']]'or'[['..link..']]'elsereturndisplayor''endendlocaldisplay_error=function(text)localspan=mw.html.create('div'):addClass('error'):wikitext(text)returntostring(span)endlocalimage=function(image_name,size,alt,position)returnimage_nameand'[[File:'..image_name..(sizeand'|'..sizeor'')..(positionand'|'..positionor'')..(altand'|alt='..altor'')..']]'endlocalif_exists=function(target,fallback)-- function to add wikilink if target existslocaltitle=mw.title.new(target)iftitleandtitle.existsthenreturnwikilink(target)elsereturnfallbackortargetendendlocalimportance_mask=function(raw_importance,scale,banner_name,pagetype,class)----------------------------- Importance mask -----------------------------------localimportanceifscale=='inline'then-- pass importance without changeimportance=raw_importanceelseifscale=='subpage'thenlocalcustom_mask=banner_name:subPageTitle('الأهمية')ifcustom_mask.existsand#custom_mask:getContent()>1then-- pass to custom importance maskimportance=mw.text.trim(frame:expandTemplate{title=custom_mask.prefixedText,args={importance=raw_importanceor'¬',class=class,pagetype=pagetype}})endelseifraw_importancethen-- standard importance scaleimportance=cfg.importance.naifpagetype=='مقالة'orpagetype=='set index article'orpagetype=='تحويلة'orpagetype=='مسودة'thenlocalmask=cfg.importance.maskifmask[raw_importance:lower()]then-- valid importance specifiedimportance=mask[raw_importance:lower()]elseifpagetype=='مقالة'orpagetype=='set index article'then-- unspecified or invalid importance, use "Unknown" for articlesimportance=cfg.importance.unknownendendendreturnimportanceend----------------------------- Quality class mask --------------------------------p.readarticleclass=function(options,page)-- used by _main and also Module:Banner shellpage=pageorcurrent_title.prefixedTextlocalget_parameter_value=require('Module:Template parameter value').getParameterlocalsuccess,result=get_parameter_value(page,cfg.banner_shell.redirects,'class',options)returnsuccessandresult-- returns FALSE if banner shell template does not exist on page-- returns BLANK if class parameter is not defined or is defined blank-- otherwise returns class parameterendp.class_mask=function(class,title,FQS,pagetype,article)localresolveFQSgrade=function(class)returnFQSandlang:ucfirst(class)or'NA'endlocalouttitle=titleormw.title.getCurrentTitle()localns=title.namespaceclass=class:match('^%s*(.-)%s*$'):lower()ifpagetype=='redirect'orpagetype=='soft redirect'thenout=resolveFQSgrade('redirect')elseifpagetype=='disambiguation page'thenout=resolveFQSgrade('disambig')elseifarticleorpagetype=='مقالة'orpagetype=='set index article'thenifpagetype=='set index article'thenout='قائمة'elseifclass=='بداية'orclass=='بذرة'then-- Ucfirstout=lang:ucfirst(class)elseifclass=='ب'orclass=='ج'orclass=='م.مخ'orclass=='ق.مخ'orclass=='أ'orclass=='م.ج'then-- Upper-caseout=class:upper()elseifclass=='قائمة'orclass=='sia'orclass=='si'orclass=='sl'then-- Listout='قائمة'elseout=''-- unassessedendelseifns==7orns==711then-- File talkifclass=='و.مخ'thenout='و.مخ'elseout=resolveFQSgrade('file')endelselocalgrade=cfg.quality.ns_to_class[ns]or'NA'out=resolveFQSgrade(grade)endreturnoutendlocalpage_assessment=function(project,class,importance)-- add PageAssessments parser functionlocalassessment=table.concat({project,classor'',importanceor''},'|')frame:preprocess('{{#دليل التقديرات:'..assessment..'}}')endlocalbubble=function(text,conflict,style)localout=mw.html.create('span'):addClass('wpb-header-bubbles'):addClass(style):addClass(conflictand'conflict'ornil):wikitext(text)returntostring(out)endp._main=function(args,raw_args,demo_page,banner_name,inactive)----------------------------- Initialise parameters -----------------------------localproject=args.PROJECTor'مشروع'localproject_name=args.PROJECT_NAMEor'مشروع ويكي '..projectlocalproject_link=mw.title.new(args.PROJECT_LINKor'ويكيبيديا:'..project_name)localpagetype=demo_page==trueand'مقالة'orrequire('Module:Pagetype')._main({page=demo_page,dab='disambiguation page',sia='set index article'})localarticle=pagetype=='مقالة'orpagetype=='set index article'localrows,nested_ratings,task_forces,notes,categories,taskforce_categories={},{},{},{},{},{}localadd_category=function(category,key)ifcategoryandcategory~='none'thentable.insert(categories,{category=category,key=key})endendlocalparse_pt=function(text)-- function to replace _PAGETYPE_ with the actual page typelocalptype=articleand'مقالة'orpagetype-- display "article" for articles otherwise page typereturntextandtext:gsub('_PAGETYPE_',ptype)endforarg_name,arg_valueinpairs(args)dolocaltf_match=mw.ustring.match(arg_name,'^tf (%d+)$')localnote_match=mw.ustring.match(arg_name,'^note (%d+)$')iftf_matchandyesno(arg_value,true)thentable.insert(task_forces,tf_match)elseifnote_matchandyesno(arg_value,true)thentable.insert(notes,note_match)elselocaltf,cat=mw.ustring.match(arg_name,'^tf (%d+) cat (%d+)$')iftfandyesno(arg_value,true)thenifnottaskforce_categories[tf]then-- initialise tabletaskforce_categories[tf]={}endtable.insert(taskforce_categories[tf],cat)endendendtable.sort(task_forces,function(x,y)returntonumber(x)<tonumber(y)end)table.sort(notes,function(x,y)returntonumber(x)<tonumber(y)end)localassessment_category=function(cat,name)ifcatthenreturncat:gsub(' مقالات','')-- remove "articles" from categoryelsereturnnameor''endendlocalassessment_cat=assessment_category(args.ASSESSMENT_CAT,project)----------------------------- Location warning ----------------------------------localwarning=''ifnotcurrent_title.isTalkPageandnotdemo_pagethenlocaltext=cfg.namespace_warning.text:format(current_title.talkPageTitle.fullText,parameter_format('category','no'))localsortkey=current_title.namespace==10andcfg.namespace_warning.sortkey_on_template_pageorcfg.namespace_warning.sortkeyifcurrent_title.namespace==10then-- on the Template namespacetext=text..' '..cfg.namespace_warning.on_template_page:format(parameter_format('BANNER_NAME'),current_title.prefixedText)endwarning=mbox('ombox',{image='[[File:'..cfg.namespace_warning.image..'|40px]]',type=cfg.namespace_warning.type_,text=parse_pt(text)})ifnotcurrent_title.subjectPageTitle:inNamespace(2)thenadd_category(cfg.namespace_warning.categories,sortkey)endend----------------------------- Substitution warning ------------------------------ifargs.substcheck=='SUBST'thenlocaltext=cfg.subst_warning.text:format(project_name,'<code>{{'..banner_name.prefixedText..'}}</code>')warning=warning..mbox('ombox',{image='[[File:'..cfg.subst_warning.image..'|40px]]',type=cfg.subst_warning.type_,text=text,})..cfg.subst_warning.categoriesend----------------------------- Primary image/text --------------------------------localprimary_image=function(image_name,size)localcell=mw.html.create('td')ifimage_nameandimage_name~=''thencell:addClass('mbox-image wpb-image'):wikitext(image(image_name,size,cfg.image.alt))elsecell:addClass('mbox-empty-cell')endreturncellendlocalportal=args.PORTALlocalportal_box=portalandframe:expandTemplate{title='بوابة',args={portal}}or''localmain_text=portal_box..parse_pt(args.MAIN_TEXTorcfg.main_text:format(project_link.prefixedText,project_name,args.MAIN_ARTICLEandif_exists(args.MAIN_ARTICLE)orif_exists(project,project..' مقالات'),project_link.talkPageTitle.prefixedText))localimage_left_size=args.IMAGE_LEFT_SIZEorcfg.image.default_sizelocalmetadata=function(class,data)returnmw.html.create('span'):addClass(class):wikitext(data)endlocaltext_cell=mw.html.create('td'):addClass('mbox-text'):wikitext(main_text):tag('span'):addClass('metadata wpb-metadata'):node(metadata('wpb-project',project)):node(metadata('wpb-project_link',project_link.prefixedText)):node(metadata('wpb-banner_name',banner_name.prefixedText)):node(metadata('wpb-assessment_cat',assessment_cat)):done()localprimary_row=mw.html.create('tr'):node(primary_image(args.IMAGE_LEFT,image_left_size)):node(text_cell):node(primary_image(args.IMAGE_RIGHT,args.IMAGE_RIGHT_SIZEorcfg.image.default_size))table.insert(rows,primary_row)----------------------------- Banner shell checks -------------------------------localtitle=demo_pageanddemo_page~=trueandmw.title.new(demo_page)orcurrent_titlelocalarticle_class=p.readarticleclass({ignore_subtemplates=true},title.prefixedText)ifarticle_classthen-- banner shell existslocalspecial_chars='([%%%(%)%.%+%-%*%?%[%]%^%$])'localbanner_name_escaped=banner_name.textlocalpage_content=require('Module:Wikitext Parsing').PrepareText(title:getContent())-- get content of current pagelocalcontent_without_shellforcaptureinmw.ustring.gmatch(page_content,'%b{}')do-- look for possible templates on pagefor_,redirectinipairs(cfg.banner_shell.redirects)doifmw.ustring.find(capture,'^{{%s*'..redirect..'%s*[|}].*}}$')then-- found a banner shellbanner_name_escaped=banner_name_escaped:gsub(special_chars,'%%%1')-- escape each special charactercapture=capture:gsub(special_chars,'%%%1')content_without_shell=mw.ustring.gsub(page_content,capture,'')-- remove banner shell content from page contentendifcontent_without_shellthenbreakendendifcontent_without_shellthenbreakendendlocaltemplate_outside_shellifcontent_without_shellandmw.ustring.find(content_without_shell,'{{%s*'..banner_name_escaped..'%s*[|}]')then-- found banner template outside of the shelladd_category(cfg.banner_shell.category.outside_shell)endelse-- no banner shell on pageifarticlethenadd_category(cfg.banner_shell.category.no_banner_shell_articles)elseiftitle.namespace==3then--User talk namespacefor_,userinipairs(cfg.banner_shell.valid_users)doifstring.find(title.rootText,user)thenadd_category(cfg.banner_shell.category.no_banner_shell)endendelseiftitle.namespace~=2then--User namespaceadd_category(cfg.banner_shell.category.no_banner_shell)endend----------------------------- Quality assessment --------------------------------localassessment_link=args.ASSESSMENT_LINKifnotassessment_linkthenlocalfallback=mw.title.new(project_link.prefixedText..'/دليل التقديرات')assessment_link=fallback.existsandfallback.prefixedTextelseifassessment_link=='no'thenassessment_link=nilendlocalfallback_suffix-- if this is non-nil, this is the suffix which must be used with the class check_fallbacks returned-- returns the most specific class for which the given category exists-- FM is unusual: FM > File > NA-- all other non-article classes: Category > NA, Redirect > NA, etc.-- performance note: this is expensive whenever BOTH article is false AND class is nonemptylocalcheck_fallbacks=function(class,category)fallback_suffix=nilifarticleorclass==''then-- no fallbacks for non-article classes or the absence of a classreturnclassend-- check fallbacks for non-article classeslocalnew_class=classlocalcategory_exists=function(class,new_suffix_style)localcat=mw.title.new(cfg.quality.assessment_category:format(class,category..' '..(new_suffix_styleand'صفحات'or'مقالات')))returncat.exists-- check if category existsendlocalclass_works=function(class)ifcategory_exists(class,true)then-- try preferred suffixfallback_suffix='صفحات'returntrueelseifcategory_exists(class,false)then-- fall back to old suffixfallback_suffix='مقالات'returntrueelsereturnfalseendendifclass=='FM'andnotclass_works('FM')andargs.QUALITY_CRITERIA~='custom'thennew_class='File'-- fall back to File-class if FM-class doesn't workendifnotclass_works(new_class)andargs.QUALITY_CRITERIA~='custom'thennew_class='NA'-- use NA for non-article pages if class doesn't workendreturnnew_classendlocalclass=raw_args.classifclassthen-- banner gives quality ratingsarticle_class=article_classandp.class_mask(article_class,title,false,pagetype,article)ifargs.QUALITY_CRITERIA=='custom'then-- project has opted out of standard assessment scale and uses a custom masklocalcustom_mask=banner_name:subPageTitle('class')ifcustom_mask.existsand#custom_mask:getContent()>1thenraw_args.demo_page=demo_page-- send demo_page to custom maskclass=mw.text.trim(frame:expandTemplate{title=custom_mask.prefixedText,args=raw_args})ifclass==''andarticle_classandarticle_class~=''then-- if unassessed and article class exists, check if it can be inheritedlocalnew_arg_table={}forarg,valinpairs(raw_args)do-- construct new argument table to send to custom masknew_arg_table[arg]=valendnew_arg_table.class=article_class-- replace class with inherited classlocalarticle_class_normalised=mw.text.trim(frame:expandTemplate{title=custom_mask.prefixedText,args=new_arg_table})ifarticle_class_normalisedandarticle_class_normalised~=''thenclass=article_class_normalised-- inherit class from article_class normalised by custom maskelsearticle_class=nil-- effectively no article_class for this bannerendendendelseclass=p.class_mask(class,title,true,pagetype,article)endlocalcheck_redundant=function()ifraw_args.class~=''andargs.QUALITY_CRITERIA~='custom'then-- banner has a non-blank class value which is ignoredadd_category(cfg.banner_shell.category.redundant_class)endendclass=check_fallbacks(class,assessment_cat)localshow=false-- hide quality class in project banner by defaultifarticle_classthen-- banner shell existsifclass==''then-- local class is blankclass=check_fallbacks(article_class,assessment_cat)-- check fallbacks again now that class may have changedcheck_redundant()elseifclass==article_classthen-- local class matches article class or is blankcheck_redundant()elseifarticle_class==''then-- local class defined and no article class definedadd_category(cfg.banner_shell.category.no_quality_rating)ifargs.QUALITY_CRITERIA~='custom'thenwarning=warning..display_error(cfg.banner_shell.piqa_warning)endelseifarticle_class=='FM'andargs.QUALITY_CRITERIA~='custom'thenclass=check_fallbacks(article_class,assessment_cat)-- TODO performance?check_redundant()elseifnotarticleandclass~='FM'then-- article class and local class are both non-article classescheck_redundant()elseifargs.QUALITY_CRITERIA=='custom'then-- project uses custom criteria and class differsshow=true-- show quality class in project bannerelse-- article class exists and differs from local classshow='conflict'add_category(class..cfg.banner_shell.conflict.category)endelse-- banner shell does not existshow=trueendlocalcategory=assessment_cat..' '..(class==''and'غير مقيمة'or'ذات صنف '..class)-- use "pages" for non-articles if the category exists: temporary transition codeiffallback_suffixthencategory=category..' '..fallback_suffixelseifnotarticleandmw.title.new('تصنيف:'..'صفحات '..category).existsthencategory='صفحات '..categoryelsecategory='مقالات '..categoryendifshowthen-- quality rating shown in bannerlocalratingifarticlethenrating=class==''andcfg.quality.not_yetorcfg.quality.rated:format(class)elserating=cfg.quality.not_requiredendlocalscale=args.QUALITY_CRITERIA=='custom'andassessment_linkandcfg.quality.project_scale:format(wikilink(assessment_link..'#'..lang:ucfirst(cfg.quality.name),cfg.quality.name))orcfg.quality.default_scalelocalquality_rating=show=='conflict'andcfg.banner_shell.conflict.textorcfg.quality.rating:format(rating,scale)localcssClass='class-'..(class==''and'unassessed'orclass:lower())localclass_row=mw.html.create('tr'):tag('td'):addClass('assess'):addClass(cssClass):addClass(show=='conflict'and'conflict'ornil):wikitext(wikilink(':Category:'..category,class==''and'???'orclass)):done():tag('td'):addClass('mbox-text'):attr('colspan','2'):wikitext(parse_pt(quality_rating)):done()table.insert(rows,class_row)table.insert(nested_ratings,1,bubble(class==''and'Unassessed'or(class..' ذات صنف'),show=='conflict',cssClass))endadd_category(category)endifargs.HOOK_ASSESSthentable.insert(rows,args.HOOK_ASSESS)endifraw_args.b1orraw_args.b2orraw_args.b3orraw_args.b4orraw_args.b5orraw_args.b6thenlocalb_checklist=require(auxiliary).b_checklist(args,raw_args,class,demo_page,assessment_link)table.insert(rows,b_checklist)end----------------------------- Importance assessment -----------------------------localimportance=importance_mask(raw_args.importanceorraw_args.priority,args.IMPORTANCE_SCALE,banner_name,pagetype,class)localimportance_name=args.IMPNor(raw_args.priorityand'priority'orcfg.importance.default_name)ifimportancethen-- banner gives importance ratingslocalcategory=assessment_cat..' '..importance..' '..importance_nameifimportance=='NA'andmw.title.new('تصنيف:'..'صفحات '..category).existsthencategory='صفحات '..categoryelsecategory='مقالات '..categoryendifimportance~='NA'then-- display importance ratinglocalrating=importance=='Unknown'andcfg.importance.not_yetorcfg.importance.rated:format(importance,importance_name)localscale_name=cfg.importance.scale:format(importance_name)localscale=assessment_linkandcfg.importance.project_scale:format(assessment_link..'#'..lang:ucfirst(scale_name),scale_name)orcfg.importance.default_scalelocalimportance_rating=parse_pt(cfg.importance.rating:format(rating,scale))localcssClass='import-'..importance:lower()localimportance_row=mw.html.create('tr'):tag('td'):addClass('assess'):addClass(cssClass):wikitext(wikilink(':Category:'..category,importance=='Unknown'and'???'orimportance)):done():tag('td'):addClass('mbox-text'):attr('colspan','2'):wikitext(importance_rating):done()table.insert(rows,importance_row)ifimportance~='Unknown'then-- importance is not NA or Unknowntable.insert(nested_ratings,bubble(importance..'‑'..importance_name,false,cssClass))endendadd_category(category)endpage_assessment(project,class,importance)ifargs.HOOK_IMPORTANCEthentable.insert(rows,args.HOOK_IMPORTANCE)endifargs.QII_FORMATthenadd_category(require(auxiliary).quality_importance_insection(args,class,importance,importance_name))end----------------------------- Collapsing sections -------------------------------localcollapse_section=function(collapse,new_rows,header)ifcollapsethenlocalheader_row=mw.html.create('tr'):tag('th'):attr('colspan','3'):addClass('wpb-collapsed-head'):wikitext(header):done()localblank_row=mw.html.create('tr'):tag('td'):addClass('mbox-image wpb-gutter'):css('min-width',image_left_size):tag('span'):addClass('wpb-iefix'):wikitext('/ '):done()--TO FIX IE:done():tag('td'):done():tag('td'):done()localcollapsed_rows=mw.html.create('table'):addClass('mw-collapsible mw-collapsed'):node(header_row):node(blank_row)for_,rowinipairs(new_rows)docollapsed_rows:node(row)endlocalcollapsed_section=mw.html.create('tr'):tag('td'):attr('colspan','3'):addClass('wpb-collapsed-notes'):node(collapsed_rows):done()table.insert(rows,collapsed_section)elsefor_,rowinipairs(new_rows)dotable.insert(rows,row)endendend----------------------------- Task forces ---------------------------------------localnested_tf,taskforce_output={},{}localtf_default_size=args.TF_SIZEorcfg.task_force.default_sizefor_,kinipairs(task_forces)dolocaltf_prefix='TF_'..k..'_'localtf_assessment_cat=assessment_category(args[tf_prefix..'ASSESSMENT_CAT'],args[tf_prefix..'NAME'])localtf_importance,tf_importance_categoryifraw_args['tf '..k..' importance']thentf_importance=importance_mask(raw_args['tf '..k..' importance'],args.IMPORTANCE_SCALE,banner_name,pagetype,class)iftf_importance=='Unknown'andyesno(args.INHERIT_IMPORTANCE)thentf_importance=importanceendtf_importance_category=tf_assessment_cat..' '..tf_importance..' '..importance_nameiftf_importance=='غير مقالية'andmw.title.new('Category:'..tf_importance_category..' صفحات').existsthentf_importance_category=tf_importance_category..' صفحات'-- use "pages" for non-articles if the category exists: temporary transition codeelsetf_importance_category='مقالات '..tf_importance_categoryendendifargs[tf_prefix..'TEXT']~='none'thenlocalportal=args[tf_prefix..'بوابة']andframe:expandTemplate{title='بوابة',args={args[tf_prefix..'بوابة'],height='15',margin='0'}}or''localtext=''localtf_text=args[tf_prefix..'TEXT']orargs.TF_TEXTiftf_textthentext=portal..tf_text:gsub('_NAME_',args[tf_prefix..'NAME']or''):gsub('_LINK_',args[tf_prefix..'LINK']or''):gsub('_IMPORTANCE_',tf_importanceor'')elselocaltf_importance_text=tf_importanceandtf_importance~='NA'andtf_importance~='Unknown'and' '..cfg.task_force.importance:format(wikilink(':Category:'..tf_importance_category,tf_importance..' '..importance_name))or''text=portal..cfg.task_force.text:format(wikilink(args[tf_prefix..'LINK'],args[tf_prefix..'NAME']),tf_importance_text)endlocaltf_size=args[tf_prefix..'SIZE']ortf_default_sizelocaltf_image=''ifargs[tf_prefix..'IMAGE']thentf_image=image(args[tf_prefix..'IMAGE'],tf_size,cfg.task_force.icon_alt,'center')endlocaltaskforce=mw.html.create('tr'):tag('td'):wikitext(tf_image):done():tag('td'):addClass('mbox-text'):attr('colspan','2'):wikitext(parse_pt(text)):done()table.insert(taskforce_output,taskforce)endifargs[tf_prefix..'HOOK']thentable.insert(taskforce_output,args[tf_prefix..'HOOK'])endifyesno(args[tf_prefix..'QUALITY'])andclassthenlocaltf_class=check_fallbacks(class,tf_assessment_cat)localcategory=(tf_class==''and'Unassessed'ortf_class..' ذات صنف')..' '..tf_assessment_cat-- use "pages" for non-articles if the category exists: temporary transition codeiffallback_suffixthencategory=category..' '..fallback_suffixelseifnotarticleandmw.title.new('Category:'..category..' صفحات').existsthencategory=category..' صفحات'elsecategory=category..' مقالات'endadd_category(category)endiftf_importancethenadd_category(tf_importance_category)endifargs[tf_prefix..'QII_FORMAT']thenadd_category(require(auxiliary).quality_importance_insection(args,class,tf_importance,importance_name,tf_prefix))endifargs[tf_prefix..'NAME']thenpage_assessment(project..'/'..args[tf_prefix..'NAME'],class,tf_importance)endifargs[tf_prefix..'MAIN_CAT']thenadd_category(args[tf_prefix..'MAIN_CAT'])endifargs[tf_prefix..'NESTED']thentable.insert(nested_tf,wikilink(args[tf_prefix..'LINK'],args[tf_prefix..'NESTED']))endfor_,cinipairs(taskforce_categories[k]or{})do-- add additional taskforce categoriesadd_category(args[tf_prefix..'CAT_'..c])endendifargs.HOOK_TFthentable.insert(taskforce_output,args.HOOK_TF)endlocalthreshold=tonumber(args.TF_COLLAPSE)or(args.TF_HEADERandcfg.task_force.lower_threshold)orcfg.task_force.upper_thresholdcollapse_section(#taskforce_output>threshold,taskforce_output,args.TF_HEADERorcfg.task_force.header)----------------------------- Notes ---------------------------------------------localnote_output={}localnote_default_size=args.NOTE_SIZEorargs.NOTE_1_SIZEorcfg.note.default_sizelocalrender_note=function(note_args)--text, image_name, size, category, sort_prefixlocalsort=note_args.sort_prefixandnote_args.sort_prefix..current_title.textadd_category(note_args.category,sort)add_category(note_args.category2,sort)ifnote_args.textthenlocalnote_image=image(note_args.image_name,note_args.sizeornote_default_size,cfg.note.icon_alt,'center')localnew_note=mw.html.create('tr'):tag('td'):css('background',note_args.background):wikitext(note_image):done():tag('td'):addClass('mbox-text'):attr('colspan','2'):wikitext(parse_pt(note_args.text)):done()table.insert(note_output,new_note)ifnote_imagethenlocalicon=mw.html.create('span'):addClass('wpb-header-bubbles'):wikitext('[[File:'..note_args.image_name..'|'..cfg.note.header_icon..'|'..parse_pt(note_args.text)..'|link=|alt=]]')table.insert(nested_ratings,tostring(icon))endendendlocalauto=falselocalauto_arg=args.autoandargs.auto:lower()if(auto_arg=='yes'orauto_arg=='stub')andclass=='Stub'thenauto='stub'elseif(auto_arg=='inherit'orauto_arg=='length')andclassandclass~=''thenauto=auto_argendifautothenlocalauto_cat=args.AUTO_ASSESS_CATorcfg.auto.default_cat:format(project)localauto_text=cfg.auto.assessed:format(cfg.auto[auto],-- method of automatic assessmentparameter_format('auto'))localsort_prefixifauto=='stub'thensort_prefix='S'elseifauto=='length'thensort_prefix='L'elseifauto=='inherit'thenlocalsort_codes=cfg.auto.sort_codessort_prefix=sort_codes[class]orcfg.auto.default_sort_codeendrender_note{text=auto_text,image_name=cfg.auto.icon,category=auto_cat,sort_prefix=sort_prefix}endifyesno(args.attention,true)thenlocalattention_cat=args.ATTENTION_CATorcfg.attention.default_cat:format(project)render_note{text=cfg.attention.text,image_name=cfg.attention.icon,category=attention_cat}endifyesno(args.infobox,true)thenlocalinfobox_cat=args.INFOBOX_CATorcfg.infobox.default_cat:format(project)render_note{text=cfg.infobox.text,image_name=cfg.infobox.icon,category=infobox_cat}endfor_,kinipairs(notes)dolocalnote_prefix='NOTE_'..k..'_'render_note{text=parse_pt(args[note_prefix..'TEXT']),image_name=args[note_prefix..'IMAGE'],size=args[note_prefix..'SIZE'],category=args[note_prefix..'CAT']}endifyesno(args['image-needed'],true)thenlocalimage_needed_args=require(auxiliary).image_needed(args)render_note(image_needed_args)endifyesno(args['collaboration-candidate'],true)oryesno(args['collaboration-current'],true)oryesno(args['collaboration-past'],true)thenlocalcollaboration_args=require(auxiliary).collaboration(args,current_title)render_note(collaboration_args.candidate)render_note(collaboration_args.current)render_note(collaboration_args.past)endifyesno(args['a class'],true)thenlocala_class_args=require(auxiliary).a_class(args,lang)render_note(a_class_args)endifyesno(args['peer review'],true)oryesno(args['old peer review'],true)thenlocalpeer_review_args=require(auxiliary).peer_review(args,current_title)render_note(peer_review_args.current)render_note(peer_review_args.past)endlocalnote_count=#note_outputifargs.HOOK_NOTEthentable.insert(note_output,args.HOOK_NOTE)localhook_collapsed=0ifargs.HOOK_COLLAPSEDthenlocalsuccess,result=pcall(mw.ext.ParserFunctions.expr,args.HOOK_COLLAPSED)hook_collapsed=successandtonumber(result)or0ifargs.HOOK_COLLAPSED=='auto'thenhook_collapsed=1endendnote_count=note_count+hook_collapsedendcollapse_section(note_count>(tonumber(args.COLLAPSED)orcfg.note.threshold),note_output,args.COLLAPSED_HEADorcfg.note.header)----------------------------- Bottom text ---------------------------------------ifargs.HOOK_BOTTOMthentable.insert(rows,args.HOOK_BOTTOM)endifargs.TODO_LINKorargs.TODO_TEXTthenlocaltodolist=require(auxiliary).todo_list(args,frame)table.insert(rows,todolist)endifargs.BOTTOM_TEXTthenlocalbottom_text=mw.html.create('tr'):tag('td'):attr('colspan','3'):wikitext(parse_pt(args.BOTTOM_TEXT)):done()table.insert(rows,bottom_text)endifargs.MAIN_CATthenadd_category(args.MAIN_CAT)end----------------------------- Nested display ------------------------------------ifargs.HOOK_NESTEDthenlocalhook_nested=args.HOOK_NESTED:gsub('^ / ','')-- remove initial slash, will be added latertable.insert(nested_tf,hook_nested)endlocalnested_tf_str=''if#nested_tf>0thennested_tf_str=tostring(mw.html.create('span'):addClass('wpb-nested-task-force'):wikitext(': '..table.concat(nested_tf,' / ')))endlocalnested_ratings_str=#nested_ratings>0andtable.concat(nested_ratings,' ')or''ifargs.HOOK_NESTED_ASSESSthennested_ratings_str=nested_ratings_str..tostring(mw.html.create('span'):addClass('wpb-header-bubbles'):wikitext(args.HOOK_NESTED_ASSESS))endlocalheader_row=mw.html.create('tr'):addClass('wpb-header'):tag('td'):addClass('wpb-header-icon'):wikitext(image(args.IMAGE_LEFT,cfg.image.header_size,cfg.image.alt)):done():tag('td'):addClass('wpb-header-combined'):wikitext(wikilink(project_link.prefixedText,project)..nested_tf_str..' '..nested_ratings_str):done()----------------------------- Default sort --------------------------------------ifargs.listasthenframe:preprocess('{{DEFAULTSORT:'..args.listas..'}}')iftitle.namespace~=3then-- exclude user talk namespacelocalsuccess,shell_listas_value=require('Module:Template parameter value').getParameter(title.prefixedText,cfg.banner_shell.redirects,'listas',{ignore_subtemplates=true,ignore_blank=true})ifsuccessandshell_listas_value~=''thenifargs.listas==shell_listas_valuethen-- same value in both (with spacing trimming)add_category(cfg.banner_shell.category.redundant_listas)endelse-- listas is blank or not defined in banner shelladd_category(cfg.banner_shell.category.move_listas)endendend----------------------------- Prepare categories --------------------------------localcategories_formatted=''ifdemo_pageanddemo_page~=truethen-- for testing purposeslocalcategory_list=mw.html.create('ul')for_,catinipairs(categories)dolocalitem=mw.html.create('li'):wikitext(wikilink(':Category:'..cat.category,cat.category))category_list:node(item)endlocalcategory_box=mw.html.create('div'):addClass('wpb-category-box'):wikitext('Categories:'):node(category_list)categories_formatted=tostring(category_box)elseifnotdemo_pagethenlocalcategories_linked={}for_,catinipairs(categories)dolocalcat_link=wikilink('Category:'..cat.category,cat.key)table.insert(categories_linked,cat_link)endcategories_formatted=table.concat(categories_linked)end----------------------------- Make banner ---------------------------------------localbanner_rows=mw.html.create('table')for_,rowinipairs(rows)dobanner_rows:node(row)endlocalbanner=mw.html.create('table'):addClass('tmbox tmbox-notice mw-collapsible innercollapse wpb wpb-table'):addClass(inactiveandcfg.inactive.classornil):node(header_row):tag('tr'):tag('td'):addClass('mbox-text wpb-main'):attr('colspan','2'):node(banner_rows):allDone()localtstyle=frame:extensionTag('templatestyles','',{src='Module:Message box/tmbox.css'})..frame:extensionTag('templatestyles','',{src='Module:WikiProject banner'..(sandboxor'')..'/styles.css'})returnwarning..tstyle..tostring(banner)..categories_formatted,note_count,#taskforce_output,assessment_linkendlocalinitialise=function(args,raw_args,inactive_status)----------------------------- Initialise arguments ------------------------------localparent_args=args_module.getArgs(frame,{parentOnly=true})localcategory=parent_args.categoryorargs.categoryortruelocaldemo_page=parent_args.demo_pagelocalon_template_page=falselocalbanner_name=mw.title.new(args.BANNER_NAMEor'قالب:مشروع ويكي '..(args.PROJECTor'PROJECT'))ifnotdemo_pagethenifyesno(category,true)thenon_template_page=current_title.rootPageTitle==banner_name.rootPageTitleelsedemo_page=trueendendlocalproject_name=args.PROJECT_NAMEor'مشروع ويكي '..(args.PROJECTor'PROJECT')localunknown_parameters=''ifbanner_name.existsandnotdemo_pagethen-- check for unknown parameterslocalparameters={}forparameterinbanner_name:getContent():gmatch('{{{([^|}]+)')dotable.insert(parameters,parameter)endlocalcheck_for_unknown=require('Module:Check for unknown parameters')._checklocalunknowns=check_for_unknown(parameters,parent_args)ifunknownsandunknowns~=''then-- there are some unknown parametersparameters.preview=cfg.unknown_parameters.preview:format(wikilink(banner_name.fullText))localunknown_category=cfg.unknown_parameters.tracking:format(project_name)ifnotmw.title.new(unknown_category).existsthenunknown_category=cfg.unknown_parameters.defaultendparameters.unknown=unknown_categoryand'[['..unknown_category..'|_VALUE_]]'or''unknown_parameters=check_for_unknown(parameters,parent_args)endendifon_template_pagethenlocaltemplatepage=require('Module:WikiProject banner/templatepage'..(sandboxor'')).templatepagereturntemplatepage(args,raw_args,inactive_status)elsereturnunknown_parameters..p._main(args,raw_args,demo_page,banner_name,inactive_statusandtrueorfalse),nil-- nil to disregard subsequent returned valuesendendp.main=function(frame)localargs=args_module.getArgs(frame,{frameOnly=true})localraw_args=args_module.getArgs(frame,{frameOnly=true,removeBlanks=false})returninitialise(args,raw_args)end----------------------------- Inactive projects ---------------------------------p.inactive=function(frame)localargs=args_module.getArgs(frame,{frameOnly=true})localproject_name=args.PROJECT_NAMEor'مشروع ويكي '..(args.PROJECTor'PROJECT')localproject_link=mw.title.new(args.PROJECT_LINKor'ويكيبيديا:'..project_name)local_status=cfg.inactive.status[args.PROJECT_STATUS]orcfg.inactive.defaultlocalmain_text=cfg.inactive.text:format(project_link.prefixedText,project_name,_status)returninitialise({PROJECT=args.PROJECT,BANNER_NAME=args.BANNER_NAME,IMAGE_LEFT=cfg.inactive.image,IMAGE_LEFT_SIZE=cfg.inactive.image_size,MAIN_TEXT=main_text,HOOK_NESTED_ASSESS=' '..cfg.inactive.nested:format(_status),substcheck=args.substcheck,category=args.category},{substcheck=''-- to prevent warning on templatepage},_status)endreturnp