Vés al contingut

Usuari:Anskar/scripts/api.js

De la Viquipèdia, l'enciclopèdia lliure

Nota: Després de desar, heu de netejar la memòria cau del navegador per veure els canvis. En la majoria de navegadors amb Windows o Linux, premeu Ctrl+F5 o bé premeu Shift i cliqueu el botó "Actualitza" (Ctrl i "Actualitza" amb Internet Explorer). Vegeu més informació i instruccions per a cada navegador a Viquipèdia:Neteja de la memòria cau.

//<nowiki>
/**************
 *
 * Implemented by w:ca:User:Pasqual

   This source code needs topaz.js 
   Find it at w:ca:User:Pasqual/scripts/topaz.js
   Original script is at:
   * w:en:User:Topaz/init.js
   * w:en:User:Topaz/comm.js
   * w:en:User:Topaz/util.js 
   * w:en:User:Topaz/wputil.js                    *
                                                  *
                                     **************/

editingSection = location.href.search(/&action=edit&section=\d+/g)>-1;

function get_sizes(){ 
  langs=['aa', 'ab', 'af', 'ak', 'als', 'am', 'an', 'ang', 'ar', 'arc', 'arz', 'as', 'ast', 'av',
  'ay', 'az', 'ba', 'bar', 'bat-smg', 'bcl', 'be', 'be-x-old', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo',
  'bpy', 'br', 'bs', 'bug', 'bxr', 'ca', 'cbk-zam', 'cdo', 'ce', 'ceb', 'ch', 'cho', 'chr', 'chy',
  'closed-zh-tw', 'co', 'cr', 'crh', 'cs', 'csb', 'cu', 'cv', 'cy', 'cz', 'da', 'de', 'diq', 'dk',
  'dsb', 'dv', 'dz', 'ee', 'el', 'eml', 'en', 'eo', 'epo', 'es', 'et', 'eu', 'ext', 'fa', 'ff',
  'fi', 'fiu-vro', 'fj', 'fo', 'fr', 'frp', 'fur', 'fy', 'ga', 'gan', 'gd', 'gl', 'glk', 'gn',
  'got', 'gu', 'gv', 'ha', 'hak', 'haw', 'he', 'hi', 'hif', 'ho', 'hr', 'hsb', 'ht', 'hu', 'hy',
  'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'io', 'is', 'it', 'iu', 'ja', 'jbo', 'jp', 'jv',
  'ka', 'kaa', 'kab', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ksh', 'ku',
  'kv', 'kw', 'ky', 'la', 'lad', 'lb', 'lbe', 'lg', 'li', 'lij', 'lmo', 'ln', 'lo', 'lt', 'lv',
  'map-bms', 'mdf', 'mg', 'mh', 'mi', 'minnan', 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'mus',
  'my', 'myv', 'mzn', 'na', 'nah', 'nan', 'nap', 'nb', 'nds', 'nds-nl', 'ne', 'new', 'ng', 'nl',
  'nn', 'no', 'nomcom', 'nov', 'nrm', 'nv', 'ny', 'oc', 'om', 'or', 'os', 'pa', 'pag', 'pam',
  'pap', 'pdc', 'pi', 'pih', 'pl', 'pms', 'pnt', 'ps', 'pt', 'qu', 'rm', 'rmy', 'rn', 'ro',
  'roa-rup', 'roa-tara', 'ru', 'rw', 'sa', 'sah', 'sc', 'scn', 'sco', 'sd', 'se', 'sg', 'sh', 'si',
  'simple', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'srn', 'ss', 'st', 'stq', 'su', 'sv', 'sw',
  'szl', 'ta', 'te', 'tet', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tokipona', 'tp', 'tpi',
  'tr', 'ts', 'tt', 'tum', 'tw', 'ty', 'udm', 'ug', 'uk', 'ur', 'uz', 've', 'vec', 'vi', 'vls',
  'vo', 'wa', 'war', 'wo', 'wuu', 'xal', 'xh', 'yi', 'yo', 'za', 'zea', 'zh', 'zh-cfr',
  'zh-classical', 'zh-min-nan', 'zh-yue', 'zu'];

  // fetch
  params   =  {"titles": wgPageName,
               "prop": "revisions",
               "rvprop": "size|content",
               "indexpageids": "1"};

    api_url  =  wgServer + '/w/api.php?format=json&action=query&';
    api_url  += QueryString.create(params);
    api_req  =  topaz.comm.doreq(api_url);
    api_data =  api_req.responseText;
    api_data =  eval('(' + api_data + ')');

  // handle response
  if (api_data.query != "undefined"){
    page_data = api_data.query.pages;
    page_id   = api_data.query.ageids[0]; //= wgArticleId
    rev   = page_data[page_id].revisions[0];
    bytes = rev.size;
    
    textbox=document.getElementById("wpTextbox1");
    text  = ((wgAction == "edit" && textbox !== null) || wgAction == "submit") && !editingSection
          ? textbox.value
          : rev["*"];
    text_without_iw = text;
    text_without_cmt = text;

    //Got any template of the 1000 articles?
    is1of1000=false;
    tpls=['{{1000}}', '{{Els1000}}', '{{1000 Arts}}', '{{1000 Biografies}}', '{{1000 Ciència}}', 
          '{{1000 Ciències naturals}}', '{{1000 Filosofia}}', '{{1000 Geografia}}',
          '{{1000 Història}}', '{{1000 Llenguatge}}', '{{1000 Religió}}', '{{1000 Societat}}', 
          '{{1000 Tecnologia}}'];
    for (var tpl in tpls){ if (text.indexOf(tpls[tpl])>-1) {is1of1000=true; break;}}

    //remove interwiki links
    reInterwikis=new RegExp("\\[\\[.*:\\[^\\]\\n\\|\\]+\\]\\] *\\r?\\n?", "gi");
    iw=0;
    do {
      skip = String(reInterwikis.exec(text));
      sep_idx  = skip.indexOf(":");
      cur_lang = skip.substring(2,sep_idx);
      for (var lang in langs) {
        if (langs[lang] == cur_lang) {
          ++iw;
          text_without_iw = text_without_iw.replace(skip,"");
          //alert(langs[lang]+" :: "+cur_lang+" :: "+skip)
        }
      }
    } while (skip!="null");

    //remove comments
    reComments=new RegExp("<!--\\[^>\\]*--> *\\r?\\n?", "gi");
    do {
      skip = String(reComments.exec(text));
      text_without_cmt = text_without_cmt.replace(skip,"");
    } while (skip!="null");

    text_length       = text.length;
    iw_chars_number   = text.length - text_without_iw.length;
    cmt_chars_number  = text.length - text_without_cmt.length;
    valid_chars_number= text.length - (iw_chars_number+cmt_chars_number);
    return [text_length, iw_chars_number, cmt_chars_number, valid_chars_number, bytes, is1of1000];
  }
}

