ويكي الجامعة 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