Difference between revisions of "User:Fbstj/gadget/history-test.js"

From The Coppermind
Jump to navigation Jump to search
m (+notices junk)
m (Fbstj moved page User:Fbstj/common.js to User:Fbstj/gadget/history-test.js without leaving a redirect)
 
(150 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
mw.hook('wikipage.content').add(function revs_gadget() {
/* Add edit buttons to templates */
 
$(function () {
 
   
  +
const pageid = mw.config.get('wgArticleId')
function edit_button(i, v) {
 
  +
const query = {
if (!v) return v;
 
  +
// request the history of this page
v = v.replace(/\.(\d+)/, "%$1");
 
  +
pageids: [pageid],
var a = "<a href='/edit/Template:" + v +"'>edit</a>";
 
  +
prop: 'revisions',
$('.title', this).append("<span class='mw-editsection' style='float: right;' >[" + a + "]</span>");
 
  +
// request the oldest edits first
  +
rvdir: 'newer',
  +
// request as many as you can at once
  +
rvlimit: 'max',
  +
// properties to fetch:
  +
rvprop: [ 'ids', 'user', 'timestamp', 'size', 'tags', ],
 
}
 
}
  +
const api = new mw.Api({ parameters: query, })
   
  +
api.get().then(function old_hist(resp) {
$('.navbar').attr('id', edit_button);
 
   
  +
const page = resp.query.pages[pageid]
$('.infobox').attr('id', edit_button);
 
  +
page.revisions.forEach(console.log)
   
});
+
})
   
 
/* see User:Fbstj/notice_sandbox */
 
 
/*
 
filters for the first previous `sel` on each of `this`
 
cb gets the passed element and the first matched element (or _default, if nothing matched)
 
*/
 
$.fn.previous = function (sel, cb/*(el)*/, _default) {
 
$(this).each(function () {
 
var pre = $(this).prevAll(sel);
 
cb.call(this, pre.length ? pre.first() : _default);
 
})
 
}
 
/* returns true if the element has the passed class */
 
$.fn.classed = function (cls) {
 
return $(this)[0].classList ? $(this)[0].classList.contains(cls) : false;
 
}
 
 
/*
 
filter for all .notice instances (not including .stub's)
 
returning the 'parent' header:
 
- subsection: the hX of the subsection
 
- preamble: the first h1 element
 
*/
 
function NoticeHeaderPairs(cb/*(el_header)*/){
 
$('.notice:not(.stub)').previous('h1,h2,h3,h4,h5', cb, $('h1'))
 
}
 
 
/*
 
pass to NoticeHeaderPairs to add notices to headers
 
*/
 
function AddNoticeToHeader(h){
 
var that = $(this)
 
function _match(cls,el){
 
if (!that.classed(cls))
 
return;
 
h.append(el);
 
that.hide();
 
el.click(function(){ that.toggle(); });
 
}
 
function _el(text,color){ return ne('span').attr('class','notice').attr('title',text).css('color',color); }
 
function _img(source,text){ return ne('img').attr('class','notice').attr('src', source).attr('alt', text).attr('title', text); }
 
/* matches */
 
_match('exemplary',_el('This article is exemplary','gold').text('★'));
 
_match('attention',_el('This article needs serious attention', 'red').text('!'));
 
_match('delete',_img('http://upload.wikimedia.org/wikipedia/commons/9/93/Trash_can.svg', 'This article is to be deleted'));
 
_match('move',_el('This article may be moved', 'blue').text('⇄'));
 
_match('copyright',_el('This article is copyright','brown').text('©'));
 
_match('spoilers',_el('This article/section has spoilers','#FAA').text('¬.¬'));
 
_match('theory',_el('This article/section contains theory or speculation','#29F').text('¿'));
 
}
 
 
jQuery(function ($) {
 
$('h1,h2:not(.notes),h3,h4', $('#content')).children(':not(.editsection,.notice)').css('margin-right','1em');
 
 
})
 
})

Latest revision as of 19:54, 20 August 2019

mw.hook('wikipage.content').add(function revs_gadget() {

const pageid = mw.config.get('wgArticleId')
const query = {
  // request the history of this page
  pageids: [pageid],
  prop: 'revisions',
   // request the oldest edits first
   rvdir: 'newer',
   // request as many as you can at once
   rvlimit: 'max',
   // properties to fetch:
   rvprop: [ 'ids', 'user', 'timestamp', 'size', 'tags', ],
}
const api = new mw.Api({ parameters: query, })

api.get().then(function old_hist(resp) {

const page = resp.query.pages[pageid]
page.revisions.forEach(console.log)

})

})