Usuari:Coet/scripts/api.js: diferència entre les revisions
Contingut suprimit Contingut afegit
{{1000+AQ}}, {{1.000+AB}} i {{1000 éssers}} tb s'han esborrat; ordre alfabètic |
<nowiki>...</nowiki> dóna problemes amb la categorització! |
||
Línia 1: | Línia 1: | ||
//<nowiki> |
|||
/************** |
/************** |
||
* |
* |
||
Línia 246: | Línia 247: | ||
QueryString.prototype.create = QueryString.create; |
QueryString.prototype.create = QueryString.create; |
||
} |
} |
||
//</nowiki> |
Revisió del 11:40, 28 ago 2009
//<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§ion=\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"]["pageids"][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 (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 (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
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>