Difference between revisions of "User:Fbstj/gadget/history-test.js"
Jump to navigation
Jump to search
m (smaller links) |
m (+notices junk) |
||
Line 14: | Line 14: | ||
}); |
}); |
||
+ | |||
+ | |||
+ | /* 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'); |
||
+ | }) |
Revision as of 09:58, 27 May 2015
/* Add edit buttons to templates */ $(function () { function edit_button(i, v) { if (!v) return v; v = v.replace(/\.(\d+)/, "%$1"); var 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); }); /* 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'); })