MediaWiki:Ticker.js e Wikinotícias:Página de testes: diferenças entre as páginas

Fonte: Wikinotícias
(Diferenças entre páginas)
Conteúdo apagado Conteúdo adicionado
mSem resumo de edição
 
He7d3r (discussão | contribs)
m Réplica das atualizações que propus em en:MediaWiki talk:Ticker.js#Updates: Use jQuery; Remove unused variables; Use mw.util.getUrl to define hrefs; Access MW variables using mw.config.get(); Do not choose random indexes outside the bounds of th
 
Linha 1: Linha 1:
/*jshint evil:true*/
/*global mw, $*/
var ticker_enabled = true;
var ticker_enabled = true;
var ticker_tl=[]; //Don't touch
if(navigator.userAgent.indexOf("MSIE") == -1){ //Disables for IE, AJAX etc is really bugged in IE, wont work without major rewrite and server-side extension.
var ticker_tl=new Array(); //Dont touch
var ticker_speed=20; //Increase to slow down, too low makes it go incredibly slow, 15 is about right
var ticker_speed=20; //Increase to slow down, too low makes it go incredibly slow, 15 is about right
var ticker_index=0; ticker_text_pos=0; //Dont touch
var ticker_index=0, ticker_text_pos=0; //Don't touch
var ticker_str_length; //Dont touch
var ticker_str_length; //Don't touch
var ticker_contents, ticker_row; //Dont touch
var ticker_contents; //Don't touch


//So people can make there own custom pages outside of the main source (add to this array in special:mypage/monobook.js etc), this will only initilize array if it doesn't already exist.
//So people can make there own custom pages outside of the main source (add to this array in special:mypage/monobook.js etc), this will only initilize array if it doesn't already exist.
var ticker_custompages = (ticker_custompages instanceof Array ? ticker_custompages : Array());
var ticker_custompages = (ticker_custompages instanceof Array ? ticker_custompages : []);
var ticker_custommsg = (ticker_custommsg instanceof Array ? ticker_custommsg : Array());
var ticker_custommsg = (ticker_custommsg instanceof Array ? ticker_custommsg : []);


// Add lines like the following to add custom tickers:
// Add lines like the following to add custom tickers:
Linha 15: Linha 16:
// Make sure that the /Tickersource page is formatted like [[Wikinews:Tickersource/Tickersource]] using DPLs
// Make sure that the /Tickersource page is formatted like [[Wikinews:Tickersource/Tickersource]] using DPLs
ticker_custompages['Portal:Futebol'] = 'Portal:Futebol/Tickersource';
ticker_custompages['Portal:Futebol'] = 'Portal:Futebol/Tickersource';



//Add custommsgs for all custom pages
//Add custommsgs for all custom pages
Linha 21: Linha 21:


function ticker_prepare(){
function ticker_prepare(){
ticker_str_length=ticker_tl[0].length
ticker_str_length=ticker_tl[0].length;
var content = document.getElementById('showticker').innerHTML;
var content = document.getElementById('showticker').innerHTML;
if(content != ""){
if(content !== ""){
content += "<br/>\n";
content += "<br/>\n";
}
}
Linha 30: Linha 30:
start = ticker_custommsg[wgBasePageName];
start = ticker_custommsg[wgBasePageName];
}
}
content += "<div id='ticker_start' style='font-weight: bold; font-size: 120%; display: inline;'>" + start + " <div style='font-size: smaller; display: inline;'>(<a href='" + wgServer + wgScript + "?title=" + ticker_toload + "&action=purge'>Lista completa</a>)</div>:&nbsp;</div><div id='ticker_content' style='font-size: 120%; font-color: blue; display: inline;'></div>";
content += "<div id='ticker_start' style='font-weight: bold; font-size: 120%; display: inline;'>" + start + " <div style='font-size: smaller; display: inline;'>(<a href='" + mw.util.getUrl( ticker_toload, { 'action': 'purge' } ) + "'>Lista completa</a>)</div>:&nbsp;</div><div id='ticker_content' style='font-size: 120%; font-color: blue; display: inline;'></div>";
document.getElementById('showticker').innerHTML = content;
document.getElementById('showticker').innerHTML = content;
}
}


var wgBasePageName = mw.config.get('wgPageName');
var month=new Array(12);
if(mw.config.get('wgPageName').indexOf("/") != -1){
month[0]="January";
wgBasePageName = mw.config.get('wgPageName').substring(0,mw.config.get('wgPageName').indexOf("/"));
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

wgBasePageName = wgPageName;
if(wgPageName.indexOf("/") != -1){
wgBasePageName = wgPageName.substring(0,wgPageName.indexOf("/"));
}
}


