مدیاویکی:Gadget-asbox.js

ویکی‌پدیا، آزادِ دانشنومه، جه

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
if (( mw.config.get('wgNamespaceNumber') === 0 && skin == 'vector' )) {
  mw.loader.using( 'jquery.ui', function() {
    stubAdd = {
 
      displayProgress: function( form, message ) {
        $('#'+form+' div').hide();
        $('#'+form).append ( $('<div style="text-align:center;margin:3em 0;"></div>').html( message+'<br/><img src="//upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif" />' ) );
      },
 
      displayError: function( form, error ) {
        $('#'+form+' div').hide();
        $('#'+form).append ( $('<div style="color:#990000;margin-top:0.4em;"></div>').html( 'Error: '+error ) );
      },
 
      getEditToken: function() {
        $.ajax({
          url: wgScriptPath + '/api.php?',
          data: 'action=query&prop=info&intoken=edit&titles=Main%20Page&indexpageids&format=json',
          dataType: 'json',
          success: function( data ) {
            if ( data.query.pages && data.query.pageids ) {
              var pageid = data.query.pageids[0];
              stubAdd.editToken = data.query.pages[pageid].edittoken;
            }
          }
        });
      },
      
      preparetext: function(form, summary, text){
         $.ajax({
           url: wgScriptPath + '/index.php?',
           data: 'title='+encodeURIComponent(mw.config.get('wgPageName'))+'&action=raw&ctype=text/plain',
           type: 'GET',
           success: function( data ) {
              data.replace(/\{\{\s*(پیچک|ناقص)\s*\}\}\n?/,"");               // خالی پیچک شابلون ره گینه.
              var splitedInterwiki = data.split(/^(?=\[\[[\w-]{2,}:)/m);    // میون‌ویکی ره پیدا و سوا کنه
              if( !/\n\n/.test(splitedInterwiki[0]) )
                  plitedInterwiki[0] = plitedInterwiki[0] + "\n";           // اگر انتهای قسمت قبل دو خط بعد نبود، بگذارد
              splitedInterwiki[0] = splitedInterwiki[0] + text + "\n";      // جای شابلون پیچک آخرین مکان قبل از اینترویکی‌ها است
              stubAdd.editPage( form, summary, splitedInterwiki.join("") ); // ادامهٔ کار
           }
         })
      },
 
      editPage: function( form, summary, text ) {
        $.ajax({
          url: wgScriptPath + '/api.php?',
          data: 'action=edit&title='+encodeURIComponent(mw.config.get('wgPageName'))+'&summary='+encodeURIComponent(summary)+'&text='+encodeURIComponent(text)+'&format=json&token='+encodeURIComponent(stubAdd.editToken),
          dataType: 'json',
          type: 'POST',
          success: function( data ) {
            if ( data.edit.result == "Success" ) {
              window.location.reload();
            } else {
              stubAdd.displayError( form, 'Unknown result from API.' );
            }
          },
          error: function( xhr ) {
            stubAdd.displayError( form, 'Edit failed.' );
            //console.debug( xhr.responseText );
          }
        });
      },
 
      launchDialog: function( interface ) {
        interface.dialog('open');
        stubAdd.getEditToken();
      },

      initialize: function() {
 
        // Function to make a list of images selectable
        $.fn.selectItem = function() {
          return this.each(function() {
            var containerId = this.id;
            var customId = 0;
            $('#'+containerId+' img').css('border', '8px solid transparent');
            $('#'+containerId+' img').each(function() {
              if (this.id == '') {
                this.id = 'select_img_' + customId;
                customId++;
              }
              $('#'+this.id).click(function() {
                  $('#'+containerId+'Selected').val(this.title);
                  $('#'+containerId+' img').css('border', '8px solid transparent');
                  $('#'+this.id).css('border', '8px solid #AED0EA');
              })
            });
          });
        };
 
        var $stublist = [];
		$.ajax({
          type: "GET",
		  async: false,
          url: "/w/api.php?action=query&list=embeddedin&eititle=Template:Asbox&eilimit=500&einamespace=10&format=json",
          success: function(data){
            for ( i in data.query.embeddedin ) {
              $stublist.push(data.query.embeddedin[i].title);
            }
			function sortPreparation(instr){      // solve persian problem on sorting by replace characters in strings
                return instr.replace(/ی/g,"ي")
                  .replace(/ک/g,"ك")
                  .replace(/گ/g,"كی")
                  .replace(/ژ/g,"زی")
                  .replace(/چ/g,"جی")
                  .replace(/پ/g,"بی");
            }
			$stublist.sort(function(a,b){ 
               var keyA = sortPreparation(a);
               var keyB = sortPreparation(b);
 
               if (keyA < keyB) return -1;
               if (keyA > keyB) return 1;
               return 0;
            });
          }
        });
 
 
        // Define stub interface
        $stubs = $('<div id="stubForm" style="position:relative;"></div>')
          .append( $('<div style="margin-top:0.4em;"></div>').html( 'انتخاب شابلونی پیچک: ' ).append( $('<select id="stubselect" style="padding:1px;vertical-align:baseline;"></select>') ) )
          .dialog({
            width: 500,
            autoOpen: false,
            title: 'پیچک شابلون ره بی‌یشتن',
            modal: true,
            buttons: { "بلا": function() { 
              $(this).dialog({buttons:{}});
              if ( typeof stubAdd.editToken !== 'undefined' ) {
                // Perform edit to page
                stubAdd.displayProgress( 'stubForm', 'پیچک شابلون ره بی‌یشتن...' );
                var template = '{{'+$('#stubselect').val()+'}}';
                stubAdd.preparetext( 'stubForm', 'پیچک شابلون ره ابزار جا بی‌یشتن', template );
              } else {
                stubAdd.displayError( 'stubForm', 'Could not retrieve edit token.' );
              }
            }}
          });
 
        $.each( $stublist, function(index, value) { $('#stubselect').append( $('<option></option>').val(value.replace(/^[^:]*:/,"")).html(value.replace(/^[^:]*:/,"")) ); });
 
        // Insert new tab into page
        var menustub = '<li id="wl-stub"><span><a onclick="stubAdd.launchDialog( $stubs, true ); return false;" href="#">پیچک</a></span></li>';
        $('#p-cactions ul').append(menustub);
      } // close initialize function
 
    } // close stubAdd object
    stubAdd.initialize();
  }) // close mw.loader
} // close if
//</nowiki>