function carrega_mides(){
  bc_sizes=get_sizes();
  text_length       = bc_sizes[0];
  iw_chars_number   = bc_sizes[1];
  cmt_chars_number  = bc_sizes[2];
  valid_chars_number= bc_sizes[3];
  bytes             = bc_sizes[4];
  is1of1000         = bc_sizes[5];
  meta_idx          = valid_chars_number * 1.1; //.971 /* fins el 3-5-2013 es torna a computar a 1,1 en lloc de 0,971 */
  to_first_dec      = meta_idx.toString().indexOf(".")+1;
  meta_idx          = meta_idx.toPrecision(to_first_dec);

  colour = ["#FFFFE0","orange","blue"];
  if (is1of1000 === true) {
     if (meta_idx < 10000) colour=["red","orange","yellow"];
     else if (meta_idx < 30000) colour=["orange","red","blue"];
     else if (meta_idx >= 30000) colour=["lightgreen","yellow","black"];
  }


  var primer="content", segon="bodyContent";
  primerObj = document.getElementById(primer);
  segonObj  = document.getElementById(segon);

  var divSizes = document.createElement("div");
  avis = wgAction == "edit" || wgAction == "submit" ? "<b>No heu desat l'article!</b><br/></a>" : "";
  if (editingSection) avis +=  '<font size="-15%">Les dades corresponen<br/>a la darrera versió desada.</font><br/>';
  divSizes.innerHTML = '<div class="veSizes" id="sizes" style="position:fixed; right:5px; '+
                       'bottom:420px; float:right; padding:6px; z-index: 1; ' +
                       'background-color:'+colour[0]+'; '+
                       'border:1px solid '+colour[1]+'; color:'+colour[2]+';" ><a '+
                       'onclick="tanca()">'+avis+'<font size="-10%">'+
                       'octets:\t'+bytes+'<br/>'+
                       'caràcters:\t'+valid_chars_number+'</font><br/>'+
                       'índex:\t'+meta_idx+'</div>';
 
  primerObj.insertBefore(divSizes, segonObj);
  sizes=document.getElementById("sizes");
  setTimeout(amagaMostra(),6000);
}
if (wgNamespaceNumber === 0 && wgServer.indexOf("wikipedia.org")>-1) addOnloadHook (carrega_mides);

