Difference between revisions of "User:Fbstj/gadget/history-test.js"
Jump to navigation
Jump to search
m (+notices junk) |
m (try this) |
||
Line 5: | Line 5: | ||
if (!v) return v; |
if (!v) return v; |
||
v = v.replace(/\.(\d+)/, "%$1"); |
v = v.replace(/\.(\d+)/, "%$1"); |
||
− | + | let a = "<a href='/edit/Template:" + v +"'>edit</a>"; |
|
$('.title', this).append("<span class='mw-editsection' style='float: right;' >[" + a + "]</span>"); |
$('.title', this).append("<span class='mw-editsection' style='float: right;' >[" + a + "]</span>"); |
||
} |
} |
||
Line 15: | Line 15: | ||
}); |
}); |
||
+ | /* add links to edit box */ |
||
⚫ | |||
+ | const A = (url, text) => { |
||
− | /* see User:Fbstj/notice_sandbox */ |
||
+ | const el = document.createElement('a') |
||
− | |||
+ | el.setAttribute('href', url) |
||
− | /* |
||
+ | el.innerText = text |
||
− | filters for the first previous `sel` on each of `this` |
||
+ | return el |
||
− | 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; |
||
} |
} |
||
+ | const pagename = mw.config.get('wgPageName') |
||
− | /* |
||
− | 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')) |
||
− | } |
||
+ | const edit_box = document.querySelector('.editButtons') |
||
− | /* |
||
+ | edit_box.appendChild(A('https://wob.coppermind.net/basic_search/?query='+ pagename, 'search Arcanum for "'+ pagename +'"')) |
||
− | pass to NoticeHeaderPairs to add notices to headers |
||
+ | edit_box.appendChild(A('http://search.coppermind.net/?search='+ pagename, 'search books for "'+ pagename +'"')) |
||
− | */ |
||
− | 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('¿')); |
||
− | } |
||
⚫ | |||
− | $('h1,h2:not(.notes),h3,h4', $('#content')).children(':not(.editsection,.notice)').css('margin-right','1em'); |
||
}) |
}) |
Revision as of 18:42, 21 November 2017
/* Add edit buttons to templates */ $(function () { function edit_button(i, v) { if (!v) return v; v = v.replace(/\.(\d+)/, "%$1"); let a = "<a href='/edit/Template:" + v +"'>edit</a>"; $('.title', this).append("<span class='mw-editsection' style='float: right;' >[" + a + "]</span>"); } $('.navbar').attr('id', edit_button); $('.infobox').attr('id', edit_button); }); /* add links to edit box */ $(function () { const A = (url, text) => { const el = document.createElement('a') el.setAttribute('href', url) el.innerText = text return el } const pagename = mw.config.get('wgPageName') const edit_box = document.querySelector('.editButtons') edit_box.appendChild(A('https://wob.coppermind.net/basic_search/?query='+ pagename, 'search Arcanum for "'+ pagename +'"')) edit_box.appendChild(A('http://search.coppermind.net/?search='+ pagename, 'search books for "'+ pagename +'"')) })