ویکیفەرھەنگ ckbwiktionary https://ckb.wiktionary.org/wiki/%D9%88%DB%8C%DA%A9%DB%8C%D9%81%DB%95%D8%B1%DA%BE%DB%95%D9%86%DA%AF:%D8%AF%DB%95%D8%B3%D8%AA%D9%BE%DB%8E%DA%A9 MediaWiki 1.47.0-wmf.24 case-sensitive میدیا تایبەت وتووێژ بەکارھێنەر لێدوانی بەکارھێنەر ویکیفەرھەنگ لێدوانی ویکیفەرھەنگ پەڕگە وتووێژی پەڕگە میدیاویکی وتووێژی میدیاویکی داڕێژە وتووێژی داڕێژە یارمەتی وتووێژی یارمەتی پۆل وتووێژی پۆل TimedText TimedText talk مۆدیوول لێدوانی مۆدیوول Event Event talk پەسەندکردن 0 6638 47389 46585 2026-10-15T15:02:49Z Ghybu 12 47389 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === {{واڵا}} === ناو === {{ckb-noun}} # مۆرکردن، ڕەزامەندی # بەدڵبوون، پەسەندکردن # ئافەرین ==== وەرگێڕانەکان ==== {{وەرگێڕان-سەر|}} * ئینگلیزی: {{t+|en|approval}} {{وەرگێڕان-بن}} === سەرچاوە === * [https://web.archive.org/web/20210424204928/http://zkurd.org/aras/download/it-dictionary_zkurd.pdf فەرهەنگی زانستپەروەرانی کورد] * [https://web.archive.org/web/20190910201253/http://www.zkurd.org/proje/en-ku.pl فەرهەنگی ئینگلیزی - كوردی (كوردی - ئینگلیزی)‌ - زانستپەروەرانی کورد] o8aalzk1rpqfuz3d3ssz9bt00g4fkhe 47390 47389 2026-10-15T15:04:37Z Ghybu 12 /* ناو */ 47390 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === {{واڵا}} === کار === {{ckb-verb}} # مۆرکردن، ڕەزامەندی # بەدڵبوون، پەسەندکردن # ئافەرین ==== وەرگێڕانەکان ==== {{وەرگێڕان-سەر|}} * ئینگلیزی: {{t+|en|approval}} {{وەرگێڕان-بن}} === سەرچاوە === * [https://web.archive.org/web/20210424204928/http://zkurd.org/aras/download/it-dictionary_zkurd.pdf فەرهەنگی زانستپەروەرانی کورد] * [https://web.archive.org/web/20190910201253/http://www.zkurd.org/proje/en-ku.pl فەرهەنگی ئینگلیزی - كوردی (كوردی - ئینگلیزی)‌ - زانستپەروەرانی کورد] f2ggdrzg6ky7e95mznx8xyxa8w5moi2 47395 47390 2026-10-15T15:47:03Z -Haryad 34 +شائەمراز 47395 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === {{واڵا}} === کار === {{ckb-verb}} # مۆرکردن، ڕەزامەندی # بەدڵبوون، پەسەندکردن # ئافەرین ==== وەرگێڕانەکان ==== {{وەرگێڕان-سەر|}} * ئینگلیزی: {{t+|en|approval}} {{وەرگێڕان-بن}} === سەرچاوەکان === * [https://web.archive.org/web/20210424204928/http://zkurd.org/aras/download/it-dictionary_zkurd.pdf فەرھەنگی زانستپەروەرانی کورد] * [https://web.archive.org/web/20190910201253/http://www.zkurd.org/proje/en-ku.pl فەرھەنگی ئینگلیزی - کوردی (کوردی - ئینگلیزی) - زانستپەروەرانی کورد] jaiys8fo3rtezr513m849evoko3d3de میدیاویکی:Common.css 8 7829 47386 47349 2026-10-15T13:42:56Z Sakura emad 13 fix 47386 css text/css /* ---------- <nowiki> CSS Style * Indent with tab characters * One line space between each declaration * One selector per line * Opening brace on the same line as the last selector * Don't omit optional semicolons * Closing brace on its own line * Closing brace indented to match the preceding style declarations * Alternatively, very short style rules may be all on one line * If changing e.g. rules for displaying scripts, consider also updating [[MediaWiki:Mobile.css]] * Single quotes around font-family values that do not consist of ASCII lowercase letters and hyphens. ---------- */ /* csslint adjoining-classes:false */ /* See also [[Special:Mypage/vector.css]], [[MediaWiki:Vector.css]] */ /* make headers include contained floats, so they don't wander around (yes, is magic, it tells the browser the tag is a container) */ h1, h2, h3, h4, h5, h6 { width: auto; } sup, sub { /* prevent odd line-height for raised and lowered characters */ line-height: 1em; } /* and keep links at normal font size/weight, else they inherit the header attributes */ .editsection { font-size: 100%; font-weight: normal; } pre code, code code { border: none; padding: 0; } pre var, code var { color: #777; } /* Convenience column count classes for list templates and such */ .column-count-2 { -moz-column-count: 2; -ms-column-count: 2; -webkit-column-count: 2; column-count: 2; } .column-count-3 { -moz-column-count: 3; -ms-column-count: 3; -webkit-column-count: 3; column-count: 3; } /* This fixes a bug where certain Tibetan terms are cut off at the bottom... */ #firstHeading { overflow: visible; } .ns-0 .timed-text { display: none; } .client-js .audiometa { display: none; } .client-nojs .audiofile { display: none; } .translations-columm { background-color: #FFFFE0; width: 48%; text-align: left; vertical-align: top; } /* wikitable is part of core. prettytable is deprecated but still used in some places, until fully replaced: */ table.prettytable { margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaaaaa solid; border-collapse: collapse; } table.prettytable th, table.prettytable td { border: 1px #aaaaaa solid; padding: 0.2em; } table.prettytable th { background: #f2f2f2; text-align: center; } table.prettytable caption { margin-left: inherit; margin-right: inherit; } /* main page-style boxes */ table.bluebox { background: #f9f9ff; border: 1px solid #aaaaaa; margin-bottom: 0.5em; width: 100%; } table.bluebox td { padding: 0.5em; } table.bluebox th { background-color: #006699; color: #ffffff; padding: 0.5em; } /* default setting for {{qualifier}} and {{sense}}. (Related classes that can be overridden: .qualifier-comma, .qualifier-content, .ib-brac, .qualifier-brac, .sense-qualifier-colon.) */ .ib-comma { font-style: normal; } .ib-content { font-style: italic; } .ib-content i, .ib-content em { font-style: normal; } .context-qualifier-colon { display: none; } /* default setting for {{seeCites}} */ .see-cites { } /* default style for indented "see also" */ .disambig-see-also, .disambig-see-also-2 { text-indent: 2em; } .mention-tr { font-style: italic; } /* add left-to-right mark */ .mention-gloss-paren::before, .mention-tr-paren::before { content: "‎"; } /* non-italic and non-bold gloss */ .mention-gloss-double-quote, .mention-gloss-paren, .mention-tr-gloss-separator-comma, .mention-tr-paren, .mention-tr-gloss-separator-comma, .mention-gloss { font-style: normal; font-weight: normal; } /* * highlight Arabic, Hebrew, cuneiform (Sumero-Akkadian and Ugaritic and Old Persian) * in usage examples, as it is not bolded */ .Arab.e-example b, .Arab.e-quotation b, .Hebr.e-example b, .Hebr.e-quotation b, .Xsux.e-example b, .Xsux.e-quotation b, .Ugar.e-example b, .Ugar.e-quotation b, .Xpeo.e-example b, .Xpeo.e-quotation b { background-color: #FFF0F5; font-size: inherit; } /* default style for "form of" definitions */ .use-with-mention, .form-of-definition { font-style: italic; } .use-with-mention i { font-style: normal; } .form-of-definition-link { font-style: normal; } .use-with-mention .mention, .form-of-definition-link .mention { font-style: normal; font-weight: bold; } /* Inflection tables ----------------------------- */ /* To colour links in inflection tables (currently done with {{notred}}) black without using #ifexist and allowing for user override */ .inflection-table a.new { color: inherit; } /* fill a parent NavContent collapsing box */ .NavContent table.inflection { width: 100%; } /* basic inflection table styles */ table.inflection { border-collapse: collapse; border: 1px solid; background: #ffffff; } table.inflection caption { caption-side: bottom; padding: 0.33em 1em; text-align: left; font-size: smaller; } /* subtle grey for alternate row backgrounds */ table.inflection tr:nth-child(odd) { background: #fcfcfc; } /* and for row headers */ table.inflection tr:nth-child(odd):not(.rowgroup) th { background: #f6f6f6; } table.inflection td, table.inflection th { padding: 0.33em 1em; vertical-align: baseline; } /* but vertically center multi-row cells */ table.inflection td[rowspan] { vertical-align: middle; } table.inflection td { text-align: center; } /* regular row headers, in the left column */ table.inflection th { background: #f9f9f9; text-align: left; } /* rowgroup header rows */ table.inflection tr.rowgroup th { background: #eeeeee; text-align: center; } /* first-of-several rowgroup header cells is aligned left */ table.inflection tr.rowgroup th:first-child { text-align: left; } table.inflection tr.rowgroup th:first-child:only-child { text-align: center; } /* rows with dividers above */ table.inflection tr.divider th { border-top: 3px solid #999999; } /* transliterations */ table.inflection .translit { color: #888; } /* header links aren’t coloured until hover/active */ table.inflection th a:link, table.inflection th a:visited { color: inherit; text-decoration: inherit; } table.inflection th a:hover { color: #0645ad; text-decoration: underline; } table.inflection th a:active { color: #faa700; text-decoration: underline; } /* Russian verb tables */ table.inflection-ru.inflection-verb { background: #ffffff; } /* and for row headers */ table.inflection-ru.inflection-verb tr:nth-child(odd):not(.rowgroup) th { background: #fcfcda; } table.inflection-ru.inflection-verb th { background: #ffffe0; } table.inflection-ru.inflection-verb tr.rowgroup th { background: #e0e0ff; } table.inflection-ru.inflection-verb tr.divider th { border-top-color: #9090d0; } /* ---- end of Inflection tables */ /* InterProject */ .interProject { display: none; clear: both; border-top: 2px dotted #AAAAAA; margin-top: 2em; } /* CSS moved from various templates */ .checktrans { background-color: #f0fff0; } .rfc-trans { background-color: #f0fff0; } .trreq { background-color: #f0fff0; } .ttbc { background-color: #f0fff0; } /* t+ t t- templates: */ .tneg { vertical-align: 20%; font-size: 80%; } .tneg a { color: #cc2200 !important; } /* monobook redlink colour, standard #ba0000 */ .tneg a:visited { color: #a55858 !important; } /* standard visited redlink colour */ .tpos { vertical-align: 20%; font-size: 80%; } .tpos a { color: #002bb8 !important; } /* standard bluelink colour */ .tpos a:visited { color: #5a3696 !important; } /* standard visited bluelink colour */ .tpos a:active { color: #faa700 !important; } /* standard bluelink colour */ .tunk { vertical-align: 20%; font-size: 80%; } .tunk a { color: #3366BB !important; } /* standard external interwiki colour */ .tunk a:active { color: #3366BB !important; } /* redundant */ /* for parentheses, we use .tlc and .tlcp, the latter has no definition here (display:inline) */ .tlc { display: none; } /* Main Page heading removal */ .page-Main_Page #footer-info-lastmod, .page-Main_Page #siteSub, .page-Main_Page #contentSub, .page-Main_Page #firstHeading, .page-Main_Page #catlinks { display: none; /* NOT important */ } /* live ajax link checking support */ /* #002bb8 for (unvisited) blue, #ba0000 for red; so #5d155c for unknown */ a.dunno, #p-personal a.dunno { color: #5d155c; } /* #5a3696 for (visited) blue, #a55858 for red; so #744777 for unknown */ a.dunno:visited, #p-personal a.dunno:visited { color: #744777; } /* for pages which exist but lack the section we're looking for */ .partlynew:link, #p-personal :link.partlynew, .partlynew :link { color: #B88D00; } .partlynew:visited, #p-personal .partlynew:visited, .partlynew :visited { color: #826F34; } /* partlynew should have lower precedence than red-links... */ .partlynew .new:link { color: #BA0000; } .partlynew .new:visited { color: #a55858; } .accelerated:link { color: #1fba00; } .accelerated:visited { color: #66a759; } /* Try to make search results more obviously links */ .mw-special-Search #bodyContent li a { font-weight: bold; } .mw-special-Search .searchmatch { font-weight: normal; color: #000000; background-color: #FFEE77; } /* To give a flexible column like structure to manual indices [[User:Conrad.Irwin]] */ ol.index, div.index ol { margin: 0.2em; } ol.index li, div.index ol li, div.index h3 { float: left; width: 20em; list-style-type: none; margin-left: 0; margin-right: 0; overflow: hidden; } div.index h3 { font-size: 160%; width: 12.5em; margin-right: 0.2em; } /* [[WT:FEED]] */ #p-feedback a { cursor: pointer; } /* Old version */ #mw-revision-info { border: 2px solid #8888FF; border-left: 0px; border-right: 0px; font-size: 110%; margin: 5px; margin-left: 0px; } #mw-editingold { margin-left: 15px; margin: 5px; padding: 5px; border: 2px solid #CC0000; border-width: 2px 0px; } /* Make Recent changes look nice again */ span.newpage, span.minor, span.searchmatch, span.bot, span.unpatrolled { font-family: sans-serif !important; } /* NavFrames */ div.Boxmerge, div.NavFrame, details.NavFrame { margin: 0px 0px -1px 0px; padding: 2px; border: 1px solid #aaaaaa; text-align: center; border-collapse: collapse; font-size: 95%; overflow: auto; width: auto; } div.Boxmerge div.NavFrame { border-style: none; border-style: hidden; } div.NavPic { background-color: #ffffff; margin: 0px; padding: 2px; float: left; } div.NavFrame div.NavHead, details.NavFrame summary.NavHead { min-height: 1.6em; font-weight: bold; font-size: 100%; text-align: left; background-color: #efefef; padding: 0 10px; background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#DFDFDF), color-stop(0.6, #E3E3E3)); background-image: -moz-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF); background-image: -o-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF); } div.NavFrame div.NavHead:hover, details.NavFrame summary.NavHead:hover { background-color: #F6F6F6; background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#F3F3F3), color-stop(0.6, #EAEAEA)); background-image: -moz-linear-gradient(top, #EFEFEF, #EAEAEA 60%, #F3F3F3); background-image: -o-linear-gradient(top, #EFEFEF, #EAEAEA 60%, #F3F3F3); } div.NavFrame div.NavHead:active, details.NavFrame summary.NavHead:active { background-color: #E3E3E3; background-image: -webkit-gradient(linear, left top, left bottom, from(#E3E3E3), to(#DFDFDF), color-stop(0.6, #D3D3D3)); background-image: -moz-linear-gradient(top, #E3E3E3, #D3D3D3 60%, #DFDFDF); background-image: -o-linear-gradient(top, #E3E3E3, #D3D3D3 60%, #DFDFDF); } div.pseudo div.NavHead:hover { background-color: #EFEFEF; } div.pseudo div.NavHeadpseudo:active { background-color: #EFEFEF; } div.NavFrame p { font-size: 100%; } div.NavFrame div.NavContent, details.NavFrame div.NavContent { font-size: 100%; } div.NavFrame div.NavContent p, details.NavFrame div.NavContent p { font-size: 100%; } div.NavEnd { margin: 0px; padding: 0px; line-height: 1px; clear: both; } span.NavToggle { cursor: pointer; float: left; font-weight: normal; font-size: smaller; } .list-switcher-element { text-align: center; } .list-switcher-element .NavToggle { float: none; } .term-list-header { font-style: italic; font-weight: inherit; } .term-list-header:before { content: "("; } .term-list-header:after { content: "):"; } /* Main page fixes */ #interwiki-completelist { font-weight: bold; } /* Style for horizontal UL lists */ .horizontal p, .horizontal ul, .horizontal li { display: inline; } .horizontal ul { padding: 0 0 0 .2em; margin: 0; } .horizontal li { padding: 0 0.1em 0 0.1em; } /* Syle for generic inline lists */ .inline p, .inline dd, .inline dt, .inline ul, .inline li { margin: 0; display: inline; } /* [[w:CSS filter#Negation pseudo-class hack]] since IE <8 doesn't support pseudo elements and IE 8 doesn't support :last-child pseudo-class. */ html:not([dummyparam]) .horizontal li:after { content: ","; } html:not([dummyparam]) .horizontal li:last-child:after { content: "."; } /* stuff visible when previewing an edit only */ .previewonly { display: none; } #wikiPreview .previewonly { display: inline !important; } /* senseids */ .senseid:target { background-color: #DEF; } /* show the "serial and" in the disambiguation see also */ .serial-and { display: inline; } /* hide the serial commas */ .serial-comma { display: none; } /* Gender and number templates */ .gender, .number, .noun-class { font-style: italic; } abbr { border-bottom-width: 0; } /* hide "did you mean" on Noarticletext self-links */ .did-you-mean strong { display: none; } /* make script/module errors smaller */ .scribunto-error { font-size: 75%; } /* allow inline hieroglyphs */ .mw-hiero-outer { display: inline-table; vertical-align: middle; font-size: 11px; } /* formats derived terms */ .derivedterms { background: #F8F8FF; } .derivedterms .CategoryTreeChildren { column-count: 3; -moz-column-count: 3; -webkit-column-count: 3; } /* softer highlighting of 'updated since last visit' */ span.updatedmarker { background-color:#D0F0C0; } /* {{side box}} */ table.mbox-small { /* For the "small=yes" option. */ clear: right; float: right; margin: 4px 0 4px 1em; width: 238px; font-size: 88%; line-height: 1.25em; } table.mbox-small-left { /* For the "small=left" option. */ margin: 4px 1em 4px 0; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .HQToggle, .nyms-toggle, .usex-toggle { font-size: smaller; position: relative; bottom: 1px; left: 5px; } /* {{TOC limit}} */ /* Allow limiting of which header levels are shown in a TOC; <div class="toclimit-3">, for instance, will limit to showing ==headings== and ===headings=== but no further (as long as there are no =headings= on the page, which there shouldn't be according to the MoS). */ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } /* Support for scripts. See [[Wiktionary:Scripts]]. */ /* Default style for headwords. */ strong.headword { } /* Default style for mentions outside of "form of" definitions. See [[Wiktionary:Votes/2007-10/style for mentioned terms]] */ .mention { font-style: italic; } .mention i, i .mention { font-style: normal; } /* "Empty" script, used for languages with no script set. This is the same as Latn in practice, but allows tagging and formatting of such cases. */ .None, .Imag, .Morse, .Semap, .Zyyy { } /* Latin This is the default script, so it has no definitions. */ .Latn { } /* This is needed to overcome the "smartness" of certain web browsers */ .Latn[lang=ja], .Latn[lang=ko], .Latn[lang=zh] { font-family: inherit; } /* Latin Fraktur */ .Latf { font-family: UnifrakturMaguntia, UnifrakturCook, Unifraktur, 'Code2001', Tahoma, 'Arial Unicode MS', sans-serif; font-size: 125%; } /* Navajo */ .nv-Latn { font-family: Calibri, 'Aboriginal Sans', 'DejaVu Sans', 'Arial Unicode MS', sans-serif !important; } /* Pitjantjatjara (ḻ ṉ ṟ ṯ and capitals) */ .pjt-Latn { font-family: 'Microsoft Sans Serif', Tahoma, 'Code2000', sans-serif; } /* Latin extended */ /* no styles for .Latinx, .unicode, .Unicode */ /* Aghwan */ .Aghb { font-family: OptimaModoki, sans-serif; } .Aghb, .Aghb * { font-style: normal; } /* Ahom */ .Ahom { font-family: AhomUnicode, 'Noto Serif Ahom', 'Unifont Upper', sans-serif; } .Ahom, .Ahom * { font-style: normal; } /* Arabic */ .Arab, .fa-Arab, .glk-Arab, .kk-Arab, .ks-Arab, .ku-Arab, .mzn-Arab, .ota-Arab, .pa-Arab, .ps-Arab, .sd-Arab, .tt-Arab, .ug-Arab, .ur-Arab, .ms-Arab { font-family: 'Iranian Sans', 'Segoe UI', Tahoma, 'Microsoft Sans Serif', 'Arial Unicode MS', sans-serif; font-size: 133%; direction: rtl; unicode-bidi: embed; } /* no italics, no bold */ .Arab, .Arab *, .fa-Arab, .fa-Arab *, .glk-Arab, .glk-Arab *, .kk-Arab, .kk-Arab *, .ks-Arab, .ks-Arab *, .ku-Arab, .ku-Arab *, .mzn-Arab, .mzn-Arab *, .ota-Arab, .ota-Arab *, .pa-Arab, .pa-Arab *, .ps-Arab, .ps-Arab *, .sd-Arab, .sd-Arab *, .tt-Arab, .tt-Arab *, .ug-Arab, .ug-Arab *, .ur-Arab, .ur-Arab *, .ms-Arab, .ms-Arab * { font-style: normal; font-weight: normal; } /* Persian, Ottoman Turkish */ .fa-Arab, .ota-Arab { font-family: 'Iranian Sans', 'Geeza Pro', Tahoma, sans-serif; } /* Kashmiri */ .ks-Arab { font-family: 'Noto Naskh Arabic', Amiri, Mirza, 'Scheherazade New', Scheherazade, 'Geeza Pro', Tahoma, sans-serif; } /* Kurdish, Punjabi Shahmukhi, Urdu */ .ku-Arab, .pa-Arab, .ur-Arab { font-family: Tahoma, 'Arial Unicode MS', 'UT Cairo', 'UT Naskh', sans-serif; } /* Pashto */ .ps-Arab { font-family: Pokhto, 'Pashto Kror Asiatype', 'Scheherazade New', Scheherazade, sans-serif; } /* Sindhi */ .sd-Arab { font-family: 'MB Sindhi', Tahoma, 'MBSarang Sattar', 'MB Bhitai Sattar', 'MB Lateefi', 'Ayaz Gul', 'Iranian Sans', sans-serif; } /* Uyghur */ .ug-Arab { font-family: 'UKIJ Tuz', 'Microsoft Uighur', 'Scheherazade New', Scheherazade, 'Iranian Sans', 'Code2000', sans-serif; } /* Imperial Aramaic */ .Armi { font-family: 'Segoe UI Historic', 'Aramaic Imperial Yeb', 'Noto Sans Imperial Aramaic', sans-serif; direction: rtl; unicode-bidi: embed; } .Armi, .Armi * { font-style: normal; } /* Armenian */ .Armn { font-family: Mshtakan, Arial, 'Segoe UI', Tahoma, 'Arian AMU', 'DejaVu Sans', sans-serif; } /* no italics */ .Armn, .Armn * { font-style: normal; } /* Avestan */ .Avst { font-family: Avestan, Ahuramzda, 'Noto Sans Avestan', sans-serif; font-size: 125%; direction: rtl; unicode-bidi: embed; font-variant-ligatures: none; /* Avestan language */ } /* no italics */ .Avst, .Avst * { font-style: normal; } .Avst:lang(pal) { /* Pazend (Middle Persian in Avestan script) */ font-variant-ligatures: normal; } /* Balinese */ .Bali { font-family: 'Noto Sans Balinese', sans-serif; } .Bali, .Bali * { font-style: normal; } /* Bamum */ .Bamu { font-family: 'Noto Sans Bamum', sans-serif; } .Bamu, .Bamu * { font-style: normal; } /* Batak */ .Batk { font-family: Batak-Unicode, sans-serif; } .Batk, .Batk * { font-style: normal; } /* Bengali */ .Beng { font-family: 'Bangla Sangam MN', UniBangla, 'Arial Unicode MS', 'Code2000', Likhan, 'UT Bengali Dhaka', Vrinda, sans-serif; font-size: 130%; } .Beng, .Beng * { font-style: normal; } .as-Beng { font-family: 'Bangla Sangam MN', UniBangla, 'Arial Unicode MS', 'Code2000', Likhan, 'UT Bengali Dhaka', Vrinda, sans-serif; font-size: 130%; } .as-Beng, .as-Beng * { font-style: normal; } /* Zhuyin (Bopomofo) */ .Bopo { font-family: MOESongUN, DFKai-SB, 'Microsoft Yahei', 'Microsoft Jhenghei', 'Source Han Sans TC', 'Source Han Sans TW', 'Noto Sans CJK TC', sans-serif; } .Bopo, .Bopo * { font-style: normal; } /* Brahmi */ .Brah { font-family: 'Segoe UI Historic', 'Noto Sans Brahmi'; } .Brah, .Brah * { font-style: normal; } /* Braille */ .Brai { font-size: 150%; } .Brai, .Brai * { font-style: normal; } /* Buginese */ .Bugi { font-family: Saweri, sans-serif; } .Bugi, .Bugi * { font-style: normal; } /* Buhid */ .Buhd, .Buhd * { font-style: normal; } /* Chakma */ .Cakm { font-family: RibengUni, sans-serif; } .Cakm, .Cakm * { font-style: normal; } /* Unified Canadian Aboriginal Syllabics */ .Cans { font-family: 'Euphemia UCAS', Euphemia, 'Aboriginal Sans', OskiBlackfoot, 'Code2000', 'Everson Mono Unicode', sans-serif; font-size: 110%; } .Cans, .Cans * { font-style: normal; } /* Carian, Italic, Linear B, Lycian, Lydian */ .Cari, .Ital, .Linb, .Lyci, .Lydi { font-family: 'Segoe UI Historic', Aegean, 'Noto Sans Carian', 'Noto Sans Old Italic', 'Noto Sans Linear B', 'Noto Sans Lycian', 'Noto Sans Lydian', sans-serif; font-size: 125%; } .Cari, .Cari *, .Ital, .Ital *, .Linb, .Linb *, .Lyci, .Lyci *, .Lydi, .Lydi * { font-style: normal; } /* Cham */ .Cham { font-family: 'Code2000', 'JG ChamCambodia', sans-serif; font-size: 1.1em; } .Cham, .Cham * { font-style: normal; } /* Cherokee */ .Cher { font-family: Digohweli, 'Aboriginal Sans', 'Code2000', Marin, 'Rotinonhsonni Sans', 'Everson Mono Unicode', sans-serif; font-size: 110%; } .Cher, .Cher * { font-style: normal; } /* Coptic */ .Copt { font-family: Quivira, 'New Athena Unicode', 'Code2000', sans-serif; font-size: 1.3em; } .Copt, .Copt * { font-style: normal; } /* Cypriot */ .Cprt { font-family: 'Segoe UI Historic', Aegean, sans-serif; font-size: 1.15em; direction: rtl; unicode-bidi: embed; } .Cprt, .Cprt * { font-style: normal; } /* Cyrillic */ .Cyrl, .Cyrs { font-family: Helvetica, Geneva, 'Arial Unicode MS', 'Lucida Sans Unicode', 'Code2000', sans-serif; } .Cyrl, .Cyrl * { font-style: normal; } /* Old Cyrillic (Old Church Slavonic, Old East Slavic) */ .Cyrs { font-family: BukyVede, 'Kliment Std', 'RomanCyrillic Std', Menaion, 'Menaion Medieval', Lazov, Dilyana, 'Hirmos Ponomar', 'Hirmos Ponomar TT', 'Fedorovsk Unicode', 'Fedorovsk Unicode TT', 'Code2000', 'DejaVu Sans', 'Lucida Grande', 'Arial Unicode MS', 'Lucida Sans Unicode', sans-serif; font-size: 125%; } .Cyrs, .Cyrs * { font-style: normal; } /* Devanagari */ .Deva { font-family: 'Adobe Devanagari', 'Noto Serif Devanagari', Utsaah, 'Devanagari MT', Raghu, Gargi, JanaSanskrit, JanaHindi, Siddhanta, sans-serif; font-size: 120%; } i.Deva { font-style: normal; } /* Deseret */ .Dsrt { font-family: 'Segoe UI Symbol', 'Code2001', 'MPH 2B Damase', 'Everson Mono', sans-serif; } .Dsrt, .Dsrt * { font-style: normal; } /* Demotic (Egyptian) */ .Egyd, .Egyd * { font-style: normal; direction: rtl; } /* Egyptian hieroglyphs */ .Egyp { font-family: 'Noto Sans Egyptian Hieroglyphs', Abydos, Aegyptus, 'Segoe UI Historic', sans-serif; font-size: 150%; } .Egyp, .Egyp * { font-style: normal; } /* Ethiopic (Ge'ez) */ .Ethi { font-family: 'Abyssinica SIL', Nyala, 'Code2000', 'Ethiopia Jiret', 'GF Zemen Unicode', 'TITUS Cyberbit Basic', 'Visual Geez Unicode', 'Visual Geez Unicode Agazian', 'Visual Geez Unicode Title', sans-serif; font-size: 120%; } .Ethi, .Ethi * { font-style: normal; } /* Khutsuri */ .Geok, .Geok * { font-style: normal; } /* Georgian */ .Geor { font-family: 'DejaVu Sans', 'Arial Unicode MS', Sylfaen, sans-serif; } .Geor, .Geor * { font-style: normal; } /* Glagolitic */ .Glag { font-family: 'Segoe UI Historic', BukyVede, Dilyana, 'Noto Sans Glagolitic', sans-serif; font-size: 150%; } .Glag, .Glag * { font-style: normal; } /* Gothic */ .Goth { font-family: 'Segoe UI Historic', 'Code2001', Skeirs, 'MPH 2B Damase', sans-serif; } .Goth, .Goth * { font-style: normal; } b.Goth, strong.Goth { font-size: larger; } /* Greek */ .Grek { font-family: Athena, Gentium, 'Gentium Plus', 'Palatino Linotype', 'Arial Unicode MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Code2000', sans-serif; } i.Grek.mention, i.polytonic.mention { font-style: normal; } /* Polytonic Greek */ .polytonic { font-family: 'SBL Greek', 'New Athena Unicode', 'DejaVu Sans', Athena, Gentium, 'Gentium Plus', 'Palatino Linotype', Times, 'Arial Unicode MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Code2000', sans-serif; } /* Gujarati */ .Gujr { font-family: 'Noto Sans Gujarati', 'Gujarati Sangam MN', 'Gujarati MT', Shruti, 'Lucida Grande', 'Arial Unicode MS', 'Lucida Sans Unicode', 'Code2000', 'TITUS Cyberbit Basic', 'Chrysanthi Unicode', 'Bitstream Cyberbit', 'Bitstream CyberBase', 'Bitstream Vera', 'Visual Geez Unicode', sans-serif; font-size: 125%; } .Gujr, .Gujr * { font-style: normal; } /* Gurmukhi */ .Guru { font-family: 'Gurmukhi MN', 'Gurmukhi MT', 'UT Punjabi Amritsar', 'Lucida Grande', 'Arial Unicode MS', 'Lucida Sans Unicode', 'Code2000', 'TITUS Cyberbit Basic', 'Chrysanthi Unicode', 'Bitstream Cyberbit', 'Bitstream CyberBase', 'Bitstream Vera', 'Visual Geez Unicode', sans-serif; font-size: 125%; } .Guru, .Guru * { font-style: normal; } /* Chinese (Han) */ /* Hani: generic */ /* Hans: simplified */ /* Hant: traditional */ .Hans { font-family: 'PingFang SC', DengXian, 'Source Han Sans SC', 'Source Han Sans CN', 'Noto Sans CJK SC', 'Microsoft Yahei', SimHei, SimSun, NSimSun, SimSun-ExtB, Song, 'Heiti SC', HanaMinA, HanaMinB, sans-serif; } .Hani, .Hant { font-family: 'PingFang TC', 'Source Han Sans TC', 'Source Han Sans TW', 'Noto Sans CJK TC', 'Microsoft Jhenghei', MOESongUN, PMingLiU, PMingLiU-ExtB, MingLiU, MingLiU-ExtB, Ming, 'Heiti TC', HanaMinA, HanaMinB, sans-serif; } .Hani, .Hans, .Hant { font-size: 120%; line-height: 1; } .Hani, .Hani *, .Hans, .Hans *, .Hant, .Hant * { font-style: normal; } .Hani:lang(vi) { font-family: 'Nom Na Tong', 'HAN NOM A', 'HAN NOM B', Sun-ExtA, Sun-ExtB, Ming-Lt-HKSCS-UNI-H, Ming-Lt-HKSCS-ExtB, HanaMinA, HanaMinB, HanaMin, 'PingFang TC', MingLiU, MingLiU-ExtB, 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', SimSun, SimSun-ExtB, 'Arial Unicode MS', 'TITUS Cyberbit Basic', sans-serif; /* CJK Unified Ideographs Extension C and Extension D (U+2A700..U+2B734, U+2B740..U+2B81F) font-family: Sun-ExtB, 'MingLiU_HKSCS-ExtB', Ming-Lt-HKSCS-ExtB, HanaMinB, sans-serif; **/ } /* Hanunoo */ .Hano { font-family: Quivira, 'MPH 2B Damase', sans-serif; font-size: 1.1em; } .Hano, .Hano * { font-style: normal; } /* Hatran */ .Hatr { font-family: 'Noto Sans Hatran', sans-serif; direction: rtl; } /* Hebrew */ .Hebr { font-family: 'SBL Hebrew', 'Taamey David CLM', 'Taamey Frank CLM', Alef, 'Noto Sans Hebrew', Narkisim, Miriam, Kinryu, 'Arial Hebrew', Arial, 'Adobe Hebrew', serif; font-size: 115%; direction: rtl; unicode-bidi: embed; } .Hebr, .Hebr * { font-style: normal; font-weight: normal; } big.Hebr, strong.Hebr, b.Hebr, b .Hebr { font-size: 144%; } .Hebr b { font-size: 125%; } /* Hluw: Anatolian Hieroglyphs */ .Hluw { font-family: 'Noto Sans Anatolian Hieroglyphs', Anatolian; font-size: 200%; } .Hluw, .Hluw * { font-style: normal; } /* Hiragana: see .Jpan */ /* Javanese */ .Java { font-family: 'Tuladha Jejeg', 'Javanese Text', adjisaka, 'Noto Sans Javanese', sans-serif; } .Java, .Java * { font-style: normal; } /* Japanese scripts .Hira = Hiragana .Kana = Katakana (used for Ainu language) .Jpan = Hiragana + Katakana + Kanji */ .Hira, .Jpan, .Kana { font-family: 'Hiragino Kaku Gothic Pro', Osaka, 'Yu Gothic', Meiryo, 'Source Han Sans J', 'Source Han Sans JP', 'Noto Sans CJK JP', 'Droid Sans Japanese', 'MS PGothic', 'MS Gothic', 'MS PMincho', 'MS Mincho', HanaMinA, HanaMinB, sans-serif; font-size: 120%; line-height: 1; } .Hira, .Hira *, .Jpan, .Jpan *, .Kana, .Kana * { font-style: normal; } .Jpan ruby rt { font-family: 'Yu Gothic UI', 'Meiryo UI', 'MS UI Gothic', sans-serif; font-size: 60%; } /* Kayah Li, Ol Chiki, Rejang */ .Kali, .Olck { font-family: 'Code2000', sans-serif; } .Kali, .Kali *, .Olck, .Olck *, .Rjng, .Rjng * { font-style: normal; } /* Katakana (Ainu language): see .Jpan */ /* Kharoshthi */ .Khar { font-family: 'Segoe UI Historic', 'MPH 2B Damase', sans-serif; font-size: 1.1em; direction: rtl; unicode-bidi: embed; } .Khar, .Khar * { font-style: normal; } /* Khmer */ .Khmr { font-family: 'Khmer OS', 'Khmer OS Content', 'Leelawadee UI', 'Noto Sans Khmer', 'Code2000', 'Khmer Mondulkiri U OT ls', sans-serif; font-size: 125%; } .Khmr, .Khmr * { font-style: normal; } /* Kannada */ .Knda { font-family: 'Kannada Sangam MN', JanaKannada, Tunga, Kedage, RaghuKannada, Sampige, 'Arial Unicode MS', 'Code2000', 'Bitstream Cyberbit', 'Bitstream CyberBase', sans-serif; font-size: 125%; } .Knda, .Knda * { font-style: normal; } /* Korean */ .Kore, .Hang { font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', Dotum, Gulim, 'NanumBarunGothic YetHangul', NanumBarunGothic, UnDotum, 'Source Han Sans K', 'Source Han Sans KR', 'Noto Sans CJK KR', NanumGothic, 'NanumMyeongjo YetHangul', NanumMyeongjo, Batang, UnBatang, sans-serif; font-size: 120%; line-height: 1; } .Kore, .Kore *, .Hang, .Hang * { font-style: normal; } /* Kaithi */ .Kthi { font-family: 'Noto Sans Kaithi', sans-serif; } .Kthi, .Kthi * { font-style: normal; } /* Lanna */ .Lana { font-family: 'Lanna Alif', 'Noto Sans Tai Tham', sans-serif; } .Lana, .Lana * { font-style: normal; } /* Lao */ .Laoo { font-family: 'Phetsarath OT', 'Saysettha OT', 'JG Basic Lao Opentype', 'JG Basic2 Lao Opentype', 'JG LaoTimes Opentype', 'Phagnoum Lao Unicode Opentype', 'JG Lao Old Arial Opentype', DokChampa, 'Code2000', 'JG Lao Classic Opentype', 'Alice0 Unicode', 'Alice1 Unicode', 'Alice2 Unicode', 'Alice3 Unicode', 'Alice4 Unicode', 'Alice5 Unicode', sans-serif; font-size: 125%; } .Laoo, .Laoo * { font-style: normal; } /* Lepcha */ .Lepc { font-family: 'Noto Sans Lepcha', Mingzat, sans-serif; } .Lepc, .Lepc * { font-style: normal; } /* Limbu */ .Limb { font-family: 'Code2000', 'MPH 2B Damase', sans-serif; } .Limb, .Limb * { font-style: normal; } /* Lisu */ .Lisu { font-family: 'Noto Sans Lisu', sans-serif; } .Lisu, .Lisu * { font-style: normal; } /* Mandaic */ .Mand { font-family: 'Noto Sans Mandaic', sans-serif; } .Mand, .Mand * { font-style: normal; } /* Manichaean */ .Mani, .Mani * { font-style: normal; } /* Meroitic cursive */ .Merc { font-family: 'Segoe UI Historic', Aegyptus, sans-serif; font-size: 150%; } .Merc, .Merc * { font-style: normal; } /* Meroitic hieroglyphs */ .Mero { font-family: Aegyptus, sans-serif; font-size: 150%; } .Mero, .Mero * { font-style: normal; } /* Malayalam */ .Mlym { font-family: 'Malayalam Sangam MN', Kartika, 'Code2000', 'Lucida Grande', 'Arial Unicode MS', 'Lucida Sans Unicode', 'TITUS Cyberbit Basic', 'Chrysanthi Unicode', 'Bitstream Cyberbit', 'Bitstream CyberBase', 'Bitstream Vera', 'Visual Geez Unicode', sans-serif; font-size: 125%; } .Mlym, .Mlym * { font-style: normal; } /* Classical Mongolian, Manchu, Xibe, Clear Script */ .Mong, .mnc-Mong, /* Manchu */ .sjo-Mong, /* Xibe */ .xwo-Mong /* Clear Script, Todo */ { font-family: 'Mongolian Baiti', 'Noto Sans Mongolian', sans-serif; font-size: 140%; -webkit-writing-mode: vertical-lr; -moz-writing-mode: vertical-lr; writing-mode: vertical-lr; layout-flow: vertical-ideographic; } .Mong, .Mong *, .mnc-Mong, .mnc-Mong *, .sjo-Mong, .sjo-Mong *, .xwo-Mong, .xwo-Mong * { font-style: normal; } /* Meitei Mayek */ .Mtei { font-family: 'Eeyek Unicode', 'Noto Sans Meetei Mayek', sans-serif; } .Mtei, .Mtei * { font-style: normal; } /* Burmese */ .Mymr { font-family: TharLon, Padauk, 'Myanmar Text', 'Myanmar3', 'Myanmar2', 'Myanmar1', ParabaikSans, 'MyMyanmar sans-serif'; font-size: 130%; } .Mymr, .Mymr * { font-style: normal; font-weight: normal; } big.Mymr, strong.Mymr, b.Mymr, b .Mymr { font-size: 162%; } .Mymr b { font-size: 130%; } /* North Arabian */ .Narb { font-family: 'Noto Sans Old North Arabian', sans-serif; } .Narb, .Narb * { font-style: normal; } /* N'ko */ .Nkoo, .Nkoo * { font-style: normal; } /* Ogham */ .Ogam { font-family: 'Segoe UI Historic', Beth-Luis-Nion, Pollach, 'Maigh Nuad', 'Craobh Ruadh', 'Everson Mono Ogham', Cog, Crosta, 'TITUS Ogham', 'Ragnarok Ogham', sans-serif; font-size: 125%; } .Ogam, .Ogam * { font-style: normal; font-weight: normal; } big.Ogam, strong.Ogam, b.Ogam, b .Ogam { font-size: 156%; } .Ogam b { font-size: 125%; } /* Orkhon Runes */ .Orkh { font-family: 'Segoe UI Historic', Orkun, 'Old Turkic', sans-serif; } .Orkh, .Orkh * { font-style: normal; } /* Oriya */ .Orya { font-family: 'Oriya Sangam MN', sans-serif; font-size: 125%; } .Orya, .Orya * { font-style: normal; } /* Osmanya */ .Osma, .Osma * { font-style: normal; } /* Palmyrene */ .Palm, .Palm * { font-family: 'Noto Sans Palmyrene'; } /* Old Permian */ .Perm { font-family: 'Noto Sans Old Permic'; } /* Phags-pa */ .Phag { font-family: 'BabelStone Phags-pa Book', 'Microsoft PhagsPa', sans-serif; -webkit-writing-mode: vertical-lr; -moz-writing-mode: vertical-lr; writing-mode: vertical-lr; layout-flow: vertical-ideographic; } .Phag, .Phag * { font-style: normal; } /* Inscriptional Pahlavi */ .Phli { font-family: 'Segoe UI Historic', 'Noto Sans Inscriptional Pahlavi', Shapour, 'ZH Mono', sans-serif; } .Phli, .Phli * { font-style: normal; } /* Book Pahlavi */ .Phlv, .Phlv * { font-style: normal; } /* Phoenician */ .Phnx { font-family: 'Segoe UI Historic', 'ALPHABETUM Unicode', 'MPH 2B Damase', Aegean, 'Code2001', 'Free Sans', sans-serif; font-size: 125%; direction: rtl; unicode-bidi: embed; } .Phnx, .Phnx * { font-style: normal; } /* Pollard */ .Plrd, .Plrd * { font-style: normal; } /* Parthian */ .Prti { font-family: 'Segoe UI Historic', 'Noto Sans Inscriptional Parthian', 'ZH Mono', sans-serif; } .Prti, .Prti * { font-style: normal; } /* Rejang */ .Rjng, .Rjng * { font-family: 'Noto Sans Rejang', 'Code2000', sans-serif; } /* Runic (Germanic) */ .Runr { font-family: 'Segoe UI Historic', Junicode, 'Free Mono', 'Caslon Roman', 'Segoe UI Symbol', 'Code2000', 'Everson Mono', 'TITUS Cyberbit Basic', sans-serif; font-size: 130%; } .Runr, .Runr * { font-style: normal; } /* Samaritan */ .Samr { font-family: 'Noto Sans Samaritan', Quivira, 'Everson Mono', Unifont, sans-serif; font-size: 150%; direction: rtl; unicode-bidi: embed; } .Samr, .Samr * { font-style: normal; } /* South Arabian */ .Sarb { font-family: 'Segoe UI Historic', Qataban, 'Noto Sans Old South Arabian', sans-serif; } .Sarb, .Sarb * { font-style: normal; } /* Saurashtra */ .Saur { font-family: Pagul, sans-serif; } .Saur, .Saur * { font-style: normal; } /* SignWriting */ .Sgnw, .Sgnw * { font-style: normal; } /* Shavian */ .Shaw { font-family: 'Segoe UI Historic', 'Code2001', 'Everson Mono', sans-serif; } .Shaw, .Shaw * { font-style: normal; } /* Sharada */ .Shrd { font-family: 'Noto Sans Sharada', sans-serif; font-size: 125%; } .Shrd, .Shrd * { font-style: normal; } /* Sinhalese */ .Sinh { font-family: 'Sinhala Sangam MN', KaputaUnicode, KandyUnicode, Dinamina, DinaminaUniWeb, Potha, Madhura, sans-serif; font-size: 125%; } .Sinh, .Sinh * { font-style: normal; } /* Sorang Sompeng */ .Sora, .Sora * { font-style: normal; } /* Sundanese */ .Sund { font-family: 'Sundanese Unicode', 'Noto Sans Sundanese', sans-serif; } .Sund, .Sund * { font-style: normal; } /* Syloti Nagri */ .Sylo { font-family: 'Noto Sans Syloti Nagri', sans-serif; } .Sylo, .Sylo * { font-style: normal; } /* Syriac */ .Syrc { font-family: 'Estrangelo Edessa', 'San Francisco', 'Code2000', 'Bitstream Cyberbit', 'Bitstream CyberBase', 'Bitstream Vera', 'TITUS Cyberbit Basic', sans-serif; font-size: 1.3em; direction: rtl; unicode-bidi: embed; } .Syrc, .Syrc * { font-style: normal; } /* Serto or Western form of Syriac */ .Syrc:lang(tru) { font-family: 'Noto Sans Syriac Western', 'Serto Jerusalem', 'Noto Sans Syriac'; } /* Madnhaya or Eastern form of Syriac */ .Syrc:lang(aii) { font-family: 'Noto Sans Syriac Eastern', 'Noto Sans Syriac'; } /* Tagbanwa */ .Tagb { font-family: Quivira, Tagbanwa, sans-serif; font-size: 1.1em; } .Tagb, .Tagb * { font-style: normal; } /* Tai Le */ .Tale { font-family: 'Microsoft Tai Le', 'Tai Le Valentinium', 'MPH 2B Damase', sans-serif; } .Tale, .Tale * { font-style: normal; } /* New Tai Lue */ .Talu { font-family: 'Noto Sans New Tai Lue', 'Microsoft New Tai Lue', 'Dai Banna SIL Book', 'Husb_New_Tai_Lue_WB', sans-serif; } .Talu, .Talu * { font-style: normal; } /* Tamil */ .Taml { font-family: 'Tamil Sangam MN', InaiMathi, Vijaya, Akshar, JanaTamil, 'Code2000', ETTamilNew, 'Lohit Tamil', 'Arial Unicode MS', 'Free Serif', Latha, sans-serif; font-size: 125%; } .Taml, .Taml * { font-style: normal; } /* Tangut */ .Tang { font-family: 'BabelStone Tangut Wenhai', 'Tangut N4694', 'Tangut Yinchuan', 'New Tangut', 'New Tangut Std', 'Tangut TWU', 'Babelstone Tangut Wenhai', sans-serif; font-size: 1.2em; text-orientation: upright; -webkit-text-orientation: upright } .Tang, .Tang * { font-style: normal; font-weight: normal; } /* Tai Viet */ .Tavt { font-family: 'Tai Heritage Pro', 'Noto Sans Tai Viet', sans-serif; } .Tavt, .Tavt * { font-style: normal; } /* Telugu */ .Telu { font-family: 'Telugu Sangam MN', sans-serif; font-size: 125%; } .Telu, .Telu * { font-style: normal; } /* Tifinagh (Berber) */ .Tfng { font-family: 'Hapax Berbère', Ebrima, 'Code2000', DejaVu, sans-serif; font-size: 120%; } .Tfng, .Tfng * { font-style: normal; } /* Tagalog */ .Tglg { font-family: 'Noto Sans Tagalog', 'Tagalog Stylized', 'Baybayin Lopez', 'Tagalog Doctrina 1593', 'Noto Sans Hanunoo', 'Code2000', sans-serif; } .Tglg, .Tglg * { font-style: normal; } /* Thaana */ .Thaa, .Thaa * { font-style: normal; } /* Thai */ .Thai { font-family: 'Leelawadee UI', Leelawadee, 'Arial Unicode MS', 'Code2000', sans-serif; font-size: 125%; } .Thai, .Thai * { font-style: normal; } /* Tibetan */ .Tibt, .xzh-Tibt { font-family: 'Noto Serif Tibetan', 'Noto Sans Tibetan', Jomolhari-ID, 'Tibetan Machine Uni', 'Tibetan Machine Web', Jomolhari, 'Microsoft Himalaya', sans-serif; font-size: 130%; } .Tibt, .Tibt *, .xzh-Tibt, .xzh-Tibt * { font-style: normal; } .Tibt.mention { font-size: 130%; } /* Zhang-Zhung */ .xzh-Tibt { font-family: 'BabelStone Tibetan sMar-chen', sans-serif; } /* Ugaritic */ .Ugar { font-family: 'Oxford Ugaritic', 'Segoe UI Historic', Aegean, 'Code2001', sans-serif; } .Ugar, .Ugar * { font-style: normal; } /* Vai */ .Vaii { font-family: Ebrima, 'Code2000', sans-serif; font-size: 1.1em; } .Vaii, .Vaii * { font-style: normal; } /* Old Persian cuneiform */ .Xpeo { font-family: 'Segoe UI Historic', Aegean, Xerxes, 'Code2001', sans-serif; } .Xpeo, .Xpeo * { font-style: normal; } /* Sumero-Akkadian cuneiform */ .Xsux { font-family: Akkadian, FreeIdgSerif, CuneiformComposite, 'Segoe UI Historic', sans-serif; /* Neo-Assyrian form */ /* font-family: FreeIdgSerif, Akkadian, CuneiformComposite, 'Segoe UI Historic', sans-serif; */ /* Old Assyrian form */ /* font-family: Akkadian, CuneiformComposite, FreeIdgSerif, 'Segoe UI Historic', sans-serif; /* /* Neo-Sumerian form */ /* font-family: Akkadian, CuneiformComposite, FreeIdgSerif, 'Segoe UI Historic', sans-serif; /* /* Classical Sumerian form */ font-size: 125%; } .Xsux, .Xsux * { font-style: normal; font-weight: normal; } /* Specify Hittite fonts */ .Xsux:lang(hit) { font-family: UllikummiA, Akkadian, FreeIdgSerif, CuneiformComposite, 'Segoe UI Historic', sans-serif; } /* Specify Sumerian fonts */ .Xsux:lang(sux) { font-family: CuneiformComposite, Akkadian, 'Segoe UI Historic', sans-serif; } /* Yi */ .Yiii, .Yiii * { font-style: normal; } /* Mathematical notation */ .Zmth, .Zmth * { font-style: normal; } /* Symbols */ .Zsym { font-family: Symbola, sans-serif; font-size: 150%; } .Zsym, .Zsym * { font-style: normal; } /* Rumi (Malay) numerals */ .Ruminumerals { font-size:1.2em; } /* Multilingual writing systems and notations */ /* English Phonemic Representation (AHD) */ .enPR { font-family: 'Arial Unicode MS', 'Lucida Grande', Gentium, 'Gentium Plus', 'Gentium Alternative', 'TITUS Cyberbit Basic', 'Code2000', 'Lucida Sans Unicode', sans-serif; } /* International Phonetic Alphabet */ .IPA, .IPAchar { font-family: Gentium, 'Gentium Plus', GentiumAlt, 'DejaVu Sans', 'Segoe UI', 'Lucida Grande', 'Charis SIL', 'Doulos SIL', 'TITUS Cyberbit Basic', 'Code2000', 'Lucida Sans Unicode', sans-serif; font-size: 110%; font-variant-ligatures: no-common-ligatures; } .IPA, .IPA *, .IPAchar, .IPAchar * { font-style: normal; } /* Musical notation */ .musical { font-family: Musica, 'Musical Symbols', Euterpe, sans-serif; font-size: 1.4em; } .musical, .musical * { font-style: normal; } /* A kludge that lets the members of [[:Category:Redirected combining characters]] be displayed. */ body.page-Category_Combining_characters div#mw-pages li, body.page-Category_Redirected_combining_characters div#mw-pages li, body.page-Category_IPA_combining_characters div#mw-pages li { letter-spacing: 0.3em; } /* Tabbed Languages support */ #languageLinks .selectedTab a { font-size: 19px; color: #000; padding: 6px; display: block; border-left: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: -3px; background-color: #fff; margin-right: -6px; position: relative; border-top: 1px solid #CCC; white-space: nowrap; } #languageLinks .unselectedTab a { font-size: 16px; color: #929292; padding: 6px; display: block; border-left: 1px solid #CCC; border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: -3px; margin-left: 15px; margin-right: -5px; white-space: nowrap; background-color: #F6F6F6; } #languageLinks tr td { padding: 0px; } tr td.languageContainer { padding-left: 8px; padding-bottom: 10px; padding-right: 8px; border: 1px solid #CCC; vertical-align: top; width: 100%; } .unselectedtab { margin-left: 5px; } .editlangsection { margin-top: -13px; margin-right: 5px; border: 1px solid #CCC; margin-bottom: -2px; border-bottom-width: 0px; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; color: white; line-height: 14px; font-size: 12px; padding: 0px 7px; text-align: center; clear: both; background-color: white; float: right; } #languageLinks a.addLanguageButton { font-size: 12px; padding: 3px 6px; } @media screen and (max-width:36em) { #tabstable>tbody>tr>td { display: block; float: left; width: 100%; } #languageLinks tr { display: block; float: left; margin-bottom: -3px; margin-left: -5px; margin-top: 5px; } #languageLinks .unselectedTab a { margin-left: 0; margin-right: 5px; border-right: 1px solid #CCC; } #languageLinks .selectedTab a { margin-left: 0; margin-right: 5px; border-right: 1px solid #CCC; border-bottom: 1px solid #FFF; } #tabstable { width: 100%; } #languageLinks a.addLanguageButton { margin-top: 2px; margin-bottom: 1px; } .editlangsection { border-bottom-width: 1px; } } /* Grease Pit edit button fix */ .page-Wiktionary_Grease_pit.skin-vector #ca-edit, .page-Wiktionary_Etymology_scriptorium.skin-vector #ca-edit, .page-Wiktionary_Information_desk.skin-vector #ca-edit, .page-Wiktionary_Beer_parlour.skin-vector #ca-edit, .page-Wiktionary_Tea_room.skin-vector #ca-edit{ display: none; } /* Romanization tables ---------- */ table.romanization { clear: both; background: white; white-space: nowrap; border-collapse: collapse; border: 1px solid white; vertical-align: baseline; text-align: center; } table.romanization th, table.romanization td { padding: 0.25em; border: 1px solid white; } table.romanization th { background: rgb(87%, 91%, 96%); } table.romanization tr.romanization-source td { background: rgba(87%, 91%, 96%, 0.5); } table.romanization td, table.romanization tr.romanization-target td { background: rgb(90%, 90%, 90%); } /* ----- end Romanization tables */ /* Definition dates, in {{defdate}} */ .defdate { font-size: smaller; } /* unit tests filter */ table.unit-tests.unit-tests-hide-passing tr.unit-test-pass { display: none; } table.unit-tests th.unit-tests-img-corner { background: #def; min-width: 1em; } table.unit-tests.unit-tests-hide-passing th.unit-tests-img-corner { background: red; } /* multi-column lists */ li, .group-in-column { column-break-inside: avoid; page-break-inside: avoid; break-inside: avoid; -webkit-column-break-inside: avoid; -webkit-page-break-inside: avoid; -webkit-break-inside: avoid; -o-column-break-inside: avoid; -o-page-break-inside: avoid; -o-break-inside: avoid; -moz-column-break-inside: avoid; -moz-page-break-inside: avoid; -moz-break-inside: avoid; } /* {{shortcut}} */ .shortcut-box, .category-edit-box { border: 1px solid #aaa; color: black; background: #f9f9f9; margin: 0 0 .5em 1em; text-align: center; padding: 5px; float: right; clear: both; font-weight: bold; font-size: smaller; } /* Display tabs with 4 spaces, see [[phab:T59824]] and [[phab:T59825]] */ textarea#wpTextbox1 + div:last-child, /* workaround for [[mw:User:Remember the dot/Syntax highlighter]] */ textarea, pre, code, .mw-highlight { -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; } /* stop double-bolding of self-links like in [[acquit]], [[fishbone]] */ /* old code: b .selflink, strong .selflink { font-weight: inherit; } */ b, strong { font-weight: bold; } /* archive templates */ .archive-box { border: 1px #AAAAAA solid; padding: 3px 10px; margin-bottom: 1em; color: black; background: #F9F9F9; } .archive-box.archive-passed { color: black; background: #F3F9FF; } .archive-box.archive-failed { color: black; background: #F9F3FF; } tr:target { background: #def; } .character-sample { display: inline-block; min-width: 1em; font-size: 300%; text-align: center; background: rgba(0, 0, 0, 0.1); } .character-sample > :only-child { display: block; } .character-sample-primary{ display: inline-table; min-width: 1.1em; font-size: 300%; line-height: 110%; text-align: center; background: rgba(0, 0, 0, 0.1); height: 1.1em; } .character-sample-secondary { display: inline-block; min-width: 1em; text-align: center; } table.symboltable td { font-family: 'DejaVu Sans', Symbola, Quivira, sans-serif; text-align: center; } #firstHeading var, .headword var { color: #888; } body[class*="page-Template_table"] .CategoryTreeLabel { font-style: inherit; } body[class*="page-Template_table"] .CategoryTreeLabel:before { content: "•"; padding-right: 0.75em; } /* Temporary kludge to be used because categoryTree is generating a newline. This CSS line should be removed after the developers fix it. */ .CategoryTreeTag + p br:first-child{display:none;} .vsShow { display: none; } /* Used by column templates (see [[Module:columns]]). */ .ul-column-count[data-column-count="2"] > ul, .ul-column-count[data-column-count="2"] > ol, .ul-column-count[data-column-count="2"] > dl { -moz-column-count: 2; -webkit-column-count: 2; -ms-column-count: 2; column-count: 2; } .ul-column-count[data-column-count="3"] > ul, .ul-column-count[data-column-count="3"] > ol, .ul-column-count[data-column-count="3"] > dl { -moz-column-count: 3; -webkit-column-count: 3; -ms-column-count: 3; column-count: 3; } .ul-column-count[data-column-count="4"] > ul, .ul-column-count[data-column-count="4"] > ol, .ul-column-count[data-column-count="4"] > dl { -moz-column-count: 4; -webkit-column-count: 4; -ms-column-count: 4; column-count: 4; } .ul-column-count[data-column-count="5"] > ul, .ul-column-count[data-column-count="5"] > ol, .ul-column-count[data-column-count="5"] > dl { -moz-column-count: 5; -webkit-column-count: 5; -ms-column-count: 5; column-count: 5; } .ul-column-count[data-column-count="6"] > ul, .ul-column-count[data-column-count="6"] > ol, .ul-column-count[data-column-count="6"] > dl { -moz-column-count: 6; -webkit-column-count: 6; -ms-column-count: 6; column-count: 6; } /* Default style for hypothetical inflections -- currently italic. */ .hypothetical { font-style: italic; } /* Style for entries using deprecated templates */ .deprecated { color: olivedrab; } .deprecated a { color: darkgreen; } /* == wrap toggle links with [ and ] == */ .HQToggle:before, .NavToggle:before, .nyms-toggle:before, .usex-toggle:before { content:'['; } .HQToggle:after, .NavToggle:after, .nyms-toggle:after, .usex-toggle:after { content:']'; } .HQToggle a, .NavToggle a, .nyms-toggle a, .usex-toggle a { user-select: none; } .client-js .NavFrame .NavContent { display: none; } .client-js .not .NavContent { /* ??? */ display: block; } /* Hidden quotes */ .client-js .ns-0 ol>li>ul { display: none; } /* WikiHiero kludge */ /* disable for now, apparently not necessary and breaks wrapping .wikt-hierokludge { display: inline-block; } */ /* Support lists that automatically split into limited-width columns (for translations tables and the like): */ .multicolumn-list > ul { -webkit-column-width: 25em; -moz-column-width: 25em; -ms-column-width: 25em; column-width: 25em; column-gap: 20px; } .multicolumn-list-wide > ul { -webkit-column-width: 55em; -moz-column-width: 55em; -ms-column-width: 55em; column-width: 55em; column-gap: 20px; } .multicolumn-list-narrow > ul { -webkit-column-width: 22em; -moz-column-width: 22em; -ms-column-width: 22em; column-width: 22em; column-gap: 20px; } /* Horizontal rules */ body.ns-0 .mw-parser-output > :not(.collapsible-block) + h2:not(:first-of-type) { border-top: 1px solid #a2a9b1; padding-top: 1em; margin-top: 0.2em; } body.ns-0 hr { display: none; } /* </nowiki> */ /* T156351: Support for Parsoid's Cite implementation */ a[ rel="mw:referencedBy" ]::before { content: " ^"; } /* بەرچاوکردنی تاگەکان */ .mw-tag-marker { background-color:#FFE599; } mam1srhin07rv0rg3orkw7vaeah26io میدیاویکی:Gadgets-definition 8 7833 47387 47236 2026-10-15T13:51:55Z Sakura emad 13 Added missing module dependencies for CatMaker and RedirectMaker 47387 wikitext text/x-wiki بۆ بەڵگەنامەدارکردنی ئەم ئامرازانە، بڕوانە [[تایبەت:ئامرازەکان]]. بۆ زانیاریی گشتی لەسەر ئامرازەکانی ویکیفەرھەنگ، بڕوانە [[ویکیفەرھەنگ:ئامراز|ئامرازەکان]]. ھەروەھا بۆ ھەڵبژاردەکانی تر، بڕوانە [[وف:ھەڵبژاردەکان]]. == not yet sorted == * FloatNavToggleRight|FloatNavToggleRight.css == appearance == * myGadgets[default|rights=minoredit|dependencies=mediawiki.util]|myGadgets.js * dark-mode-toggle [dependencies=mediawiki.util, mediawiki.api, mediawiki.Uri, mediawiki.storage |peers=dark-mode-toggle-pagestyles] |dark-mode-toggle.js * dark-mode-toggle-pagestyles [hidden |skins=vector, vector-2022, minerva, monobook] |dark-mode-toggle-pagestyles.css * MoreMenu-local[dependencies=mediawiki.api,mediawiki.util,user.options]|MoreMenu-local.js * UTCLiveClock[supportsUrlLoad|type=general|dependencies=mediawiki.util,mediawiki.api|peers=UTCLiveClock-pagestyles]|UTCLiveClock.js|UTCLiveClock.css * UTCLiveClock-pagestyles[hidden|skins=vector,vector-2022,monobook]|UTCLiveClock-pagestyles.css == interface-gadgets == * Navigation_popups[dependencies=mediawiki.user,mediawiki.util,user.options,mediawiki.util|type=general]|popups.js|navpop.css * lastedited[dependencies=mediawiki.util]|lastedited&quickeditcounter.js == editing-gadgets == * quickLinker[dependencies=mediawiki.util,mediawiki.api]|quickLinker.js|quickLinker.css * HotCat[rights=autoconfirmed|dependencies=mediawiki.util]|HotCat.js * Cat-a-lot[rights=autoconfirmed|dependencies=mediawiki.util]|Cat-a-lot.css|Cat-a-lot.js * CatMaker[dependencies=mediawiki.util,mediawiki.api,mediawiki.ForeignApi,jquery.ui]|CatMaker.js * RedirectMaker[dependencies=jquery.ui,mediawiki.util,mediawiki.api]|RedirectMaker.js * charinsert [default |actions=edit] |charinsert.js * charinsert-core [hidden |dependencies=jquery.textSelection, user, mediawiki.storage] |charinsert-styles.css |charinsert-core.js * FastRevert[dependencies=mediawiki.util]|FastRevert.js * DotsSyntaxHighlighter|DotsSyntaxHighlighter.js * TranslationAdder[rights=delete|dependencies=ext.gadget.Editor,ext.gadget.LegacyScriptsNewNode,mediawiki.cookie,ext.gadget.LanguageUtils,mediawiki.util,ext.gadget.TranslationAdder-Data]|TranslationAdder.js == discussion == * autosign[default]|autosign.js * DiscussionCloser|DiscussionCloser.js|DiscussionCloser.css * signit|signit.js * close[dependencies=mediawiki.util]|close.js|close.css == Test == * Extra-Editbuttons[dependencies=mediawiki.util]|Extra-Editbuttons.js|Extra-Editbuttons-kurdishtools.js|Extra-Editbuttons-kurdishwikitools.js|Extra-Editbuttons-dictionary.js|Extra-Editbuttons-template.js|Extra-Editbuttons-autoed.js|Extra-Editbuttons-botworks.js == modules == * dark-mode [supportsUrlLoad |skins=vector, vector-2022, monobook, modern, minerva, timeless] |dark-mode.css == Hidden gadgets and utils == * Editor[hidden|dependencies=mediawiki.util,mediawiki.api]|Editor.js * LegacyScriptsNewNode[hidden|targets=desktop,mobile]|LegacyScriptsNewNode.js * LanguageUtils[hidden|dependencies=mediawiki.api,ext.gadget.StorageUtils]|LanguageUtils.js * StorageUtils[hidden|dependencies=mediawiki.cookie,mediawiki.storage]|StorageUtils.js * TranslationAdder-Data[hidden|dependencies=mediawiki.api,mediawiki.Uri,ext.gadget.LanguageUtils]|TranslationAdder-Data.js * VisibilityToggles[hidden|targets=desktop,mobile|dependencies=user,mediawiki.cookie]|VisibilityToggles.js * defaultVisibilityToggles[hidden|default|targets=desktop,mobile|dependencies=ext.gadget.VisibilityToggles]|defaultVisibilityToggles.js gxd4koq86wwlhh604cks872lly8yhn9 مۆدیوول:message box 828 10682 47384 47369 2026-10-15T13:10:34Z Sakura emad 13 Restored Wiktionary's own message box module (rev 33891 by Aram), used by {{auto cat}}; Wikipedia's code now lives at [[Module:Message box]] 47384 Scribunto text/plain local html_create = mw.html.create local tostring = tostring local export = {} local function make_box(tag, rows, image, header, text) tag = tag:addClass("noprint") :tag("table") :tag("tr") :tag("td") if rows > 1 then tag:attr("rowspan", rows) end tag = tag:wikitext(image) :done() if header then tag = tag:node(header) :done() :tag("tr") end return tostring(tag:tag("td") :wikitext(text) :allDone()) .. require("Module:TemplateStyles")("Module:message box/styles.css") end function export.maintenance(color, image, title, text) local div = html_create("div") :addClass("maintenance-box") :addClass("maintenance-box-" .. color) local header = html_create("th") :css("text-align", "left") :wikitext(title) return make_box(div, 2, image, header, text) end function export.request(image, text) local div = html_create("div") :addClass("request-box") return make_box(div, 1, image, nil, text) end return export 0njvtu4cuuvz98uci9fdhcz9qzscuod ھۆژین 0 10938 47399 36595 2026-10-15T16:28:12Z Ghybu 12 /* کوردیی ناوەندی */ 47399 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === پەیوەندیدارە بە وشەی [[ھۆش]] (بیر، زەین، ئاگا). === گۆکردن === * {{IPA|ckb|/hoːˈʒiːn/}} === ناو === {{ckb-noun}} # بیرکردنەوەی قووڵ، ڕامان و تێفکرینی ورد لەسەر شتێک؛ ژیری و تێگەیشتنی بەرز. #: {{ux|ckb|نموونە: پاش خوێندنەوەی کتێبەکە، کەوتە '''هۆژین'''ێکی قووڵەوە.|tr=-}} ==== هاوواتا ==== * [[ڕامان]] * [[تێفکرین]] * [[بیرکردنەوەی قووڵ]] ==== وەرگێڕانەکان ==== {{trans-top|بیرکردنەوەی قووڵ}} * ئینگلیزی: {{t+|en|contemplation}}, {{t+|en|deep thought}}, {{t+|en|reflection}} * عەرەبی: {{t+|ar|تَأَمُّل|m}}, {{t+|ar|تَفَكُّر|m}} {{trans-mid}} * فارسی: {{t+|fa|تأمل|tr=ta'ammol}}, {{t|fa|اندیشه عمیق|tr=andiše-ye amiq}} * تورکی: {{t+|tr|derin düşünce}} {{trans-bottom}} f9ffpe247ljg3rlvnkciah3akv6yzjm بیرکردنەوەی قووڵ 0 10939 47397 38654 2026-10-15T16:16:45Z Ghybu 12 /* کوردیی ناوەندی */ 47397 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === لێکدراوە لە [[بیرکردنەوە]] + [[ی]] (ئیزافە) + [[قووڵ]]. === گۆکردن === * {{IPA|ckb|/biːrkɪrdɪnɛwɛj quːɭ/}} === ناو === {{ckb-phrase}} # تێفکرینی ورد و چڕ لەسەر بابەتێک؛ ڕامان. #: {{ux|ckb|نموونە: گەیشتن بە چارەسەرێکی باش پێویستی بە '''بیرکردنەوەیەکی قووڵ''' هەیە.|tr=-}} ==== هاوواتا ==== * [[ھۆژین]] * [[ڕامان]] * [[تێفکرین]] ==== وەرگێڕانەکان ==== {{trans-top|تێفکرینی ورد و چڕ}} * ئینگلیزی: {{t+|en|deep thought}}, {{t+|en|contemplation}} * عەربی: {{t+|ar|تَفْكِير عَمِيق|m}} {{trans-mid}} * فارسی: {{t|fa|تفکر عمیق|tr=tafakkor-e amiq}}, {{t|fa|اندیشه ژرف|tr=andiše-ye žarf}} * تورکی: {{t+|tr|derin düşünce}} {{trans-bottom}} qt1390diraqkzblgakejgr1fngjfubi تێفکرین 0 10954 47400 38661 2026-10-15T16:28:48Z Ghybu 12 /* کوردیی ناوەندی */ 47400 wikitext text/x-wiki == کوردیی ناوەندی == === وشەڕەتناسی === وەرگیراوە لە وشەی عەرەبیی [[تَفْكِير]] (tafkīr). === گۆکردن === * {{IPA|ckb|/teːfɪkˈriːn/}} === ناو === {{ckb-noun}} # بیرکردنەوەی قووڵ و ورد لەسەر بابەتێک؛ ڕامان. #: {{ux|ckb|نموونە: چارەسەری کێشەکە پێویستی بە '''تێفکرین'''ێکی زۆر ھەیە.|tr=-}} ==== ھاوواتا ==== * [[ھۆژین]] * [[ڕامان]] * [[بیرکردنەوەی قووڵ]] ==== وەرگێڕانەکان ==== {{trans-top|بیرکردنەوەی قووڵ}} * ئینگلیزی: {{t+|en|thinking}}, {{t+|en|reflection}}, {{t+|en|contemplation}} * عەرەبی: {{t+|ar|تَفْكِير|m}} {{trans-mid}} * فارسی: {{t+|fa|تفکر|tr=tafakkor}}, {{t+|fa|اندیشیدن|tr=andišidan}} * تورکی: {{t+|tr|düşünme}}, {{t+|tr|tefekkür}} {{trans-bottom}} gjo1w0pryevykybftmcuiopjlzsjvci میدیاویکی:Gadget-close.js 8 11686 47396 47301 2026-10-15T15:57:21Z Sakura emad 13 Local Wiktionary version of the close gadget (no longer loads from ckbwiki). 47396 javascript text/javascript /* * MediaWiki:Gadget-close.js — ویکیفەرھەنگ (ckb.wiktionary.org) * Local version adapted from [[w:MediaWiki:Gadget-close.js]] (ckbwiki). * Adds «دەنگ بدە / داخستن» links next to section edit links on project * pages (namespace 4) and talk pages. */ // <nowiki> ( function ( $, mw ) { 'use strict'; var OOUI_MODULES = [ 'oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows' ]; var api = null; // created once mediawiki.api has loaded (see bottom) var pageName = mw.config.get( 'wgPageName' ); var windowManager = null; // Only templates that exist on ckbwiktionary. // vote: true → added as a new list line at the end, no indentation // prefix: true → starts with "* " (or "# " in numbered discussions) var COMMENT_TYPES = [ { data: 'info', icon: 'share', label: 'پەیام', text: '', summary: 'تۆمارکردنی پەیام' }, { data: 'opinion', icon: 'info', label: 'لێدوان', text: '{{لێدوان}} ', summary: 'تۆمارکردنی لێدوان', prefix: true }, { data: 'done', icon: 'check', label: 'کرا', text: '{{کرا}} ', summary: 'کرا' }, { data: 'notdone', icon: 'close', label: 'نەکرا', text: '{{نەکرا}} ', summary: 'نەکرا' }, { data: 'agree', icon: 'add', label: 'لەگەڵ', text: '{{لەگەڵ}} ', summary: 'تۆمارکردنی لێدوان بە لەگەڵ', prefix: true, vote: true }, { data: 'contrary', icon: 'subtract', label: 'دژ', text: '{{دژ}} ', summary: 'تۆمارکردنی لێدوان بە دژ', prefix: true, vote: true }, { data: 'neutral', icon: 'ellipsis', label: 'بێلایەن', text: '{{بێلایەن}} ', summary: 'تۆمارکردنی لێدوان بە بێلایەن', prefix: true, vote: true }, { data: 'question', icon: 'help', label: 'پرسیار', text: '{{پرسیار}} ', summary: 'تۆمارکردنی پرسیار' } ]; function getType( data ) { for ( var i = 0; i < COMMENT_TYPES.length; i++ ) { if ( COMMENT_TYPES[ i ].data === data ) { return COMMENT_TYPES[ i ]; } } return COMMENT_TYPES[ 0 ]; } /* ---------- wikitext helpers ---------- */ function sectionTitle( text ) { var m = text.match( /^(=+)\s*(.*?)\s*\1\s*$/m ); return m ? m[ 2 ] : 'بەشی دەستپێک'; } // Text of the section above its first sub-heading, or null if there is none. function topPart( text ) { var lines = text.split( '\n' ); for ( var i = 1; i < lines.length; i++ ) { if ( /^={2,}[^=].*?={2,}\s*$/.test( lines[ i ] ) ) { return lines.slice( 0, i ).join( '\n' ).replace( /\s+$/, '' ); } } return null; } // indentMode: 1 = reply to previous, 2 = same level, 3 = start of line function addIndented( text, newText, indentMode ) { text = text.replace( /\r/g, '' ).replace( /\s+$/, '' ); var lines = text.split( '\n' ); var m = lines[ lines.length - 1 ].match( /^([#*]?)(:*)/ ); var listChar = m[ 1 ]; var colons = m[ 2 ].length; if ( indentMode === 2 ) { colons -= 1; } var indent = ''; if ( indentMode !== 3 ) { for ( var i = 0; i < colons + 1; i++ ) { indent += ':'; } } return text + '\n' + listChar + indent + newText.trim().replace( /\n/g, '\n' + listChar + indent ); } function pingedUsers( text ) { var re = /\[\[(?:لێدوانی[_ ]بەکارھێنەر|[Uu]ser[_ ][Tt]alk|بەکارھێنەر|[Uu]ser):([^\]|\/#]+)/g; var me = mw.config.get( 'wgUserName' ); var names = []; var m; while ( ( m = re.exec( text ) ) !== null ) { var name = m[ 1 ].trim(); if ( name && name !== me && names.indexOf( name ) === -1 ) { names.push( name ); } } return names; } /* ---------- API ---------- */ function fetchSection( section ) { return api.get( { action: 'query', prop: 'revisions', titles: pageName, rvsection: section, rvprop: 'content|timestamp', rvslots: 'main', curtimestamp: 1, formatversion: 2 } ).then( function ( data ) { var page = data.query && data.query.pages && data.query.pages[ 0 ]; if ( !page || page.missing || !page.revisions ) { return $.Deferred().reject( 'nosection' ).promise(); } var rev = page.revisions[ 0 ]; return { text: rev.slots.main.content, basetimestamp: rev.timestamp, starttimestamp: data.curtimestamp }; } ); } function saveSection( section, text, summary, info ) { return api.postWithEditToken( { action: 'edit', title: pageName, section: section, text: text, summary: summary, basetimestamp: info.basetimestamp, starttimestamp: info.starttimestamp, formatversion: 2 } ); } function asProcessError( code ) { var msg = code === 'editconflict' ? 'ناکۆکیی دەستکاری: کەسێکی تر لە ھەمان کاتدا ئەم بەشەی گۆڕیوە. پەڕەکە نوێ بکەرەوە.' : 'تۆمارکردن سەرکەوتوو نەبوو: ' + code; return $.Deferred().reject( new OO.ui.Error( msg, { recoverable: false } ) ).promise(); } function openDialog( dialog ) { if ( windowManager ) { windowManager.$element.remove(); } windowManager = new OO.ui.WindowManager(); $( document.body ).append( windowManager.$element ); windowManager.addWindows( [ dialog ] ); windowManager.openWindow( dialog ); } /* ---------- «داخستن» dialog ---------- */ function openArchiveDialog( section ) { function ArchiveDialog( config ) { ArchiveDialog.super.call( this, config ); } OO.inheritClass( ArchiveDialog, OO.ui.ProcessDialog ); ArchiveDialog.static.name = 'closeSectionArchive'; ArchiveDialog.static.title = 'داخستنی بەش'; ArchiveDialog.static.actions = [ { action: 'archive', label: 'داخستنی بەش', flags: [ 'primary', 'progressive' ] }, { label: 'ھەڵوەشاندنەوە', flags: 'safe' } ]; ArchiveDialog.prototype.initialize = function () { ArchiveDialog.super.prototype.initialize.apply( this, arguments ); this.switchTop = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchSuccess = new OO.ui.ToggleSwitchWidget( { value: true } ); this.switchDone = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchBold = new OO.ui.ToggleSwitchWidget( { value: false } ); this.summary = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی داخستنەکە داخڵ بکە', rows: 6 } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.switchTop, { label: 'دەقی داخستنەکە ببە سەرەوە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchSuccess, { label: 'وتووێژەکە بە گەیشتن بە یەکدەنگی سەرکەوتوو بوو', align: 'inline' } ), new OO.ui.FieldLayout( this.switchDone, { label: 'بەپێی سەرکەوتووبوون یان نەبوون، {{کرا}} یان {{نەکرا}} زیاد بکە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchBold, { label: 'دەقی داخستنەکە بە تۆخ پیشان بدە', align: 'inline' } ), new OO.ui.FieldLayout( this.summary, { label: 'داخستنی بەش:', align: 'top' } ) ] ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element ); this.$body.append( this.panel.$element ); }; ArchiveDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; ArchiveDialog.prototype.buildText = function ( current ) { var nl = current.indexOf( '\n' ); var header = nl === -1 ? current : current.slice( 0, nl ); var content = nl === -1 ? '' : current.slice( nl + 1 ); var success = this.switchSuccess.getValue(); var input = this.summary.getValue().trim(); var newText = header + '\n{{بەسراو|کات={{subst:' + 'CURRENTTIMESTAMP}}' + ( success ? '}}\n' : '|سەرکەوتوو_نەبوو=بەڵێ}}\n' ); if ( this.switchDone.getValue() ) { input = ( success ? '{{کرا}}' : '{{نەکرا}}' ) + input; } var closingNote = ''; if ( input ) { closingNote = ( this.switchBold.getValue() ? "'''" + input + "'''" : input ) + ' ~~' + '~~'; } if ( this.switchTop.getValue() ) { if ( closingNote ) { newText += ':' + closingNote + '\n'; } newText += content; } else { newText = closingNote ? addIndented( newText + content, closingNote, 1 ) : newText + content; } return newText.replace( /\s+$/, '' ) + '\n{{کۆتایی بەسراو}}'; }; ArchiveDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'archive' ) { return new OO.ui.Process( function () { return fetchSection( section ).then( function ( info ) { var summary = '/* ' + sectionTitle( info.text ) + ' */ داخستنی بەش: ' + dialog.summary.getValue().trim(); return saveSection( section, dialog.buildText( info.text ), summary, info ); } ).then( function () { mw.notify( 'بەشەکە داخرا.' ); location.reload(); }, asProcessError ); } ); } return ArchiveDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new ArchiveDialog( { size: 'medium' } ) ); } /* ---------- «دەنگ بدە» dialog ---------- */ function openCommentDialog( section ) { fetchSection( section ).then( function ( info ) { var onlyTop = false; var top = topPart( info.text ); if ( top !== null ) { onlyTop = confirm( 'ئەم بەشە ژێربەشیشی ھەیە! بۆ ناردنی دەق، مەبەستت بەشی سەرترە؟\n' + 'OK = پەیامەکە لە بەشی سەرتر دادەنرێت.\n' + 'Cancel = پەیامەکە لە کۆتایی بەشەکە دادەنرێت.' ); } var users = pingedUsers( info.text ); function CommentDialog( config ) { CommentDialog.super.call( this, config ); } OO.inheritClass( CommentDialog, OO.ui.ProcessDialog ); CommentDialog.static.name = 'closeSectionComment'; CommentDialog.static.title = 'دەقی لێدوان'; CommentDialog.static.actions = [ { action: 'comment', label: 'تۆمارکردن', flags: [ 'primary', 'progressive' ] }, { action: 'preview', label: 'پێشبینین', icon: 'eye' }, { action: 'cancel', label: 'دای بخە', flags: 'safe' } ]; CommentDialog.prototype.initialize = function () { CommentDialog.super.prototype.initialize.apply( this, arguments ); var dialog = this; this.btnReply = new OO.ui.ButtonOptionWidget( { data: 1, label: 'وەڵامی پێشوو', title: 'پەیامەکە لە وەڵامی کەسی پێشوو دەنووسرێ.' } ); this.btnSame = new OO.ui.ButtonOptionWidget( { data: 2, label: 'بەبێ بردنەپێش', title: 'پەیامەکە بەبێ بردنەپێش دەنووسرێ.' } ); this.btnNone = new OO.ui.ButtonOptionWidget( { data: 3, label: 'سەری دێڕ', title: 'پەیامەکە لە سەری دێڕ دەست پێ دەکات.' } ); this.indentSelect = new OO.ui.ButtonSelectWidget( { items: [ this.btnReply, this.btnSame, this.btnNone ] } ); this.indentSelect.selectItem( this.btnReply ); this.typeDropdown = new OO.ui.DropdownWidget( { menu: { items: COMMENT_TYPES.map( function ( t ) { return new OO.ui.MenuOptionWidget( { data: t.data, icon: t.icon, label: t.label } ); } ) } } ); this.typeDropdown.getMenu().selectItemByData( 'info' ); this.typeDropdown.getMenu().on( 'select', function ( item ) { var isVote = item && getType( item.getData() ).vote; dialog.btnReply.setDisabled( !!isVote ); dialog.btnSame.setDisabled( !!isVote ); dialog.indentSelect.selectItem( isVote ? dialog.btnNone : dialog.btnReply ); } ); this.pingSelect = new OO.ui.MenuTagMultiselectWidget( { inputPosition: 'outline', allowArbitrary: true, options: users.map( function ( u ) { return { data: u, label: u }; } ), placeholder: 'ناوی ئەو بەکارھێنەرە بنووسە کە دەتەوێ وەڵامی بدەیتەوە' } ); this.comment = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی لێدوانەکە داخڵ بکە', rows: 6, autosize: true } ); var toolbar = new OO.ui.HorizontalLayout( { items: [ this.makeTool( 'bold', 'دەقی تۆخ', "'''", "'''" ), this.makeTool( 'italic', 'دەقی لار', "''", "''" ), this.makeTool( 'link', 'ویکیبەستەر', '[[', ']]' ), this.makeTool( 'bigger', 'دەقی گەورەتر', '<big>', '</big>' ), this.makeTool( 'smaller', 'دەقی بچووکتر', '<small>', '</small>' ), this.makeTool( 'newline', 'دێڕی نوێ', '<br>', '' ) ] } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.pingSelect, { label: 'بانگکردنی بەکارھێنەر:', align: 'top' } ), new OO.ui.FieldLayout( this.indentSelect, { label: 'بردنەپێش:', align: 'top' } ), new OO.ui.FieldLayout( this.typeDropdown, { label: 'تاگی پێش لێدوان:', align: 'top' } ), new OO.ui.FieldLayout( toolbar ), new OO.ui.FieldLayout( this.comment, { label: 'دەقی لێدوان:', align: 'top' } ) ] ); this.$preview = $( '<div>' ).css( { display: 'none', marginTop: '1em', padding: '0.5em', border: '1px solid var(--border-color-subtle, #c8ccd1)' } ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element, this.$preview ); this.$body.append( this.panel.$element ); }; CommentDialog.prototype.makeTool = function ( icon, title, before, after ) { var dialog = this; var button = new OO.ui.ButtonWidget( { framed: false, icon: icon, title: title, invisibleLabel: true, label: title } ); button.on( 'click', function () { var el = dialog.comment.$input[ 0 ]; var start = el.selectionStart; var end = el.selectionEnd; var value = dialog.comment.getValue(); dialog.comment.setValue( value.slice( 0, start ) + before + value.slice( start, end ) + after + value.slice( end ) ); el.focus(); el.selectionStart = el.selectionEnd = end + before.length + after.length; } ); return button; }; CommentDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; CommentDialog.prototype.buildText = function () { var type = getType( this.typeDropdown.getMenu().findSelectedItem().getData() ); var indentMode = this.indentSelect.findSelectedItem().getData(); var listPrefix = /\n#/.test( info.text ) ? '# ' : '* '; var pinged = this.pingSelect.getValue(); var pingText = pinged.length ? '{{وب|' + pinged.join( '|' ) + '}}' : ''; var newText = ( type.prefix ? listPrefix : '' ) + pingText + type.text + this.comment.getValue().trim() + ' ~~' + '~~'; var base = onlyTop ? top : info.text.replace( /\s+$/, '' ); var updated = type.vote ? base + '\n' + newText : addIndented( base, newText, indentMode ); var full = onlyTop ? updated + info.text.slice( top.length ) : updated; var summary = '/* ' + sectionTitle( info.text ) + ' */ ' + type.summary + ( pinged.length ? ' + وەڵام بۆ بەکارھێنەر: ' + pinged.join( '، ' ) : '' ); return { text: full, summary: summary, comment: newText }; }; CommentDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'comment' ) { return new OO.ui.Process( function () { if ( !dialog.comment.getValue().trim() && getType( dialog.typeDropdown.getMenu().findSelectedItem().getData() ).data === 'info' ) { return $.Deferred().reject( new OO.ui.Error( 'تکایە دەقی لێدوانەکە بنووسە.' ) ).promise(); } var built = dialog.buildText(); return saveSection( section, built.text, built.summary, info ).then( function () { mw.notify( 'لێدوانەکەت تۆمار کرا.' ); location.reload(); }, asProcessError ); } ); } if ( action === 'preview' ) { return new OO.ui.Process( function () { var built = dialog.buildText(); return api.post( { action: 'parse', text: built.comment, title: pageName, pst: true, prop: 'text', disablelimitreport: true, formatversion: 2 } ).then( function ( data ) { dialog.$preview.html( data.parse.text ).show(); dialog.updateSize(); }, function ( code ) { return $.Deferred().reject( new OO.ui.Error( 'پێشبینین سەرکەوتوو نەبوو: ' + code ) ).promise(); } ); } ); } if ( action === 'cancel' ) { return new OO.ui.Process( function () { dialog.close(); } ); } return CommentDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new CommentDialog( { size: 'large' } ) ); }, function ( code ) { mw.notify( 'خوێندنەوەی بەشەکە سەرکەوتوو نەبوو: ' + code, { type: 'error' } ); } ); } /* ---------- links next to section headings ---------- */ function addLinks( $content ) { $content.find( '.mw-editsection' ).each( function () { var $editSection = $( this ); if ( $editSection.closest( '#firstHeading, .mw-first-heading' ).length || $editSection.next( '.mw-archivesection' ).length ) { return; } // Only sections of this page; transcluded sections use "section=T-n" and are skipped. var section = null; $editSection.find( 'a' ).each( function () { var m = ( $( this ).attr( 'href' ) || '' ).match( /[?&](?:ve)?section=(\d+)(?:&|$)/ ); if ( m && section === null ) { section = m[ 1 ]; } } ); if ( section === null ) { return; } function link( text, title, opener ) { return $( '<a>' ).attr( { href: '#', title: title } ).css( 'font-size', 'smaller' ).text( text ) .on( 'click', function ( e ) { e.preventDefault(); e.stopPropagation(); // don't collapse the section on mobile mw.loader.using( OOUI_MODULES ).then( function () { opener( section ); } ); } ); } $( '<span>' ).addClass( 'mw-archivesection' ).append( $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( '[' ), link( 'دەنگ بدە', 'بە لەگەڵ/دژ/کرا/… دەنگ بدە', openCommentDialog ), $( '<span>' ).text( ' / ' ).css( 'color', 'var(--color-subtle, #54595d)' ), link( 'داخستن', 'ئەم بەشە داخە', openArchiveDialog ), $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( ']' ) ).insertAfter( $editSection ); } ); } var ns = mw.config.get( 'wgNamespaceNumber' ); if ( ( ns === 4 || ns % 2 === 1 ) && mw.config.get( 'wgAction' ) === 'view' ) { mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).then( function () { if ( mw.util.getParamValue( 'oldid' ) || mw.util.getParamValue( 'diff' ) ) { return; } api = new mw.Api(); mw.hook( 'wikipage.content' ).add( addLinks ); mw.loader.load( OOUI_MODULES ); } ); } }( jQuery, mediaWiki ) ); // </nowiki> 9omts0alo8r3hxjgwh6yn528gm685x6 47398 47396 2026-10-15T16:17:03Z Sakura emad 13 Refactored, Bugs fixed, tailored for Wiktionary instead of ckbwiki 47398 javascript text/javascript /* * MediaWiki:Gadget-close.js — ویکیفەرھەنگ (ckb.wiktionary.org) * Local version adapted from [[w:MediaWiki:Gadget-close.js]] (ckbwiki). * Adds «دەنگ بدە / داخستن» links next to section edit links on project * pages (namespace 4) and talk pages. */ // <nowiki> ( function ( $, mw ) { 'use strict'; var OOUI_MODULES = [ 'oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows' ]; // Icon packs are loaded without waiting: if one is missing the dialogs // still open, they only lose that icon. var ICON_MODULES = [ 'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-content', 'oojs-ui.styles.icons-moderation', 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-accessibility', 'oojs-ui.styles.icons-editing-core', 'oojs-ui.styles.icons-editing-styling', 'oojs-ui.styles.icons-editing-advanced' ]; var api = null; // created once mediawiki.api has loaded (see bottom) var pageName = mw.config.get( 'wgPageName' ); var windowManager = null; // Only templates that exist on ckbwiktionary. // vote: true → added as its own line at the end of the section, never indented // prefix: true → starts with "* " (or "# " in numbered discussions) var COMMENT_TYPES = [ { data: 'info', icon: 'share', label: 'پەیام', text: '', summary: 'تۆمارکردنی پەیام' }, { data: 'opinion', icon: 'info', label: 'لێدوان', text: '{{لێدوان}}', summary: 'تۆمارکردنی لێدوان', prefix: true }, { data: 'done', icon: 'check', label: 'کرا', text: '{{کرا}}', summary: 'کرا' }, { data: 'notdone', icon: 'close', label: 'نەکرا', text: '{{نەکرا}}', summary: 'نەکرا' }, { data: 'agree', icon: 'add', label: 'لەگەڵ', text: '{{لەگەڵ}}', summary: 'تۆمارکردنی لێدوان بە لەگەڵ', prefix: true, vote: true }, { data: 'contrary', icon: 'subtract', label: 'دژ', text: '{{دژ}}', summary: 'تۆمارکردنی لێدوان بە دژ', prefix: true, vote: true }, { data: 'neutral', icon: 'ellipsis', label: 'بێلایەن', text: '{{بێلایەن}}', summary: 'تۆمارکردنی لێدوان بە بێلایەن', prefix: true, vote: true }, { data: 'question', icon: 'help', label: 'پرسیار', text: '{{پرسیار}}', summary: 'تۆمارکردنی پرسیار' } ]; var INDENT_REPLY = 1; // one level deeper than the last line var INDENT_SAME = 2; // same level as the last line var INDENT_NONE = 3; // start of line function getType( data ) { for ( var i = 0; i < COMMENT_TYPES.length; i++ ) { if ( COMMENT_TYPES[ i ].data === data ) { return COMMENT_TYPES[ i ]; } } return COMMENT_TYPES[ 0 ]; } /* ---------- wikitext helpers ---------- */ // Heading of the section, without wiki markup, for the edit summary. function sectionTitle( text ) { var m = text.match( /^(=+)\s*(.*?)\s*\1\s*$/m ); if ( !m ) { return 'بەشی دەستپێک'; } var title = m[ 2 ] .replace( /\[\[(?:[^\]|]*\|)?([^\]]*)\]\]/g, '$1' ) // [[a|b]] → b, [[a]] → a .replace( /\{\{[^{}]*\}\}/g, '' ) // templates .replace( /<[^>]+>/g, '' ) // HTML tags .replace( /'{2,}/g, '' ) // bold / italic .trim(); return title || 'بەشی دەستپێک'; } // Text of the section above its first sub-heading, or null if there is none. function topPart( text ) { var lines = text.split( '\n' ); for ( var i = 1; i < lines.length; i++ ) { if ( /^={2,}[^=].*?={2,}\s*$/.test( lines[ i ] ) ) { return lines.slice( 0, i ).join( '\n' ).replace( /\s+$/, '' ); } } return null; } function addIndented( text, newText, indentMode ) { text = text.replace( /\r/g, '' ).replace( /\s+$/, '' ); var lines = text.split( '\n' ); var m = lines[ lines.length - 1 ].match( /^([#*]?)(:*)/ ); var listChar = m[ 1 ]; var colons = m[ 2 ].length; var indent = ''; if ( indentMode === INDENT_REPLY ) { indent = listChar + new Array( colons + 2 ).join( ':' ); // one more ":" } else if ( indentMode === INDENT_SAME ) { indent = listChar + new Array( colons + 1 ).join( ':' ); // same "*" / ":" as the last line } return text + '\n' + indent + newText.trim().replace( /\n/g, '\n' + indent ); } function pingedUsers( text ) { var re = /\[\[(?:لێدوانی[_ ]بەکارھێنەر|[Uu]ser[_ ][Tt]alk|بەکارھێنەر|[Uu]ser):([^\]|\/#]+)/g; var skip = [ mw.config.get( 'wgUserName' ) ]; // On a user talk page, don't offer to ping the page owner. if ( mw.config.get( 'wgNamespaceNumber' ) === 3 ) { skip.push( mw.config.get( 'wgTitle' ).split( '/' )[ 0 ] ); } var names = []; var m; while ( ( m = re.exec( text ) ) !== null ) { var name = m[ 1 ].replace( /_/g, ' ' ).trim(); if ( name && skip.indexOf( name ) === -1 && names.indexOf( name ) === -1 ) { names.push( name ); } } return names; } /* ---------- API ---------- */ function fetchSection( section ) { return api.get( { action: 'query', prop: 'revisions', titles: pageName, rvsection: section, rvprop: 'content|timestamp', rvslots: 'main', curtimestamp: 1, formatversion: 2 } ).then( function ( data ) { var page = data.query && data.query.pages && data.query.pages[ 0 ]; if ( !page || page.missing || !page.revisions ) { return $.Deferred().reject( 'nosection' ).promise(); } var rev = page.revisions[ 0 ]; return { text: rev.slots.main.content, basetimestamp: rev.timestamp, starttimestamp: data.curtimestamp }; } ); } // basetimestamp/starttimestamp make MediaWiki refuse the save (editconflict) // if someone else changed the page after we read it. function saveSection( section, text, summary, info ) { return api.postWithEditToken( { action: 'edit', title: pageName, section: section, text: text, summary: summary, basetimestamp: info.basetimestamp, starttimestamp: info.starttimestamp, formatversion: 2 } ).then( function ( data ) { // e.g. a CAPTCHA comes back as a "successful" request with result=Failure if ( !data.edit || data.edit.result !== 'Success' ) { return $.Deferred().reject( 'editfailure', data ).promise(); } return data; } ); } // Turns an API failure into an error the ProcessDialog shows. // Recoverable errors get a "try again" button: that is how an edit filter // warning (e.g. non-standard characters) is confirmed, like saving twice. function asProcessError( code, result ) { if ( code === 'editconflict' ) { return $.Deferred().reject( new OO.ui.Error( 'ناکۆکیی دەستکاری: کەسێکی تر لە ھەمان کاتدا ئەم بەشەی گۆڕیوە. پەڕەکە نوێ بکەرەوە.', { recoverable: false } ) ).promise(); } var message = 'تۆمارکردن سەرکەوتوو نەبوو: ' + code; if ( result && ( result.error || result.errors ) ) { try { message = api.getErrorMessage( result ); } catch ( e ) {} } return $.Deferred().reject( new OO.ui.Error( message, { recoverable: true } ) ).promise(); } function openDialog( dialog ) { if ( windowManager ) { windowManager.destroy(); } windowManager = new OO.ui.WindowManager(); $( document.body ).append( windowManager.$element ); windowManager.addWindows( [ dialog ] ); windowManager.openWindow( dialog ); } /* ---------- «داخستن» dialog ---------- */ function openArchiveDialog( section ) { function ArchiveDialog( config ) { ArchiveDialog.super.call( this, config ); } OO.inheritClass( ArchiveDialog, OO.ui.ProcessDialog ); ArchiveDialog.static.name = 'closeSectionArchive'; ArchiveDialog.static.title = 'داخستنی بەش'; ArchiveDialog.static.actions = [ { action: 'archive', label: 'داخستنی بەش', flags: [ 'primary', 'progressive' ] }, { label: 'ھەڵوەشاندنەوە', flags: 'safe' } ]; ArchiveDialog.prototype.initialize = function () { ArchiveDialog.super.prototype.initialize.apply( this, arguments ); this.switchTop = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchSuccess = new OO.ui.ToggleSwitchWidget( { value: true } ); this.switchDone = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchBold = new OO.ui.ToggleSwitchWidget( { value: false } ); this.note = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی داخستنەکە داخڵ بکە', rows: 6 } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.switchTop, { label: 'دەقی داخستنەکە ببە سەرەوە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchSuccess, { label: 'وتووێژەکە بە گەیشتن بە یەکدەنگی سەرکەوتوو بوو', align: 'inline' } ), new OO.ui.FieldLayout( this.switchDone, { label: 'بەپێی سەرکەوتووبوون یان نەبوون، {{کرا}} یان {{نەکرا}} زیاد بکە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchBold, { label: 'دەقی داخستنەکە بە تۆخ پیشان بدە', align: 'inline' } ), new OO.ui.FieldLayout( this.note, { label: 'داخستنی بەش:', align: 'top' } ) ] ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element ); this.$body.append( this.panel.$element ); }; ArchiveDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; ArchiveDialog.prototype.getReadyProcess = function ( data ) { return ArchiveDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.note.focus(); }, this ); }; ArchiveDialog.prototype.buildText = function ( current ) { var nl = current.indexOf( '\n' ); var header = nl === -1 ? current : current.slice( 0, nl ); var content = nl === -1 ? '' : current.slice( nl + 1 ); var success = this.switchSuccess.getValue(); var input = this.note.getValue().trim(); var newText = header + '\n{{بەسراو|کات={{subst:' + 'CURRENTTIMESTAMP}}' + ( success ? '}}\n' : '|سەرکەوتوو_نەبوو=بەڵێ}}\n' ); if ( this.switchDone.getValue() ) { input = ( success ? '{{کرا}} ' : '{{نەکرا}} ' ) + input; } input = input.trim(); var closingNote = ''; if ( input ) { closingNote = ( this.switchBold.getValue() ? "'''" + input + "'''" : input ) + ' ~~' + '~~'; } if ( this.switchTop.getValue() ) { if ( closingNote ) { newText += ':' + closingNote + '\n'; } newText += content; } else { newText = closingNote ? addIndented( newText + content, closingNote, INDENT_REPLY ) : newText + content; } return newText.replace( /\s+$/, '' ) + '\n{{کۆتایی بەسراو}}'; }; ArchiveDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'archive' ) { return new OO.ui.Process( function () { return fetchSection( section ).then( function ( info ) { if ( /\{\{\s*بەسراو\s*[|}]/.test( info.text ) ) { return $.Deferred().reject( 'alreadyclosed' ).promise(); } var note = dialog.note.getValue().trim(); var summary = '/* ' + sectionTitle( info.text ) + ' */ داخستنی بەش' + ( note ? ': ' + note : '' ); return saveSection( section, dialog.buildText( info.text ), summary, info ); } ).then( function () { mw.notify( 'بەشەکە داخرا.' ); location.reload(); }, function ( code, result ) { if ( code === 'alreadyclosed' ) { return $.Deferred().reject( new OO.ui.Error( 'ئەم بەشە پێشتر داخراوە.', { recoverable: false } ) ).promise(); } return asProcessError( code, result ); } ); } ); } return ArchiveDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new ArchiveDialog( { size: 'medium' } ) ); } /* ---------- «دەنگ بدە» dialog ---------- */ function openCommentDialog( section ) { fetchSection( section ).then( function ( info ) { var onlyTop = false; var top = topPart( info.text ); if ( top !== null ) { onlyTop = confirm( 'ئەم بەشە ژێربەشیشی ھەیە! بۆ ناردنی دەق، مەبەستت بەشی سەرترە؟\n' + 'OK = پەیامەکە لە بەشی سەرتر دادەنرێت.\n' + 'Cancel = پەیامەکە لە کۆتایی بەشەکە دادەنرێت.' ); } var users = pingedUsers( info.text ); function CommentDialog( config ) { CommentDialog.super.call( this, config ); } OO.inheritClass( CommentDialog, OO.ui.ProcessDialog ); CommentDialog.static.name = 'closeSectionComment'; CommentDialog.static.title = 'دەقی لێدوان'; CommentDialog.static.actions = [ { action: 'comment', label: 'تۆمارکردن', flags: [ 'primary', 'progressive' ] }, { action: 'preview', label: 'پێشبینین', icon: 'eye' }, { label: 'دای بخە', flags: 'safe' } ]; CommentDialog.prototype.initialize = function () { CommentDialog.super.prototype.initialize.apply( this, arguments ); var dialog = this; var resize = function () { dialog.updateSize(); }; this.btnReply = new OO.ui.ButtonOptionWidget( { data: INDENT_REPLY, label: 'وەڵامی پێشوو', title: 'پەیامەکە لە وەڵامی کەسی پێشوو دەنووسرێ.' } ); this.btnSame = new OO.ui.ButtonOptionWidget( { data: INDENT_SAME, label: 'بەبێ بردنەپێش', title: 'پەیامەکە بەبێ بردنەپێش دەنووسرێ.' } ); this.btnNone = new OO.ui.ButtonOptionWidget( { data: INDENT_NONE, label: 'سەری دێڕ', title: 'پەیامەکە لە سەری دێڕ دەست پێ دەکات.' } ); this.indentSelect = new OO.ui.ButtonSelectWidget( { items: [ this.btnReply, this.btnSame, this.btnNone ] } ); this.indentSelect.selectItem( this.btnReply ); this.typeDropdown = new OO.ui.DropdownWidget( { menu: { items: COMMENT_TYPES.map( function ( t ) { return new OO.ui.MenuOptionWidget( { data: t.data, icon: t.icon, label: t.label } ); } ) } } ); this.typeDropdown.getMenu().selectItemByData( 'info' ); // Votes always go on their own line, so indentation doesn't apply. this.typeDropdown.getMenu().on( 'select', function ( item ) { var isVote = !!( item && getType( item.getData() ).vote ); dialog.btnReply.setDisabled( isVote ); dialog.btnSame.setDisabled( isVote ); dialog.indentSelect.selectItem( isVote ? dialog.btnNone : dialog.btnReply ); } ); this.pingSelect = new OO.ui.MenuTagMultiselectWidget( { inputPosition: 'outline', allowArbitrary: true, options: users.map( function ( u ) { return { data: u, label: u }; } ), placeholder: 'ناوی ئەو بەکارھێنەرە بنووسە کە دەتەوێ وەڵامی بدەیتەوە' } ); this.pingSelect.on( 'change', resize ); this.comment = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی لێدوانەکە داخڵ بکە', rows: 6, autosize: true } ); this.comment.on( 'resize', resize ); var toolbar = new OO.ui.HorizontalLayout( { items: [ this.makeTool( 'bold', 'دەقی تۆخ', "'''", "'''" ), this.makeTool( 'italic', 'دەقی لار', "''", "''" ), this.makeTool( 'link', 'ویکیبەستەر', '[[', ']]' ), this.makeTool( 'bigger', 'دەقی گەورەتر', '<big>', '</big>' ), this.makeTool( 'smaller', 'دەقی بچووکتر', '<small>', '</small>' ), this.makeTool( 'newline', 'دێڕی نوێ', '<br>', '' ) ] } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.pingSelect, { label: 'بانگکردنی بەکارھێنەر:', align: 'top' } ), new OO.ui.FieldLayout( this.indentSelect, { label: 'بردنەپێش:', align: 'top' } ), new OO.ui.FieldLayout( this.typeDropdown, { label: 'تاگی پێش لێدوان:', align: 'top' } ), new OO.ui.FieldLayout( toolbar ), new OO.ui.FieldLayout( this.comment, { label: 'دەقی لێدوان:', align: 'top' } ) ] ); this.$preview = $( '<div>' ).css( { display: 'none', marginTop: '1em', padding: '0.5em', border: '1px solid var(--border-color-subtle, #c8ccd1)' } ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element, this.$preview ); this.$body.append( this.panel.$element ); }; // Wraps the selected text (or inserts at the cursor). CommentDialog.prototype.makeTool = function ( icon, title, before, after ) { var dialog = this; var button = new OO.ui.ButtonWidget( { framed: false, icon: icon, title: title, invisibleLabel: true, label: title } ); button.on( 'click', function () { var el = dialog.comment.$input[ 0 ]; var value = dialog.comment.getValue(); var start = el.selectionStart; var end = el.selectionEnd; if ( typeof start !== 'number' ) { start = end = value.length; } dialog.comment.setValue( value.slice( 0, start ) + before + value.slice( start, end ) + after + value.slice( end ) ); el.focus(); el.selectionStart = el.selectionEnd = end + before.length + after.length; } ); return button; }; CommentDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; CommentDialog.prototype.getReadyProcess = function ( data ) { return CommentDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.comment.focus(); }, this ); }; CommentDialog.prototype.getSelectedType = function () { var item = this.typeDropdown.getMenu().findSelectedItem(); return getType( item ? item.getData() : 'info' ); }; CommentDialog.prototype.buildText = function () { var type = this.getSelectedType(); var indentItem = this.indentSelect.findSelectedItem(); var indentMode = indentItem ? indentItem.getData() : INDENT_REPLY; var listPrefix = /\n#/.test( info.text ) ? '# ' : '* '; var pinged = this.pingSelect.getValue(); var parts = []; if ( pinged.length ) { parts.push( '{{وب|' + pinged.join( '|' ) + '}}' ); } if ( type.text ) { parts.push( type.text ); } var comment = this.comment.getValue().trim(); if ( comment ) { parts.push( comment ); } parts.push( '~~' + '~~' ); var newText = ( type.prefix ? listPrefix : '' ) + parts.join( ' ' ); var base = onlyTop ? top : info.text.replace( /\s+$/, '' ); var updated = type.vote ? base.replace( /\s+$/, '' ) + '\n' + newText : addIndented( base, newText, indentMode ); var full = onlyTop ? updated + info.text.slice( top.length ) : updated; var summary = '/* ' + sectionTitle( info.text ) + ' */ ' + type.summary + ( pinged.length ? ' + وەڵام بۆ بەکارھێنەر: ' + pinged.join( '، ' ) : '' ); return { text: full, summary: summary, comment: newText }; }; CommentDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'comment' ) { return new OO.ui.Process( function () { if ( !dialog.comment.getValue().trim() && !dialog.pingSelect.getValue().length && dialog.getSelectedType().data === 'info' ) { return $.Deferred().reject( new OO.ui.Error( 'تکایە دەقی لێدوانەکە بنووسە.' ) ).promise(); } var built = dialog.buildText(); return saveSection( section, built.text, built.summary, info ).then( function () { mw.notify( 'لێدوانەکەت تۆمار کرا.' ); location.reload(); }, asProcessError ); } ); } if ( action === 'preview' ) { return new OO.ui.Process( function () { var built = dialog.buildText(); return api.post( { action: 'parse', text: built.comment, title: pageName, pst: true, prop: 'text', disablelimitreport: true, formatversion: 2 } ).then( function ( data ) { dialog.$preview.html( data.parse.text ).show(); dialog.updateSize(); }, function ( code ) { return $.Deferred().reject( new OO.ui.Error( 'پێشبینین سەرکەوتوو نەبوو: ' + code ) ).promise(); } ); } ); } return CommentDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new CommentDialog( { size: 'large' } ) ); }, function ( code ) { mw.notify( 'خوێندنەوەی بەشەکە سەرکەوتوو نەبوو: ' + code, { type: 'error' } ); } ); } /* ---------- links next to section headings ---------- */ function makeLink( text, title, section, opener ) { return $( '<a>' ).attr( { href: '#', role: 'button', title: title } ).css( 'font-size', 'smaller' ).text( text ) .on( 'click', function ( e ) { e.preventDefault(); e.stopPropagation(); // don't collapse the section on mobile mw.loader.using( OOUI_MODULES ).then( function () { opener( section ); }, function () { mw.notify( 'بارکردنی ئامرازەکە سەرکەوتوو نەبوو. پەڕەکە نوێ بکەرەوە.', { type: 'error' } ); } ); } ); } function addLinks( $content ) { $content.find( '.mw-editsection' ).each( function () { var $editSection = $( this ); if ( $editSection.closest( '#firstHeading, .mw-first-heading' ).length || $editSection.next( '.mw-archivesection' ).length ) { return; } // Only sections of this page; transcluded sections use "section=T-n" and are skipped. var section = null; $editSection.find( 'a' ).each( function () { var m = ( $( this ).attr( 'href' ) || '' ).match( /[?&](?:ve)?section=(\d+)(?:&|#|$)/ ); if ( m ) { section = m[ 1 ]; return false; // first match is enough } } ); if ( section === null ) { return; } $( '<span>' ).addClass( 'mw-archivesection' ).append( $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( '[' ), makeLink( 'دەنگ بدە', 'بە لەگەڵ/دژ/کرا/… دەنگ بدە', section, openCommentDialog ), $( '<span>' ).text( ' / ' ).css( 'color', 'var(--color-subtle, #54595d)' ), makeLink( 'داخستن', 'ئەم بەشە داخە', section, openArchiveDialog ), $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( ']' ) ).insertAfter( $editSection ); } ); } var ns = mw.config.get( 'wgNamespaceNumber' ); if ( ( ns === 4 || ns % 2 === 1 ) && mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgIsProbablyEditable' ) && mw.config.get( 'wgRevisionId' ) === mw.config.get( 'wgCurRevisionId' ) // not an old revision ) { mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).then( function () { if ( mw.util.getParamValue( 'diff' ) || mw.util.getParamValue( 'oldid' ) ) { return; } api = new mw.Api(); mw.hook( 'wikipage.content' ).add( addLinks ); mw.loader.load( OOUI_MODULES.concat( ICON_MODULES ) ); } ); } }( jQuery, mediaWiki ) ); // </nowiki> 2grmrgycbpoqiwnewhvfktrb185zgx0 47401 47398 2026-10-15T16:31:36Z Sakura emad 13 toolbar layout++ 47401 javascript text/javascript /* * MediaWiki:Gadget-close.js — ویکیفەرھەنگ (ckb.wiktionary.org) * Local version adapted from [[w:MediaWiki:Gadget-close.js]] (ckbwiki). * Adds «دەنگ بدە / داخستن» links next to section edit links on project * pages (namespace 4) and talk pages. */ // <nowiki> ( function ( $, mw ) { 'use strict'; var OOUI_MODULES = [ 'oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows' ]; // Icon packs are loaded without waiting: if one is missing the dialogs // still open, they only lose that icon. var ICON_MODULES = [ 'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-content', 'oojs-ui.styles.icons-moderation', 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-accessibility', 'oojs-ui.styles.icons-editing-core', 'oojs-ui.styles.icons-editing-styling', 'oojs-ui.styles.icons-editing-advanced' ]; var api = null; // created once mediawiki.api has loaded (see bottom) var pageName = mw.config.get( 'wgPageName' ); var windowManager = null; // Only templates that exist on ckbwiktionary. // vote: true → added as its own line at the end of the section, never indented // prefix: true → starts with "* " (or "# " in numbered discussions) var COMMENT_TYPES = [ { data: 'info', icon: 'share', label: 'پەیام', text: '', summary: 'تۆمارکردنی پەیام' }, { data: 'opinion', icon: 'info', label: 'لێدوان', text: '{{لێدوان}}', summary: 'تۆمارکردنی لێدوان', prefix: true }, { data: 'done', icon: 'check', label: 'کرا', text: '{{کرا}}', summary: 'کرا' }, { data: 'notdone', icon: 'close', label: 'نەکرا', text: '{{نەکرا}}', summary: 'نەکرا' }, { data: 'agree', icon: 'add', label: 'لەگەڵ', text: '{{لەگەڵ}}', summary: 'تۆمارکردنی لێدوان بە لەگەڵ', prefix: true, vote: true }, { data: 'contrary', icon: 'subtract', label: 'دژ', text: '{{دژ}}', summary: 'تۆمارکردنی لێدوان بە دژ', prefix: true, vote: true }, { data: 'neutral', icon: 'ellipsis', label: 'بێلایەن', text: '{{بێلایەن}}', summary: 'تۆمارکردنی لێدوان بە بێلایەن', prefix: true, vote: true }, { data: 'question', icon: 'help', label: 'پرسیار', text: '{{پرسیار}}', summary: 'تۆمارکردنی پرسیار' } ]; var INDENT_REPLY = 1; // one level deeper than the last line var INDENT_SAME = 2; // same level as the last line var INDENT_NONE = 3; // start of line function getType( data ) { for ( var i = 0; i < COMMENT_TYPES.length; i++ ) { if ( COMMENT_TYPES[ i ].data === data ) { return COMMENT_TYPES[ i ]; } } return COMMENT_TYPES[ 0 ]; } /* ---------- wikitext helpers ---------- */ // Heading of the section, without wiki markup, for the edit summary. function sectionTitle( text ) { var m = text.match( /^(=+)\s*(.*?)\s*\1\s*$/m ); if ( !m ) { return 'بەشی دەستپێک'; } var title = m[ 2 ] .replace( /\[\[(?:[^\]|]*\|)?([^\]]*)\]\]/g, '$1' ) // [[a|b]] → b, [[a]] → a .replace( /\{\{[^{}]*\}\}/g, '' ) // templates .replace( /<[^>]+>/g, '' ) // HTML tags .replace( /'{2,}/g, '' ) // bold / italic .trim(); return title || 'بەشی دەستپێک'; } // Text of the section above its first sub-heading, or null if there is none. function topPart( text ) { var lines = text.split( '\n' ); for ( var i = 1; i < lines.length; i++ ) { if ( /^={2,}[^=].*?={2,}\s*$/.test( lines[ i ] ) ) { return lines.slice( 0, i ).join( '\n' ).replace( /\s+$/, '' ); } } return null; } function addIndented( text, newText, indentMode ) { text = text.replace( /\r/g, '' ).replace( /\s+$/, '' ); var lines = text.split( '\n' ); var m = lines[ lines.length - 1 ].match( /^([#*]?)(:*)/ ); var listChar = m[ 1 ]; var colons = m[ 2 ].length; var indent = ''; if ( indentMode === INDENT_REPLY ) { indent = listChar + new Array( colons + 2 ).join( ':' ); // one more ":" } else if ( indentMode === INDENT_SAME ) { indent = listChar + new Array( colons + 1 ).join( ':' ); // same "*" / ":" as the last line } return text + '\n' + indent + newText.trim().replace( /\n/g, '\n' + indent ); } function pingedUsers( text ) { var re = /\[\[(?:لێدوانی[_ ]بەکارھێنەر|[Uu]ser[_ ][Tt]alk|بەکارھێنەر|[Uu]ser):([^\]|\/#]+)/g; var skip = [ mw.config.get( 'wgUserName' ) ]; // On a user talk page, don't offer to ping the page owner. if ( mw.config.get( 'wgNamespaceNumber' ) === 3 ) { skip.push( mw.config.get( 'wgTitle' ).split( '/' )[ 0 ] ); } var names = []; var m; while ( ( m = re.exec( text ) ) !== null ) { var name = m[ 1 ].replace( /_/g, ' ' ).trim(); if ( name && skip.indexOf( name ) === -1 && names.indexOf( name ) === -1 ) { names.push( name ); } } return names; } /* ---------- API ---------- */ function fetchSection( section ) { return api.get( { action: 'query', prop: 'revisions', titles: pageName, rvsection: section, rvprop: 'content|timestamp', rvslots: 'main', curtimestamp: 1, formatversion: 2 } ).then( function ( data ) { var page = data.query && data.query.pages && data.query.pages[ 0 ]; if ( !page || page.missing || !page.revisions ) { return $.Deferred().reject( 'nosection' ).promise(); } var rev = page.revisions[ 0 ]; return { text: rev.slots.main.content, basetimestamp: rev.timestamp, starttimestamp: data.curtimestamp }; } ); } // basetimestamp/starttimestamp make MediaWiki refuse the save (editconflict) // if someone else changed the page after we read it. function saveSection( section, text, summary, info ) { return api.postWithEditToken( { action: 'edit', title: pageName, section: section, text: text, summary: summary, basetimestamp: info.basetimestamp, starttimestamp: info.starttimestamp, formatversion: 2 } ).then( function ( data ) { // e.g. a CAPTCHA comes back as a "successful" request with result=Failure if ( !data.edit || data.edit.result !== 'Success' ) { return $.Deferred().reject( 'editfailure', data ).promise(); } return data; } ); } // Turns an API failure into an error the ProcessDialog shows. // Recoverable errors get a "try again" button: that is how an edit filter // warning (e.g. non-standard characters) is confirmed, like saving twice. function asProcessError( code, result ) { if ( code === 'editconflict' ) { return $.Deferred().reject( new OO.ui.Error( 'ناکۆکیی دەستکاری: کەسێکی تر لە ھەمان کاتدا ئەم بەشەی گۆڕیوە. پەڕەکە نوێ بکەرەوە.', { recoverable: false } ) ).promise(); } var message = 'تۆمارکردن سەرکەوتوو نەبوو: ' + code; if ( result && ( result.error || result.errors ) ) { try { message = api.getErrorMessage( result ); } catch ( e ) {} } return $.Deferred().reject( new OO.ui.Error( message, { recoverable: true } ) ).promise(); } function openDialog( dialog ) { if ( windowManager ) { windowManager.destroy(); } windowManager = new OO.ui.WindowManager(); $( document.body ).append( windowManager.$element ); windowManager.addWindows( [ dialog ] ); windowManager.openWindow( dialog ); } /* ---------- «داخستن» dialog ---------- */ function openArchiveDialog( section ) { function ArchiveDialog( config ) { ArchiveDialog.super.call( this, config ); } OO.inheritClass( ArchiveDialog, OO.ui.ProcessDialog ); ArchiveDialog.static.name = 'closeSectionArchive'; ArchiveDialog.static.title = 'داخستنی بەش'; ArchiveDialog.static.actions = [ { action: 'archive', label: 'داخستنی بەش', flags: [ 'primary', 'progressive' ] }, { label: 'ھەڵوەشاندنەوە', flags: 'safe' } ]; ArchiveDialog.prototype.initialize = function () { ArchiveDialog.super.prototype.initialize.apply( this, arguments ); this.switchTop = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchSuccess = new OO.ui.ToggleSwitchWidget( { value: true } ); this.switchDone = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchBold = new OO.ui.ToggleSwitchWidget( { value: false } ); this.note = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی داخستنەکە داخڵ بکە', rows: 6 } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.switchTop, { label: 'دەقی داخستنەکە ببە سەرەوە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchSuccess, { label: 'وتووێژەکە بە گەیشتن بە یەکدەنگی سەرکەوتوو بوو', align: 'inline' } ), new OO.ui.FieldLayout( this.switchDone, { label: 'بەپێی سەرکەوتووبوون یان نەبوون، {{کرا}} یان {{نەکرا}} زیاد بکە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchBold, { label: 'دەقی داخستنەکە بە تۆخ پیشان بدە', align: 'inline' } ), new OO.ui.FieldLayout( this.note, { label: 'داخستنی بەش:', align: 'top' } ) ] ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element ); this.$body.append( this.panel.$element ); }; ArchiveDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; ArchiveDialog.prototype.getReadyProcess = function ( data ) { return ArchiveDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.note.focus(); }, this ); }; ArchiveDialog.prototype.buildText = function ( current ) { var nl = current.indexOf( '\n' ); var header = nl === -1 ? current : current.slice( 0, nl ); var content = nl === -1 ? '' : current.slice( nl + 1 ); var success = this.switchSuccess.getValue(); var input = this.note.getValue().trim(); var newText = header + '\n{{بەسراو|کات={{subst:' + 'CURRENTTIMESTAMP}}' + ( success ? '}}\n' : '|سەرکەوتوو_نەبوو=بەڵێ}}\n' ); if ( this.switchDone.getValue() ) { input = ( success ? '{{کرا}} ' : '{{نەکرا}} ' ) + input; } input = input.trim(); var closingNote = ''; if ( input ) { closingNote = ( this.switchBold.getValue() ? "'''" + input + "'''" : input ) + ' ~~' + '~~'; } if ( this.switchTop.getValue() ) { if ( closingNote ) { newText += ':' + closingNote + '\n'; } newText += content; } else { newText = closingNote ? addIndented( newText + content, closingNote, INDENT_REPLY ) : newText + content; } return newText.replace( /\s+$/, '' ) + '\n{{کۆتایی بەسراو}}'; }; ArchiveDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'archive' ) { return new OO.ui.Process( function () { return fetchSection( section ).then( function ( info ) { if ( /\{\{\s*بەسراو\s*[|}]/.test( info.text ) ) { return $.Deferred().reject( 'alreadyclosed' ).promise(); } var note = dialog.note.getValue().trim(); var summary = '/* ' + sectionTitle( info.text ) + ' */ داخستنی بەش' + ( note ? ': ' + note : '' ); return saveSection( section, dialog.buildText( info.text ), summary, info ); } ).then( function () { mw.notify( 'بەشەکە داخرا.' ); location.reload(); }, function ( code, result ) { if ( code === 'alreadyclosed' ) { return $.Deferred().reject( new OO.ui.Error( 'ئەم بەشە پێشتر داخراوە.', { recoverable: false } ) ).promise(); } return asProcessError( code, result ); } ); } ); } return ArchiveDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new ArchiveDialog( { size: 'medium' } ) ); } /* ---------- «دەنگ بدە» dialog ---------- */ function openCommentDialog( section ) { fetchSection( section ).then( function ( info ) { var onlyTop = false; var top = topPart( info.text ); if ( top !== null ) { onlyTop = confirm( 'ئەم بەشە ژێربەشیشی ھەیە! بۆ ناردنی دەق، مەبەستت بەشی سەرترە؟\n' + 'OK = پەیامەکە لە بەشی سەرتر دادەنرێت.\n' + 'Cancel = پەیامەکە لە کۆتایی بەشەکە دادەنرێت.' ); } var users = pingedUsers( info.text ); function CommentDialog( config ) { CommentDialog.super.call( this, config ); } OO.inheritClass( CommentDialog, OO.ui.ProcessDialog ); CommentDialog.static.name = 'closeSectionComment'; CommentDialog.static.title = 'دەقی لێدوان'; CommentDialog.static.actions = [ { action: 'comment', label: 'تۆمارکردن', flags: [ 'primary', 'progressive' ] }, { action: 'preview', label: 'پێشبینین', icon: 'eye' }, { label: 'دای بخە', flags: 'safe' } ]; CommentDialog.prototype.initialize = function () { CommentDialog.super.prototype.initialize.apply( this, arguments ); var dialog = this; var resize = function () { dialog.updateSize(); }; this.btnReply = new OO.ui.ButtonOptionWidget( { data: INDENT_REPLY, label: 'وەڵامی پێشوو', title: 'پەیامەکە لە وەڵامی کەسی پێشوو دەنووسرێ.' } ); this.btnSame = new OO.ui.ButtonOptionWidget( { data: INDENT_SAME, label: 'بەبێ بردنەپێش', title: 'پەیامەکە بەبێ بردنەپێش دەنووسرێ.' } ); this.btnNone = new OO.ui.ButtonOptionWidget( { data: INDENT_NONE, label: 'سەری دێڕ', title: 'پەیامەکە لە سەری دێڕ دەست پێ دەکات.' } ); this.indentSelect = new OO.ui.ButtonSelectWidget( { items: [ this.btnReply, this.btnSame, this.btnNone ] } ); this.indentSelect.selectItem( this.btnReply ); this.typeDropdown = new OO.ui.DropdownWidget( { menu: { items: COMMENT_TYPES.map( function ( t ) { return new OO.ui.MenuOptionWidget( { data: t.data, icon: t.icon, label: t.label } ); } ) } } ); this.typeDropdown.getMenu().selectItemByData( 'info' ); // Votes always go on their own line, so indentation doesn't apply. this.typeDropdown.getMenu().on( 'select', function ( item ) { var isVote = !!( item && getType( item.getData() ).vote ); dialog.btnReply.setDisabled( isVote ); dialog.btnSame.setDisabled( isVote ); dialog.indentSelect.selectItem( isVote ? dialog.btnNone : dialog.btnReply ); } ); this.pingSelect = new OO.ui.MenuTagMultiselectWidget( { inputPosition: 'outline', allowArbitrary: true, options: users.map( function ( u ) { return { data: u, label: u }; } ), placeholder: 'ناوی ئەو بەکارھێنەرە بنووسە کە دەتەوێ وەڵامی بدەیتەوە' } ); this.pingSelect.on( 'change', resize ); this.comment = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی لێدوانەکە داخڵ بکە', rows: 6, autosize: true } ); this.comment.on( 'resize', resize ); var toolbar = new OO.ui.HorizontalLayout( { items: [ this.makeTool( 'bold', 'دەقی تۆخ', "'''", "'''" ), this.makeTool( 'italic', 'دەقی لار', "''", "''" ), this.makeTool( 'link', 'ویکیبەستەر', '[[', ']]' ), this.makeTool( 'bigger', 'دەقی گەورەتر', '<big>', '</big>' ), this.makeTool( 'smaller', 'دەقی بچووکتر', '<small>', '</small>' ), this.makeTool( 'newline', 'دێڕی نوێ', '<br>', '' ) ] } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.pingSelect, { label: 'بانگکردنی بەکارھێنەر:', align: 'top' } ), new OO.ui.FieldLayout( this.indentSelect, { label: 'بردنەپێش:', align: 'top' } ), new OO.ui.FieldLayout( this.typeDropdown, { label: 'تاگی پێش لێدوان:', align: 'top' } ), // FieldLayout needs a widget, so the toolbar layout is wrapped in one. new OO.ui.FieldLayout( new OO.ui.Widget( { content: [ toolbar ] } ) ), new OO.ui.FieldLayout( this.comment, { label: 'دەقی لێدوان:', align: 'top' } ) ] ); this.$preview = $( '<div>' ).css( { display: 'none', marginTop: '1em', padding: '0.5em', border: '1px solid var(--border-color-subtle, #c8ccd1)' } ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element, this.$preview ); this.$body.append( this.panel.$element ); }; // Wraps the selected text (or inserts at the cursor). CommentDialog.prototype.makeTool = function ( icon, title, before, after ) { var dialog = this; var button = new OO.ui.ButtonWidget( { framed: false, icon: icon, title: title, invisibleLabel: true, label: title } ); button.on( 'click', function () { var el = dialog.comment.$input[ 0 ]; var value = dialog.comment.getValue(); var start = el.selectionStart; var end = el.selectionEnd; if ( typeof start !== 'number' ) { start = end = value.length; } dialog.comment.setValue( value.slice( 0, start ) + before + value.slice( start, end ) + after + value.slice( end ) ); el.focus(); el.selectionStart = el.selectionEnd = end + before.length + after.length; } ); return button; }; CommentDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; CommentDialog.prototype.getReadyProcess = function ( data ) { return CommentDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.comment.focus(); }, this ); }; CommentDialog.prototype.getSelectedType = function () { var item = this.typeDropdown.getMenu().findSelectedItem(); return getType( item ? item.getData() : 'info' ); }; CommentDialog.prototype.buildText = function () { var type = this.getSelectedType(); var indentItem = this.indentSelect.findSelectedItem(); var indentMode = indentItem ? indentItem.getData() : INDENT_REPLY; var listPrefix = /\n#/.test( info.text ) ? '# ' : '* '; var pinged = this.pingSelect.getValue(); var parts = []; if ( pinged.length ) { parts.push( '{{وب|' + pinged.join( '|' ) + '}}' ); } if ( type.text ) { parts.push( type.text ); } var comment = this.comment.getValue().trim(); if ( comment ) { parts.push( comment ); } parts.push( '~~' + '~~' ); var newText = ( type.prefix ? listPrefix : '' ) + parts.join( ' ' ); var base = onlyTop ? top : info.text.replace( /\s+$/, '' ); var updated = type.vote ? base.replace( /\s+$/, '' ) + '\n' + newText : addIndented( base, newText, indentMode ); var full = onlyTop ? updated + info.text.slice( top.length ) : updated; var summary = '/* ' + sectionTitle( info.text ) + ' */ ' + type.summary + ( pinged.length ? ' + وەڵام بۆ بەکارھێنەر: ' + pinged.join( '، ' ) : '' ); return { text: full, summary: summary, comment: newText }; }; CommentDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'comment' ) { return new OO.ui.Process( function () { if ( !dialog.comment.getValue().trim() && !dialog.pingSelect.getValue().length && dialog.getSelectedType().data === 'info' ) { return $.Deferred().reject( new OO.ui.Error( 'تکایە دەقی لێدوانەکە بنووسە.' ) ).promise(); } var built = dialog.buildText(); return saveSection( section, built.text, built.summary, info ).then( function () { mw.notify( 'لێدوانەکەت تۆمار کرا.' ); location.reload(); }, asProcessError ); } ); } if ( action === 'preview' ) { return new OO.ui.Process( function () { var built = dialog.buildText(); return api.post( { action: 'parse', text: built.comment, title: pageName, pst: true, prop: 'text', disablelimitreport: true, formatversion: 2 } ).then( function ( data ) { dialog.$preview.html( data.parse.text ).show(); dialog.updateSize(); }, function ( code ) { return $.Deferred().reject( new OO.ui.Error( 'پێشبینین سەرکەوتوو نەبوو: ' + code ) ).promise(); } ); } ); } return CommentDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new CommentDialog( { size: 'large' } ) ); }, function ( code ) { mw.notify( 'خوێندنەوەی بەشەکە سەرکەوتوو نەبوو: ' + code, { type: 'error' } ); } ); } /* ---------- links next to section headings ---------- */ function makeLink( text, title, section, opener ) { return $( '<a>' ).attr( { href: '#', role: 'button', title: title } ).css( 'font-size', 'smaller' ).text( text ) .on( 'click', function ( e ) { e.preventDefault(); e.stopPropagation(); // don't collapse the section on mobile mw.loader.using( OOUI_MODULES ).then( function () { opener( section ); }, function () { mw.notify( 'بارکردنی ئامرازەکە سەرکەوتوو نەبوو. پەڕەکە نوێ بکەرەوە.', { type: 'error' } ); } ); } ); } function addLinks( $content ) { $content.find( '.mw-editsection' ).each( function () { var $editSection = $( this ); if ( $editSection.closest( '#firstHeading, .mw-first-heading' ).length || $editSection.next( '.mw-archivesection' ).length ) { return; } // Only sections of this page; transcluded sections use "section=T-n" and are skipped. var section = null; $editSection.find( 'a' ).each( function () { var m = ( $( this ).attr( 'href' ) || '' ).match( /[?&](?:ve)?section=(\d+)(?:&|#|$)/ ); if ( m ) { section = m[ 1 ]; return false; // first match is enough } } ); if ( section === null ) { return; } $( '<span>' ).addClass( 'mw-archivesection' ).append( $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( '[' ), makeLink( 'دەنگ بدە', 'بە لەگەڵ/دژ/کرا/… دەنگ بدە', section, openCommentDialog ), $( '<span>' ).text( ' / ' ).css( 'color', 'var(--color-subtle, #54595d)' ), makeLink( 'داخستن', 'ئەم بەشە داخە', section, openArchiveDialog ), $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( ']' ) ).insertAfter( $editSection ); } ); } var ns = mw.config.get( 'wgNamespaceNumber' ); if ( ( ns === 4 || ns % 2 === 1 ) && mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgIsProbablyEditable' ) && mw.config.get( 'wgRevisionId' ) === mw.config.get( 'wgCurRevisionId' ) // not an old revision ) { mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).then( function () { if ( mw.util.getParamValue( 'diff' ) || mw.util.getParamValue( 'oldid' ) ) { return; } api = new mw.Api(); mw.hook( 'wikipage.content' ).add( addLinks ); mw.loader.load( OOUI_MODULES.concat( ICON_MODULES ) ); } ); } }( jQuery, mediaWiki ) ); // </nowiki> g5z07wmm3hjvq6yydume0z78gg28ou4 47409 47401 2026-10-15T16:55:44Z Sakura emad 13 some improvements 47409 javascript text/javascript /* * MediaWiki:Gadget-close.js — ویکیفەرھەنگ (ckb.wiktionary.org) * Local version adapted from [[w:MediaWiki:Gadget-close.js]] (ckbwiki). * Adds «دەنگ بدە / داخستن» links next to section edit links on project * pages (namespace 4) and talk pages. */ // <nowiki> ( function ( $, mw ) { 'use strict'; var OOUI_MODULES = [ 'oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows' ]; // Icon packs are loaded without waiting: if one is missing the dialogs // still open, they only lose that icon. var ICON_MODULES = [ 'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-content', 'oojs-ui.styles.icons-moderation', 'oojs-ui.styles.icons-alerts', 'oojs-ui.styles.icons-accessibility', 'oojs-ui.styles.icons-editing-core', 'oojs-ui.styles.icons-editing-styling', 'oojs-ui.styles.icons-editing-advanced' ]; var api = null; // created once mediawiki.api has loaded (see bottom) var pageName = mw.config.get( 'wgPageName' ); var windowManager = null; // Only templates that exist on ckbwiktionary. // vote: true → added as its own line at the end of the section, never indented // prefix: true → starts with "* " (or "# " in numbered discussions) var COMMENT_TYPES = [ { data: 'info', icon: 'share', label: 'پەیام', text: '', summary: 'تۆمارکردنی پەیام' }, { data: 'opinion', icon: 'info', label: 'لێدوان', text: '{{لێدوان}}', summary: 'تۆمارکردنی لێدوان', prefix: true }, { data: 'done', icon: 'check', label: 'کرا', text: '{{کرا}}', summary: 'کرا' }, { data: 'notdone', icon: 'close', label: 'نەکرا', text: '{{نەکرا}}', summary: 'نەکرا' }, { data: 'agree', icon: 'add', label: 'لەگەڵ', text: '{{لەگەڵ}}', summary: 'تۆمارکردنی لێدوان بە لەگەڵ', prefix: true, vote: true }, { data: 'contrary', icon: 'subtract', label: 'دژ', text: '{{دژ}}', summary: 'تۆمارکردنی لێدوان بە دژ', prefix: true, vote: true }, { data: 'neutral', icon: 'ellipsis', label: 'بێلایەن', text: '{{بێلایەن}}', summary: 'تۆمارکردنی لێدوان بە بێلایەن', prefix: true, vote: true }, { data: 'question', icon: 'help', label: 'پرسیار', text: '{{پرسیار}}', summary: 'تۆمارکردنی پرسیار' } ]; var INDENT_REPLY = 1; // one level deeper than the last line var INDENT_SAME = 2; // same level as the last line var INDENT_NONE = 3; // start of line function getType( data ) { for ( var i = 0; i < COMMENT_TYPES.length; i++ ) { if ( COMMENT_TYPES[ i ].data === data ) { return COMMENT_TYPES[ i ]; } } return COMMENT_TYPES[ 0 ]; } /* ---------- wikitext helpers ---------- */ // Heading of the section, without wiki markup, for the edit summary. function sectionTitle( text ) { var m = text.match( /^(=+)\s*(.*?)\s*\1\s*$/m ); if ( !m ) { return 'بەشی دەستپێک'; } var title = m[ 2 ] .replace( /\[\[(?:[^\]|]*\|)?([^\]]*)\]\]/g, '$1' ) // [[a|b]] → b, [[a]] → a .replace( /\{\{[^{}]*\}\}/g, '' ) // templates .replace( /<[^>]+>/g, '' ) // HTML tags .replace( /'{2,}/g, '' ) // bold / italic .trim(); return title || 'بەشی دەستپێک'; } // Text of the section above its first sub-heading, or null if there is none. function topPart( text ) { var lines = text.split( '\n' ); for ( var i = 1; i < lines.length; i++ ) { if ( /^={2,}[^=].*?={2,}\s*$/.test( lines[ i ] ) ) { return lines.slice( 0, i ).join( '\n' ).replace( /\s+$/, '' ); } } return null; } function addIndented( text, newText, indentMode ) { text = text.replace( /\r/g, '' ).replace( /\s+$/, '' ); var lines = text.split( '\n' ); var m = lines[ lines.length - 1 ].match( /^([#*]?)(:*)/ ); var listChar = m[ 1 ]; var colons = m[ 2 ].length; var indent = ''; if ( indentMode === INDENT_REPLY ) { indent = listChar + new Array( colons + 2 ).join( ':' ); // one more ":" } else if ( indentMode === INDENT_SAME ) { indent = listChar + new Array( colons + 1 ).join( ':' ); // same "*" / ":" as the last line } return text + '\n' + indent + newText.trim().replace( /\n/g, '\n' + indent ); } function pingedUsers( text ) { var re = /\[\[(?:لێدوانی[_ ]بەکارھێنەر|[Uu]ser[_ ][Tt]alk|بەکارھێنەر|[Uu]ser):([^\]|\/#]+)/g; var skip = [ mw.config.get( 'wgUserName' ) ]; // On a user talk page, don't offer to ping the page owner. if ( mw.config.get( 'wgNamespaceNumber' ) === 3 ) { skip.push( mw.config.get( 'wgTitle' ).split( '/' )[ 0 ] ); } var names = []; var m; while ( ( m = re.exec( text ) ) !== null ) { var name = m[ 1 ].replace( /_/g, ' ' ).trim(); if ( name && skip.indexOf( name ) === -1 && names.indexOf( name ) === -1 ) { names.push( name ); } } return names; } /* ---------- API ---------- */ function fetchSection( section ) { return api.get( { action: 'query', prop: 'revisions', titles: pageName, rvsection: section, rvprop: 'content|timestamp', rvslots: 'main', curtimestamp: 1, formatversion: 2 } ).then( function ( data ) { var page = data.query && data.query.pages && data.query.pages[ 0 ]; if ( !page || page.missing || !page.revisions ) { return $.Deferred().reject( 'nosection' ).promise(); } var rev = page.revisions[ 0 ]; return { text: rev.slots.main.content, basetimestamp: rev.timestamp, starttimestamp: data.curtimestamp }; } ); } // basetimestamp/starttimestamp make MediaWiki refuse the save (editconflict) // if someone else changed the page after we read it. function saveSection( section, text, summary, info ) { return api.postWithEditToken( { action: 'edit', title: pageName, section: section, text: text, summary: summary, basetimestamp: info.basetimestamp, starttimestamp: info.starttimestamp, // Errors (e.g. edit filter warnings) in the wiki's language, using its // local MediaWiki: messages, whatever interface language the user has. errorformat: 'html', errorlang: 'content', errorsuselocal: 1, formatversion: 2 } ).then( function ( data ) { // e.g. a CAPTCHA comes back as a "successful" request with result=Failure if ( !data.edit || data.edit.result !== 'Success' ) { return $.Deferred().reject( 'editfailure', data ).promise(); } return data; } ); } // Turns an API failure into an error the ProcessDialog shows. // Recoverable errors get a "try again" button: that is how an edit filter // warning (e.g. non-standard characters) is confirmed, like saving twice. function asProcessError( code, result ) { if ( code === 'editconflict' ) { return $.Deferred().reject( new OO.ui.Error( 'ناکۆکیی دەستکاری: کەسێکی تر لە ھەمان کاتدا ئەم بەشەی گۆڕیوە. پەڕەکە نوێ بکەرەوە.', { recoverable: false } ) ).promise(); } var message = 'تۆمارکردن سەرکەوتوو نەبوو: ' + code; if ( result && ( result.error || result.errors ) ) { try { message = api.getErrorMessage( result ); } catch ( e ) {} } return $.Deferred().reject( new OO.ui.Error( message, { recoverable: true } ) ).promise(); } function openDialog( dialog ) { if ( windowManager ) { windowManager.destroy(); } windowManager = new OO.ui.WindowManager(); $( document.body ).append( windowManager.$element ); windowManager.addWindows( [ dialog ] ); windowManager.openWindow( dialog ); } /* ---------- «داخستن» dialog ---------- */ function openArchiveDialog( section ) { function ArchiveDialog( config ) { ArchiveDialog.super.call( this, config ); } OO.inheritClass( ArchiveDialog, OO.ui.ProcessDialog ); ArchiveDialog.static.name = 'closeSectionArchive'; ArchiveDialog.static.title = 'داخستنی بەش'; ArchiveDialog.static.actions = [ { action: 'archive', label: 'داخستنی بەش', flags: [ 'primary', 'progressive' ] }, { label: 'ھەڵوەشاندنەوە', flags: 'safe' } ]; ArchiveDialog.prototype.initialize = function () { ArchiveDialog.super.prototype.initialize.apply( this, arguments ); this.switchTop = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchSuccess = new OO.ui.ToggleSwitchWidget( { value: true } ); this.switchDone = new OO.ui.ToggleSwitchWidget( { value: false } ); this.switchBold = new OO.ui.ToggleSwitchWidget( { value: false } ); this.note = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی داخستنەکە داخڵ بکە', rows: 6 } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.switchTop, { label: 'دەقی داخستنەکە ببە سەرەوە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchSuccess, { label: 'وتووێژەکە بە گەیشتن بە یەکدەنگی سەرکەوتوو بوو', align: 'inline' } ), new OO.ui.FieldLayout( this.switchDone, { label: 'بەپێی سەرکەوتووبوون یان نەبوون، {{کرا}} یان {{نەکرا}} زیاد بکە', align: 'inline' } ), new OO.ui.FieldLayout( this.switchBold, { label: 'دەقی داخستنەکە بە تۆخ پیشان بدە', align: 'inline' } ), new OO.ui.FieldLayout( this.note, { label: 'داخستنی بەش:', align: 'top' } ) ] ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element ); this.$body.append( this.panel.$element ); }; ArchiveDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; ArchiveDialog.prototype.getReadyProcess = function ( data ) { return ArchiveDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.note.focus(); }, this ); }; ArchiveDialog.prototype.buildText = function ( current ) { var nl = current.indexOf( '\n' ); var header = nl === -1 ? current : current.slice( 0, nl ); var content = nl === -1 ? '' : current.slice( nl + 1 ); var success = this.switchSuccess.getValue(); var input = this.note.getValue().trim(); var newText = header + '\n{{بەسراو|کات={{subst:' + 'CURRENTTIMESTAMP}}' + ( success ? '}}\n' : '|سەرکەوتوو_نەبوو=بەڵێ}}\n' ); if ( this.switchDone.getValue() ) { input = ( success ? '{{کرا}} ' : '{{نەکرا}} ' ) + input; } input = input.trim(); var closingNote = ''; if ( input ) { closingNote = ( this.switchBold.getValue() ? "'''" + input + "'''" : input ) + ' ~~' + '~~'; } if ( this.switchTop.getValue() ) { if ( closingNote ) { newText += ':' + closingNote + '\n'; } newText += content; } else { newText = closingNote ? addIndented( newText + content, closingNote, INDENT_REPLY ) : newText + content; } return newText.replace( /\s+$/, '' ) + '\n{{کۆتایی بەسراو}}'; }; ArchiveDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'archive' ) { return new OO.ui.Process( function () { return fetchSection( section ).then( function ( info ) { if ( /\{\{\s*بەسراو\s*[|}]/.test( info.text ) ) { return $.Deferred().reject( 'alreadyclosed' ).promise(); } var note = dialog.note.getValue().trim(); var summary = '/* ' + sectionTitle( info.text ) + ' */ داخستنی بەش' + ( note ? ': ' + note : '' ); return saveSection( section, dialog.buildText( info.text ), summary, info ); } ).then( function () { mw.notify( 'بەشەکە داخرا.' ); location.reload(); }, function ( code, result ) { if ( code === 'alreadyclosed' ) { return $.Deferred().reject( new OO.ui.Error( 'ئەم بەشە پێشتر داخراوە.', { recoverable: false } ) ).promise(); } return asProcessError( code, result ); } ); } ); } return ArchiveDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new ArchiveDialog( { size: 'medium' } ) ); } /* ---------- «دەنگ بدە» dialog ---------- */ function openCommentDialog( section ) { fetchSection( section ).then( function ( info ) { var onlyTop = false; var top = topPart( info.text ); if ( top !== null ) { onlyTop = confirm( 'ئەم بەشە ژێربەشیشی ھەیە! بۆ ناردنی دەق، مەبەستت بەشی سەرترە؟\n' + 'OK = پەیامەکە لە بەشی سەرتر دادەنرێت.\n' + 'Cancel = پەیامەکە لە کۆتایی بەشەکە دادەنرێت.' ); } var users = pingedUsers( info.text ); function CommentDialog( config ) { CommentDialog.super.call( this, config ); } OO.inheritClass( CommentDialog, OO.ui.ProcessDialog ); CommentDialog.static.name = 'closeSectionComment'; CommentDialog.static.title = 'دەقی لێدوان'; CommentDialog.static.actions = [ { action: 'comment', label: 'تۆمارکردن', flags: [ 'primary', 'progressive' ] }, { action: 'preview', label: 'پێشبینین', icon: 'eye' }, { label: 'دای بخە', flags: 'safe' } ]; CommentDialog.prototype.initialize = function () { CommentDialog.super.prototype.initialize.apply( this, arguments ); var dialog = this; var resize = function () { dialog.updateSize(); }; this.btnReply = new OO.ui.ButtonOptionWidget( { data: INDENT_REPLY, label: 'وەڵامی پێشوو', title: 'پەیامەکە لە وەڵامی کەسی پێشوو دەنووسرێ.' } ); this.btnSame = new OO.ui.ButtonOptionWidget( { data: INDENT_SAME, label: 'بەبێ بردنەپێش', title: 'پەیامەکە بەبێ بردنەپێش دەنووسرێ.' } ); this.btnNone = new OO.ui.ButtonOptionWidget( { data: INDENT_NONE, label: 'سەری دێڕ', title: 'پەیامەکە لە سەری دێڕ دەست پێ دەکات.' } ); this.indentSelect = new OO.ui.ButtonSelectWidget( { items: [ this.btnReply, this.btnSame, this.btnNone ] } ); this.indentSelect.selectItem( this.btnReply ); this.typeDropdown = new OO.ui.DropdownWidget( { menu: { items: COMMENT_TYPES.map( function ( t ) { return new OO.ui.MenuOptionWidget( { data: t.data, icon: t.icon, label: t.label } ); } ) } } ); this.typeDropdown.getMenu().selectItemByData( 'info' ); // Votes always go on their own line, so indentation doesn't apply. this.typeDropdown.getMenu().on( 'select', function ( item ) { var isVote = !!( item && getType( item.getData() ).vote ); dialog.btnReply.setDisabled( isVote ); dialog.btnSame.setDisabled( isVote ); dialog.indentSelect.selectItem( isVote ? dialog.btnNone : dialog.btnReply ); } ); this.pingSelect = new OO.ui.MenuTagMultiselectWidget( { inputPosition: 'outline', allowArbitrary: true, options: users.map( function ( u ) { return { data: u, label: u }; } ), placeholder: 'ناوی ئەو بەکارھێنەرە بنووسە کە دەتەوێ وەڵامی بدەیتەوە' } ); this.pingSelect.on( 'change', resize ); this.comment = new OO.ui.MultilineTextInputWidget( { placeholder: 'دەقی لێدوانەکە داخڵ بکە', rows: 6, autosize: true } ); this.comment.on( 'resize', resize ); var toolbar = new OO.ui.HorizontalLayout( { items: [ this.makeTool( 'bold', 'دەقی تۆخ', "'''", "'''" ), this.makeTool( 'italic', 'دەقی لار', "''", "''" ), this.makeTool( 'link', 'ویکیبەستەر', '[[', ']]' ), this.makeTool( 'bigger', 'دەقی گەورەتر', '<big>', '</big>' ), this.makeTool( 'smaller', 'دەقی بچووکتر', '<small>', '</small>' ), this.makeTool( 'newline', 'دێڕی نوێ', '<br>', '' ) ] } ); var fieldset = new OO.ui.FieldsetLayout(); fieldset.addItems( [ new OO.ui.FieldLayout( this.pingSelect, { label: 'بانگکردنی بەکارھێنەر:', align: 'top' } ), new OO.ui.FieldLayout( this.indentSelect, { label: 'بردنەپێش:', align: 'top' } ), new OO.ui.FieldLayout( this.typeDropdown, { label: 'تاگی پێش لێدوان:', align: 'top' } ), // FieldLayout needs a widget, so the toolbar layout is wrapped in one. new OO.ui.FieldLayout( new OO.ui.Widget( { content: [ toolbar ] } ) ), new OO.ui.FieldLayout( this.comment, { label: 'دەقی لێدوان:', align: 'top' } ) ] ); this.$preview = $( '<div>' ).css( { display: 'none', marginTop: '1em', padding: '0.5em', border: '1px solid var(--border-color-subtle, #c8ccd1)' } ); this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } ); this.panel.$element.append( fieldset.$element, this.$preview ); this.$body.append( this.panel.$element ); }; // Wraps the selected text (or inserts at the cursor). CommentDialog.prototype.makeTool = function ( icon, title, before, after ) { var dialog = this; var button = new OO.ui.ButtonWidget( { framed: false, icon: icon, title: title, invisibleLabel: true, label: title } ); button.on( 'click', function () { var el = dialog.comment.$input[ 0 ]; var value = dialog.comment.getValue(); var start = el.selectionStart; var end = el.selectionEnd; if ( typeof start !== 'number' ) { start = end = value.length; } dialog.comment.setValue( value.slice( 0, start ) + before + value.slice( start, end ) + after + value.slice( end ) ); el.focus(); el.selectionStart = el.selectionEnd = end + before.length + after.length; } ); return button; }; CommentDialog.prototype.getBodyHeight = function () { return this.panel.$element.outerHeight( true ); }; CommentDialog.prototype.getReadyProcess = function ( data ) { return CommentDialog.super.prototype.getReadyProcess.call( this, data ).next( function () { this.comment.focus(); }, this ); }; CommentDialog.prototype.getSelectedType = function () { var item = this.typeDropdown.getMenu().findSelectedItem(); return getType( item ? item.getData() : 'info' ); }; CommentDialog.prototype.buildText = function () { var type = this.getSelectedType(); var indentItem = this.indentSelect.findSelectedItem(); var indentMode = indentItem ? indentItem.getData() : INDENT_REPLY; var listPrefix = /\n#/.test( info.text ) ? '# ' : '* '; var pinged = this.pingSelect.getValue(); var parts = []; if ( pinged.length ) { parts.push( '{{وب|' + pinged.join( '|' ) + '}}' ); } if ( type.text ) { parts.push( type.text ); } var comment = this.comment.getValue().trim(); if ( comment ) { parts.push( comment ); } parts.push( '~~' + '~~' ); var newText = ( type.prefix ? listPrefix : '' ) + parts.join( ' ' ); var base = onlyTop ? top : info.text.replace( /\s+$/, '' ); var updated = type.vote ? base.replace( /\s+$/, '' ) + '\n' + newText : addIndented( base, newText, indentMode ); var full = onlyTop ? updated + info.text.slice( top.length ) : updated; var summary = '/* ' + sectionTitle( info.text ) + ' */ ' + type.summary + ( pinged.length ? ' + وەڵام بۆ بەکارھێنەر: ' + pinged.join( '، ' ) : '' ); return { text: full, summary: summary, comment: newText }; }; CommentDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action === 'comment' ) { return new OO.ui.Process( function () { if ( !dialog.comment.getValue().trim() && !dialog.pingSelect.getValue().length && dialog.getSelectedType().data === 'info' ) { return $.Deferred().reject( new OO.ui.Error( 'تکایە دەقی لێدوانەکە بنووسە.', { recoverable: false } ) ).promise(); } var built = dialog.buildText(); return saveSection( section, built.text, built.summary, info ).then( function () { mw.notify( 'لێدوانەکەت تۆمار کرا.' ); location.reload(); }, asProcessError ); } ); } if ( action === 'preview' ) { return new OO.ui.Process( function () { var built = dialog.buildText(); return api.post( { action: 'parse', text: built.comment, title: pageName, pst: true, prop: 'text', disablelimitreport: true, formatversion: 2 } ).then( function ( data ) { dialog.$preview.html( data.parse.text ).show(); dialog.updateSize(); }, function ( code ) { return $.Deferred().reject( new OO.ui.Error( 'پێشبینین سەرکەوتوو نەبوو: ' + code ) ).promise(); } ); } ); } return CommentDialog.super.prototype.getActionProcess.call( this, action ); }; openDialog( new CommentDialog( { size: 'large' } ) ); }, function ( code ) { mw.notify( 'خوێندنەوەی بەشەکە سەرکەوتوو نەبوو: ' + code, { type: 'error' } ); } ); } /* ---------- links next to section headings ---------- */ function makeLink( text, title, section, opener ) { return $( '<a>' ).attr( { href: '#', role: 'button', title: title } ).css( 'font-size', 'smaller' ).text( text ) .on( 'click', function ( e ) { e.preventDefault(); e.stopPropagation(); // don't collapse the section on mobile mw.loader.using( OOUI_MODULES ).then( function () { opener( section ); }, function () { mw.notify( 'بارکردنی ئامرازەکە سەرکەوتوو نەبوو. پەڕەکە نوێ بکەرەوە.', { type: 'error' } ); } ); } ); } function addLinks( $content ) { $content.find( '.mw-editsection' ).each( function () { var $editSection = $( this ); if ( $editSection.closest( '#firstHeading, .mw-first-heading' ).length || $editSection.next( '.mw-archivesection' ).length ) { return; } // Only sections of this page; transcluded sections use "section=T-n" and are skipped. var section = null; $editSection.find( 'a' ).each( function () { var m = ( $( this ).attr( 'href' ) || '' ).match( /[?&](?:ve)?section=(\d+)(?:&|#|$)/ ); if ( m ) { section = m[ 1 ]; return false; // first match is enough } } ); if ( section === null ) { return; } $( '<span>' ).addClass( 'mw-archivesection' ).append( $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( '[' ), makeLink( 'دەنگ بدە', 'بە لەگەڵ/دژ/کرا/… دەنگ بدە', section, openCommentDialog ), $( '<span>' ).text( ' / ' ).css( 'color', 'var(--color-subtle, #54595d)' ), makeLink( 'داخستن', 'ئەم بەشە داخە', section, openArchiveDialog ), $( '<span>' ).addClass( 'mw-editsection-bracket' ).text( ']' ) ).insertAfter( $editSection ); } ); } var ns = mw.config.get( 'wgNamespaceNumber' ); if ( ( ns === 4 || ns % 2 === 1 ) && mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgIsProbablyEditable' ) && mw.config.get( 'wgRevisionId' ) === mw.config.get( 'wgCurRevisionId' ) // not an old revision ) { mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).then( function () { if ( mw.util.getParamValue( 'diff' ) || mw.util.getParamValue( 'oldid' ) ) { return; } api = new mw.Api(); mw.hook( 'wikipage.content' ).add( addLinks ); mw.loader.load( OOUI_MODULES.concat( ICON_MODULES ) ); } ); } }( jQuery, mediaWiki ) ); // </nowiki> kec4vfxyrmb73cm8dv263n2ug46hpwz میدیاویکی:Abusefilter-warning-character 8 11715 47388 47353 2026-10-15T14:51:17Z -Haryad 34 +ڕەنگ 47388 wikitext text/x-wiki {{edit filter warning |action = warn |friendly = |text=<big>{{ڕەنگ٢|red|'''ھۆشدار'''}}: تەختەکلیلەکەت ھەندێک لە پیتەکان بە '''یوونیکۆدی عەرەبی''' دەنووسێت. </big> '''سەرنج''': پیتەکانی <big><big>ي</big></big> (ی لەگەڵ دوو خاڵ) و <big><big>ك</big></big> (ک لەگەڵ ھەمزە) و <big><big>ه</big></big> (لە بڕی ھ یا ە) تایبەت بە زمانی عەرەبین. تکایە بەر لە ھەر چەشنە بەشداری لە ویکیپیدیادا، تەختەکلیلی ستاندارد دامەزرێنە و ئەم گرفتە چارەسەر بکە. (بۆ زانیاری زۆرتر سەبارەت بە تەختەکلیلی ستاندارد بڕوانە: [[ویکیپیدیا:نووسینی کوردی|نووسینی کوردی]]) '''چارەسەری خێرا''': کرتە بکە لەسەر ([[پەڕگە:Button YehKeh.png]]:چاکسازیی ی ک و ھ) بۆ چارەسەرکردنی کێشەکە) پاڵوێنەیەک کە پێشی بە تۆ گرت ئەمەیە: $1 }} mc8tp98zqoj12p6fu74gq4hy7j71s8w مۆدیوول:Message box/fmbox.css 828 11721 47385 47367 2026-10-15T13:13:07Z Sakura emad 13 Sakura emad پەڕەی [[مۆدیوول:message box/fmbox.css]]ی بە بێ بەجێھشتنی ڕەوانەکەرێک گواستەوە بۆ [[مۆدیوول:Message box/fmbox.css]]: Moved to the capital-M name that [[Module:Message box/configuration]] loads for {{fmbox}} 47361 sanitized-css text/css /* {{pp|small=y}} */ .fmbox { clear: both; /* this sheet does not require overflow-x because of this clear */ margin: 0.2em 0; border: 1px solid #a2a9b1; background-color: var(--background-color-interactive-subtle, #f8f9fa); box-sizing: border-box; color: var(--color-base, #202122); } .fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } .fmbox-editnotice { background-color: transparent; } .fmbox .mbox-text { padding: 0.35em 1em; flex: 1 1 100%; } .fmbox .mbox-image, .fmbox .mbox-imageright { padding: 4px 2px; text-align: center; flex: none; } /* keep synced with each other type of message box as this isn't qualified */ .mbox-invalid-type { text-align: center; } @media (min-width: 480px) { .fmbox { display: flex; align-items: center; } .fmbox .mbox-image { /* @noflip */ padding-left: 1em; } .fmbox .mbox-imageright { /* @noflip */ padding-right: 1em; } } @media screen { html.skin-theme-clientpref-night .fmbox-warning { background-color: #300; /* Reddish, same hue/saturation as light */ } } @media screen and (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .fmbox-warning { background-color: #300; /* Reddish, same hue/saturation as light */ } } ivof69wam0nxtvwqgg5cd5tk4dl4s0k مۆدیوول:Message box 828 11723 47383 47364 2026-10-15T13:08:14Z Sakura emad 13 Moved Wikipedia's Message box code here (from [[Module:message box]], rev 47369) so the lowercase module can be restored as Wiktionary's own module for {{auto cat}} 47383 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'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- 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 -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- 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, 'talk' ) 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. self.type = 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) ) -- Set the below row. self.below = cfg.below and args.below -- 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 if self.below then self:addClass('mbox-with-below') 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 local templateName = mw.ustring.match( self.name, '^([tT][eE][mM][pP][lL][aA][tT][eE]|داڕێژە)[%s_]*:[%s_]*(.*)$' ) or self.name 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 == '#' and '' or '#') .. talk) talkText = string.format('([[%s|وتووێژ]])', talkLink) else talkText = 'لەوانەیە وتووێژی پەیوەندیدار لەسەر' if talkArgIsTalkPage then talkText = string.format( '%s لە [[%s|%s]] بدۆزرێتەوە.', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s [[%s' .. (talk == '#' and '' or '#') .. '%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 -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight 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('پۆل:' .. 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 = 'پ' 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', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') 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:exportDiv() 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( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', 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. local mbox = root:tag('div') mbox:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do mbox:addClass(class or nil) end mbox :cssText(self.style or nil) if self.attrs then mbox:attr(self.attrs) end local flex_container if self.below then -- we need to wrap the flex components (`image(right)` and `text`) in their -- own container div to support the `below` parameter flex_container = mw.html.create('div') flex_container:addClass('mbox-flex') else -- the mbox itself is the parent, so we need no HTML flex_container flex_container = mw.html.create() end -- Add the left-hand image. if self.imageLeft then local imageLeftCell = flex_container:tag('div'):addClass('mbox-image') imageLeftCell :addClass(self.imageLeftClass) :wikitext(self.imageLeft or nil) end -- Add the text. local textCell = flex_container:tag('div'):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(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = flex_container:tag('div'):addClass('mbox-imageright') imageRightCell :addClass(self.imageRightClass) :wikitext(self.imageRight or nil) end mbox:node(flex_container) -- Add the below row. if self.below then mbox:tag('div') :addClass('mbox-text mbox-below') :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( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) 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 left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell 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. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell :addClass(self.imageLeftClass) :wikitext(self.imageLeft 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(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :addClass(self.imageRightClass) :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight 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( 'This message box is using an invalid "type=%s" parameter and needs fixing.', 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() -- DIV MIGRATION CONDITIONAL if box.cfg.div_structure then return box:exportDiv() end -- END DIV MIGRATION CONDITIONAL return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) purx73tszxu57rjxz2al1jvenowbna0 داڕێژە:لێدوان 10 11732 47391 2026-10-15T15:38:54Z Sakura emad 13 لێدوان 47391 wikitext text/x-wiki [[پەڕگە:Pictogram voting comment.svg|15px|link=|alt=]]&nbsp;'''{{{1|لێدوان:}}}''' ffvov0m1ptrw8h76fu2hbuhjlmmxk56 داڕێژە:بێلایەن 10 11733 47392 2026-10-15T15:39:08Z Sakura emad 13 بێلایەن 47392 wikitext text/x-wiki [[پەڕگە:Symbol neutral vote.svg|15px|link=]] '''بێلایەن''' 64uok3y6f1x6unzbpia7lz3n02e1fcr داڕێژە:پرسیار 10 11734 47393 2026-10-15T15:39:20Z Sakura emad 13 پرسیار 47393 wikitext text/x-wiki [[پەڕگە:Symbol question.svg|17px|link=|alt=]]&nbsp;<span style="font-weight:bold">{{{label|پرسیار}}}: </span>{{{1| }}} ljdzsk9ehf99upiezz9d59jl1wtgyte ویکیفەرھەنگ:تاقیکردنەوەی ئامرازەکان 4 11736 47402 2026-10-15T16:32:52Z Sakura emad 13 پەڕەی دروست کرد بە «test»ەوە 47402 wikitext text/x-wiki test jrwjerxiekdtj9k82lg930wpkr6tq6r 47403 47402 2026-10-15T16:34:12Z Sakura emad 13 Test sections for the close gadget 47403 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == وتووێژێک بۆ تاقیکردنەوەی داخستن. == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. au5na8k0wnkdmpgfqu6d8bwx74l9yel 47404 47403 2026-10-15T16:38:33Z Sakura emad 13 /* تاقیکردنەوە ١: وتووێژی ئاسایی */ تۆمارکردنی پەیام 47404 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. ::وەڵامی تاقیکردنەوە ١ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٨، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == وتووێژێک بۆ تاقیکردنەوەی داخستن. == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. bouo4a61rf3k2yw8nipokc8wiewj6jw 47405 47404 2026-10-15T16:39:54Z Sakura emad 13 /* تاقیکردنەوە ٢: دەنگدان */ تۆمارکردنی لێدوان بە لەگەڵ 47405 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. ::وەڵامی تاقیکردنەوە ١ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٨، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. * {{لەگەڵ}} دەنگی تاقیکردنەوە ٢ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٩، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == وتووێژێک بۆ تاقیکردنەوەی داخستن. == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. k41w7ho700ffk0nv245udhcxcuewhju 47406 47405 2026-10-15T16:41:15Z Sakura emad 13 /* تاقیکردنەوە ٣: ژێربەشی ھەیە */ تۆمارکردنی پەیام 47406 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. ::وەڵامی تاقیکردنەوە ١ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٨، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. * {{لەگەڵ}} دەنگی تاقیکردنەوە ٢ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٩، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. :لێدوانی تاقیکردنەوە ٣ بۆ بەشی سەرەوە [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤١، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == وتووێژێک بۆ تاقیکردنەوەی داخستن. == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. 9tbjg170fat1oovrs19a04hafoimfj3 47407 47406 2026-10-15T16:42:12Z Sakura emad 13 /* تاقیکردنەوە ٤: بۆ داخستن */ داخستنی بەش: داخستنی تاقیکردنەوە ٤ 47407 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. ::وەڵامی تاقیکردنەوە ١ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٨، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. * {{لەگەڵ}} دەنگی تاقیکردنەوە ٢ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٩، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. :لێدوانی تاقیکردنەوە ٣ بۆ بەشی سەرەوە [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤١، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == {{بەسراو|کات=20261015164212}} وتووێژێک بۆ تاقیکردنەوەی داخستن. :{{کرا}} داخستنی تاقیکردنەوە ٤ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤٢، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) {{کۆتایی بەسراو}} == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. dp3bcik4yq5f6yoi5ezl9ifl0t47xns 47408 47407 2026-10-15T16:44:13Z Sakura emad 13 /* تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد */ تۆمارکردنی پەیام 47408 wikitext text/x-wiki پەڕەیەک بۆ تاقیکردنەوەی ئامرازی داخستن/دەنگدان. دواتر دەسڕدرێتەوە. == تاقیکردنەوە ١: وتووێژی ئاسایی == پرسیارێکی تاقیکردنەوە. — [[بەکارھێنەر:Example|Example]] :وەڵامێکی تاقیکردنەوە. ::وەڵامی تاقیکردنەوە ١ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٨، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٢: دەنگدان == * {{لەگەڵ}} دەنگێکی تاقیکردنەوە. * {{لەگەڵ}} دەنگی تاقیکردنەوە ٢ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٣٩، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) == تاقیکردنەوە ٣: ژێربەشی ھەیە == دەقی بەشی سەرەوە. :لێدوانی تاقیکردنەوە ٣ بۆ بەشی سەرەوە [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤١، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) === ژێربەش === دەقی ژێربەش. == تاقیکردنەوە ٤: بۆ داخستن == {{بەسراو|کات=20261015164212}} وتووێژێک بۆ تاقیکردنەوەی داخستن. :{{کرا}} داخستنی تاقیکردنەوە ٤ [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤٢، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) {{کۆتایی بەسراو}} == تاقیکردنەوە ٥: پێشتر داخراوە == {{بەسراو}} وتووێژێکی داخراو. {{کۆتایی بەسراو}} == تاقیکردنەوە ٦: پاڵوێنەی پیتی ناستاندارد == بۆ تاقیکردنەوەی ھۆشداریی پاڵوێنە. :تاقیکردنەوە ٦ بە پیتی عەرەبی: ي و ك [[بەکارھێنەر:Sakura emad|Sakura emad]] ([[لێدوانی بەکارھێنەر:Sakura emad|لێدوان]]) ١٩:٤٤، ١٥ی تشرینی یەکەمی ٢٠٢٦ (+03) n84bdt1qux75ojbk9xrh6glqs5semso