ويكي الجامعة
arwikiversity
https://ar.wikiversity.org/wiki/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9
MediaWiki 1.47.0-wmf.2
first-letter
ميديا
خاص
نقاش
مستخدم
نقاش المستخدم
ويكي الجامعة
نقاش ويكي الجامعة
ملف
نقاش الملف
ميدياويكي
نقاش ميدياويكي
قالب
نقاش القالب
مساعدة
نقاش المساعدة
تصنيف
نقاش التصنيف
مدرسة
نقاش المدرسة
بوابة
نقاش البوابة
موضوع
نقاش الموضوع
مجموعة
نقاش المجموعة
TimedText
TimedText talk
وحدة
نقاش الوحدة
فعالية
نقاش فعالية
موضوع
قالب:صندوق رسالة مقالة/شرح
10
2837
146109
23311
2026-05-17T23:42:42Z
Mdktb
13023
نقل Mdktb صفحة [[قالب:صندوق رم/شرح]] إلى [[قالب:صندوق رسالة مقالة/شرح]]: استكمال دمج تاريخ
23311
wikitext
text/x-wiki
{{صفحة توثيق فرعية}}
صفحة مساعدة لاستعمال القالب.
== كيفية الاستعمال ==
=== استعمال بسيط ===
<pre>
{{صندوق رم | نص = هذا النص للعرض.}}
</pre>
{{صندوق رم | نص = هذا النص للعرض.}}
=== استعمال متقدم ===
<pre>
{{صندوق رم
| نوع = طراز
| صورة = [[ملف:Icon apps query.svg|38px]]
| طراز = width: 400px; color: red;
| عنوان = هذا عنوان.
| نص = هذا النص للعرض.
}}
</pre>
{{صندوق رم
| نوع = طراز
| صورة = [[ملف:Icon apps query.svg|38px]]
| طراز = width: 400px; color: red
| عنوان = هذا عنوان.
| نص = هذا النص للعرض.
}}
=== صور جاهزة ===
{{صندوق رم
| نوع = مهم
| نص = نوع=<u>مهم</u> – Deletion issues, such as {{tl|afd}} and {{tl|prod}}.
}}
{{صندوق رم
| نوع = محتوى
| نص = نوع=<u>محتوى</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}.
}}
{{صندوق رم
| نوع = طراز
| نص = نوع=<u>طراز</u> – Style issues, such as {{tl|cleanup}} and {{tl|wikify}}.
}}
{{صندوق رم
| نوع = دمج
| نص = نوع=<u>دمج</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|نقل إلى ويكاموس}}.
}}
{{صندوق رم
| نوع = تذكير
| نص = نوع=<u>تذكير</u> – Article notices, such as {{tl|current}} and {{tl|inuse}}.
}}
<noinclude>
[[تصنيف:قوالب صيانة ويكي الجامعة|{{PAGENAME}}]]<noinclude
</noinclude>
8ydm25y1xff197oq2ymr995piog9xsm
146112
146109
2026-05-18T00:28:38Z
Mdktb
13023
استبدلات سريعة
146112
wikitext
text/x-wiki
{{صفحة توثيق فرعية}}
صفحة مساعدة لاستعمال القالب.
== كيفية الاستعمال ==
=== استعمال بسيط ===
<pre>{{صندوق رسالة مقالة|النص = هذا النص للعرض.}}</pre>
{{صندوق رسالة مقالة|النص = هذا النص للعرض.}}
=== استعمال متقدم ===
<pre>
{{صندوق رسالة مقالة
| النوع = طراز
| الصورة = [[ملف:Icon apps query.svg|38px]]
| الطراز = width: 400px; color: red;
| النص = هذا النص للعرض.
}}
</pre>
{{صندوق رسالة مقالة
| النوع = طراز
| الصورة = [[ملف:Icon apps query.svg|38px]]
| الطراز = width: 400px; color: red
| النص = هذا النص للعرض.
}}
=== أمثلة جاهزة ===
{{صندوق رسالة مقالة
| النوع = مهم
| النص = النوع=<u>مهم</u> – Deletion issues, such as {{tl|afd}} and {{tl|prod}}.
}}
{{صندوق رسالة مقالة
| النوع = محتوى
| النص = النوع=<u>محتوى</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}.
}}
{{صندوق رسالة مقالة
| النوع = طراز
| النص = النوع=<u>طراز</u> – Style issues, such as {{tl|cleanup}} and {{tl|wikify}}.
}}
{{صندوق رسالة مقالة
| النوع = دمج
| النص = النوع=<u>دمج</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|نقل إلى ويكاموس}}.
}}
{{صندوق رسالة مقالة
| النوع = تذكير
| النص = النوع=<u>تذكير</u> – Article notices, such as {{tl|current}} and {{tl|inuse}}.
}}
<noinclude>
[[تصنيف:قوالب صيانة ويكي الجامعة|{{PAGENAME}}]]<noinclude
</noinclude>
9vnt0ky7vw2b0kmuxvuhtynyk140c8b
ميدياويكي:Common.css
8
2893
146111
146084
2026-05-18T00:17:36Z
Mdktb
13023
تنسيق غير مبرر لـ class لها دور مختلف
146111
css
text/css
/* دعم تقسيم الشاشات الكبيرة
للبوابات، تمت الإضافة يوم 2011-12-07 -bv
على الشاشات العريضة يتم العرض وفق عمودين
على الشاشات الضيقة وشاشات الهاتف المحمول، تنطوي في عمود واحد */
.portal-column-left {
float: left;
width: 50%;
}
.portal-column-right {
float: right;
width: 49%;
}
.portal-column-left-wide {
float: left;
width: 60%;
}
.portal-column-right-narrow {
float: right;
width: 39%;
}
.portal-column-left-extra-wide {
float: left;
width: 70%;
}
.portal-column-right-extra-narrow {
float: right;
width: 29%;
}
@media only screen and (max-width: 800px) {
/* فصل الأعمدة على الشاشات الضيقة */
.portal-column-left,
.portal-column-right,
.portal-column-left-wide,
.portal-column-right-narrow,
.portal-column-left-extra-wide,
.portal-column-right-extra-narrow {
float: inherit;
width: inherit;
}
}
/* <pre dir="ltr"> */
div#editpage-specialchars a {
text-decoration: none;
}
div#editpage-specialchars a:hover {
text-decoration: underline;
}
/* */
.usermessage {
vertical-align: middle;
}
/* */
p.error {
font-weight: bold;
}
/* */
span#URLSource {
direction: ltr;
font-size: 1.2em;
font-weight: bold;
}
/* */
span#edit-for-sysops {
display: none;
}
/* */
div.sharedUploadNotice {
font-style: normal;
}
/* */
div#shared-image-desc {
direction: ltr;
}
/* */
input#wpUploadFile, input#wpDestFile, input#wpLicense {
float: right;
}
/* default skin for navigation boxes */
table.navbox {
/* background-color: #f9f9f9; */
border: 1px solid #aaa;
clear: both;
font-size: 90%;
margin: 1em 0em 0em;
padding: 2px;
text-align: center;
width: 100%;
}
table.navbox th {
background-color: #ccf;
padding-left: 1em;
padding-right: 1em;
}
table.navbox tr:not(:first-child) th {
background-color: #ddf;
}
@media print {
.navbox {
display: none;
}
}
/* ־Site Notice */
div#siteNotice {
padding-top: 5px;
text-align: center;
}
/* */
div.Boxmerge, div.NavFrame {
border-collapse: collapse;
border-color: #AAAAAA;
border-style: solid;
border-width: 1px;
font-size: 95%;
margin: 0px;
padding: 2px;
text-align: center;
}
div.Boxmerge div.NavFrame {
border-style: none;
border-style: hidden;
}
div.NavFrame + div.NavFrame {
border-top-style: none;
border-top-style: hidden;
}
div.NavPic {
background-color: #FFFFFF;
float: left;
margin: 0px;
margin-top: 0.5em;
padding: 2px;
}
div.NavFrame div.NavHead {
background-color: #EFEFEF;
font-size: 100%;
font-weight: bold;
height: 1.6em;
position: relative;
}
div.NavFrame p {
font-size: 100%;
}
div.NavFrame div.NavContent {
font-size: 100%;
}
div.NavFrame div.NavContent p {
font-size: 100%;
}
div.NavEnd {
clear: both;
line-height: 1px;
margin: 0px;
padding: 0px;
}
a.NavToggle {
font-size: smaller;
font-weight: normal;
left: 3px;
position: absolute;
top: 0px;
}
/*
div#content ul {
display: table;
body.ns-6 div#content ul#filetoc,
body.ns-14 div#content ul {
display: block;
}*/
html > body div#content ol {
clear: left;
}
body {
letter-spacing: 0.001em;
}
/* حل مشكلة عدم إمكانية الضغط على التصنيفات التي تحوي عددا في إنترنت إكسبلورر 6.0 */
* html div#catlinks {
position: static;
}
/* */
@media print {
/* */
.printfooter {
display: none;
}
}
.audiolink a {
background: url("//upload.wikimedia.org/wikiversity/commons/f/f7/Loudspeaker.png") center right no-repeat !important;
padding-left: 16px !important;
padding-right: 0 !important;
}
html > body .audiolink a {
background: none !important;
padding-left: 0 !important;
}
/* wikitable/prettytable class for skinning normal tables */
table.wikitable, table.prettytable {
margin: 1em 0 1em 1em;
background-color: #F9F9F9;
border: 1px #aaaaaa solid;
border-collapse: collapse;
}
table.wikitable th, table.wikitable td, table.prettytable th, table.prettytable td {
border: 1px #aaaaaa solid;
padding: 0.2em;
}
table.wikitable th, table.prettytable th {
background-color: #F2F2F2;
text-align: center;
}
table.wikitable caption, table.prettytable caption {
margin-left: inherit;
margin-right: inherit;
}
/* hiddenStructure from Monobook - allows selective hiding of markup in templates */
.hiddenStructure {
display: none;
speak: none;
}
/* كلاسات لقوالب النقاش */
.messagebox {
border: 1px solid #aaaaaa;
background-color: #f9f9f9;
width: 80%;
margin: 0 auto 1em auto;
padding: .2em;
text-align: justify;
}
.messagebox.merge {
border: 1px solid #cf9fff;
background-color: #f5edf5;
text-align: center;
}
.messagebox.cleanup {
border: 1px solid #9f9fff;
background-color: #efefff;
text-align: center;
}
.messagebox.standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
}
.messagebox.small-talk {
width: 238px;
font-size: 85%;
float: left;
clear: both;
margin: 0 0 1em 1em;
line-height: 1.25em;
background: #F8EABA;
}
.infobox.sisterproject {
width: 20em;
font-size: 90%;
}
/**
* Logo properties with modified height value to meet the actual logo hieght, 165px.
*/
#p-logo {
height: 165px;
}
#p-logo a,
#p-logo a:hover {
height: 165px;
}
/* لإظهار ماإذا كانت خلفية أي صورة شفافة */
#file img {
background: url("//upload.wikimedia.org/wikiversity/commons/5/5d/Checker-16x16.png") repeat;
}
/* كلاسات للاستخدام مع المصادر */
ol.references {
font-size: 100%;
}
.references-small {
font-size: 90%;
}
ol.references > li:target {
background-color: #DEF;
}
sup.reference:target {
background-color: #DEF;
}
/* كلاس لخلفية شفافة */
.same-bg {
background: none;
}
/* إخفاء عنوان الصفحة الرئيسية وأدوات متعلقة */
body.page-الصفحة_الرئيسية .firstHeading,
body.page-الصفحة_الرئيسية #catlinks,
body.page-الصفحة_الرئيسية #ca-delete,
body.page-الصفحة_الرئيسية #deleteconfirm,
body.page-الصفحة_الرئيسية #t-cite,
body.page-الصفحة_الرئيسية #lastmod,
body.page-الصفحة_الرئيسية #ca-move,
body.page-الصفحة_الرئيسية #siteSub,
body.page-الصفحة_الرئيسية #contentSub {
display: none;
}
.infobox_v2 { /* monobookocentré debut */
background: #f9f9f9;
color: #000;
font-size: 90%;
line-height: 1.1em;
float: left;
clear: left;
margin: 0 1em 1em 0; /* haut droite bas gauche */
width: 300px;
border: 1px solid #aaa;
padding: 0.1em;
}
.infobox_v2 th {
vertical-align: top;
text-align: left;
}
.infobox_v2 .entete {
height: 45px;
vertical-align: middle;
text-align: center;
font-size: 150%;
font-weight: bolder;
line-height: 1.2em;
color: #000
}
.infobox_v2 .media { /* css V2 لأجل [[قالب:Son]], [[قالب:Vidéo]], etc. */
height: 35px;
vertical-align: middle;
text-align: center;
font-weight: bolder;
color: #000
}
/* رسومات صندوق المعلومات 2 */
.entete.defaut {}
.entete.bd {
background: url("//upload.wikimedia.org/wikiversity/commons/2/2c/Picto_infobox_comicballoon.png") no-repeat top right;
}
.entete.biere {
background: url("//upload.wikimedia.org/wikiversity/commons/0/04/Picto_infobox_beer.png") no-repeat top right;
}
.entete.canada {
background: url("//upload.wikimedia.org/wikiversity/commons/6/6a/Picto_infobox_Canada.png") no-repeat top right;
}
.entete.cinema {
background: url("//upload.wikimedia.org/wikiversity/commons/e/ea/Picto_infobox_cinema.png") no-repeat top right;
}
.entete.communication {
background: url("//upload.wikimedia.org/wikiversity/commons/a/a2/Picto_infobox_antenna.png") no-repeat top right;
}
.entete.humain {
background: url("//upload.wikimedia.org/wikiversity/commons/8/82/Picto_infobox_manwoman.png") no-repeat top right;
}
.entete.jeuvideo {
background: url("//upload.wikimedia.org/wikiversity/commons/2/2d/Picto_infobox_gamepad.png") no-repeat bottom right;
}
.entete.map {
background: url("//upload.wikimedia.org/wikiversity/commons/7/7a/Picto_infobox_map.png") no-repeat top right;
}
.entete.musique {
background: url("//upload.wikimedia.org/wikiversity/commons/6/60/Picto_infobox_music.png") no-repeat top right;
}
.entete.persofiction {
background: url("//upload.wikimedia.org/wikiversity/commons/3/37/Picto_infobox_masks.png") no-repeat top right;
}
.entete.quebec {
background: url("//upload.wikimedia.org/wikiversity/commons/2/21/Picto_infobox_Quebec.png") no-repeat top right;
}
.entete.sport {
background: url("//upload.wikimedia.org/wikiversity/commons/8/8e/Picto_infobox_Olympic.png") no-repeat top right;
}
.media.audio {
background: url("//upload.wikimedia.org/wikiversity/commons/thumb/a/a6/Gnome-speakernotes.png/35px-Gnome-speakernotes.png") no-repeat top left;
}
.media.video {
background: url("//upload.wikimedia.org/wikiversity/en/thumb/2/20/Tango-video-x-generic.png/35px-Tango-video-x-generic.png") no-repeat top left;
}
.entete.science-fiction {
background: url("//upload.wikimedia.org/wikiversity/commons/e/ed/Picto_infobox_fliyingsaucer.png") no-repeat top right;
}
.entete.theatre {
background: url("//upload.wikimedia.org/wikiversity/commons/3/37/Picto_infobox_masks.png") no-repeat top right;
}
.entete.auteur {
background: url("//upload.wikimedia.org/wikiversity/commons/1/1e/Picto_infobox_auteur.png") no-repeat top right;
}
/* نهاية صندوق المعلومات 2*/ /* monobookocentré fin */
/* رسوم الصفحة الرئيسية */
@media print {
#privacy, #about, #disclaimer {
display: none;
}
}
/* كلاس لقوالب التوضيح. انظر مثلا [[قالب:رئيسي]] ، [[قالب:رسالة توضيح]] */
.dablink {
font-style: italic;
padding-right: 2em;
}
.allpagesredirect {
font-style: italic;
}
/* Article message box styles */
table.ambox {
margin: 0px 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #aaa;
border-right: 10px solid #1e90ff; /* Default "notice" blue */
background: #fbfbfb;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
table.ambox th.ambox-text, table.ambox td.ambox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
width: 100%; /* Make all templates the same width regardless of text size */
}
table.ambox td.ambox-image { /* The right image cell */
padding: 2px 0px 2px 0.5em; /* 0.5em left, 0px right */
text-align: center;
}
table.ambox td.ambox-imageright { /* The right image cell */
padding: 2px 4px 2px 0px; /* 0px left, 4px right */
text-align: center;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
border-right: 10px solid #1e90ff; /* Blue */
}
table.ambox-speedy {
border-right: 10px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.ambox-delete {
border-right: 10px solid #b22222; /* Red */
}
table.ambox-content {
border-right: 10px solid #f28500; /* Orange */
}
table.ambox-style {
border-right: 10px solid #f4c430; /* Yellow */
}
table.ambox-move {
border-right: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
border-right: 10px solid #bba; /* Gray-gold */
}
table.ambox-serious {
border-color: #b22222; /* Red */
}
table.ambox-merge {
border-color: #9932cc; /* Purple */
}
table.ambox.ambox-mini { /* small floating box variant */
float: right;
clear: right;
margin: 0 0 0 1em;
width: 25%;
}
/* Image message box styles */
table.imbox {
margin: 4px 10%;
border-collapse: collapse;
border: 3px solid #1e90ff; /* Default "notice" blue */
background: #fbfbfb;
}
.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */
margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */
}
.mbox-inside .imbox { /* For imboxes inside other templates. */
margin: 4px;
}
table.imbox-notice {
border: 3px solid #1e90ff; /* Blue */
}
table.imbox-speedy {
border: 3px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.imbox-delete {
border: 3px solid #b22222; /* Red */
}
table.imbox-content {
border: 3px solid #f28500; /* Orange */
}
table.imbox-style {
border: 3px solid #f4c430; /* Yellow */
}
table.imbox-move {
border: 3px solid #9932cc; /* Purple */
}
table.imbox-protection {
border: 3px solid #bba; /* Gray-gold */
}
table.imbox-license {
border: 3px solid #88a; /* Dark gray */
background: #f7f8ff; /* Light gray */
}
table.imbox-featured {
border: 3px solid #cba135; /* Brown-gold */
}
/* Category message box styles */
table.cmbox {
margin: 3px 10%;
border-collapse: collapse;
border: 1px solid #aaa;
background: #DFE8FF; /* Default "notice" blue */
}
table.cmbox-notice {
background: #D8E8FF; /* Blue */
}
table.cmbox-speedy {
margin-top: 4px;
margin-bottom: 4px;
border: 4px solid #b22222; /* Red */
background: #FFDBDB; /* Pink */
}
table.cmbox-delete {
background: #FFDBDB; /* Red */
}
table.cmbox-content {
background: #FFE7CE; /* Orange */
}
table.cmbox-style {
background: #FFF9DB; /* Yellow */
}
table.cmbox-move {
background: #E4D8FF; /* Purple */
}
table.cmbox-protection {
background: #EFEFE1; /* Gray-gold */
}
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #aaa; /* Default "notice" gray */
background: #f9f9f9;
}
table.ombox-notice {
border: 1px solid #aaa; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.ombox-delete {
border: 2px solid #b22222; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #f4c430; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #bba; /* Gray-gold */
}
/* Talk page message box styles */
table.tmbox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background: #f8eaba;
}
/* For tmboxes inside other templates. The "mediawiki" class ensures that this
declaration overrides other styles (including mbox-small above) */
.mediawiki .mbox-inside .tmbox {
margin: 2px 0;
width: 100%; /* For Safari and Opera */
}
/* "small" tmboxes should not be small when also "nested", so reset styles that
are set in "mbox-small" above. */
.mbox-inside .tmbox.mbox-small {
line-height: 1.5em;
font-size: 100%;
}
table.tmbox-speedy {
border: 2px solid #b22222; /* Red */
background: #fee; /* Pink */
}
table.tmbox-delete {
border: 2px solid #b22222; /* Red */
}
table.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
table.tmbox-style {
border: 2px solid #f4c430; /* Yellow */
}
table.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
table.tmbox-protection,
table.tmbox-notice {
border: 1px solid #c0c090; /* Gray-brown */
}
/* Disambig and set index box styles */
table.dmbox {
clear: both;
margin: 0.9em 1em;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
background: transparent;
}
/* Footer and header message box styles */
table.fmbox {
clear: both;
margin: 0.2em 0;
width: 100%;
border: 1px solid #aaa;
background: #f9f9f9; /* Default "system" gray */
}
table.fmbox-system {
background: #f9f9f9;
}
table.fmbox-warning {
border: 1px solid #bb7070; /* Dark pink */
background: #ffdbdb; /* Pink */
}
table.fmbox-editnotice {
background: transparent;
}
/* Div based "warning" style fmbox messages. */
div.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background: #ffdbdb;
padding: 0.25em 0.9em;
}
/* Div based "system" style fmbox messages. Used in
[[MediaWiki:Noarticletext]] and [[MediaWiki:Readonly lag]]. */
div.mw-lag-warn-normal,
div.noarticletext,
div.fmbox-system {
clear: both;
margin: 0.2em 0;
border: 1px solid #aaa;
background: #f9f9f9;
padding: 0.25em 0.9em;
}
/* article, talk, help, picture, portal, userpage, category */
body.ns-0 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Quill-Nuvola.svg/25px-Quill-Nuvola.svg.png) right no-repeat;
}
body.ns-1 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikipedia/commons/thumb/a/af/Crystal_kate_green.png/25px-Crystal_kate_green.png) right no-repeat;
}
body.ns-12 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikipedia/commons/thumb/4/44/Help-browser.svg/25px-Help-browser.svg.pngg) right no-repeat;
}
body.ns-6 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikiversity/ar/3/3f/25px-Crystal_128_kview.png) right no-repeat;
}
body.ns-100 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikiversity/ar/c/c8/25px-Portal_svg.png) right no-repeat;
}
body.ns-2 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikiversity/ar/c/c3/25px-Crystal_personal.png) right no-repeat;
}
body.ns-14 h1.firstHeading {
padding-right: 28px;
background: url(//upload.wikimedia.org/wikiversity/ar/1/11/25px-Folder-blue-2_0_svg.png) right no-repeat;
}
html > body div#bodyContent ol {
display: block;
}
/* default skin for navigation boxes */
table.navbox { /* navbox container style */
border: 1px solid #aaa;
width: 100%;
margin: auto;
clear: both;
font-size: 88%;
text-align: center;
padding: 1px;
}
table.navbox + table.navbox {
margin-top: -1px; /* single pixel border between adjacent navboxes (doesn't work for IE6, but that's okay) */
}
.navbox-title, .navbox-abovebelow, table.navbox th {
text-align: center; /* title and above/below styles */
padding-left: 1em;
padding-right: 1em;
}
.navbox-group { /* group style */
white-space: nowrap;
text-align: left;
font-weight: bold;
padding-left: 1em;
padding-right: 1em;
}
.navbox, .navbox-subgroup {
background: #fdfdfd; /* Background color */
}
.navbox-list {
border-color: #fdfdfd; /* Must match background color */
}
.navbox-title, table.navbox th {
background: #ccccff; /* Level 1 color */
}
.navbox-abovebelow, .navbox-group, .navbox-subgroup .navbox-title {
background: #ddddff; /* Level 2 color */
}
.navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow {
background: #e6e6ff; /* Level 3 color */
}
.navbox-subgroup {
padding-right: 2px;
}
.navbox-even {
background: #f7f7f7; /* Even row striping */
}
.navbox-odd {
background: transparent; /* Odd row striping */
}
.plainlinksneverexpand a {
background: none !important;
padding: 0 !important;
}
body.mediawiki table.mbox-small {
clear: left;
float: left;
margin: 4px 1em 4px 0;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
th.mbox-text, td.mbox-text { /* The message body cell(s) */
border: none;
padding: 0.25em 0.9em; /* 0.9em left/right */
width: 100%; /* Make all mboxes the same width regardless of text length */
}
td.mbox-image { /* The left image cell */
border: none;
padding: 2px 0.9em 2px 0; /* 0.9em left, 0px right */
text-align: center;
}
td.mbox-imageright { /* The right image cell */
border: none;
padding: 2px 0 2px 0.9em; /* 0px left, 0.9em right */
text-align: center;
}
/* أيقونات للروابط بين المشاريع في تبويبة "أدوات" */
li.wb-otherproject-link {
background-repeat: no-repeat;
background-position: right center;
position: relative;
right: -18px;
padding-right: 18px !important;
}
.portal#p-wikibase-otherprojects div.body ul li.wb-otherproject-link {
position: relative;
left: -18px;
padding-right: 18px;
}
li.wb-otherproject-commons {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/14px-Commons-logo.svg.png);
}
li.wb-otherproject-wikipedia {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/15px-Wikipedia-logo-v2.svg.png);
}
li.wb-otherproject-wiktionary {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Wiktionary_small.svg/16px-Wiktionary_small.svg.png);
}
li.wb-otherproject-wikibooks {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/16px-Wikibooks-logo.svg.png);
}
li.wb-otherproject-wikiquote {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/15px-Wikiquote-logo.svg.png);
}
li.wb-otherproject-wikisource {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/15px-Wikisource-logo.svg.png);
}
li.wb-otherproject-wikinews {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Wikinews_waves_Left.svg/15px-Wikinews_waves_Left.svg.png);
}
li.wb-otherproject-wikispecies,
li.wb-otherproject-species {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikispecies-logo.svg/15px-Wikispecies-logo.svg.png);
}
li.wb-otherproject-wikivoyage {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Wikivoyage-logo.svg/15px-Wikivoyage-logo.svg.png);
}
li.wb-otherproject-wikiversity {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/15px-Wikiversity-logo.svg.png);
}
li.wb-otherproject-wikidata {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Wikidata-logo.svg/15px-Wikidata-logo.svg.png);
}
li.wb-otherproject-meta {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/7/75/Wikimedia_Community_Logo.svg/15px-Wikimedia_Community_Logo.svg.png);
}
li.wb-otherproject-incubator {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Incubator-logo.svg/15px-Incubator-logo.svg.png);
}
li.wb-otherproject-mediawiki {
background-image: url(//upload.wikimedia.org/wikipedia/commons/e/e2/MediaWiki-favicon.png);
}
li.wb-otherproject-wikifunctions {
background-image: url(//upload.wikimedia.org/wikipedia/commons/6/6e/Wikifunctions-favicon-16.png);
}
li[class^="wb-otherproject"] {
background-position: right center;
margin-right: 5px;
}
.portal#p-wikibase-otherprojects div.body ul li.wb-otherproject-link {
right: -8px;
padding-right: 25px;
}
/* </pre> */
/* {{Interwiki-all|MediaWiki:Common.css}} */
35fe9lgny3mhaoxhxvii8gykih1gttd
قالب:منع دائم
10
3118
146115
145407
2026-05-18T00:48:45Z
Mdktb
13023
-+صورة أنسب
146115
wikitext
text/x-wiki
{{صندوق رم
| نوع = مهم
| صورة = [[ملف:Stop hand nuvola.svg|40px]]
| عنوان = مرحبا {{BASEPAGENAME}}،
| نص = '''مُنعت''' من التحرير والتعديل في ويكي الجامعة بشكل '''دائم'''، بدءًا من التاريخ المدون أدناه، وذلك بسبب '''مخالفتك لسياسات الموقع''' أو ربما بسبب '''[[ويكي الجامعة:تخريب|التخريب]]''' الذي قمت به.<br />'''ولتضع في حسبانك دائما'''، أن [[ويكي الجامعة]] '''ملك للجميع'''، ولا يحق '''لأي كان''' مخالفة ضوابطها، ويجب على كل من يرغب في أن يكون أحد مساهميها، '''الالتزام''' بشروط ذلك وضوابطه!}}<noinclude>
{{توثيق|محتوى=
=== كيفية الاستعمال ===
<nowiki>{{نسخ:منع دائم}}</nowiki>}}
[[تصنيف:قوالب تحذير مستخدم]]
</noinclude>
n2bkmlva9h59qh84e88m76nn37c5ab0
146117
146115
2026-05-18T00:53:48Z
Mdktb
13023
اصلاحات
146117
wikitext
text/x-wiki
{{صندوق رم
| النوع = حذف
| الصورة = [[ملف:Stop hand nuvola.svg|40px]]
| النص = مرحبًا! '''مُنعت''' من التحرير والتعديل في ويكي الجامعة بشكل '''دائم'''، بدءًا من التاريخ المدون أدناه، وذلك بسبب '''مخالفتك لسياسات الموقع''' أو ربما بسبب '''[[ويكي الجامعة:تخريب|التخريب]]''' الذي قمت به.<br />'''ولتضع في حسبانك دائما'''، أن [[ويكي الجامعة]] '''ملك للجميع'''، ولا يحق '''لأي كان''' مخالفة ضوابطها، ويجب على كل من يرغب في أن يكون أحد مساهميها، '''الالتزام''' بشروط ذلك وضوابطه!}}<noinclude>
{{توثيق|محتوى=
=== كيفية الاستعمال ===
<nowiki>{{نسخ:منع دائم}}</nowiki>}}
[[تصنيف:قوالب تحذير مستخدم]]
</noinclude>
o2bq8kyflz5o7ggkyr4rocwsbi4zubn
146118
146117
2026-05-18T00:57:19Z
Mdktb
13023
- تنسيق
146118
wikitext
text/x-wiki
{{صندوق رم
| النوع = حذف
| الصورة = [[ملف:Stop hand nuvola.svg|40px]]
| النص = مرحبًا! '''مُنعت''' من التحرير والتعديل في ويكي الجامعة بشكل '''دائم'''، بدءًا من التاريخ المدون أدناه، وذلك بسبب '''مخالفتك لسياسات الموقع''' أو ربما بسبب '''[[ويكي الجامعة:تخريب|التخريب]]''' الذي قمت به. ''ولتضع في حسبانك دائما'''، أن [[ويكي الجامعة]] '''ملك للجميع'''، ولا يحق '''لأي كان''' مخالفة ضوابطها، ويجب على كل من يرغب في أن يكون أحد مساهميها، '''الالتزام''' بشروط ذلك وضوابطه!}}<noinclude>
{{توثيق|محتوى=
=== كيفية الاستعمال ===
<nowiki>{{نسخ:منع دائم}}</nowiki>}}
[[تصنيف:قوالب تحذير مستخدم]]
</noinclude>
lf9u0tv21zznnprdn2k6e88detuo6mf
146119
146118
2026-05-18T00:57:31Z
Mdktb
13023
146119
wikitext
text/x-wiki
{{صندوق رم
| النوع = حذف
| الصورة = [[ملف:Stop hand nuvola.svg|40px]]
| النص = مرحبًا! '''مُنعت''' من التحرير والتعديل في ويكي الجامعة بشكل '''دائم'''، بدءًا من التاريخ المدون أدناه، وذلك بسبب '''مخالفتك لسياسات الموقع''' أو ربما بسبب '''[[ويكي الجامعة:تخريب|التخريب]]''' الذي قمت به. '''ولتضع في حسبانك دائما'''، أن [[ويكي الجامعة]] '''ملك للجميع'''، ولا يحق '''لأي كان''' مخالفة ضوابطها، ويجب على كل من يرغب في أن يكون أحد مساهميها، '''الالتزام''' بشروط ذلك وضوابطه!}}<noinclude>
{{توثيق|محتوى=
=== كيفية الاستعمال ===
<nowiki>{{نسخ:منع دائم}}</nowiki>}}
[[تصنيف:قوالب تحذير مستخدم]]
</noinclude>
fm7miofutaek35lph1rznnd28uxpl75
نقاش القالب:صندوق رسالة مقالة
11
23168
146107
66133
2026-05-17T23:42:42Z
Mdktb
13023
نقل Mdktb صفحة [[نقاش القالب:صندوق رم]] إلى [[نقاش القالب:صندوق رسالة مقالة]]: استكمال دمج تاريخ
66133
wikitext
text/x-wiki
== Change coming to how certain templates will appear on the mobile web ==
<div class="plainlinks mw-content-rtl" lang="ar" dir="rtl">
'''سوف يطرأ تغيير على كيفية عرض بعض القوالب على صفحات الوب المخصصة للأجهزة المحمولة'''
{{int:please-translate}}
[[ملف:Page_issues_-_mobile_banner_example.jpg|تصغير|مثال على التحديثات]]
مرحبا،
سوف ينفذ فريق القراء على الوب بعد بضعة أسابيع تغييرات على مظهر القوالب على صفحات الوب الخاصة بالأجهزة المحمولة. سوف نجعل من هذه القوالب أبرز من ذي قبل حينما تستعرض مقالة. نتوجه إليكم بطلب المساعدة في تحديث أية قوالب لا تظهر كما ينبغي.
ما هو نوع القوالب؟ سوف نختص بالعمل القوالب التي تعلم القارئ والمساهمين بمشاكل تخص محتوى المقالة مثل نص المقالة والمعلومات المذكورة فيها. مثال على ذلك [[wikidata:Q5962027|قالب:لا تذكر مصادر]] أو [[Wikidata:Q5619503|قالب:مطلوب المزيد من الاستشهادات]]. هذه الإشعارات مخفية في الوقت الحالي خلف رابط أسفل عنوان المقالة. سوف نغير هيئة القوالب هذه (في الغالب قلك التي تستخدم Template:Ambox أو قوالب صناديق الرسائل بوجه عام) كي تعرض موجز مختصر تحت عنوان المقالة. يمكنك النقر على رابط "تعرف على المزيد" كي تعرف المزيد من المعلومات.
وبالنسبة لمحرري القوالب لدينا [[mw:Recommendations_for_mobile_friendly_articles_on_Wikimedia_wikis#Making_page_issues_(ambox_templates)_mobile_friendly|بضعة توصيات تتعلق بكيفية تصميم القوالب لتكون ملائمة للأجهزة المحمولة]] وكذلك [[mw:Reading/Web/Projects/Mobile_Page_Issues|المزيد من التوثيق الخاص بما أنجزناه من عمل حتى الآن]].
لو كانت لديك أية أسئلة أو استفسارات تتعلق بهيئة القوالب المخصصة للأجهزة المحمولة، [[mw:Talk:Reading/Web/Projects/Mobile_Page_Issues|يرجى إضافة مذكرة على صفحة نقاش المشروع]] أو [https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=Readers-Web-Backlog إنشاء مهمة على فابريكاتور] وسوف نساعدك.
{{Int:Feedback-thanks-title}}
</div> [[m:User:CKoerner (WMF)|CKoerner (WMF)]] ([[m:User talk:CKoerner (WMF)|talk]]) 19:41، 13 نوفمبر 2018 (ت ع م)
<!-- الرسالة التي أرسلها User:CKoerner (WMF)@metawiki باستخدام القائمة في https://meta.wikimedia.org/w/index.php?title=User:CKoerner_(WMF)/Sandbox&oldid=18595245 -->
smow5lxkrmu76kb3zlmzrtxhif07yeo
وحدة:Message box
828
23438
146114
146010
2026-05-18T00:46:43Z
Mdktb
13023
+اضافة aliases
146114
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
local string = mw.ustring
local aliases = {
name='الاسم',
text={'النص', 'نص'},
class={'الصنف', 'صنف'},
id='المعرف',
subst='نسخ',
style={'الطراز', 'طراز'},
textstyle='طراز النص',
image={'الصورة', 'صورة'},
imageleft='صورة يسار',
imageright='صورة يمين',
plainlinks='وصلات عادية',
small='صغير',
smallimage='صورة صغيرة',
smallimageleft='صورة صغيرة يسار',
smalltext='نص صغير',
type='النوع',
issue='المشكلة',
fix='الإصلاح',
removalnotice='تنبيه الإخفاء',
talk='النقاش',
date='التاريخ',
nocat='لاتصنيف',
cat='التصنيف',
all='الجامع',
demospace='استعراض نطاق',
below='الأدنى'
}
local numbered_aliases = {
['cat#'] = 'التصنيف#',
['all#'] = 'الجامع#',
}
local types = {
['شطب']='speedy',
['حذف']='delete',
['محتوى']='content',
['أسلوب']='style',
['ملاحظة']='notice',
['نقل']='move',
['دمج']='move',
['فصل']='move',
['حماية']='protection',
['تحذير']='warning',
['تبصرة']='editnotice',
['نظام']='system',
['جاري']='current',
['متميز']='featured',
['ترخيص'] = 'license'
}
--------------------------------------------------------------------------------
-- وظائف المساعدة
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- تعريف فئة الصندوق
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'نقاش' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[تصنيف:%s|%s]]', cat, sort)
else
cat = string.format('[[تصنيف:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
--#Modified
self.type = types[args.type] or args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Set image classes.
self.imageRightClass = args.imagerightclass or args.imageclass
self.imageLeftClass = args.imageleftclass or args.imageclass
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
--#Modified line
local templateName = string.gsub( string.gsub( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*', ''), '^قالب[%s_]*:[%s_]*', '')
templateName = 'قالب:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'هذه ' .. (cfg.sectionDefault or 'الصفحة')
elseif type(args.sect) == 'string' then
sect = 'هذه ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|نقاش]])', talkLink)
else
talkText = 'قد يكون هنالك نقاشٌ ذو علاقةٍ في'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]] %s.',
talkText,
talk,
talkTitle.prefixedText,
'المتعلّقة'
)
else
talkText = string.format(
'%s [[%s#%s|صفحة النقاش]] %s.',
talkText,
talkTitle.prefixedText,
talk,
'المتعلّقة'
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Right image settings.
local imageRight = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageRight ~= 'blank' and imageRight ~= 'none' and imageRight ~= 'بدون'
or not cfg.imageCheckBlank and imageRight ~= 'none' and imageRight ~= 'بدون'
then
self.imageRight = imageRight
if not imageRight then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageRight = string.format('[[ملف:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimageleft or args.imageleft
if not (cfg.imageLeftNone and imageLeft == 'none' and imageLeft == 'بدون') then
self.imageLeft = imageLeft
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'منذ'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'مقالات تستعمل قوالب صيانة غير مؤرخة')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'وسيط صندوق رسالة بحاجة لإصلاح', allSort)
end
if self.isSubstituted then
self:addCat('all', 'صفحات تحتوي على قوالب منسوخة بشكل غير صحيح')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'قالب <code>%s[[قالب:%s|%s]]%s</code> تم نسخه بشكلٍ خاطئٍ.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the right-hand image.
local row = boxTable:tag('tr')
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:addClass(self.imageRightClass)
:wikitext(self.imageRight or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(self.removalNotice) --#Modified
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the left-hand image.
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-imageleft')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell
:addClass(self.imageLeftClass)
:wikitext(self.imageLeft or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageLeft and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'صندوق الرسالة هذا يستخدم وسيط "type=%s" غير صالح، وينبغي إصلاحه.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
--#added block
local template = box.name and string.gsub( string.gsub( box.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*', ''), '^قالب[%s_]*:[%s_]*', '') or nil
local checkparm = require('Module:Check for unknown parameters')._check_from_aliases({template = template , aliases=aliases, numbered_aliases = numbered_aliases, 'page', 'attrs', 'imagerightclass', 'imageclass', 'imageleftclass', 'sect', 'info', 'templatestyles'}, args)
--#Modified
return box:export() .. checkparm
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments with aliases').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false, aliases = aliases, numbered_aliases = numbered_aliases}))
end
end
return setmetatable(p, mt)
nrjqfyp5ose5wtxzcpfgsti8flecpir
146116
146114
2026-05-18T00:51:58Z
Mdktb
13023
+aliases مبدأيًا
146116
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
local string = mw.ustring
local aliases = {
name={'الاسم', 'عنوان'},
text={'النص', 'نص'},
class={'الصنف', 'صنف'},
id='المعرف',
subst='نسخ',
style={'الطراز', 'طراز'},
textstyle='طراز النص',
image={'الصورة', 'صورة'},
imageleft='صورة يسار',
imageright='صورة يمين',
plainlinks='وصلات عادية',
small='صغير',
smallimage='صورة صغيرة',
smallimageleft='صورة صغيرة يسار',
smalltext='نص صغير',
type={'النوع', 'توع'},
issue='المشكلة',
fix='الإصلاح',
removalnotice='تنبيه الإخفاء',
talk='النقاش',
date='التاريخ',
nocat='لاتصنيف',
cat='التصنيف',
all='الجامع',
demospace='استعراض نطاق',
below='الأدنى'
}
local numbered_aliases = {
['cat#'] = 'التصنيف#',
['all#'] = 'الجامع#',
}
local types = {
['شطب']='speedy',
['حذف']='delete',
['محتوى']='content',
['أسلوب']='style',
['ملاحظة']='notice',
['نقل']='move',
['دمج']='move',
['فصل']='move',
['حماية']='protection',
['تحذير']='warning',
['تبصرة']='editnotice',
['نظام']='system',
['جاري']='current',
['متميز']='featured',
['ترخيص'] = 'license'
}
--------------------------------------------------------------------------------
-- وظائف المساعدة
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- تعريف فئة الصندوق
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'نقاش' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[تصنيف:%s|%s]]', cat, sort)
else
cat = string.format('[[تصنيف:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
--#Modified
self.type = types[args.type] or args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Set image classes.
self.imageRightClass = args.imagerightclass or args.imageclass
self.imageLeftClass = args.imageleftclass or args.imageclass
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
--#Modified line
local templateName = string.gsub( string.gsub( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*', ''), '^قالب[%s_]*:[%s_]*', '')
templateName = 'قالب:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'هذه ' .. (cfg.sectionDefault or 'الصفحة')
elseif type(args.sect) == 'string' then
sect = 'هذه ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|نقاش]])', talkLink)
else
talkText = 'قد يكون هنالك نقاشٌ ذو علاقةٍ في'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]] %s.',
talkText,
talk,
talkTitle.prefixedText,
'المتعلّقة'
)
else
talkText = string.format(
'%s [[%s#%s|صفحة النقاش]] %s.',
talkText,
talkTitle.prefixedText,
talk,
'المتعلّقة'
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Right image settings.
local imageRight = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageRight ~= 'blank' and imageRight ~= 'none' and imageRight ~= 'بدون'
or not cfg.imageCheckBlank and imageRight ~= 'none' and imageRight ~= 'بدون'
then
self.imageRight = imageRight
if not imageRight then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageRight = string.format('[[ملف:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimageleft or args.imageleft
if not (cfg.imageLeftNone and imageLeft == 'none' and imageLeft == 'بدون') then
self.imageLeft = imageLeft
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'منذ'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'مقالات تستعمل قوالب صيانة غير مؤرخة')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'وسيط صندوق رسالة بحاجة لإصلاح', allSort)
end
if self.isSubstituted then
self:addCat('all', 'صفحات تحتوي على قوالب منسوخة بشكل غير صحيح')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'قالب <code>%s[[قالب:%s|%s]]%s</code> تم نسخه بشكلٍ خاطئٍ.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the right-hand image.
local row = boxTable:tag('tr')
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:addClass(self.imageRightClass)
:wikitext(self.imageRight or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(self.removalNotice) --#Modified
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the left-hand image.
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-imageleft')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell
:addClass(self.imageLeftClass)
:wikitext(self.imageLeft or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageLeft and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'صندوق الرسالة هذا يستخدم وسيط "type=%s" غير صالح، وينبغي إصلاحه.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
--#added block
local template = box.name and string.gsub( string.gsub( box.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*', ''), '^قالب[%s_]*:[%s_]*', '') or nil
local checkparm = require('Module:Check for unknown parameters')._check_from_aliases({template = template , aliases=aliases, numbered_aliases = numbered_aliases, 'page', 'attrs', 'imagerightclass', 'imageclass', 'imageleftclass', 'sect', 'info', 'templatestyles'}, args)
--#Modified
return box:export() .. checkparm
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments with aliases').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false, aliases = aliases, numbered_aliases = numbered_aliases}))
end
end
return setmetatable(p, mt)
gfg98q4xucdo3mctr3rhd8nl8346j16
قالب:نقل إلى ويكي مصدر
10
29263
146113
142684
2026-05-18T00:30:41Z
Mdktb
13023
-+صندوق رسالة مقالة
146113
wikitext
text/x-wiki
{{صندوق رسالة مقالة
| النوع = دمج
| الصورة = [[ملف:Edit-copy purple-wikis.svg|38px]]
| النص =محتوى هذه الصفحة لا يتناسب ومحتوى ويكي الجامعة، رُشّحت للنقل إلى [[:w:ويكي مصدر|ويكي مصدر]]
}}<includeonly>[[تصنيف:نقل إلى ويكي مصدر]]</includeonly><noinclude>
[[تصنيف:قوالب صيانة ويكي الجامعة]]
{{توثيق}}</noinclude>
qjfs0775aeu2j32yq552arvennv8bed
قالب:صندوق رسالة مقالة
10
32823
146103
145478
2026-05-17T23:40:35Z
Mdktb
13023
نقل Mdktb صفحة [[قالب:صندوق رسالة مقالة]] إلى [[قالب:صندوق رم]]: دمج تاريخ، استعمال الوحدة
145478
wikitext
text/x-wiki
{{#invoke:Message box|ambox}}{{#لومعادلة:{{{small|{{{صغير}}}}}};{{NAMESPACENUMBER}}|right;0|<!-- [[تصنيف:مقالات تستخدم صندوق رسالة صغير]] -->}}<noinclude>
{{توثيق}}
</noinclude>
4y0gfa78i2vbuk0d8jcs8zb832jmz0e
146105
146103
2026-05-17T23:42:42Z
Mdktb
13023
نقل Mdktb صفحة [[قالب:صندوق رم]] إلى [[قالب:صندوق رسالة مقالة]] على تحويلة: استكمال دمج تاريخ
145478
wikitext
text/x-wiki
{{#invoke:Message box|ambox}}{{#لومعادلة:{{{small|{{{صغير}}}}}};{{NAMESPACENUMBER}}|right;0|<!-- [[تصنيف:مقالات تستخدم صندوق رسالة صغير]] -->}}<noinclude>
{{توثيق}}
</noinclude>
4y0gfa78i2vbuk0d8jcs8zb832jmz0e
مستخدم:لطف العتابي
2
33023
146102
2026-05-17T16:10:32Z
لطف العتابي
15532
/* */ اقوم بتحرير بعض الحقائق عن الماكن والمناطق الذي هي غير مدرجة في موسوعة
146102
wikitext
text/x-wiki
لطف العتابي
6ja87vueflfwft99ou1khvu9nw5gvgt
قالب:صندوق رم
10
33026
146106
2026-05-17T23:42:42Z
Mdktb
13023
نقل Mdktb صفحة [[قالب:صندوق رم]] إلى [[قالب:صندوق رسالة مقالة]] على تحويلة: استكمال دمج تاريخ
146106
wikitext
text/x-wiki
#تحويل [[قالب:صندوق رسالة مقالة]]
2owmbvsi5juunfg6jgg01ukjpd9ukiz