Linha 56: Linha 42:


function ticker_load(){
function ticker_load(){
if (ticker_enabled == true) { // can be set to false in a user's custom js file
// can be set to false in a user's custom js file
if( !ticker_enabled || ! $( '#showticker' ).length ){
try{
var randomunusedtickervariable = document.getElementById('showticker').innerHTML;
}catch(err){
return;
return;
}
}
Linha 66: Linha 50:
ticker_toload = ticker_custompages[wgBasePageName];
ticker_toload = ticker_custompages[wgBasePageName];
}
}
$.ajax({
xmlhttp = sajax_init_object();
url: mw.util.getUrl( ticker_toload, { 'action': 'render' } ),
xmlhttp.overrideMimeType('text/xml');
beforeSend: function( xhr ) {
xmlhttp.open( 'GET' , wgServer + wgScriptPath + '/index.php?title=' + ticker_toload + '&action=render', true);
xhr.overrideMimeType( 'text/xml' );
xmlhttp.onload = function() {
//this.responseXML is the DOM
var entries = this.responseText.split("\n");
//window.alert(this.responseText);
for(var i = 0; i < entries.length; i++){
var val = entries[i];
if(val.indexOf("<li>") == 0 && val.indexOf("<a") != -1){
val = val.substring(val.indexOf("\">")+2, val.indexOf("</a>"));
ticker_tl[ticker_tl.length] = val;
}
}
}
}).done(function( data, textStatus, jqXHR ) {
$( jqXHR.responseText ).find( 'li a' ).each(function(){
ticker_tl.push( $(this).html() );
});
ticker_prepare();
ticker_prepare();
ticker_tick(false, true);
ticker_tick(false, true);
}
});
xmlhttp.send( null );
}
}
}


Linha 93: Linha 70:
}
}
if(first){
if(first){
ticker_index = Math.round(Math.random() * ticker_tl.length-1);
ticker_index = Math.floor(Math.random() * ticker_tl.length);
ticker_text_pos=0;
ticker_text_pos=0;
ticker_str_length=ticker_tl[ticker_index].length;
ticker_str_length=ticker_tl[ticker_index].length;
}
}
ticker_contents='';
ticker_contents='';
ticker_row=Math.max(0,ticker_index-7);
//window.alert("TL: "+ticker_tl[ticker_index]);
//window.alert("TL: "+ticker_tl[ticker_index]);
document.getElementById("ticker_content").innerHTML = ("<a href=\"" + wgServer + wgArticlePath.replace("$1", escape(ticker_tl[ticker_index])) + "\" title=\"" + ticker_tl[ticker_index] + "\">" + ticker_tl[ticker_index].substring(0,ticker_text_pos) + "_</a>").replace("\n", "");
document.getElementById("ticker_content").innerHTML = ("<a href=\"" + mw.util.getUrl( ticker_tl[ticker_index] ) + "\" title=\"" + mw.html.escape( ticker_tl[ticker_index] ) + "\">" + ticker_tl[ticker_index].substring(0,ticker_text_pos) + "_</a>").replace("\n", "");
if(ticker_text_pos++>=ticker_str_length)
if(ticker_text_pos++>=ticker_str_length)
{
{
ticker_index++;
ticker_index++;
if(ticker_index!=ticker_tl.length)
if(ticker_index<ticker_tl.length)
{
{
ticker_text_pos=0;
ticker_text_pos=0;
Linha 114: Linha 90:
}
}
}else{
}else{
ticker_index = Math.round(Math.random() * ticker_tl.length-1);
ticker_index = Math.floor(Math.random() * ticker_tl.length);
ticker_text_pos=ticker_tl[ticker_index].indexOf("\">");
ticker_text_pos=0;
ticker_str_length=ticker_tl[ticker_index].length;
ticker_str_length=ticker_tl[ticker_index].length;
setTimeout("ticker_tick(true, false)",3000);
setTimeout("ticker_tick(true, false)",7000);
}
}
} else
} else
setTimeout("ticker_tick(false, false)",ticker_speed);
setTimeout("ticker_tick(false, false)",ticker_speed);

}
}


// Disables for IE, AJAX etc is really bugged in IE, wont work without major rewrite and server-side extension.
addLoadEvent(ticker_load);
if(navigator.userAgent.indexOf("MSIE") == -1){

$(ticker_load);
function sajax_init_object() {
var A;
try {
// Try the new style before ActiveX so we don't
// unnecessarily trigger warnings in IE 7 when
// set to prompt about ActiveX usage
A = new XMLHttpRequest();
} catch (e) {
try {
A=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
A=new ActiveXObject("Microsoft.XMLHTTP");
} catch (oc) {
A=null;
}
}
}

return A;
}
}
}

