User:Goadeff/common.js

function CustomizeModificationsOfSidebar { ModifySidebar("add", "navigation", "User/common.js", "http://en.wikipedia.org/wiki/User:Goadeff/common.js"); ModifySidebar("add", "navigation", "User/common.css", "http://en.wikipedia.org/wiki/User:Goadeff/common.css"); } $(CustomizeModificationsOfSidebar)

/*************************************************************************** BEGIN jQuery extensions Lifted from: https://github.com/Kasheftin/jquery-textarea-caret: jQuery.fn.extend({   insertAtCursor: function(myValue) {        return this.each(function(i) { if (document.selection) { this.focus; sel = document.selection.createRange; sel.text = myValue; this.focus; }           else if (this.selectionStart || this.selectionStart == "0") { var startPos = this.selectionStart; var endPos = this.selectionEnd; var scrollTop = this.scrollTop; this.value = this.value.substring(0,startPos) + myValue + this.value.substring(endPos,this.value.length); this.focus; this.selectionStart = startPos + myValue.length; this.selectionEnd = startPos + myValue.length; this.scrollTop = scrollTop; }               else { this.value += myValue; this.focus; }       });    },    insertAroundCursor: function(myValueBefore,myValueAfter) {        return this.each(function(i) { if (document.selection) { this.focus; sel = document.selection.createRange; sel.text = myValueBefore + sel.text + myValueAfter; this.focus; }           else if (this.selectionStart || this.selectionStart == "0") { var startPos = this.selectionStart; var endPos = this.selectionEnd; var scrollTop = this.scrollTop; this.value = this.value.substring(0,startPos) + myValueBefore + this.value.substring(startPos,endPos) + myValueAfter + this.value.substring(endPos,this.value.length); this.focus; this.selectionStart = startPos + myValueBefore.length; this.selectionEnd = endPos + myValueBefore.length; this.scrollTop = scrollTop; }           else { this.value += myValueBefore + myValueAfter; this.focus; }       });    } }); /*************************************************************************** END jQuery extensions /*************************************************************************** BEGIN My own bit of tinkering... function selectionMagic {   oldText = $('#wpTextbox1').textSelection('getSelection'); newText = $(' ').text(oldText).html; $('#wpTextbox1').insertAtCursor(newText); } /*************************************************************************** END of my own bit of tinkering... /***************************************************************************  Modifying newer WikiEditor toolbar ref: http://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization/Library var customizeToolbar = function { $('#wpTextbox1').wikiEditor('addToToolbar', {       section: 'main', group: 'format', tools: { "strikethrough": { label: 'Strike', type: 'button',             icon: 'http://upload.wikimedia.org/wikipedia/commons/6/6d/Vector_strikeout.png',                action: { type: 'encapsulate', options: { pre: " ", post: " " } }            }        }    }); $('#wpTextbox1').wikiEditor('addToToolbar', {       section: 'main', group: 'format', tools: { "pre": { label: 'Pre', type: 'button',             icon: 'http://upload.wikimedia.org/wikipedia/commons/b/b9/Toolbar_pre_vector.png',                action: { type: 'encapsulate', options: { pre: " ", post: " ", peri: "preformatted text" } }            }        }    }); }; /* Check if we are in edit mode and the required modules are available and then customize the toolbar */ if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { mw.loader.using( 'user.options', function {                if ( mw.user.options.get('usebetatoolbar') ) {                        mw.loader.using( 'ext.wikiEditor', function  { $(document).ready( customizeToolbar ); } );               }        } ); } /***************************************************************************    Modifying the sidebar -- I favor using DynamicSidebar extension instead, but this still may be usefull... ref: http://www.mediawiki.org/wiki/Manual:Interface/Sidebar#Add_or_remove_sections_.28JavaScript.29 I'm putting the ModifySidebar function here, and users make their own customizations in User/common.js function ModifySidebar(action, section, name, link) { try { switch (section) { case "languages": var target = "p-lang"; break; case "toolbox": var target = "p-tb"; break; case "navigation": var target = "p-navigation"; break; default: var target = "p-" + section; break; }       if (action == "add") { var node = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var aNode = document.createElement('a'); var liNode = document.createElement('li'); aNode.appendChild(document.createTextNode(name)); aNode.setAttribute('href', link); liNode.appendChild(aNode); liNode.className='plainlinks'; node.appendChild(liNode); }       if (action == "remove") { var list = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var listelements = list.getElementsByTagName('li'); for (var i = 0; i < listelements.length; i++) { if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||                   listelements[i].getElementsByTagName('a')[0].href == link) { list.removeChild(listelements[i]); }           }        }    } catch(e) { // lets just ignore what's happened return; } }