Fandom

Reborn Wiki

ArchiveTool/code.es.js

1,750pages on
this wiki
Add New Page
Discussion0 Share
  • /
  • /

/*

* Copyright © 2009, Daniel Friesen
* All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*     * Redistributions of source code must retain the above copyright
*       notice, this list of conditions and the following disclaimer.
*     * Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*     * Neither the name of the script nor the
*       names of its contributors may be used to endorse or promote products
*       derived from this software without specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY DANIEL FRIESEN AS IS AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL DANIEL FRIESEN BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

if ( skin == "monaco" ) { importStylesheetPage('ArchiveTool/code.css', 'dev'); (function($) { var archiveListTemplate = window.archiveListTemplate || 'ArchiveList'; var archivePageTemplate = window.archivePageTemplate || 'ArchivePage';

if ( wgNamespaceNumber % 2 === 1 && ( wgAction === "view" || wgAction === "purge" ) ) { $(function() { function api(q, fn) { q.format = 'json'; return $.post(wgScriptPath + '/api.php', q, fn, "json"); } function token(page, fn) { api({ action: 'query', query: 'prop', prop: 'info', titles: page, intoken: 'edit' }, function(q) { for ( var k in q.query.pages ) return fn(q.query.pages[k]); }); }

function startArchiving() { var c = archiveListTemplate.substr(0,1); var archiveListRegex = '['+c.toUpperCase()+c.toLowerCase()+']'+archiveListTemplate.substr(1); var bc = $('#bodyContent').addClass('archiving').empty(); $('<img class="ajax" alt="Cargando..." />') .attr({src: stylepath+'/common/progress-wheel.gif'}).appendTo(bc); api({ action: 'query', prop: 'revisions', titles: wgPageName, rvprop: 'timestamp|content' }, function(q) { bc.empty(); var rev = q.query.pages[wgArticleId].revisions[0]; var time = rev.timestamp; var talkToken, tokenTime; var content = rev['*']; token(wgPageName, function(p) { talkToken = p.edittoken; tokenTime = p.starttimestamp; });

var lines = content.split('\n');

var table = $('<thead></thead>
Lines{…}
').appendTo(bc);

var ul = $('<tbody/>').appendTo(table);

for ( var l = 0; l < lines.length; l++ ) { var line = lines[l]; $('<tr/>').toggleClass('noarchive', (new RegExp('^\\{\\{'+archiveListRegex+'\}\}')).test(line)) .attr({line:line}) .append( $('<td class=line />').text(line).append(' ') ).appendTo(ul); }

var sections = []; var sectionEnd = lines.length-1; for ( var l = lines.length-1; l >= 0; l-- ) { var line = lines[l];

if ( /^=.+?=/.test(line) || l === 0 ) { var section = { start: l, end: sectionEnd }; section.length = section.end - section.start + 1; sections.unshift(section);

sectionEnd = l-1; } }

var section; while( section = sections.shift() ) { var tr = ul.children().eq(section.start); $('<td class=section />').attr({rowspan: section.length}).appendTo(tr); }


$('<div class=buttons />').append( $('<a href=#>Archivar todo</a>').click(function(e) { e.preventDefault(); ul.children('tr').addClass('archive'); }), ' ', $('<a href=#>Desecleccionar todo </a>').click(function(e) { e.preventDefault(); ul.children('tr').removeClass('archive'); }), ' ', $('<a href=#>Archivo final (guardar)</a>').click(function(e) { archive(); }) ).prependTo(bc).clone(true).appendTo(bc);

var click = false; var add; table.mousedown(function(e) { e.preventDefault(); var $li = $(e.target).closest('tr'); if(!$li.length) return; var $section = $(e.target).closest('.section'); if ( $section.length ) { var slist = $li.nextAll(':lt('+(parseInt($section.attr('rowspan'),10)-1)+')').andSelf(); var sadd = slist.filter(function() { return !$(this).hasClass('archive') }).length; slist.toggleClass('archive', !!sadd); return; } click = true; add = !$li.hasClass('archive');

$li.toggleClass('archive', !!add); }); table.mouseover(function(e) { if (!click) return; var $li = $(e.target).closest('tr'); if(!$li.length) return;

$li.toggleClass('archive', !!add); }); $('body').mouseup(function(e) { click = false; });

function archive() { var talkLines = []; var archiveLines = []; ul.children().each(function() { var arr = $(this).hasClass('noarchive') || !$(this).hasClass('archive') ? talkLines : archiveLines;

arr.push( $(this).attr('line') ); });

if ( !/^\{\{[Aa]rchiveList\}\}/.test(talkLines[0]) ) talkLines = ['Template:'+archiveListTemplate+'', ].concat(talkLines); archiveLines = ['Template:'+archivePageTemplate+'', ].concat(archiveLines);

bc.empty(); $('<img class="ajax" alt="Loading..." />') .attr({src: stylepath+'/common/progress-wheel.gif'}).appendTo(bc);

//$('
').text(talkLines.join('\n')).appendTo(bc);
							//$('
').text(archiveLines.join('\n')).appendTo(bc);

runArchive(talkLines.join('\n'), archiveLines.join('\n')); }

var archiveTitle; function runArchive(talkContent, archiveContent) { var archiveNo; function findArchives() {

var m = $('

Finding archive id:

').appendTo(bc);

api({ action: 'query', list: 'allpages', apnamespace: wgNamespaceNumber, apprefix: wgTitle+'/Archive', aplimit: 1, apdir: 'descending' }, function(q) { archiveNo = q.query.allpages.length ? parseInt(q.query.allpages[0].title.substr(wgPageName.length+"/Archive".length),10)+1 : 1; archiveTitle = wgPageName+'/Archive '+archiveNo; m.append('done... (using '+archiveNo+')');

saveArchive(); }); }

function saveArchive() {

var m = $('

Finding token for '+archiveTitle+':

').appendTo(bc);

token(archiveTitle, function(p) { m.append('done...');

m = $('

Guardando página de archivo:

').appendTo(bc);

api({ action: 'edit', title: archiveTitle, text: archiveContent, token: p.edittoken, summary: "Archivado mediante ArchiveTool desde "+wgPageName+".", minor: true, createonly: true }, function(q) { if ( q.error && q.error.code === "articleexists" ) { m.append('failed...');

bc.append("

The archive page we tried to create already exists.

");

return abort(); } m.append('done...');

saveTalk(); }); }); }

function saveTalk() {

var m = $('

Finding token for '+wgPageName+':

').appendTo(bc);

m.append('done...');

m = $('

Actualizando página de discusión:

').appendTo(bc);

api({ action: 'edit', title: wgPageName, text: talkContent, token: talkToken, summary: "Archivando mediante ArchiveTool -> "+archiveTitle+".", minor: true, basetimestamp: time, starttimestamp: tokenTime }, function(q) { if ( q.edit.result === "Success" ) { m.append('done...'); bc.find('.ajax').remove(); location = wgServer+wgScript+'?title='+encodeURI(wgPageName)+'&action=purge'; } else { m.append('failed...');

bc.append("

Fallo al actualizar tu página de discusión, puede que desee tener la subpágina archivo que acabamos de crear eliminado.

");

return abort(); }

}); }

function abort() { bc.find('.ajax').remove();

bc.append("

Aborting...

"); $("

You may want to

")

.append( $('<a>refresh</a>').attr({href: wgServer+wgArticlePath.replace('$1', encodeURI(wgPageName))}) ) .append(' and try again.') .appendTo(bc); }

// start findArchives(); }

});

}

$('
  • <div/><a id=ca-archive href=# rel=nofollow>Archive</a></li>') .click(startArchiving) .appendTo('#page_controls'); }); } })(jQuery); } /*
  • Ad blocker interference detected!


    Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

    Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.