<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://source.islamical.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mojtabakd</id>
	<title>سورسکال - مشارکت‌های کاربر [fa]</title>
	<link rel="self" type="application/atom+xml" href="https://source.islamical.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mojtabakd"/>
	<link rel="alternate" type="text/html" href="https://source.islamical.org/wiki/%D9%88%DB%8C%DA%98%D9%87:%D9%85%D8%B4%D8%A7%D8%B1%DA%A9%D8%AA%E2%80%8C%D9%87%D8%A7/Mojtabakd"/>
	<updated>2026-11-09T16:20:12Z</updated>
	<subtitle>مشارکت‌های کاربر</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.js&amp;diff=470</id>
		<title>مدیاویکی:Common.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.js&amp;diff=470"/>
		<updated>2026-11-09T10:06:30Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: بروزرسانی - ابزار خالی کردن میانگیر در جای دیگری قرار گرفت&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Scripts imported from wikisource.org&lt;br /&gt;
 */&lt;br /&gt;
//Correcting rtl direction in index edit pages for Proofreadpage extention&lt;br /&gt;
if (mw.config.get(&#039;wgNamespaceNumber&#039;) == 106) {&lt;br /&gt;
    if (mw.config.get(&#039;wgAction&#039;) == &amp;quot;edit&amp;quot;) {&lt;br /&gt;
        $(function () { setTimeout(function () { $(&amp;quot;textarea[name=Pages], textarea[name=Remarks]&amp;quot;).attr(&#039;dir&#039;, &#039;ltr&#039;);  }, 1000); });&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Messages are configurable here&lt;br /&gt;
self.ws_messages = {&lt;br /&gt;
  &#039;optlist&#039;:&#039;تنظیمات نمایش&#039;,&lt;br /&gt;
  &#039;hide_page_numbers&#039;:&#039;پنهان کردن شماره برگ&#039;,&lt;br /&gt;
  &#039;show_page_numbers&#039;:&#039;نمایش دادن شماره برگ&#039;,&lt;br /&gt;
  &#039;layout&#039;:&#039;نمایش&#039;,&lt;br /&gt;
  &#039;author&#039;:&#039;نویسنده&#039;,&lt;br /&gt;
  &#039;translator&#039;:&#039;مترجم&#039;,&lt;br /&gt;
  &#039;editor&#039;:&#039;ویراستار&#039;,&lt;br /&gt;
  &#039;publisher&#039;:&#039;ناشر&#039;,&lt;br /&gt;
  &#039;place&#039;:&#039;مکان&#039;,&lt;br /&gt;
  &#039;volume&#039;:&#039;جلد&#039;,&lt;br /&gt;
  &#039;school&#039;:&#039;مدرسه&#039;,&lt;br /&gt;
  &#039;book&#039;:&#039;کتاب&#039;,&lt;br /&gt;
  &#039;collection&#039;:&#039;گردآوری&#039;,&lt;br /&gt;
  &#039;journal&#039;:&#039;ژورنال و مجله&#039;,&lt;br /&gt;
  &#039;phdthesis&#039;:&#039;پایان‌نامه&#039;,&lt;br /&gt;
  &#039;dictionary&#039;:&#039;فرهنگ‌لغت&#039;,&lt;br /&gt;
  &#039;progress&#039;:&#039;روند&#039;,&lt;br /&gt;
  &#039;progress_T&#039;:&#039;انجام شد&#039;,&lt;br /&gt;
  &#039;progress_V&#039;:&#039;نمونه‌خوانی شد&#039;,&lt;br /&gt;
  &#039;progress_C&#039;:&#039;باید نمونه‌خوانی شود&#039;,&lt;br /&gt;
  &#039;progress_MS&#039;:&#039;در انتظار همتایابی و جداسازی&#039;,&lt;br /&gt;
  &#039;progress_OCR&#039;:&#039;نیازمند لایه متنی اوسی‌آر&#039;,&lt;br /&gt;
  &#039;progress_L&#039;:&#039;پرونده مبدأ مشکل دارد (بدون برگ‌است، برگ در دسترس نیست، موارد دیگر)&#039;,&lt;br /&gt;
  &#039;▲&#039;:&#039;بازگشت به بالای صفحه&#039;,&lt;br /&gt;
  &#039;corr_list&#039;:&amp;quot;فهرست نمونه‌خوانی‌های انجام شده بر روی این برگ&amp;quot; ,&lt;br /&gt;
  &#039;corr_link&#039;:&amp;quot;تصحیح&amp;quot; ,&lt;br /&gt;
  &#039;corr_one&#039;:&amp;quot;یک اشتباه چاپی &amp;lt;/a&amp;gt; تصحیح شد&amp;quot; ,&lt;br /&gt;
  &#039;corr_many&#039;:&amp;quot; اشتباه‌های چاپی&amp;lt;/a&amp;gt; تصحیح شدند&amp;quot; ,&lt;br /&gt;
  &#039;corr_close&#039;:&amp;quot;بسته&amp;quot; ,&lt;br /&gt;
  &#039;iwtrans&#039;:&#039;مبدا متن&#039;,&lt;br /&gt;
  &#039;iwtrans2&#039;:&#039;مبدا متن از ویکی‌نبشته‌های دیگر&#039;&lt;br /&gt;
};&lt;br /&gt;
self.ws_layouts = {&lt;br /&gt;
 &#039;نمایش یک&#039;:{&lt;br /&gt;
   &#039;#text-wrap&#039;:&amp;quot;&amp;quot;,&lt;br /&gt;
   &#039;#text-container&#039;:&amp;quot;&amp;quot; ,&lt;br /&gt;
   &#039;#text&#039;:&amp;quot;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-right&#039;:&amp;quot;float:right;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-left&#039;:&amp;quot;float:left;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;&amp;quot;,&lt;br /&gt;
   &#039;.editsection&#039;:&amp;quot;display:none&amp;quot;,&lt;br /&gt;
   &#039;#headertemplate&#039;:&amp;quot;&amp;quot;},&lt;br /&gt;
 &#039;نمایش دو&#039;:{&lt;br /&gt;
   &#039;#text-wrap&#039;:&amp;quot;position:relative;margin-left:3em;margin-right:3em;&amp;quot;,&lt;br /&gt;
   &#039;#text-container&#039;:&amp;quot;width:36em;margin:0px auto;font-family:Georgia,serif;&amp;quot; ,&lt;br /&gt;
   &#039;#text&#039;:&amp;quot;text-align:justify;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-right&#039;:&amp;quot;position:absolute; left:37em;width:16em;text-indent:0em;text-align:left;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-left&#039;:&amp;quot;position:absolute; right:37em;width:16em;text-indent:0em;text-align:right;&amp;quot;,&lt;br /&gt;
   &#039;.editsection&#039;:&amp;quot;display:none&amp;quot;,&lt;br /&gt;
   &#039;#headertemplate&#039;:&amp;quot;&amp;quot;},&lt;br /&gt;
 &#039;نمایش سه&#039;:{&lt;br /&gt;
   &#039;#text-wrap&#039;:&amp;quot;margin-left:3em&amp;quot;,&lt;br /&gt;
   &#039;#text-container&#039;:&amp;quot;position:relative; min-width:60em; float:left; width:100%; margin-right:-23em;&amp;quot; ,&lt;br /&gt;
   &#039;#text&#039;:&amp;quot;text-align:justify;margin-right:23em; text-indent:0em; padding-left:0px; padding-right:0px;width:auto; position:relative;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-right&#039;:&amp;quot;position:absolute; right:-10em; width:9em; background-color:#eeeeee;text-indent:0em;text-align:left;&amp;quot;,&lt;br /&gt;
   &#039;.sidenote-left&#039;:&amp;quot;position:absolute; right:-10em; width:9em; background-color:#eeeeee;text-indent:0em;text-align:left;&amp;quot;,&lt;br /&gt;
   &#039;.editsection&#039;:&amp;quot;display:none&amp;quot;,&lt;br /&gt;
   &#039;#headertemplate&#039;:&amp;quot;position:absolute; top:0em; right:-23em; width:21em;float:right; text-align:left;&amp;quot;}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
self.proofreadpage_add_container = true;&lt;br /&gt;
&lt;br /&gt;
var old_wgserver = &#039;//wikisource.org&#039;;&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:Base.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
/*mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:OCR.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);*/&lt;br /&gt;
mw.loader.load(&#039;//fa.wikisource.org/w/index.php?title=MediaWiki:PageNumbers.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:Modernisation.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:Corrections.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:DisplayFooter.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:InterWikiTransclusion.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:IndexForm.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:Dictionary.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
mw.loader.load(old_wgserver + &#039;/w/index.php?title=MediaWiki:RegexpButton.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
&lt;br /&gt;
mw.loader.load(mw.config.get(&#039;wgServer&#039;) + &#039;/w/index.php?title=MediaWiki:MediaWiki.panel.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039; );&lt;br /&gt;
&lt;br /&gt;
// Mouse wheel zoom should work now for most browsers.&lt;br /&gt;
// If it does not work for you, set this to true in your javascript.&lt;br /&gt;
self.proofreadpage_disable_wheelzoom = false;&lt;br /&gt;
&lt;br /&gt;
/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * قرار دادن فرمول‌های ریاضی در سمت چپ مناسب برای ویکی‌های راست به چپ&lt;br /&gt;
 */&lt;br /&gt;
$(function(){&lt;br /&gt;
  $(&amp;quot;img.tex, span.texhtml&amp;quot;).each(function(){&lt;br /&gt;
    if($(this).parent().text().trim() == $(this).text() &amp;amp;&amp;amp; $(this).parent().is(&amp;quot;p,dd&amp;quot;))&lt;br /&gt;
      $(this).parent().css({direction: &amp;quot;ltr&amp;quot;, padding: &amp;quot;1em 0&amp;quot;});&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * جهت صفحات کدهای منبع پایتون، سی‌اس‌اس، جاوااسکریپت، سی، سی++ در هنگام ویرایش&lt;br /&gt;
 */&lt;br /&gt;
if(/\.(js|css|py|cpp|c)$/.test(mw.config.get(&#039;wgPageName&#039;)))&lt;br /&gt;
  mw.util.addCSS(&amp;quot;.diff-addedline, .diff-deletedline, .diff-context { direction: ltr; }&amp;quot; +&lt;br /&gt;
                 &amp;quot;.diff-addedline &amp;gt; div, .diff-deletedline &amp;gt; div, .diff-context &amp;gt; div { white-space: pre; }&amp;quot; +&lt;br /&gt;
                 &amp;quot;#wpTextbox1 { direction: ltr; }&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** Collapsible tables *********************************************************&lt;br /&gt;
 *&lt;br /&gt;
 *  Description: Allows tables to be collapsed, showing only the header. See&lt;br /&gt;
 *               [[Wikipedia:NavFrame]].&lt;br /&gt;
 *  Maintainers: [[User:R. Koot]]&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var autoCollapse = 2;&lt;br /&gt;
var collapseCaption = &amp;quot;نهفتن&amp;quot;;&lt;br /&gt;
var expandCaption = &amp;quot;نمایش&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
function collapseTable( tableIndex )&lt;br /&gt;
{&lt;br /&gt;
    var Button = document.getElementById( &amp;quot;collapseButton&amp;quot; + tableIndex );&lt;br /&gt;
    var Table = document.getElementById( &amp;quot;collapsibleTable&amp;quot; + tableIndex );&lt;br /&gt;
&lt;br /&gt;
    if ( !Table || !Button ) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var Rows = Table.rows;&lt;br /&gt;
&lt;br /&gt;
    if ( Button.firstChild.data == collapseCaption ) {&lt;br /&gt;
        for ( var i = 1; i &amp;lt; Rows.length; i++ ) {&lt;br /&gt;
            Rows[i].style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        Button.firstChild.data = expandCaption;&lt;br /&gt;
    } else {&lt;br /&gt;
        for ( var i = 1; i &amp;lt; Rows.length; i++ ) {&lt;br /&gt;
            Rows[i].style.display = Rows[0].style.display;&lt;br /&gt;
        }&lt;br /&gt;
        Button.firstChild.data = collapseCaption;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createClickHandler( tableIndex ) {&lt;br /&gt;
    return function ( e ) {&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        collapseTable( tableIndex );&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createCollapseButtons()&lt;br /&gt;
{&lt;br /&gt;
    var tableIndex = 0;&lt;br /&gt;
    var NavigationBoxes = {};&lt;br /&gt;
    var Tables = document.getElementsByTagName( &amp;quot;table&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    for ( var i = 0; i &amp;lt; Tables.length; i++ ) {&lt;br /&gt;
        if ( $( Tables[i] ).hasClass( &amp;quot;collapsible&amp;quot; ) ) {&lt;br /&gt;
&lt;br /&gt;
            /* only add button and increment count if there is a header row to work with */&lt;br /&gt;
            var HeaderRow = Tables[i].getElementsByTagName( &amp;quot;tr&amp;quot; )[0];&lt;br /&gt;
            if (!HeaderRow) continue;&lt;br /&gt;
            var Header = HeaderRow.getElementsByTagName( &amp;quot;th&amp;quot; )[0];&lt;br /&gt;
            if (!Header) continue;&lt;br /&gt;
&lt;br /&gt;
            NavigationBoxes[ tableIndex ] = Tables[i];&lt;br /&gt;
            Tables[i].setAttribute( &amp;quot;id&amp;quot;, &amp;quot;collapsibleTable&amp;quot; + tableIndex );&lt;br /&gt;
&lt;br /&gt;
            var Button     = document.createElement( &amp;quot;span&amp;quot; );&lt;br /&gt;
            var ButtonLink = document.createElement( &amp;quot;a&amp;quot; );&lt;br /&gt;
            var ButtonText = document.createTextNode( collapseCaption );&lt;br /&gt;
&lt;br /&gt;
            Button.className = &amp;quot;collapseButton&amp;quot;;  //Styles are declared in Common.css&lt;br /&gt;
&lt;br /&gt;
            ButtonLink.style.color = Header.style.color;&lt;br /&gt;
            ButtonLink.setAttribute( &amp;quot;id&amp;quot;, &amp;quot;collapseButton&amp;quot; + tableIndex );&lt;br /&gt;
            ButtonLink.setAttribute( &amp;quot;href&amp;quot;, &amp;quot;#&amp;quot; );&lt;br /&gt;
            $( ButtonLink ).on( &#039;click&#039;, createClickHandler( tableIndex ) );&lt;br /&gt;
            ButtonLink.appendChild( ButtonText );&lt;br /&gt;
&lt;br /&gt;
            Button.appendChild( document.createTextNode( &amp;quot;[&amp;quot; ) );&lt;br /&gt;
            Button.appendChild( ButtonLink );&lt;br /&gt;
            Button.appendChild( document.createTextNode( &amp;quot;]&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
            Header.insertBefore( Button, Header.firstChild );&lt;br /&gt;
            tableIndex++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for ( var i = 0;  i &amp;lt; tableIndex; i++ ) {&lt;br /&gt;
        if ( $( NavigationBoxes[i] ).hasClass( &amp;quot;collapsed&amp;quot; ) || ( tableIndex &amp;gt;= autoCollapse &amp;amp;&amp;amp; $( NavigationBoxes[i] ).hasClass( &amp;quot;autocollapse&amp;quot; ) ) ) {&lt;br /&gt;
            collapseTable( i );&lt;br /&gt;
        }&lt;br /&gt;
        else if ( $( NavigationBoxes[i] ).hasClass( &amp;quot;innercollapse&amp;quot; ) ) {&lt;br /&gt;
            var element = NavigationBoxes[i];&lt;br /&gt;
            while (element = element.parentNode) {&lt;br /&gt;
                if ( $( element ).hasClass( &amp;quot;outercollapse&amp;quot; ) ) {&lt;br /&gt;
                    collapseTable ( i );&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mw.hook( &#039;wikipage.content&#039; ).add( createCollapseButtons );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** Dynamic Navigation Bars (experimental) *************************************&lt;br /&gt;
 *&lt;br /&gt;
 *  Description: See [[Wikipedia:NavFrame]].&lt;br /&gt;
 *  Maintainers: UNMAINTAINED&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// set up the words in your language&lt;br /&gt;
var NavigationBarHide = &#039;[&#039; + collapseCaption + &#039;]&#039;;&lt;br /&gt;
var NavigationBarShow = &#039;[&#039; + expandCaption + &#039;]&#039;;&lt;br /&gt;
&lt;br /&gt;
// shows and hides content and picture (if available) of navigation bars&lt;br /&gt;
// Parameters:&lt;br /&gt;
//     indexNavigationBar: the index of navigation bar to be toggled&lt;br /&gt;
function toggleNavigationBar(indexNavigationBar)&lt;br /&gt;
{&lt;br /&gt;
    var NavToggle = document.getElementById(&amp;quot;NavToggle&amp;quot; + indexNavigationBar);&lt;br /&gt;
    var NavFrame = document.getElementById(&amp;quot;NavFrame&amp;quot; + indexNavigationBar);&lt;br /&gt;
&lt;br /&gt;
    if (!NavFrame || !NavToggle) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // if shown now&lt;br /&gt;
    if (NavToggle.firstChild.data == NavigationBarHide) {&lt;br /&gt;
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {&lt;br /&gt;
            if ($(NavChild).hasClass(&#039;NavContent&#039;) || $(NavChild).hasClass(&#039;NavPic&#039;)) {&lt;br /&gt;
                NavChild.style.display = &#039;none&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    NavToggle.firstChild.data = NavigationBarShow;&lt;br /&gt;
&lt;br /&gt;
    // if hidden now&lt;br /&gt;
    } else if (NavToggle.firstChild.data == NavigationBarShow) {&lt;br /&gt;
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {&lt;br /&gt;
            if ($(NavChild).hasClass(&#039;NavContent&#039;) || $(NavChild).hasClass(&#039;NavPic&#039;)) {&lt;br /&gt;
                NavChild.style.display = &#039;block&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        NavToggle.firstChild.data = NavigationBarHide;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// adds show/hide-button to navigation bars&lt;br /&gt;
function createNavigationBarToggleButton()&lt;br /&gt;
{&lt;br /&gt;
    var indexNavigationBar = 0;&lt;br /&gt;
    // iterate over all &amp;lt; div &amp;gt;-elements&lt;br /&gt;
    var divs = document.getElementsByTagName(&amp;quot;div&amp;quot;);&lt;br /&gt;
    for (var i = 0; NavFrame = divs[i]; i++) {&lt;br /&gt;
        // if found a navigation bar&lt;br /&gt;
        if ($(NavFrame).hasClass(&amp;quot;NavFrame&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
            indexNavigationBar++;&lt;br /&gt;
            var NavToggle = document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
            NavToggle.className = &#039;NavToggle&#039;;&lt;br /&gt;
            NavToggle.setAttribute(&#039;id&#039;, &#039;NavToggle&#039; + indexNavigationBar);&lt;br /&gt;
            NavToggle.setAttribute(&#039;href&#039;, &#039;javascript:toggleNavigationBar(&#039; + indexNavigationBar + &#039;);&#039;);&lt;br /&gt;
&lt;br /&gt;
            var isCollapsed = $( NavFrame ).hasClass( &amp;quot;collapsed&amp;quot; );&lt;br /&gt;
            /*&lt;br /&gt;
             * Check if any children are already hidden.  This loop is here for backwards compatibility:&lt;br /&gt;
             * the old way of making NavFrames start out collapsed was to manually add style=&amp;quot;display:none&amp;quot;&lt;br /&gt;
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make&lt;br /&gt;
             * the content visible without JavaScript support), the new recommended way is to add the class&lt;br /&gt;
             * &amp;quot;collapsed&amp;quot; to the NavFrame itself, just like with collapsible tables.&lt;br /&gt;
             */&lt;br /&gt;
            for (var NavChild = NavFrame.firstChild; NavChild != null &amp;amp;&amp;amp; !isCollapsed; NavChild = NavChild.nextSibling) {&lt;br /&gt;
                if ( $( NavChild ).hasClass( &#039;NavPic&#039; ) || $( NavChild ).hasClass( &#039;NavContent&#039; ) ) {&lt;br /&gt;
                    if ( NavChild.style.display == &#039;none&#039; ) {&lt;br /&gt;
                        isCollapsed = true;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (isCollapsed) {&lt;br /&gt;
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {&lt;br /&gt;
                    if ( $( NavChild ).hasClass( &#039;NavPic&#039; ) || $( NavChild ).hasClass( &#039;NavContent&#039; ) ) {&lt;br /&gt;
                        NavChild.style.display = &#039;none&#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);&lt;br /&gt;
            NavToggle.appendChild(NavToggleText);&lt;br /&gt;
&lt;br /&gt;
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz&#039;s firstChild handling is borked)&lt;br /&gt;
            for(var j=0; j &amp;lt; NavFrame.childNodes.length; j++) {&lt;br /&gt;
                if ($(NavFrame.childNodes[j]).hasClass(&amp;quot;NavHead&amp;quot;)) {&lt;br /&gt;
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;&lt;br /&gt;
                    NavFrame.childNodes[j].appendChild(NavToggle);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            NavFrame.setAttribute(&#039;id&#039;, &#039;NavFrame&#039; + indexNavigationBar);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$( createNavigationBarToggleButton );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Test if an element has a certain class.&lt;br /&gt;
 *&lt;br /&gt;
 * @deprecated Use jQuery instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var hasClass = (function () {&lt;br /&gt;
    var reCache = {};&lt;br /&gt;
    return function (element, className) {&lt;br /&gt;
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp(&amp;quot;(?:\\s|^)&amp;quot; + className + &amp;quot;(?:\\s|$)&amp;quot;))).test(element.className);&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Quality indicators on &amp;quot;article&amp;quot; tab&lt;br /&gt;
 * by [[user:ThomasV]]&lt;br /&gt;
 */&lt;br /&gt;
// Return src for icon given percentage&lt;br /&gt;
function icon_src(t){&lt;br /&gt;
  var src=&#039;//upload.wikimedia.org/wikipedia/commons/&#039;;&lt;br /&gt;
  switch(t){&lt;br /&gt;
    case &#039;0%&#039;: src+=&#039;8/8f/00&#039;; break;&lt;br /&gt;
    case &#039;25%&#039;: src+=&#039;5/5b/25&#039;; break;&lt;br /&gt;
    case &#039;50%&#039;: src+=&#039;3/3a/50&#039;; break;&lt;br /&gt;
    case &#039;75%&#039;: src+=&#039;c/cd/75&#039;; break;&lt;br /&gt;
    case &#039;100%&#039;: src+=&#039;6/64/100&#039;; break;&lt;br /&gt;
  }&lt;br /&gt;
  return src + &#039;%25.png&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// add indicator&lt;br /&gt;
function pageQuality() {&lt;br /&gt;
  var a = document.getElementById(&#039;ca-nstab-main&#039;);&lt;br /&gt;
  if(!a) return;&lt;br /&gt;
&lt;br /&gt;
  var pr_index = document.getElementById(&#039;pr_index&#039;);&lt;br /&gt;
  if(pr_index) return;&lt;br /&gt;
&lt;br /&gt;
  var q = document.getElementById(&#039;textquality&#039;);&lt;br /&gt;
  var new_img;&lt;br /&gt;
  if(q) {&lt;br /&gt;
    new_img = document.createElement(&#039;img&#039;);&lt;br /&gt;
    new_img.setAttribute(&#039;src&#039;, icon_src(q.className));&lt;br /&gt;
    a.firstChild.appendChild(new_img);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for(var i=0; spanElem = document.getElementsByTagName(&#039;span&#039;)[i]; i++) {&lt;br /&gt;
    if (spanElem.className == &#039;pagequality&#039;) {&lt;br /&gt;
      new_img = document.createElement(&#039;img&#039;);&lt;br /&gt;
      new_img.setAttribute(&#039;src&#039;, icon_src(spanElem.title));&lt;br /&gt;
&lt;br /&gt;
      if(mw.config.get(&#039;wgCanonicalNamespace&#039;) == &#039;Page&#039;) {&lt;br /&gt;
        a.firstChild.appendChild(new_img);&lt;br /&gt;
      }&lt;br /&gt;
      else {&lt;br /&gt;
        s1 = spanElem.parentNode.previousSibling;&lt;br /&gt;
        opttext = s1.firstChild.firstChild;&lt;br /&gt;
        img = opttext.firstChild.nextSibling.nextSibling.nextSibling;&lt;br /&gt;
        next = img.nextSibling;&lt;br /&gt;
        opttext.removeChild(img);&lt;br /&gt;
        opttext.insertBefore(new_img,next);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
$(pageQuality);&lt;br /&gt;
&lt;br /&gt;
// Add link to the extension [[user:sanbeg]]&lt;br /&gt;
function pr_add_quality_buttons_link(){&lt;br /&gt;
    if(typeof proofreadPageMessageStatus == &#039;undefined&#039;) return;&lt;br /&gt;
  if( self.proofreadpage_no_quality_buttons ) return;&lt;br /&gt;
  var ig = document.getElementById(&amp;quot;wpWatchthis&amp;quot;);&lt;br /&gt;
  if( !ig ) return;&lt;br /&gt;
  var f = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
  f.innerHTML = &#039; (&amp;lt;a href=&amp;quot;/wiki/Help:Page Status&amp;quot;&amp;gt;help&amp;lt;/a&amp;gt;)&#039;;&lt;br /&gt;
&lt;br /&gt;
    ig.parentNode.insertBefore(f,ig.nextSibling.nextSibling.nextSibling.nextSibling);&lt;br /&gt;
}&lt;br /&gt;
$(pr_add_quality_buttons_link);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Allow descriptive labels next to sidebar language links using {{interwiki-info}}&lt;br /&gt;
 * by [[user:ThomasV]]&lt;br /&gt;
 */&lt;br /&gt;
function interwikiExtra() {&lt;br /&gt;
  // iterate over all &amp;lt;span&amp;gt;-elements&lt;br /&gt;
  for(var i=0; a=document.getElementsByTagName(&#039;span&#039;)[i]; i++) {&lt;br /&gt;
    // if found a linkInfo span&lt;br /&gt;
    if(a.className == &#039;interwiki-info&#039;) {&lt;br /&gt;
      // iterate over all &amp;lt;li&amp;gt;-elements&lt;br /&gt;
      var count=0;&lt;br /&gt;
      for(var j=0; b=document.getElementsByTagName(&#039;li&#039;)[j]; j++) {&lt;br /&gt;
        if(b.className == &#039;interwiki-&#039; + a.id) {&lt;br /&gt;
          b.innerHTML = b.innerHTML + &#039; &#039; + a.title;&lt;br /&gt;
          if(a.title == &#039;(vo)&#039;) {&lt;br /&gt;
            b.title = &#039;Original Version&#039;;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        else if(b.className == &#039;interwiki-&#039; + a.id.substr(0, a.id.length-1)) {&lt;br /&gt;
          count++;&lt;br /&gt;
          if(a.id.charAt(a.id.length-1) == count) {&lt;br /&gt;
            b.innerHTML = b.innerHTML + &#039; &#039; + a.title;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
$(interwikiExtra);&lt;br /&gt;
&lt;br /&gt;
//adding combo box to edittools.js&lt;br /&gt;
var load_edittools = true;&lt;br /&gt;
// extra drop down menu on editing for adding special characters&lt;br /&gt;
importScript( &#039;MediaWiki:Edittools.js&#039; );&lt;br /&gt;
// Editpage scripts&lt;br /&gt;
if( $.inArray(mw.config.get(&#039;wgAction&#039;), [&#039;edit&#039; , &#039;submit&#039; ]) !== -1) {&lt;br /&gt;
        importScript( &#039;MediaWiki:Editpage.js&#039; );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:PageNumbers.js&amp;diff=469</id>
		<title>مدیاویکی:PageNumbers.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:PageNumbers.js&amp;diff=469"/>
		<updated>2026-11-09T09:57:07Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد اسکریپت&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*********************************&lt;br /&gt;
* page numbers for proofreadpage&lt;br /&gt;
* by [[user:ThomasV]]&lt;br /&gt;
**********************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Until we can use dependencies to ensure load of Base.js first, we need this,&lt;br /&gt;
// window.ws_msg and window.get_opt_list in this script.&lt;br /&gt;
if(!self.ws_messages) self.ws_messages = { };&lt;br /&gt;
&lt;br /&gt;
function ws_msg(name) {&lt;br /&gt;
   var m = self.ws_messages[name];&lt;br /&gt;
   if(m) return m; else return name;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function get_optlist() {&lt;br /&gt;
	var optlist = document.getElementById(&amp;quot;optlist&amp;quot;);&lt;br /&gt;
	if(!optlist) {&lt;br /&gt;
		var displayOptions = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		if (mw.config.get(&#039;skin&#039;)===&#039;vector&#039;) {&lt;br /&gt;
			displayOptions.className = &amp;quot;portal collapsed&amp;quot;;&lt;br /&gt;
			cl=&amp;quot;body&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			displayOptions.className = &amp;quot;portlet&amp;quot;;&lt;br /&gt;
			cl=&amp;quot;pBody&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		displayOptions.innerHTML = &#039;&amp;lt;h3&amp;gt;&#039; + ws_msg(&#039;optlist&#039;) + &#039;&amp;lt;\/h3&amp;gt;&amp;lt;div class=&amp;quot;&#039;+cl+&#039;&amp;quot;&amp;gt;&amp;lt;ul id=&amp;quot;optlist&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;\/div&amp;gt;&#039;;&lt;br /&gt;
                var ptb = document.getElementById(&amp;quot;p-tb&amp;quot;);&lt;br /&gt;
                ptb.parentNode.insertBefore(displayOptions,ptb);&lt;br /&gt;
                displayOptions.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;p-displayOptions&amp;quot;);&lt;br /&gt;
                displayOptions.id=&amp;quot;p-displayOptions&amp;quot;; /* */&lt;br /&gt;
		optlist = document.getElementById(&amp;quot;optlist&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	return optlist;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var layout_num = 0;&lt;br /&gt;
&lt;br /&gt;
function toggle_layout() {&lt;br /&gt;
  var n=0, key;&lt;br /&gt;
  for( key in self.ws_layouts ) n++;&lt;br /&gt;
  layout_num = (layout_num+1) % n;&lt;br /&gt;
  $.cookie(&amp;quot;layout&amp;quot;,&amp;quot;&amp;quot;+layout_num);&lt;br /&gt;
  set_layout(layout_num);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(!self.ws_layouts) self.ws_layouts = {};&lt;br /&gt;
&lt;br /&gt;
function set_layout(layout_num) {&lt;br /&gt;
  var d, css, i=0, key;&lt;br /&gt;
  for( key in self.ws_layouts ) { if(i==layout_num) layout_name = key; i++; }&lt;br /&gt;
  d = self.ws_layouts[layout_name];&lt;br /&gt;
  function setStyle(){&lt;br /&gt;
     this.style.cssText = css;&lt;br /&gt;
  }&lt;br /&gt;
  for( key in d ) {&lt;br /&gt;
     css = d[key];&lt;br /&gt;
     if( key.substring(0,1) === &#039;.&#039; || key.substring(0,1) == &#039;#&#039; ) {&lt;br /&gt;
        $(key).each(setStyle);&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
  o_a = document.getElementById(&amp;quot;option-textLayout&amp;quot;);&lt;br /&gt;
  if(o_a) o_a.innerHTML = &amp;quot;&amp;lt;a href=&#039;javascript:toggle_layout();&#039;&amp;gt;&amp;quot;+layout_name+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  refresh_pagenumbers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function add_page_container(){&lt;br /&gt;
        var i, t;&lt;br /&gt;
        if($.inArray(mw.config.get(&#039;wgNamespaceNumber&#039;), [ 0, 2 ]) === -1) return; &lt;br /&gt;
        var id = null;&lt;br /&gt;
        if($.inArray(mw.config.get(&#039;wgAction&#039;), [&amp;quot;view&amp;quot;, &amp;quot;purge&amp;quot;]) !== -1) id = &amp;quot;#bodyContent&amp;quot;; &lt;br /&gt;
        else if(mw.config.get(&#039;wgAction&#039;)==&amp;quot;submit&amp;quot;) id = &amp;quot;#wikiPreview&amp;quot;; &lt;br /&gt;
        if (!id) return;&lt;br /&gt;
        if( document.getElementById(&amp;quot;text-wrap&amp;quot;) ) return;&lt;br /&gt;
&lt;br /&gt;
        if( !mw.config.get(&#039;prpSourceIndexPage&#039;) &amp;amp;&amp;amp; !$(&amp;quot;span.pagenum&amp;quot;).length ) return;&lt;br /&gt;
&lt;br /&gt;
	$(&amp;quot;div.text, div.lefttext, div.centertext, div.indented-page, div.prose&amp;quot;)&lt;br /&gt;
		.removeClass();&lt;br /&gt;
&lt;br /&gt;
        $(id).prepend($(&#039;#contentSub&#039;));&lt;br /&gt;
        $(&#039;#contentSub&#039;).nextUntil(&#039;#catlinks&#039;).wrapAll(&amp;quot;&amp;lt;div id=&#039;text-wrap&#039;&amp;gt;&amp;lt;div id=&#039;text-container&#039;&amp;gt;&amp;lt;div id=&#039;text&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&#039;clear:both&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function set_layout_by_name(name){&lt;br /&gt;
	var key;&lt;br /&gt;
    if (self.ws_layouts[name]===undefined) return; //doesn&#039;t exists&lt;br /&gt;
 &lt;br /&gt;
    var i=0; for( key in self.ws_layouts ) { if(key==name) break; i++; }&lt;br /&gt;
    layout_num = i;&lt;br /&gt;
    set_layout(i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function init_page_layout() {&lt;br /&gt;
	var key;&lt;br /&gt;
    if(self.debug_page_layout) return;&lt;br /&gt;
&lt;br /&gt;
    if(document.URL.indexOf(&amp;quot;match=&amp;quot;) &amp;gt; 0 ) return;&lt;br /&gt;
    if(document.URL.indexOf(&amp;quot;diff=&amp;quot;) &amp;gt; 0 ) return;&lt;br /&gt;
&lt;br /&gt;
    var k=false; &lt;br /&gt;
    for( key in self.ws_layouts ) { k = true;}&lt;br /&gt;
    if(!k) return;&lt;br /&gt;
&lt;br /&gt;
    add_page_container();&lt;br /&gt;
&lt;br /&gt;
    if(document.getElementById(&amp;quot;text-wrap&amp;quot;)) {&lt;br /&gt;
       var optlist = get_optlist();&lt;br /&gt;
       mw.util.addPortletLink (&#039;p-displayOptions&#039;, &#039;javascript:toggle_layout();&#039;, ws_msg(&#039;layout&#039;), &#039;option-textLayout&#039;, &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
        layout_num = 0;&lt;br /&gt;
        /* FIXME: the cookie also must store the selected layout by name, but it must be backward compatible with the storing by integer */&lt;br /&gt;
        layout = $.cookie(&amp;quot;layout&amp;quot;) ;&lt;br /&gt;
        if (layout)&lt;br /&gt;
            layout_num = parseInt( layout );&lt;br /&gt;
        if(!layout_num || layout_num == NaN) layout_num = 0;&lt;br /&gt;
        set_layout(layout_num);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hide_pagenumbers(){&lt;br /&gt;
   $(&#039;div.pagenumber, span.pagenumber&#039;).hide();&lt;br /&gt;
   o_a = document.getElementById(&amp;quot;option-pageNumbers&amp;quot;);&lt;br /&gt;
   if(o_a) {&lt;br /&gt;
     o_a.innerHTML = &amp;quot;&amp;lt;a href=&#039;javascript:show_pagenumbers();&#039;&amp;gt;&amp;quot;+ws_msg(&#039;show_page_numbers&#039;)+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   $.cookie(&amp;quot;pagenum&amp;quot;,&amp;quot;0&amp;quot;) ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function show_pagenumbers(){&lt;br /&gt;
   $(&#039;div.pagenumber, span.pagenumber&#039;).show();&lt;br /&gt;
   o_a = document.getElementById(&amp;quot;option-pageNumbers&amp;quot;);&lt;br /&gt;
   if(o_a){&lt;br /&gt;
     o_a.innerHTML = &amp;quot;&amp;lt;a href=&#039;javascript:hide_pagenumbers();&#039;&amp;gt;&amp;quot;+ws_msg(&#039;hide_page_numbers&#039;)+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   $.cookie(&amp;quot;pagenum&amp;quot;,&amp;quot;1&amp;quot;) ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pagenum_over(ox,oy,prev_ox,prev_oy,h,w) {&lt;br /&gt;
  if(self.proofreadpage_disable_highlighting) return true;&lt;br /&gt;
  var ct = document.getElementById(&amp;quot;ct-popup&amp;quot;);&lt;br /&gt;
  if(!ct) return true;&lt;br /&gt;
  var dd = h/10;&lt;br /&gt;
  ct.style.top = (oy-h+dd)+&amp;quot;px&amp;quot;;&lt;br /&gt;
  ct.style.height= &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  ct.firstChild.style.width = (w-ox)+&amp;quot;px&amp;quot;;&lt;br /&gt;
  ct.firstChild.nextSibling.style.height = (prev_oy-oy-h)+&amp;quot;px&amp;quot;;&lt;br /&gt;
  ct.firstChild.nextSibling.nextSibling.style.width = prev_ox+&amp;quot;px&amp;quot;;&lt;br /&gt;
  return true;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pagenum_out(){&lt;br /&gt;
  if(self.proofreadpage_disable_highlighting) return true;&lt;br /&gt;
  var ct = document.getElementById(&amp;quot;ct-popup&amp;quot;);&lt;br /&gt;
  if(!ct) return true;&lt;br /&gt;
  ct.style.height= &amp;quot;0px&amp;quot;;&lt;br /&gt;
  ct.firstChild.style.width = &amp;quot;0px&amp;quot;;&lt;br /&gt;
  ct.firstChild.nextSibling.style.height = &amp;quot;0px&amp;quot;;&lt;br /&gt;
  ct.firstChild.nextSibling.nextSibling.style.width = &amp;quot;0px&amp;quot;;&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function init_page_numbers() {&lt;br /&gt;
&lt;br /&gt;
	if(document.URL.indexOf(&amp;quot;match=&amp;quot;) &amp;gt; 0 ) return;&lt;br /&gt;
&lt;br /&gt;
    self.pagenum_ml = $(&#039;span.pagenum&#039;).get();&lt;br /&gt;
&lt;br /&gt;
    if( !mw.config.get(&#039;prpSourceIndexPage&#039;) || !self.pagenum_ml.length) return;&lt;br /&gt;
&lt;br /&gt;
    var optlist = get_optlist();&lt;br /&gt;
    mw.util.addPortletLink (&#039;p-displayOptions&#039;, &#039;javascript:hide_pagenumbers();&#039;, ws_msg(&#039;hide_page_numbers&#039;), &#039;option-pageNumbers&#039;, &#039;&#039;, &#039;n&#039; );&lt;br /&gt;
&lt;br /&gt;
    var cs = document.getElementById(&amp;quot;mw-content-text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    /* Measure the line height and the height of an empty span */&lt;br /&gt;
    var ct = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
    ct.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;my-ct&amp;quot;);&lt;br /&gt;
    cs.insertBefore(ct,cs.firstChild);&lt;br /&gt;
    var ss = document.createElement(&amp;quot;div&amp;quot;); /*we need a div, not a span*/&lt;br /&gt;
    ss.innerHTML=&amp;quot;&amp;amp;nbsp;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;;     /*empty span following some text */&lt;br /&gt;
    ss.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;my-ss&amp;quot;);&lt;br /&gt;
    cs.appendChild(ss);&lt;br /&gt;
&lt;br /&gt;
    /* container for page numbers */&lt;br /&gt;
    var div_pagenums = document.createElement(&amp;quot;div&amp;quot;); &lt;br /&gt;
    div_pagenums.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;ct-pagenums&amp;quot;);&lt;br /&gt;
    /* insert the container in the grandparent node, or parent, or self */&lt;br /&gt;
    var mcs = document.getElementById(&amp;quot;text-wrap&amp;quot;);&lt;br /&gt;
    if(!mcs) {&lt;br /&gt;
      if(cs.parentNode.parentNode.style.position==&amp;quot;relative&amp;quot;) mcs = cs.parentNode.parentNode;&lt;br /&gt;
      else if(cs.parentNode.style.position==&amp;quot;relative&amp;quot;) mcs = cs.parentNode; &lt;br /&gt;
      else { mcs = cs; mcs.style.position = &amp;quot;relative&amp;quot;; }&lt;br /&gt;
    } &lt;br /&gt;
    mcs.appendChild(div_pagenums);&lt;br /&gt;
&lt;br /&gt;
    /* container for the highlight */&lt;br /&gt;
    var div_popup = document.createElement(&amp;quot;div&amp;quot;); &lt;br /&gt;
    var opacity=&amp;quot;background-color:#000000;opacity:0.2;-ms-filter:alpha(opacity=20);filter:alpha(opacity=20);&amp;quot;;&lt;br /&gt;
    div_popup.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;ct-popup&amp;quot;);&lt;br /&gt;
    div_popup.style.cssText = &amp;quot;position:absolute;width:100%;&amp;quot;;&lt;br /&gt;
    div_popup.innerHTML = &amp;quot;&amp;lt;div style=\&amp;quot;&amp;quot;+opacity+&amp;quot;float:right;width:0px;\&amp;quot; &amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      +&amp;quot;&amp;lt;div style=\&amp;quot;&amp;quot;+opacity+&amp;quot;width:100%;height:0px;clear:both;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      +&amp;quot;&amp;lt;div style=\&amp;quot;&amp;quot;+opacity+&amp;quot;width:0px;\&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
    cs.appendChild(div_popup);&lt;br /&gt;
&lt;br /&gt;
    refresh_pagenumbers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function refresh_pagenumbers() {&lt;br /&gt;
    var ct = document.getElementById(&amp;quot;my-ct&amp;quot;);&lt;br /&gt;
    if(!ct) return;&lt;br /&gt;
&lt;br /&gt;
    var ss = document.getElementById(&amp;quot;my-ss&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var cs = ct.parentNode;&lt;br /&gt;
    /* set it to relative because the highlight is of width 100% */&lt;br /&gt;
    cs.style.position = &amp;quot;relative&amp;quot;; /* fixme : this interacts with layouts */&lt;br /&gt;
&lt;br /&gt;
    var lineheight = ss.offsetHeight; &lt;br /&gt;
    var offset_h = ss.lastChild.offsetHeight;&lt;br /&gt;
&lt;br /&gt;
    var linewidth = cs.offsetWidth; &lt;br /&gt;
    var ct_o = $(ct).position();&lt;br /&gt;
    var ct_ox = ct_o.left; &lt;br /&gt;
    var ct_oy = ct_o.top;&lt;br /&gt;
    var oo = $(ss).position(ss);&lt;br /&gt;
    var ox = oo.left - ct_ox; var oy = oo.top - ct_oy;&lt;br /&gt;
&lt;br /&gt;
    var oh =&amp;quot;&amp;quot;;&lt;br /&gt;
    for(var i=self.pagenum_ml.length-1; i&amp;gt;=0; i--) {&lt;br /&gt;
        var a = self.pagenum_ml[i];&lt;br /&gt;
        // Switch to URL encoding, except for hex-like sequences that would turn&lt;br /&gt;
        // into ASCII control characters.&lt;br /&gt;
        var num = a.id.replace(/\.([2-68-F][0-9A-F]|7[A-E])/g, &amp;quot;%$1&amp;quot;);&lt;br /&gt;
        try {&lt;br /&gt;
            num = decodeURIComponent(num.replace(/_/g, &amp;quot; &amp;quot;));&lt;br /&gt;
        }&lt;br /&gt;
        catch (exc) {&lt;br /&gt;
            num = a.id;&lt;br /&gt;
        }&lt;br /&gt;
        var page = a.title;&lt;br /&gt;
        var pagetitle = decodeURI( page );&lt;br /&gt;
        var page_url = mw.config.get(&#039;wgArticlePath&#039;).replace(&amp;quot;$1&amp;quot;, encodeURIComponent( pagetitle.replace(/ /g,&amp;quot;_&amp;quot;) ) );&lt;br /&gt;
        // encodeURIComponent encodes &#039;/&#039;, which breaks subpages&lt;br /&gt;
        page_url = page_url.replace(/%2F/g, &#039;/&#039;);&lt;br /&gt;
        var ll = a.parentNode.nextSibling;&lt;br /&gt;
        if(ll &amp;amp;&amp;amp; ll.tagName==&amp;quot;A&amp;quot; &amp;amp;&amp;amp; ll.className==&amp;quot;new&amp;quot;) class_str=&amp;quot; class=\&amp;quot;new\&amp;quot; &amp;quot;; else class_str=&amp;quot;&amp;quot;;&lt;br /&gt;
        var link_str = &amp;quot;&amp;lt;a href=\&amp;quot;&amp;quot;+page_url+&amp;quot;\&amp;quot;&amp;quot; + class_str + &amp;quot; title=\&amp;quot;&amp;quot;+mw.html.escape(pagetitle)+&amp;quot;\&amp;quot;&amp;gt;&amp;quot;+mw.html.escape(num)+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
        if(self.proofreadpage_numbers_inline){&lt;br /&gt;
                a.innerHTML = &amp;quot;&amp;amp;#x0020;&amp;lt;span class=\&amp;quot;pagenumber noprint\&amp;quot; style=\&amp;quot;color:#666666; display:inline; margin:0px; padding:0px;\&amp;quot;&amp;gt;[&amp;lt;b&amp;gt;&amp;quot;+link_str+&amp;quot;&amp;lt;/b&amp;gt;]&amp;lt;/span&amp;gt;&amp;amp;#x0020;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        else { &lt;br /&gt;
            prev_ox = ox;&lt;br /&gt;
            prev_oy = oy;&lt;br /&gt;
            a_o = $(a).position(); &lt;br /&gt;
            ox = a_o.left - ct_ox;&lt;br /&gt;
            oy = a_o.top - ct_oy + offset_h;&lt;br /&gt;
&lt;br /&gt;
            if(prev_oy - oy &amp;gt; 5) {&lt;br /&gt;
                  oh = oh + &amp;quot;&amp;lt;div class=\&amp;quot;pagenumber noprint\&amp;quot; onmouseover=\&amp;quot;pagenum_over(&amp;quot;+ ox + &amp;quot;,&amp;quot; + oy + &amp;quot;,&amp;quot; + prev_ox + &amp;quot;,&amp;quot; + prev_oy + &amp;quot;,&amp;quot; + lineheight + &amp;quot;,&amp;quot; + linewidth + &amp;quot;);\&amp;quot; onmouseout=\&amp;quot;pagenum_out();\&amp;quot; style=\&amp;quot;position:absolute; right:-2em; top:&amp;quot;+(oy+cs.offsetTop-lineheight)+&amp;quot;px; text-indent:0em; text-align:left; font-size:80%; font-weight:normal; font-style: normal;\&amp;quot;&amp;gt;[&amp;quot;+link_str+&amp;quot;]&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
     if(!self.proofreadpage_numbers_inline) {&lt;br /&gt;
        var ct_pagenums = document.getElementById(&amp;quot;ct-pagenums&amp;quot;);&lt;br /&gt;
        ct_pagenums.innerHTML = oh;&lt;br /&gt;
    }&lt;br /&gt;
    pagenum_out();&lt;br /&gt;
    if( parseInt($.cookie(&amp;quot;pagenum&amp;quot;)) == 0 ) hide_pagenumbers();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($.inArray(mw.config.get(&#039;wgAction&#039;), [ &#039;view&#039;, &#039;submit&#039; ]) != -1) {&lt;br /&gt;
    //fixme : this is sensitive to order (detection of containers with &amp;quot;relative&amp;quot; position)&lt;br /&gt;
    $(document).ready(init_page_layout);&lt;br /&gt;
    $(document).ready(init_page_numbers);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B4&amp;diff=437</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۴</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B4&amp;diff=437"/>
		<updated>2026-11-08T19:14:19Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: برخی اصلاحات&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;3&amp;quot; user=&amp;quot;Shahroudi&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
چون که قاعده ولایت انگلیس اینست که فرمانفرمای هندوستان&lt;br /&gt;
بعد از مدّت معیّن که گویا پنجسال باشد عوض میشود درین روزها&lt;br /&gt;
در ولایت انگلیس شهرت داشته که لارِ دوالحُوضِی که فرمانفرمای &lt;br /&gt;
هندوستان است بناست که بخواهند و بجای او لارِونار&lt;br /&gt;
مانیِه را که از جانب دولت انگلیس صفیر کبیر فرانسه است بهندوستان&lt;br /&gt;
{{و|روانه نمایند}}&lt;br /&gt;
&lt;br /&gt;
{{و|فرانسِه}}&lt;br /&gt;
&lt;br /&gt;
به تاریخ هشتم محرّم وکلای رعایا بمشورتخانه پاریس پای‌تخت فرانسه&lt;br /&gt;
جمع شدند بجهة راندن امورات دولتی و چونکه از مکالمات&lt;br /&gt;
لوی ناپلیان رئیس دولت فرانسه باهل مشورتخانه معلوم گردید که&lt;br /&gt;
منظور دولت فرانسه با همه دول صلح است و خیال جنگ با هیچیک از دول&lt;br /&gt;
خارجه ندارند باعث اعتبار دولت و اطمینان خلق گردیده&lt;br /&gt;
در [نمستان؟] که یک سرحد فرانسه است گمان جنگ و اغتشاش &lt;br /&gt;
بود از اینجهت دولت فرانسه نیز بنا داشتنشد که قشون خود را زیاد بکنند خصوص درین روزها که بناداشته‌شد چهل‌هزار قشون زیاد بکنند درین باب در مشورتخانه بحث و گفتگوی زیاد شده. آخرالامر قرار براین شد که گرفتن این قشون موقوف باشد تا باقتضای وقت بعد اندیشه نمایند.&lt;br /&gt;
&lt;br /&gt;
مفسدین فرانسه مدیست که میخواهند این دولت جمهوریه را برهم بزنند و بجهة نظم سخت که در آنولایت گذاشته‌شد درین روزها قدری آرام دارند مگر در یکی از بلوکات آنجا دولت شدند که میخواهند اغتشاش برپا نمایند. نظام به جهت گرفتن آنها بیرون آوردند {{ناخوانا}} اجتماع کردند که مفسدین را از دست نظام بگیرند جنگ {{ناخوانا}} یک نفر از اهل نظام گلوله بچانه‌اش خورده و یکنفر از مفسدین هم کشته شدند.&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
مدتی میشود که مابین پادشاهان ممالکی که در اینجا {{ناخوانا}} میباشد بحث و گفتگوهای مختلف است و از هر طرف تدارک جنگ میبینند. از آنجمله امپراطور استریه بناداشت که سیصد هزار قشون مهیا نماید غیر از قشونی که بجهة {{ناخوانا}} در سرحد مملکت ایطالیا داشتند و بجهة سرداری کل این قشون {{ناخوانا}} و دولت پروسیه نیز تدارک جنگ میدید و قاعده این دولت چنین است که هر کس باید در ایان جوانی در میان قشون مشق نماید تا در مشق کامل که شد مرخص خانه است اما در هنگام ضرورت اعلام میکنند که بر خدمت حاضر شود و سایر ممالک کوچک {{ناخوانا}} هم بعضی طرف استریه و بعضی طرف پروسیه دارند اما در این روزها بنا گذاشته‌اند که از اطراف ایلچیان دول در شهر المطس جمع شده این نزاع را بگفتگو و مصالحه تمام نمایند و موافق روزنامه آخر که آمده است، گویا قراری گذشته‌اند که جنگ و قشون‌کشی و خونریزی نشود و باصلاح بگذرانند.&lt;br /&gt;
{{و|{{بزرگتر|هندوستان}}}}&lt;br /&gt;
کاغذ آخر که از بنبائی هندوستان رسید بتاریخ دوازدهم ذیحجه بود و کل هندوستان امن و آرام بود. فرمانفرمای هندوستان {{ناخوانا}} جائیست در کوهستان {{ناخوانا}} توقف داشت و بنا داشت که از آنجا بسمت پنجاب روانه شود و در اکثر آن مملکت بارندگی زیاد شده بود بطوریکه بیم آن داشتند که شدت بارندگی و زیاد شدن سیل آب در رودخانها {{ناخوانا}} که در آنجاها کاشته‌اند خراب و تلف نماید.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=436</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۳</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=436"/>
		<updated>2026-11-08T18:15:27Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: /* هم‌سنجی‌شده */ اتمام تصحیحات ستون دوم&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;4&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
هرزه‌گی فرقه ضالّه [[w:بابیت|بابیّه]] در ممالک محروسه ایران در هر جا شهرت&lt;br /&gt;
یافته از آنکه گذشته است ذکرش قابل نیست مگر تازه حکایت ملّا محمّدعلی&lt;br /&gt;
ملحد ملعون مطرود است که داخل باین فرقه ضاله شده با جمعی از اتباع خود&lt;br /&gt;
در رفسنجان یاغی شده هر قدر اولیای دولت قاهره سعی در نصیحت او کردند و از&lt;br /&gt;
علماء نصایح و مواعظ او از هر جا نوشتند سود نبخشیده و در مقابل&lt;br /&gt;
قشون پادشاهی بمقابله و مقاتله ایستادند و از قشون&lt;br /&gt;
پادشاهی بمعرض تلف درآمد بالاخره خود او در مجادله&lt;br /&gt;
مقتول و اتباعش آنچه متفرّق نشده بودند در دعواها بهلاکت&lt;br /&gt;
{{و|رسیده و بکلّی تمام شدند}}&lt;br /&gt;
&lt;br /&gt;
میرزا قوما که در بهبهان بود و چند سال در آنجا خودسری میکرد&lt;br /&gt;
این روزها عالیجاه عباسقلی خان سردار لاریجانی او را گرفته با [مالیات؟]&lt;br /&gt;
[یوانی؟] که بخزانه عامره میآوردند روانه دارالخلافه نموده و&lt;br /&gt;
نصراللّه خان یوزباشی لک مامور شد که باصفهان رفته سرباز&lt;br /&gt;
هائیکه مامور آوردن میرزا قوما بودند برگرداند و او را بدارالخلافه طهران&lt;br /&gt;
{{و|بسپارد}}&lt;br /&gt;
&lt;br /&gt;
نوّاب خانلر میرزا که بحکومت لرستان و عربستان مأمور بود&lt;br /&gt;
از بروجرد با سواره [ابوال]جمعی و فوج بروجردی بمقرّ حکومت&lt;br /&gt;
{{و|خود روانه شد}}&lt;br /&gt;
&lt;br /&gt;
چون اولیای دولت علیه اهتمام بسیار دارند که صنایع بدیعه&lt;br /&gt;
ممالک محروسه رونق تمام یابد لهذا در بافتن شال [کرمان؟] قدغن [اکید؟]&lt;br /&gt;
نمودند که خوب بافته شود و حالا بطوری شده است که [نهایت؟] امتیاز را&lt;br /&gt;
دارد و نمونه‌ها که آورده‌اند و بنظر اولیای دولت علیه رسیده {{و|[شبیه؟] شالهای کشمیری میشود}}&lt;br /&gt;
&lt;br /&gt;
سابقاً حکم شده بود که نوّاب شاهزاده مهدیقلی میرزا حاکم مازندران &lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
اشخاصی را که قابل [هستند؟] تربیت و ترغیب نماید که شکر مازندران را&lt;br /&gt;
مانند شکر هندوستان سفید نما[ین]د درین روزها استاد عبدالحمید نام&lt;br /&gt;
مأمور شده رفت و درین هفته بقدر سی من شکر آنجا را که &lt;br /&gt;
سفید کرده بود آوردند مانند شکر هندوستان است از هر قسم&lt;br /&gt;
حلویات ازو ساختند و بسیار خوب شده بود و آن بهتر از شکر &lt;br /&gt;
جزایر ینگی دنیا که هندالغربی مینامند است و حکم شد که&lt;br /&gt;
باز هم درست نمایند و چونکه بعمل آمدن این شکر نفع ممالک&lt;br /&gt;
ایرانست در جاهای دیگر هم که ممکن است بعمل بیاید قرار شده است&lt;br /&gt;
که سعی نموده بعمل بیاورند از ان جمله در خوزستان نیز که سابقا شکر&lt;br /&gt;
آنجا مشهور بود حکم شده است که باز بکارند و شکر سفید&lt;br /&gt;
{{و|بعمل بیاورند}}&lt;br /&gt;
&lt;br /&gt;
عالیجاه شفیع خان نایب اوّل اجودان‌باشی مأمور بمصلحت گذاری&lt;br /&gt;
{{و|و اقامت لندن پایتخت انگلیس شد}}&lt;br /&gt;
&lt;br /&gt;
عالیجاه میرزا حسین‌خان مأمور باقامت ببنائی و کارپرداز&lt;br /&gt;
امور تجارت تبعهٔ دولت علیّه ایران که در آن شهر میباشند&lt;br /&gt;
{{و|گردیده است}}&lt;br /&gt;
&lt;br /&gt;
{{و|اخبار دوَل خارجه انگلیس}}&lt;br /&gt;
&lt;br /&gt;
درین مملکت اخباری نبود که مدخلیّت باهل دول خارجه داشته باشد&lt;br /&gt;
در  کل [ج]ر ایران آن [حشمت؟] امنیّت و آرامی بود اهل مشورتخانه&lt;br /&gt;
خوانین و وکلای رعایا در پای‌تخت هنوز جمع نشده بودند امّا &lt;br /&gt;
قاعده آنولایت چنین است که هر سال چند روز از زمستان رفته بجهت&lt;br /&gt;
راندن امورات دولتی در پای‌تخت جمع میشوند و البته امسال &lt;br /&gt;
{{و|نیز بقاعده هر سال جمع خواهند شد}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=435</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۳</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=435"/>
		<updated>2026-11-08T17:40:57Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: پایان تصحیحات ستون اول&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;3&amp;quot; user=&amp;quot;Shahroudi&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
هرزه‌گی فرقه ضالّه [[w:بابیت|بابیّه]] در ممالک محروسه ایران در هر جا شهرت&lt;br /&gt;
یافته از آنکه گذشته است ذکرش قابل نیست مگر تازه حکایت ملّا محمّدعلی&lt;br /&gt;
ملحد ملعون مطرود است که داخل باین فرقه ضاله شده با جمعی از اتباع خود&lt;br /&gt;
در رفسنجان یاغی شده هر قدر اولیای دولت قاهره سعی در نصیحت او کردند و از&lt;br /&gt;
علماء نصایح و مواعظ او از هر جا نوشتند سود نبخشیده و در مقابل&lt;br /&gt;
قشون پادشاهی بمقابله و مقاتله ایستادند و از قشون&lt;br /&gt;
پادشاهی بمعرض تلف درآمد بالاخره خود او در مجادله&lt;br /&gt;
مقتول و اتباعش آنچه متفرّق نشده بودند در دعواها بهلاکت&lt;br /&gt;
{{و|رسیده و بکلّی تمام شدند}}&lt;br /&gt;
&lt;br /&gt;
میرزا قوما که در بهبهان بود و چند سال در آنجا خودسری میکرد&lt;br /&gt;
این روزها عالیجاه عباسقلی خان سردار لاریجانی او را گرفته با [مالیات؟]&lt;br /&gt;
[یوانی؟] که بخزانه عامره میآوردند روانه دارالخلافه نموده و&lt;br /&gt;
نصراللّه خان یوزباشی لک مامور شد که باصفهان رفته سرباز&lt;br /&gt;
هائیکه مامور آوردن میرزا قوما بودند برگرداند و او را بدارالخلافه طهران&lt;br /&gt;
{{و|بسپارد}}&lt;br /&gt;
&lt;br /&gt;
نوّاب خانلر میرزا که بحکومت لرستان و عربستان مأمور بود&lt;br /&gt;
از بروجرد با سواره [ابوال]جمعی و فوج بروجردی بمقرّ حکومت&lt;br /&gt;
{{و|خود روانه شد}}&lt;br /&gt;
&lt;br /&gt;
چون اولیای دولت علیه اهتمام بسیار دارند که صنایع بدیعه&lt;br /&gt;
ممالک محروسه رونق تمام یابد لهذا در بافتن شال [کرمان؟] قدغن [اکید؟]&lt;br /&gt;
نمودند که خوب بافته شود و حالا بطوری شده است که [نهایت؟] امتیاز را&lt;br /&gt;
دارد و نمونه‌ها که آورده‌اند و بنظر اولیای دولت علیه رسیده {{و|[شبیه؟] شالهای کشمیری میشود}}&lt;br /&gt;
&lt;br /&gt;
سابقاً حکم شده بود که نوّاب شاهزاده مهدیقلی میرزا حاکم مازندران &lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
اشخاصی را که قابل میشد تربیت و ترغیب نماید که شکر مازندران مانند شکر هندوستان سفید نمائید درین روزها استاد عبدالحمید نام مامور شده رفت و درین هفته بقدر سی من شکر آنجا را که سفید کرده بود آوردند مانند شکر هندوستان است {{ناخوانا}} و بسیار خوب شده بود و آن بهتر از شکر جزایر نیکی دنیا که هندالغربی مینامند است و حکم شد که باز هم درست نمایند و چونکه بعمل آمد این شکر نفع ممالک ایران است در جاهای دیگر هم که ممکن است بعمل میاید قرار شده است که سعی نموده بعمل بیاورند از ان جمله در خوزستان نیز که سابقا شکر در آنجا مشهور بود حکم شده است که باز بکارند و شکر سفید بعمل بیاورند.&lt;br /&gt;
&lt;br /&gt;
عالیجاه شفیع خان نایب الول اجودان‌باشی مامور مصلحت گذاری و اقامت لندن پایتخت انگلیس شد.&lt;br /&gt;
&lt;br /&gt;
عالجاه میرزا حسین‌خان مامو باقامت {{ناخوانا}} و کارپداز امور تجارت تبعه دولت علیه ایران که در ان شهر میباشند گردیده است.&lt;br /&gt;
{{و|اخبار دول خارجه انگلیس}}&lt;br /&gt;
درین مملکت اخباری نبود که مدخلیت اهل دول خارجه داشته باشد در کل جرایر آن حشمت امنیت و آرامی بود. اهل مشورتخانه خوانین و وکلای رعایا در پایتخت منوره جمع نشده بودند اما قاعده آنولایت چنین است که هر سال چند روز از زمستان رفته بجهت راندن امورات دولتی در پایتخت جمع میشوند و البته امسال نیز بقاعده هر سال جمع خواهند شد.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=434</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۳</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B3&amp;diff=434"/>
		<updated>2026-11-08T17:28:28Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: شکستن برخی خطوط + اصلاحاتی دیگر&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;3&amp;quot; user=&amp;quot;Shahroudi&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
هرزه‌گی فرقه ضالّه [[w:بابیت|بابیّه]] در ممالک محروسه ایران در هر جا شهرت&lt;br /&gt;
یافته از آنکه گذشته است ذکرش قابل نیست مگر تازه حکایت ملّا محمّدعلی&lt;br /&gt;
ملحد ملعون مطرود است که داخل باین فرقه ضاله شده با جمعی از اتباع خود&lt;br /&gt;
در رفسنجان یاغی شده هر قدر اولیای دولت قاهره سعی در نصیحت او کردند و از&lt;br /&gt;
علماء نصایح و مواعظ او از هر جا نوشتند سود نبخشیده و در مقابل&lt;br /&gt;
قشون پادشاهی بمقابله و مقاتله ایستادند و از قشون&lt;br /&gt;
پادشاهی بمعرض تلف درآمد بالاخره خود او در مجادله&lt;br /&gt;
مقتول و اتباعش آنچه متفرّق نشده بودند در دعواها بهلاکت&lt;br /&gt;
{{و|رسیده و بکلّی تمام شدند}}&lt;br /&gt;
&lt;br /&gt;
میرزا قو[ا]م که در بهبهان بود و چند سال در آنجا خودسری میکرد&lt;br /&gt;
این روزها عالیجاه عباسقلی خان سردار لاریجانی او را گرفته با [مالیات؟]&lt;br /&gt;
[یوانی؟] که بخزانه عامره میآوردند روانه دارالخلافه نموده و&lt;br /&gt;
نصراللّه خان یوزباشی لک مامور شد که باصفهان رفته سرباز&lt;br /&gt;
هائیکه مامور آوردن میرزا قوما بودند برگرداند و او را بدارالخلافه طهران بسپارد.&lt;br /&gt;
&lt;br /&gt;
چون اولیای دولت علی اهتمام بسیار دارند که صنایع ریعه ممالک محروسه رونق تمام {{ناخوانا}} نمودند که خوب یافته شود و حالا بطوری شده است که نهایت امتیاز را دارد و نمونه‌ها که آورده‌اند و بنظر اولیای دولت علیه رسیده {{ناخوانا}} شالهای کشمیری میشود.&lt;br /&gt;
&lt;br /&gt;
سابقا حکم شده بود که نواب شاهزاده مهدیقلی میرزا حاکم مزندران &lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
اشخاصی را که قابل میشد تربیت و ترغیب نماید که شکر مازندران مانند شکر هندوستان سفید نمائید درین روزها استاد عبدالحمید نام مامور شده رفت و درین هفته بقدر سی من شکر آنجا را که سفید کرده بود آوردند مانند شکر هندوستان است {{ناخوانا}} و بسیار خوب شده بود و آن بهتر از شکر جزایر نیکی دنیا که هندالغربی مینامند است و حکم شد که باز هم درست نمایند و چونکه بعمل آمد این شکر نفع ممالک ایران است در جاهای دیگر هم که ممکن است بعمل میاید قرار شده است که سعی نموده بعمل بیاورند از ان جمله در خوزستان نیز که سابقا شکر در آنجا مشهور بود حکم شده است که باز بکارند و شکر سفید بعمل بیاورند.&lt;br /&gt;
&lt;br /&gt;
عالیجاه شفیع خان نایب الول اجودان‌باشی مامور مصلحت گذاری و اقامت لندن پایتخت انگلیس شد.&lt;br /&gt;
&lt;br /&gt;
عالجاه میرزا حسین‌خان مامو باقامت {{ناخوانا}} و کارپداز امور تجارت تبعه دولت علیه ایران که در ان شهر میباشند گردیده است.&lt;br /&gt;
{{و|اخبار دول خارجه انگلیس}}&lt;br /&gt;
درین مملکت اخباری نبود که مدخلیت اهل دول خارجه داشته باشد در کل جرایر آن حشمت امنیت و آرامی بود. اهل مشورتخانه خوانین و وکلای رعایا در پایتخت منوره جمع نشده بودند اما قاعده آنولایت چنین است که هر سال چند روز از زمستان رفته بجهت راندن امورات دولتی در پایتخت جمع میشوند و البته امسال نیز بقاعده هر سال جمع خواهند شد.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B2&amp;diff=432</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۲</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B2&amp;diff=432"/>
		<updated>2026-11-08T10:32:31Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: /* هم‌سنجی‌شده */ شکستن خطوط+برخی اصلاحات جزئی+برخی حدس‌ها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;4&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
ارزانی و فراوانی نعمت است در دارالخلافه مبارکه با اینکه امسال&lt;br /&gt;
برف مکرر و بسیار آمده که زیاده از عادت این ولایت است&lt;br /&gt;
باز غله ارزان است و گران نشده زیرا که میدانند که قریب دوازده&lt;br /&gt;
هزار خروار غله پادشاهی زیاده از مصارف در انبار&lt;br /&gt;
موجود است که اگر خدا نخواسته غله کم بشود آنها را بقیمت عادله&lt;br /&gt;
{{و|وقت بخلق بفروشند که گرانی نشود}}&lt;br /&gt;
&lt;br /&gt;
مصطفی قلیجان سرتیپ قراگوزلو چون علاوه بر خدمات خراسان و&lt;br /&gt;
دفع فرقه ضالّه بابیّه نیز بر فارس در صفحات بندر ابوشهر&lt;br /&gt;
نیز خدمت نمایان کرده بود از اینجهة منصب میرپنجه کی باو دادند&lt;br /&gt;
{{و|شد}}&lt;br /&gt;
&lt;br /&gt;
محمدعلی‌خان سرتیپ سواره ایلات قزوین که فوت شده بود&lt;br /&gt;
{{و|آقاخان سرتیپ ماکوئی بجای او برقرار شد}}&lt;br /&gt;
&lt;br /&gt;
یاشاخان کمری سرکرده سواره مهاجر سرتیپ افواج سمنانی&lt;br /&gt;
{{و|و دامغانی شد}}&lt;br /&gt;
&lt;br /&gt;
سلیمانخان دنبلی حاکم تربت شد و مامور است درین روزها&lt;br /&gt;
{{و|میرود}}&lt;br /&gt;
&lt;br /&gt;
یوسف خان افشار سرهنگ فوج جدید [ارومی؟] شده مامور شد&lt;br /&gt;
{{و|و رفت}}&lt;br /&gt;
&lt;br /&gt;
فوج خوی و فوج خدابندلو که ملتزم رکاب همایون بودند چون&lt;br /&gt;
که مدّتی بود که در رکاب مشق میکردند درین اوقات&lt;br /&gt;
{{و|مرخص شدند}}&lt;br /&gt;
&lt;br /&gt;
رضاقلیخان سرکردهٔ سواره افشار صاینقلعه بجهة اینکه خوب خدمت&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
کرده بود بنیابت حکومتی پدرش سلیمان‌خان افشار&lt;br /&gt;
{{و|منصوب و از دربار همایون مرخص شد رفت}}&lt;br /&gt;
&lt;br /&gt;
فوج ناصریّه و فوج چهارم تبریزی که مامور بزنجان بودند&lt;br /&gt;
{{و|با توپخانه وارد دارالخلافه شدند}}&lt;br /&gt;
&lt;br /&gt;
قوای جدیدی که اولیای دولت قاهره داشتند این است&lt;br /&gt;
که در اول ماه و پانزدهم چاپارها از دارالخلافه بممالک ذیل&lt;br /&gt;
{{روخط|آذربایجان}} {{روخط|فارس}} {{روخط|رشت}} {{روخط|کرمان}}&lt;br /&gt;
{{روخط|استرآباد}} {{روخط|مازندران}} {{روخط|خراسان}} {{روخط|کرمانشاهان}}&lt;br /&gt;
بروند و در چهاردهم و بیست‌نهم دو دفعه وارد شوند مگر کرمان&lt;br /&gt;
چونکه دور است&lt;br /&gt;
{{و|ماهی یک چاپار در پنجم میرود}}&lt;br /&gt;
&lt;br /&gt;
از اوّل ماه صفر قرار بر این شده است که در چاپارخانها اسب را&lt;br /&gt;
فرسخی ده شاهی کرایه [بگیرند؟] و اسب {{ناخوانا}} اگر از تجار و غیره بخواهند&lt;br /&gt;
با اسب چاپاری بهر جا بروند با اذن و حکم دیوان در هر جا اسب&lt;br /&gt;
{{و|بآنها میدهند و هر قدر اسب بخواهند حاضر است}}&lt;br /&gt;
&lt;br /&gt;
مرتضی قلیخان حاکم شاهرود و بسطام معزول شد و محمّدتقی‌خان {{و|جوانشیر عوض او منصوب است}}&lt;br /&gt;
&lt;br /&gt;
{{و|{{بزرگتر|اخبار سایر ممالک ایران}}}}&lt;br /&gt;
&lt;br /&gt;
چاپار خراسان که روز بیست و نهم ربیع‌الاوّل {{ناخوانا}} [میاید؟] یکروزه&lt;br /&gt;
بیشتر آمد اخبار تازهٔ در آنجا نیست و کمال امنیّت در انجا است مگر اینکه&lt;br /&gt;
کدخدایان سرخس رفته‌اند که کرویها و اسرا[ئ]ی که دارند بیاورند و&lt;br /&gt;
قشون هم در بیرون شهر اردوی حاضر دارند که اگر از آنها&lt;br /&gt;
{{و|اهمال شود مامور شوند}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B2&amp;diff=431</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۲</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B2&amp;diff=431"/>
		<updated>2026-11-08T10:10:39Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح خطوط شکسته+برخی ناخواناها+اصلاحات جزئی دیگر همچون تشدید و ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;3&amp;quot; user=&amp;quot;Shahroudi&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
ارزانی و فراوانی نعمت است در دارالخلافه مبارکه با اینکه امسال&lt;br /&gt;
برف مکرر و بسیار آمده که زیاده از عادت این ولایت است&lt;br /&gt;
باز غله ارزان است و گران نشده زیرا که میدانند که قریب دوازده&lt;br /&gt;
هزار خروار غله پادشاهی زیاده از مصارف در انبار&lt;br /&gt;
موجود است که اگر خدا نخواسته غله کم بشود آنها را بقیمت عادله&lt;br /&gt;
{{و|وقت بخلق بفروشند که گرانی نشود}}&lt;br /&gt;
&lt;br /&gt;
مصطفی قلیجان سرتیپ قراگوزلو چون علاوه بر خدمات خراسان و&lt;br /&gt;
دفع فرقه ضالّه بابیّه نیز بر فارس در صفحات بندر ابوشهر&lt;br /&gt;
نیز خدمت نمایان کرده بود از اینجهة منصب میرپنجه کی باو دادند&lt;br /&gt;
{{و|شد}}&lt;br /&gt;
&lt;br /&gt;
محمدعلی‌خان سرتیپ سواره ایلات قزوین که فوت شده بود&lt;br /&gt;
{{و|آقاخان سرتیپ ماکوئی بجای او برقرار شد}}&lt;br /&gt;
&lt;br /&gt;
یاشاخان کمری سرکرده سواره مهاجر سرتیپ افواج سمنانی&lt;br /&gt;
{{و|و دامغانی شد}}&lt;br /&gt;
&lt;br /&gt;
سلیمانخان دنبلی حاکم تربت شد و مامور است درین روزها&lt;br /&gt;
{{و|میرود}}&lt;br /&gt;
&lt;br /&gt;
یوسف خان افشار سرهنگ فوج جدید [ارومی؟] شده مامور شد&lt;br /&gt;
{{و|و رفت}}&lt;br /&gt;
&lt;br /&gt;
فوج خوی و فوج خدابندلو که ملتزم رکاب همایون بودند چون&lt;br /&gt;
که مدّتی بود که در رکاب مشق میکردند درین اوقات&lt;br /&gt;
{{و|مرخص شدند}}&lt;br /&gt;
&lt;br /&gt;
رضاقلیخان سرکردهٔ سواره افشار صاینقلعه بجهة اینکه خوب خدمت&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
کرده بود بنیابت حکومتی پدرش سلیمان‌خان افشار منصوب و از دربار همایون مرخص شد رفت. فوج ناصریه و فوج چهارم تبریزی که مامور بزنجان بودند با توپخانه وارد دارالخلافه شدند. قوای جدیدی که اولیای دولت قاهره داشتند این است که در اول ماه و پانزدهم چاپارها از دارالخلافه بممالک ذیل {{روخط|آذربایجان}} {{روخط|فارس}} {{روخط|رشت}} {{روخط|کرمان}} {{روخط|استرآباد}} {{روخط|مازندران}} {{روخط|خراسان}} {{روخط|کرمانشاهان}} بروند و در چهاردهم و بیست‌نهم دو دفعه وارد شوند مگر کرمان چونکه دو راست ماهی یک چاپار در چنجم میرود.&lt;br /&gt;
&lt;br /&gt;
از اول ماه صفر قرار بر این شده است که در چاپارخانها است. فرسخی ده شاهی کرایه بگیرند و اسب {{ناخوانا}} اگر از تجار و غیره بخواهند یا اسب چاپاری بهر جا بروند با اذن و حکم دیوان در هر جا اسب بآنها میدهند و هر قدر اسب بخواهند حاضر است. مرتضی قلیخان حاکم شاهرود و بسطام معزول شد و محمدتقی‌خان جوانشیر عوض او منصوب است.&lt;br /&gt;
{{و|{{بزرگتر|سایر ممالک ایران}}}}&lt;br /&gt;
چاپار خراسان که روز بیست و نهم ربیع‌الاول {{ناخوانا}} یکروزه بیشتر آمد اخبار تازه در آنجا نیست و کمال امنیت در انجا است مگر اینکه کدخدایان سرخس رفته‌اند که کرویها و اسرالی که دارند بیاورند و قشون هم در بیرون شهر اردوی حاضر دارند که اگر از آنها اهمان شود مامور شوند.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B1&amp;diff=427</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B1&amp;diff=427"/>
		<updated>2026-11-08T09:44:01Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: /* هم‌سنجی‌شده */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;4&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=1&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=&lt;br /&gt;
|ستون۱=&lt;br /&gt;
{{و|{{بزرگتر|روزنامچه اخبار دارالخلافه طهران}}}}&lt;br /&gt;
}}&lt;br /&gt;
{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
از آنجا که همت حضرت اقدس شاهنشاهی مصروف بر تربیت اهل [[w:ایران|ایران]]&lt;br /&gt;
و استحضار و آگاهی آنها از امورات داخله و وقایع خارجه است لهذا&lt;br /&gt;
قرار شد که هفته بهفته احکام همایون و اخبار داخله مملکتی و غیره را که در&lt;br /&gt;
دول دیگر گازت مینامند در دارالطباعه دولتی زده شود و بکل&lt;br /&gt;
شهرهای ایران منتشر گردد که اهالی ممالک ایران نیز در هر هفته از احکام&lt;br /&gt;
دارالخلافه مبارکه و غیره اطلاع حاصل نمایند و از جمله محسنات این&lt;br /&gt;
گازت یکی آنکه سبب دانایی و بینایی اهالی این دولت&lt;br /&gt;
علیه است. دیگر اینکه اخبار کاذبه اراجیف که گاهی بر خلاف&lt;br /&gt;
احکام دیوانی و حقیقت حال در بعضی از شهرها و سرحدات&lt;br /&gt;
ایران پیش ازین باعث اشتباه عوام این مملکت میشد بعد ازین&lt;br /&gt;
بواسطه روزنامچه موقوف خواهد شد و بدین سبب لازم است&lt;br /&gt;
بر کلّ امنای دولت ایران و حکام ولایات و صاحب منصبان معتبر&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
و رعایای صادق این دولت این روزنامها را داشته باشند&lt;br /&gt;
و بر حسب قرارداد فوق در یوم جمعه پنجم شهر [[w:ربیع‌الثانی|ربیع‌الثانی]] ایت ئیل&lt;br /&gt;
سنه ۱۲۶۷ باین کار شروع شد و مباشر این روزنامها بهرکس که&lt;br /&gt;
طالب باشد هفته بهفته خواهد رساند.&lt;br /&gt;
&lt;br /&gt;
{{و|{{بزرگتر|اخبار خود دارالخلافه}}}}&lt;br /&gt;
&lt;br /&gt;
درین اوقات از حسن تدبیر و سلوک امنای دولت ایران منّت&lt;br /&gt;
دارالخلافه چنان است که دزدی و دغلی بسیار کم میشود بطوریکه&lt;br /&gt;
کم ذکر میشود و یک سبب امنیّت گذاشتن قراول‌خانهاست&lt;br /&gt;
در شهر و [امثال؟] قراول‌خانهای چند در دارالخلافه نباشد و امنای دولت&lt;br /&gt;
قاهره معلوم کردند که بسیار بر امنیّت شهر افزوده‌ است. لهذا منظور دارند که در شهرهای&lt;br /&gt;
معظم سایر ممالک نیز قراول‌خانه بگذارند از جمله حکم شد که در اول حوت در سی جای شهر&lt;br /&gt;
{{و|[[w:مشهد|مشهد]] قراول‌خانه بنا بگذارند}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B1&amp;diff=426</id>
		<title>برگه:Vaghaye etefaghiye-001.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Vaghaye_etefaghiye-001.pdf/%DB%B1&amp;diff=426"/>
		<updated>2026-11-08T09:43:51Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: شکستن خطوط+برخی اصلاحات جزئی+تبدیل یک ناخوانا به حدس&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;3&amp;quot; user=&amp;quot;Shahroudi&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=1&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=&lt;br /&gt;
|ستون۱=&lt;br /&gt;
{{و|{{بزرگتر|روزنامچه اخبار دارالخلافه طهران}}}}&lt;br /&gt;
}}&lt;br /&gt;
{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
از آنجا که همت حضرت اقدس شاهنشاهی مصروف بر تربیت اهل [[w:ایران|ایران]]&lt;br /&gt;
و استحضار و آگاهی آنها از امورات داخله و وقایع خارجه است لهذا&lt;br /&gt;
قرار شد که هفته بهفته احکام همایون و اخبار داخله مملکتی و غیره را که در&lt;br /&gt;
دول دیگر گازت مینامند در دارالطباعه دولتی زده شود و بکل&lt;br /&gt;
شهرهای ایران منتشر گردد که اهالی ممالک ایران نیز در هر هفته از احکام&lt;br /&gt;
دارالخلافه مبارکه و غیره اطلاع حاصل نمایند و از جمله محسنات این&lt;br /&gt;
گازت یکی آنکه سبب دانایی و بینایی اهالی این دولت&lt;br /&gt;
علیه است. دیگر اینکه اخبار کاذبه اراجیف که گاهی بر خلاف&lt;br /&gt;
احکام دیوانی و حقیقت حال در بعضی از شهرها و سرحدات&lt;br /&gt;
ایران پیش ازین باعث اشتباه عوام این مملکت میشد بعد ازین&lt;br /&gt;
بواسطه روزنامچه موقوف خواهد شد و بدین سبب لازم است&lt;br /&gt;
بر کلّ امنای دولت ایران و حکام ولایات و صاحب منصبان معتبر&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
و رعایای صادق این دولت این روزنامها را داشته باشند&lt;br /&gt;
و بر حسب قرارداد فوق در یوم جمعه پنجم شهر [[w:ربیع‌الثانی|ربیع‌الثانی]] ایت ئیل&lt;br /&gt;
سنه ۱۲۶۷ باین کار شروع شد و مباشر این روزنامها بهرکس که&lt;br /&gt;
طالب باشد هفته بهفته خواهد رساند.&lt;br /&gt;
&lt;br /&gt;
{{و|{{بزرگتر|اخبار خود دارالخلافه}}}}&lt;br /&gt;
&lt;br /&gt;
درین اوقات از حسن تدبیر و سلوک امنای دولت ایران منّت&lt;br /&gt;
دارالخلافه چنان است که دزدی و دغلی بسیار کم میشود بطوریکه&lt;br /&gt;
کم ذکر میشود و یک سبب امنیّت گذاشتن قراول‌خانهاست&lt;br /&gt;
در شهر و [امثال؟] قراول‌خانهای چند در دارالخلافه نباشد و امنای دولت&lt;br /&gt;
قاهره معلوم کردند که بسیار بر امنیّت شهر افزوده‌ است. لهذا منظور دارند که در شهرهای&lt;br /&gt;
معظم سایر ممالک نیز قراول‌خانه بگذارند از جمله حکم شد که در اول حوت در سی جای شهر&lt;br /&gt;
{{و|[[w:مشهد|مشهد]] قراول‌خانه بنا بگذارند}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Meftah_ol_zafar-02-08.pdf/%DB%B1&amp;diff=366</id>
		<title>برگه:Meftah ol zafar-02-08.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Meftah_ol_zafar-02-08.pdf/%DB%B1&amp;diff=366"/>
		<updated>2026-11-06T09:10:20Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: /* هم‌سنجی‌شده */ تست&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;4&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;{{ستون‌ها&lt;br /&gt;
|تعداد=3&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=&lt;br /&gt;
|ستون۱=&lt;br /&gt;
{{و|(نمره هشتم)}}&lt;br /&gt;
&lt;br /&gt;
بسرپرستی مدیر محترم [https://www.islamical.org/fa/حبل_المتين_(نشریه) حبل‌المتین]، آقای مویدالاسلام&lt;br /&gt;
&lt;br /&gt;
{{و|(مدیر اداره میرزا سید حسن کاشانی)}}&lt;br /&gt;
&lt;br /&gt;
محل اداره کلکته فوجداری بالاخانه شیشه کلی ۲۵&lt;br /&gt;
&lt;br /&gt;
یکم و هشتم و پانزدهم و بیست و دوم هر ماه طبع و تزیع می‌شود.&lt;br /&gt;
&lt;br /&gt;
بیست و دوم نوامبر ماه انگلیسی سنه ۱۸۹۸ م&lt;br /&gt;
&lt;br /&gt;
مطابق هفتم شهر رجب المرجب سنه ۱۳۱۶ هـ&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
{{و|سال دوم}}&lt;br /&gt;
{{و|بنام خسرو گیتی (مظفرالدین) شاه}}&lt;br /&gt;
{{و|۱۳۱۵}}&lt;br /&gt;
{{و|{{بزرگتر۳|مفتاح الظفر}}}}&lt;br /&gt;
{{و|۱۸۹۸}}&lt;br /&gt;
{{و|سنه هزار و هشتصد و نود و هفت م}}&lt;br /&gt;
&lt;br /&gt;
|ستون۳=&lt;br /&gt;
{{و|(صفحه صد و سیزدهم)}}&lt;br /&gt;
{{و|اداره خریدار کم از ششماهرا قبول نخواهد کرد}}&lt;br /&gt;
{{و|(شرح بدل ابونه سالیانه)}}&lt;br /&gt;
&lt;br /&gt;
هندوستان و برمه و خلیج فارس - ده (۱۰) روپیه&lt;br /&gt;
&lt;br /&gt;
ممالک محروسه ایران و افغانستان - سی و پنج (۳۵) قران&lt;br /&gt;
&lt;br /&gt;
چین و ژاپون و روسیه و اروپا - بیست و پنج (۲۵) فرانک&lt;br /&gt;
&lt;br /&gt;
ممالک عثمانی از عراق و مصر و غیره - ۵ مجیدی&lt;br /&gt;
}}&lt;br /&gt;
{{خط افقی}}&lt;br /&gt;
{{ستون‌ها&lt;br /&gt;
|تعداد=1&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=&lt;br /&gt;
|ستون۱=&lt;br /&gt;
{{و|این روزنامه ملی کلیه، بحثش فقط علمیست، نسخه هر یک مقاله سیاسی و بعضی اخبارات مفیده از صنایع بدیعه و غیره مذاکره خواهد شد، مقالات علمیه و مضامین حکمیه بنام نویسنده طبع و نشر خواهد گردید}}&lt;br /&gt;
}}&lt;br /&gt;
{{خط افقی}}&lt;br /&gt;
{{ستون‌ها&lt;br /&gt;
|تعداد=2&lt;br /&gt;
|فاصله=12px&lt;br /&gt;
|خط عمودی=بله&lt;br /&gt;
|ستون۱=&lt;br /&gt;
{{و|&#039;&#039;&#039;(فلسفه طبیعی)&#039;&#039;&#039;}}&lt;br /&gt;
&#039;&#039;&#039;(۲۲) طبایع متمیزه قوا&#039;&#039;&#039; - در هر قوتی سه چیز را باید مشخص کرد اول مقام یا نقطه استعمال قوت - دوم سمت عمل قوت سوم شدت قوة - مقام استعمال قوه آن نقطه است که بر آن نقطه قوه عمل میکند - مثلا در شکل (۷) ریسمانی بکشتی بر نقطه آ بسته شده است - پس این نقطه را مقام یا نقطه استعمال قوه خواهند گفت. سمت عمل آن قوه خط مستقیمی است که نقطه استعمال در آن سمت عمل میکند. در شکل (۷) ریسمان آب سمت عمل اینقوه را ظاهر میسازد.&lt;br /&gt;
&lt;br /&gt;
(شکل ۷)&lt;br /&gt;
&lt;br /&gt;
شدت قوه آن قدرت یا مقداری است که متناسب معیار معینی قرار داده شده است. از همین شکل (۷) ظاهر است&lt;br /&gt;
&lt;br /&gt;
|ستون۲=&lt;br /&gt;
که اسبی آن شکتی را میکشد که خم بزرگی در آن نهاده شده است و اسب مذکوره قوه معین المقداری برای کشیدن آن کشتی بکار میبرد - اگر وزن بار کشتی دوچندان یا سه چندان آنچه هست میبود، برای کشیدنش نیز دو چندان یا سه چندان آن قوه در بایست بود.{{سخ}}(۲۳) تخمین قوه - دینمو میتر - قوه را که محرکی از راندن یا کشیدن جسمی بوجود می‌آورد آنقوه را بذریعه تعداد ارطان تخمین میتوان کرد که قابل اظهار همانقدر راندن با کشیدن باشد. مثلا میگوئیم که فلان قوه (۴۰) یا (۵۰) رطل است مراد ما از این مقوله این نیست که بجای آن قوه اگر چهل یا پنجاه رطل وزن بکار بریم از آن نیز همان نتیجه بظهر خواهد رسید. وزنی را که از آن شدت قوه ظاهر شود و بذریعه آله مشخص میتوان کرد که او را دینمو میتر یعنی مقیاس الحرکه خوانند. اقسام این آله بسیار است ولی سهل ترین همه آنست&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=305</id>
		<title>برگه:Kayhan13220361.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=305"/>
		<updated>2026-11-05T19:43:20Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: شروع ستون بعدی «بیانات...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;1&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;صاحب امتیاز&lt;br /&gt;
دکتر مصطفی مصباح زاده&lt;br /&gt;
&lt;br /&gt;
مدیر&lt;br /&gt;
عبدالرحمن فرامرزی&lt;br /&gt;
&lt;br /&gt;
سال دوم - شماره ۳۶۱&lt;br /&gt;
&lt;br /&gt;
عصر ۱شنبه ۶ آذر ماه ۱۳۲۲&lt;br /&gt;
&lt;br /&gt;
تک‌شماره یکریال و نیم&lt;br /&gt;
&lt;br /&gt;
{{و|&#039;&#039;&#039;پس از یکسال&#039;&#039;&#039;}}&lt;br /&gt;
مدت یکسال از فوت مرحوم فروغی&lt;br /&gt;
(ذکاء الملک) گذشت و دیروز مراسم یادبود&lt;br /&gt;
نخستین سال فوت او منعقد گردید.&lt;br /&gt;
&lt;br /&gt;
هنگامی که بزرگان بدرود حیات&lt;br /&gt;
میگویند. خصوصا بزرگانی که سالیان&lt;br /&gt;
دراز در کشور خود زندگی علمی و اجتماعی&lt;br /&gt;
و سیاسی داشته‌اند و رسیدگی به نتیجه اعمال و&lt;br /&gt;
اقداماتشان بزودی ممکن نبوده است بازماندگان&lt;br /&gt;
میگویند باید چندی بگذرد تا جریان حوادث&lt;br /&gt;
روزگار به پیدایش حقایق کمک کند و&lt;br /&gt;
تاریخ رای و حکم قطعی خود را بگوید&lt;br /&gt;
تا بتوان بدرستی درباره آن مرد داوری&lt;br /&gt;
کرد.&lt;br /&gt;
&lt;br /&gt;
سیزده چهارده ماه قبل، هنگامی که&lt;br /&gt;
فروغی هنوز در قید حیات بود درباره‌ی&lt;br /&gt;
او سخنان مختلف گفته میشد، عده‌ای&lt;br /&gt;
طرفدار او بودند و گذشته از ستایش&lt;br /&gt;
مراتب فضلی او بدرستی و متانت سیاست&lt;br /&gt;
او نیز رأی میدادند و معتقد بودند که&lt;br /&gt;
آن مرد بهترین روش را پیش گرفته و&lt;br /&gt;
قدمی جز بصلاح کشور بر نداشته است.&lt;br /&gt;
بعضی دیگر برعکس با اذعان بمقامات&lt;br /&gt;
فضلی او سیاست او را نمی‌پسندیدند و&lt;br /&gt;
عقیده داشتند در بسیاری موارد خطا کرده&lt;br /&gt;
و بزیان کشور کار کرده است. یکعده‌ی&lt;br /&gt;
انگشت شمار دیگر که حقیقة باید&lt;br /&gt;
نام بی انصاف بر روی آنان گذاشت&lt;br /&gt;
منکر همه چیز بودند و فروغی را بصورت&lt;br /&gt;
یک مرد دانشمند نیز قبول نداشتند.&lt;br /&gt;
و نیز یکسال پیش هنگامی که نتیجه‌ی اجل&lt;br /&gt;
دفتر زندگی این مرد را برچید و خاوه&lt;br /&gt;
ناخواه فرمان طبیعت زبان مغرضین و بد&lt;br /&gt;
گویان خاموش شد باز هم عده‌ای پیدا&lt;br /&gt;
شدند که به سیاست و روش زمامداری و &lt;br /&gt;
اقدامات سیاسی و اجتماعی او با نظر بد&lt;br /&gt;
بینی نگریستند ولی دوراندیشان در مقام&lt;br /&gt;
دفاع گفتند باید یک چند بگذرد تا قضاوت&lt;br /&gt;
تاریخ معین گردد.&lt;br /&gt;
&lt;br /&gt;
شاید هیچکس تصور نمیکرد باین&lt;br /&gt;
زودی و در ظرف مدت یکسال جریان&lt;br /&gt;
اوضاع و حوادث بصورتی در آید که&lt;br /&gt;
حتی بد گویان نیز ناگزیر از اعتراف&lt;br /&gt;
باین حقیقت شوند که فروغی مردی خدمت&lt;br /&gt;
گزار و مطلع و عاقبت اندیش بوده و&lt;br /&gt;
در طریق سیاسی خوب قدم برداشته و&lt;br /&gt;
کاری کرده که کاملا بنفع کشور بوده است&lt;br /&gt;
&lt;br /&gt;
البته مرحوم فروغی به کشور خدمات&lt;br /&gt;
بسیار از هر جهة کرده است ولی هرگونه&lt;br /&gt;
خدمت دیگر که انجام یافته باشد در مقابل&lt;br /&gt;
اقدامات بموقع و صحیح دولت فروغی در مورد&lt;br /&gt;
سیاست خارجی-هرچند مهم باشد نمودی ندارد&lt;br /&gt;
&lt;br /&gt;
عملی که بعدها انجام یافت و کشور و&lt;br /&gt;
دولت احساس کردند که باید ایران وارد جنگ&lt;br /&gt;
شود و به محور اعلان جنگ دهد جزو&lt;br /&gt;
عقاید و نظریات و پیش بینی‌های مرحوم&lt;br /&gt;
فروغی بود. دفاعی که او از پیمان ما&lt;br /&gt;
متفقین میکرد و بخوبی نشان میداد که&lt;br /&gt;
این مرد کاملا آگاه به اوضاع جهان و عاقبت&lt;br /&gt;
جریان حوادث و صلاح کشور و اهل کشور&lt;br /&gt;
است و عقیده و ایمان قطعی به لزوم انعقاد این&lt;br /&gt;
پیمان و همکاری نزدیک و صمیمانهٔ ما با&lt;br /&gt;
متفقین دارد.&lt;br /&gt;
&lt;br /&gt;
ما با اطلاعی که از سابق در&lt;br /&gt;
بارهٔ فضائل اخلاقی و علمی و احساسات&lt;br /&gt;
میهن پرستی و خدمتگذاری و صواب&lt;br /&gt;
رای مرحوم فروغی داشتیم و با مشاهدهٔ&lt;br /&gt;
نتایجی که جریان حوادث ببار آورد و&lt;br /&gt;
ارزش خدمات اورا معلوم ساخت معتقدیم&lt;br /&gt;
که مرحوم فروغی یکی از رجال برجسته&lt;br /&gt;
کشور ماست و نام او در صفحات تاریخ&lt;br /&gt;
قرنها زنده خواهد ماند.&lt;br /&gt;
&lt;br /&gt;
کشور ما امروز امید و اطمینان دارد&lt;br /&gt;
که پس از ختم جنگ کنونی بهرهٔ وافی&lt;br /&gt;
بدست خواهد آورد و در ردیف ملل&lt;br /&gt;
خوشبخت و ثروتمند و بزرگ جهان قرار&lt;br /&gt;
خواهد گرفت. متفقین ما مکرر امیدهای&lt;br /&gt;
آیندهٔ ما را تامین کرده‌اند و درین میان&lt;br /&gt;
شبهه‌ای نیست که فوائدی که کشور ما از&lt;br /&gt;
این راه حاصل خواهد داشت نتیجه مستقیم روش&lt;br /&gt;
پسندیدهٔ فروغی است و بنابراین گزاف&lt;br /&gt;
نیست اگر بگوئیم تاریخ ایران و تاریخ&lt;br /&gt;
جنگ کنونی نام فروغی را همیشگی&lt;br /&gt;
نگاه خواهد داشت.&lt;br /&gt;
&lt;br /&gt;
{{و|&#039;&#039;&#039;بیانات آقای ساعد وزیر امور خارجه&#039;&#039;&#039;}}&lt;br /&gt;
{{و|&#039;&#039;&#039;در مجلس یادبود مرحوم فروغی&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
قبل از بیان مطالب از آقایان و&lt;br /&gt;
ذوات محترمی که دعوت بنده را اجابت&lt;br /&gt;
و با قبول زحمت در این مجلس حضور&lt;br /&gt;
بهمرسانیده‌اند اظهار امتنان نموده سپاس&lt;br /&gt;
گذاری میکنم.&lt;br /&gt;
&lt;br /&gt;
این اجتماع ب&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=304</id>
		<title>مدیاویکی:Common.css</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=304"/>
		<updated>2026-11-05T18:54:42Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: تطابق با سایت اصلی اسلامیکال&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* free Persian font, for licensing details and download: http://rastikerdar.github.io/vazir-font/ */&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;;&lt;br /&gt;
  src: url(&amp;quot;https://commons.islamical.org/w/images/4/45/Islamical-vazir.woff2&amp;quot;) format(&amp;quot;woff2&amp;quot;);&lt;br /&gt;
  font-weight: 400;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-display: swap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
textarea {&lt;br /&gt;
	font-family: &amp;quot;Vazir&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#content.mw-body h1,&lt;br /&gt;
#content.mw-body h2,&lt;br /&gt;
#content.mw-body #firstHeading,&lt;br /&gt;
#content.mw-body .mw-editsection,&lt;br /&gt;
.mw-body .mw-editsection-like,&lt;br /&gt;
#content.mw-body #toc h2,&lt;br /&gt;
#content.mw-body .toc h2,&lt;br /&gt;
.vector-sticky-header-context-bar-primary {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;, &amp;quot;Iranian Serif&amp;quot;, &amp;quot;Iranian Sans&amp;quot;, Tahoma, &amp;quot;Noto Serif&amp;quot;, &amp;quot;Droid Arabic Naskh&amp;quot;, &amp;quot;DejaVu Sans&amp;quot;, serif !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ace editor now supports RTL editing but a monospace font with Arabic should be set for correct functionality */&lt;br /&gt;
.ace_editor { font-family: &#039;Courier New&#039;, monospace!important; }&lt;br /&gt;
&lt;br /&gt;
/* force these to use inherited font configuration */&lt;br /&gt;
.ui-widget, .ui-widget *, button, input, select, optgroup {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;br /&gt;
/* end */&lt;br /&gt;
&lt;br /&gt;
dfn {&lt;br /&gt;
	font-style: inherit;  /* Reset default styling for &amp;lt;dfn&amp;gt; */&lt;br /&gt;
}&lt;br /&gt;
sup, sub {&lt;br /&gt;
	line-height: 1em;     /* Reduce line-height for &amp;lt;sup&amp;gt; and &amp;lt;sub&amp;gt; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main page fixes */&lt;br /&gt;
&lt;br /&gt;
body.page-اسلامیکال_صفحه_تمرین #ca-edit,&lt;br /&gt;
body.page-اسلامیکال_آشنایی #ca-edit {&lt;br /&gt;
	border: 1px dotted #36c;&lt;br /&gt;
}&lt;br /&gt;
body.page-اسلامیکال_صفحه_تمرین #ca-edit:hover,&lt;br /&gt;
body.page-اسلامیکال_آشنایی #ca-edit:hover {&lt;br /&gt;
	background: none repeat scroll 0 0 white;&lt;br /&gt;
	border-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
body.page-صفحهٔ_اصلی #mp-topbanner {&lt;br /&gt;
	clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.page-صفحهٔ_اصلی #ca-delete,&lt;br /&gt;
body.page-صفحهٔ_اصلی #deleteconfirm,&lt;br /&gt;
body.page-صفحهٔ_اصلی #t-cite,&lt;br /&gt;
body.page-صفحهٔ_اصلی #lastmod,&lt;br /&gt;
body.page-صفحهٔ_اصلی #siteSub,&lt;br /&gt;
body.page-صفحهٔ_اصلی #contentSub,&lt;br /&gt;
body.page-صفحهٔ_اصلی #catlinks,&lt;br /&gt;
body.page-صفحهٔ_اصلی #centralNotice,&lt;br /&gt;
body.page-درگاه_ورودی #siteSub,&lt;br /&gt;
body.page-درگاه_ورودی h1.firstHeading {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.page-صفحهٔ_اصلی #ca-history,&lt;br /&gt;
body.page-صفحهٔ_اصلی #pagehistory {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* تراز راست برای پیوند «ویرایش پیوندهای میان‌ویکی» در نوار کناری پوستهٔ وکتور جدید */&lt;br /&gt;
.wb-langlinks-link {&lt;br /&gt;
	text-align : right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Make the list of references in [[Template:Reflist]] smaller */&lt;br /&gt;
.references-small { &lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Highlight clicked reference in blue to help navigation */&lt;br /&gt;
ol.references &amp;gt; li:target,&lt;br /&gt;
sup.reference:target,&lt;br /&gt;
span.citation:target, cite:target { &lt;br /&gt;
	background-color: #ecf0fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure refs in table headers and the like aren&#039;t bold or italic */&lt;br /&gt;
sup.reference {&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Styling for citations */&lt;br /&gt;
span.citation, cite {&lt;br /&gt;
	word-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If there is an inline link to a full citation, the full citation will turn blue when the inline link is clicked */&lt;br /&gt;
cite:target { &lt;br /&gt;
	background-color: #ecf0fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* For linked citation numbers and document IDs, where the number need not be shown on a screen or a handheld, but should be included in the printed version */&lt;br /&gt;
@media screen, projection {&lt;br /&gt;
	cite *.printonly {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style for horizontal lists (separator following item) */&lt;br /&gt;
&lt;br /&gt;
.skin-monobook .hlist dl,&lt;br /&gt;
.skin-modern .hlist dl,&lt;br /&gt;
.skin-vector .hlist dl {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Style for horizontal lists (separator following item).&lt;br /&gt;
   IE8-specific classes are assigned in [[MediaWiki:Common.js/IEFixes.js]].&lt;br /&gt;
   @source mediawiki.org/wiki/Snippets/Horizontal_lists&lt;br /&gt;
   @revision 5 (2014-02-24)&lt;br /&gt;
   @author [[User:Edokter]]&lt;br /&gt;
 */&lt;br /&gt;
.hlist dl,&lt;br /&gt;
.hlist ol,&lt;br /&gt;
.hlist ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Display list items inline */&lt;br /&gt;
.hlist dd,&lt;br /&gt;
.hlist dt,&lt;br /&gt;
.hlist li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
/* Display nested lists inline */&lt;br /&gt;
.hlist.inline,&lt;br /&gt;
.hlist.inline dl,&lt;br /&gt;
.hlist.inline ol,&lt;br /&gt;
.hlist.inline ul,&lt;br /&gt;
.hlist dl dl, .hlist dl ol, .hlist dl ul,&lt;br /&gt;
.hlist ol dl, .hlist ol ol, .hlist ol ul,&lt;br /&gt;
.hlist ul dl, .hlist ul ol, .hlist ul ul {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
/* Generate interpuncts */&lt;br /&gt;
.hlist dt:after {&lt;br /&gt;
	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
.hlist dd:after,&lt;br /&gt;
.hlist li:after {&lt;br /&gt;
	content: &amp;quot; • &amp;quot;;&lt;br /&gt;
	/*font-weight: bold;*/&lt;br /&gt;
}&lt;br /&gt;
.hlist dd:last-child:after,&lt;br /&gt;
.hlist dt:last-child:after,&lt;br /&gt;
.hlist li:last-child:after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* For IE8 */&lt;br /&gt;
.hlist dd.hlist-last-child:after,&lt;br /&gt;
.hlist dt.hlist-last-child:after,&lt;br /&gt;
.hlist li.hlist-last-child:after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* Add parentheses around nested lists */&lt;br /&gt;
.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,&lt;br /&gt;
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,&lt;br /&gt;
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,&lt;br /&gt;
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,&lt;br /&gt;
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after {&lt;br /&gt;
	content: &amp;quot;) &amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
/* For IE8 */&lt;br /&gt;
.hlist dd dd.hlist-last-child:after, .hlist dd dt.hlist-last-child:after, .hlist dd li.hlist-last-child:after,&lt;br /&gt;
.hlist dt dd.hlist-last-child:after, .hlist dt dt.hlist-last-child:after, .hlist dt li.hlist-last-child:after,&lt;br /&gt;
.hlist li dd.hlist-last-child:after, .hlist li dt.hlist-last-child:after, .hlist li li.hlist-last-child:after {&lt;br /&gt;
	content: &amp;quot;) &amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
/* Put ordinals in front of ordered list items */&lt;br /&gt;
.hlist ol {&lt;br /&gt;
	counter-reset: listitem;&lt;br /&gt;
}&lt;br /&gt;
.hlist ol &amp;gt; li {&lt;br /&gt;
	counter-increment: listitem;&lt;br /&gt;
}&lt;br /&gt;
.hlist ol &amp;gt; li:before {&lt;br /&gt;
	content: &amp;quot; &amp;quot; counter(listitem) &amp;quot; &amp;quot;;&lt;br /&gt;
	content: &amp;quot; &amp;quot; counter(listitem, persian) &amp;quot; &amp;quot;;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.hlist dd ol &amp;gt; li:first-child:before,&lt;br /&gt;
.hlist dt ol &amp;gt; li:first-child:before,&lt;br /&gt;
.hlist li ol &amp;gt; li:first-child:before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot; counter(listitem) &amp;quot;) &amp;quot;;&lt;br /&gt;
	content: &amp;quot; (&amp;quot; counter(listitem, persian) &amp;quot;) &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* فهرست بدون گلوله */&lt;br /&gt;
.plainlist ul {&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.plainlist ul li {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Normal font styling for table row headers with scope=&amp;quot;row&amp;quot; tag */&lt;br /&gt;
.wikitable.plainrowheaders th[scope=row] {&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* Lists in data cells are always left-aligned */&lt;br /&gt;
html[dir=rtl] .wikitable td ul,&lt;br /&gt;
html[dir=rtl] .wikitable td ol,&lt;br /&gt;
html[dir=rtl] .wikitable td dl {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
/* ...unless they also use the hlist class */&lt;br /&gt;
html[dir=rtl] .wikitable.hlist td ul,&lt;br /&gt;
html[dir=rtl] .wikitable.hlist td ol,&lt;br /&gt;
html[dir=rtl] .wikitable.hlist td dl {&lt;br /&gt;
	text-align: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Default style for navigation boxes */&lt;br /&gt;
.navbox {                     /* Navbox container style */&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	margin: auto;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 1px;&lt;br /&gt;
}&lt;br /&gt;
.navbox-inner,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox-group,&lt;br /&gt;
.navbox-title,&lt;br /&gt;
.navbox-abovebelow {&lt;br /&gt;
	padding: 0.25em 1em;      /* Title, group and above/below styles */&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
th.navbox-group {             /* Group style */&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
.navbox,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	background: #f8f9fa;      /* Background color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	line-height: 1.8em;&lt;br /&gt;
	border-color: #f8f9fa;    /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
.navbox th,&lt;br /&gt;
.navbox-title {&lt;br /&gt;
	background: #b3ccff;      /* Level 1 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-abovebelow,&lt;br /&gt;
th.navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-title {&lt;br /&gt;
	background: #dbe7ff;      /* Level 2 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-subgroup .navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-abovebelow {&lt;br /&gt;
	background: #e5edff;      /* Level 3 color */&lt;br /&gt;
}&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background: #f8f9fa;      /* Even row striping */&lt;br /&gt;
}&lt;br /&gt;
.navbox-odd {&lt;br /&gt;
	background: transparent;  /* Odd row striping */&lt;br /&gt;
}&lt;br /&gt;
table.navbox + table.navbox {  /* Single pixel border between adjacent navboxes */&lt;br /&gt;
	margin-top: -1px;          /* (doesn&#039;t work for IE6, but that&#039;s okay)       */&lt;br /&gt;
}&lt;br /&gt;
.navbox .hlist td dl,&lt;br /&gt;
.navbox .hlist td ol,&lt;br /&gt;
.navbox .hlist td ul,&lt;br /&gt;
.navbox td.hlist dl,&lt;br /&gt;
.navbox td.hlist ol,&lt;br /&gt;
.navbox td.hlist ul {&lt;br /&gt;
	padding: 0.125em 0;       /* Adjust hlist padding in navboxes */&lt;br /&gt;
}&lt;br /&gt;
ol + table.navbox,&lt;br /&gt;
ul + table.navbox {&lt;br /&gt;
	margin-top: 0.5em;        /* Prevent lists from clinging to navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* RTL fix for navbox-list bullet lists; See [[Special:Permalink/24864265#خطای ظاهری]]. */&lt;br /&gt;
.navbox-list li {&lt;br /&gt;
	unicode-bidi: isolate;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Default styling for Navbar template */&lt;br /&gt;
.navbar {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
.navbar ul {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.navbar li {&lt;br /&gt;
	word-spacing: -0.125em;&lt;br /&gt;
}&lt;br /&gt;
.navbar.mini li { /* span is removed */&lt;br /&gt;
	font-size: xx-small;&lt;br /&gt;
}&lt;br /&gt;
.nv-talk &amp;gt; a {&lt;br /&gt;
	color: #002BB8;&lt;br /&gt;
}&lt;br /&gt;
/* Navbar styling when nested in infobox and navbox */&lt;br /&gt;
.infobox .navbar {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox .navbar {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
.navbox-title .navbar {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin-left: 0.5em;&lt;br /&gt;
	width: 6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &#039;show&#039;/&#039;hide&#039; buttons created dynamically by the CollapsibleTables javascript&lt;br /&gt;
   in [[MediaWiki:Common.js]] are styled here so they can be customised. */&lt;br /&gt;
.collapseButton {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin-right: 0.5em;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	width: auto;&lt;br /&gt;
}&lt;br /&gt;
/* In navboxes, the show/hide button balances the v·d·e links&lt;br /&gt;
   from [[Template:Navbar]], so they need to be the same width. */&lt;br /&gt;
.navbox .collapseButton {&lt;br /&gt;
	width: 6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Styling for JQuery makeCollapsible, matching that of collapseButton */&lt;br /&gt;
.mw-parser-output .mw-collapsible-toggle {&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding-right: 0.2em;&lt;br /&gt;
	padding-left: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	text-align: justify;&lt;br /&gt;
	text-justify: inter-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Infobox template style */&lt;br /&gt;
.infobox {&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	border-spacing: 3px;&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
	color: black;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0.5em 1em 0.5em 0;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	clear: left;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	width: 22em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* not strictly certain these styles are necessary&lt;br /&gt;
 * just replicating the module faithfully&lt;br /&gt;
 */&lt;br /&gt;
.infobox-subbox {&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	margin: -3px;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	min-width: 100%;&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	float: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-header,&lt;br /&gt;
.infobox-label,&lt;br /&gt;
.infobox-above,&lt;br /&gt;
.infobox-full-data,&lt;br /&gt;
.infobox-data,&lt;br /&gt;
.infobox-below,&lt;br /&gt;
.infobox-subheader,&lt;br /&gt;
.infobox-image,&lt;br /&gt;
.infobox-navbar,&lt;br /&gt;
/* Remove element declaration when both a) infobox3cols is migrated and&lt;br /&gt;
 * b) when every .infobox thing is using the standard module/templates  */&lt;br /&gt;
.infobox th,&lt;br /&gt;
.infobox td {&lt;br /&gt;
	vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-label,&lt;br /&gt;
.infobox-data,&lt;br /&gt;
/* Remove element declaration when both a) infobox3cols is migrated and&lt;br /&gt;
 * b) when every .infobox thing is using the standard module/templates  */&lt;br /&gt;
.infobox th,&lt;br /&gt;
.infobox td {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* remove .infobox from below new class names when live */&lt;br /&gt;
.infobox .infobox-above,&lt;br /&gt;
.infobox .infobox-title, /* TODO remove caption line when class is live */&lt;br /&gt;
.infobox caption{&lt;br /&gt;
	font-size: 125%;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox caption, /* TODO remove caption line when class is live */&lt;br /&gt;
.infobox-title {&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox .infobox-header,&lt;br /&gt;
.infobox .infobox-subheader,&lt;br /&gt;
.infobox .infobox-image,&lt;br /&gt;
.infobox .infobox-full-data,&lt;br /&gt;
.infobox .infobox-below {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox .infobox-navbar {&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.bordered {&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.bordered td,&lt;br /&gt;
.infobox.bordered th {&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.bordered .borderless td,&lt;br /&gt;
.infobox.bordered .borderless th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox.sisterproject {&lt;br /&gt;
	width: 20em;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* styles for bordered infobox with merged rows */&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.bordered .mergedtoprow td,&lt;br /&gt;
.infobox.bordered .mergedtoprow th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid #a2a9b1;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	border-left: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.bordered .mergedrow td,&lt;br /&gt;
.infobox.bordered .mergedrow th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	border-left: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Styles for geography infoboxes, eg countries,&lt;br /&gt;
   country subdivisions, cities, etc.            */&lt;br /&gt;
.infobox.geography {&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.geography  td,&lt;br /&gt;
.infobox.geography  th {&lt;br /&gt;
	border-top: 1px solid #a2a9b1;&lt;br /&gt;
	padding: 0.4em 0.6em 0.4em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.geography .mergedtoprow td,&lt;br /&gt;
.infobox.geography .mergedtoprow th {&lt;br /&gt;
	border-top: 1px solid #a2a9b1;&lt;br /&gt;
	padding: 0.4em 0.6em 0.2em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.geography .mergedrow td,&lt;br /&gt;
.infobox.geography .mergedrow th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	padding: 0 0.6em 0.2em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.geography .mergedbottomrow td,&lt;br /&gt;
.infobox.geography .mergedbottomrow th {&lt;br /&gt;
	border-top: 0;&lt;br /&gt;
	border-bottom: 1px solid #a2a9b1;&lt;br /&gt;
	padding: 0 0.6em 0.4em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO split definitions to appropriate class names when live from HTML element */&lt;br /&gt;
.infobox.geography .maptable td,&lt;br /&gt;
.infobox.geography .maptable th {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style for &amp;quot;notices&amp;quot; */&lt;br /&gt;
.notice {&lt;br /&gt;
	margin: 1em;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#disambig {&lt;br /&gt;
	border-top: 1px solid #c8ccd1; &lt;br /&gt;
	border-bottom: 1px solid #c8ccd1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.notice-text, .toggle-box, .red-button, .goal, div.red-button, div.siteNoticeSmall, div#siteNotice {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
DIV.siteNoticeSmall {&lt;br /&gt;
	font-size: 15pt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Persondata and other (future) metadata */&lt;br /&gt;
table.InChI, /* temporary */&lt;br /&gt;
table.persondata {&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	display: none;&lt;br /&gt;
	speak: never;&lt;br /&gt;
}&lt;br /&gt;
.InChI-label, /* temporary */&lt;br /&gt;
.persondata-label {&lt;br /&gt;
	color: #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Icons for medialist templates [[Template:Listen]], [[Template:Multi-listen_start]], [[Template:Video]], [[Template:Multi-video_start]] */&lt;br /&gt;
div.listenlist {&lt;br /&gt;
	background: url(&amp;quot;//upload.wikimedia.org/wikipedia/commons/3/3f/Gnome_speakernotes_30px.png&amp;quot;);&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding-right: 40px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.videolist, div.multivideolist {&lt;br /&gt;
	background: url(&amp;quot;//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Tango-video-x-generic.png/40px-Tango-video-x-generic.png&amp;quot;);&lt;br /&gt;
	padding-right: 50px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Change the external link icon to an Adobe icon for all PDF files&lt;br /&gt;
   in browsers that support these CSS selectors, like Mozilla and Opera */&lt;br /&gt;
.mw-body a[href$=&amp;quot;.pdf&amp;quot;].external,&lt;br /&gt;
.mw-body a[href*=&amp;quot;.pdf?&amp;quot;].external,&lt;br /&gt;
.mw-body a[href*=&amp;quot;.pdf#&amp;quot;].external,&lt;br /&gt;
.mw-body a[href$=&amp;quot;.PDF&amp;quot;].external,&lt;br /&gt;
.mw-body a[href*=&amp;quot;.PDF?&amp;quot;].external,&lt;br /&gt;
.mw-body a[href*=&amp;quot;.PDF#&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href$=&amp;quot;.pdf&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href*=&amp;quot;.pdf?&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href*=&amp;quot;.pdf#&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href$=&amp;quot;.PDF&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href*=&amp;quot;.PDF?&amp;quot;].external,&lt;br /&gt;
div#mw_content a[href*=&amp;quot;.PDF#&amp;quot;].external {&lt;br /&gt;
	background: url(&amp;quot;//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif&amp;quot;) no-repeat left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding-left: 18px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Change the external link icon to an Adobe icon anywhere the PDFlink class */&lt;br /&gt;
/* is used (notably Template:PDFlink). This works in IE, unlike the above. */&lt;br /&gt;
span.PDFlink a {&lt;br /&gt;
	background: url(&amp;quot;//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif&amp;quot;) center left no-repeat !important;&lt;br /&gt;
	padding-left: 18px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.geolink a {&lt;br /&gt;
	background: url(//upload.wikimedia.org/wikipedia/en/a/a7/Monobook-globe.png) center left no-repeat !important;&lt;br /&gt;
	padding-left: 11px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Content in columns with CSS instead of tables [[Template:Columns]] */&lt;br /&gt;
div.columns-2 div.column {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	width: 50%;&lt;br /&gt;
	min-width: 300px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.columns-3 div.column {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	width: 33.3%;&lt;br /&gt;
	min-width: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.columns-4 div.column {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	width: 25%;&lt;br /&gt;
	min-width: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.columns-5 div.column {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	width: 20%;&lt;br /&gt;
	min-width: 120px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*Add formatting to make sure that &amp;quot;external references&amp;quot; from [[Template:Ref]] do&lt;br /&gt;
  not get URL expansion, not even when printed. The mechanism up to MediaWiki 1.4 was&lt;br /&gt;
  that the HTML code contained a SPAN following the anchor A; this SPAN had the class&lt;br /&gt;
  &amp;quot;urlexpansion&amp;quot;, which was not displayed on screen, but was shown when the medium was&lt;br /&gt;
  &amp;quot;print&amp;quot;. The rules below ensure (a) that there is no extra padding to the left of&lt;br /&gt;
  the anchor (displayed as &amp;quot;[&amp;lt;number&amp;gt;]&amp;quot;), (b) that there is no &amp;quot;external link arrow&amp;quot; for&lt;br /&gt;
  the link, and (c) that this SPAN of class &amp;quot;urlexpansion&amp;quot; is never shown.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
.plainlinksneverexpand {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.plainlinksneverexpand .urlexpansion {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Make sure that ext links displayed within &amp;quot;plainlinksneverexpand&amp;quot; don&#039;t get&lt;br /&gt;
   the arrow...&lt;br /&gt;
*/&lt;br /&gt;
.plainlinksneverexpand a {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Messagebox templates */&lt;br /&gt;
.messagebox {&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
	width: 80%;&lt;br /&gt;
	margin: 0 auto 1em auto;&lt;br /&gt;
	padding: .2em;&lt;br /&gt;
}&lt;br /&gt;
.messagebox.merge {&lt;br /&gt;
	border: 1px solid #c0b8cc;&lt;br /&gt;
	background-color: #f0e5ff;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
.messagebox.cleanup {&lt;br /&gt;
	border: 1px solid #9f9fff;&lt;br /&gt;
	background-color: #efefff;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
.messagebox.standard-talk {&lt;br /&gt;
	border: 1px solid #c0c090;&lt;br /&gt;
	background-color: #f8eaba;&lt;br /&gt;
}&lt;br /&gt;
.messagebox.nested-talk {&lt;br /&gt;
	border: 1px solid #c0c090;&lt;br /&gt;
	background-color: #f8eaba;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	margin: 2px 4px 2px 4px;&lt;br /&gt;
}&lt;br /&gt;
.messagebox.small {&lt;br /&gt;
	width: 238px;&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0 0 1em 1em;&lt;br /&gt;
	line-height: 1.25em; &lt;br /&gt;
}&lt;br /&gt;
.messagebox.small-talk {&lt;br /&gt;
	width: 238px;&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0 0 1em 1em;&lt;br /&gt;
	line-height: 1.25em; &lt;br /&gt;
	background: #fff2cc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Article message box styles */&lt;br /&gt;
table.ambox {&lt;br /&gt;
	margin: 0px 10%;                  /* 10% = Will not overlap with other elements */&lt;br /&gt;
	border: 1px solid #a2a9b1; &lt;br /&gt;
	border-right: 10px solid #36c;  /* Default &amp;quot;notice&amp;quot; blue */&lt;br /&gt;
	background: #f8f9fa; &lt;br /&gt;
}&lt;br /&gt;
table.ambox + table.ambox {      /* Single border between stacked boxes. */&lt;br /&gt;
	margin-top: -1px;&lt;br /&gt;
}&lt;br /&gt;
.ambox th.mbox-text, &lt;br /&gt;
.ambox td.mbox-text {            /* The message body cell(s) */&lt;br /&gt;
	padding: 0.25em 0.5em;       /* 0.5em left/right */&lt;br /&gt;
}&lt;br /&gt;
.ambox td.mbox-image {           /* The left image cell */&lt;br /&gt;
	padding: 2px 0.5em 2px 0;    /* 0.5em right, 0px left */&lt;br /&gt;
}&lt;br /&gt;
.ambox td.mbox-imageright {      /* The right image cell */&lt;br /&gt;
	padding: 2px 0 2px 0.5em;    /* 0px right, 0.5em left */&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
table.ambox-notice {&lt;br /&gt;
	border-right: 10px solid #36c;    /* Blue */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-speedy {&lt;br /&gt;
	border-right: 10px solid #DD0000;    /* Red */&lt;br /&gt;
	background: #fee7e6;                   /* Pink */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-delete {&lt;br /&gt;
	border-right: 10px solid #DD0000;    /* Red */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-content {&lt;br /&gt;
	border-right: 10px solid #FF5D00;    /* Orange */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-style {&lt;br /&gt;
	border-right: 10px solid #fc3;    /* Yellow */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-move {&lt;br /&gt;
	border-right: 10px solid #9932cc;    /* Purple */&lt;br /&gt;
}&lt;br /&gt;
table.ambox-protection {&lt;br /&gt;
	border-right: 10px solid #a2a9b1;       /* Gray-gold */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Disambig and set index box styles */&lt;br /&gt;
table.dmbox {&lt;br /&gt;
	clear: both; &lt;br /&gt;
	margin: 0.9em 1em; &lt;br /&gt;
	border-top: 1px solid #c8ccd1; &lt;br /&gt;
	border-bottom: 1px solid #c8ccd1; &lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* Footer and header message box styles */&lt;br /&gt;
table.fmbox {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	background: #f8f9fa;     /* Default &amp;quot;system&amp;quot; gray */&lt;br /&gt;
}&lt;br /&gt;
table.fmbox-system {&lt;br /&gt;
	background: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
table.fmbox-warning {&lt;br /&gt;
	border: 1px solid #DD0000;  /* Dark pink */&lt;br /&gt;
	background: #fee7e6;        /* Pink */&lt;br /&gt;
}&lt;br /&gt;
table.fmbox-editnotice {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
/* Div based &amp;quot;warning&amp;quot; style fmbox messages. */&lt;br /&gt;
div.mw-warning-with-logexcerpt,&lt;br /&gt;
div.mw-lag-warn-high,&lt;br /&gt;
div.mw-cascadeprotectedwarning,&lt;br /&gt;
div#mw-protect-cascadeon {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	border: 1px solid #DD0000;&lt;br /&gt;
	background: #fee7e6;&lt;br /&gt;
	padding: 0.25em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
/* Div based &amp;quot;system&amp;quot; style fmbox messages. &lt;br /&gt;
   Used in [[MediaWiki:Readonly lag]]. */&lt;br /&gt;
div.mw-lag-warn-normal,&lt;br /&gt;
div.fmbox-system {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	margin: 0.2em 0;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	background: #f8f9fa;&lt;br /&gt;
	padding: 0.25em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Other pages message box styles */&lt;br /&gt;
table.ombox {&lt;br /&gt;
	margin: 4px 10%;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border: 1px solid #a2a9b1;    /* Default &amp;quot;notice&amp;quot; gray */&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-notice {&lt;br /&gt;
	border: 1px solid #a2a9b1;    /* Gray */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-speedy {&lt;br /&gt;
	border: 2px solid #b32424;    /* Red */&lt;br /&gt;
	background-color: #fee7e6;    /* Pink */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-delete {&lt;br /&gt;
	border: 2px solid #b32424;    /* Red */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-content {&lt;br /&gt;
	border: 1px solid #f28500;    /* Orange */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-style {&lt;br /&gt;
	border: 1px solid #fc3;       /* Yellow */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-move {&lt;br /&gt;
	border: 1px solid #9932cc;    /* Purple */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.ombox-protection {&lt;br /&gt;
	border: 2px solid #a2a9b1;    /* Gray-gold */&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
/* These mbox-small classes must be placed after all other&lt;br /&gt;
   ambox/tmbox/ombox etc classes. &amp;quot;body.mediawiki&amp;quot; is so&lt;br /&gt;
   they override &amp;quot;table.ambox + table.ambox&amp;quot; above. */&lt;br /&gt;
html body.mediawiki .mbox-small {   /* For the &amp;quot;small=yes&amp;quot; option. */&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	clear: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 4px 1em 4px 0;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 238px;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
html body.mediawiki .mbox-small-right {   /* For the &amp;quot;small=right&amp;quot; option. */&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 4px 0 4px 1em;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	width: 238px;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	line-height: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style for compact ambox */&lt;br /&gt;
/* Hide the images */&lt;br /&gt;
.compact-ambox table .mbox-image,&lt;br /&gt;
.compact-ambox table .mbox-imageright,&lt;br /&gt;
.compact-ambox table .mbox-empty-cell {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove borders, backgrounds, padding, etc. */&lt;br /&gt;
.compact-ambox table.ambox {&lt;br /&gt;
	border: none;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	margin: 0 1.6em 0 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.mediawiki .compact-ambox table.mbox-small-left {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style the text cell as a list item and remove its padding */&lt;br /&gt;
.compact-ambox table .mbox-text {&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.compact-ambox table .mbox-text-span {&lt;br /&gt;
	display: list-item;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style-type: square;&lt;br /&gt;
	list-style-image: url(/w/skins/MonoBook/resources/images/bullet.svg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Allow for hiding text in compact form */&lt;br /&gt;
.compact-ambox .hide-when-compact {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Put a checker background at the image description page only visible if the image has transparent background */&lt;br /&gt;
#file img {&lt;br /&gt;
	background: url(&amp;quot;//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png&amp;quot;) repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#wpSave {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* suppress missing interwiki image links where #ifexist cannot be used due to high number of requests */&lt;br /&gt;
/* use restricted to rail icon management pages */&lt;br /&gt;
/* see .hidden-redlink on //meta.wikimedia.org/wiki/MediaWiki:Common.css */&lt;br /&gt;
.check-icon a.new {&lt;br /&gt;
	display: none; &lt;br /&gt;
	speak: never;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Removes underlines from links */&lt;br /&gt;
.nounderlines a { &lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove underline from IPA links */&lt;br /&gt;
.IPA a:link, .IPA a:visited {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Removes useless links from printout */&lt;br /&gt;
@media print {&lt;br /&gt;
	#privacy, #about, #disclaimer {display:none;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#EnWpMpBook { background-image: url(//upload.wikimedia.org/wikipedia/en/7/7e/MP-open-book.png); }&lt;br /&gt;
#EnWpMpSearch { background: url(//upload.wikimedia.org/wikipedia/en/a/ae/MP-magnifying-glass.png) no-repeat top left; }&lt;br /&gt;
#EnWpMpSearchInner { float: left; width: 20em; text-align: center; }&lt;br /&gt;
#EnWpMpBook2 { background-image: url(//upload.wikimedia.org/wikipedia/commons/8/8e/MP-open-book2.png); }&lt;br /&gt;
&lt;br /&gt;
/* Standard Navigationsleisten, aka box hiding thingy from .de.  Documentation at [[Wikipedia:NavFrame]]. */&lt;br /&gt;
&lt;br /&gt;
div.Boxmerge,&lt;br /&gt;
div.NavFrame {&lt;br /&gt;
	margin: 0px;&lt;br /&gt;
	padding: 4px;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
div.Boxmerge div.NavFrame {&lt;br /&gt;
	border-style: hidden;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame + div.NavFrame {&lt;br /&gt;
	border-top-style: hidden;&lt;br /&gt;
}&lt;br /&gt;
div.NavPic {&lt;br /&gt;
	background-color: #fff;&lt;br /&gt;
	margin: 0px;&lt;br /&gt;
	padding: 2px;&lt;br /&gt;
	float: right;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavHead {&lt;br /&gt;
	height: 1.6em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	background-color: #b3ccff;&lt;br /&gt;
	position:relative;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavHead:hover {&lt;br /&gt;
	background-color: #aaf;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame p {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavContent {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
div.NavFrame div.NavContent p {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
div.NavEnd {&lt;br /&gt;
	margin: 0px;&lt;br /&gt;
	padding: 0px;&lt;br /&gt;
	line-height: 1px;&lt;br /&gt;
	clear: both;&lt;br /&gt;
}&lt;br /&gt;
a.NavToggle {&lt;br /&gt;
	position:absolute;&lt;br /&gt;
	top:0px;&lt;br /&gt;
	left:3px;&lt;br /&gt;
	font-weight:normal;&lt;br /&gt;
	font-size:smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes and disambiguation notices */&lt;br /&gt;
.rellink,&lt;br /&gt;
.dablink,&lt;br /&gt;
.hatnote {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
.rellink i,&lt;br /&gt;
.dablink i,&lt;br /&gt;
.hatnote i {&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
}&lt;br /&gt;
div.rellink,&lt;br /&gt;
div.dablink,&lt;br /&gt;
div.hatnote {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	padding-right: 1.6em;&lt;br /&gt;
	margin-bottom: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.updatedmarker {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: #006400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Coloured watchlist numbers */&lt;br /&gt;
.mw-plusminus-pos {&lt;br /&gt;
	color: #006400; /* darkgreen */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* .mw-plusminus-null currently at developer default */&lt;br /&gt;
&lt;br /&gt;
.mw-plusminus-neg {&lt;br /&gt;
	color: #8B0000; /* darkred */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dablink {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	padding-right: 2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dablink i {&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Style for horizontal UL lists */&lt;br /&gt;
.horizontal ul {&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.horizontal li { &lt;br /&gt;
	padding: 0 0.6em 0 0.4em;&lt;br /&gt;
	display: inline;&lt;br /&gt;
	border-left: 1px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Geographical coordinates &lt;br /&gt;
&lt;br /&gt;
To display coordinates using the notation in the source code, write this in your User:Username/monobook.css:&lt;br /&gt;
   .geo-default { display: inline } .geo-nondefault { display: none } &lt;br /&gt;
   .geo-dec { display: inline } .geo-dms { display: inline }&lt;br /&gt;
&lt;br /&gt;
To display coordinates using decimal notation, write this in your User:Username/monobook.css:&lt;br /&gt;
   .geo-default { display: inline } .geo-nondefault { display: inline } &lt;br /&gt;
   .geo-dec { display: inline } .geo-dms { display: none }&lt;br /&gt;
&lt;br /&gt;
To display coordinates using DMS notation, write this in your User:Username/monobook.css:&lt;br /&gt;
   .geo-default { display: inline } .geo-nondefault { display: inline } &lt;br /&gt;
   .geo-dec { display: none }   .geo-dms { display: inline }&lt;br /&gt;
&lt;br /&gt;
To display coordinates in both decimal and DMS notation, write this in your User:Username/monobook.css:&lt;br /&gt;
   .geo-default { display: inline } .geo-nondefault { display: inline } &lt;br /&gt;
   .geo-dec { display: inline }   .geo-dms { display: inline }&lt;br /&gt;
   .geo-multi-punct { display: inline }&lt;br /&gt;
&lt;br /&gt;
See [[Template:Coor link]] for how these are used.&lt;br /&gt;
&lt;br /&gt;
Note that the classes &amp;quot;geo&amp;quot;, &amp;quot;longitude&amp;quot;, and &amp;quot;latitude&amp;quot; are not just styles but also used by the [[Geo microformat]], so the names should not be changed.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
.geo-default { display: inline; }&lt;br /&gt;
.geo-nondefault { display: none; }&lt;br /&gt;
.geo-dms { display: inline; }&lt;br /&gt;
.geo-dec { display: inline; }&lt;br /&gt;
.geo-multi-punct { display: none; }&lt;br /&gt;
&lt;br /&gt;
.longitude .latitude {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* This is used for the Geo microformat, but no style is needed for now other than .geo-dec. */&lt;br /&gt;
.geo { }&lt;br /&gt;
&lt;br /&gt;
/***** end Geo-related */&lt;br /&gt;
&lt;br /&gt;
/* When &amp;lt;div class=&amp;quot;nonumtoc&amp;quot;&amp;gt; is used on the table of contents, the ToC will display without numbers */&lt;br /&gt;
.nonumtoc .tocnumber { display:none; }&lt;br /&gt;
.nonumtoc #toc ul,&lt;br /&gt;
.nonumtoc .toc ul {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: .3em 0 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.nonumtoc #toc ul ul, &lt;br /&gt;
.nonumtoc .toc ul ul { &lt;br /&gt;
	margin: 0 0 0 2em; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Allow limiting of which header levels are shown in a TOC; &amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;, for&lt;br /&gt;
   instance, will limit to showing ==headings== and ===headings=== but no further (as long as&lt;br /&gt;
   there are no =headings= on the page, which there shouldn&#039;t be according to the MoS). */&lt;br /&gt;
.toclimit-2 .toclevel-2 {display:none;}&lt;br /&gt;
.toclimit-3 .toclevel-3 {display:none;}&lt;br /&gt;
.toclimit-4 .toclevel-4 {display:none;}&lt;br /&gt;
.toclimit-5 .toclevel-5 {display:none;}&lt;br /&gt;
.toclimit-6 .toclevel-6 {display:none;}&lt;br /&gt;
.toclimit-7 .toclevel-7 {display:none;}&lt;br /&gt;
&lt;br /&gt;
/* Allow transcluded pages to display in lists rather than a table. Compatible in Firefox; incompatible in IE6. */&lt;br /&gt;
.listify td {display:list-item;}&lt;br /&gt;
.listify tr {display:block;}&lt;br /&gt;
.listify table {display:block;}&lt;br /&gt;
&lt;br /&gt;
div.user-block {&lt;br /&gt;
	padding: 5px;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	background-color: #fee7e6;&lt;br /&gt;
}&lt;br /&gt;
/* Prevent line breaks in silly places: &lt;br /&gt;
   1) links when we don&#039;t want them to&lt;br /&gt;
   2) HTML formulae&lt;br /&gt;
   3) Ref tags with group names &amp;lt;ref group=&amp;quot;Note&amp;quot;&amp;gt; --&amp;gt; &amp;quot;[Note 1]&amp;quot;&lt;br /&gt;
*/&lt;br /&gt;
.nowrap,&lt;br /&gt;
.nowraplinks a,&lt;br /&gt;
span.texhtml,&lt;br /&gt;
sup.reference a { white-space: nowrap; }&lt;br /&gt;
&lt;br /&gt;
/* Contents of &amp;lt;math&amp;gt; tag should have an ltr layout */&lt;br /&gt;
span.texhtml {&lt;br /&gt;
	direction: ltr;&lt;br /&gt;
	unicode-bidi: isolate;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.thumbinner {&lt;br /&gt;
	min-width: 100px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */&lt;br /&gt;
th.mbox-text, td.mbox-text {     /* The message body cell(s) */&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0.25em 0.9em;       /* 0.9em left/right */&lt;br /&gt;
	width: 100%;    /* Make all mboxes the same width regardless of text length */&lt;br /&gt;
}&lt;br /&gt;
td.mbox-image {                  /* The left image cell */&lt;br /&gt;
	border: none; &lt;br /&gt;
	padding: 2px 0.9em 2px 0px;    /* 0.9em right, 0px left */&lt;br /&gt;
	text-align: center; &lt;br /&gt;
}&lt;br /&gt;
td.mbox-imageright {             /* The right image cell */&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 2px 0px 2px 0.9em;    /* 0px left, 0.9em right */&lt;br /&gt;
	text-align: center; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Reduce line-height for &amp;lt;sup&amp;gt; and &amp;lt;sub&amp;gt; */&lt;br /&gt;
sup, sub {&lt;br /&gt;
	line-height: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Selectively hide headers in WikiProject banners */&lt;br /&gt;
/* TemplateStyles */&lt;br /&gt;
.wpbs-inner .wpb .wpb-header {&lt;br /&gt;
	display: table-row;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Styling for Abuse Filter tags */&lt;br /&gt;
.mw-tag-markers {&lt;br /&gt;
	font-style:italic;&lt;br /&gt;
	font-size:90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide stuff meant for accounts with special permissions. Made visible again in&lt;br /&gt;
   [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]],&lt;br /&gt;
   [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],&lt;br /&gt;
   [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */&lt;br /&gt;
.checkuser-show,&lt;br /&gt;
.sysop-show,&lt;br /&gt;
.patroller-show,&lt;br /&gt;
.templateeditor-show,&lt;br /&gt;
.extendedmover-show,&lt;br /&gt;
.extendedconfirmed-show,&lt;br /&gt;
.autoconfirmed-show,&lt;br /&gt;
.user-show {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Für &amp;lt;nowiki&amp;gt;&amp;lt;hiero&amp;gt;…&amp;lt;/hiero&amp;gt;&amp;lt;/nowiki&amp;gt; */ &lt;br /&gt;
.mw-hierotable, .hierotable-mw, &lt;br /&gt;
.mw-hierotable  th, .hierotable mw-th, &lt;br /&gt;
.mw-hierotable  td, .hierotable mw-td { &lt;br /&gt;
	border: 0px;&lt;br /&gt;
	padding: 0px;&lt;br /&gt;
}&lt;br /&gt;
/* With MediaWiki 1.5, the mechanism has changed: instead of a SPAN of class &amp;quot;urlexpansion&amp;quot;&lt;br /&gt;
   following the anchor A, the anchor itself now has class &amp;quot;external autonumber&amp;quot; and the&lt;br /&gt;
   expansion is inserted when printing (see the common printing style sheet at&lt;br /&gt;
   //en.wikipedia.org/w/skins/common/commonPrint.css) using the &amp;quot;:after&amp;quot; pseudo-&lt;br /&gt;
   element of CSS. We have to switch this off for links due to Template:Ref!&lt;br /&gt;
*/&lt;br /&gt;
.plainlinksneverexpand a.external.text:after {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
.plainlinksneverexpand a.external.autonumber:after {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* for Main Page */&lt;br /&gt;
.globegris {&lt;br /&gt;
	background: url(//upload.wikimedia.org/wikipedia/commons/1/10/Wikipedia-logo-v2-200px-transparent.png);&lt;br /&gt;
}&lt;br /&gt;
/* End */&lt;br /&gt;
&lt;br /&gt;
.prefsection fieldset {&lt;br /&gt;
	float: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small font-size for hidden categories */&lt;br /&gt;
#mw-hidden-catlinks { font-size: 87% !important; }&lt;br /&gt;
&lt;br /&gt;
.listify {&lt;br /&gt;
	margin-left:0;&lt;br /&gt;
	margin-right:2em;&lt;br /&gt;
}&lt;br /&gt;
#wpFilterRules {&lt;br /&gt;
	direction: ltr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* این نیز باگ است که وقتی عنوان یک بخش انگلیسی است، فارسی درون خلاصهٔ ویرایش در تاریخچه به هم می‌ریزد */&lt;br /&gt;
.comment &amp;gt; span { unicode-bidi: normal; }&lt;br /&gt;
&lt;br /&gt;
/* نمایش بهتر خلاصه ویرایش‌های خیلی طولانی */&lt;br /&gt;
.comment {&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
	word-break: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* زیاد کردن اندازهٔ توضیحات صفحهٔ بارگذاری */&lt;br /&gt;
#wpUploadDescription {&lt;br /&gt;
	height: 25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*ابزار پررنگ کنندهٔ نظرهای کاربر*/&lt;br /&gt;
.mycomment { background: #ff9; }&lt;br /&gt;
&lt;br /&gt;
/* Pie chart test: Transparent borders */&lt;br /&gt;
.transborder {&lt;br /&gt;
	border: solid transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide edittools base for those not using the gadget */&lt;br /&gt;
#mw-edittools-charinsert {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Category tree styling. Works in conjuction with [[MediaWiki:Categorytree-expand-bullet]],&lt;br /&gt;
   [[MediaWiki:Categorytree-collapse-bullet]] and [[MediaWiki:Categorytree-empty-bullet]]. */&lt;br /&gt;
#mw-subcategories ul {&lt;br /&gt;
	list-style: none none;&lt;br /&gt;
	margin-left: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
.CategoryTreeChildren {&lt;br /&gt;
	margin-left: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
.CategoryTreeToggle {&lt;br /&gt;
	color: #36c;&lt;br /&gt;
}&lt;br /&gt;
.CategoryTreeEmptyBullet {&lt;br /&gt;
	color: #c8ccd1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* توضیح به کاربران دربارهٔ صفحهٔ تمرین */&lt;br /&gt;
body.ns-2[class*=&amp;quot;_صفحه_تمرین&amp;quot;] #firstHeading::after {&lt;br /&gt;
	color: #72777d;&lt;br /&gt;
	content: &amp;quot;توجه:این صفحه بخشی از دانشنامه نیست و صرفاً جهت ویرایش آزمایشی در اسلامیکال کاربرد دارد.&amp;quot;;&lt;br /&gt;
	float: left;&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	font-size: 40%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*اصلاح اندازه فونت در تغییرات اخیر برای [ویرایش‌های در حال انتظار] برگرفته از ویکی‌روسی*/&lt;br /&gt;
.mw-fr-reviewlink, .fr-hist-basic-user, .fr-hist-basic-auto {&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
	font-size: smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* temporary fix for T86979 */&lt;br /&gt;
.ui-dialog { right: auto; }&lt;br /&gt;
&lt;br /&gt;
/* Make it possible to hide checkboxes in &amp;lt;inputbox&amp;gt; */&lt;br /&gt;
.inputbox-hidecheckboxes form .inputbox-element {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* این برچسپ بهتر است فقط برای Gadget-taghighlighter.css را فعال کرده اند دیده شوند */&lt;br /&gt;
.mw-tag-marker-نیازمند_بازبینی { display: none; }&lt;br /&gt;
&lt;br /&gt;
/* Reduce page jumps by hiding collapsed/dismissed content */&lt;br /&gt;
.client-js .mw-special-Watchlist #watchlist-message {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* کمی پیوند ایجاد مقاله بزرگتر شود که پس از حذف بیشتر استفاده شود */&lt;br /&gt;
.mw-warning-with-logexcerpt a[title=&amp;quot;اسلامیکال:ایجاد مقاله&amp;quot;] { font-size: 120%; font-weight: bold; }&lt;br /&gt;
&lt;br /&gt;
/* Make the textarea pink when an admin is editing a protected page */&lt;br /&gt;
.mw-textarea-protected {&lt;br /&gt;
	background-color: #fee7e6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Made diffs use Wikimedia UI color palette ([[phab:M82]]) */&lt;br /&gt;
td.diff-addedline {&lt;br /&gt;
	border-color: #36c;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline {&lt;br /&gt;
	border-color: #fc3;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline .diffchange {&lt;br /&gt;
	background: #e9eef9;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline .diffchange {&lt;br /&gt;
	background: #fff4d6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Spacing between the rows of navbox */&lt;br /&gt;
tr + tr &amp;gt; .navbox-abovebelow,&lt;br /&gt;
tr + tr &amp;gt; .navbox-group,&lt;br /&gt;
tr + tr &amp;gt; .navbox-image,&lt;br /&gt;
tr + tr &amp;gt; .navbox-list {    /* Borders above 2nd, 3rd, etc. rows */&lt;br /&gt;
	border-top: 2px solid #fdfdfd; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
/* End of Spacing between the rows of navbox */&lt;br /&gt;
&lt;br /&gt;
/* Color diff links */&lt;br /&gt;
.mw-diff-edit a {&lt;br /&gt;
	color: #2a4b8d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-diff-undo a, .mw-history-undo a, .mw-rollback-link a {&lt;br /&gt;
	color: #d33;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.mw-thanks-thank-link {&lt;br /&gt;
	color: #14866d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Make sure cite and dfn are not italicized thorugh the user agent stylesheet */&lt;br /&gt;
cite, dfn {&lt;br /&gt;
	font-style:inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* LTR citations should be listed LTR and be left-aligned, as is the case in Persian literature */&lt;br /&gt;
LI.mw-cite-dir-ltr {&lt;br /&gt;
	direction: ltr;&lt;br /&gt;
	margin-left: 2.3em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	list-style-type: decimal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* However, sometimes users combine LTR and RTL refs and wrap the &amp;lt;references/&amp;gt; tag in a DIV that is LTR.&lt;br /&gt;
   In those cases, don&#039;t add a margin-left for the LI element, so the LTR and RTL numbersing are aligned. */&lt;br /&gt;
DIV.mw-content-ltr&amp;gt;OL&amp;gt;LI.mw-cite-dir-ltr {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@counter-style persian-alpha {&lt;br /&gt;
	system: cyclic;&lt;br /&gt;
	symbols: &amp;quot;الف&amp;quot; &amp;quot;ب&amp;quot; &amp;quot;پ&amp;quot; &amp;quot;ت&amp;quot; &amp;quot;ث&amp;quot; &amp;quot;ج&amp;quot; &amp;quot;چ&amp;quot; &amp;quot;ح&amp;quot; &amp;quot;خ&amp;quot; &amp;quot;د&amp;quot; &amp;quot;ذ&amp;quot; &amp;quot;ر&amp;quot; &amp;quot;ز&amp;quot; &amp;quot;ژ&amp;quot; &amp;quot;س&amp;quot; &amp;quot;ش&amp;quot; &amp;quot;ص&amp;quot; &amp;quot;ض&amp;quot; &amp;quot;ط&amp;quot; &amp;quot;ظ&amp;quot; &amp;quot;ع&amp;quot; &amp;quot;غ&amp;quot; &amp;quot;ف&amp;quot; &amp;quot;ق&amp;quot; &amp;quot;ک&amp;quot; &amp;quot;گ&amp;quot; &amp;quot;ل&amp;quot; &amp;quot;م&amp;quot; &amp;quot;ن&amp;quot; &amp;quot;و&amp;quot; &amp;quot;ه&amp;quot; &amp;quot;ی&amp;quot;;&lt;br /&gt;
	suffix: &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.reflist-persian-alpha ol:lang(fa) li {&lt;br /&gt;
	list-style-type: persian-alpha !important;&lt;br /&gt;
	direction: rtl;&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Right margin for left-aligned tables */&lt;br /&gt;
table[align=&amp;quot;left&amp;quot;] {&lt;br /&gt;
	margin-right: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center aligning wikitables should be as easy as using align=center */&lt;br /&gt;
table.wikitable[align=&amp;quot;center&amp;quot;] {&lt;br /&gt;
	margin-right: auto;&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-indicator, .mw-helplink, .mw-indicator-pp-default {&lt;br /&gt;
	-moz-user-select: none;&lt;br /&gt;
	-webkit-user-select: none;&lt;br /&gt;
	-ms-user-select: none;&lt;br /&gt;
	user-select: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Temporary fix for Template:Allow_wrap until T283071 is fixed */&lt;br /&gt;
.wrap {&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks, .vector-language-sidebar-alert, .sistersitebox {&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* omam class */&lt;br /&gt;
&lt;br /&gt;
.mp-featured .image-container {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured .image-container img {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	-webkit-border-radius: 6px;&lt;br /&gt;
	-moz-border-radius: 6px;&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured .text {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: justify;&lt;br /&gt;
	word-spacing: -2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured .text ul li:not(.mw-empty-elt) {&lt;br /&gt;
	width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured .text ul li:not(.mw-empty-elt):nth-child(even) {&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured .text ul li:not(.mw-empty-elt):nth-child(odd) {&lt;br /&gt;
	float: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-article {&lt;br /&gt;
	width: 56%;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	float: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-article img {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	margin: 0 1rem 0 0;&lt;br /&gt;
	max-width: 142px;&lt;br /&gt;
	-webkit-border-radius: 6px;&lt;br /&gt;
	-moz-border-radius: 6px;&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-article .text {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-article ul {&lt;br /&gt;
	list-style-position: inside;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-index {&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-index .image {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-index .image img {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	margin: 0 1rem 0 0;&lt;br /&gt;
	-webkit-border-radius: 6px;&lt;br /&gt;
	-moz-border-radius: 6px;&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
[dir=&#039;rtl&#039;] .mp-featured-index .image img {&lt;br /&gt;
	float: left;&lt;br /&gt;
	margin: 0 1rem 0 0;&lt;br /&gt;
}&lt;br /&gt;
.mp-featured-index .text {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-index ul {&lt;br /&gt;
	list-style-position: inside;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-box {&lt;br /&gt;
	padding: 0.5rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	margin: 0.5rem auto;&lt;br /&gt;
	border: none;&lt;br /&gt;
	-webkit-border-radius: 6px;&lt;br /&gt;
	-moz-border-radius: 6px;&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-box h2 {&lt;br /&gt;
	margin: 0 0 0.25rem;&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
	padding: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-top {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	margin: 0 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-top p {&lt;br /&gt;
	font-size: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-top ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-top ul li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-left: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-top ul li span {&lt;br /&gt;
	font-size: 1.5rem;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	/* float: left; */&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	margin: 4px 4px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[dir=&#039;rtl&#039;] .mp-top ul li span {&lt;br /&gt;
	/* float: right; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art.fluid .image {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art.fluid .image img {&lt;br /&gt;
	width: initial;&lt;br /&gt;
	float: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art.fluid .text {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 1rem 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art .image {&lt;br /&gt;
	float: left;&lt;br /&gt;
	margin-right: 1rem;&lt;br /&gt;
}&lt;br /&gt;
[dir=&#039;rtl&#039;] .mp-featured-art .image {&lt;br /&gt;
	float: right;&lt;br /&gt;
	margin-left: 1rem;&lt;br /&gt;
	margin-right: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art .image img {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	-webkit-border-radius: 6px;&lt;br /&gt;
	-moz-border-radius: 6px;&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-featured-art .text {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	padding: 0 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	font-size: 14px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom .mp-bottom-column {&lt;br /&gt;
	width: 19%;&lt;br /&gt;
	float: left;&lt;br /&gt;
	margin: 0.5%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[dir=&#039;rtl&#039;] .mp-bottom .mp-bottom-column {&lt;br /&gt;
	float: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom .mp-bottom-column .mp-bottom-column-title {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	background: #F1F1F1;&lt;br /&gt;
	padding: 6px 10px;&lt;br /&gt;
	border-radius: 5px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom .mp-bottom-column .mp-bottom-column-title span {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	background: #eee;&lt;br /&gt;
	border-radius: 5px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom .mp-bottom-column ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 5px auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-bottom .mp-bottom-column ul li {&lt;br /&gt;
	margin: 10px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.highlight-title-yellow,&lt;br /&gt;
.highlight-title-green {&lt;br /&gt;
	position: relative;&lt;br /&gt;
    background-color: #91d5fe;&lt;br /&gt;
	-webkit-border-radius: 5px;&lt;br /&gt;
	-moz-border-radius: 5px;&lt;br /&gt;
	border-radius: 8px;&lt;br /&gt;
	border: 1px solid #2aa9f5;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body .mw-editsection-like {&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* scale up fonts - added by nazarzadeh */&lt;br /&gt;
&lt;br /&gt;
.mp-milestones table td {&lt;br /&gt;
	border-top: 1px solid #a2a9b1;&lt;br /&gt;
}&lt;br /&gt;
.mp-milestones table td ul {&lt;br /&gt;
	margin: 0.3em .6em 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.box-sh {&lt;br /&gt;
	padding: 0.5rem 1rem;&lt;br /&gt;
	background-color: #fff;&lt;br /&gt;
	box-shadow: 5px 5px 7px rgba(12, 210, 26, 0.6);&lt;br /&gt;
	border-radius: 5px;&lt;br /&gt;
	border: 2px solid #2a38f5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* portals by nazarzadeh */&lt;br /&gt;
.portal-container-2 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(2, auto);&lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-container-3 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(3, auto); &lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-container-4 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(4, auto); &lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-container-5 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(5, auto); &lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-container-6 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(6, auto); &lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-container-7 {&lt;br /&gt;
	display: grid; &lt;br /&gt;
	grid-gap: 10px; &lt;br /&gt;
	grid-template-columns: repeat(7, auto); &lt;br /&gt;
	grid-template-rows: auto;  &lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-2-3 {&lt;br /&gt;
	grid-column-end: span 2; &lt;br /&gt;
}&lt;br /&gt;
.portal-column-3-4 {&lt;br /&gt;
	grid-column-end: span 3; &lt;br /&gt;
}&lt;br /&gt;
.portal-column-1-2,&lt;br /&gt;
.portal-column-1-3,&lt;br /&gt;
.portal-column-1-4,&lt;br /&gt;
.portal-column-1-5,&lt;br /&gt;
.portal-column-1-6,&lt;br /&gt;
.portal-column-1-7 {&lt;br /&gt;
	grid-column-end: span 1; &lt;br /&gt;
}&lt;br /&gt;
.portal-column-2-2 {&lt;br /&gt;
	grid-column-end: span 2;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-3-3 {&lt;br /&gt;
	grid-column-end: span 3;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-4-4 {&lt;br /&gt;
	grid-column-end: span 4;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-5-5 {&lt;br /&gt;
	grid-column-end: span 5;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-6-6 {&lt;br /&gt;
	grid-column-end: span 6;&lt;br /&gt;
}&lt;br /&gt;
.portal-column-7-7 {&lt;br /&gt;
	grid-column-end: span 7;&lt;br /&gt;
}&lt;br /&gt;
@media only screen and (max-width: 850px) {&lt;br /&gt;
	.mainpage-portals {&lt;br /&gt;
		width: 25%; &lt;br /&gt;
	}&lt;br /&gt;
    /* Decouple the columns on narrow screens */&lt;br /&gt;
    .portal-container-2,&lt;br /&gt;
    .portal-container-3, &lt;br /&gt;
    .portal-container-4, &lt;br /&gt;
    .portal-container-5, &lt;br /&gt;
    .portal-container-6, &lt;br /&gt;
    .portal-container-7 {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
    .portal-column-1-2,&lt;br /&gt;
    .portal-column-2-4,&lt;br /&gt;
    .portal-column-1-4,&lt;br /&gt;
    .portal-column-1-3,&lt;br /&gt;
    .portal-column-2-3,&lt;br /&gt;
    .portal-column-2-2,&lt;br /&gt;
    .portal-column-3-3,&lt;br /&gt;
	.portal-column-4-4,&lt;br /&gt;
	.portal-column-5-5,&lt;br /&gt;
	.portal-column-6-6,&lt;br /&gt;
	.portal-column-7-7 {&lt;br /&gt;
        float: inherit;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-top: 10px;&lt;br /&gt;
        display: block !important;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
    .portal-column-1-4 {&lt;br /&gt;
		width: calc(50% - 16px);&lt;br /&gt;
    }&lt;br /&gt;
    .portal-column-1-6 {&lt;br /&gt;
		width: calc(33.3% - 16px);&lt;br /&gt;
    }&lt;br /&gt;
    .portal-column-1-7 {&lt;br /&gt;
	float: right;&lt;br /&gt;
	width: calc(25% - 16px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* portals end */&lt;br /&gt;
&lt;br /&gt;
[dir=&#039;rtl&#039;] .mw-editfooter-toggler {&lt;br /&gt;
    background-position: right center;&lt;br /&gt;
    padding-right: 16px;&lt;br /&gt;
}&lt;br /&gt;
[dir=&#039;rtl&#039;] .suggestions-special .special-label, .suggestions-special .special-query, .suggestions-result {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-circle-person {&lt;br /&gt;
	clear: both;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-circle-person .circle-person-item {&lt;br /&gt;
	width: 20%;&lt;br /&gt;
	float: left;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	-webkit-box-sizing: border-box;&lt;br /&gt;
	-moz-box-sizing: border-box;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-circle-person .circle-person-item .title {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	white-space: pre-line;&lt;br /&gt;
	word-spacing: -2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-circle-person .circle-person-item .image-container a {&lt;br /&gt;
	width: 100px;&lt;br /&gt;
	height: 100px;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	-webkit-border-radius: 50%;&lt;br /&gt;
	-moz-border-radius: 50%;&lt;br /&gt;
	border-radius: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mp-circle-person .circle-person-item .image-container a img {&lt;br /&gt;
	float: right;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	margin: 0 1rem 1rem 0;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	left: 50%;&lt;br /&gt;
	-webkit-transform: translate(-50%, -50%);&lt;br /&gt;
	-moz-transform: translate(-50%, -50%);&lt;br /&gt;
	-ms-transform: translate(-50%, -50%);&lt;br /&gt;
	-o-transform: translate(-50%, -50%);&lt;br /&gt;
	transform: translate(-50%, -50%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* omam class end */&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=303</id>
		<title>مدیاویکی:Common.css</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Common.css&amp;diff=303"/>
		<updated>2026-11-05T18:47:52Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد سبک&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* free Persian font, for licensing details and download: http://rastikerdar.github.io/vazir-font/ */&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;;&lt;br /&gt;
  src: url(&amp;quot;https://commons.islamical.org/w/images/4/45/Islamical-vazir.woff2&amp;quot;) format(&amp;quot;woff2&amp;quot;);&lt;br /&gt;
  font-weight: 400;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-display: swap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
textarea {&lt;br /&gt;
	font-family: &amp;quot;Vazir&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#content.mw-body h1,&lt;br /&gt;
#content.mw-body h2,&lt;br /&gt;
#content.mw-body #firstHeading,&lt;br /&gt;
#content.mw-body .mw-editsection,&lt;br /&gt;
.mw-body .mw-editsection-like,&lt;br /&gt;
#content.mw-body #toc h2,&lt;br /&gt;
#content.mw-body .toc h2,&lt;br /&gt;
.vector-sticky-header-context-bar-primary {&lt;br /&gt;
  font-family: &amp;quot;Vazir&amp;quot;, &amp;quot;Iranian Serif&amp;quot;, &amp;quot;Iranian Sans&amp;quot;, Tahoma, &amp;quot;Noto Serif&amp;quot;, &amp;quot;Droid Arabic Naskh&amp;quot;, &amp;quot;DejaVu Sans&amp;quot;, serif !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=302</id>
		<title>برگه:Kayhan13220361.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=302"/>
		<updated>2026-11-05T18:45:10Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: تکمیل «پس از یکسال»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;1&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;صاحب امتیاز&lt;br /&gt;
دکتر مصطفی مصباح زاده&lt;br /&gt;
&lt;br /&gt;
مدیر&lt;br /&gt;
عبدالرحمن فرامرزی&lt;br /&gt;
&lt;br /&gt;
سال دوم - شماره ۳۶۱&lt;br /&gt;
&lt;br /&gt;
عصر ۱شنبه ۶ آذر ماه ۱۳۲۲&lt;br /&gt;
&lt;br /&gt;
تک‌شماره یکریال و نیم&lt;br /&gt;
&lt;br /&gt;
{{و|&#039;&#039;&#039;پس از یکسال&#039;&#039;&#039;}}&lt;br /&gt;
مدت یکسال از فوت مرحوم فروغی&lt;br /&gt;
(ذکاء الملک) گذشت و دیروز مراسم یادبود&lt;br /&gt;
نخستین سال فوت او منعقد گردید.&lt;br /&gt;
&lt;br /&gt;
هنگامی که بزرگان بدرود حیات&lt;br /&gt;
میگویند. خصوصا بزرگانی که سالیان&lt;br /&gt;
دراز در کشور خود زندگی علمی و اجتماعی&lt;br /&gt;
و سیاسی داشته‌اند و رسیدگی به نتیجه اعمال و&lt;br /&gt;
اقداماتشان بزودی ممکن نبوده است بازماندگان&lt;br /&gt;
میگویند باید چندی بگذرد تا جریان حوادث&lt;br /&gt;
روزگار به پیدایش حقایق کمک کند و&lt;br /&gt;
تاریخ رای و حکم قطعی خود را بگوید&lt;br /&gt;
تا بتوان بدرستی درباره آن مرد داوری&lt;br /&gt;
کرد.&lt;br /&gt;
&lt;br /&gt;
سیزده چهارده ماه قبل، هنگامی که&lt;br /&gt;
فروغی هنوز در قید حیات بود درباره‌ی&lt;br /&gt;
او سخنان مختلف گفته میشد، عده‌ای&lt;br /&gt;
طرفدار او بودند و گذشته از ستایش&lt;br /&gt;
مراتب فضلی او بدرستی و متانت سیاست&lt;br /&gt;
او نیز رأی میدادند و معتقد بودند که&lt;br /&gt;
آن مرد بهترین روش را پیش گرفته و&lt;br /&gt;
قدمی جز بصلاح کشور بر نداشته است.&lt;br /&gt;
بعضی دیگر برعکس با اذعان بمقامات&lt;br /&gt;
فضلی او سیاست او را نمی‌پسندیدند و&lt;br /&gt;
عقیده داشتند در بسیاری موارد خطا کرده&lt;br /&gt;
و بزیان کشور کار کرده است. یکعده‌ی&lt;br /&gt;
انگشت شمار دیگر که حقیقة باید&lt;br /&gt;
نام بی انصاف بر روی آنان گذاشت&lt;br /&gt;
منکر همه چیز بودند و فروغی را بصورت&lt;br /&gt;
یک مرد دانشمند نیز قبول نداشتند.&lt;br /&gt;
و نیز یکسال پیش هنگامی که نتیجه‌ی اجل&lt;br /&gt;
دفتر زندگی این مرد را برچید و خاوه&lt;br /&gt;
ناخواه فرمان طبیعت زبان مغرضین و بد&lt;br /&gt;
گویان خاموش شد باز هم عده‌ای پیدا&lt;br /&gt;
شدند که به سیاست و روش زمامداری و &lt;br /&gt;
اقدامات سیاسی و اجتماعی او با نظر بد&lt;br /&gt;
بینی نگریستند ولی دوراندیشان در مقام&lt;br /&gt;
دفاع گفتند باید یک چند بگذرد تا قضاوت&lt;br /&gt;
تاریخ معین گردد.&lt;br /&gt;
&lt;br /&gt;
شاید هیچکس تصور نمیکرد باین&lt;br /&gt;
زودی و در ظرف مدت یکسال جریان&lt;br /&gt;
اوضاع و حوادث بصورتی در آید که&lt;br /&gt;
حتی بد گویان نیز ناگزیر از اعتراف&lt;br /&gt;
باین حقیقت شوند که فروغی مردی خدمت&lt;br /&gt;
گزار و مطلع و عاقبت اندیش بوده و&lt;br /&gt;
در طریق سیاسی خوب قدم برداشته و&lt;br /&gt;
کاری کرده که کاملا بنفع کشور بوده است&lt;br /&gt;
&lt;br /&gt;
البته مرحوم فروغی به کشور خدمات&lt;br /&gt;
بسیار از هر جهة کرده است ولی هرگونه&lt;br /&gt;
خدمت دیگر که انجام یافته باشد در مقابل&lt;br /&gt;
اقدامات بموقع و صحیح دولت فروغی در مورد&lt;br /&gt;
سیاست خارجی-هرچند مهم باشد نمودی ندارد&lt;br /&gt;
&lt;br /&gt;
عملی که بعدها انجام یافت و کشور و&lt;br /&gt;
دولت احساس کردند که باید ایران وارد جنگ&lt;br /&gt;
شود و به محور اعلان جنگ دهد جزو&lt;br /&gt;
عقاید و نظریات و پیش بینی‌های مرحوم&lt;br /&gt;
فروغی بود. دفاعی که او از پیمان ما&lt;br /&gt;
متفقین میکرد و بخوبی نشان میداد که&lt;br /&gt;
این مرد کاملا آگاه به اوضاع جهان و عاقبت&lt;br /&gt;
جریان حوادث و صلاح کشور و اهل کشور&lt;br /&gt;
است و عقیده و ایمان قطعی به لزوم انعقاد این&lt;br /&gt;
پیمان و همکاری نزدیک و صمیمانهٔ ما با&lt;br /&gt;
متفقین دارد.&lt;br /&gt;
&lt;br /&gt;
ما با اطلاعی که از سابق در&lt;br /&gt;
بارهٔ فضائل اخلاقی و علمی و احساسات&lt;br /&gt;
میهن پرستی و خدمتگذاری و صواب&lt;br /&gt;
رای مرحوم فروغی داشتیم و با مشاهدهٔ&lt;br /&gt;
نتایجی که جریان حوادث ببار آورد و&lt;br /&gt;
ارزش خدمات اورا معلوم ساخت معتقدیم&lt;br /&gt;
که مرحوم فروغی یکی از رجال برجسته&lt;br /&gt;
کشور ماست و نام او در صفحات تاریخ&lt;br /&gt;
قرنها زنده خواهد ماند.&lt;br /&gt;
&lt;br /&gt;
کشور ما امروز امید و اطمینان دارد&lt;br /&gt;
که پس از ختم جنگ کنونی بهرهٔ وافی&lt;br /&gt;
بدست خواهد آورد و در ردیف ملل&lt;br /&gt;
خوشبخت و ثروتمند و بزرگ جهان قرار&lt;br /&gt;
خواهد گرفت. متفقین ما مکرر امیدهای&lt;br /&gt;
آیندهٔ ما را تامین کرده‌اند و درین میان&lt;br /&gt;
شبهه‌ای نیست که فوائدی که کشور ما از&lt;br /&gt;
این راه حاصل خواهد داشت نتیجه مستقیم روش&lt;br /&gt;
پسندیدهٔ فروغی است و بنابراین گزاف&lt;br /&gt;
نیست اگر بگوئیم تاریخ ایران و تاریخ&lt;br /&gt;
جنگ کنونی نام فروغی را همیشگی&lt;br /&gt;
نگاه خواهد داشت.&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Shahroudi&amp;diff=301</id>
		<title>کاربر:Shahroudi</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Shahroudi&amp;diff=301"/>
		<updated>2026-11-05T15:16:39Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=300</id>
		<title>برگه:Kayhan13220361.pdf/۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A8%D8%B1%DA%AF%D9%87:Kayhan13220361.pdf/%DB%B1&amp;diff=300"/>
		<updated>2026-11-05T09:57:25Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: بخشی از بخش اول&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;pagequality level=&amp;quot;1&amp;quot; user=&amp;quot;Mojtabakd&amp;quot; /&amp;gt;&amp;lt;/noinclude&amp;gt;صاحب امتیاز&lt;br /&gt;
دکتر مصطفی مصباح زاده&lt;br /&gt;
&lt;br /&gt;
مدیر&lt;br /&gt;
عبدالرحمن فرامرزی&lt;br /&gt;
&lt;br /&gt;
سال دوم - شماره ۳۶۱&lt;br /&gt;
&lt;br /&gt;
عصر ۱شنبه ۶ آذر ماه ۱۳۲۲&lt;br /&gt;
&lt;br /&gt;
تک‌شماره یکریال و نیم&lt;br /&gt;
&lt;br /&gt;
{{و|&#039;&#039;&#039;پس از یکسال&#039;&#039;&#039;}}&lt;br /&gt;
مدت یکسال از فوت مرحوم فروغی&lt;br /&gt;
(ذکاء الملک) گذشت و دیروز مراسم یادبود&lt;br /&gt;
نخستین سال فوت او منعقد گردید.&lt;br /&gt;
&lt;br /&gt;
هنگامی که بزرگان بدرود حیات&lt;br /&gt;
میگویند. خصوصا بزرگانی که سالیان&lt;br /&gt;
دراز در کشور خود زندگی علمی و اجتماعی&lt;br /&gt;
و سیاسی داشته‌اند و رسیدگی به نتیجه اعمال و&lt;br /&gt;
اقداماتشان بزودی ممکن نبوده است بازماندگان&lt;br /&gt;
میگویند باید چندی بگذرد تا جریان حوادث&lt;br /&gt;
روزگار به پیدایش حقایق کمک کند و&lt;br /&gt;
تاریخ رای و حکم قطعی خود را بگوید&lt;br /&gt;
تا بتوان بدرستی درباره آن مرد داوری&lt;br /&gt;
کرد.&lt;br /&gt;
&lt;br /&gt;
سیزده چهارده ماه قبل، هنگامی که&lt;br /&gt;
فروغی هنوز در قید حیات بود درباره‌ی&lt;br /&gt;
او سخنان مختلف گفته میشد، عده‌ای&lt;br /&gt;
طرفدار او بودند و گذشته از ستایش&lt;br /&gt;
مراتب فضلی او بدرستی و متانت سیاست&lt;br /&gt;
او نیز رأی میدادند و معتقد بودند که&lt;br /&gt;
آن مرد بهترین روش را پیش گرفته و&lt;br /&gt;
قدمی جز بصلاح کشور بر نداشته است.&lt;br /&gt;
بعضی دیگر برعکس با اذعان بمقامات&lt;br /&gt;
فضلی او سیاست او را نمی‌پسندیدند و&lt;br /&gt;
عقیده داشتند در بسیاری موارد خطا کرده&lt;br /&gt;
و بزیان کشور کار کرده است. یکعده‌ی&lt;br /&gt;
انگشت شمار دیگر که حقیقة باید&lt;br /&gt;
نام بی انصاف بر روی آنان گذاشت&lt;br /&gt;
منکر همه چیز بودند و فروغی را بصورت&lt;br /&gt;
یک مرد دانشمند نیز قبول نداشتند.&lt;br /&gt;
و نیز یکسال پیش هنگامی که نتیجه‌ی اجل&lt;br /&gt;
دفتر زندگی این مرد را برچید و خاوه&lt;br /&gt;
ناخواه فرمان طبیعت زبان مغرضین و بد&lt;br /&gt;
گویان خاموش شد باز هم عده‌ای پیدا&lt;br /&gt;
شدند که به سیاست و روش زمامداری و &lt;br /&gt;
اقدامات سیاسی و اجتماعی او با نظر بد&lt;br /&gt;
بینی نگریستند ولی دوراندیشان در مقام&lt;br /&gt;
دفاع گفتند باید یک چند بگذرد تا قضاوت&lt;br /&gt;
تاریخ معین گردد.&lt;br /&gt;
&lt;br /&gt;
شاید هیچکس تصور نمیکرد باین&lt;br /&gt;
زودی و در ظرف مدت یکسال جریان&lt;br /&gt;
اوضاع و حوادث بصورتی در آید که&lt;br /&gt;
حتی بد گویان نیز ناگزیر از اعتراف&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%DA%A9%DB%8C%D9%87%D8%A7%D9%86/%D8%B4%D9%85%D8%A7%D8%B1%D9%87_%DB%B3%DB%B6%DB%B1&amp;diff=248</id>
		<title>کیهان/شماره ۳۶۱</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%DA%A9%DB%8C%D9%87%D8%A7%D9%86/%D8%B4%D9%85%D8%A7%D8%B1%D9%87_%DB%B3%DB%B6%DB%B1&amp;diff=248"/>
		<updated>2026-11-04T21:46:16Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد شماره&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{سرصفحه&lt;br /&gt;
 | عنوان = [[کیهان|روزنامه کیهان]]&lt;br /&gt;
 | مؤلف = موسسه کیهان&lt;br /&gt;
 | قسمت = سال دوم شمارهٔ ۳۶۱ - ۱شنبه ۶ آذر ۱۳۲۲ - تکشماره یکریال و نیم&lt;br /&gt;
 | قبلی = [[../شماره ۳۶۰|شماره ۳۶۰]]&lt;br /&gt;
 | بعدی = [[../شماره ۳۶۲|شماره ۳۶۲]]&lt;br /&gt;
 | سال = ۱۳۲۲&lt;br /&gt;
 | یادداشت = &lt;br /&gt;
}}&lt;br /&gt;
[[پرونده:Kayhan.svg|وسط]]&lt;br /&gt;
{{و|{{کوچکتر|سال دوم شمارهٔ ۳۶۲ - ۱شنبه ۶ آذر ۱۳۲۲ - تکشماره یکریال و نیم}}}}&lt;br /&gt;
== اخبار و مقالات ==&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Graph&amp;diff=247</id>
		<title>پودمان:Graph</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Graph&amp;diff=247"/>
		<updated>2026-11-04T20:50:03Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- ATTENTION:	Please edit this code at https://de.wikipedia.org/wiki/Modul:Graph&lt;br /&gt;
--          	This way all wiki languages can stay in sync. Thank you!&lt;br /&gt;
--&lt;br /&gt;
--	BUGS:	X-Axis label format bug? (xAxisFormat =) https://en.wikipedia.org/wiki/Template_talk:Graph:Chart#X-Axis_label_format_bug?_(xAxisFormat_=)&lt;br /&gt;
--			linewidths - doesnt work for two values (eg 0, 1) but work if added third value of both are zeros? Same for marksStroke - probably bug in Graph extension&lt;br /&gt;
--			clamp - &amp;quot;clamp&amp;quot; used to avoid marks outside marks area, &amp;quot;clip&amp;quot; should be use instead but not working in Graph extension, see https://phabricator.wikimedia.org/T251709&lt;br /&gt;
--			Reordering even strings like integers - see https://en.wikipedia.org/wiki/Template_talk:Graph:Chart#Reordering_even_strings_like_integers&lt;br /&gt;
--	TODO:  &lt;br /&gt;
--			marks:&lt;br /&gt;
--				- line strokeDash + serialization,&lt;br /&gt;
--				- symStroke serialization&lt;br /&gt;
--				- symbolsNoFill serialization&lt;br /&gt;
--				- arbitrary SVG path symbol shape as symbolsShape argument&lt;br /&gt;
--				- annotations&lt;br /&gt;
--					- vertical / horizontal line at specific values [DONE] 2020-09-01&lt;br /&gt;
--					- rectangle shape for x,y data range&lt;br /&gt;
--				- graph type serialization (deep rebuild reqired)&lt;br /&gt;
--	     - second axis (deep rebuild required - assignment of series to one of two axies) &lt;br /&gt;
&lt;br /&gt;
-- Version History (_PLEASE UPDATE when modifying anything_):&lt;br /&gt;
--   2020-09-01 Vertical and horizontal line annotations&lt;br /&gt;
--   2020-08-08 New logic for &amp;quot;nice&amp;quot; for x axis (problem with scale when xType = &amp;quot;date&amp;quot;) and grid&lt;br /&gt;
--   2020-06-21 Serializes symbol size&lt;br /&gt;
--              transparent symbosls (from line colour) - buggy (incorrect opacity on overlap with line)&lt;br /&gt;
--              Linewidth serialized with &amp;quot;linewidths&amp;quot;&lt;br /&gt;
--              Variable symbol size and shape of symbols on line charts, default showSymbols = 2, default symbolsShape = circle, symbolsStroke = 0&lt;br /&gt;
--              p.chartDebuger(frame) for easy debug and JSON output &lt;br /&gt;
--   2020-06-07 Allow lowercase variables for use with [[Template:Wikidata list]]&lt;br /&gt;
--   2020-05-27 Map: allow specification which feature to display and changing the map center&lt;br /&gt;
--   2020-04-08 Change default showValues.fontcolor from black to persistentGrey&lt;br /&gt;
--   2020-04-06 Logarithmic scale outputs wrong axis labels when &amp;quot;nice&amp;quot;=true&lt;br /&gt;
--   2020-03-11 Allow user-defined scale types, e.g. logarithmic scale&lt;br /&gt;
--   2019-11-08 Apply color-inversion-friendliness to legend title, labels, and xGrid&lt;br /&gt;
--   2019-01-24 Allow comma-separated lists to contain values with commas&lt;br /&gt;
--   2018-10-13 Fix browser color-inversion issues via #54595d per [[mw:Template:Graph:PageViews]]&lt;br /&gt;
--   2018-09-16 Allow disabling the legend for templates&lt;br /&gt;
--   2018-09-10 Allow grid lines&lt;br /&gt;
--   2018-08-26 Use user-defined order for stacked charts&lt;br /&gt;
--   2018-02-11 Force usage of explicitely provided x minimum and/or maximum values, rotation of x labels&lt;br /&gt;
--   2017-08-08 Added showSymbols param to show symbols on line charts&lt;br /&gt;
--   2016-05-16 Added encodeTitleForPath() to help all path-based APIs graphs like pageviews&lt;br /&gt;
--   2016-03-20 Allow omitted data for charts, labels for line charts with string (ordinal) scale at point location&lt;br /&gt;
--   2016-01-28 For maps, always use wikiraw:// protocol. https:// will be disabled soon.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--add debug text to this string with eg. 	debuglog = debuglog .. &amp;quot;&amp;quot; .. &amp;quot;\n\n&amp;quot;  .. &amp;quot;- &amp;quot; .. debug.traceback() .. &amp;quot;result type: &amp;quot;.. type(result) ..  &amp;quot; result: \n\n&amp;quot; .. mw.dumpObject(result) &lt;br /&gt;
--invoke chartDebuger() to get graph JSON and this string&lt;br /&gt;
local debuglog = &amp;quot;Debug &amp;quot; .. &amp;quot;\n\n&amp;quot; &lt;br /&gt;
&lt;br /&gt;
local baseMapDirectory = &amp;quot;Module:Graph/&amp;quot;&lt;br /&gt;
local persistentGrey = &amp;quot;#54595d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local shapes = {}&lt;br /&gt;
shapes = { &lt;br /&gt;
	circle = &amp;quot;circle&amp;quot;, x= &amp;quot;M-.5,-.5L.5,.5M.5,-.5L-.5,.5&amp;quot; , square = &amp;quot;square&amp;quot;, &lt;br /&gt;
	cross = &amp;quot;cross&amp;quot;, diamond = &amp;quot;diamond&amp;quot;, triangle_up = &amp;quot;triangle-up&amp;quot;, &lt;br /&gt;
	triangle_down = &amp;quot;triangle-down&amp;quot;, triangle_right = &amp;quot;triangle-right&amp;quot;, &lt;br /&gt;
	triangle_left = &amp;quot;triangle-left&amp;quot;, &lt;br /&gt;
	banana = &amp;quot;m -0.5281,0.2880 0.0020,0.0192 m 0,0 c 0.1253,0.0543 0.2118,0.0679 0.3268,0.0252 0.1569,-0.0582 0.3663,-0.1636 0.4607,-0.3407 0.0824,-0.1547 0.1202,-0.2850 0.0838,-0.4794 l 0.0111,-0.1498 -0.0457,-0.0015 c -0.0024,0.3045 -0.1205,0.5674 -0.3357,0.7414 -0.1409,0.1139 -0.3227,0.1693 -0.5031,0.1856 m 0,0 c 0.1804,-0.0163 0.3622,-0.0717 0.5031,-0.1856 0.2152,-0.1739 0.3329,-0.4291 0.3357,-0.7414 l -0.0422,0.0079 c 0,0 -0.0099,0.1111 -0.0227,0.1644 -0.0537,0.1937 -0.1918,0.3355 -0.3349,0.4481 -0.1393,0.1089 -0.2717,0.2072 -0.4326,0.2806 l -0.0062,0.0260&amp;quot; &lt;br /&gt;
	   	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function numericArray(csv)&lt;br /&gt;
	if not csv then return end&lt;br /&gt;
	local list = mw.text.split(csv, &amp;quot;%s*,%s*&amp;quot;)&lt;br /&gt;
	local result = {}&lt;br /&gt;
	local isInteger = true&lt;br /&gt;
	for i = 1, #list do&lt;br /&gt;
		if list[i] == &amp;quot;&amp;quot; then&lt;br /&gt;
			result[i] = nil&lt;br /&gt;
		else&lt;br /&gt;
			result[i] = tonumber(list[i])&lt;br /&gt;
			if not result[i] then return end&lt;br /&gt;
			if isInteger then&lt;br /&gt;
				local int, frac = math.modf(result[i])&lt;br /&gt;
				isInteger = frac == 0.0&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    return result, isInteger&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stringArray(text)&lt;br /&gt;
	if not text then return end&lt;br /&gt;
&lt;br /&gt;
	local list = mw.text.split(mw.ustring.gsub(tostring(text), &amp;quot;\\,&amp;quot;, &amp;quot;&amp;lt;COMMA&amp;gt;&amp;quot;), &amp;quot;,&amp;quot;, true)&lt;br /&gt;
	for i = 1, #list do&lt;br /&gt;
		list[i] = mw.ustring.gsub(mw.text.trim(list[i]), &amp;quot;&amp;lt;COMMA&amp;gt;&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isTable(t) return type(t) == &amp;quot;table&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
local function copy(x)&lt;br /&gt;
	if type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		local result = {}&lt;br /&gt;
		for key, value in pairs(x) do result[key] = copy(value) end&lt;br /&gt;
		return result&lt;br /&gt;
	else&lt;br /&gt;
		return x&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.map(frame)&lt;br /&gt;
	-- map path data for geographic objects&lt;br /&gt;
	local basemap = frame.args.basemap or &amp;quot;WorldMap-iso2.json&amp;quot; -- WorldMap name and/or location may vary from wiki to wiki&lt;br /&gt;
	-- scaling factor&lt;br /&gt;
	local scale = tonumber(frame.args.scale) or 100&lt;br /&gt;
	-- map projection, see https://github.com/mbostock/d3/wiki/Geo-Projections&lt;br /&gt;
	local projection = frame.args.projection or &amp;quot;equirectangular&amp;quot;&lt;br /&gt;
	-- defaultValue for geographic objects without data&lt;br /&gt;
	local defaultValue = frame.args.defaultValue or frame.args.defaultvalue&lt;br /&gt;
	local scaleType = frame.args.scaleType or frame.args.scaletype or &amp;quot;linear&amp;quot;&lt;br /&gt;
	-- minimaler Wertebereich (nur für numerische Daten)&lt;br /&gt;
	local domainMin = tonumber(frame.args.domainMin or frame.args.domainmin)&lt;br /&gt;
	-- maximaler Wertebereich (nur für numerische Daten)&lt;br /&gt;
	local domainMax = tonumber(frame.args.domainMax or frame.args.domainmax)&lt;br /&gt;
	-- Farbwerte der Farbskala (nur für numerische Daten)&lt;br /&gt;
	local colorScale = frame.args.colorScale or frame.args.colorscale or &amp;quot;category10&amp;quot;&lt;br /&gt;
	-- show legend&lt;br /&gt;
	local legend = frame.args.legend&lt;br /&gt;
	-- the map feature to display&lt;br /&gt;
    local feature = frame.args.feature or &amp;quot;countries&amp;quot;&lt;br /&gt;
    -- map center&lt;br /&gt;
    local center = numericArray(frame.args.center)&lt;br /&gt;
	-- format JSON output&lt;br /&gt;
	local formatJson = frame.args.formatjson&lt;br /&gt;
&lt;br /&gt;
	-- map data are key-value pairs: keys are non-lowercase strings (ideally ISO codes) which need to match the &amp;quot;id&amp;quot; values of the map path data&lt;br /&gt;
	local values = {}&lt;br /&gt;
	local isNumbers = nil&lt;br /&gt;
	for name, value in pairs(frame.args) do&lt;br /&gt;
		if mw.ustring.find(name, &amp;quot;^[^%l]+$&amp;quot;) and value and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			if isNumbers == nil then isNumbers = tonumber(value) end&lt;br /&gt;
			local data = { id = name, v = value }&lt;br /&gt;
			if isNumbers then data.v = tonumber(data.v) end&lt;br /&gt;
			table.insert(values, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not defaultValue then&lt;br /&gt;
		if isNumbers then defaultValue = 0 else defaultValue = &amp;quot;silver&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create highlight scale&lt;br /&gt;
	local scales&lt;br /&gt;
	if isNumbers then&lt;br /&gt;
		if colorScale then colorScale = string.lower(colorScale) end&lt;br /&gt;
		if colorScale == &amp;quot;category10&amp;quot; or colorScale == &amp;quot;category20&amp;quot; then else colorScale = stringArray(colorScale) end&lt;br /&gt;
		scales =&lt;br /&gt;
		{&lt;br /&gt;
			{&lt;br /&gt;
				name = &amp;quot;color&amp;quot;,&lt;br /&gt;
				type = scaleType,&lt;br /&gt;
				domain = { data = &amp;quot;highlights&amp;quot;, field = &amp;quot;v&amp;quot; },&lt;br /&gt;
				range = colorScale,&lt;br /&gt;
				nice = true,&lt;br /&gt;
				zero = false&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if domainMin then scales[1].domainMin = domainMin end&lt;br /&gt;
		if domainMax then scales[1].domainMax = domainMax end&lt;br /&gt;
&lt;br /&gt;
		local exponent = string.match(scaleType, &amp;quot;pow%s+(%d+%.?%d+)&amp;quot;) -- check for exponent&lt;br /&gt;
		if exponent then&lt;br /&gt;
			scales[1].type = &amp;quot;pow&amp;quot;&lt;br /&gt;
			scales[1].exponent = exponent&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create legend&lt;br /&gt;
	if legend then&lt;br /&gt;
		legend =&lt;br /&gt;
		{&lt;br /&gt;
			{&lt;br /&gt;
				fill = &amp;quot;color&amp;quot;,&lt;br /&gt;
				offset = 120,&lt;br /&gt;
				properties =&lt;br /&gt;
				{&lt;br /&gt;
					title = { fontSize = { value = 14 } },&lt;br /&gt;
					labels = { fontSize = { value = 12 } },&lt;br /&gt;
					legend =&lt;br /&gt;
					{&lt;br /&gt;
						stroke = { value = &amp;quot;silver&amp;quot; },&lt;br /&gt;
						strokeWidth = { value = 1.5 }&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- get map url&lt;br /&gt;
	local basemapUrl&lt;br /&gt;
	if (string.sub(basemap, 1, 10) == &amp;quot;wikiraw://&amp;quot;) then&lt;br /&gt;
		basemapUrl = basemap&lt;br /&gt;
	else&lt;br /&gt;
		-- if not a (supported) url look for a colon as namespace separator. If none prepend default map directory name.&lt;br /&gt;
		if not string.find(basemap, &amp;quot;:&amp;quot;) then basemap = baseMapDirectory .. basemap end&lt;br /&gt;
		basemapUrl = &amp;quot;wikiraw:///&amp;quot; .. mw.uri.encode(mw.title.new(basemap).prefixedText, &amp;quot;PATH&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local output =&lt;br /&gt;
	{&lt;br /&gt;
		version = 2,&lt;br /&gt;
		width = 1,  -- generic value as output size depends solely on map size and scaling factor&lt;br /&gt;
		height = 1, -- ditto&lt;br /&gt;
		data =&lt;br /&gt;
		{&lt;br /&gt;
			{&lt;br /&gt;
				-- data source for the highlights&lt;br /&gt;
				name = &amp;quot;highlights&amp;quot;,&lt;br /&gt;
				values = values&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				-- data source for map paths data&lt;br /&gt;
				name = feature,&lt;br /&gt;
				url = basemapUrl,&lt;br /&gt;
				format = { type = &amp;quot;topojson&amp;quot;, feature = feature },&lt;br /&gt;
				transform =&lt;br /&gt;
				{&lt;br /&gt;
					{&lt;br /&gt;
						-- geographic transformation (&amp;quot;geopath&amp;quot;) of map paths data&lt;br /&gt;
						type = &amp;quot;geopath&amp;quot;,&lt;br /&gt;
						value = &amp;quot;data&amp;quot;,			-- data source&lt;br /&gt;
						scale = scale,&lt;br /&gt;
                        translate = { 0, 0 },&lt;br /&gt;
                        center = center,&lt;br /&gt;
						projection = projection&lt;br /&gt;
					},&lt;br /&gt;
					{&lt;br /&gt;
						-- join (&amp;quot;zip&amp;quot;) of mutiple data source: here map paths data and highlights&lt;br /&gt;
						type = &amp;quot;lookup&amp;quot;,&lt;br /&gt;
						keys = { &amp;quot;id&amp;quot; },      -- key for map paths data&lt;br /&gt;
						on = &amp;quot;highlights&amp;quot;,    -- name of highlight data source&lt;br /&gt;
						onKey = &amp;quot;id&amp;quot;,         -- key for highlight data source&lt;br /&gt;
						as = { &amp;quot;zipped&amp;quot; },    -- name of resulting table&lt;br /&gt;
						default = { v = defaultValue } -- default value for geographic objects that could not be joined&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		marks =&lt;br /&gt;
		{&lt;br /&gt;
			-- output markings (map paths and highlights)&lt;br /&gt;
			{&lt;br /&gt;
				type = &amp;quot;path&amp;quot;,&lt;br /&gt;
				from = { data = feature },&lt;br /&gt;
				properties =&lt;br /&gt;
				{&lt;br /&gt;
					enter = { path = { field = &amp;quot;layout_path&amp;quot; } },&lt;br /&gt;
					update = { fill = { field = &amp;quot;zipped.v&amp;quot; } },&lt;br /&gt;
					hover = { fill = { value = &amp;quot;darkgrey&amp;quot; } }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		legends = legend&lt;br /&gt;
	}&lt;br /&gt;
	if (scales) then&lt;br /&gt;
		output.scales = scales&lt;br /&gt;
		output.marks[1].properties.update.fill.scale = &amp;quot;color&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local flags&lt;br /&gt;
	if formatJson then flags = mw.text.JSON_PRETTY end&lt;br /&gt;
	return mw.text.jsonEncode(output, flags)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function deserializeXData(serializedX, xType, xMin, xMax)&lt;br /&gt;
	local x&lt;br /&gt;
&lt;br /&gt;
	if not xType or xType == &amp;quot;integer&amp;quot; or xType == &amp;quot;number&amp;quot; then&lt;br /&gt;
		local isInteger&lt;br /&gt;
		x, isInteger = numericArray(serializedX)&lt;br /&gt;
		if x then&lt;br /&gt;
			xMin = tonumber(xMin)&lt;br /&gt;
			xMax = tonumber(xMax)&lt;br /&gt;
			if not xType then&lt;br /&gt;
				if isInteger then xType = &amp;quot;integer&amp;quot; else xType = &amp;quot;number&amp;quot; end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if xType then error(&amp;quot;Numbers expected for parameter &#039;x&#039;&amp;quot;) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not x then&lt;br /&gt;
		x = stringArray(serializedX)&lt;br /&gt;
		if not xType then xType = &amp;quot;string&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
	return x, xType, xMin, xMax&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function deserializeYData(serializedYs, yType, yMin, yMax)&lt;br /&gt;
	local y = {}&lt;br /&gt;
	local areAllInteger = true&lt;br /&gt;
&lt;br /&gt;
	for yNum, value in pairs(serializedYs) do&lt;br /&gt;
		local yValues&lt;br /&gt;
		if not yType or yType == &amp;quot;integer&amp;quot; or yType == &amp;quot;number&amp;quot; then&lt;br /&gt;
			local isInteger&lt;br /&gt;
			yValues, isInteger = numericArray(value)&lt;br /&gt;
			if yValues then&lt;br /&gt;
				areAllInteger = areAllInteger and isInteger&lt;br /&gt;
			else&lt;br /&gt;
				if yType then&lt;br /&gt;
					error(&amp;quot;Numbers expected for parameter &#039;&amp;quot; .. name .. &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
				else&lt;br /&gt;
					return deserializeYData(serializedYs, &amp;quot;string&amp;quot;, yMin, yMax)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not yValues then yValues = stringArray(value) end&lt;br /&gt;
&lt;br /&gt;
		y[yNum] = yValues&lt;br /&gt;
	end&lt;br /&gt;
	if not yType then&lt;br /&gt;
		if areAllInteger then yType = &amp;quot;integer&amp;quot; else yType = &amp;quot;number&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
	if yType == &amp;quot;integer&amp;quot; or yType == &amp;quot;number&amp;quot; then&lt;br /&gt;
		yMin = tonumber(yMin)&lt;br /&gt;
		yMax = tonumber(yMax)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return y, yType, yMin, yMax&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convertXYToManySeries(x, y, xType, yType, seriesTitles)&lt;br /&gt;
	local data =&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;quot;chart&amp;quot;,&lt;br /&gt;
		format =&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;json&amp;quot;,&lt;br /&gt;
			parse = { x = xType, y = yType }&lt;br /&gt;
		},&lt;br /&gt;
		values = {}&lt;br /&gt;
	}&lt;br /&gt;
	for i = 1, #y do&lt;br /&gt;
		local yLen = table.maxn(y[i])&lt;br /&gt;
		for j = 1, #x do&lt;br /&gt;
			if j &amp;lt;= yLen and y[i][j] then table.insert(data.values, { series = seriesTitles[i], x = x[j], y = y[i][j] }) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convertXYToSingleSeries(x, y, xType, yType, yNames)&lt;br /&gt;
	local data = { name = &amp;quot;chart&amp;quot;, format = { type = &amp;quot;json&amp;quot;, parse = { x = xType } }, values = {} }&lt;br /&gt;
&lt;br /&gt;
	for j = 1, #y do data.format.parse[yNames[j]] = yType end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #x do&lt;br /&gt;
		local item = { x = x[i] }&lt;br /&gt;
		for j = 1, #y do item[yNames[j]] = y[j][i] end&lt;br /&gt;
&lt;br /&gt;
		table.insert(data.values, item)&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getXScale(chartType, stacked, xMin, xMax, xType, xScaleType)&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then return end&lt;br /&gt;
&lt;br /&gt;
	local xscale =&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;quot;x&amp;quot;,&lt;br /&gt;
		range = &amp;quot;width&amp;quot;,&lt;br /&gt;
		zero = false, -- do not include zero value&lt;br /&gt;
		domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;x&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	if xScaleType then xscale.type = xScaleType else xscale.type = &amp;quot;linear&amp;quot; end&lt;br /&gt;
	if xMin then xscale.domainMin = xMin end&lt;br /&gt;
	if xMax then xscale.domainMax = xMax end&lt;br /&gt;
	if xMin or xMax then&lt;br /&gt;
		xscale.clamp = true&lt;br /&gt;
		xscale.nice = false&lt;br /&gt;
	end&lt;br /&gt;
	if chartType == &amp;quot;rect&amp;quot; then&lt;br /&gt;
		xscale.type = &amp;quot;ordinal&amp;quot;&lt;br /&gt;
		if not stacked then xscale.padding = 0.2 end -- pad each bar group&lt;br /&gt;
	else &lt;br /&gt;
		if xType == &amp;quot;date&amp;quot; then &lt;br /&gt;
			xscale.type = &amp;quot;time&amp;quot;&lt;br /&gt;
		elseif xType == &amp;quot;string&amp;quot; then&lt;br /&gt;
			xscale.type = &amp;quot;ordinal&amp;quot;&lt;br /&gt;
			xscale.points = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if xType and xType ~= &amp;quot;date&amp;quot; and xScaleType ~= &amp;quot;log&amp;quot; then xscale.nice = true end -- force round numbers for x scale, but &amp;quot;log&amp;quot; and &amp;quot;date&amp;quot; scale outputs a wrong &amp;quot;nice&amp;quot; scale&lt;br /&gt;
	return xscale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getYScale(chartType, stacked, yMin, yMax, yType, yScaleType)&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then return end&lt;br /&gt;
&lt;br /&gt;
	local yscale =&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;quot;y&amp;quot;,&lt;br /&gt;
		range = &amp;quot;height&amp;quot;,&lt;br /&gt;
		-- area charts have the lower boundary of their filling at y=0 (see marks.properties.enter.y2), therefore these need to start at zero&lt;br /&gt;
		zero = chartType ~= &amp;quot;line&amp;quot;,&lt;br /&gt;
		nice = yScaleType ~= &amp;quot;log&amp;quot; -- force round numbers for y scale, but log scale outputs a wrong &amp;quot;nice&amp;quot; scale&lt;br /&gt;
	}&lt;br /&gt;
	if yScaleType then yscale.type = yScaleType else yscale.type = &amp;quot;linear&amp;quot; end&lt;br /&gt;
	if yMin then yscale.domainMin = yMin end&lt;br /&gt;
	if yMax then yscale.domainMax = yMax end&lt;br /&gt;
	if yMin or yMax then yscale.clamp = true end&lt;br /&gt;
	if yType == &amp;quot;date&amp;quot; then yscale.type = &amp;quot;time&amp;quot;&lt;br /&gt;
	elseif yType == &amp;quot;string&amp;quot; then yscale.type = &amp;quot;ordinal&amp;quot; end&lt;br /&gt;
	if stacked then&lt;br /&gt;
		yscale.domain = { data = &amp;quot;stats&amp;quot;, field = &amp;quot;sum_y&amp;quot; }&lt;br /&gt;
	else&lt;br /&gt;
		yscale.domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;y&amp;quot; }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return yscale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getColorScale(colors, chartType, xCount, yCount)&lt;br /&gt;
	if not colors then&lt;br /&gt;
		if (chartType == &amp;quot;pie&amp;quot; and xCount &amp;gt; 10) or yCount &amp;gt; 10 then colors = &amp;quot;category20&amp;quot; else colors = &amp;quot;category10&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local colorScale =&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;quot;color&amp;quot;,&lt;br /&gt;
		type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
		range = colors,&lt;br /&gt;
		domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then colorScale.domain.field = &amp;quot;x&amp;quot; end&lt;br /&gt;
	return colorScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAlphaColorScale(colors, y)&lt;br /&gt;
	local alphaScale&lt;br /&gt;
	-- if there is at least one color in the format &amp;quot;#aarrggbb&amp;quot;, create a transparency (alpha) scale&lt;br /&gt;
	if isTable(colors) then&lt;br /&gt;
		local alphas = {}&lt;br /&gt;
		local hasAlpha = false&lt;br /&gt;
		for i = 1, #colors do&lt;br /&gt;
			local a, rgb = string.match(colors[i], &amp;quot;#(%x%x)(%x%x%x%x%x%x)&amp;quot;)&lt;br /&gt;
			if a then&lt;br /&gt;
				hasAlpha = true&lt;br /&gt;
				alphas[i] = tostring(tonumber(a, 16) / 255.0)&lt;br /&gt;
				colors[i] = &amp;quot;#&amp;quot; .. rgb&lt;br /&gt;
			else&lt;br /&gt;
				alphas[i] = &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i = #colors + 1, #y do alphas[i] = &amp;quot;1&amp;quot; end&lt;br /&gt;
		if hasAlpha then alphaScale = { name = &amp;quot;transparency&amp;quot;, type = &amp;quot;ordinal&amp;quot;, range = alphas } end&lt;br /&gt;
	end&lt;br /&gt;
	return alphaScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLineScale(linewidths, chartType)&lt;br /&gt;
	local lineScale = {}&lt;br /&gt;
 &lt;br /&gt;
	lineScale =&lt;br /&gt;
    	{&lt;br /&gt;
        name = &amp;quot;line&amp;quot;,&lt;br /&gt;
        type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
        range = linewidths,&lt;br /&gt;
        domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
    	}&lt;br /&gt;
&lt;br /&gt;
	return lineScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getSymSizeScale(symSize)&lt;br /&gt;
	local SymSizeScale = {}&lt;br /&gt;
	SymSizeScale =&lt;br /&gt;
       	{&lt;br /&gt;
        name = &amp;quot;symSize&amp;quot;,&lt;br /&gt;
        type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
        range = symSize,&lt;br /&gt;
        domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	return SymSizeScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getSymShapeScale(symShape)&lt;br /&gt;
	local SymShapeScale = {}&lt;br /&gt;
	SymShapeScale =&lt;br /&gt;
       	{&lt;br /&gt;
        name = &amp;quot;symShape&amp;quot;,&lt;br /&gt;
        type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
        range = symShape,&lt;br /&gt;
        domain = { data = &amp;quot;chart&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
	return SymShapeScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getValueScale(fieldName, min, max, type)&lt;br /&gt;
	local valueScale =&lt;br /&gt;
	{&lt;br /&gt;
		name = fieldName,&lt;br /&gt;
		type = type or &amp;quot;linear&amp;quot;,&lt;br /&gt;
		domain = { data = &amp;quot;chart&amp;quot;, field = fieldName },&lt;br /&gt;
		range = { min, max }&lt;br /&gt;
	}&lt;br /&gt;
	return valueScale&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addInteractionToChartVisualisation(plotMarks, colorField, dataField)&lt;br /&gt;
	-- initial setup&lt;br /&gt;
	if not plotMarks.properties.enter then plotMarks.properties.enter = {} end&lt;br /&gt;
	plotMarks.properties.enter[colorField] = { scale = &amp;quot;color&amp;quot;, field = dataField }&lt;br /&gt;
&lt;br /&gt;
	-- action when cursor is over plot mark: highlight&lt;br /&gt;
	if not plotMarks.properties.hover then plotMarks.properties.hover = {} end&lt;br /&gt;
	plotMarks.properties.hover[colorField] = { value = &amp;quot;red&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
	-- action when cursor leaves plot mark: reset to initial setup&lt;br /&gt;
	if not plotMarks.properties.update then plotMarks.properties.update = {} end&lt;br /&gt;
	plotMarks.properties.update[colorField] = { scale = &amp;quot;color&amp;quot;, field = dataField }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPieChartVisualisation(yCount, innerRadius, outerRadius, linewidth, linecolor, radiusScale)&lt;br /&gt;
	local chartvis =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;arc&amp;quot;,&lt;br /&gt;
		from = { data = &amp;quot;chart&amp;quot;, transform = { { field = &amp;quot;y&amp;quot;, type = &amp;quot;pie&amp;quot; } } },&lt;br /&gt;
&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			enter = {&lt;br /&gt;
				innerRadius = { value = innerRadius },&lt;br /&gt;
				outerRadius = { },&lt;br /&gt;
				startAngle = { field = &amp;quot;layout_start&amp;quot; },&lt;br /&gt;
				endAngle = { field = &amp;quot;layout_end&amp;quot; },&lt;br /&gt;
				stroke = { value = linecolor or &amp;quot;white&amp;quot; },&lt;br /&gt;
				strokeWidth = { value = linewidth or 1 }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if radiusScale then&lt;br /&gt;
		chartvis.properties.enter.outerRadius.scale = radiusScale.name&lt;br /&gt;
		chartvis.properties.enter.outerRadius.field = radiusScale.domain.field&lt;br /&gt;
	else&lt;br /&gt;
		chartvis.properties.enter.outerRadius.value = outerRadius&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	addInteractionToChartVisualisation(chartvis, &amp;quot;fill&amp;quot;, &amp;quot;x&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return chartvis&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getChartVisualisation(chartType, stacked, colorField, yCount, innerRadius, outerRadius, linewidth, linecolor, alphaScale, radiusScale, lineScale, interpolate)&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then return getPieChartVisualisation(yCount, innerRadius, outerRadius, linewidth, linecolor, radiusScale) end&lt;br /&gt;
&lt;br /&gt;
	local chartvis =&lt;br /&gt;
	{&lt;br /&gt;
		type = chartType,&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			-- chart creation event handler&lt;br /&gt;
			enter =&lt;br /&gt;
			{&lt;br /&gt;
				x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
				y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	addInteractionToChartVisualisation(chartvis, colorField, &amp;quot;series&amp;quot;)&lt;br /&gt;
	if colorField == &amp;quot;stroke&amp;quot; then&lt;br /&gt;
		chartvis.properties.enter.strokeWidth = { value = linewidth or 2.5 }&lt;br /&gt;
		if type(lineScale) ==&amp;quot;table&amp;quot;  then &lt;br /&gt;
			chartvis.properties.enter.strokeWidth.value = nil&lt;br /&gt;
			chartvis.properties.enter.strokeWidth = &lt;br /&gt;
			{&lt;br /&gt;
				scale = &amp;quot;line&amp;quot;,&lt;br /&gt;
				field= &amp;quot;series&amp;quot;&lt;br /&gt;
			} &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if interpolate then chartvis.properties.enter.interpolate = { value = interpolate } end&lt;br /&gt;
&lt;br /&gt;
	if alphaScale then chartvis.properties.update[colorField .. &amp;quot;Opacity&amp;quot;] = { scale = &amp;quot;transparency&amp;quot; } end&lt;br /&gt;
	-- for bars and area charts set the lower bound of their areas&lt;br /&gt;
	if chartType == &amp;quot;rect&amp;quot; or chartType == &amp;quot;area&amp;quot; then&lt;br /&gt;
		if stacked then&lt;br /&gt;
			-- for stacked charts this lower bound is the end of the last stacking element&lt;br /&gt;
			chartvis.properties.enter.y2 = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;layout_end&amp;quot; }&lt;br /&gt;
		else&lt;br /&gt;
			--[[&lt;br /&gt;
			for non-stacking charts the lower bound is y=0&lt;br /&gt;
			TODO: &amp;quot;yscale.zero&amp;quot; is currently set to &amp;quot;true&amp;quot; for this case, but &amp;quot;false&amp;quot; for all other cases.&lt;br /&gt;
			For the similar behavior &amp;quot;y2&amp;quot; should actually be set to where y axis crosses the x axis,&lt;br /&gt;
			if there are only positive or negative values in the data ]]&lt;br /&gt;
			chartvis.properties.enter.y2 = { scale = &amp;quot;y&amp;quot;, value = 0 }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- for bar charts ...&lt;br /&gt;
	if chartType == &amp;quot;rect&amp;quot; then&lt;br /&gt;
		-- set 1 pixel width between the bars&lt;br /&gt;
		chartvis.properties.enter.width = { scale = &amp;quot;x&amp;quot;, band = true, offset = -1 }&lt;br /&gt;
		-- for multiple series the bar marking needs to use the &amp;quot;inner&amp;quot; series scale, whereas the &amp;quot;outer&amp;quot; x scale is used by the grouping&lt;br /&gt;
		if not stacked and yCount &amp;gt; 1 then&lt;br /&gt;
			chartvis.properties.enter.x.scale = &amp;quot;series&amp;quot;&lt;br /&gt;
			chartvis.properties.enter.x.field = &amp;quot;series&amp;quot;&lt;br /&gt;
			chartvis.properties.enter.width.scale = &amp;quot;series&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- stacked charts have their own (stacked) y values&lt;br /&gt;
	if stacked then chartvis.properties.enter.y.field = &amp;quot;layout_start&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	-- if there are multiple series group these together&lt;br /&gt;
	if yCount == 1 then&lt;br /&gt;
		chartvis.from = { data = &amp;quot;chart&amp;quot; }&lt;br /&gt;
	else&lt;br /&gt;
		-- if there are multiple series, connect colors to series&lt;br /&gt;
		chartvis.properties.update[colorField].field = &amp;quot;series&amp;quot;&lt;br /&gt;
		if alphaScale then chartvis.properties.update[colorField .. &amp;quot;Opacity&amp;quot;].field = &amp;quot;series&amp;quot; end&lt;br /&gt;
		&lt;br /&gt;
	    -- if there are multiple series, connect linewidths to series&lt;br /&gt;
		if chartype == &amp;quot;line&amp;quot; then&lt;br /&gt;
			chartvis.properties.update[&amp;quot;strokeWidth&amp;quot;].field = &amp;quot;series&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
		-- apply a grouping (facetting) transformation&lt;br /&gt;
		chartvis =&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;group&amp;quot;,&lt;br /&gt;
			marks = { chartvis },&lt;br /&gt;
			from =&lt;br /&gt;
			{&lt;br /&gt;
				data = &amp;quot;chart&amp;quot;,&lt;br /&gt;
				transform =&lt;br /&gt;
				{&lt;br /&gt;
					{&lt;br /&gt;
						type = &amp;quot;facet&amp;quot;,&lt;br /&gt;
						groupby = { &amp;quot;series&amp;quot; }&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		-- for stacked charts apply a stacking transformation&lt;br /&gt;
		if stacked then&lt;br /&gt;
			table.insert(chartvis.from.transform, 1, { type = &amp;quot;stack&amp;quot;, groupby = { &amp;quot;x&amp;quot; }, sortby = { &amp;quot;-_id&amp;quot; }, field = &amp;quot;y&amp;quot; } )&lt;br /&gt;
		else&lt;br /&gt;
			-- for bar charts the series are side-by-side grouped by x&lt;br /&gt;
			if chartType == &amp;quot;rect&amp;quot; then&lt;br /&gt;
				-- for bar charts with multiple series: each serie is grouped by the x value, therefore the series need their own scale within each x group&lt;br /&gt;
				local groupScale =&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;quot;series&amp;quot;,&lt;br /&gt;
					type = &amp;quot;ordinal&amp;quot;,&lt;br /&gt;
					range = &amp;quot;width&amp;quot;,&lt;br /&gt;
					domain = { field = &amp;quot;series&amp;quot; }&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				chartvis.from.transform[1].groupby = &amp;quot;x&amp;quot;&lt;br /&gt;
				chartvis.scales = { groupScale }&lt;br /&gt;
				chartvis.properties = { enter = { x = { field = &amp;quot;key&amp;quot;, scale = &amp;quot;x&amp;quot; }, width = { scale = &amp;quot;x&amp;quot;, band = true } } }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return chartvis&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTextMarks(chartvis, chartType, outerRadius, scales, radiusScale, yType, showValues)&lt;br /&gt;
	local properties&lt;br /&gt;
	if chartType == &amp;quot;rect&amp;quot; then&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			x = { scale = chartvis.properties.enter.x.scale, field = chartvis.properties.enter.x.field },&lt;br /&gt;
			y = { scale = chartvis.properties.enter.y.scale, field = chartvis.properties.enter.y.field, offset = -(tonumber(showValues.offset) or -4) },&lt;br /&gt;
			--dx = { scale = chartvis.properties.enter.x.scale, band = true, mult = 0.5 }, -- for horizontal text&lt;br /&gt;
			dy = { scale = chartvis.properties.enter.x.scale, band = true, mult = 0.5 }, -- for vertical text&lt;br /&gt;
			align = { },&lt;br /&gt;
			baseline = { value = &amp;quot;middle&amp;quot; },&lt;br /&gt;
			fill = { },&lt;br /&gt;
			angle = { value = -90 },&lt;br /&gt;
			fontSize = { value = tonumber(showValues.fontsize) or 11 }&lt;br /&gt;
		}&lt;br /&gt;
		if properties.y.offset &amp;gt;= 0 then&lt;br /&gt;
			properties.align.value = &amp;quot;right&amp;quot;&lt;br /&gt;
			properties.fill.value = showValues.fontcolor or &amp;quot;white&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			properties.align.value = &amp;quot;left&amp;quot;&lt;br /&gt;
			properties.fill.value = showValues.fontcolor or persistentGrey&lt;br /&gt;
		end&lt;br /&gt;
	elseif chartType == &amp;quot;pie&amp;quot; then&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			x = { group = &amp;quot;width&amp;quot;, mult = 0.5 },&lt;br /&gt;
			y = { group = &amp;quot;height&amp;quot;, mult = 0.5 },&lt;br /&gt;
			radius = { offset = tonumber(showValues.offset) or -4 },&lt;br /&gt;
			theta = { field = &amp;quot;layout_mid&amp;quot; },&lt;br /&gt;
			fill = { value = showValues.fontcolor or persistentGrey },&lt;br /&gt;
			baseline = { },&lt;br /&gt;
			angle = { },&lt;br /&gt;
			fontSize = { value = tonumber(showValues.fontsize) or math.ceil(outerRadius / 10) }&lt;br /&gt;
		}&lt;br /&gt;
		if (showValues.angle or &amp;quot;midangle&amp;quot;) == &amp;quot;midangle&amp;quot; then&lt;br /&gt;
			properties.align = { value = &amp;quot;center&amp;quot; }&lt;br /&gt;
			properties.angle = { field = &amp;quot;layout_mid&amp;quot;, mult = 180.0 / math.pi }&lt;br /&gt;
&lt;br /&gt;
			if properties.radius.offset &amp;gt;= 0 then&lt;br /&gt;
				properties.baseline.value = &amp;quot;bottom&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				if not showValues.fontcolor then properties.fill.value = &amp;quot;white&amp;quot; end&lt;br /&gt;
				properties.baseline.value = &amp;quot;top&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		elseif tonumber(showValues.angle) then&lt;br /&gt;
			-- qunatize scale for aligning text left on right half-circle and right on left half-circle&lt;br /&gt;
			local alignScale = { name = &amp;quot;align&amp;quot;, type = &amp;quot;quantize&amp;quot;, domainMin = 0.0, domainMax = math.pi * 2, range = { &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; } }&lt;br /&gt;
			table.insert(scales, alignScale)&lt;br /&gt;
&lt;br /&gt;
			properties.align = { scale = alignScale.name, field = &amp;quot;layout_mid&amp;quot; }&lt;br /&gt;
			properties.angle = { value = tonumber(showValues.angle) }&lt;br /&gt;
			properties.baseline.value = &amp;quot;middle&amp;quot;&lt;br /&gt;
			if not tonumber(showValues.offset) then properties.radius.offset = 4 end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if radiusScale then&lt;br /&gt;
			properties.radius.scale = radiusScale.name&lt;br /&gt;
			properties.radius.field = radiusScale.domain.field&lt;br /&gt;
		else&lt;br /&gt;
			properties.radius.value = outerRadius&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if properties then&lt;br /&gt;
		if showValues.format then&lt;br /&gt;
			local template = &amp;quot;datum.y&amp;quot;&lt;br /&gt;
			if yType == &amp;quot;integer&amp;quot; or yType == &amp;quot;number&amp;quot; then template = template .. &amp;quot;|number:&#039;&amp;quot; .. showValues.format .. &amp;quot;&#039;&amp;quot;&lt;br /&gt;
			elseif yType == &amp;quot;date&amp;quot; then template = template .. &amp;quot;|time:&amp;quot; .. showValues.format .. &amp;quot;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			properties.text = { template = &amp;quot;{{&amp;quot; .. template .. &amp;quot;}}&amp;quot; }&lt;br /&gt;
		else&lt;br /&gt;
			properties.text = { field = &amp;quot;y&amp;quot; }&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local textmarks =&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;text&amp;quot;,&lt;br /&gt;
			properties =&lt;br /&gt;
			{&lt;br /&gt;
				enter = properties&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if chartvis.from then textmarks.from = copy(chartvis.from) end&lt;br /&gt;
&lt;br /&gt;
		return textmarks&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getSymbolMarks(chartvis, symSize, symShape, symStroke, noFill, alphaScale)&lt;br /&gt;
&lt;br /&gt;
	local symbolmarks &lt;br /&gt;
	symbolmarks =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;symbol&amp;quot;,&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			enter = &lt;br /&gt;
			{&lt;br /&gt;
				x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
				y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
				strokeWidth = { value = symStroke },&lt;br /&gt;
				stroke = { scale = &amp;quot;color&amp;quot;, field = &amp;quot;series&amp;quot; },&lt;br /&gt;
				fill = { scale = &amp;quot;color&amp;quot;, field = &amp;quot;series&amp;quot; },&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if type(symShape) == &amp;quot;string&amp;quot; then &lt;br /&gt;
		symbolmarks.properties.enter.shape = { value = symShape }&lt;br /&gt;
	end&lt;br /&gt;
	if type(symShape) == &amp;quot;table&amp;quot; then &lt;br /&gt;
		symbolmarks.properties.enter.shape = { scale = &amp;quot;symShape&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
	end&lt;br /&gt;
	if type(symSize) == &amp;quot;number&amp;quot; then &lt;br /&gt;
		symbolmarks.properties.enter.size = { value = symSize }&lt;br /&gt;
	end&lt;br /&gt;
	if type(symSize) == &amp;quot;table&amp;quot; then &lt;br /&gt;
		symbolmarks.properties.enter.size = { scale = &amp;quot;symSize&amp;quot;, field = &amp;quot;series&amp;quot; }&lt;br /&gt;
	end&lt;br /&gt;
	if noFill then &lt;br /&gt;
		symbolmarks.properties.enter.fill = nil&lt;br /&gt;
	end&lt;br /&gt;
	if alphaScale then &lt;br /&gt;
		symbolmarks.properties.enter.fillOpacity = &lt;br /&gt;
		{ scale = &amp;quot;transparency&amp;quot;, field = &amp;quot;series&amp;quot; } &lt;br /&gt;
		symbolmarks.properties.enter.strokeOpacity = &lt;br /&gt;
		{ scale = &amp;quot;transparency&amp;quot;, field = &amp;quot;series&amp;quot; } &lt;br /&gt;
	end&lt;br /&gt;
	if chartvis.from then symbolmarks.from = copy(chartvis.from) end&lt;br /&gt;
    &lt;br /&gt;
	return symbolmarks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAnnoMarks(chartvis, stroke, fill, opacity)&lt;br /&gt;
&lt;br /&gt;
	local vannolines, hannolines, vannolabels, hannolabels&lt;br /&gt;
	vannolines =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;rule&amp;quot;,&lt;br /&gt;
		from = { data = &amp;quot;v_anno&amp;quot; },&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			update = &lt;br /&gt;
			{&lt;br /&gt;
				x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot; },&lt;br /&gt;
				y = { value = 0 },&lt;br /&gt;
				y2 = {  field = { group = &amp;quot;height&amp;quot; } },&lt;br /&gt;
				strokeWidth = { value = stroke },&lt;br /&gt;
				stroke = { value = persistentGrey },&lt;br /&gt;
				opacity = { value = opacity }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	vannolabels =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;text&amp;quot;,&lt;br /&gt;
		from = { data = &amp;quot;v_anno&amp;quot; },&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			update = &lt;br /&gt;
			{&lt;br /&gt;
				x = { scale = &amp;quot;x&amp;quot;, field = &amp;quot;x&amp;quot;, offset = 3 },&lt;br /&gt;
				y = {  field = { group = &amp;quot;height&amp;quot; }, offset = -3 },&lt;br /&gt;
				text = { field = &amp;quot;label&amp;quot; },&lt;br /&gt;
				baseline = { value = &amp;quot;top&amp;quot; },&lt;br /&gt;
		        angle = { value = -90 },&lt;br /&gt;
		        fill = { value = persistentGrey },&lt;br /&gt;
		        opacity = { value = opacity }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}	&lt;br /&gt;
&lt;br /&gt;
	hannolines =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;rule&amp;quot;,&lt;br /&gt;
		from = { data = &amp;quot;h_anno&amp;quot; },&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			update = &lt;br /&gt;
			{&lt;br /&gt;
				y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot; },&lt;br /&gt;
				x = { value = 0 },&lt;br /&gt;
				x2 = {  field = { group = &amp;quot;width&amp;quot; } },&lt;br /&gt;
				strokeWidth = { value = stroke },&lt;br /&gt;
				stroke = { value = persistentGrey },&lt;br /&gt;
				opacity = { value = opacity }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	hannolabels =&lt;br /&gt;
	{&lt;br /&gt;
		type = &amp;quot;text&amp;quot;,&lt;br /&gt;
		from = { data = &amp;quot;h_anno&amp;quot; },&lt;br /&gt;
		properties =&lt;br /&gt;
		{&lt;br /&gt;
			update = &lt;br /&gt;
			{&lt;br /&gt;
				y = { scale = &amp;quot;y&amp;quot;, field = &amp;quot;y&amp;quot;, offset = 3 },&lt;br /&gt;
				x = {  value = 0 , offset = 3 },&lt;br /&gt;
				text = { field = &amp;quot;label&amp;quot; },&lt;br /&gt;
				baseline = { value = &amp;quot;top&amp;quot; },&lt;br /&gt;
		        angle = { value = 0 },&lt;br /&gt;
		        fill = { value = persistentGrey },&lt;br /&gt;
		        opacity = { value = opacity }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return vannolines, vannolabels, hannolines, hannolabels&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAxes(xTitle, xAxisFormat, xAxisAngle, xType, xGrid, yTitle, yAxisFormat, yType, yGrid, chartType)&lt;br /&gt;
	local xAxis, yAxis&lt;br /&gt;
	if chartType ~= &amp;quot;pie&amp;quot; then&lt;br /&gt;
		if xType == &amp;quot;integer&amp;quot; and not xAxisFormat then xAxisFormat = &amp;quot;d&amp;quot; end&lt;br /&gt;
		xAxis =&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;x&amp;quot;,&lt;br /&gt;
			scale = &amp;quot;x&amp;quot;,&lt;br /&gt;
			title = xTitle,&lt;br /&gt;
			format = xAxisFormat,&lt;br /&gt;
			grid = xGrid&lt;br /&gt;
		}&lt;br /&gt;
		if xAxisAngle then&lt;br /&gt;
			local xAxisAlign&lt;br /&gt;
			if xAxisAngle &amp;lt; 0 then xAxisAlign = &amp;quot;right&amp;quot; else xAxisAlign = &amp;quot;left&amp;quot; end&lt;br /&gt;
			xAxis.properties =&lt;br /&gt;
			{&lt;br /&gt;
				title =&lt;br /&gt;
				{&lt;br /&gt;
					fill = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				labels =&lt;br /&gt;
				{&lt;br /&gt;
					angle = { value = xAxisAngle },&lt;br /&gt;
					align = { value = xAxisAlign },&lt;br /&gt;
					fill = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				ticks =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				axis =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey },&lt;br /&gt;
					strokeWidth = { value = 2 }&lt;br /&gt;
				},&lt;br /&gt;
				grid =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		else&lt;br /&gt;
			xAxis.properties =&lt;br /&gt;
			{&lt;br /&gt;
				title =&lt;br /&gt;
				{&lt;br /&gt;
					fill = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				labels =&lt;br /&gt;
				{&lt;br /&gt;
					fill = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				ticks =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey }&lt;br /&gt;
				},&lt;br /&gt;
				axis =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey },&lt;br /&gt;
					strokeWidth = { value = 2 }&lt;br /&gt;
				},&lt;br /&gt;
				grid =&lt;br /&gt;
				{&lt;br /&gt;
					stroke = { value = persistentGrey }&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if yType == &amp;quot;integer&amp;quot; and not yAxisFormat then yAxisFormat = &amp;quot;d&amp;quot; end&lt;br /&gt;
		yAxis =&lt;br /&gt;
		{&lt;br /&gt;
			type = &amp;quot;y&amp;quot;,&lt;br /&gt;
			scale = &amp;quot;y&amp;quot;,&lt;br /&gt;
			title = yTitle,&lt;br /&gt;
			format = yAxisFormat,&lt;br /&gt;
			grid = yGrid&lt;br /&gt;
		}&lt;br /&gt;
		yAxis.properties =&lt;br /&gt;
		{&lt;br /&gt;
			title =&lt;br /&gt;
			{&lt;br /&gt;
				fill = { value = persistentGrey }&lt;br /&gt;
			},&lt;br /&gt;
			labels =&lt;br /&gt;
			{&lt;br /&gt;
				fill = { value = persistentGrey }&lt;br /&gt;
			},&lt;br /&gt;
			ticks =&lt;br /&gt;
			{&lt;br /&gt;
				stroke = { value = persistentGrey }&lt;br /&gt;
			},&lt;br /&gt;
			axis =&lt;br /&gt;
			{&lt;br /&gt;
				stroke = { value = persistentGrey },&lt;br /&gt;
				strokeWidth = { value = 2 }&lt;br /&gt;
			},&lt;br /&gt;
			grid =&lt;br /&gt;
			{&lt;br /&gt;
				stroke = { value = persistentGrey }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return xAxis, yAxis&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLegend(legendTitle, chartType, outerRadius)&lt;br /&gt;
	local legend =&lt;br /&gt;
	{&lt;br /&gt;
		fill = &amp;quot;color&amp;quot;,&lt;br /&gt;
		stroke = &amp;quot;color&amp;quot;,&lt;br /&gt;
		title = legendTitle,&lt;br /&gt;
	}&lt;br /&gt;
	legend.properties = {&lt;br /&gt;
		title = {&lt;br /&gt;
			fill = { value = persistentGrey },&lt;br /&gt;
		},&lt;br /&gt;
		labels = {&lt;br /&gt;
			fill = { value = persistentGrey },&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then&lt;br /&gt;
		legend.properties = {&lt;br /&gt;
			-- move legend from center position to top&lt;br /&gt;
			legend = {&lt;br /&gt;
				y = { value = -outerRadius },&lt;br /&gt;
			},&lt;br /&gt;
			title = {&lt;br /&gt;
				fill = { value = persistentGrey }&lt;br /&gt;
			},&lt;br /&gt;
			labels = {&lt;br /&gt;
				fill = { value = persistentGrey },&lt;br /&gt;
			},&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	return legend&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.chart(frame)&lt;br /&gt;
	-- chart width and height&lt;br /&gt;
	local graphwidth = tonumber(frame.args.width) or 200&lt;br /&gt;
	local graphheight = tonumber(frame.args.height) or 200&lt;br /&gt;
	-- chart type&lt;br /&gt;
	local chartType = frame.args.type or &amp;quot;line&amp;quot;&lt;br /&gt;
	-- interpolation mode for line and area charts: linear, step-before, step-after, basis, basis-open, basis-closed (type=line only), bundle (type=line only), cardinal, cardinal-open, cardinal-closed (type=line only), monotone&lt;br /&gt;
	local interpolate = frame.args.interpolate&lt;br /&gt;
	-- mark colors (if no colors are given, the default 10 color palette is used)&lt;br /&gt;
	local colorString = frame.args.colors&lt;br /&gt;
	if colorString then colorString = string.lower(colorString) end&lt;br /&gt;
	local colors = stringArray(colorString)&lt;br /&gt;
	-- for line charts, the thickness of the line; for pie charts the gap between each slice&lt;br /&gt;
	local linewidth = tonumber(frame.args.linewidth)&lt;br /&gt;
	local linewidthsString = frame.args.linewidths&lt;br /&gt;
	local linewidths&lt;br /&gt;
	if linewidthsString and linewidthsString ~= &amp;quot;&amp;quot; then linewidths = numericArray(linewidthsString) or false end&lt;br /&gt;
	local linecolor = frame.args.linecolor or &#039;white&#039;&lt;br /&gt;
	-- x and y axis caption&lt;br /&gt;
	local xTitle = frame.args.xAxisTitle  or frame.args.xaxistitle&lt;br /&gt;
	local yTitle = frame.args.yAxisTitle  or frame.args.yaxistitle&lt;br /&gt;
	-- x and y value types&lt;br /&gt;
	local xType = frame.args.xType or frame.args.xtype&lt;br /&gt;
	local yType = frame.args.yType or frame.args.ytype&lt;br /&gt;
	-- override x and y axis minimum and maximum&lt;br /&gt;
	local xMin = frame.args.xAxisMin or frame.args.xaxismin&lt;br /&gt;
	local xMax = frame.args.xAxisMax or frame.args.xaxismax&lt;br /&gt;
	local yMin = frame.args.yAxisMin or frame.args.yaxismin&lt;br /&gt;
	local yMax = frame.args.yAxisMax or frame.args.yaxismax&lt;br /&gt;
	-- override x and y axis label formatting&lt;br /&gt;
	local xAxisFormat = frame.args.xAxisFormat or frame.args.xaxisformat&lt;br /&gt;
	local yAxisFormat = frame.args.yAxisFormat or frame.args.yaxisformat&lt;br /&gt;
	local xAxisAngle = tonumber(frame.args.xAxisAngle) or tonumber(frame.args.xaxisangle)&lt;br /&gt;
	-- x and y scale types&lt;br /&gt;
	local xScaleType = frame.args.xScaleType or frame.args.xscaletype &lt;br /&gt;
	local yScaleType = frame.args.yScaleType or frame.args.yscaletype  &lt;br /&gt;
-- log scale require minimum &amp;gt; 0, for now it&#039;s no possible to plot negative values on log - TODO see: https://www.mathworks.com/matlabcentral/answers/1792-log-scale-graphic-with-negative-value&lt;br /&gt;
--	if xScaleType == &amp;quot;log&amp;quot; then&lt;br /&gt;
--		if (not xMin or tonumber(xMin) &amp;lt;= 0) then xMin = 0.1 end&lt;br /&gt;
--		if not xType then xType = &amp;quot;number&amp;quot; end&lt;br /&gt;
--	end&lt;br /&gt;
--	if yScaleType == &amp;quot;log&amp;quot; then&lt;br /&gt;
--		if (not yMin or tonumber(yMin) &amp;lt;= 0) then yMin = 0.1 end&lt;br /&gt;
--		if not yType then yType = &amp;quot;number&amp;quot; end&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	-- show grid&lt;br /&gt;
	local xGrid = frame.args.xGrid or frame.args.xgrid or false&lt;br /&gt;
	local yGrid = frame.args.yGrid or frame.args.ygrid or false&lt;br /&gt;
	-- for line chart, show a symbol at each data point&lt;br /&gt;
	local showSymbols = frame.args.showSymbols or frame.args.showsymbols&lt;br /&gt;
	local symbolsShape = frame.args.symbolsShape or frame.args.symbolsshape&lt;br /&gt;
	local symbolsNoFill = frame.args.symbolsNoFill or frame.args.symbolsnofill &lt;br /&gt;
	local symbolsStroke = tonumber(frame.args.symbolsStroke or frame.args.symbolsstroke)&lt;br /&gt;
	-- show legend with given title&lt;br /&gt;
	local legendTitle = frame.args.legend&lt;br /&gt;
	-- show values as text&lt;br /&gt;
	local showValues = frame.args.showValues or frame.args.showvalues &lt;br /&gt;
	-- show v- and h-line annotations&lt;br /&gt;
	local v_annoLineString = frame.args.vAnnotatonsLine or frame.args.vannotatonsline&lt;br /&gt;
	local h_annoLineString = frame.args.hAnnotatonsLine or frame.args.hannotatonsline&lt;br /&gt;
	local v_annoLabelString = frame.args.vAnnotatonsLabel or frame.args.vannotatonslabel&lt;br /&gt;
	local h_annoLabelString = frame.args.hAnnotatonsLabel or frame.args.hannotatonslabel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- decode annotations cvs&lt;br /&gt;
	local v_annoLine, v_annoLabel, h_annoLine, h_annoLabel&lt;br /&gt;
	if v_annoLineString and v_annoLineString ~= &amp;quot;&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
		if xType == &amp;quot;number&amp;quot; or xType == &amp;quot;integer&amp;quot; then &lt;br /&gt;
		v_annoLine = numericArray(v_annoLineString)&lt;br /&gt;
&lt;br /&gt;
		else &lt;br /&gt;
			v_annoLine = stringArray(v_annoLineString)&lt;br /&gt;
&lt;br /&gt;
		end&lt;br /&gt;
		v_annoLabel = stringArray(v_annoLabelString)&lt;br /&gt;
	end&lt;br /&gt;
	if h_annoLineString and h_annoLineString ~= &amp;quot;&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
		if yType == &amp;quot;number&amp;quot; or yType == &amp;quot;integer&amp;quot; then &lt;br /&gt;
			h_annoLine = numericArray(h_annoLineString)&lt;br /&gt;
&lt;br /&gt;
		else &lt;br /&gt;
			h_annoLine = stringArray(h_annoLineString)&lt;br /&gt;
&lt;br /&gt;
		end&lt;br /&gt;
		h_annoLabel = stringArray(h_annoLabelString)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- pie chart radiuses&lt;br /&gt;
	local innerRadius = tonumber(frame.args.innerRadius) or tonumber(frame.args.innerradius) or 0&lt;br /&gt;
	local outerRadius = math.min(graphwidth, graphheight)&lt;br /&gt;
	-- format JSON output&lt;br /&gt;
	local formatJson = frame.args.formatjson&lt;br /&gt;
&lt;br /&gt;
	-- get x values&lt;br /&gt;
	local x&lt;br /&gt;
	x, xType, xMin, xMax = deserializeXData(frame.args.x, xType, xMin, xMax)&lt;br /&gt;
&lt;br /&gt;
	-- get y values (series)&lt;br /&gt;
	local yValues = {}&lt;br /&gt;
	local seriesTitles = {}&lt;br /&gt;
	for name, value in pairs(frame.args) do&lt;br /&gt;
		local yNum&lt;br /&gt;
		if name == &amp;quot;y&amp;quot; then yNum = 1 else yNum = tonumber(string.match(name, &amp;quot;^y(%d+)$&amp;quot;)) end&lt;br /&gt;
		if yNum then&lt;br /&gt;
			yValues[yNum] = value&lt;br /&gt;
			-- name the series: default is &amp;quot;y&amp;lt;number&amp;gt;&amp;quot;. Can be overwritten using the &amp;quot;y&amp;lt;number&amp;gt;Title&amp;quot; parameters.&lt;br /&gt;
			seriesTitles[yNum] = frame.args[&amp;quot;y&amp;quot; .. yNum .. &amp;quot;Title&amp;quot;] or frame.args[&amp;quot;y&amp;quot; .. yNum .. &amp;quot;title&amp;quot;] or name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local y&lt;br /&gt;
	y, yType, yMin, yMax = deserializeYData(yValues, yType, yMin, yMax)&lt;br /&gt;
&lt;br /&gt;
	-- create data tuples, consisting of series index, x value, y value&lt;br /&gt;
	local data&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; then&lt;br /&gt;
		-- for pie charts the second second series is merged into the first series as radius values&lt;br /&gt;
		data = convertXYToSingleSeries(x, y, xType, yType, { &amp;quot;y&amp;quot;, &amp;quot;r&amp;quot; })&lt;br /&gt;
	else&lt;br /&gt;
		data = convertXYToManySeries(x, y, xType, yType, seriesTitles)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- configure stacked charts&lt;br /&gt;
	local stacked = false&lt;br /&gt;
	local stats&lt;br /&gt;
	if string.sub(chartType, 1, 7) == &amp;quot;stacked&amp;quot; then&lt;br /&gt;
		chartType = string.sub(chartType, 8)&lt;br /&gt;
		if #y &amp;gt; 1 then -- ignore stacked charts if there is only one series&lt;br /&gt;
		stacked = true&lt;br /&gt;
		-- aggregate data by cumulative y values&lt;br /&gt;
		stats =&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;quot;stats&amp;quot;, source = &amp;quot;chart&amp;quot;, transform =&lt;br /&gt;
		{&lt;br /&gt;
			{&lt;br /&gt;
				type = &amp;quot;aggregate&amp;quot;,&lt;br /&gt;
				groupby = { &amp;quot;x&amp;quot; },&lt;br /&gt;
				summarize = { y = &amp;quot;sum&amp;quot; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add annotations to data&lt;br /&gt;
	local vannoData, hannoData&lt;br /&gt;
	&lt;br /&gt;
	if v_annoLine then&lt;br /&gt;
		vannoData = { name = &amp;quot;v_anno&amp;quot;, format = { type = &amp;quot;json&amp;quot;, parse = { x = xType } }, values = {} }&lt;br /&gt;
		for i = 1, #v_annoLine do&lt;br /&gt;
			local item = { x = v_annoLine[i], label = v_annoLabel[i] }&lt;br /&gt;
			table.insert(vannoData.values, item)&lt;br /&gt;
		end&lt;br /&gt;
	end	&lt;br /&gt;
	if h_annoLine then&lt;br /&gt;
		hannoData = { name = &amp;quot;h_anno&amp;quot;, format = { type = &amp;quot;json&amp;quot;, parse = { y = yType } }, values = {} }&lt;br /&gt;
		for i = 1, #h_annoLine do&lt;br /&gt;
			local item = { y = h_annoLine[i], label = h_annoLabel[i] }&lt;br /&gt;
			table.insert(hannoData.values, item)&lt;br /&gt;
		end&lt;br /&gt;
	end	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- create scales&lt;br /&gt;
	local scales = {}&lt;br /&gt;
&lt;br /&gt;
	local xscale = getXScale(chartType, stacked, xMin, xMax, xType, xScaleType)&lt;br /&gt;
	table.insert(scales, xscale)&lt;br /&gt;
	local yscale = getYScale(chartType, stacked, yMin, yMax, yType, yScaleType)&lt;br /&gt;
	table.insert(scales, yscale)&lt;br /&gt;
&lt;br /&gt;
	local colorScale = getColorScale(colors, chartType, #x, #y)&lt;br /&gt;
	table.insert(scales, colorScale)&lt;br /&gt;
&lt;br /&gt;
	local alphaScale = getAlphaColorScale(colors, y)&lt;br /&gt;
	table.insert(scales, alphaScale)&lt;br /&gt;
&lt;br /&gt;
	local lineScale&lt;br /&gt;
	if (linewidths) and (chartType == &amp;quot;line&amp;quot;) then&lt;br /&gt;
		lineScale = getLineScale(linewidths, chartType)&lt;br /&gt;
		table.insert(scales, lineScale)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local radiusScale&lt;br /&gt;
	if chartType == &amp;quot;pie&amp;quot; and #y &amp;gt; 1 then&lt;br /&gt;
		radiusScale = getValueScale(&amp;quot;r&amp;quot;, 0, outerRadius)&lt;br /&gt;
		table.insert(scales, radiusScale)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- decide if lines (strokes) or areas (fills) should be drawn&lt;br /&gt;
	local colorField&lt;br /&gt;
	if chartType == &amp;quot;line&amp;quot; then colorField = &amp;quot;stroke&amp;quot; else colorField = &amp;quot;fill&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- create chart markings&lt;br /&gt;
	local chartvis = getChartVisualisation(chartType, stacked, colorField, #y, innerRadius, outerRadius, linewidth, linecolor, alphaScale, radiusScale, lineScale, interpolate)&lt;br /&gt;
	local marks = { chartvis }&lt;br /&gt;
	local chartmarks = chartvis&lt;br /&gt;
	if chartmarks.marks then&lt;br /&gt;
		chartmarks = chartmarks.marks[1]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- text marks&lt;br /&gt;
	if showValues then&lt;br /&gt;
		if type(showValues) == &amp;quot;string&amp;quot; then -- deserialize as table&lt;br /&gt;
			local keyValues = mw.text.split(showValues, &amp;quot;%s*,%s*&amp;quot;)&lt;br /&gt;
			showValues = {}&lt;br /&gt;
			for _, kv in ipairs(keyValues) do&lt;br /&gt;
				local key, value = mw.ustring.match(kv, &amp;quot;^%s*(.-)%s*:%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
				if key then showValues[key] = value end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local textmarks = getTextMarks(chartmarks, chartType, outerRadius, scales, radiusScale, yType, showValues)&lt;br /&gt;
		if chartmarks ~= chartvis then&lt;br /&gt;
			table.insert(chartvis.marks, textmarks)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(marks, textmarks)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
    -- grids&lt;br /&gt;
    if xGrid then &lt;br /&gt;
    	if xGrid == &amp;quot;0&amp;quot; then xGrid = false&lt;br /&gt;
    	elseif xGrid == 0 then xGrid = false &lt;br /&gt;
    	elseif xGrid == &amp;quot;false&amp;quot; then xGrid = false &lt;br /&gt;
    	elseif xGrid == &amp;quot;n&amp;quot; then xGrid = false &lt;br /&gt;
    	else xGrid = true &lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    if yGrid then &lt;br /&gt;
    	if yGrid == &amp;quot;0&amp;quot; then yGrid = false&lt;br /&gt;
    	elseif yGrid == 0 then yGrid = false &lt;br /&gt;
    	elseif yGrid == &amp;quot;false&amp;quot; then yGrid = false &lt;br /&gt;
    	elseif yGrid == &amp;quot;n&amp;quot; then yGrid = false &lt;br /&gt;
    	else yGrid = true &lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	-- symbol marks&lt;br /&gt;
	if showSymbols and chartType ~= &amp;quot;rect&amp;quot; then&lt;br /&gt;
		if type(showSymbols) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			if showSymbols == &amp;quot;&amp;quot; then showSymbols = true&lt;br /&gt;
			else showSymbols = numericArray(showSymbols)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			showSymbols = tonumber(showSymbols)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- custom size&lt;br /&gt;
		local symSize&lt;br /&gt;
		if type(showSymbols) == &amp;quot;number&amp;quot; then &lt;br /&gt;
			symSize = tonumber(showSymbols*showSymbols*8.5)&lt;br /&gt;
	 	elseif type(showSymbols) == &amp;quot;table&amp;quot; then &lt;br /&gt;
	 		symSize = {}&lt;br /&gt;
	 		for k, v in pairs(showSymbols) do&lt;br /&gt;
                symSize[k]=v*v*8.5 -- &amp;quot;size&amp;quot; acc to Vega syntax is area of symbol&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
	 		symSize = 50&lt;br /&gt;
	 	end&lt;br /&gt;
		-- symSizeScale &lt;br /&gt;
	 	local symSizeScale = {}&lt;br /&gt;
		if type(symSize) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			symSizeScale = getSymSizeScale(symSize)&lt;br /&gt;
			table.insert(scales, symSizeScale)&lt;br /&gt;
		end&lt;br /&gt;
 	&lt;br /&gt;
&lt;br /&gt;
    	-- custom shape&lt;br /&gt;
    	if  stringArray(symbolsShape) and #stringArray(symbolsShape) &amp;gt; 1 then symbolsShape = stringArray(symbolsShape) end&lt;br /&gt;
    	&lt;br /&gt;
    	local symShape = &amp;quot; &amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if type(symbolsShape) == &amp;quot;string&amp;quot; and shapes[symbolsShape] then&lt;br /&gt;
			symShape = shapes[symbolsShape]&lt;br /&gt;
	 	elseif type(symbolsShape) == &amp;quot;table&amp;quot; then &lt;br /&gt;
	 		symShape = {}&lt;br /&gt;
	 		for k, v in pairs(symbolsShape) do&lt;br /&gt;
                if symbolsShape[k] and shapes[symbolsShape[k]] then &lt;br /&gt;
                	symShape[k]=shapes[symbolsShape[k]]&lt;br /&gt;
                else&lt;br /&gt;
                	symShape[k] = &amp;quot;circle&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
       	else&lt;br /&gt;
			symShape = &amp;quot;circle&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		-- symShapeScale &lt;br /&gt;
	 	local symShapeScale = {}&lt;br /&gt;
		if type(symShape) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			symShapeScale = getSymShapeScale(symShape)&lt;br /&gt;
			table.insert(scales, symShapeScale)&lt;br /&gt;
		end &lt;br /&gt;
 &lt;br /&gt;
		-- custom stroke&lt;br /&gt;
		local symStroke&lt;br /&gt;
		if (type(symbolsStroke) == &amp;quot;number&amp;quot;) then &lt;br /&gt;
			symStroke = tonumber(symbolsStroke)&lt;br /&gt;
-- TODO symStroke serialization&lt;br /&gt;
--		elseif type(symbolsStroke) == &amp;quot;table&amp;quot; then &lt;br /&gt;
--	 		symStroke = {}&lt;br /&gt;
--	 		for k, v in pairs(symbolsStroke) do&lt;br /&gt;
--                symStroke[k]=symbolsStroke[k]&lt;br /&gt;
--                		--always draw x with stroke&lt;br /&gt;
--				if symbolsShape[k] == &amp;quot;x&amp;quot; then symStroke[k] = 2.5 end&lt;br /&gt;
				--always draw x with stroke&lt;br /&gt;
--				if symbolsNoFill[k] then symStroke[k] = 2.5 end&lt;br /&gt;
--            end&lt;br /&gt;
		else &lt;br /&gt;
			symStroke = 0&lt;br /&gt;
		--always draw x with stroke&lt;br /&gt;
			if symbolsShape == &amp;quot;x&amp;quot; then symStroke = 2.5 end&lt;br /&gt;
		--always draw x with stroke&lt;br /&gt;
			if symbolsNoFill then symStroke = 2.5 end&lt;br /&gt;
	 	end 		&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--	TODO	-- symStrokeScale &lt;br /&gt;
--	 	local symStrokeScale = {}&lt;br /&gt;
--		if type(symStroke) == &amp;quot;table&amp;quot; then&lt;br /&gt;
--			symStrokeScale = getSymStrokeScale(symStroke)&lt;br /&gt;
--			table.insert(scales, symStrokeScale)&lt;br /&gt;
--		end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
		local symbolmarks = getSymbolMarks(chartmarks, symSize, symShape, symStroke, symbolsNoFill, alphaScale)&lt;br /&gt;
		if chartmarks ~= chartvis then&lt;br /&gt;
			table.insert(chartvis.marks, symbolmarks)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(marks, symbolmarks)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local vannolines, vannolabels, hannolines, hannolabels = getAnnoMarks(chartmarks, persistentGrey, persistentGrey, 0.75)&lt;br /&gt;
	if vannoData then &lt;br /&gt;
		table.insert(marks, vannolines)&lt;br /&gt;
		table.insert(marks, vannolabels)&lt;br /&gt;
	end&lt;br /&gt;
	if hannoData then&lt;br /&gt;
		table.insert(marks, hannolines)&lt;br /&gt;
		table.insert(marks, hannolabels)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
	-- axes&lt;br /&gt;
	local xAxis, yAxis = getAxes(xTitle, xAxisFormat, xAxisAngle, xType, xGrid, yTitle, yAxisFormat, yType, yGrid, chartType)&lt;br /&gt;
	&lt;br /&gt;
	-- legend&lt;br /&gt;
	local legend&lt;br /&gt;
	if legendTitle and tonumber(legendTitle) ~= 0 then legend = getLegend(legendTitle, chartType, outerRadius) end&lt;br /&gt;
	-- construct final output object&lt;br /&gt;
	local output =&lt;br /&gt;
	{&lt;br /&gt;
		version = 2,&lt;br /&gt;
		width = graphwidth,&lt;br /&gt;
		height = graphheight,&lt;br /&gt;
		data = { data },&lt;br /&gt;
		scales = scales,&lt;br /&gt;
		axes = { xAxis, yAxis },&lt;br /&gt;
		marks = marks,&lt;br /&gt;
		legends = { legend }&lt;br /&gt;
	}&lt;br /&gt;
	if vannoData then table.insert(output.data, vannoData) end&lt;br /&gt;
	if hannoData then table.insert(output.data, hannoData) end&lt;br /&gt;
	if stats then table.insert(output.data, stats) end&lt;br /&gt;
	&lt;br /&gt;
	local flags&lt;br /&gt;
	if formatJson then flags = mw.text.JSON_PRETTY end&lt;br /&gt;
	return mw.text.jsonEncode(output, flags)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.mapWrapper(frame)&lt;br /&gt;
	return p.map(frame:getParent())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.chartWrapper(frame)&lt;br /&gt;
	return p.chart(frame:getParent())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.chartDebuger(frame)&lt;br /&gt;
	return   &amp;quot;\n\nchart JSON\n &amp;quot;.. p.chart(frame) .. &amp;quot; \n\n&amp;quot; .. debuglog &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Given an HTML-encoded title as first argument, e.g. one produced with {{ARTICLEPAGENAME}},&lt;br /&gt;
-- convert it into a properly URL path-encoded string&lt;br /&gt;
-- This function is critical for any graph that uses path-based APIs, e.g. PageViews graph&lt;br /&gt;
function p.encodeTitleForPath(frame)&lt;br /&gt;
	return mw.uri.encode(mw.text.decode(mw.text.trim(frame.args[1])), &#039;PATH&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Progress_pie_chart&amp;diff=246</id>
		<title>پودمان:Progress pie chart</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Progress_pie_chart&amp;diff=246"/>
		<updated>2026-11-04T20:48:31Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {} --p stands for package&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local chart = require(&#039;Module:Graph&#039;).chart&lt;br /&gt;
&lt;br /&gt;
function p._progress_pie_chart(args)&lt;br /&gt;
	-- args&lt;br /&gt;
	local size = args.size or 120&lt;br /&gt;
	&lt;br /&gt;
	local legend&lt;br /&gt;
	if yesno(args.no_legend or &#039;no&#039;) then&lt;br /&gt;
		legend = 0&lt;br /&gt;
	else&lt;br /&gt;
		legend = args.legend or &amp;quot;Legend&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local existing_only = yesno(args.existing_only or &#039;no&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local x = &amp;quot;Validated,Proofread,Problematic,Not Proofread,Without text&amp;quot;&lt;br /&gt;
	if not existing_only then&lt;br /&gt;
		x = x .. &amp;quot;,Not yet created&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local total = tonumber(args.total) or 0&lt;br /&gt;
	local validated = tonumber(args.validated) or 0&lt;br /&gt;
	local proofread = tonumber(args.proofread) or 0&lt;br /&gt;
	local problematic = tonumber(args.problematic) or 0&lt;br /&gt;
	local not_proofread = tonumber(args.not_proofread) or 0&lt;br /&gt;
	local notext = tonumber(args.notext) or 0&lt;br /&gt;
	&lt;br /&gt;
	local statuses = {&lt;br /&gt;
		validated, proofread, problematic, not_proofread, notext&lt;br /&gt;
	}&lt;br /&gt;
	if not existing_only then&lt;br /&gt;
		table.insert(statuses, total - (validated + proofread + problematic + not_proofread + notext))&lt;br /&gt;
	end&lt;br /&gt;
	local y1 = table.concat(statuses, &amp;quot;,&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local colors = args.colors or &amp;quot;#80FF80,#FFFF80,#B0B0FF,#FFA0A0,#DDDDDD,#FFFFFF&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	-- chart&lt;br /&gt;
	local chartArgs = {&lt;br /&gt;
		width = size,&lt;br /&gt;
		height = size,&lt;br /&gt;
		[&#039;type&#039;] = &amp;quot;pie&amp;quot;,&lt;br /&gt;
		legend = legend,&lt;br /&gt;
		x = x,&lt;br /&gt;
		y1 = y1,&lt;br /&gt;
		colors = colors,&lt;br /&gt;
		linecolor = &amp;quot;#a0a0a0&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	return chart({args = chartArgs})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.progress_pie_chart(frame)&lt;br /&gt;
	return p._progress_pie_chart(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Optional_style&amp;diff=245</id>
		<title>پودمان:Optional style</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Optional_style&amp;diff=245"/>
		<updated>2026-11-04T20:47:44Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[=[&lt;br /&gt;
Simple module to construct a style attribute with an undefined number (including&lt;br /&gt;
zero) of CSS properties&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local p = {} --p stands for package&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Construct the string from the given table of property:values&lt;br /&gt;
]=]&lt;br /&gt;
function p.make_style_string(properties)&lt;br /&gt;
	&lt;br /&gt;
	local out  = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local num_processed = 0&lt;br /&gt;
	for k, v in pairs(properties) do&lt;br /&gt;
		if k ~= &#039;style&#039; and v~= &#039;&#039; then&lt;br /&gt;
			out = out .. k .. &#039;:&#039; .. v .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if properties.style ~= nil and properties.style ~= &#039;&#039; then&lt;br /&gt;
		out = out .. properties.style	&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if out == &#039;&#039; then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;style=&amp;quot;&#039; .. out .. &#039;&amp;quot;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
The main entry function from templates&lt;br /&gt;
&lt;br /&gt;
Arguments are taken from both frame and parent argument lists&lt;br /&gt;
]=]&lt;br /&gt;
function p.optional_style(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p.make_style_string(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Progress_bar&amp;diff=244</id>
		<title>پودمان:Progress bar</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Progress_bar&amp;diff=244"/>
		<updated>2026-11-04T20:46:13Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {} --p stands for package&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local make_style_string = require(&#039;Module:Optional style&#039;).make_style_string&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local error_message = require(&#039;Module:Error&#039;)[&#039;error&#039;]&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Construct a progress bar&lt;br /&gt;
]=]&lt;br /&gt;
function p._progress_bar(args)&lt;br /&gt;
	-- args&lt;br /&gt;
	local statuses = {&lt;br /&gt;
		[&#039;total&#039;] = args.total or 0,&lt;br /&gt;
		[&#039;validated&#039;] = args.validated or 0,&lt;br /&gt;
		[&#039;proofread&#039;] = args.proofread or 0,&lt;br /&gt;
		[&#039;problematic&#039;] = args.problematic or 0,&lt;br /&gt;
		[&#039;not_proofread&#039;] = args.not_proofread or args[&#039;not proofread&#039;] or args[&#039;not-proofread&#039;] or 0,&lt;br /&gt;
		[&#039;notext&#039;] = args.notext or 0&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(statuses) do&lt;br /&gt;
		if v and not tonumber(v) then&lt;br /&gt;
			return error_message({[&#039;message&#039;] = &#039;Expression error: &#039; .. k .. &#039; = &#039; .. v .. &#039; is not a number.&#039;})&lt;br /&gt;
		end&lt;br /&gt;
		statuses[k] = tonumber(v) or 0&lt;br /&gt;
		if statuses[k] &amp;lt; 0 then&lt;br /&gt;
			return error_message({[&#039;message&#039;] = &#039;Expression error: &#039; .. k .. &#039; = &#039; .. statuses[k] .. &#039; &amp;lt; 0.&#039;})&lt;br /&gt;
		end&lt;br /&gt;
		if statuses[k] &amp;gt; statuses.total then&lt;br /&gt;
			return error_message({[&#039;message&#039;] = &#039;Expression error: &#039; .. k .. &#039; = &#039; .. statuses[k] .. &#039; &amp;gt; total = &#039; .. statuses.total .. &#039;.&#039;})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if statuses.total == 0 then&lt;br /&gt;
		return error_message({[&#039;message&#039;] = &#039;Expression error: total is 0.&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local status_sum = statuses.validated + statuses.proofread + statuses.not_proofread + statuses.problematic + statuses.notext&lt;br /&gt;
	if status_sum &amp;gt; statuses.total then&lt;br /&gt;
		return error_message({[&#039;message&#039;] = &#039;Expression error: page sum = &#039; .. status_sum .. &#039; &amp;gt; total = &#039; .. statuses.total .. &#039;.&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.existing_only or &#039;no&#039;) then&lt;br /&gt;
		statuses.total = status_sum&lt;br /&gt;
		statuses.missing = 0&lt;br /&gt;
	else&lt;br /&gt;
		statuses.missing = statuses.total - status_sum&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- status info&lt;br /&gt;
	local status_info = {&lt;br /&gt;
		{[&#039;n&#039;] = statuses.validated, [&#039;id&#039;] = &#039;q4&#039;},&lt;br /&gt;
		{[&#039;n&#039;] = statuses.proofread, [&#039;id&#039;] = &#039;q3&#039;},&lt;br /&gt;
		{[&#039;n&#039;] = statuses.problematic, [&#039;id&#039;] = &#039;q2&#039;},&lt;br /&gt;
		{[&#039;n&#039;] = statuses.not_proofread, [&#039;id&#039;] = &#039;q1&#039;},&lt;br /&gt;
		{[&#039;n&#039;] = statuses.notext, [&#039;id&#039;] = &#039;q0&#039;},&lt;br /&gt;
		{[&#039;n&#039;] = statuses.missing, [&#039;id&#039;] = &#039;missing&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	-- construct table params&lt;br /&gt;
	local title = &amp;quot;title = &#039;&amp;quot; .. statuses.validated .. &amp;quot; برگهٔ هم‌سنجی‌شده، &amp;quot; .. statuses.proofread .. &amp;quot; برگهٔ نمونه‌خوانی‌شده، &amp;quot; .. statuses.problematic .. &amp;quot; برگهٔ مشکل‌دار ، &amp;quot; .. statuses.not_proofread .. &amp;quot; برگهٔ نمونه‌خوانی‌نشده، و &amp;quot; .. statuses.notext .. &amp;quot; برگهٔ بدون متن (&amp;quot; .. statuses.total .. &amp;quot; برگه در فهرست)&#039;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	local data_table = {&amp;quot;data-total=&#039;&amp;quot; .. statuses.total .. &amp;quot;&#039;&amp;quot;}&lt;br /&gt;
	for k, v in pairs(status_info) do&lt;br /&gt;
		table.insert(data_table, &amp;quot;data-&amp;quot; .. v[&#039;id&#039;] .. &amp;quot;=&#039;&amp;quot; .. v[&#039;n&#039;] .. &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local datas = table.concat(data_table, &amp;quot; &amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local style = make_style_string({[&#039;height&#039;] = args.height, [&#039;max-width&#039;] = args.width})&lt;br /&gt;
	&lt;br /&gt;
	-- construct table rows&lt;br /&gt;
	local row_table = {}&lt;br /&gt;
	for k, v in pairs(status_info) do&lt;br /&gt;
		if v[&#039;n&#039;] &amp;gt; 0 then&lt;br /&gt;
			table.insert(row_table, &amp;quot;&amp;lt;td class=&#039;wst-progress-bar-&amp;quot; .. v[&#039;id&#039;] .. &amp;quot;&#039; style=&#039;width:&amp;quot; .. 100 * v[&#039;n&#039;] / statuses.total .. &amp;quot;%;&#039;&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local rows = table.concat(row_table)&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;&amp;lt;table class=&#039;wst-progress-bar&#039; &amp;quot; .. title .. &amp;quot; &amp;quot; .. datas .. &amp;quot; &amp;quot; .. style .. &amp;quot;&amp;gt;&amp;quot; .. &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; .. rows .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
For calling from template&lt;br /&gt;
]=]&lt;br /&gt;
function p.progress_bar(frame)&lt;br /&gt;
	return p._progress_bar(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Error&amp;diff=243</id>
		<title>پودمان:Error</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Error&amp;diff=243"/>
		<updated>2026-11-04T20:45:36Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{error}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function _error(args)&lt;br /&gt;
    local tag = mw.ustring.lower(tostring(args.tag))&lt;br /&gt;
&lt;br /&gt;
    -- Work out what html tag we should use.&lt;br /&gt;
    if not (tag == &#039;p&#039; or tag == &#039;span&#039; or tag == &#039;div&#039;) then&lt;br /&gt;
        tag = &#039;strong&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Generate the html.&lt;br /&gt;
    return tostring(mw.html.create(tag)&lt;br /&gt;
        :addClass(&#039;error&#039;)&lt;br /&gt;
        :wikitext(tostring(args.message or args[1] or error(&#039;no message specified&#039;, 2)))&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.error(frame)&lt;br /&gt;
    local args&lt;br /&gt;
    if type(frame.args) == &#039;table&#039; then&lt;br /&gt;
        -- We&#039;re being called via #invoke. The args are passed through to the module&lt;br /&gt;
        -- from the template page, so use the args that were passed into the template.&lt;br /&gt;
        args = frame.args&lt;br /&gt;
    else&lt;br /&gt;
        -- We&#039;re being called from another module or from the debug console, so assume&lt;br /&gt;
        -- the args are passed in directly.&lt;br /&gt;
        args = frame&lt;br /&gt;
    end&lt;br /&gt;
    -- if the message parameter is present but blank, change it to nil so that Lua will&lt;br /&gt;
    -- consider it false.&lt;br /&gt;
    if args.message == &amp;quot;&amp;quot; then&lt;br /&gt;
        args.message = nil&lt;br /&gt;
    end&lt;br /&gt;
    return _error(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_progress&amp;diff=242</id>
		<title>پودمان:Index progress</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_progress&amp;diff=242"/>
		<updated>2026-11-04T20:45:10Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
This is a module to extract data from the ProofreadPage Lua API and feed it into a progress bar&lt;br /&gt;
]=]&lt;br /&gt;
local p = {} --p stands for package&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local proofreadPage = require(&#039;mw.ext.proofreadPage&#039;)&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local error_message = require(&#039;Module:Error&#039;)[&#039;error&#039;]&lt;br /&gt;
local progress_bar = require(&#039;Module:Progress bar&#039;)._progress_bar&lt;br /&gt;
local progress_pie_chart = require(&#039;Module:Progress pie chart&#039;)._progress_pie_chart&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Map ProofreadPage Lua index progress to progress_bar&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
function p.bar(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args or not args[1] then&lt;br /&gt;
		return error_message({&#039;[[Module:Index progress]] error: no index provided&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local idx = args[1]:gsub(&#039;^Index:&#039;, &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local index = proofreadPage.newIndex(idx)&lt;br /&gt;
	if not index then&lt;br /&gt;
		return error_message({&#039;[[Module:Index progress]] error: index not found&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local barArgs = {&lt;br /&gt;
		[&#039;total&#039;] = index.pageCount,&lt;br /&gt;
		[&#039;notext&#039;] = index:pagesWithLevel(0),&lt;br /&gt;
		[&#039;not_proofread&#039;] = index:pagesWithLevel(1),&lt;br /&gt;
		[&#039;problematic&#039;] = index:pagesWithLevel(2),&lt;br /&gt;
		[&#039;proofread&#039;] = index:pagesWithLevel(3),&lt;br /&gt;
		[&#039;validated&#039;] = index:pagesWithLevel(4),&lt;br /&gt;
		[&#039;height&#039;] = args.height,&lt;br /&gt;
		[&#039;width&#039;] = args.width,&lt;br /&gt;
		[&#039;existing_only&#039;] = args.existing_only&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return progress_bar(barArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Map ProofreadPage Lua index progress to progress_pie_chart and return the expanded template&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
function p.pie(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args or not args[1] then&lt;br /&gt;
		return error_message({&#039;[[Module:Index progress]] error: no index provided&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local idx = args[1]:gsub(&#039;^Index:&#039;, &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local index = proofreadPage.newIndex(idx)&lt;br /&gt;
	if not index then&lt;br /&gt;
		return error_message({&#039;[[Module:Index progress]] error: index not found&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local pieArgs = {&lt;br /&gt;
		[&#039;total&#039;] = index.pageCount,&lt;br /&gt;
		[&#039;notext&#039;] = index:pagesWithLevel(0),&lt;br /&gt;
		[&#039;not_proofread&#039;] = index:pagesWithLevel(1),&lt;br /&gt;
		[&#039;problematic&#039;] = index:pagesWithLevel(2),&lt;br /&gt;
		[&#039;proofread&#039;] = index:pagesWithLevel(3),&lt;br /&gt;
		[&#039;validated&#039;] = index:pagesWithLevel(4),&lt;br /&gt;
		[&#039;existing_only&#039;] = args.existing_only,&lt;br /&gt;
		[&#039;no_legend&#039;] = args.no_legend,&lt;br /&gt;
		[&#039;size&#039;] = args.size&lt;br /&gt;
	}&lt;br /&gt;
	return progress_pie_chart(pieArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Progress_bar/styles.css&amp;diff=241</id>
		<title>الگو:Progress bar/styles.css</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Progress_bar/styles.css&amp;diff=241"/>
		<updated>2026-11-04T20:43:23Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد الگو&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.wst-progress-bar {&lt;br /&gt;
	border-spacing:0;&lt;br /&gt;
	border:1px solid grey;&lt;br /&gt;
	height:15px;&lt;br /&gt;
	width:100%;&lt;br /&gt;
	border-radius:3px;&lt;br /&gt;
	line-height:0;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar td {&lt;br /&gt;
	padding:0;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-q0 {&lt;br /&gt;
	background-color:#ddd;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-q1 {&lt;br /&gt;
	background-color:#ffa0a0;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-q2 {&lt;br /&gt;
	background-color:#b0b0ff;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-q3 {&lt;br /&gt;
	background-color:#ffe867;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-q4 {&lt;br /&gt;
	background-color:#90ff90;&lt;br /&gt;
}&lt;br /&gt;
.wst-progress-bar .wst-progress-bar-missing {&lt;br /&gt;
	background-color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* skin overrides */&lt;br /&gt;
body.skin-minerva .wst-progress-bar {&lt;br /&gt;
	margin:0;&lt;br /&gt;
	display:table;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%86%D9%88%D8%A7%D8%B1_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA&amp;diff=240</id>
		<title>الگو:نوار پیشرفت</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%86%D9%88%D8%A7%D8%B1_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA&amp;diff=240"/>
		<updated>2026-11-04T20:42:55Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد الگو&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Progress bar/styles.css&amp;quot; /&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:Index progress|bar}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_%D9%81%D9%87%D8%B1%D8%B3%D8%AA&amp;diff=239</id>
		<title>الگو:وضعیت فهرست</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_%D9%81%D9%87%D8%B1%D8%B3%D8%AA&amp;diff=239"/>
		<updated>2026-11-04T20:38:35Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد الگو&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;background-color:#eeeeff; width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نیازمند تعیین وضعیت پیشرفت|وضعیت نامشخص]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نیازمند رسیدگی به پرونده|منتظر رسیدگی به پرونده]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نیازمند بازسازی پرونده|منتظر بازسازی]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نیازمند نویسه‌خوان|منتظر نویسه‌خوان]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نیازمند همتایابی و جداسازی|منتظر همتایابی و جداسازی]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نمونه‌خوانی‌نشده|منتظر نمونه‌خوانی]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار نمونه‌خوانی‌شده|منتطر هم‌سنجی]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:2px;&amp;quot;&amp;gt;[[:رده:آثار هم‌سنج‌شده|هم‌سنج‌شده]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[رده:فهرست]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%B1%D8%AF%D9%87:%D8%A2%D8%AB%D8%A7%D8%B1_%D9%86%DB%8C%D8%A7%D8%B2%D9%85%D9%86%D8%AF_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87&amp;diff=238</id>
		<title>رده:آثار نیازمند رسیدگی به پرونده</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%B1%D8%AF%D9%87:%D8%A2%D8%AB%D8%A7%D8%B1_%D9%86%DB%8C%D8%A7%D8%B2%D9%85%D9%86%D8%AF_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87&amp;diff=238"/>
		<updated>2026-11-04T20:37:57Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد رده&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{وضعیت فهرست}}&lt;br /&gt;
برگ‌های پرونده‌های مربوط به آثار موجود در این رده هنوز مورد بررسی قرار نگرفته‌اند و ممکن است دارای برگ‌های جاافتاده یا مشکل‌دار باشند. این آثار باید قبل از نمونه‌خوانی مورد بررسی قرار گیرند و با استفاده از برچسب &amp;lt;nowiki&amp;gt;&amp;lt;pagelist /&amp;gt;&amp;lt;/nowiki&amp;gt; در فیلد «چگونگی نمایش برگه‌ها» در صفحهٔ فهرست، ترتیب برگه‌ها مشخص شود. حتماً قبل از نمونه‌خوانی برگ‌ها را مرتب کنید تا از درستی نسخه‌ای که در دست دارید اطمینان پیدا کنید.&lt;br /&gt;
&lt;br /&gt;
برای دیدن توضیحات بیشتر [[راهنما:درون‌مایه|صفحات راهنما]] را ببینید.&lt;br /&gt;
&lt;br /&gt;
برای این که یک فهرست را در این رده قرار دهید از حرف «X» در فیلد پیشرفت استفاده کنید.&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%81%D9%87%D8%B1%D8%B3%D8%AA:Kayhan13220361.pdf&amp;diff=237</id>
		<title>فهرست:Kayhan13220361.pdf</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%81%D9%87%D8%B1%D8%B3%D8%AA:Kayhan13220361.pdf&amp;diff=237"/>
		<updated>2026-11-04T20:37:06Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد فهرست&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:MediaWiki:Proofreadpage_index_template&lt;br /&gt;
|wikidata_item=&lt;br /&gt;
|Title=کیهان/شماره ۳۶۱&lt;br /&gt;
|Subtitle=&lt;br /&gt;
|Volume=&lt;br /&gt;
|Issue=&lt;br /&gt;
|Edition=&lt;br /&gt;
|Author=&lt;br /&gt;
|Foreword_Author=&lt;br /&gt;
|Translator=&lt;br /&gt;
|Editor=&lt;br /&gt;
|Illustrator=&lt;br /&gt;
|Lyricist=&lt;br /&gt;
|Composer=&lt;br /&gt;
|Singer=&lt;br /&gt;
|Publisher=انتشارات روزنامهٔ کیهان&lt;br /&gt;
|Address=&lt;br /&gt;
|Printer=&lt;br /&gt;
|Year=1322&lt;br /&gt;
|Source=pdf&lt;br /&gt;
|Image=1&lt;br /&gt;
|Progress=X&lt;br /&gt;
|Pages=&amp;lt;pagelist /&amp;gt;&lt;br /&gt;
|Volumes=&lt;br /&gt;
|Remarks=&lt;br /&gt;
|Notes=&lt;br /&gt;
|Header=&lt;br /&gt;
|Footer=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=236</id>
		<title>مدیاویکی:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=236"/>
		<updated>2026-11-04T20:34:20Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح پیوندها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getEditorContents() {&lt;br /&gt;
		return $(&#039;#wpTextbox1&#039;).textSelection(&#039;getContents&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setEditorContents(value) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;setContents&#039;, value);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function insertTags(pre, post, sample) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {&lt;br /&gt;
			pre: pre || &#039;&#039;,&lt;br /&gt;
			peri: sample || &#039;&#039;,&lt;br /&gt;
			post: post || &#039;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fetch a page&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Save a page&lt;br /&gt;
	&lt;br /&gt;
	function savePage(title, text, summary) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			title: title,&lt;br /&gt;
			text: text,&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			nocreate: &#039;&#039;,&lt;br /&gt;
			minor: &#039;&#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&#039;csrfToken&#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Load and save a page&lt;br /&gt;
	&lt;br /&gt;
	function loadSavePage(editorDelegate, summary) {&lt;br /&gt;
		return loadPage(mw.config.get(&#039;wgPageName&#039;)).then(function (text) {&lt;br /&gt;
			return savePage(mw.config.get(&#039;wgPageName&#039;), editorDelegate(text), summary);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
		mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
		!mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
		$.when($.ready, mw.loader.using(&#039;jquery.ui&#039;)).then(function () {&lt;br /&gt;
			$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
			if ($(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length !== 0 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 6 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 8) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var interwikiFix = false;&lt;br /&gt;
			if (!$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp; $(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp; $(&#039;.wbc-editpage&#039;).length) {&lt;br /&gt;
				interwikiFix = true;&lt;br /&gt;
			}&lt;br /&gt;
			$(mw.util.addPortletLink(&#039;p-views&#039;, &#039;#&#039;, interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;, &#039;ca-abar-abzar&#039;, interwikiFix ? &#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; : &#039;ابزار پیشرفتهٔ ویرایش متن&#039;)).click(function (e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				$(&lt;br /&gt;
					&#039;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟&amp;lt;/h6&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید &amp;lt;b&amp;gt;زیرا مسئولیت تغییرات ابرابزار با شماست!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				).dialog({&lt;br /&gt;
					modal: true,&lt;br /&gt;
					title: &#039;ابرابزار&#039;,&lt;br /&gt;
					resizable: false,&lt;br /&gt;
					buttons: {&lt;br /&gt;
						&#039;بله&#039;: function () {&lt;br /&gt;
							loadSavePage(&lt;br /&gt;
								persianWikiTools.superTool,&lt;br /&gt;
								&#039;/&#039; + &#039;* ویرایش به وسیلهٔ [[&#039; + (mw.config.get(&#039;wgServerName&#039;) !== &#039;fa.wikipedia.org&#039; ? &#039;:w:fa:&#039; : &#039;&#039;) + &#039;وپ:ابرابزار|ابرابزار]] *&#039; + &#039;/&#039;&lt;br /&gt;
							).then(function (data) {&lt;br /&gt;
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
								if (interwikiFix) {&lt;br /&gt;
									$.get(&#039;//tools.wmflabs.org/dexbot/interwikidata.php&#039;, { page: mw.config.get(&#039;wgPageName&#039;) })&lt;br /&gt;
										.then(function () {}, function () {});&lt;br /&gt;
								}&lt;br /&gt;
								//اجرای کدهای ربات&lt;br /&gt;
								botworks.trigFillcat();&lt;br /&gt;
								botworks.trigMissedFileUpload();&lt;br /&gt;
								botworks.trigMissedRef();&lt;br /&gt;
								if (data.error) {&lt;br /&gt;
									mw.notify(&#039;ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: &#039; + data.error.info);&lt;br /&gt;
								} else if (data.edit &amp;amp;&amp;amp; data.edit.result === &#039;Success&#039;) {&lt;br /&gt;
									if (data.edit.nochange !== undefined) {&lt;br /&gt;
										mw.notify(&#039;تغییری در صفحه ایجاد نشد.&#039;);&lt;br /&gt;
									} else {&lt;br /&gt;
										mw.notify(&#039;ویرایش با موفقیت انجام پذیرفت&#039;);&lt;br /&gt;
										// Loading diff page&lt;br /&gt;
										var diffUrl = new URL(&lt;br /&gt;
    mw.config.get(&#039;wgScript&#039;),&lt;br /&gt;
    window.location.href&lt;br /&gt;
);&lt;br /&gt;
diffUrl.searchParams.set(&#039;title&#039;, mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
diffUrl.searchParams.set(&#039;diff&#039;, data.edit.newrevid);&lt;br /&gt;
window.location = diffUrl.href;&lt;br /&gt;
									}&lt;br /&gt;
								} else {&lt;br /&gt;
									mw.notify(&#039;ویرایش در صفحه موفقیت\u200cآمیر نبود.&#039;);&lt;br /&gt;
								}&lt;br /&gt;
							}, function (error) {&lt;br /&gt;
								mw.notify(error);&lt;br /&gt;
							});&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						},&lt;br /&gt;
						&#039;خیر&#039;: function () {&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
					close: function () {&lt;br /&gt;
						$(this).remove();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت ویرایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		if (summaryText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var summary = $(&#039;.editOptions #wpSummary&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().indexOf(&#039;*/ &#039;) &amp;gt; -1) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
				text: alt&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var $editor, txtarea, range, startPos, endPos, selText, replacement;&lt;br /&gt;
&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			$editor = $(&#039;#wpTextbox1&#039;);&lt;br /&gt;
			if (!$editor.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selText = $editor.textSelection(&#039;getSelection&#039;);&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				$editor.textSelection(&#039;replaceSelection&#039;, callback(selText));&lt;br /&gt;
			} else {&lt;br /&gt;
				$editor.textSelection(&lt;br /&gt;
					&#039;setContents&#039;,&lt;br /&gt;
					callback($editor.textSelection(&#039;getContents&#039;))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		if (!txtarea) return;&lt;br /&gt;
&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (&lt;br /&gt;
			typeof txtarea.selectionStart === &#039;number&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			typeof txtarea.selectionEnd === &#039;number&#039;&lt;br /&gt;
		) {&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				replacement = callback(selText);&lt;br /&gt;
				txtarea.value =&lt;br /&gt;
					txtarea.value.substring(0, startPos) +&lt;br /&gt;
					replacement +&lt;br /&gt;
					txtarea.value.substring(endPos);&lt;br /&gt;
				txtarea.selectionStart = startPos + replacement.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			txtarea.value = callback(txtarea.value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		/* برداشتن پیوند تاریخ‌ها */&lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا */&lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی */&lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{ویکی\u200cسازی}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* بدون منبع */&lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{بدون منبع}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف سریع */&lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c1/Button_delete_vote.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف زماندار */&lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* منبع تصویر نامعلوم */&lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم */&lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تمیزکاری */&lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{تمیزکاری}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اخطار نگاره */&lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر مشکوک */&lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{حق تکثیر مشکوک}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* نقض حق تکثیر */&lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* لحن نامناسب */&lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{لحن نامناسب}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var $targets = $(&lt;br /&gt;
				&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor, &#039; +&lt;br /&gt;
				&#039;.cm-editor, .cm-editor .cm-content&#039;&lt;br /&gt;
			);&lt;br /&gt;
			var $active = $(&lt;br /&gt;
				&#039;.cm-editor .cm-content:visible, #wpTextbox1:visible, &#039; +&lt;br /&gt;
				&#039;[name=wpNewTitleMain]:visible, .ace_editor:visible&#039;&lt;br /&gt;
			).first();&lt;br /&gt;
&lt;br /&gt;
			if (!$active.length) {&lt;br /&gt;
				$active = $targets.first();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var direction = $active.css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;;&lt;br /&gt;
			$targets.css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: direction&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح */&lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ملزومات مقاله */&lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* خوشامدید */&lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:خوشامدید|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا */&lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/6/6a/Button_sup_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس پایین */&lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/aa/Button_sub_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تغییرمسیر */&lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.persianSortText);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! */&lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(getEditorContents().trimRight() + &#039;\n:{{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);&lt;br /&gt;
   /* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(function () {&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
	            }));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($(&#039;#movepage&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=235</id>
		<title>مدیاویکی:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=235"/>
		<updated>2026-11-04T20:17:41Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح پیوندها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getEditorContents() {&lt;br /&gt;
		return $(&#039;#wpTextbox1&#039;).textSelection(&#039;getContents&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setEditorContents(value) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;setContents&#039;, value);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function insertTags(pre, post, sample) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {&lt;br /&gt;
			pre: pre || &#039;&#039;,&lt;br /&gt;
			peri: sample || &#039;&#039;,&lt;br /&gt;
			post: post || &#039;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fetch a page&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Save a page&lt;br /&gt;
	&lt;br /&gt;
	function savePage(title, text, summary) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			title: title,&lt;br /&gt;
			text: text,&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			nocreate: &#039;&#039;,&lt;br /&gt;
			minor: &#039;&#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&#039;csrfToken&#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Load and save a page&lt;br /&gt;
	&lt;br /&gt;
	function loadSavePage(editorDelegate, summary) {&lt;br /&gt;
		return loadPage(mw.config.get(&#039;wgPageName&#039;)).then(function (text) {&lt;br /&gt;
			return savePage(mw.config.get(&#039;wgPageName&#039;), editorDelegate(text), summary);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
		mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
		!mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
		$.when($.ready, mw.loader.using(&#039;jquery.ui&#039;)).then(function () {&lt;br /&gt;
			$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
			if ($(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length !== 0 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 6 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 8) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var interwikiFix = false;&lt;br /&gt;
			if (!$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp; $(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp; $(&#039;.wbc-editpage&#039;).length) {&lt;br /&gt;
				interwikiFix = true;&lt;br /&gt;
			}&lt;br /&gt;
			$(mw.util.addPortletLink(&#039;p-views&#039;, &#039;#&#039;, interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;, &#039;ca-abar-abzar&#039;, interwikiFix ? &#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; : &#039;ابزار پیشرفتهٔ ویرایش متن&#039;)).click(function (e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				$(&lt;br /&gt;
					&#039;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟&amp;lt;/h6&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید &amp;lt;b&amp;gt;زیرا مسئولیت تغییرات ابرابزار با شماست!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				).dialog({&lt;br /&gt;
					modal: true,&lt;br /&gt;
					title: &#039;ابرابزار&#039;,&lt;br /&gt;
					resizable: false,&lt;br /&gt;
					buttons: {&lt;br /&gt;
						&#039;بله&#039;: function () {&lt;br /&gt;
							loadSavePage(&lt;br /&gt;
								persianWikiTools.superTool,&lt;br /&gt;
								&#039;/&#039; + &#039;* ویرایش به وسیلهٔ [[&#039; + (mw.config.get(&#039;wgServerName&#039;) !== &#039;fa.wikipedia.org&#039; ? &#039;:w:fa:&#039; : &#039;&#039;) + &#039;وپ:ابرابزار|ابرابزار]] *&#039; + &#039;/&#039;&lt;br /&gt;
							).then(function (data) {&lt;br /&gt;
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
								if (interwikiFix) {&lt;br /&gt;
									$.get(&#039;//tools.wmflabs.org/dexbot/interwikidata.php&#039;, { page: mw.config.get(&#039;wgPageName&#039;) })&lt;br /&gt;
										.then(function () {}, function () {});&lt;br /&gt;
								}&lt;br /&gt;
								//اجرای کدهای ربات&lt;br /&gt;
								botworks.trigFillcat();&lt;br /&gt;
								botworks.trigMissedFileUpload();&lt;br /&gt;
								botworks.trigMissedRef();&lt;br /&gt;
								if (data.error) {&lt;br /&gt;
									mw.notify(&#039;ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: &#039; + data.error.info);&lt;br /&gt;
								} else if (data.edit &amp;amp;&amp;amp; data.edit.result === &#039;Success&#039;) {&lt;br /&gt;
									if (data.edit.nochange !== undefined) {&lt;br /&gt;
										mw.notify(&#039;تغییری در صفحه ایجاد نشد.&#039;);&lt;br /&gt;
									} else {&lt;br /&gt;
										mw.notify(&#039;ویرایش با موفقیت انجام پذیرفت&#039;);&lt;br /&gt;
										// Loading diff page&lt;br /&gt;
										var diffUrl = new URL(&lt;br /&gt;
    mw.config.get(&#039;wgScript&#039;),&lt;br /&gt;
    window.location.href&lt;br /&gt;
);&lt;br /&gt;
diffUrl.searchParams.set(&#039;title&#039;, mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
diffUrl.searchParams.set(&#039;diff&#039;, data.edit.newrevid);&lt;br /&gt;
window.location = diffUrl.href;&lt;br /&gt;
									}&lt;br /&gt;
								} else {&lt;br /&gt;
									mw.notify(&#039;ویرایش در صفحه موفقیت\u200cآمیر نبود.&#039;);&lt;br /&gt;
								}&lt;br /&gt;
							}, function (error) {&lt;br /&gt;
								mw.notify(error);&lt;br /&gt;
							});&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						},&lt;br /&gt;
						&#039;خیر&#039;: function () {&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
					close: function () {&lt;br /&gt;
						$(this).remove();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت ویرایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		if (summaryText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var summary = $(&#039;.editOptions #wpSummary&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().indexOf(&#039;*/ &#039;) &amp;gt; -1) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
				text: alt&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var $editor, txtarea, range, startPos, endPos, selText, replacement;&lt;br /&gt;
&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			$editor = $(&#039;#wpTextbox1&#039;);&lt;br /&gt;
			if (!$editor.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selText = $editor.textSelection(&#039;getSelection&#039;);&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				$editor.textSelection(&#039;replaceSelection&#039;, callback(selText));&lt;br /&gt;
			} else {&lt;br /&gt;
				$editor.textSelection(&lt;br /&gt;
					&#039;setContents&#039;,&lt;br /&gt;
					callback($editor.textSelection(&#039;getContents&#039;))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		if (!txtarea) return;&lt;br /&gt;
&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (&lt;br /&gt;
			typeof txtarea.selectionStart === &#039;number&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			typeof txtarea.selectionEnd === &#039;number&#039;&lt;br /&gt;
		) {&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				replacement = callback(selText);&lt;br /&gt;
				txtarea.value =&lt;br /&gt;
					txtarea.value.substring(0, startPos) +&lt;br /&gt;
					replacement +&lt;br /&gt;
					txtarea.value.substring(endPos);&lt;br /&gt;
				txtarea.selectionStart = startPos + replacement.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			txtarea.value = callback(txtarea.value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		/* برداشتن پیوند تاریخ‌ها */&lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا */&lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی */&lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{ویکی\u200cسازی}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* بدون منبع */&lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{بدون منبع}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف سریع */&lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c1/Button_delete_vote.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف زماندار */&lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* منبع تصویر نامعلوم */&lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم */&lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تمیزکاری */&lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{تمیزکاری}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اخطار نگاره */&lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر مشکوک */&lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{حق تکثیر مشکوک}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* نقض حق تکثیر */&lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* لحن نامناسب */&lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{لحن نامناسب}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var $targets = $(&lt;br /&gt;
				&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor, &#039; +&lt;br /&gt;
				&#039;.cm-editor, .cm-editor .cm-content&#039;&lt;br /&gt;
			);&lt;br /&gt;
			var $active = $(&lt;br /&gt;
				&#039;.cm-editor .cm-content:visible, #wpTextbox1:visible, &#039; +&lt;br /&gt;
				&#039;[name=wpNewTitleMain]:visible, .ace_editor:visible&#039;&lt;br /&gt;
			).first();&lt;br /&gt;
&lt;br /&gt;
			if (!$active.length) {&lt;br /&gt;
				$active = $targets.first();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var direction = $active.css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;;&lt;br /&gt;
			$targets.css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: direction&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح */&lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ملزومات مقاله */&lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* خوشامدید */&lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:خوشامدید|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا */&lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/80/Button_upper_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس پایین */&lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/70/Button_lower_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تغییرمسیر */&lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.persianSortText);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! */&lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(getEditorContents().trimRight() + &#039;\n:{{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);&lt;br /&gt;
   /* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(function () {&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
	            }));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($(&#039;#movepage&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=234</id>
		<title>مدیاویکی:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=234"/>
		<updated>2026-11-04T20:16:19Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح پیوندها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getEditorContents() {&lt;br /&gt;
		return $(&#039;#wpTextbox1&#039;).textSelection(&#039;getContents&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setEditorContents(value) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;setContents&#039;, value);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function insertTags(pre, post, sample) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {&lt;br /&gt;
			pre: pre || &#039;&#039;,&lt;br /&gt;
			peri: sample || &#039;&#039;,&lt;br /&gt;
			post: post || &#039;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fetch a page&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Save a page&lt;br /&gt;
	&lt;br /&gt;
	function savePage(title, text, summary) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			title: title,&lt;br /&gt;
			text: text,&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			nocreate: &#039;&#039;,&lt;br /&gt;
			minor: &#039;&#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&#039;csrfToken&#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Load and save a page&lt;br /&gt;
	&lt;br /&gt;
	function loadSavePage(editorDelegate, summary) {&lt;br /&gt;
		return loadPage(mw.config.get(&#039;wgPageName&#039;)).then(function (text) {&lt;br /&gt;
			return savePage(mw.config.get(&#039;wgPageName&#039;), editorDelegate(text), summary);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
		mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
		!mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
		$.when($.ready, mw.loader.using(&#039;jquery.ui&#039;)).then(function () {&lt;br /&gt;
			$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
			if ($(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length !== 0 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 6 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 8) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var interwikiFix = false;&lt;br /&gt;
			if (!$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp; $(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp; $(&#039;.wbc-editpage&#039;).length) {&lt;br /&gt;
				interwikiFix = true;&lt;br /&gt;
			}&lt;br /&gt;
			$(mw.util.addPortletLink(&#039;p-views&#039;, &#039;#&#039;, interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;, &#039;ca-abar-abzar&#039;, interwikiFix ? &#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; : &#039;ابزار پیشرفتهٔ ویرایش متن&#039;)).click(function (e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				$(&lt;br /&gt;
					&#039;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟&amp;lt;/h6&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید &amp;lt;b&amp;gt;زیرا مسئولیت تغییرات ابرابزار با شماست!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				).dialog({&lt;br /&gt;
					modal: true,&lt;br /&gt;
					title: &#039;ابرابزار&#039;,&lt;br /&gt;
					resizable: false,&lt;br /&gt;
					buttons: {&lt;br /&gt;
						&#039;بله&#039;: function () {&lt;br /&gt;
							loadSavePage(&lt;br /&gt;
								persianWikiTools.superTool,&lt;br /&gt;
								&#039;/&#039; + &#039;* ویرایش به وسیلهٔ [[&#039; + (mw.config.get(&#039;wgServerName&#039;) !== &#039;fa.wikipedia.org&#039; ? &#039;:w:fa:&#039; : &#039;&#039;) + &#039;وپ:ابرابزار|ابرابزار]] *&#039; + &#039;/&#039;&lt;br /&gt;
							).then(function (data) {&lt;br /&gt;
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
								if (interwikiFix) {&lt;br /&gt;
									$.get(&#039;//tools.wmflabs.org/dexbot/interwikidata.php&#039;, { page: mw.config.get(&#039;wgPageName&#039;) })&lt;br /&gt;
										.then(function () {}, function () {});&lt;br /&gt;
								}&lt;br /&gt;
								//اجرای کدهای ربات&lt;br /&gt;
								botworks.trigFillcat();&lt;br /&gt;
								botworks.trigMissedFileUpload();&lt;br /&gt;
								botworks.trigMissedRef();&lt;br /&gt;
								if (data.error) {&lt;br /&gt;
									mw.notify(&#039;ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: &#039; + data.error.info);&lt;br /&gt;
								} else if (data.edit &amp;amp;&amp;amp; data.edit.result === &#039;Success&#039;) {&lt;br /&gt;
									if (data.edit.nochange !== undefined) {&lt;br /&gt;
										mw.notify(&#039;تغییری در صفحه ایجاد نشد.&#039;);&lt;br /&gt;
									} else {&lt;br /&gt;
										mw.notify(&#039;ویرایش با موفقیت انجام پذیرفت&#039;);&lt;br /&gt;
										// Loading diff page&lt;br /&gt;
										var diffUrl = new URL(&lt;br /&gt;
    mw.config.get(&#039;wgScript&#039;),&lt;br /&gt;
    window.location.href&lt;br /&gt;
);&lt;br /&gt;
diffUrl.searchParams.set(&#039;title&#039;, mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
diffUrl.searchParams.set(&#039;diff&#039;, data.edit.newrevid);&lt;br /&gt;
window.location = diffUrl.href;&lt;br /&gt;
									}&lt;br /&gt;
								} else {&lt;br /&gt;
									mw.notify(&#039;ویرایش در صفحه موفقیت\u200cآمیر نبود.&#039;);&lt;br /&gt;
								}&lt;br /&gt;
							}, function (error) {&lt;br /&gt;
								mw.notify(error);&lt;br /&gt;
							});&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						},&lt;br /&gt;
						&#039;خیر&#039;: function () {&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
					close: function () {&lt;br /&gt;
						$(this).remove();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت ویرایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		if (summaryText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var summary = $(&#039;.editOptions #wpSummary&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().indexOf(&#039;*/ &#039;) &amp;gt; -1) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
				text: alt&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var $editor, txtarea, range, startPos, endPos, selText, replacement;&lt;br /&gt;
&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			$editor = $(&#039;#wpTextbox1&#039;);&lt;br /&gt;
			if (!$editor.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selText = $editor.textSelection(&#039;getSelection&#039;);&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				$editor.textSelection(&#039;replaceSelection&#039;, callback(selText));&lt;br /&gt;
			} else {&lt;br /&gt;
				$editor.textSelection(&lt;br /&gt;
					&#039;setContents&#039;,&lt;br /&gt;
					callback($editor.textSelection(&#039;getContents&#039;))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		if (!txtarea) return;&lt;br /&gt;
&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (&lt;br /&gt;
			typeof txtarea.selectionStart === &#039;number&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			typeof txtarea.selectionEnd === &#039;number&#039;&lt;br /&gt;
		) {&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				replacement = callback(selText);&lt;br /&gt;
				txtarea.value =&lt;br /&gt;
					txtarea.value.substring(0, startPos) +&lt;br /&gt;
					replacement +&lt;br /&gt;
					txtarea.value.substring(endPos);&lt;br /&gt;
				txtarea.selectionStart = startPos + replacement.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			txtarea.value = callback(txtarea.value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		/* برداشتن پیوند تاریخ‌ها */&lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا */&lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی */&lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{ویکی\u200cسازی}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* بدون منبع */&lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{بدون منبع}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف سریع */&lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c1/Button_delete_vote.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف زماندار */&lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* منبع تصویر نامعلوم */&lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم */&lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تمیزکاری */&lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{تمیزکاری}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اخطار نگاره */&lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر مشکوک */&lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{حق تکثیر مشکوک}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* نقض حق تکثیر */&lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* لحن نامناسب */&lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{لحن نامناسب}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var $targets = $(&lt;br /&gt;
				&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor, &#039; +&lt;br /&gt;
				&#039;.cm-editor, .cm-editor .cm-content&#039;&lt;br /&gt;
			);&lt;br /&gt;
			var $active = $(&lt;br /&gt;
				&#039;.cm-editor .cm-content:visible, #wpTextbox1:visible, &#039; +&lt;br /&gt;
				&#039;[name=wpNewTitleMain]:visible, .ace_editor:visible&#039;&lt;br /&gt;
			).first();&lt;br /&gt;
&lt;br /&gt;
			if (!$active.length) {&lt;br /&gt;
				$active = $targets.first();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var direction = $active.css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;;&lt;br /&gt;
			$targets.css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: direction&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح */&lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ملزومات مقاله */&lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* خوشامدید */&lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:خوشامدید|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا */&lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/8/80/Button_upper_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس پایین */&lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/7/70/Button_lower_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تغییرمسیر */&lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.persianSortText);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! */&lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(getEditorContents().trimRight() + &#039;\n:{{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);&lt;br /&gt;
   /* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(function () {&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//commons.islamical.org/w/images/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
	            }));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($(&#039;#movepage&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=233</id>
		<title>مدیاویکی:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=233"/>
		<updated>2026-11-04T20:13:36Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح پیوندها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getEditorContents() {&lt;br /&gt;
		return $(&#039;#wpTextbox1&#039;).textSelection(&#039;getContents&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setEditorContents(value) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;setContents&#039;, value);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function insertTags(pre, post, sample) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {&lt;br /&gt;
			pre: pre || &#039;&#039;,&lt;br /&gt;
			peri: sample || &#039;&#039;,&lt;br /&gt;
			post: post || &#039;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fetch a page&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Save a page&lt;br /&gt;
	&lt;br /&gt;
	function savePage(title, text, summary) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			title: title,&lt;br /&gt;
			text: text,&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			nocreate: &#039;&#039;,&lt;br /&gt;
			minor: &#039;&#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&#039;csrfToken&#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Load and save a page&lt;br /&gt;
	&lt;br /&gt;
	function loadSavePage(editorDelegate, summary) {&lt;br /&gt;
		return loadPage(mw.config.get(&#039;wgPageName&#039;)).then(function (text) {&lt;br /&gt;
			return savePage(mw.config.get(&#039;wgPageName&#039;), editorDelegate(text), summary);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
		mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
		!mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
		$.when($.ready, mw.loader.using(&#039;jquery.ui&#039;)).then(function () {&lt;br /&gt;
			$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
			if ($(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length !== 0 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 6 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 8) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var interwikiFix = false;&lt;br /&gt;
			if (!$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp; $(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp; $(&#039;.wbc-editpage&#039;).length) {&lt;br /&gt;
				interwikiFix = true;&lt;br /&gt;
			}&lt;br /&gt;
			$(mw.util.addPortletLink(&#039;p-views&#039;, &#039;#&#039;, interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;, &#039;ca-abar-abzar&#039;, interwikiFix ? &#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; : &#039;ابزار پیشرفتهٔ ویرایش متن&#039;)).click(function (e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				$(&lt;br /&gt;
					&#039;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟&amp;lt;/h6&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید &amp;lt;b&amp;gt;زیرا مسئولیت تغییرات ابرابزار با شماست!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				).dialog({&lt;br /&gt;
					modal: true,&lt;br /&gt;
					title: &#039;ابرابزار&#039;,&lt;br /&gt;
					resizable: false,&lt;br /&gt;
					buttons: {&lt;br /&gt;
						&#039;بله&#039;: function () {&lt;br /&gt;
							loadSavePage(&lt;br /&gt;
								persianWikiTools.superTool,&lt;br /&gt;
								&#039;/&#039; + &#039;* ویرایش به وسیلهٔ [[&#039; + (mw.config.get(&#039;wgServerName&#039;) !== &#039;fa.wikipedia.org&#039; ? &#039;:w:fa:&#039; : &#039;&#039;) + &#039;وپ:ابرابزار|ابرابزار]] *&#039; + &#039;/&#039;&lt;br /&gt;
							).then(function (data) {&lt;br /&gt;
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
								if (interwikiFix) {&lt;br /&gt;
									$.get(&#039;//tools.wmflabs.org/dexbot/interwikidata.php&#039;, { page: mw.config.get(&#039;wgPageName&#039;) })&lt;br /&gt;
										.then(function () {}, function () {});&lt;br /&gt;
								}&lt;br /&gt;
								//اجرای کدهای ربات&lt;br /&gt;
								botworks.trigFillcat();&lt;br /&gt;
								botworks.trigMissedFileUpload();&lt;br /&gt;
								botworks.trigMissedRef();&lt;br /&gt;
								if (data.error) {&lt;br /&gt;
									mw.notify(&#039;ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: &#039; + data.error.info);&lt;br /&gt;
								} else if (data.edit &amp;amp;&amp;amp; data.edit.result === &#039;Success&#039;) {&lt;br /&gt;
									if (data.edit.nochange !== undefined) {&lt;br /&gt;
										mw.notify(&#039;تغییری در صفحه ایجاد نشد.&#039;);&lt;br /&gt;
									} else {&lt;br /&gt;
										mw.notify(&#039;ویرایش با موفقیت انجام پذیرفت&#039;);&lt;br /&gt;
										// Loading diff page&lt;br /&gt;
										var diffUrl = new URL(&lt;br /&gt;
    mw.config.get(&#039;wgScript&#039;),&lt;br /&gt;
    window.location.href&lt;br /&gt;
);&lt;br /&gt;
diffUrl.searchParams.set(&#039;title&#039;, mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
diffUrl.searchParams.set(&#039;diff&#039;, data.edit.newrevid);&lt;br /&gt;
window.location = diffUrl.href;&lt;br /&gt;
									}&lt;br /&gt;
								} else {&lt;br /&gt;
									mw.notify(&#039;ویرایش در صفحه موفقیت\u200cآمیر نبود.&#039;);&lt;br /&gt;
								}&lt;br /&gt;
							}, function (error) {&lt;br /&gt;
								mw.notify(error);&lt;br /&gt;
							});&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						},&lt;br /&gt;
						&#039;خیر&#039;: function () {&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
					close: function () {&lt;br /&gt;
						$(this).remove();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت ویرایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		if (summaryText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var summary = $(&#039;.editOptions #wpSummary&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().indexOf(&#039;*/ &#039;) &amp;gt; -1) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
				text: alt&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var $editor, txtarea, range, startPos, endPos, selText, replacement;&lt;br /&gt;
&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			$editor = $(&#039;#wpTextbox1&#039;);&lt;br /&gt;
			if (!$editor.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selText = $editor.textSelection(&#039;getSelection&#039;);&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				$editor.textSelection(&#039;replaceSelection&#039;, callback(selText));&lt;br /&gt;
			} else {&lt;br /&gt;
				$editor.textSelection(&lt;br /&gt;
					&#039;setContents&#039;,&lt;br /&gt;
					callback($editor.textSelection(&#039;getContents&#039;))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		if (!txtarea) return;&lt;br /&gt;
&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (&lt;br /&gt;
			typeof txtarea.selectionStart === &#039;number&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			typeof txtarea.selectionEnd === &#039;number&#039;&lt;br /&gt;
		) {&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				replacement = callback(selText);&lt;br /&gt;
				txtarea.value =&lt;br /&gt;
					txtarea.value.substring(0, startPos) +&lt;br /&gt;
					replacement +&lt;br /&gt;
					txtarea.value.substring(endPos);&lt;br /&gt;
				txtarea.selectionStart = startPos + replacement.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			txtarea.value = callback(txtarea.value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		/* برداشتن پیوند تاریخ‌ها */&lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا */&lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی */&lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{ویکی\u200cسازی}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* بدون منبع */&lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{بدون منبع}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف سریع */&lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/c/c1/Button_delete_vote.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف زماندار */&lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* منبع تصویر نامعلوم */&lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم */&lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تمیزکاری */&lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{تمیزکاری}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اخطار نگاره */&lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر مشکوک */&lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{حق تکثیر مشکوک}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* نقض حق تکثیر */&lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* لحن نامناسب */&lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{لحن نامناسب}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var $targets = $(&lt;br /&gt;
				&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor, &#039; +&lt;br /&gt;
				&#039;.cm-editor, .cm-editor .cm-content&#039;&lt;br /&gt;
			);&lt;br /&gt;
			var $active = $(&lt;br /&gt;
				&#039;.cm-editor .cm-content:visible, #wpTextbox1:visible, &#039; +&lt;br /&gt;
				&#039;[name=wpNewTitleMain]:visible, .ace_editor:visible&#039;&lt;br /&gt;
			).first();&lt;br /&gt;
&lt;br /&gt;
			if (!$active.length) {&lt;br /&gt;
				$active = $targets.first();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var direction = $active.css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;;&lt;br /&gt;
			$targets.css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: direction&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح */&lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ملزومات مقاله */&lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* خوشامدید */&lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:خوشامدید|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا */&lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/8/80/Button_upper_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس پایین */&lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/7/70/Button_lower_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تغییرمسیر */&lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/en/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.persianSortText);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/fa/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! */&lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(getEditorContents().trimRight() + &#039;\n:{{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);&lt;br /&gt;
   /* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(function () {&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//commons.islamical.org/w/images/fa/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
	            }));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($(&#039;#movepage&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=232</id>
		<title>مدیاویکی:Gadget-Extra-Editbuttons.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-Extra-Editbuttons.js&amp;diff=232"/>
		<updated>2026-11-04T20:05:19Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: اصلاح پیوندها&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// &amp;lt;nowiki&amp;gt; // DON&#039;T REMOVE THIS LINE EVER&lt;br /&gt;
/*global jQuery, mediaWiki, persianWikiTools, persianTools*/&lt;br /&gt;
/**&lt;br /&gt;
 * UI code for Persian tools&lt;br /&gt;
 * Tests: [[مدیاویکی:Gadget-Extra-Editbuttons-tests.js]] [[وپ:تست]]&lt;br /&gt;
 * See also:&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-autoed.js]]&lt;br /&gt;
 * * [[مدیاویکی:Gadget-Extra-Editbuttons-botworks.js]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	function getEditorContents() {&lt;br /&gt;
		return $(&#039;#wpTextbox1&#039;).textSelection(&#039;getContents&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setEditorContents(value) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;setContents&#039;, value);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function insertTags(pre, post, sample) {&lt;br /&gt;
		$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {&lt;br /&gt;
			pre: pre || &#039;&#039;,&lt;br /&gt;
			peri: sample || &#039;&#039;,&lt;br /&gt;
			post: post || &#039;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت نمایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fetch a page&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
	function loadPage(title) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			prop: &#039;revisions&#039;,&lt;br /&gt;
			titles: title,&lt;br /&gt;
			rvprop: &#039;content&#039;,&lt;br /&gt;
			format: &#039;json&#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return data.query.pages[Object.keys(data.query.pages)[0]].revisions[0][&#039;*&#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Save a page&lt;br /&gt;
	&lt;br /&gt;
	function savePage(title, text, summary) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &#039;edit&#039;,&lt;br /&gt;
			title: title,&lt;br /&gt;
			text: text,&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			nocreate: &#039;&#039;,&lt;br /&gt;
			minor: &#039;&#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&#039;csrfToken&#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	// Load and save a page&lt;br /&gt;
	&lt;br /&gt;
	function loadSavePage(editorDelegate, summary) {&lt;br /&gt;
		return loadPage(mw.config.get(&#039;wgPageName&#039;)).then(function (text) {&lt;br /&gt;
			return savePage(mw.config.get(&#039;wgPageName&#039;), editorDelegate(text), summary);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&#039;wgAction&#039;) === &#039;view&#039; &amp;amp;&amp;amp;&lt;br /&gt;
		mw.config.get(&#039;wgIsArticle&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
		!mw.config.get(&#039;wgIsMainPage&#039;)) {&lt;br /&gt;
		$.when($.ready, mw.loader.using(&#039;jquery.ui&#039;)).then(function () {&lt;br /&gt;
			$(&#039;#ca-abar-abzar&#039;).remove();&lt;br /&gt;
			if ($(&#039;#mw-imagepage-nofile, #noarticletext&#039;).length !== 0 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 6 ||&lt;br /&gt;
				mw.config.get(&#039;wgNamespaceNumber&#039;) === 8) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var interwikiFix = false;&lt;br /&gt;
			if (!$(&#039;#t-wikibase&#039;).length &amp;amp;&amp;amp; $(&#039;.interlanguage-link&#039;).length &amp;amp;&amp;amp; $(&#039;.wbc-editpage&#039;).length) {&lt;br /&gt;
				interwikiFix = true;&lt;br /&gt;
			}&lt;br /&gt;
			$(mw.util.addPortletLink(&#039;p-views&#039;, &#039;#&#039;, interwikiFix ? &#039;ابرابزار+انتقال میان‌ویکی&#039; : &#039;ابرابزار&#039;, &#039;ca-abar-abzar&#039;, interwikiFix ? &#039;ابزار پیشرفتهٔ ویرایش متن + ابزار انتقال خودکار میان‌ویکی سنتی به ویکی‌داده&#039; : &#039;ابزار پیشرفتهٔ ویرایش متن&#039;)).click(function (e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				$(&lt;br /&gt;
					&#039;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;مطمئنید می\u200cخواهید ویرایشی خودکار جهت اصلاح متن این صفحه به کمک ابرابزار داشته باشید؟&amp;lt;/h6&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;بعد از انجام ویرایش باید ویرایش انجام\u200cشده را از نظر درستی بررسی کنید &amp;lt;b&amp;gt;زیرا مسئولیت تغییرات ابرابزار با شماست!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				).dialog({&lt;br /&gt;
					modal: true,&lt;br /&gt;
					title: &#039;ابرابزار&#039;,&lt;br /&gt;
					resizable: false,&lt;br /&gt;
					buttons: {&lt;br /&gt;
						&#039;بله&#039;: function () {&lt;br /&gt;
							loadSavePage(&lt;br /&gt;
								persianWikiTools.superTool,&lt;br /&gt;
								&#039;/&#039; + &#039;* ویرایش به وسیلهٔ [[&#039; + (mw.config.get(&#039;wgServerName&#039;) !== &#039;fa.wikipedia.org&#039; ? &#039;:w:fa:&#039; : &#039;&#039;) + &#039;وپ:ابرابزار|ابرابزار]] *&#039; + &#039;/&#039;&lt;br /&gt;
							).then(function (data) {&lt;br /&gt;
								// افزودن میان‌ویکی سنتی به ویکی‌داده به صورت خودکار&lt;br /&gt;
								if (interwikiFix) {&lt;br /&gt;
									$.get(&#039;//tools.wmflabs.org/dexbot/interwikidata.php&#039;, { page: mw.config.get(&#039;wgPageName&#039;) })&lt;br /&gt;
										.then(function () {}, function () {});&lt;br /&gt;
								}&lt;br /&gt;
								//اجرای کدهای ربات&lt;br /&gt;
								botworks.trigFillcat();&lt;br /&gt;
								botworks.trigMissedFileUpload();&lt;br /&gt;
								botworks.trigMissedRef();&lt;br /&gt;
								if (data.error) {&lt;br /&gt;
									mw.notify(&#039;ویرایش موفقیت آمیز نبود، دوباره تلاش کنید: &#039; + data.error.info);&lt;br /&gt;
								} else if (data.edit &amp;amp;&amp;amp; data.edit.result === &#039;Success&#039;) {&lt;br /&gt;
									if (data.edit.nochange !== undefined) {&lt;br /&gt;
										mw.notify(&#039;تغییری در صفحه ایجاد نشد.&#039;);&lt;br /&gt;
									} else {&lt;br /&gt;
										mw.notify(&#039;ویرایش با موفقیت انجام پذیرفت&#039;);&lt;br /&gt;
										// Loading diff page&lt;br /&gt;
										var diffUrl = new URL(&lt;br /&gt;
    mw.config.get(&#039;wgScript&#039;),&lt;br /&gt;
    window.location.href&lt;br /&gt;
);&lt;br /&gt;
diffUrl.searchParams.set(&#039;title&#039;, mw.config.get(&#039;wgPageName&#039;));&lt;br /&gt;
diffUrl.searchParams.set(&#039;diff&#039;, data.edit.newrevid);&lt;br /&gt;
window.location = diffUrl.href;&lt;br /&gt;
									}&lt;br /&gt;
								} else {&lt;br /&gt;
									mw.notify(&#039;ویرایش در صفحه موفقیت\u200cآمیر نبود.&#039;);&lt;br /&gt;
								}&lt;br /&gt;
							}, function (error) {&lt;br /&gt;
								mw.notify(error);&lt;br /&gt;
							});&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						},&lt;br /&gt;
						&#039;خیر&#039;: function () {&lt;br /&gt;
							$(this).dialog(&#039;close&#039;);&lt;br /&gt;
						}&lt;br /&gt;
					},&lt;br /&gt;
					close: function () {&lt;br /&gt;
						$(this).remove();&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
	// ابزار در حالت ویرایش&lt;br /&gt;
	/**&lt;br /&gt;
	 * Adds edit summary&lt;br /&gt;
	 */&lt;br /&gt;
	function addEditSummary(summaryText, replaceSummary) {&lt;br /&gt;
		if (summaryText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var summary = $(&#039;.editOptions #wpSummary&#039;),&lt;br /&gt;
			summaryPrefix = &#039;&#039;,&lt;br /&gt;
			pos;&lt;br /&gt;
		if (summary.length === 0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		if (summary.val().indexOf(&#039;*/ &#039;) &amp;gt; -1) {&lt;br /&gt;
			pos = summary.val().indexOf(&#039;*/ &#039;);&lt;br /&gt;
			summaryPrefix = summary.val().substr(0, pos + 3);&lt;br /&gt;
		}&lt;br /&gt;
		if (replaceSummary) {&lt;br /&gt;
			summary.val(summaryPrefix + summaryText);&lt;br /&gt;
		} else {&lt;br /&gt;
			if (summary.val() === summaryPrefix) {&lt;br /&gt;
				summary.val(summary.val() + summaryText);&lt;br /&gt;
			} else {&lt;br /&gt;
				if (summary.val().indexOf(summaryText) === -1) { // do not repeat in edit summary&lt;br /&gt;
					summary.val(summary.val() + &#039;، &#039; + summaryText);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Makes a simple button from parameters&lt;br /&gt;
	 */&lt;br /&gt;
	function buttonGenerator(callback, summaryText, replaceSummary, image, title, alt, idSuffix) {&lt;br /&gt;
		function clickCallback(e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			callback();&lt;br /&gt;
			addEditSummary(summaryText, replaceSummary);&lt;br /&gt;
		}&lt;br /&gt;
		var img = $(&#039;&amp;lt;img&amp;gt;&#039;).on(&#039;error&#039;, function () {&lt;br /&gt;
			img.replaceWith($(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;br /&gt;
				text: alt&lt;br /&gt;
			}));&lt;br /&gt;
		}).attr({&lt;br /&gt;
			src: image,&lt;br /&gt;
			title: title,&lt;br /&gt;
			alt: alt&lt;br /&gt;
		});&lt;br /&gt;
		var button = $(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
			id: &#039;persian-wiki-tools-&#039; + idSuffix&lt;br /&gt;
		}).click(clickCallback).append(img);&lt;br /&gt;
		return button[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Applies the string functions defined below to the&lt;br /&gt;
	 * selected text in the edit box. If no text is selected, applies&lt;br /&gt;
	 * the function to the whole contents of edit box.&lt;br /&gt;
	 */&lt;br /&gt;
	function applyOnSelection(callback) {&lt;br /&gt;
		var $editor, txtarea, range, startPos, endPos, selText, replacement;&lt;br /&gt;
&lt;br /&gt;
		if (document.getElementById(&#039;editform&#039;) || $(&#039;.ns-446&#039;).length) {&lt;br /&gt;
			$editor = $(&#039;#wpTextbox1&#039;);&lt;br /&gt;
			if (!$editor.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selText = $editor.textSelection(&#039;getSelection&#039;);&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				$editor.textSelection(&#039;replaceSelection&#039;, callback(selText));&lt;br /&gt;
			} else {&lt;br /&gt;
				$editor.textSelection(&lt;br /&gt;
					&#039;setContents&#039;,&lt;br /&gt;
					callback($editor.textSelection(&#039;getContents&#039;))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		txtarea = $(&#039;[name=wpNewTitleMain]&#039;)[0];&lt;br /&gt;
		if (!txtarea) return;&lt;br /&gt;
&lt;br /&gt;
		if (document.selection &amp;amp;&amp;amp; document.selection.createRange) { // IE/Opera&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			range = document.selection.createRange();&lt;br /&gt;
			selText = range.text;&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				range.text = callback(selText);&lt;br /&gt;
				range.select();&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else if (&lt;br /&gt;
			typeof txtarea.selectionStart === &#039;number&#039; &amp;amp;&amp;amp;&lt;br /&gt;
			typeof txtarea.selectionEnd === &#039;number&#039;&lt;br /&gt;
		) {&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			startPos = txtarea.selectionStart;&lt;br /&gt;
			endPos = txtarea.selectionEnd;&lt;br /&gt;
			selText = txtarea.value.substring(startPos, endPos);&lt;br /&gt;
&lt;br /&gt;
			if (selText) {&lt;br /&gt;
				replacement = callback(selText);&lt;br /&gt;
				txtarea.value =&lt;br /&gt;
					txtarea.value.substring(0, startPos) +&lt;br /&gt;
					replacement +&lt;br /&gt;
					txtarea.value.substring(endPos);&lt;br /&gt;
				txtarea.selectionStart = startPos + replacement.length;&lt;br /&gt;
				txtarea.selectionEnd = txtarea.selectionStart;&lt;br /&gt;
			} else {&lt;br /&gt;
				txtarea.value = callback(txtarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			txtarea.value = callback(txtarea.value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var tools = {};&lt;br /&gt;
&lt;br /&gt;
	// Buttons that FIX wikitext&lt;br /&gt;
	/* ی ک */&lt;br /&gt;
	tools.ykArabic = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.toStandardPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه\u200cهای عربی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/8/88/Button_YehKeh.png&#039;,&lt;br /&gt;
		&#039;اصلاح ی و ک&#039;,&lt;br /&gt;
		&#039;ی و ک&#039;,&lt;br /&gt;
		&#039;YehKeh&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* فاصلهٔ مجازی */&lt;br /&gt;
	tools.zwnj = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyZwnj);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح فاصلهٔ مجازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/d/d0/Button_ZWNJ.png&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;فاصلهٔ مجازی&#039;,&lt;br /&gt;
		&#039;ZWNJ&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد */&lt;br /&gt;
	tools.applyOrthography = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiApplyOrthography);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نویسه&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/9/94/Button_non_standard.png&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;اصلاح نویسه\u200cها و حالت\u200cهای غیراستاندارد&#039;,&lt;br /&gt;
		&#039;apply-orthography&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام */&lt;br /&gt;
	tools.dig = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiTextDigitsToPersian);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح ارقام مخصوص صفحه انتقال */&lt;br /&gt;
	tools.digMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiConvertToPersianCharacters);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/4/4a/Button_numbers.png&#039;,&lt;br /&gt;
		&#039;اصلاح ارقام&#039;,&lt;br /&gt;
		&#039;ارقام&#039;,&lt;br /&gt;
		&#039;numbers&#039;&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	//عدم تغییر در متن بحث‌ها، سیاست‌ها در فضاهای نام دیگر&lt;br /&gt;
	if (mw.config.get(&#039;wgNamespaceNumber&#039;) === 0) {&lt;br /&gt;
		/* برداشتن پیوند تاریخ‌ها */&lt;br /&gt;
		tools.fixBadLinks = buttonGenerator(&lt;br /&gt;
			function () {&lt;br /&gt;
				applyOnSelection(persianWikiTools.fixBadLinks);&lt;br /&gt;
			},&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			false,&lt;br /&gt;
			&#039;//commons.islamical.org/w/images/1/11/Btn_toolbar_link_remove.png&#039;,&lt;br /&gt;
			&#039;حذف پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;پیوند تاریخ‌ها&#039;,&lt;br /&gt;
			&#039;datelinks&#039;&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* یونیکد نشانی وب */&lt;br /&gt;
	tools.urlFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiUrlMinifier);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح نشانی وب&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/b/ba/Button_decode_URI.png&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی نشانی\u200cها&#039;,&lt;br /&gt;
		&#039;یونی\u200cکدسازی&#039;,&lt;br /&gt;
		&#039;decode-URI&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاح علامت @ */&lt;br /&gt;
	tools.atSignFix = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(function (text) {&lt;br /&gt;
				return text.replace(/(\S+?)@(\S+?)/g, &#039;$1{{at}}$2&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح @&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/7/7f/Button_at_sign.png&#039;,&lt;br /&gt;
		&#039;اصلاح علامت @&#039;,&lt;br /&gt;
		&#039;@&#039;,&lt;br /&gt;
		&#039;at-sign&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار */&lt;br /&gt;
	tools.superTool = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superTool);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابزار املا */&lt;br /&gt;
	tools.dictation = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiDictation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح املا&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/a/a3/Button_Dictation-fa.png&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;املا&#039;,&lt;br /&gt;
		&#039;dictation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ابرابزار مخصوص صفحه انتقال */&lt;br /&gt;
	tools.superToolMove = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.superToolMove);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/f/fc/Button_super_tool.png&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;ابرابزار&#039;,&lt;br /&gt;
		&#039;super-tool&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اصلاحات قراردادن نقطه */&lt;br /&gt;
	tools.punc = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.wikiPunctuation);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;اصلاح سجاوندی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/e/ed/Button_punctuation.png&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;نقطه\u200cگذاری&#039;,&lt;br /&gt;
		&#039;punctuation&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that add tags&lt;br /&gt;
	/* برچسب ویکی\u200cسازی */&lt;br /&gt;
	tools.wikify = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{ویکی\u200cسازی}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/3/38/Button_wikify.png&#039;,&lt;br /&gt;
		&#039;برچسب ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;ویکی\u200cسازی&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* بدون منبع */&lt;br /&gt;
	tools.noSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{بدون منبع}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/8/8a/Button_no_source_fa.png&#039;,&lt;br /&gt;
		&#039;برچسب بدون منبع&#039;,&lt;br /&gt;
		&#039;بدون منبع&#039;,&lt;br /&gt;
		&#039;no-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف سریع */&lt;br /&gt;
	tools.speedyDel = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;حذف سریع|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/c/c1/Button_delete_vote.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف سریع&#039;,&lt;br /&gt;
		&#039;حذف سریع&#039;,&lt;br /&gt;
		&#039;delete-vote&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حذف زماندار */&lt;br /&gt;
	tools.prod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var temp = getEditorContents();&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&#039;{{&#039; + &#039;جا:حذف زمان\u200cدار|&#039;, &#039;}}\n&#039; + temp, &#039;معیار&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/3f/Button_attendre.png&#039;,&lt;br /&gt;
		&#039;برچسب حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;حذف زمان\u200cدار&#039;,&lt;br /&gt;
		&#039;attendre&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* منبع تصویر نامعلوم */&lt;br /&gt;
	tools.picSource = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:منبع تصویر نامعلوم&#039; + &#039;}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب منبع&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/5/59/Button_image_source.png&#039;,&lt;br /&gt;
		&#039;برچسب منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;منبع تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-source&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر تصویر نامعلوم */&lt;br /&gt;
	tools.picCopy = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{&#039; + &#039;جا:حق تکثیر تصویر نامعلوم}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/7/7e/Button_image_copyright.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;حق تکثیر تصویر نامعلوم&#039;,&lt;br /&gt;
		&#039;image-copyright&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تمیزکاری */&lt;br /&gt;
	tools.cleanup = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{تمیزکاری}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/2/2e/Button_broom.png&#039;,&lt;br /&gt;
		&#039;برچسب تمیزکاری&#039;,&lt;br /&gt;
		&#039;تمیزکاری&#039;,&lt;br /&gt;
		&#039;broom&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اخطار نگاره */&lt;br /&gt;
	tools.imgWarn = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:اخطار نگاره|&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نگاره&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب نگاره&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ec/Button_aviso.png&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;اخطار نگاره&#039;,&lt;br /&gt;
		&#039;aviso&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* حق تکثیر مشکوک */&lt;br /&gt;
	tools.sus = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{حق تکثیر مشکوک}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/c/c7/Button_Sus.png&#039;,&lt;br /&gt;
		&#039;برچسب حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;حق تکثیر مشکوک&#039;,&lt;br /&gt;
		&#039;sus&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* نقض حق تکثیر */&lt;br /&gt;
	tools.copyR = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:نقض حق تکثیر|url=&#039;,&lt;br /&gt;
				&#039;}}&#039;,&lt;br /&gt;
				&#039;نشانی ایرنتنتی&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب حق تکثیر&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/6/6f/Button_CopyR.png&#039;,&lt;br /&gt;
		&#039;برچسب نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;نقض حق تکثیر&#039;,&lt;br /&gt;
		&#039;copyr&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* لحن نامناسب */&lt;br /&gt;
	tools.tone = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;{{لحن نامناسب}}\n&#039; + getEditorContents());&lt;br /&gt;
		},&lt;br /&gt;
		&#039;برچسب لحن&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/f/fc/Button_Tone.png&#039;,&lt;br /&gt;
		&#039;برچسب لحن نامناسب&#039;,&lt;br /&gt;
		&#039;لحن&#039;,&lt;br /&gt;
		&#039;tone&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Buttons that help with wiki writing&lt;br /&gt;
	/* تغییر جهت */&lt;br /&gt;
	tools.toggleDirection = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			var $targets = $(&lt;br /&gt;
				&#039;#wpTextbox1, [name=wpNewTitleMain], .ace_editor, &#039; +&lt;br /&gt;
				&#039;.cm-editor, .cm-editor .cm-content&#039;&lt;br /&gt;
			);&lt;br /&gt;
			var $active = $(&lt;br /&gt;
				&#039;.cm-editor .cm-content:visible, #wpTextbox1:visible, &#039; +&lt;br /&gt;
				&#039;[name=wpNewTitleMain]:visible, .ace_editor:visible&#039;&lt;br /&gt;
			).first();&lt;br /&gt;
&lt;br /&gt;
			if (!$active.length) {&lt;br /&gt;
				$active = $targets.first();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var direction = $active.css(&#039;direction&#039;) === &#039;rtl&#039; ? &#039;ltr&#039; : &#039;rtl&#039;;&lt;br /&gt;
			$targets.css({&lt;br /&gt;
				&#039;text-align&#039;: &#039;start&#039;,&lt;br /&gt;
				&#039;direction&#039;: direction&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/d/d0/Button_toggle_dir.png&#039;,&lt;br /&gt;
		&#039;تغییر جهت جعبهٔ ویرایش&#039;,&lt;br /&gt;
		&#039;تغییرجهت&#039;,&lt;br /&gt;
		&#039;toggle-dir&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* پیوند درونی */&lt;br /&gt;
	tools.wikiLink = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;[[&#039;, &#039;]]&#039;, &#039;مقاله&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/d/d0/Button_in_wikify.png&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;پیوند&#039;,&lt;br /&gt;
		&#039;wikify&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* متن خطخورده */&lt;br /&gt;
	tools.strikeTextButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;s&amp;gt;&#039;, &#039;&amp;lt;/s&amp;gt;&#039;, &#039;متن خط خورده&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/c/c9/Button_strike.png&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;متن خط\u200cخورده&#039;,&lt;br /&gt;
		&#039;strike&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* توضیح */&lt;br /&gt;
	tools.commentButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;!--&#039;, &#039;--&amp;gt;&#039;, &#039;توضیح&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/3/34/Button_hide_comment.png&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;توضیح&#039;,&lt;br /&gt;
		&#039;hide-comment&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* ملزومات مقاله */&lt;br /&gt;
	tools.addEssentialThings = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;== جستارهای وابسته ==\n\n== منابع ==\n{{پانویس}}&#039;, &#039;&#039;, &#039;&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/e/ef/Add_note.jpg&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;ملزومات مقاله&#039;,&lt;br /&gt;
		&#039;add-note&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* خوشامدید */&lt;br /&gt;
	tools.welcome = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{&#039; + &#039;جا:خوشامدید|~~&#039; + &#039;~~}}&#039;,&lt;br /&gt;
				&#039;&#039;,&lt;br /&gt;
				&#039;&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/4/4a/Smilies_Alien_cool.png&#039;,&lt;br /&gt;
		&#039;خوشامدگویی&#039;,&lt;br /&gt;
		&#039;خوشامد&#039;,&lt;br /&gt;
		&#039;alien-cool&#039;&lt;br /&gt;
	);&lt;br /&gt;
	/* چپچین */&lt;br /&gt;
	tools.chapChin = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;{{چپ\u200cچین}}\n&#039;,&lt;br /&gt;
				&#039;\n{{پایان چپ\u200cچین}}&#039;,&lt;br /&gt;
				&#039;متن چپ\u200cچین\u200cشده&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/en/e/ea/Button_align_left.png&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین\u200cکردن متن&#039;,&lt;br /&gt;
		&#039;چپ\u200cچین&#039;,&lt;br /&gt;
		&#039;align-left&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس بالا */&lt;br /&gt;
	tools.upperText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sup&amp;gt;&#039;, &#039;&amp;lt;/sup&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/en/8/80/Button_upper_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;اندیس بالا&#039;,&lt;br /&gt;
		&#039;upper-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* اندیس پایین */&lt;br /&gt;
	tools.lowerText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&#039;&amp;lt;sub&amp;gt;&#039;, &#039;&amp;lt;/sub&amp;gt;&#039;, &#039;اندیس&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/en/7/70/Button_lower_letter.png&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;اندیس پایین&#039;,&lt;br /&gt;
		&#039;lower-letter&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* تغییرمسیر */&lt;br /&gt;
	tools.redirectButton = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(&#039;&#039;);&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;#تغییرمسیر [[&#039;,&lt;br /&gt;
				&#039;]]&#039;,&lt;br /&gt;
				&#039;پیوند&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/en/c/c8/Button_redirect.png&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;تغییرمسیر&#039;,&lt;br /&gt;
		&#039;redirect&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* سال میلادی */&lt;br /&gt;
	tools.gregYear = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			insertTags(&lt;br /&gt;
				&#039;[[&#039;,&lt;br /&gt;
				&#039; (میلادی)|]]&#039;,&lt;br /&gt;
				&#039;سال&#039;&lt;br /&gt;
			);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/a/a7/Button_cal.png&#039;,&lt;br /&gt;
		&#039;سال میلادی&#039;,&lt;br /&gt;
		&#039;میلادی&#039;,&lt;br /&gt;
		&#039;cal&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* مرتبسازی */&lt;br /&gt;
	tools.sortText = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianTools.persianSortText);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/wikipedia/fa/3/33/Button_sort.png&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی بر اساس الفبا&#039;,&lt;br /&gt;
		&#039;مرتب\u200cسازی&#039;,&lt;br /&gt;
		&#039;sort&#039;&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	/* شد! */&lt;br /&gt;
	tools.shod = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			setEditorContents(getEditorContents().trimRight() + &#039;\n:{{شد}} ~~&#039; + &#039;~~&#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		true,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/5/5b/Button_check.png&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;شد&#039;,&lt;br /&gt;
		&#039;check&#039;&lt;br /&gt;
	);&lt;br /&gt;
   /* عدد انگلیسی */&lt;br /&gt;
	tools.toEnNumRobust = buttonGenerator(&lt;br /&gt;
		function () {&lt;br /&gt;
			applyOnSelection(persianWikiTools.robustToEnglishDigits);&lt;br /&gt;
		},&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		false,&lt;br /&gt;
		&#039;//commons.islamical.org/w/images/f/f5/Button_enNum.png&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;عدد انگلیسی&#039;,&lt;br /&gt;
		&#039;ToEnNumberRobust&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(function () {&lt;br /&gt;
		// کد مناسب ویرایشگر جدید متنی&lt;br /&gt;
		/*mw.hook(&#039;ve.activationComplete&#039;).add(function () {&lt;br /&gt;
			var surface = ve.init.target.getSurface();&lt;br /&gt;
			if (surface.getMode() === &#039;source&#039;) {&lt;br /&gt;
				$(&#039;#firstHeading&#039;).append($(&#039;&amp;lt;img&amp;gt;&#039;, { src: &#039;//commons.islamical.org/wikipedia/fa/f/fc/Button_super_tool.png&#039; }).click(function () {&lt;br /&gt;
					$(&#039;.ve-ce-contentBranchNode&#039;).get().forEach(function (x) {&lt;br /&gt;
						x.innerText = persianWikiTools.superTool(x.innerText);&lt;br /&gt;
					});&lt;br /&gt;
	            }));&lt;br /&gt;
			}&lt;br /&gt;
		});*/&lt;br /&gt;
&lt;br /&gt;
		var extraEditButtons = [],&lt;br /&gt;
			extraMoveButtons = [],&lt;br /&gt;
			space = &#039; &#039;;&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(tools.toggleDirection, space, tools.ykArabic, tools.dig, space, tools.urlFix, tools.fixBadLinks, space, tools.welcome,&lt;br /&gt;
			tools.noSource, tools.sus, tools.tone, tools.wikify,&lt;br /&gt;
			tools.shod, tools.cleanup, tools.speedyDel, tools.prod, space, tools.redirectButton,&lt;br /&gt;
			tools.gregYear, tools.strikeTextButton, tools.chapChin, tools.commentButton, space, tools.sortText, space, tools.picCopy, tools.picSource, space, tools.toEnNumRobust);&lt;br /&gt;
&lt;br /&gt;
		extraEditButtons = extraEditButtons.concat(space).concat(window.userCustomEditButtons || []);&lt;br /&gt;
&lt;br /&gt;
		extraMoveButtons = extraMoveButtons.concat(tools.superToolMove, space, tools.toggleDirection, space,&lt;br /&gt;
			tools.ykArabic, tools.zwnj, tools.applyOrthography, tools.digMove, tools.punc, space, tools.dictation);&lt;br /&gt;
&lt;br /&gt;
		$(&#039;#persian-wiki-tools&#039;).remove();&lt;br /&gt;
		if ($(&#039;#wpTextbox1&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;div&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;,&lt;br /&gt;
				dir: &#039;rtl&#039;,&lt;br /&gt;
				style: &#039;float:right;&#039;&lt;br /&gt;
			}).append(extraEditButtons).insertBefore(&#039;#wpTextbox1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($(&#039;#movepage&#039;).length !== 0) {&lt;br /&gt;
			$(&#039;&amp;lt;span&amp;gt;&#039;, {&lt;br /&gt;
				id: &#039;persian-wiki-tools&#039;&lt;br /&gt;
			}).append(extraMoveButtons).insertAfter(&#039;#wpNewTitle&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-purgetab.js&amp;diff=231</id>
		<title>مدیاویکی:Gadget-purgetab.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-purgetab.js&amp;diff=231"/>
		<updated>2026-11-04T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ترجمه&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Add &amp;quot;Purge&amp;quot; content action link.&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
  */&lt;br /&gt;
$( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || !mw.config.get( &#039;wgIsArticle&#039; ) ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		mw.config.get( &#039;skin&#039; ) === &#039;vector&#039; || mw.config.get( &#039;skin&#039; ) === &#039;vector-2022&#039; ? &#039;خالی کردن میانگیر&#039; : &#039;*&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;خالی کردن میانگیر صفحه‌ی جاری&#039;,&lt;br /&gt;
		&#039;*&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(node).on( &#039;click&#039;, function (e) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then(function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		});&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-purgetab.js&amp;diff=230</id>
		<title>مدیاویکی:Gadget-purgetab.js</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-purgetab.js&amp;diff=230"/>
		<updated>2026-11-04T19:57:27Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: purge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Add &amp;quot;Purge&amp;quot; content action link.&lt;br /&gt;
 *&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.api&lt;br /&gt;
 *&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/Snippets/Purge_action&lt;br /&gt;
  */&lt;br /&gt;
$( function () {&lt;br /&gt;
	if ( $( &#039;#ca-purge&#039; ).length || !mw.config.get( &#039;wgIsArticle&#039; ) ) return;&lt;br /&gt;
	var node = mw.util.addPortletLink(&lt;br /&gt;
		&#039;p-cactions&#039;,&lt;br /&gt;
		mw.util.getUrl( null, { action: &#039;purge&#039; } ),&lt;br /&gt;
		mw.config.get( &#039;skin&#039; ) === &#039;vector&#039; || mw.config.get( &#039;skin&#039; ) === &#039;vector-2022&#039; ? &#039;Purge&#039; : &#039;*&#039;,&lt;br /&gt;
		&#039;ca-purge&#039;,&lt;br /&gt;
		&#039;Purge the server cache of this page&#039;,&lt;br /&gt;
		&#039;*&#039;&lt;br /&gt;
	);&lt;br /&gt;
	$(node).on( &#039;click&#039;, function (e) {&lt;br /&gt;
		new mw.Api().post( { action: &#039;purge&#039;, titles: mw.config.get( &#039;wgPageName&#039; ) } ).then(function () {&lt;br /&gt;
			location.reload();&lt;br /&gt;
		}, function () {&lt;br /&gt;
			mw.notify( &#039;Purge failed&#039;, { type: &#039;error&#039; } );&lt;br /&gt;
		});&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%DA%A9%DB%8C%D9%87%D8%A7%D9%86/%DB%B1%DB%B3%DB%B2%DB%B2&amp;diff=229</id>
		<title>کیهان/۱۳۲۲</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%DA%A9%DB%8C%D9%87%D8%A7%D9%86/%DB%B1%DB%B3%DB%B2%DB%B2&amp;diff=229"/>
		<updated>2026-11-04T15:03:55Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد صفحه&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{header&lt;br /&gt;
 | title      = [[../]]&lt;br /&gt;
 | author     = &lt;br /&gt;
 | translator = &lt;br /&gt;
 | section    = ۱۳۲۲&lt;br /&gt;
 | previous   = &lt;br /&gt;
 | next       = &lt;br /&gt;
 | notes      = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [[کیهان/شماره ۳۶۱|شماره ۳۶۱]] - یکشنبه ۶ آذر ۱۳۲۲ {{Commons link|Kayhan13220361.pdf}} ([[فهرست:Kayhan13220361.pdf|فهرست]])&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%DA%A9%D9%88%DA%86%DA%A9%D8%AA%D8%B1&amp;diff=228</id>
		<title>الگو:کوچکتر</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%DA%A9%D9%88%DA%86%DA%A9%D8%AA%D8%B1&amp;diff=228"/>
		<updated>2026-11-04T14:19:15Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد الگو&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;span style=&amp;quot;font-size: 83%;{{#if:{{{style|}}}|{{{style}}};}}&amp;quot;&amp;gt;{{{text|{{{1}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation|Template:x-smaller/doc}}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Smaller&amp;diff=227</id>
		<title>الگو:Smaller</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Smaller&amp;diff=227"/>
		<updated>2026-11-04T14:18:54Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: تغییرمسیر&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#تغییر_مسیر [[الگو:کوچکتر]]&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&amp;diff=226</id>
		<title>الگو:پیوند ویکی‌انبار</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%DB%8C%D9%88%D9%86%D8%AF_%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&amp;diff=226"/>
		<updated>2026-11-04T14:17:24Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد الگو&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{smaller|{{#if:{{{override|}}}|&amp;lt;!-- &lt;br /&gt;
 --&amp;gt;{{#if:{{{2|}}}|(Indexes (multiple parts): [[Index:{{{1}}}|Part 1]], [[Index:{{{2}}}|Part 2]]{{#if:{{{3|}}}|, [[Index:{{{3}}}|Part 3]]}}{{#if:{{{4|}}}|, [[Index:{{{4}}}|Part 4]]}}{{#if:{{{5|}}}|, [[Index:{{{5}}}|Part 5]]}})|([[Index:{{{1}}}|Index]])}}&amp;lt;!-- &lt;br /&gt;
 --&amp;gt;|&amp;lt;!-- &lt;br /&gt;
 --&amp;gt;{{#if:{{{2|}}}|(Commons file (multiple parts): [[:File:{{{1}}}|Part 1]], [[:File:{{{2}}}|Part 2]]{{#if:{{{3|}}}|, [[:File:{{{3}}}|Part 3]]}}{{#if:{{{4|}}}|, [[:File:{{{4}}}|Part 4]]}}{{#if:{{{5|}}}|, [[:File:{{{5}}}|Part 5]]}})|([[:File:{{{1}}}|پرونده ویکی‌انبار]])}}&amp;lt;!-- &lt;br /&gt;
 --&amp;gt;}}}}[[Category:Scans without index pages]]&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Commons_link&amp;diff=225</id>
		<title>الگو:Commons link</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:Commons_link&amp;diff=225"/>
		<updated>2026-11-04T14:16:33Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: تغییرمسیر&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#تغییر_مسیر [[الگو:پیوند ویکی‌انبار]]&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=/%DB%B1%DB%B3%DB%B2%DB%B2/&amp;diff=224</id>
		<title>/۱۳۲۲/</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=/%DB%B1%DB%B3%DB%B2%DB%B2/&amp;diff=224"/>
		<updated>2026-11-04T14:15:24Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد صفحه&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{header&lt;br /&gt;
 | title      = [[../]]&lt;br /&gt;
 | author     = &lt;br /&gt;
 | translator = &lt;br /&gt;
 | section    = ۱۳۲۲&lt;br /&gt;
 | previous   = &lt;br /&gt;
 | next       = &lt;br /&gt;
 | notes      = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [[کیهان/شماره ۳۶۱|شماره ۳۶۱]] - یکشنبه ۶ آذر ۱۳۲۲ {{Commons link|Kayhan13220361.pdf}} ([[فهرست:Kayhan13220361.pdf|فهرست]])&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_index_data_config&amp;diff=223</id>
		<title>مدیاویکی:Proofreadpage index data config</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_index_data_config&amp;diff=223"/>
		<updated>2026-11-04T13:00:42Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد اسکریپت&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
    &amp;quot;wikidata_item&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;wikibase-itemid&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;آیتم ویکی‌داده&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;wikibase-itemid&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Title&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;عنوان اصلی&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;title&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Subtitle&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;عنوان فرعی&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;subtitle&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Volume&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;جلد&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Issue&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;شماره&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Edition&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;نسخه&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Author&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;نویسنده&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: [&lt;br /&gt;
            &amp;quot;, &amp;quot;,&lt;br /&gt;
            &amp;quot; et &amp;quot;,&lt;br /&gt;
            &amp;quot;\u003C/br\u003E&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;author&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Foreword_Author&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;نویسندهٔ پیشگفتار&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;foreword_author&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Translator&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;مترجم&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;translator&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Editor&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;مصحح&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;editor&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Illustrator&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;تصویرگر&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;illustrator&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Lyricist&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;ترانه‌سرا&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;lyricist&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Composer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;آهنگساز&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;composer&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Singer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;خواننده&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;singer&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Publisher&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;page&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;ناشر&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;publisher&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: [&lt;br /&gt;
            &amp;quot;;&amp;quot;,&lt;br /&gt;
            &amp;quot;asn&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Address&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;محل نشر&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;place&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Printer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;چاپخانه&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;چاپخانه&amp;quot;,&lt;br /&gt;
        &amp;quot;delimiter&amp;quot;: &amp;quot;;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Year&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;سال انتشار&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;year&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Source&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;pdf&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;نوع فایل&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;values&amp;quot;: {&lt;br /&gt;
            &amp;quot;djvu&amp;quot;: &amp;quot;djvu&amp;quot;,&lt;br /&gt;
            &amp;quot;pdf&amp;quot;: &amp;quot;pdf&amp;quot;,&lt;br /&gt;
            &amp;quot;jpg&amp;quot;: &amp;quot;jpg&amp;quot;,&lt;br /&gt;
            &amp;quot;png&amp;quot;: &amp;quot;png&amp;quot;,&lt;br /&gt;
            &amp;quot;gif&amp;quot;: &amp;quot;gif&amp;quot;,&lt;br /&gt;
            &amp;quot;tif&amp;quot;: &amp;quot;tif&amp;quot;,&lt;br /&gt;
            &amp;quot;ogg&amp;quot;: &amp;quot;ogg&amp;quot;,&lt;br /&gt;
            &amp;quot;webm&amp;quot;: &amp;quot;webm&amp;quot;,&lt;br /&gt;
            &amp;quot;mp3&amp;quot;: &amp;quot;mp3&amp;quot;,&lt;br /&gt;
            &amp;quot;_empty_&amp;quot;: &amp;quot;سایر&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Image&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;تصویر جلد&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Progress&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;X&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;پیشرفت&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true,&lt;br /&gt;
        &amp;quot;values&amp;quot;: {&lt;br /&gt;
            &amp;quot;T&amp;quot;: &amp;quot;هم‌سنج‌شده&amp;quot;,&lt;br /&gt;
            &amp;quot;V&amp;quot;: &amp;quot;در انتظار هم‌سنجی&amp;quot;,&lt;br /&gt;
            &amp;quot;C&amp;quot;: &amp;quot;در انتظار نمونه‌خوانی&amp;quot;,&lt;br /&gt;
            &amp;quot;OCR&amp;quot;: &amp;quot;در انتظار نویسه‌خوان&amp;quot;,&lt;br /&gt;
            &amp;quot;L&amp;quot;: &amp;quot;در انتظار بازسازی&amp;quot;,&lt;br /&gt;
            &amp;quot;X&amp;quot;: &amp;quot;فهرست صفحه مورد نیاز است (برای تأیید کامل، صحیح و بدون خطا بودن فایل قبل از تصحیح)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;progress&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Pages&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string/line&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;\u003Cpagelist /\u003E&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;نمایش برگه‌ها&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: false,&lt;br /&gt;
        &amp;quot;help&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;pagelist&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Volumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string/line&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 5,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;جلدها&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Remarks&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string/line&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;فهرست مطالب&amp;quot;,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;toc&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Notes&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string/line&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 3,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;یادداشت‌ها&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Header&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;سرنویس&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Footer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;پانویس&amp;quot;,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;displayed_from&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;hidden&amp;quot;: true,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;displayed_to&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;hidden&amp;quot;: true,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sectionnotes&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;string/line&amp;quot;,&lt;br /&gt;
        &amp;quot;size&amp;quot;: 3,&lt;br /&gt;
        &amp;quot;default&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;hidden&amp;quot;: true,&lt;br /&gt;
        &amp;quot;header&amp;quot;: true&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_template&amp;diff=222</id>
		<title>پودمان:Index template</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_template&amp;diff=222"/>
		<updated>2026-11-04T11:00:45Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;categoryForGenre = mw.loadData(&#039;پودمان:Work/genre&#039;)&lt;br /&gt;
categoryForForm = mw.loadData(&#039;پودمان:Work/form&#039;)&lt;br /&gt;
categoryForAward = mw.loadData(&#039;پودمان:Work/award&#039;)&lt;br /&gt;
&lt;br /&gt;
function withWikidataLink(wikitext, category)&lt;br /&gt;
	if wikitext == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	new_wikitext = mw.ustring.gsub(wikitext, &#039;%[%[([^|%]]*)%]%]&#039;, function(page)&lt;br /&gt;
		return addWikidataToLink(page, mw.ustring.gsub(page, &#039;%.*/&#039;, &#039;&#039;) , category)&lt;br /&gt;
	end)&lt;br /&gt;
	if new_wikitext ~= wikitext then&lt;br /&gt;
		return new_wikitext&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.gsub(wikitext, &#039;%[%[([^|]*)|([^|%]]*)%]%]&#039;, function(page, link)&lt;br /&gt;
		return addWikidataToLink(page, link, category)&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function addWikidataToLink(page, label, category)&lt;br /&gt;
    local title = mw.title.new( page )&lt;br /&gt;
    if title == nil then&lt;br /&gt;
    	return &#039;[[&#039; .. page .. &#039;|&#039; .. label .. &#039;]]&#039;&lt;br /&gt;
    end&lt;br /&gt;
    if title.isRedirect then&lt;br /&gt;
        title = title.redirectTarget&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tag = mw.html.create(&#039;span&#039;)&lt;br /&gt;
    local itemId = mw.wikibase.getEntityIdForTitle(title.fullText)&lt;br /&gt;
	tag:wikitext(&#039;[[&#039; .. page .. &#039;|&#039; .. label .. &#039;]]&#039;)&lt;br /&gt;
    if itemId ~= nil then&lt;br /&gt;
  	tag:wikitext( &#039; [[Image:Reasonator small logo wider white stripes.svg|15px|link=https://reasonator.toolforge.org/?q=&#039; .. itemId .. &#039;&amp;amp;lang=fa]] [[Image:Wikidocumentaries-logo.png|15px|link=https://wikidocumentaries-demo.wmflabs.org/&#039; .. itemId .. &#039;?language=fa]]&#039;)&lt;br /&gt;
    	if category ~= nil then&lt;br /&gt;
    		tag:wikitext(&#039;[[رده:&#039; .. category .. &#039;]]&#039;)&lt;br /&gt;
    	end&lt;br /&gt;
  end&lt;br /&gt;
  return tostring(tag)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
function addRow(metadataTable, key, value)&lt;br /&gt;
	if value then&lt;br /&gt;
		metadataTable:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;th&#039;)&lt;br /&gt;
				:attr(&#039;score&#039;, &#039;row&#039;)&lt;br /&gt;
				:css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
				:wikitext(key)&lt;br /&gt;
				:done()&lt;br /&gt;
			:tag(&#039;td&#039;):wikitext(value)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function splitFileNameInFileAndPage(title)&lt;br /&gt;
    local slashPosition = string.find(title.text, &amp;quot;/&amp;quot;)&lt;br /&gt;
    if slashPosition == nil then&lt;br /&gt;
    	return title.text,nil&lt;br /&gt;
    else&lt;br /&gt;
    	return string.sub(title.text, 1, slashPosition - 1), string.sub(title.text, slashPosition + 1)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function indexTemplate(frame)&lt;br /&gt;
	--create a clean table of parameters with blank parameters removed&lt;br /&gt;
	local data = (require &#039;Module:Index_data&#039;).indexDataWithWikidata(frame)&lt;br /&gt;
	local args = data.args&lt;br /&gt;
	local item = data.item&lt;br /&gt;
	&lt;br /&gt;
	local page = mw.title.getCurrentTitle()&lt;br /&gt;
	local html = mw.html.create()&lt;br /&gt;
	&lt;br /&gt;
	if item then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌های متصل به ویکی‌داده]]&amp;lt;indicator name=&amp;quot;wikidata&amp;quot;&amp;gt;[[File:Wikidata.svg|20px|ویکی‌داده|link=https://www.wikidata.org/wiki/&#039; .. item.id .. &#039;?uselang=fa]]&amp;lt;/indicator&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
        if next(item:getBestStatements(&#039;P629&#039;)) ~= nil then&lt;br /&gt;
            local p629statementvalue = item:getBestStatements(&#039;P629&#039;)[1].mainsnak.datavalue.value.id&lt;br /&gt;
            local p629statementitem = mw.wikibase.getEntity(p629statementvalue)&lt;br /&gt;
            for _, statement in pairs(p629statementitem:getBestStatements(&#039;P136&#039;)) do&lt;br /&gt;
                if statement.mainsnak.datavalue ~= nil then&lt;br /&gt;
                    genreId = statement.mainsnak.datavalue.value.id&lt;br /&gt;
&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            for _, statement in pairs(p629statementitem:getBestStatements(&#039;P7937&#039;)) do&lt;br /&gt;
                if statement.mainsnak.datavalue ~= nil then&lt;br /&gt;
                    formId = statement.mainsnak.datavalue.value.id&lt;br /&gt;
                    if categoryForForm[formId] then&lt;br /&gt;
                        html:wikitext(&#039;[[رده:&#039; .. categoryForForm[formId] .. &#039;]]&#039;)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            for _, statement in pairs(p629statementitem:getBestStatements(&#039;P166&#039;)) do&lt;br /&gt;
                if statement.mainsnak.datavalue ~= nil then&lt;br /&gt;
                    awardId = statement.mainsnak.datavalue.value.id&lt;br /&gt;
                    if categoryForAward[awardId] then&lt;br /&gt;
                        html:wikitext(&#039;[[رده:&#039; .. categoryForAward[awardId] .. &#039;]]&#039;)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        html:wikitext(&#039;[[رده:بدون پیوند به ویکی‌داده]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    --Left part&lt;br /&gt;
    local left = html:tag(&#039;div&#039;)&lt;br /&gt;
    if args.remarks or args.notes then&lt;br /&gt;
    	left:css(&#039;width&#039;, &#039;60%&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    left:css(&#039;float&#039;, &#039;left&#039;)&lt;br /&gt;
    --Image&lt;br /&gt;
    if args.image then&lt;br /&gt;
        local imageContainer = left:tag(&#039;div&#039;)&lt;br /&gt;
            :css({&lt;br /&gt;
                float = &#039;left&#039;,&lt;br /&gt;
                overflow = &#039;hidden&#039;,&lt;br /&gt;
                border = &#039;thin grey solid&#039;&lt;br /&gt;
            })&lt;br /&gt;
        local imageTitle = nil&lt;br /&gt;
        if tonumber(args.image) ~= nil then&lt;br /&gt;
            -- this is a page number&lt;br /&gt;
            imageTitle = mw.title.getCurrentTitle():subPageTitle(args.image)&lt;br /&gt;
        else&lt;br /&gt;
            -- this is an other file&lt;br /&gt;
            imageTitle = mw.title.new(args.image, &amp;quot;Media&amp;quot;)&lt;br /&gt;
            -- TODO mettre une catégorie pour les livres ayant une couverture qui ne provient pas du DJVU/PDF&lt;br /&gt;
        end&lt;br /&gt;
        if imageTitle == nil then&lt;br /&gt;
            imageContainer:wikitext(args.image)&lt;br /&gt;
            -- TODO mettre une catégorie de maintenance ici lorsque la couverture est manquante&lt;br /&gt;
        else&lt;br /&gt;
            local imageName, imagePage = splitFileNameInFileAndPage(imageTitle)&lt;br /&gt;
            if imagePage ~= nil then&lt;br /&gt;
	            imageContainer:wikitext(&#039;[[File:&#039; .. imageName .. &#039;|page=&#039; .. imagePage .. &#039;|200px]]&#039;)&lt;br /&gt;
	        else&lt;br /&gt;
	            imageContainer:wikitext(&#039;[[File:&#039; .. imageName .. &#039;|200px]]&#039;)&lt;br /&gt;
	        end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    --Metadata&lt;br /&gt;
    local metadataContainer = left:tag(&#039;div&#039;)&lt;br /&gt;
    if args.image then&lt;br /&gt;
    	metadataContainer:css(&#039;margin-left&#039;, &#039;160px&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    local metadataTable = metadataContainer:tag(&#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
    if args.title then&lt;br /&gt;
       if item then&lt;br /&gt;
    		addRow(metadataTable, &#039;عنوان&#039;, withWikidataLink(args.title, &#039;متصل به ویکی‌داده&#039;))&lt;br /&gt;
else &lt;br /&gt;
     addRow(metadataTable, &#039;عنوان&#039;, &#039;[[&#039; .. args.title .. &#039;]]&#039;)&lt;br /&gt;
    	end&lt;br /&gt;
    else&lt;br /&gt;
    	mw.addWarning(&#039;افزودن عنوان اثر&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	addRow(metadataTable, &#039;عنوان فرعی&#039;, withWikidataLink(args.subtitle))&lt;br /&gt;
&lt;br /&gt;
if args.volume then&lt;br /&gt;
     addRow(metadataTable, &#039;جلد&#039;, &#039;{{#invoke:ConvertDigit|main|&#039; .. args.volume .. &#039;}}&#039;)&lt;br /&gt;
else &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.issue then&lt;br /&gt;
     addRow(metadataTable, &#039;شماره&#039;, &#039;{{#invoke:ConvertDigit|main|&#039; .. args.issue .. &#039;}}&#039;)&lt;br /&gt;
else &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.edition then&lt;br /&gt;
	addRow(metadataTable, &#039;فارسی&#039;, &#039;{{#invoke:ConvertDigit|main|&#039; .. args.edition .. &#039;}}&#039;)&lt;br /&gt;
else &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.author then&lt;br /&gt;
    if item then&lt;br /&gt;
        local p50stmt = item[&#039;claims&#039;][&#039;P50&#039;][1]&lt;br /&gt;
        if p50stmt[&#039;mainsnak&#039;][&#039;snaktype&#039;] == &#039;somevalue&#039; then&lt;br /&gt;
            addRow(metadataTable, &#039;نویسنده&#039;, withWikidataLink(&#039;[[پدیدآورنده: پدیدآورنده ناشناس|ناشناس]]&#039;, &#039;نوشته‌شده توسط پدیدآورنده ناشناس&#039;))&lt;br /&gt;
        else&lt;br /&gt;
            addRow(metadataTable, &#039;نویسنده&#039;, withWikidataLink(args.author))&lt;br /&gt;
            -- local authors = item:formatPropertyValues( &#039;P50&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
            -- for author in string.gmatch(authors, &#039;([^,]+)&#039;) do&lt;br /&gt;
            --     html:wikitext(&#039;[[رده:&#039; .. author  ..  &#039; نویسنده]]&#039;)&lt;br /&gt;
            -- end&lt;br /&gt;
            local authors = item:getBestStatements(&#039;P50&#039;)&lt;br /&gt;
            for i, author in pairs(authors) do&lt;br /&gt;
                if author.mainsnak.snaktype == &#039;value&#039; then&lt;br /&gt;
                    local authorid = author.mainsnak.datavalue.value.id&lt;br /&gt;
                    local authoritem = mw.wikibase.getEntity(authorid)&lt;br /&gt;
                    local authorsitelink = authoritem:getSitelink(&#039;fawikisource&#039;)&lt;br /&gt;
                    if authorsitelink ~= nil then&lt;br /&gt;
                        local authorsitelinkname = mw.ustring.sub(authorsitelink, 12)&lt;br /&gt;
                        html:wikitext(&#039;[[رده:آثار &#039; .. authorsitelinkname  ..  &#039;]]&#039;)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else &lt;br /&gt;
        addRow(metadataTable, &#039;نویسنده&#039;, &#039;{{Al|&#039; .. args.author .. &#039;}} [[رده:آثار &#039; .. args.author .. &#039;]]&#039;)&lt;br /&gt;
    end&lt;br /&gt;
else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.translator then&lt;br /&gt;
    if item then&lt;br /&gt;
        local p655stmt = item[&#039;claims&#039;][&#039;P655&#039;][1]&lt;br /&gt;
        if p655stmt[&#039;mainsnak&#039;][&#039;snaktype&#039;] == &#039;somevalue&#039; then&lt;br /&gt;
            addRow(metadataTable, &#039;مترجم&#039;, withWikidataLink(&#039;[[پدیدآورنده: پدیدآورنده ناشناس|ناشناس]]&#039;, &#039;مترجم ناشناس&#039;))&lt;br /&gt;
        else&lt;br /&gt;
            addRow(metadataTable, &#039;مترجم&#039;, withWikidataLink(args.translator))&lt;br /&gt;
            -- local translators = item:formatPropertyValues( &#039;P655&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
            -- for translator in string.gmatch(translators, &#039;([^,]+)&#039;) do&lt;br /&gt;
            --     html:wikitext(&#039;[[رده:&#039; .. translator  ..  &#039;مترجم]]&#039;)&lt;br /&gt;
            -- end&lt;br /&gt;
            local translators = item:getBestStatements(&#039;P655&#039;)&lt;br /&gt;
            for i, translator in pairs(translators) do&lt;br /&gt;
                if translator.mainsnak.snaktype == &#039;value&#039; then&lt;br /&gt;
                    local translatorid = translator.mainsnak.datavalue.value.id&lt;br /&gt;
                    local translatoritem = mw.wikibase.getEntity(translatorid)&lt;br /&gt;
                    local translatorsitelink = translatoritem:getSitelink(&#039;fawikisource&#039;)&lt;br /&gt;
                    if translatorsitelink ~= nil then&lt;br /&gt;
                        local translatorsitelinkname = mw.ustring.sub(translatorsitelink, 12)&lt;br /&gt;
                        html:wikitext(&#039;[[رده:آثار &#039; .. translatorsitelinkname  ..  &#039;]]&#039;)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else &lt;br /&gt;
        addRow(metadataTable, &#039;مترجم&#039;, &#039;{{Al|&#039; .. args.translator .. &#039;}} [[رده:آثار &#039; .. args.translator .. &#039;]]&#039;)&lt;br /&gt;
    end&lt;br /&gt;
else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.foreword_author then&lt;br /&gt;
if item then&lt;br /&gt;
    addRow(metadataTable, &#039;نویسندهٔ پیشگفتار&#039;, withWikidataLink(args.foreword_author))&lt;br /&gt;
        local foreword_authors = item:formatPropertyValues( &#039;P2679&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for foreword_author in string.gmatch(foreword_authors, &#039;([^,]+)&#039;) do&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
   addRow(metadataTable, &#039;نویسندهٔ پیشگفتار&#039;, &#039;{{Al|&#039; .. args.foreword_author .. &#039;}}&#039;)&lt;br /&gt;
 end&lt;br /&gt;
else &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.afterword_author then&lt;br /&gt;
if item then&lt;br /&gt;
    addRow(metadataTable, &#039;نویسندهٔ ضمیمه&#039;, withWikidataLink(args.afterword_author))&lt;br /&gt;
        local afterword_authors = item:formatPropertyValues( &#039;P2680&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for afterword_author in string.gmatch(afterword_authors, &#039;([^,]+)&#039;) do&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
   addRow(metadataTable, &#039; نویسندهٔ ضمیمه&#039;, &#039;{{Al|&#039; .. args.afterword_author .. &#039;}}&#039;)&lt;br /&gt;
 end&lt;br /&gt;
else &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.editor then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;مصحح&#039;, withWikidataLink(args.editor))&lt;br /&gt;
    local editors = item:formatPropertyValues( &#039;P98&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for editor in string.gmatch(editors, &#039;([^,]+)&#039;) do&lt;br /&gt;
    html:wikitext(&#039;[[رده:آثار &#039; ..  editor  ..  &#039;]]&#039;)&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
   addRow(metadataTable, &#039;مصحح&#039;, &#039;{{Al|&#039; .. args.editor .. &#039;}}&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
	addRow(metadataTable, &#039;تصویرگر&#039;, withWikidataLink(args.illustrator))&lt;br /&gt;
&lt;br /&gt;
if args.lyricist then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;ترانه‌سرا&#039;, withWikidataLink(args.lyricist))&lt;br /&gt;
    local lyricists = item:formatPropertyValues( &#039;P676&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for lyricist in string.gmatch(lyricists, &#039;([^,]+)&#039;) do&lt;br /&gt;
    html:wikitext(&#039;[[رده:آثار &#039; ..  lyricist  ..  &#039;]]&#039;)&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
   addRow(metadataTable, &#039;ترانه‌سرا&#039;, &#039;{{Al|&#039; .. args.lyricist .. &#039;}}&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
if args.composer then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;آهنگساز&#039;, withWikidataLink(args.composer))&lt;br /&gt;
    local composers = item:formatPropertyValues( &#039;P86&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for composer in string.gmatch(composers, &#039;([^,]+)&#039;) do&lt;br /&gt;
    html:wikitext(&#039;[[رده: آثار تصنیف‌شده توسط&#039; ..  composer  ..  &#039;]]&#039;)&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
   addRow(metadataTable, &#039;آهنگساز&#039;, &#039;{{Al|&#039; .. args.composer .. &#039;}}&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
if args.singer then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;خواننده&#039;, withWikidataLink(args.singer))&lt;br /&gt;
    local singers = item:formatPropertyValues( &#039;P175&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for singer in string.gmatch(singers, &#039;([^,]+)&#039;) do&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
   addRow(metadataTable, &#039;خواننده&#039;, &#039;{{Al|&#039; .. args.singer .. &#039;}}&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
if args.publisher then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;ناشر&#039;, withWikidataLink(args.publisher))&lt;br /&gt;
    local publishers = item:formatPropertyValues( &#039;P123&#039;, { mw.wikibase.entity.claimRanks.RANK_NORMAL } )[&#039;value&#039;]&lt;br /&gt;
   for publisher in string.gmatch(publishers, &#039;([^,]+)&#039;) do&lt;br /&gt;
    html:wikitext(&#039;[[رده: آثار منتشرشده توسط &#039; ..  publisher  ..  &#039;]]&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
   addRow(metadataTable, &#039;ناشر&#039;, &#039;[[ناشر:&#039; .. args.publisher .. &#039;|&#039; .. args.publisher .. &#039;]]&#039;)&lt;br /&gt;
 end&lt;br /&gt;
 else&lt;br /&gt;
html:wikitext( &#039;[[رده:نمایه‌های بدون اطلاعات ناشر]]&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if args.address then&lt;br /&gt;
if item then&lt;br /&gt;
	addRow(metadataTable, &#039;مکان نشر&#039;, withWikidataLink(args.address))&lt;br /&gt;
 else&lt;br /&gt;
   addRow(metadataTable, &#039;مکان نشر&#039;, &#039;[[:w:fa:&#039; .. args.address .. &#039;|&#039; .. args.address .. &#039;]]&#039;)&lt;br /&gt;
end&lt;br /&gt;
  else &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
    if args.year then&lt;br /&gt;
addRow(metadataTable, &#039;سال چاپ&#039;, &#039;{{#invoke:ConvertDigit|main|&#039; .. args.year .. &#039;}}  [[رده:آثار {{#invoke:ConvertDigit|main|&#039; .. args.year .. &#039;}} ]]&#039; )&lt;br /&gt;
else &lt;br /&gt;
html:wikitext(&#039;[[رده:آثار نمونه‌خوانی‌نشده بدون سال چاپ]]&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
	addRow(metadataTable, &#039;چاپخانه&#039;, withWikidataLink(args.printer))&lt;br /&gt;
&lt;br /&gt;
	if args.source == &#039;djvu&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, &#039;[[File:DjVu-logo.svg|25px|link=File:&#039; .. mw.title.getCurrentTitle().text ..&#039;]] [[File:BookReader-favicon.svg|20px|link={{fullurl:toollabs:bookreader/fa/{{{n|{{PAGENAMEE}}}}}}}]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;pdf&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, &#039;[[File:Icon pdf.svg|25px|link=File:&#039; .. mw.title.getCurrentTitle().text ..&#039;]] [[File:BookReader-favicon.svg|20px|link={{fullurl:toollabs:bookreader/fa/{{{n|{{PAGENAMEE}}}}}}}]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;ogg&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, &#039;[[File:Speaker Icon.svg|20px|link=File:&#039; .. mw.title.getCurrentTitle().text ..&#039;]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;webm&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, &#039;[[File:Open Iconic video.svg|20px|link=File:&#039; .. mw.title.getCurrentTitle().text ..&#039;]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;mp3&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, &#039;[[File:Speaker Icon.svg|20px|link=File:&#039; .. mw.title.getCurrentTitle().text ..&#039;]]&#039;)&lt;br /&gt;
&lt;br /&gt;
		--add an indicator linking to the usages&lt;br /&gt;
		local query = &#039;SELECT ?item ?itemLabel ?pages ?page WHERE {\n  ?item wdt:P996 &amp;lt;http://commons.wikimedia.org/wiki/Special:FilePath/&#039; .. mw.uri.encode(mw.title.getCurrentTitle().text, &#039;PATH&#039;) .. &#039;&amp;gt; .\n  OPTIONAL { ?page schema:about ?item ; schema:isPartOf &amp;lt;https://fa.wikisource.org/&amp;gt; . }\n  OPTIONAL { ?item wdt:P304 ?pages . }\n  SERVICE wikibase:label { bd:serviceParam wikibase:language &amp;quot;[AUTO_LANGUAGE],fa&amp;quot;.\n}}&#039;&lt;br /&gt;
		html:wikitext(&#039;&amp;lt;indicator name=&amp;quot;index-scan-wikidata&amp;quot;&amp;gt;[[File:Wikidata Query Service Favicon.svg|20px|ویکی‌داده|link=https://query.wikidata.org/embed.html#&#039; .. mw.uri.encode(query, &#039;PATH&#039;) .. &#039;]]&amp;lt;/indicator&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		addRow(metadataTable, &#039;منبع&#039;, args.source)&lt;br /&gt;
	end&lt;br /&gt;
	if args.progress == &#039;T&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار هم‌سنج‌شده]][[:رده:آثار هم‌سنج‌شده|همهٔ برگ‌های این اثر هم‌سنجی شده و درست هستند]]&#039;)&lt;br /&gt;
	elseif args.progress == &#039;V&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار نمونه‌خوانی‌شده]][[:رده:آثار نمونه‌خوانی‌شده|همهٔ برگ‌های این اثر نمونه‌خوانی شده‌اند اما همگی هم‌سنجی نشده‌اند]]&#039;)&lt;br /&gt;
	elseif args.progress == &#039;C&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار نمونه‌خوانی‌نشده]][[:رده:آثار نمونه‌خوانی‌نشده|در انتظار نمونه‌خوانی]]&#039;)&lt;br /&gt;
	elseif args.progress == &#039;OCR&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار نیازمند نویسه‌خوان]][[:رده:آثار نیازمند نویسه‌خوان|نیازمند نویسه‌خوان نرم‌افزار او‌سی‌آر]]&#039;)&lt;br /&gt;
	elseif args.progress == &#039;L&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار نیازمند بازسازی پرونده]]&amp;lt;span style=&amp;quot;color: #FF0000; &amp;quot;&amp;gt;[[:رده:آثار نیازمند بازسازی پرونده|	پرونده منبع باید پیش از نمونه‌خوانی بازسازی شود]]&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
   elseif args.progress == &#039;X&#039; then&lt;br /&gt;
		addRow(metadataTable, &#039;پیشرفت&#039;, &#039;[[رده:آثار نیازمند رسیدگی به پرونده]][[:رده:آثار نیازمند رسیدگی به پرونده|	پیش از نمونه‌خوانی یک pagelist برای پرونده درست کنید تا از صحت پرونده اطمینان یابید]]&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
	addRow(metadataTable, &#039;جلدها&#039;, args.volumes)&lt;br /&gt;
	&lt;br /&gt;
	if args.pages then&lt;br /&gt;
		left:tag(&#039;div&#039;):css(&#039;clear&#039;, &#039;both&#039;)&lt;br /&gt;
		left:tag(&#039;h3&#039;):wikitext(&#039;برگ‌ها &amp;lt;br&amp;gt; {{نوار پیشرفت|{{PAGENAME}}}}&#039;)&lt;br /&gt;
		left:tag(&#039;div&#039;):attr(&#039;id&#039;, &#039;pagelist&#039;):css({&lt;br /&gt;
			background = &#039;#F0F0F0&#039;,&lt;br /&gt;
			[&#039;padding-left&#039;] = &#039;0.5em&#039;,&lt;br /&gt;
			[&#039;text-align&#039;] = &#039;justify&#039;&lt;br /&gt;
		}):newline():wikitext(args.pages):newline()&lt;br /&gt;
	else&lt;br /&gt;
		mw.addWarning(&#039;ایجاد فهرست برگ‌ها&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.remarks or args.notes then&lt;br /&gt;
		local right = html:tag(&#039;div&#039;):css({&lt;br /&gt;
			width = &#039;35%;&#039;,&lt;br /&gt;
			[&#039;padding-left&#039;] = &#039;1em&#039;,&lt;br /&gt;
			float = &#039;left&#039;&lt;br /&gt;
		})&lt;br /&gt;
		if args.remarks then&lt;br /&gt;
			right:tag(&#039;div&#039;):attr(&#039;id&#039;, &#039;remarks&#039;):wikitext(args.remarks)&lt;br /&gt;
		end&lt;br /&gt;
		if args.notes then&lt;br /&gt;
			right:tag(&#039;hr&#039;):css({&lt;br /&gt;
				[&#039;margin-top&#039;] = &#039;1em&#039;,&lt;br /&gt;
				[&#039;margin-bottom&#039;] = &#039;1em&#039;&lt;br /&gt;
			})&lt;br /&gt;
			right:tag(&#039;div&#039;):attr(&#039;id&#039;, &#039;notes&#039;):wikitext(args.notes)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	html:wikitext(&#039;[[رده:نمایه]]&#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.source == &#039;djvu&#039; then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌ها با فایل‌های DjVu]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;pdf&#039; then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌ها با فایل‌های پی‌دی‌اف]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;ogg&#039; then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌ها با فایل‌های OGG]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;webm&#039; then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌ها با فایل‌های وب‌ام]]&#039;)&lt;br /&gt;
	elseif args.source == &#039;mp3&#039; then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌ها با فایل‌های MP3]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if not args.remarks then&lt;br /&gt;
		html:wikitext(&#039;[[رده:نمایه‌های بدون فهرست]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(html)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
function p.indexTemplate( frame )&lt;br /&gt;
    return indexTemplate( frame )&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_data&amp;diff=221</id>
		<title>پودمان:Index data</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Index_data&amp;diff=221"/>
		<updated>2026-11-04T11:00:14Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[Retrieves the data from the index page and enriches it with Wikidata]]--&lt;br /&gt;
&lt;br /&gt;
local indexToWikidata = {&lt;br /&gt;
	-- title are specially managed&lt;br /&gt;
    [&#039;subtitle&#039;] =  &#039;P1680&#039;,&lt;br /&gt;
    [&#039;volume&#039;] = &#039;P478&#039;,&lt;br /&gt;
    [&#039;issue&#039;] = &#039;P433&#039;,&lt;br /&gt;
    [&#039;edition&#039;] = &#039;P393&#039;,   &lt;br /&gt;
    [&#039;author&#039;] = &#039;P50&#039;,&lt;br /&gt;
    [&#039;foreword_author&#039;] = &#039;P2679&#039;,&lt;br /&gt;
    [&#039;afterword_author&#039;] = &#039;P2680&#039;,&lt;br /&gt;
    [&#039;translator&#039;] = &#039;P655&#039;,&lt;br /&gt;
    [&#039;editor&#039;] = &#039;P98&#039;,&lt;br /&gt;
    [&#039;illustrator&#039;] = &#039;P110&#039;,&lt;br /&gt;
    [&#039;lyricist&#039;] = &#039;P676&#039;,&lt;br /&gt;
    [&#039;composer&#039;] = &#039;P86&#039;,&lt;br /&gt;
    [&#039;singer&#039;] = &#039;P175&#039;,&lt;br /&gt;
    [&#039;publisher&#039;] = &#039;P123&#039;,&lt;br /&gt;
    [&#039;printer&#039;] = &#039;P872&#039;,&lt;br /&gt;
    [&#039;address&#039;] = &#039;P291&#039;,&lt;br /&gt;
    [&#039;publishedin&#039;] = &#039;P1433&#039;,&lt;br /&gt;
--    [&#039;year&#039;] = &#039;P577&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function indexDataWithWikidata(frame)&lt;br /&gt;
	--create a clean table of parameters with blank parameters removed&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k,v in pairs(frame.args) do&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local item = nil&lt;br /&gt;
	if args.wikidata_item then&lt;br /&gt;
		item = mw.wikibase.getEntity(args.wikidata_item)&lt;br /&gt;
		if item == nil then&lt;br /&gt;
			mw.addWarning(&#039;L\&#039;identifiant d\&#039;Wikidata entity [[d:&#039; .. args.wikidata_item .. &#039;|&#039; .. args.wikidata_item .. &#039;]] put in the &amp;quot;Wikidata entity&amp;quot; parameter of the Book page: does not seem valid.&#039;) &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not item then&lt;br /&gt;
		return {&lt;br /&gt;
			[&#039;args&#039;] = args,&lt;br /&gt;
			[&#039;item&#039;] = nil&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- image depuis Wikidata&lt;br /&gt;
	if not args.image then&lt;br /&gt;
		for _, statement in pairs(item:getBestStatements(&#039;P18&#039;)) do&lt;br /&gt;
			if statement.mainsnak.datavalue.value ~= nil then&lt;br /&gt;
				args.image = statement.mainsnak.datavalue.value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- title depuis Wikidata&lt;br /&gt;
	if not args.title then&lt;br /&gt;
		local value = item:formatStatements(&#039;P1476&#039;)[&#039;value&#039;]&lt;br /&gt;
		if value == &#039;&#039; then&lt;br /&gt;
			value = item:getLabel() or &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if value ~= &#039;&#039; then&lt;br /&gt;
			local siteLink =  item:getSitelink()&lt;br /&gt;
			if siteLink then&lt;br /&gt;
				value = &#039;[[&#039; .. siteLink .. &#039;|&#039; .. value .. &#039;]]&#039;&lt;br /&gt;
			end&lt;br /&gt;
			args.title = value .. &#039;&amp;amp;nbsp;[[File:OOjs UI icon edit-ltr.svg|مشاهده و ویرایش در ویکی‌داده|10px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/&#039; .. item.id .. &#039;?uselang=fa#P1476]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- year property&lt;br /&gt;
    if not args.year then&lt;br /&gt;
		for _, statement in pairs(item:getBestStatements(&#039;P577&#039;)) do&lt;br /&gt;
			if statement.mainsnak.datavalue ~= nil then&lt;br /&gt;
				local current_year = statement.mainsnak.datavalue.value.time&lt;br /&gt;
                args[&#039;year&#039;] = mw.ustring.sub(current_year, 2, 5)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- other properties&lt;br /&gt;
	for arg, propertyId in pairs(indexToWikidata) do&lt;br /&gt;
		if not args[arg] then&lt;br /&gt;
			local value = item:formatStatements(propertyId)[&amp;quot;value&amp;quot;]&lt;br /&gt;
			if value ~= &#039;&#039; then&lt;br /&gt;
				args[arg] = value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[&#039;args&#039;] = args,&lt;br /&gt;
		[&#039;item&#039;] = item&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
function p.indexDataWithWikidata(frame)&lt;br /&gt;
    return indexDataWithWikidata(frame)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/genre&amp;diff=220</id>
		<title>پودمان:Work/genre</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/genre&amp;diff=220"/>
		<updated>2026-11-04T10:59:55Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q37484&#039;] = &#039;حماسه&#039;,&lt;br /&gt;
	[&#039;Q182357&#039;] = &#039;شعر غنایی&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q1123037&#039;] = &#039;Nursery rhyme&#039;,&lt;br /&gt;
	[&#039;Q1494806&#039;] = &#039;جفنگیات&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q1344&#039;] = &#039;اپرا&#039;,&lt;br /&gt;
	[&#039;Q1370860&#039;] = &#039;verse drama&#039;,&lt;br /&gt;
	[&#039;Q5774663&#039;] = &#039;نمایشنامهٔ تاریخی&#039;,&lt;br /&gt;
	[&#039;Q110324066&#039;] = &#039;نمایشنامهٔ مذهبی&#039;,&lt;br /&gt;
	[&#039;Q125894939&#039;] = &#039;mythical drama&#039;,&lt;br /&gt;
	[&#039;Q2305470&#039;] = &#039;نمایشنامهٔ اجتماعی&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q186424&#039;] = &#039;গোয়েন্দা কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q104100753&#039;] = &#039;সামাজিক কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q19765983&#039;] = &#039;রোমাণ্টিক কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q56451354&#039;] = &#039;শিশুতোষ কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q24925&#039;] = &#039;কল্পবিজ্ঞান&#039;,&lt;br /&gt;
	[&#039;Q1196408&#039;] = &#039;ঐতিহাসিক কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q16681629&#039;] = &#039;বিকল্প ঐতিহাসিক কল্পকাহিনী&#039;,&lt;br /&gt;
	[&#039;Q693&#039;] = &#039;উপকথা&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q740919&#039;] = &#039;সামাজিক উপন্যাস&#039;,&lt;br /&gt;
	[&#039;Q858330&#039;] = &#039;রোমাণ্টিক উপন্যাস&#039;,&lt;br /&gt;
	[&#039;Q319226&#039;] = &#039;রোমাঞ্চকর অভিযান উপন্যাস&#039;,&lt;br /&gt;
	[&#039;Q27217074&#039;] = &#039;রহস্য উপন্যাস&#039;,&lt;br /&gt;
	[&#039;Q192239&#039;] = &#039;رمان تاریخی&#039;,&lt;br /&gt;
	[&#039;Q6960620&#039;] = &#039;ভ্রমণ উপন্যাস&#039;,&lt;br /&gt;
	[&#039;Q21615367&#039;] = &#039;শিশুতোষ উপন্যাস&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q106645589&#039;] = &#039;ঐতিহাসিক প্রবন্ধ&#039;,&lt;br /&gt;
	[&#039;Q58854&#039;] = &#039;সাহিত্য সমালোচনা&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q1072723&#039;] = &#039;ভ্রমণ সাহিত্য&#039;,&lt;br /&gt;
	[&#039;Q1503133&#039;] = &#039;ভ্রমণ পঞ্জিকা&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q36279&#039;] = &#039;زندگی‌نامه&#039;,&lt;br /&gt;
	[&#039;Q4184&#039;] = &#039;আত্মজীবনী&#039;,&lt;br /&gt;
	[&#039;Q112983&#039;] = &#039;স্মৃতিকথা&#039;,&lt;br /&gt;
	[&#039;Q1129795&#039;] = &#039;জনপ্রিয় বৈজ্ঞানিক সাহিত্য&#039;,&lt;br /&gt;
	[&#039;Q3541116&#039;] = &#039;অপরাধমূলক সত্যকাহিনী&#039;,&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q83790&#039;] = &#039;পাঠ্যপুস্তক&#039;,&lt;br /&gt;
	[&#039;Q605076&#039;] = &#039;রান্নার বই&#039;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/form&amp;diff=219</id>
		<title>پودمان:Work/form</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/form&amp;diff=219"/>
		<updated>2026-11-04T10:59:27Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q8261&#039;] = &#039;رمان&#039;,&lt;br /&gt;
	[&#039;Q149537&#039;] = &#039;رمان کوتاه&#039;,&lt;br /&gt;
	[&#039;Q5185279&#039;] = &#039;شعر&#039;,&lt;br /&gt;
	[&#039;Q80056&#039;] = &#039;غزل‌واره&#039;,&lt;br /&gt;
	[&#039;Q49084&#039;] = &#039;داستان کوتاه&#039;,&lt;br /&gt;
	[&#039;Q25379&#039;] = &#039;نمایش‌نامه&#039;,&lt;br /&gt;
	[&#039;Q35760&#039;] = &#039;مقاله&#039;,&lt;br /&gt;
	[&#039;Q3328821&#039;] = &#039;روایت&#039;,&lt;br /&gt;
	[&#039;Q23622&#039;] = &#039;واژه‌نامه&#039;,&lt;br /&gt;
	[&#039;Q5292&#039;] = &#039;دانشنامه&#039;,&lt;br /&gt;
	[&#039;Q105420&#039;] = &#039;گلچین ادبی&#039;,&lt;br /&gt;
	[&#039;Q12106333&#039;] = &#039;مجموعه شعر&#039;,&lt;br /&gt;
	[&#039;Q65085460&#039;] = &#039;مجموعه نامه&#039;,&lt;br /&gt;
	[&#039;Q16324495&#039;] = &#039;مجموعه مقاله&#039;,&lt;br /&gt;
	[&#039;Q1279564&#039;] = &#039;مجموعه داستان کوتاه&#039;,&lt;br /&gt;
	[&#039;Q119318561&#039;] = &#039;مجموعه دراما&#039;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/award&amp;diff=218</id>
		<title>پودمان:Work/award</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Work/award&amp;diff=218"/>
		<updated>2026-11-04T10:59:06Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد پودمان&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
&lt;br /&gt;
	[&#039;Q108172262&#039;] = &#039;সাহিত্য অকাদেমি পুরস্কারপ্রাপ্ত&#039;,&lt;br /&gt;
	[&#039;Q7278760&#039;] = &#039;রবীন্দ্র পুরস্কারপ্রাপ্ত&#039;,&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_js_attributes&amp;diff=217</id>
		<title>مدیاویکی:Proofreadpage js attributes</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_js_attributes&amp;diff=217"/>
		<updated>2026-11-04T10:42:15Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: ایجاد صفحه&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author Title Year Publisher Header Footer Address Remarks Width Css Notes&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
	<entry>
		<id>https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_index_attributes&amp;diff=216</id>
		<title>مدیاویکی:Proofreadpage index attributes</title>
		<link rel="alternate" type="text/html" href="https://source.islamical.org/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Proofreadpage_index_attributes&amp;diff=216"/>
		<updated>2026-11-04T10:41:26Z</updated>

		<summary type="html">&lt;p&gt;Mojtabakd: بروزرسانی&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;type|نوع&lt;br /&gt;
Title|عنوان&lt;br /&gt;
Volume|جلد&lt;br /&gt;
Author|پدیدآورنده&lt;br /&gt;
Translator|مترجم&lt;br /&gt;
Editor|مصحح/ویراستار&lt;br /&gt;
School|دانشگاه&lt;br /&gt;
Publisher|ناشر&lt;br /&gt;
Address|نشانی&lt;br /&gt;
Year|سال (شمسی)&lt;br /&gt;
Key|کلید&lt;br /&gt;
Source|اسکن‌ها&lt;br /&gt;
Image|تصویر جلد&lt;br /&gt;
Progress|پیشرفت&lt;br /&gt;
Pages|چگونگی نمایش برگه‌ها|15&lt;br /&gt;
Volumes|جلدها|5&lt;br /&gt;
Remarks|فهرست کتاب|15&lt;br /&gt;
Width|کیفیت اسکن&lt;br /&gt;
Css|سی‌اس‌اس&lt;br /&gt;
Header|سرایند/سربرگ&lt;br /&gt;
Footer|پسایند/پانویس&lt;/div&gt;</summary>
		<author><name>Mojtabakd</name></author>
	</entry>
</feed>