(Página nueva: /** WikiaShoutBox v1.5: Conector para el Widget ShoutBox de Wikia * (C) 2011 Jesús Martínez Novo User:Ciencia_Al_Poder * This program is free software; you can redistribute it...) |
Sin resumen de edición |
||
Línea 1: | Línea 1: | ||
− | /** WikiaShoutBox v1. |
+ | /** WikiaShoutBox v1.6: Conector para el Widget ShoutBox de Wikia |
* (C) 2011 Jesús Martínez Novo [[User:Ciencia_Al_Poder]] |
* (C) 2011 Jesús Martínez Novo [[User:Ciencia_Al_Poder]] |
||
* This program is free software; you can redistribute it and/or modify |
* This program is free software; you can redistribute it and/or modify |
||
Línea 7: | Línea 7: | ||
*/ |
*/ |
||
var WikiaShoutBox = { |
var WikiaShoutBox = { |
||
− | version: '1. |
+ | version: '1.6', |
cookietag: 'WSB', |
cookietag: 'WSB', |
||
skin: 'oasis', |
skin: 'oasis', |
||
Línea 16: | Línea 16: | ||
if (!window.wgUserName) return; |
if (!window.wgUserName) return; |
||
var enabled = false; |
var enabled = false; |
||
− | var cfg = $ |
+ | var cfg = $.cookies.get(WikiaShoutBox.cookietag); |
if (cfg) { |
if (cfg) { |
||
enabled = (cfg == '1'); |
enabled = (cfg == '1'); |
||
Línea 67: | Línea 67: | ||
start: function() { |
start: function() { |
||
WikiaShoutBox.action('configure'); |
WikiaShoutBox.action('configure'); |
||
− | var cfg = $ |
+ | var cfg = $.cookies.set(WikiaShoutBox.cookietag, '1'); |
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, expand:true, edit:true, reload:true}); |
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, expand:true, edit:true, reload:true}); |
||
}, |
}, |
||
Línea 74: | Línea 74: | ||
WikiaShoutBox.widgetBtnVisible({start:true, stop:false, expand:false, collapse:false, edit:false, reload:false}); |
WikiaShoutBox.widgetBtnVisible({start:true, stop:false, expand:false, collapse:false, edit:false, reload:false}); |
||
WikiaShoutBox.contel.children('div').eq(0).empty(); |
WikiaShoutBox.contel.children('div').eq(0).empty(); |
||
− | var cfg = $ |
+ | var cfg = $.cookies.del(WikiaShoutBox.cookietag); |
}, |
}, |
||
expand: function() { |
expand: function() { |
||
Línea 113: | Línea 113: | ||
if (res.success) { |
if (res.success) { |
||
WikiaShoutBox[pAction+'Action'](res); |
WikiaShoutBox[pAction+'Action'](res); |
||
+ | } else { |
||
+ | WikiaShoutBox.stop(); |
||
+ | var c = WikiaShoutBox.contel.children('div').eq(0); |
||
+ | c.empty(); |
||
+ | c.append('<div class="WidgetShoutBoxChat">Ha ocurrido un error al intentar cargar el chat. Puede ser un problema temporal. Si este chat nunca te ha funcionado puedes <a href="javascript:WikiaShoutBox.fixConfig();void(0);">ejecutar el asistente</a> para intentar arreglarlo.</div>'); |
||
+ | WikiaShoutBox.expand(); |
||
+ | WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false}); |
||
} |
} |
||
WikiaShoutBox.busy(false); |
WikiaShoutBox.busy(false); |
||
Línea 120: | Línea 127: | ||
if (res.type != 'WidgetShoutBox') { |
if (res.type != 'WidgetShoutBox') { |
||
WikiaShoutBox.stop(); |
WikiaShoutBox.stop(); |
||
+ | var c = WikiaShoutBox.contel.children('div').eq(0); |
||
− | alert('Ha ocurrido un error: El widget retornado es de tipo ['+res.type+']. Puedes informar de este problema en el foro donde se anuncia el chat.'); |
||
+ | c.empty(); |
||
+ | c.append('Ha ocurrido un error al intentar cargar el chat. El widget retornado es de tipo ['+res.type+']. Puedes probar a <a href="javascript:WikiaShoutBox.fixConfig();void(0);">ejecutar el asistente</a> para intentar arreglarlo.'); |
||
+ | WikiaShoutBox.expand(); |
||
+ | WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false}); |
||
return; |
return; |
||
} |
} |
||
Línea 177: | Línea 188: | ||
WikiaShoutBox.contel.children('h5').children('span.status').text(isBusy?' (Cargando...)':''); |
WikiaShoutBox.contel.children('h5').children('span.status').text(isBusy?' (Cargando...)':''); |
||
}, |
}, |
||
+ | fixConfig: function() { |
||
+ | if (window.wgWidgetShoutBoxId) { |
||
+ | var c = WikiaShoutBox.contel.children('div').eq(0); |
||
+ | c.empty(); |
||
+ | c.append('<div class="WidgetShoutBoxChat">En tu archivo js personal está definida la variable wgWidgetShoutBoxId, con valor <span class="msg1"></span>.<br />' + |
||
+ | 'Para poder continuar y que esta no interfiera con la detección de tu configuración, debes borrar esa línea de tu archivo js personal, que puede estar situado en '+ |
||
+ | '<a class="msg2" target="_blank">este wiki</a> o en <a class="msg3" target="_blank">Community central</a>.<br />' + |
||
+ | 'Revisa que no esté en ninguna de las dos páginas enlazadas. Si lo está, borra la línea que la contenga, guarda la página y refresca la caché del navegador como se indica en esa misma página.</div>'); |
||
+ | c.find('.msg1').append(wgWidgetShoutBoxId.toString()).end() |
||
+ | .find('.msg2').attr('href', wgScriptPath+wgScript+'?title='+encodeURIComponent(wgFormattedNamespaces['2'])+':'+encodeURIComponent(wgUserName.replace(new RegExp('\\s', 'g'), '_'))+'/'+skin+'.js&action=edit').end() |
||
+ | .find('.msg3').attr('href', 'http://community.wikia.com'+wgScriptPath+wgScript+'?title=User:'+encodeURIComponent(wgUserName.replace(new RegExp('\\s', 'g'), '_'))+'/global.js&action=edit'); |
||
+ | WikiaShoutBox.expand(); |
||
+ | WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false}); |
||
+ | return; |
||
+ | } |
||
+ | WikiaShoutBox.busy(true); |
||
+ | $.getJSON(wgScriptPath+'/api.php', {action: 'query', meta: 'userinfo', uiprop: 'options', titles: 'User:' + wgUserName.replace(new RegExp('\\s', 'g'), '_')+'/'+skin+'.js', prop: 'info|revisions', intoken: 'edit', rvprop: 'content|timestamp', format: 'json'}, WikiaShoutBox.cbMwConfig); |
||
+ | }, |
||
+ | cbMwConfig: function(data) { |
||
+ | WikiaShoutBox.busy(false); |
||
+ | var kTag = 's:4:"type";s:14:"WidgetShoutBox";s:2:"id";i:'; |
||
+ | var wCfg = data.query.userinfo.options.widgets; |
||
+ | for (var pp in data.query.pages) { |
||
+ | WikiaShoutBox._wgPage = data.query.pages[pp]; |
||
+ | } |
||
+ | var _tmpCfg = wCfg; |
||
+ | var instances = []; |
||
+ | // 1. Buscar todas las instancias de WidgetShoutBox |
||
+ | while (_tmpCfg.length) { |
||
+ | var idx = _tmpCfg.indexOf(kTag); |
||
+ | if (idx == -1) { |
||
+ | break; |
||
+ | } |
||
+ | _tmpCfg = _tmpCfg.substr(idx+kTag.length); |
||
+ | instances[instances.length] = _tmpCfg.substr(0, _tmpCfg.indexOf(';')); |
||
+ | } |
||
+ | if (instances.length) { |
||
+ | // Puede ser que exista, pero tenga el mismo id que otro widget existente. En ese caso tendríamos que agregar uno nuevo |
||
+ | // 2. Buscar de las instancias alguno que no esté duplicado |
||
+ | for (var i = 0; i < instances.length; i++) { |
||
+ | _tmpCfg = wCfg; |
||
+ | var sTagId = 's:2:"id";i:'+instances[i]+';'; |
||
+ | var found = 0; |
||
+ | while (_tmpCfg.length) { |
||
+ | var idx = _tmpCfg.indexOf(sTagId); |
||
+ | if (idx == -1) { |
||
+ | break; |
||
+ | } |
||
+ | _tmpCfg = _tmpCfg.substr(idx+sTagId.length); |
||
+ | found++; |
||
+ | } |
||
+ | if (found == 0) { |
||
+ | alert('Error parseando preferencias'); |
||
+ | return; |
||
+ | } else if (found == 1) { |
||
+ | // Parece que es usable |
||
+ | WikiaShoutBox.showFixedIdStatus(instances[i]); |
||
+ | return; |
||
+ | } |
||
+ | } |
||
+ | } |
||
+ | |||
+ | // Si hemos llegado aquí es que no hay ninguno usable. Intentamos añadir uno |
||
+ | WikiaShoutBox.busy(true); |
||
+ | $.getJSON(wgScriptPath+wgScript, {action: 'ajax', rs: 'WidgetFrameworkAjax', actionType: 'add', index:'302', sidebar:'3', type: 'WidgetShoutBox'}, WikiaShoutBox.addAction); |
||
+ | }, |
||
+ | addAction: function(res) { |
||
+ | var kTag = 'id="widget'; |
||
+ | WikiaShoutBox.busy(false); |
||
+ | if (!res.success || !res.widget) { |
||
+ | alert('Error al añadir una nueva instancia de WidgetShoutBox'); |
||
+ | return; |
||
+ | } |
||
+ | var idx = res.widget.indexOf(kTag); |
||
+ | var tmpWg = res.widget.substr(idx+kTag.length); |
||
+ | WikiaShoutBox.showFixedIdStatus(tmpWg.substr(0, tmpWg.indexOf('"'))); |
||
+ | }, |
||
+ | showFixedIdStatus: function(id) { |
||
+ | var c = WikiaShoutBox.contel.children('div').eq(0); |
||
+ | var pagetext = '// Variable para que funcione el WidgetShoutbox\nwindow.wgWidgetShoutBoxId = \''+id+'\';\n// Fin variable para que funcione el WidgetShoutbox\n'; |
||
+ | c.empty(); |
||
+ | // WikiaShoutBox._wgPage |
||
+ | c.append('<div class="WidgetShoutBoxChat">Para probar a arreglar el ShoutBox, es necesario que edites tu archivo js personal añadiendo un trozo de código.<br />Pulsa el siguiente botón para abrir tu página js personal donde se añadirá automáticamente al inicio de la misma el código. Tú solo tendrás que guardar.<br />Desde esa página, antes de guardar, podrás probar a abrir de nuevo el ShoutBox y ver si ya se ha solucionado. En ese caso podrás gardar.<br />Si en ese momento sigue sin funcionar, algo más debe estar interfiriendo con el código js y deberías pedir que alguien con conocimientos lo revise.' + |
||
+ | '<form method="post" enctype="multipart/form-data" action="'+wgScriptPath+wgScript+'?title=' + encodeURIComponent(WikiaShoutBox._wgPage.title) + '&action=submit" target="_blank">' + |
||
+ | '<textarea name="wpTextbox1" style="display:none;"></textarea>' + |
||
+ | '<input type="hidden" name="wpSummary" value="Parámetro para WidgetShoutBox" />' + |
||
+ | '<input type="hidden" name="wpStarttime" value="'+WikiaShoutBox._wgPage.starttimestamp.replace(new RegExp('\\D', 'g'), '')+'" />' + |
||
+ | '<input type="submit" name="wpPreview" value="Añadir código para WidgetShoutBox" />' + |
||
+ | '<input type="hidden" name="wpEditToken" value="' + WikiaShoutBox._wgPage.edittoken + '" /></form></div>'); |
||
+ | if (typeof WikiaShoutBox._wgPage.missing == 'string') { |
||
+ | c.find('form').eq(0).append('<input type="hidden" name="wpEdittime" value="'+WikiaShoutBox._wgPage.starttimestamp.replace(new RegExp('\\D', 'g'), '')+'" />'); |
||
+ | } else { |
||
+ | c.find('form').eq(0).append('<input type="hidden" name="wpEdittime" value="'+WikiaShoutBox._wgPage.revisions[0].timestamp.replace(new RegExp('\\D', 'g'), '')+'" />'); |
||
+ | pagetext += WikiaShoutBox._wgPage.revisions[0]['*']; |
||
+ | } |
||
+ | c.find('textarea').eq(0).val(pagetext); |
||
+ | WikiaShoutBox.expand(); |
||
+ | WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false}); |
||
+ | return; |
||
+ | } |
||
}; |
}; |
||
Revisión actual - 20:47 15 may 2011
/** WikiaShoutBox v1.6: Conector para el Widget ShoutBox de Wikia
* (C) 2011 Jesús Martínez Novo [[User:Ciencia_Al_Poder]]
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version
*/
var WikiaShoutBox = {
version: '1.6',
cookietag: 'WSB',
skin: 'oasis',
wid: '302',
contel: null,
focus: false,
init: function() {
if (!window.wgUserName) return;
var enabled = false;
var cfg = $.cookies.get(WikiaShoutBox.cookietag);
if (cfg) {
enabled = (cfg == '1');
}
// Si alguien no le funciona, que pruebe a poner wgWidgetShoutBoxId = '1'; en su js
if (typeof window.wgWidgetShoutBoxId == 'string' && !isNaN(window.wgWidgetShoutBoxId)) {
WikiaShoutBox.wid = window.wgWidgetShoutBoxId;
}
WikiaShoutBox.render();
if (enabled) {
WikiaShoutBox.start();
}
// Core functions
window.WidgetShoutBoxSend = WikiaShoutBox.sendMsg;
window.WidgetShoutBoxRemoveMsg = WikiaShoutBox.removeMsg;
},
render: function() {
var fxBtn = function(type, title) {
return '<a href="#" class="WidgetSprite '+type+'" title="'+title+'"><img src="'+window.wgBlankImgUrl+'" width="12" height="12"/></a>';
};
WikiaShoutBox.contel = $('<div id="p-sb" class="portlet"><h5>Chat '+fxBtn('start', 'Mostrar')+fxBtn('stop', 'Ocultar')+
fxBtn('expand', 'Expandir')+fxBtn('collapse', 'Contraer')+fxBtn('edit', 'Configurar')+fxBtn('reload', 'Recargar')+'<span class="status"></span></h5><div class="pBody"></div></div>').insertAfter('#p-tb');
$('#p-sb').children('h5').click(WikiaShoutBox.widgetBtnClick).children('a.WidgetSprite').not('a.start').css('display','none');
},
widgetBtnClick: function(e) {
var tg = e.target;
if (!tg) return;
if (tg.tagName.toLowerCase() == 'img') tg = tg.parentNode;
if (tg.tagName.toLowerCase() != 'a') return;
var cn = tg.className.split(' ');
for (var i = 0; i < cn.length; i++) {
switch(cn[i]) {
case 'start':
case 'stop':
case 'expand':
case 'collapse':
case 'edit':
case 'reload':
WikiaShoutBox[cn[i]]();
return false;
break;
}
}
},
widgetBtnVisible: function(cfg) {
for (btn in cfg) {
$('#p-sb').children('h5').children('a.'+btn).css('display',cfg[btn]?'':'none');
}
},
start: function() {
WikiaShoutBox.action('configure');
var cfg = $.cookies.set(WikiaShoutBox.cookietag, '1');
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, expand:true, edit:true, reload:true});
},
stop: function() {
WikiaShoutBox.collapse();
WikiaShoutBox.widgetBtnVisible({start:true, stop:false, expand:false, collapse:false, edit:false, reload:false});
WikiaShoutBox.contel.children('div').eq(0).empty();
var cfg = $.cookies.del(WikiaShoutBox.cookietag);
},
expand: function() {
WikiaShoutBox.widgetBtnVisible({expand:false, collapse:true});
WikiaShoutBox.contel.addClass('expanded');
// Posicionar al final si hay scroll
var ul = WikiaShoutBox.contel.children('div').eq(0).find('ul').get(0);
if (!ul) return;
ul.scrollTop = ul.scrollHeight - ul.offsetHeight + 2;
},
collapse: function() {
WikiaShoutBox.widgetBtnVisible({expand:true, collapse:false});
WikiaShoutBox.contel.removeClass('expanded');
},
edit: function () {
WikiaShoutBox.action('editform');
},
reload: function() {
WikiaShoutBox.action('configure');
},
action: function(atype, params) {
if (!WikiaShoutBox.contel) return;
var req = {
action: 'ajax',
rs: 'WidgetFrameworkAjax',
actionType: atype,
id: WikiaShoutBox.wid,
skin: WikiaShoutBox.skin,
cbuser: encodeURIComponent(window.wgUserName) // un ID por usuario, por la caché
};
req = $.extend(req, params);
WikiaShoutBox.busy(true);
$.getJSON(wgScriptPath+wgScript, req, WikiaShoutBox.jsonRcvClosure(atype));
},
jsonRcvClosure: function(pAction) {
return function(res) {
if (res.success) {
WikiaShoutBox[pAction+'Action'](res);
} else {
WikiaShoutBox.stop();
var c = WikiaShoutBox.contel.children('div').eq(0);
c.empty();
c.append('<div class="WidgetShoutBoxChat">Ha ocurrido un error al intentar cargar el chat. Puede ser un problema temporal. Si este chat nunca te ha funcionado puedes <a href="javascript:WikiaShoutBox.fixConfig();void(0);">ejecutar el asistente</a> para intentar arreglarlo.</div>');
WikiaShoutBox.expand();
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false});
}
WikiaShoutBox.busy(false);
};
},
configureAction: function(res) {
if (res.type != 'WidgetShoutBox') {
WikiaShoutBox.stop();
var c = WikiaShoutBox.contel.children('div').eq(0);
c.empty();
c.append('Ha ocurrido un error al intentar cargar el chat. El widget retornado es de tipo ['+res.type+']. Puedes probar a <a href="javascript:WikiaShoutBox.fixConfig();void(0);">ejecutar el asistente</a> para intentar arreglarlo.');
WikiaShoutBox.expand();
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false});
return;
}
var b = res.body;
var pos = b.indexOf('<script');
if (pos > 0) {
b = b.substring(0, pos);
}
var ul = WikiaShoutBox.contel.children('div').eq(0).html(b).find('ul').get(0);
if(WikiaShoutBox.focus) {
$('#widget_' + WikiaShoutBox.wid + '_message').focus();
WikiaShoutBox.focus = false;
}
// Posicionar al final si hay scroll
if (!ul) return;
ul.scrollTop = ul.scrollHeight - ul.offsetHeight + 2;
},
editformAction: function(res) {
var b = res.content;
WikiaShoutBox.contel.children('div').eq(0).html(b);
$('#widget_' + res.id + '_save').click(WikiaShoutBox.editSave);
$('#widget_' + res.id + '_cancel').click(WikiaShoutBox.editCancel);
},
editSave: function() {
// get editor fields and add them to AJAX request params
var fields = $('#widget_' + WikiaShoutBox.wid + '_editor').serializeArray();
var req = {};
for (var i = 0; i < fields.length; i++) {
req[fields[i].name] = fields[i].value;
}
WikiaShoutBox.action('configure', req);
},
editCancel: function() {
WikiaShoutBox.action('configure');
},
sendMsg: function(wId) {
var messageBox = $('#widget_' + wId + '_message');
if (!messageBox.length) {
return;
}
var message = $.trim(messageBox.attr('value')).replace(new RegExp('\\{\\{', 'g'), '{{');
WikiaShoutBox.focus = true;
if (message.length == 0) {
WikiaShoutBox.reload();
return;
}
if (message.charAt(0) == ':') {
message = ':'+message.substr(1);
}
WikiaShoutBox.action('configure', {message: encodeURIComponent( message ) });
},
removeMsg: function (wid, mid) {
WikiaShoutBox.action('configure', {msgid:mid});
},
busy: function(isBusy) {
WikiaShoutBox.contel.children('h5').children('span.status').text(isBusy?' (Cargando...)':'');
},
fixConfig: function() {
if (window.wgWidgetShoutBoxId) {
var c = WikiaShoutBox.contel.children('div').eq(0);
c.empty();
c.append('<div class="WidgetShoutBoxChat">En tu archivo js personal está definida la variable wgWidgetShoutBoxId, con valor <span class="msg1"></span>.<br />' +
'Para poder continuar y que esta no interfiera con la detección de tu configuración, debes borrar esa línea de tu archivo js personal, que puede estar situado en '+
'<a class="msg2" target="_blank">este wiki</a> o en <a class="msg3" target="_blank">Community central</a>.<br />' +
'Revisa que no esté en ninguna de las dos páginas enlazadas. Si lo está, borra la línea que la contenga, guarda la página y refresca la caché del navegador como se indica en esa misma página.</div>');
c.find('.msg1').append(wgWidgetShoutBoxId.toString()).end()
.find('.msg2').attr('href', wgScriptPath+wgScript+'?title='+encodeURIComponent(wgFormattedNamespaces['2'])+':'+encodeURIComponent(wgUserName.replace(new RegExp('\\s', 'g'), '_'))+'/'+skin+'.js&action=edit').end()
.find('.msg3').attr('href', 'http://community.wikia.com'+wgScriptPath+wgScript+'?title=User:'+encodeURIComponent(wgUserName.replace(new RegExp('\\s', 'g'), '_'))+'/global.js&action=edit');
WikiaShoutBox.expand();
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false});
return;
}
WikiaShoutBox.busy(true);
$.getJSON(wgScriptPath+'/api.php', {action: 'query', meta: 'userinfo', uiprop: 'options', titles: 'User:' + wgUserName.replace(new RegExp('\\s', 'g'), '_')+'/'+skin+'.js', prop: 'info|revisions', intoken: 'edit', rvprop: 'content|timestamp', format: 'json'}, WikiaShoutBox.cbMwConfig);
},
cbMwConfig: function(data) {
WikiaShoutBox.busy(false);
var kTag = 's:4:"type";s:14:"WidgetShoutBox";s:2:"id";i:';
var wCfg = data.query.userinfo.options.widgets;
for (var pp in data.query.pages) {
WikiaShoutBox._wgPage = data.query.pages[pp];
}
var _tmpCfg = wCfg;
var instances = [];
// 1. Buscar todas las instancias de WidgetShoutBox
while (_tmpCfg.length) {
var idx = _tmpCfg.indexOf(kTag);
if (idx == -1) {
break;
}
_tmpCfg = _tmpCfg.substr(idx+kTag.length);
instances[instances.length] = _tmpCfg.substr(0, _tmpCfg.indexOf(';'));
}
if (instances.length) {
// Puede ser que exista, pero tenga el mismo id que otro widget existente. En ese caso tendríamos que agregar uno nuevo
// 2. Buscar de las instancias alguno que no esté duplicado
for (var i = 0; i < instances.length; i++) {
_tmpCfg = wCfg;
var sTagId = 's:2:"id";i:'+instances[i]+';';
var found = 0;
while (_tmpCfg.length) {
var idx = _tmpCfg.indexOf(sTagId);
if (idx == -1) {
break;
}
_tmpCfg = _tmpCfg.substr(idx+sTagId.length);
found++;
}
if (found == 0) {
alert('Error parseando preferencias');
return;
} else if (found == 1) {
// Parece que es usable
WikiaShoutBox.showFixedIdStatus(instances[i]);
return;
}
}
}
// Si hemos llegado aquí es que no hay ninguno usable. Intentamos añadir uno
WikiaShoutBox.busy(true);
$.getJSON(wgScriptPath+wgScript, {action: 'ajax', rs: 'WidgetFrameworkAjax', actionType: 'add', index:'302', sidebar:'3', type: 'WidgetShoutBox'}, WikiaShoutBox.addAction);
},
addAction: function(res) {
var kTag = 'id="widget';
WikiaShoutBox.busy(false);
if (!res.success || !res.widget) {
alert('Error al añadir una nueva instancia de WidgetShoutBox');
return;
}
var idx = res.widget.indexOf(kTag);
var tmpWg = res.widget.substr(idx+kTag.length);
WikiaShoutBox.showFixedIdStatus(tmpWg.substr(0, tmpWg.indexOf('"')));
},
showFixedIdStatus: function(id) {
var c = WikiaShoutBox.contel.children('div').eq(0);
var pagetext = '// Variable para que funcione el WidgetShoutbox\nwindow.wgWidgetShoutBoxId = \''+id+'\';\n// Fin variable para que funcione el WidgetShoutbox\n';
c.empty();
// WikiaShoutBox._wgPage
c.append('<div class="WidgetShoutBoxChat">Para probar a arreglar el ShoutBox, es necesario que edites tu archivo js personal añadiendo un trozo de código.<br />Pulsa el siguiente botón para abrir tu página js personal donde se añadirá automáticamente al inicio de la misma el código. Tú solo tendrás que guardar.<br />Desde esa página, antes de guardar, podrás probar a abrir de nuevo el ShoutBox y ver si ya se ha solucionado. En ese caso podrás gardar.<br />Si en ese momento sigue sin funcionar, algo más debe estar interfiriendo con el código js y deberías pedir que alguien con conocimientos lo revise.' +
'<form method="post" enctype="multipart/form-data" action="'+wgScriptPath+wgScript+'?title=' + encodeURIComponent(WikiaShoutBox._wgPage.title) + '&action=submit" target="_blank">' +
'<textarea name="wpTextbox1" style="display:none;"></textarea>' +
'<input type="hidden" name="wpSummary" value="Parámetro para WidgetShoutBox" />' +
'<input type="hidden" name="wpStarttime" value="'+WikiaShoutBox._wgPage.starttimestamp.replace(new RegExp('\\D', 'g'), '')+'" />' +
'<input type="submit" name="wpPreview" value="Añadir código para WidgetShoutBox" />' +
'<input type="hidden" name="wpEditToken" value="' + WikiaShoutBox._wgPage.edittoken + '" /></form></div>');
if (typeof WikiaShoutBox._wgPage.missing == 'string') {
c.find('form').eq(0).append('<input type="hidden" name="wpEdittime" value="'+WikiaShoutBox._wgPage.starttimestamp.replace(new RegExp('\\D', 'g'), '')+'" />');
} else {
c.find('form').eq(0).append('<input type="hidden" name="wpEdittime" value="'+WikiaShoutBox._wgPage.revisions[0].timestamp.replace(new RegExp('\\D', 'g'), '')+'" />');
pagetext += WikiaShoutBox._wgPage.revisions[0]['*'];
}
c.find('textarea').eq(0).val(pagetext);
WikiaShoutBox.expand();
WikiaShoutBox.widgetBtnVisible({start:false, stop:true, collapse:false});
return;
}
};
$(WikiaShoutBox.init);