Usuari:Joancreus/indexa.js
El codi que afegiu en aquesta pàgina podria tenir contingut maliciós que comprometi el vostre compte. Si no esteu segur si el codi a afegir és segur, pregunteu abans en la Taverna. El codi s'executarà en mostrar una previsualització d'aquesta pàgina. |
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.
(function () {
function HTTPRequest() {
if (typeof XMLHttpRequest != 'undefined') {
return new XMLHttpRequest();
}
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
return false;
}
/* Page class. Only the title argument is needed. */
var Page = function(title, lang, fam) {
r = HTTPRequest();
if (typeof(title) == 'undefined') {
alert("Error: Undefined title of page");
}
lang = typeof(lang) != 'undefined' ? lang : wgContentLanguage;
fam = typeof(fam) != 'undefined' ? fam : 'wikipedia';
/* Returns de title of the page. */
this.getTitle = function () { return title; }
/* Returns de language of the page. */
this.getLanguage = function () { return lang; }
/* Returns de family of the page. */
this.getFamily = function () { return family; }
this.getBaseURL = function () {
return "http://"+lang+"."+fam+".org";
}
/* Gets the edit token for editing the page. */
this.getEditToken = function () {
var url = this.getBaseURL() + '/w/api.php?format=json&action=query&prop=info&indexpageids=1&intoken=edit&titles='+title;
r.open('GET', url, false);
r.send(null);
var resp = eval('(' + r.responseText + ')');
return resp['query']['pages'][resp['query']['pageids'][0]]['edittoken'];
}
/* Gets the move token for moving the page. */
this.getMoveToken = function () {
var url = this.getBaseURL() + '/w/api.php?format=json&action=query&prop=info&indexpageids=1&intoken=move&titles='+title;
r.open('GET', url, false);
r.send(null);
var resp = eval('(' + r.responseText + ')');
return resp['query']['pages'][resp['query']['pageids'][0]]['movetoken'];
}
/* Returns de wiki content of the page. */
this.get = function () {
r = HTTPRequest();
r.open("GET", this.getBaseURL()+"/w/index.php?title="+title+"&action=raw", false);
r.send(null);
return r.responseText;
}
/* Returns de rendered html content of the page. */
this.getHTML = function () {
r.open("GET", this.getBaseURL()+"/w/index.php?title="+title+"&action=render", false);
r.send(null);
return r.responseText;
}
/* Posts content to a page. */
this.put = function (text, summary) {
var sum = summary || "";
var pars = 'action=edit&format=json&title='+encodeURIComponent(title)+'&summary='+encodeURIComponent(sum)+'&text='+encodeURIComponent(text)+'&token=' + encodeURIComponent(this.getEditToken());
r.open('POST', this.getBaseURL()+"/w/api.php", false);
r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
r.setRequestHeader('Connection', 'keep-alive');
r.setRequestHeader('Content-length', pars.length);
r.send(pars);
e = eval('('+r.responseText+')');
if (typeof(e["edit"]) != 'undefined') { if (e["edit"]["result"] == "Success") { return true; } }
else { return e["error"]["code"]; }
}
/* Moves a page to another one. */
this.move = function (newtitle) {
var pars = 'action=move&format=json&from='+title+'&to='+newtitle+'&token=' + encodeURIComponent(this.getMoveToken());
r.open('POST', this.getBaseURL()+"/w/api.php", false);
r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
r.setRequestHeader('Connection', 'keep-alive');
r.setRequestHeader('Content-length', pars.length);
r.send(pars);
alert(r.responseText);
e = eval('('+r.responseText+')');
if (typeof(e["edit"]) != 'undefined') { if (e["edit"]["result"] == "Success") { return true; } }
else { return e["error"]["code"]; }
}
}
/* ------------------------------------*/
var topdiv, div, idx = 0, len = 0, table, current;
function getCategory() {
return $(".CategoryTreeLabelCategory")[idx].innerHTML;
}
function buildTable(all) {
table = $('<table></table>');
table.css({
width: "70%",
margin: "0 auto",
borderSpacing: "0px 5px"
});
for (var i=0; i<all.length; i++) {
var title = all[i].title;
table.append($('<tr><td style="text-align:center;"><a href="/wiki/'+title+'">'+title+'</a></td><td style="text-align:center;"><input type="text"></td><td style="text-align:center;"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/20px-Yes_check.svg.png" style="cursor:pointer;width:20px;"></td>'));
}
table.find("td").css({
borderTop: "1px solid steelblue",
borderBottom: "1px solid steelblue",
background: "rgba(176, 196, 222, 0.6)",
padding: "3px"
});
table.find("img").click(function () {
$(this).attr("src", "http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif");
var tr = $(this).parent().parent();
var p = new Page(tr.find("a").text());
var t = p.get();
var regexp = new RegExp("\\[\\[categor(ia|y)."+current+"\\|?.*?\\]\\]","i");
var nt = t.replace(regexp, "[[Categoria:"+current+"|"+tr.find("input").val()+"]]");
p.put(nt, "Indexant");
$(this).attr("src", "http://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Cornflower_blue_check.svg/20px-Cornflower_blue_check.svg.png");
//
});
}
function buildAccions() {
var accions = $('<div></div>');
accions.css({
border: "1px solid steelblue",
background: "rgba(176, 196, 222, 0.6)",
width: "70%",
margin: "0 auto",
padding: "5px"
});
accions.html('<h3>Accions</h3><p><label><input name="i-accio" type="radio" value="agafa_n" id="agafa_n" checked> Agafa la paraula</label> <input type="text" id="paraula_n" value="2" style="width:3em;">.</p><p><label><input name="i-accio" type="radio" value="prefix_n" id="prefix_n" checked> Treu el prefix</label></p><p><label><input name="i-accio" type="radio" value="javascript" id="i-javascript"> Utilitza el següent JavaScript:</label><textarea style="width:80%;height:100px;" id="i-javascript-ta">// La variable "title" conté el títol de la categoria corresponent\nreturn title;</textarea></p>');
return accions;
}
function fillTitles() {
var func;
if ($("#agafa_n").is(":checked")) {
func = (function () {
var n = parseInt($("#paraula_n").val())-1;
return function (title) {
var tmp = title.split(" ")[n];
if (!tmp) {
tmp = title;
}
return tmp.toUpperCase()[0]+tmp.toLowerCase().substr(1);
};
})();
} else if ($("#prefix_n").is(":checked")) {
func = function (title) {
return title.split(":").slice(1).join(":");
};
} else {
var code = $("#i-javascript-ta").val();
func = new Function('title', code);
}
table.find("tr").each(function () {
var tr = $(this);
tr.find("input").val(func(tr.find("a").text()));
});
}
function bindAccions() {
$("#paraula_n, input[name=i-accio], #i-javascript-ta").change(fillTitles);
}
function loadCategory(name) {
current = name;
div.html("<h2>"+name+"</h2>");
var cont = $('<div>Carregant...</div>');
div.append(cont);
$.ajax({
url: mw.util.wikiScript( 'api' ),
data: {
format: 'json',
action: 'query',
list: 'categorymembers',
cmtitle: 'Category:' + name,
cmtype: 'page',
cmlimit: 500
},
dataType: 'json',
type: 'GET',
success: function( data ) {
if ( data && data.query && data.query.categorymembers ) {
buildTable(data.query.categorymembers);
cont.html("");
var accions = buildAccions();
cont.append(accions);
cont.append(table);
bindAccions();
fillTitles();
}
}
});
}
$(document).ready(function () {
if (mw.config.get("wgTitle") == "Categories per indexar") {
topdiv = $('<div><div><table style="width:100%;"><tr><td><button class="i-b i-anterior" disabled>Anterior</button></td><td style="text-align:right;"><button class="i-b i-seguent">Següent</button></td></tr></table></div></div>');
topdiv.insertBefore("#mw-content-text");
topdiv.css({
border: "1px solid steelblue",
background: "rgba(176, 196, 222, 0.5)"
});
div = $('<div></div>');
div.css({
padding: "5px"
});
topdiv.prepend(div);
$(".i-b").css({
fontSize: "130%",
});
$(".i-anterior").click(function () {
idx--;
if (idx == 0) {
$(this).attr("disabled","disabled");
} else {
$(this).prop("disabled", false);
$(".i-seguent").prop("disabled", false);
}
loadCategory(getCategory(idx));
});
$(".i-seguent").css({
}).click(function () {
idx++;
if (idx == len-1) {
$(this).attr("disabled","disabled");
} else {
$(this).prop("disabled", false);
$(".i-anterior").prop("disabled", false);
}
loadCategory(getCategory(idx));
});
var first = getCategory();
len = $(".CategoryTreeLabelCategory").length;
loadCategory(first);
}
});
})();