Revisão das 14h16min de 12 de fevereiro de 2014

/*jshint evil:true*/ /*global mw, $*/ var ticker_enabled = true; var ticker_tl=[]; //Don't touch var ticker_speed=20; //Increase to slow down, too low makes it go incredibly slow, 15 is about right var ticker_index=0, ticker_text_pos=0; //Don't touch var ticker_str_length; //Don't touch var ticker_contents; //Don't touch

//So people can make there own custom pages outside of the main source (add to this array in special:mypage/monobook.js etc), this will only initilize array if it doesn't already exist. var ticker_custompages = (ticker_custompages instanceof Array ? ticker_custompages : []); var ticker_custommsg = (ticker_custommsg instanceof Array ? ticker_custommsg : []);

// Add lines like the following to add custom tickers: // ticker_custompages['Portal:PORTALNAME'] = 'Portal:PORTALNAME/Tickersource'; // Make sure that the /Tickersource page is formatted like Wikinews:Tickersource/Tickersource using DPLs ticker_custompages['Portal:Futebol'] = 'Portal:Futebol/Tickersource';

//Add custommsgs for all custom pages ticker_custommsg['Portal:Futebol'] = 'Últimas notícias do futebol';

function ticker_prepare(){

ticker_str_length=ticker_tl[0].length;
var content = document.getElementById('showticker').innerHTML;
if(content !== ""){
 content += "
\n"; } var start = "Últimas notícias"; if(ticker_custommsg[wgBasePageName]){ start = ticker_custommsg[wgBasePageName]; }

content += "

" + start + "
(<a href='" + mw.util.getUrl( ticker_toload, { 'action': 'purge' } ) + "'>Lista completa</a>)

";

document.getElementById('showticker').innerHTML = content;

}

var wgBasePageName = mw.config.get('wgPageName'); if(mw.config.get('wgPageName').indexOf("/") != -1){

wgBasePageName = mw.config.get('wgPageName').substring(0,mw.config.get('wgPageName').indexOf("/"));

}

var ticker_toload = "";

function ticker_load(){

// can be set to false in a user's custom js file
if( !ticker_enabled || ! $( '#showticker' ).length ){
 return;
}
ticker_toload = "Wikinews:Tickersource/Tickersource";
if(ticker_custompages[wgBasePageName]){
 ticker_toload = ticker_custompages[wgBasePageName];
}
$.ajax({
 url: mw.util.getUrl( ticker_toload, { 'action': 'render' } ),
 beforeSend: function( xhr ) {
  xhr.overrideMimeType( 'text/xml' );
 }
}).done(function( data, textStatus, jqXHR ) {
 $( jqXHR.responseText ).find( 'li a' ).each(function(){
  ticker_tl.push( $(this).html() );
 });
 ticker_prepare();
 ticker_tick(false, true);
});

}

function ticker_tick(reset, first) {

 if(reset){
   document.getElementById("ticker_content").innerHTML = "";
 }
 if(first){
  ticker_index = Math.floor(Math.random() * ticker_tl.length);
  ticker_text_pos=0;
  ticker_str_length=ticker_tl[ticker_index].length;
 }
 ticker_contents=;
 //window.alert("TL: "+ticker_tl[ticker_index]);
 document.getElementById("ticker_content").innerHTML = ("<a href=\"" + mw.util.getUrl( ticker_tl[ticker_index] ) + "\" title=\"" + mw.html.escape( ticker_tl[ticker_index] ) + "\">" + ticker_tl[ticker_index].substring(0,ticker_text_pos) + "_</a>").replace("\n", "");
 if(ticker_text_pos++>=ticker_str_length)
 {
   ticker_index++;
   if(ticker_index<ticker_tl.length)
   {
     ticker_text_pos=0;
     ticker_str_length=ticker_tl[ticker_index].length;
     if(first){
      setTimeout("ticker_tick(true, false)",3);
     }else{
      setTimeout("ticker_tick(true, false)",7000);
     }
   }else{
     ticker_index = Math.floor(Math.random() * ticker_tl.length);
     ticker_text_pos=0;
     ticker_str_length=ticker_tl[ticker_index].length;
     setTimeout("ticker_tick(true, false)",7000);
   }
 } else
   setTimeout("ticker_tick(false, false)",ticker_speed);

}

// Disables for IE, AJAX etc is really bugged in IE, wont work without major rewrite and server-side extension. if(navigator.userAgent.indexOf("MSIE") == -1){

$(ticker_load);

}