MediaWiki:Gadget-ProgressLevel.js: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
Conteúdo apagado Conteúdo adicionado
m var test = 'ok';
Linha 1: Linha 1:
var test = 'ok';
/* _____________________________________________________________________________
* | |
* | === AVISO: ARQUIVO DE GADGET GLOBAL === |
* | Alterações a esta página afetarão vários colaboradores |
* | Por favor discuta alterações na página de discussão ou |
* | em [[Wikilivros:Gadgets]] antes de editar. |
* |_____________________________________________________________________________|
*
* Adiciona uma imagem ao lado direito do título de cada modulo, para indicar sua etapa de desenvolvimento (obtida a partir do Índice).
*/
var parentPages;
window.findProgressLevel = function( res ) {
var baseUrlImg = 'http://upload.wikimedia.org/wikipedia/commons/thumb/';
var progress = {
'0' : { 'img': '9/93/0de8.svg/25px-0de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 0 de 8' },
'1' : { 'img': '9/93/1de8.svg/25px-1de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 1 de 8' },
'2' : { 'img': '9/93/2de8.svg/25px-2de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 2 de 8' },
'3' : { 'img': '9/93/3de8.svg/25px-3de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 3 de 8' },
'4' : { 'img': '9/93/4de8.svg/25px-4de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 4 de 8' },
'5' : { 'img': '9/93/5de8.svg/25px-5de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 5 de 8' },
'6' : { 'img': '9/93/6de8.svg/25px-6de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 6 de 8' },
'7' : { 'img': '9/93/7de8.svg/25px-7de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 7 de 8' },
'8' : { 'img': '9/93/8de8.svg/25px-8de8.svg.png', 'txt': 'O desenvolvimento desta página está na etapa 8 de 8' },
'00' : { 'img': 'd/d6/00%25.svg/25px-00%25.svg.png', 'txt': 'Esta página está 0% desenvolvida' },
'25' : { 'img': '3/34/25%25.svg/25px-25%25.svg.png', 'txt': 'Esta página está 25% desenvolvida' },
'50' : { 'img': 'c/c2/50%25.svg/25px-50%25.svg.png', 'txt': 'Esta página está 50% desenvolvida' },
'75' : { 'img': '4/49/75%25.svg/25px-75%25.svg.png', 'txt': 'Esta página está 75% desenvolvida' },
'100' : { 'img': 'c/ce/100%25.svg/25px-100%25.svg.png', 'txt': 'Esta página está 100% desenvolvida' }
};
var level = null,
matches, //Used for keeping regex matches
match, //Used for keeping a specific regex matches
wikitext, //Text of a page
reTextChapterTitle,
reTextChapterLink,
reTextLeftRightLevel,
reTextGroupedLevel,
reChapter,
pages,
page, //A specific page or index of page
parentPageNames,
sortable = [];

pages = res.query.pages;
parentPageNames = decodeURIComponent( parentPages ).split('|');
for ( page in pages ) {
if ( pages[ page ].missing !== '' && pages[ page ].revisions && pages.hasOwnProperty( page ) ) {
sortable.push([
pages[ page ].revisions[0]['*'], //Wiki code of page
parentPageNames.indexOf( pages[ page ].title ), //Order of page
pages[ page ].title //Title of page
]);
}
}
//Sort pages in the given order
sortable.sort( function(a, b) {
return a[1] - b[1];
} );

reTextChapterTitle = mw.config.get( 'wgTitle' ).replace ( sortable[ sortable.length - 1 ][ 2 ] + '/', '')
.replace(/^.+?\//g, '');
reTextChapterTitle = $.escapeRE( reTextChapterTitle ).replace(/ /g,'[ _]');
reTextChapterLink = '(?:(?:\\[\\s*|\\/|\\{\\{Capítulo\\|)' + reTextChapterTitle + '(?:\\/?\\s*[\\|\\]]|\\}\\}))';
reTextLeftRightLevel = '(?:\\[\\[(?:[Ii]magem?|[Ff]icheiro|[Aa]rquivo|[Ff]ile):(?:(\\d)de8|(\\d\\d\\d?)%)\\.svg[\\|\\]]|\\{\\{[Pp]rogresso\\|(\\d\\d\\d?)%\\}\\})';
reTextGroupedLevel = '(?:\\{\\{[Ee]tapa\\|.*?' + reTextChapterTitle + '.*?\\|(?:p=)?(\\d+)\\}\\})';
reChapter = '^.*?(?:' + reTextGroupedLevel
+ '|' + reTextLeftRightLevel + '.*?' + reTextChapterLink
+ '|' + reTextChapterLink + '.*?' + reTextLeftRightLevel
+ ').*?$';
reChapter = new RegExp( reChapter, 'm' );
pagesloop:
for ( page = 0 ; page < sortable.length; page++ ) {
wikitext = sortable[ page ][ 0 ];
matches = wikitext.match( reChapter );
if ( !matches ) {
continue;
}
for ( match = 1; match < matches.length; match++ ){
if ( matches[match] ) {
level = matches[match];
break pagesloop;
}
}
}
if ( level === null ) {
return;
}
$(document).ready(function() {
$( '#bodyContent').prepend(
'<div style="float:right; position:relative; top:-30px; height: 25px; width: 25px; background: url('
+ baseUrlImg + progress[ level ].img
+ ')" title="'
+ progress[ level ].txt + '"/>'
);
});
};

if ( 0 === mw.config.get( 'wgNamespaceNumber' ) && ( $.inArray( mw.config.get( 'wgAction' ), [ 'view', 'submit' ]) !== -1 ) && -1 !== mw.config.get( 'wgTitle' ).indexOf('/') ) {
var parts = mw.config.get( 'wgTitle' ).split('/'),
current = parts[0],
limit = parts.length - 1;
parentPages = current;
for( i=1; i<limit; i++ ) {
current += '/' + parts[i];
parentPages += '|' + encodeURIComponent( current );
}
mw.loader.load( mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/api.php?action=query&prop=revisions&rvprop=content&format=json&callback=findProgressLevel&titles=' + parentPages );
}
// [[Categoria:Gadgets|Etapas de desenvolvimento.js]]

Revisão das 20h37min de 24 de fevereiro de 2011

var test = 'ok';