function amagaMostra(){sizes.style.display="None"}

function tanca(){
  sizes = document.getElementById("sizes");
  if (sizes) sizes.style.display="None";
}

/************************ *  *   *    *     *      *       *        *         *
 *
 * The following part of this script it is not necessary if you load Twinkle.js
 *
 */

if (typeof QueryString == "undefined") {
  function QueryString(qString) {
	this.string = qString;
	this.params = {};
 
	if( qString.length === 0 ) {
		return;
	}
 
	qString.replace(/\+/, ' ');
	var args = qString.split('&');
 
	for( var i = 0; i < args.length; ++i ) {
		var pair = args[i].split( '=' );
		var key = decodeURIComponent( pair[0] ), value = key;
 
		if( pair.length == 2 ) {
			value = decodeURIComponent( pair[1] );
		}
 
		this.params[key] = value;
	}
  }
 
  QueryString.static = null;
 
  QueryString.staticInit = function() {
	if( QueryString.static === null ) {
		QueryString.static = new QueryString(location.search.substring(1));
	}
  };
 
  QueryString.get = function(key) {
	QueryString.staticInit();
	return QueryString.static.get(key);
  };
 
  QueryString.prototype.get = function(key) {
	return this.params[key] ? this.params[key] : null;
  };
 
  QueryString.exists = function(key) {
	QueryString.staticInit();
	return QueryString.static.exists(key);
  };
 
  QueryString.prototype.exists = function(key) {
	return this.params[key] ? true : false;
  };
 
  QueryString.equals = function(key, value) {
	QueryString.staticInit();
	return QueryString.static.equals(key, value);
  };
 
  QueryString.prototype.equals = function(key, value) {
	return this.params[key] == value ? true : false;
  };
 
  QueryString.toString = function() {
	QueryString.staticInit();
	return QueryString.static.toString();
  };
 
  QueryString.prototype.toString = function() {
	return this.string ? this.string : null;
  };
 
  QueryString.create = function( arr ) {
	var resarr = Array();
	for( var i in arr ) {
		if( typeof arr[i] == 'undefined' ) {
			continue;
		}
		if( arr[i] instanceof Array ){
			var v =  Array();
			for(var j = 0; j < arr[i].length; ++j ) {
				v[j] = encodeURIComponent( arr[i][j] );
			}
			resarr.push( encodeURIComponent( i ) + '=' +  v.join('|') );
		} else {
			resarr.push( encodeURIComponent( i ) + '=' + encodeURIComponent( arr[i] ) );
		}
	}
 
	return resarr.join('&');
  };
  QueryString.prototype.create = QueryString.create;
}

//</nowiki>