Difference between revisions of "MediaWiki:Common.js"
From AquaPedia Case Study Database
(35 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;} | if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;} | ||
+ | /* Inserts text at the cursor location in a textarea html element */ | ||
$.fn.extend({ | $.fn.extend({ | ||
− | + | insertAtCaret: function(myValue){ | |
− | + | var obj; | |
− | + | if( typeof this[0].name !='undefined' ) obj = this[0]; | |
− | + | else obj = this; | |
− | + | ||
− | + | if ($.browser.msie) { | |
− | + | obj.focus(); | |
− | + | sel = document.selection.createRange(); | |
− | + | sel.text = myValue; | |
− | + | obj.focus(); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
+ | else if ($.browser.mozilla || $.browser.webkit) { | ||
+ | var startPos = obj.selectionStart; | ||
+ | var endPos = obj.selectionEnd; | ||
+ | var scrollTop = obj.scrollTop; | ||
+ | obj.value = obj.value.substring(0, startPos)+myValue+obj.value.substring(endPos,obj.value.length); | ||
+ | obj.focus(); | ||
+ | obj.selectionStart = startPos + myValue.length; | ||
+ | obj.selectionEnd = startPos + myValue.length; | ||
+ | obj.scrollTop = scrollTop; | ||
+ | } else { | ||
+ | obj.value += myValue; | ||
+ | obj.focus(); | ||
+ | } | ||
+ | } | ||
}) | }) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Line 143: | Line 101: | ||
//to add to toolbox: ModifySidebar("add", "toolbox", "...","http://.."); | //to add to toolbox: ModifySidebar("add", "toolbox", "...","http://.."); | ||
//removes [[Special:SpecialPages]] from toolbox | //removes [[Special:SpecialPages]] from toolbox | ||
− | ModifySidebar("remove", "toolbox", "Special Pages", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:SpecialPages"); | + | //ModifySidebar("remove", "toolbox", "Special Pages", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:SpecialPages"); |
ModifySidebar("remove", "toolbox", "Related Changes", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:RecentChangesLinked/"); | ModifySidebar("remove", "toolbox", "Related Changes", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:RecentChangesLinked/"); | ||
} | } | ||
addOnloadHook(CustomizeModificationsOfSidebar); | addOnloadHook(CustomizeModificationsOfSidebar); | ||
+ | |||
+ | jQuery(document).ready(function() { | ||
+ | jQuery(".expSectionBody").hide(); | ||
+ | //toggle the component with class msg_body | ||
+ | jQuery(".expSectionHeader").click( function() { | ||
+ | jQuery(this).next(".expSectionBody").slideToggle(700); | ||
+ | if (jQuery(this).hasClass('open')) { | ||
+ | jQuery(this).removeClass('open').addClass('closed'); | ||
+ | } else if (jQuery(this).hasClass('closed')) { | ||
+ | jQuery(this).removeClass('closed').addClass('open'); | ||
+ | } else { | ||
+ | jQuery(this).addClass('open'); | ||
+ | } | ||
+ | }); | ||
+ | jQuery(".ASI.expSectionHeader").mouseover(function () { | ||
+ | jQuery(this).css("text-decoration","underline"); | ||
+ | }); | ||
+ | jQuery(".ASI.expSectionHeader").mouseout(function () { | ||
+ | jQuery(this).css("text-decoration","none"); | ||
+ | }); | ||
+ | |||
+ | }); | ||
+ | |||
+ | |||
+ | /** Popup links -- Use <span class="pops">[[Homepage|Home]]</span> **/ | ||
+ | addOnloadHook( function() { | ||
+ | var pops = function( elems ) { | ||
+ | for (var i=0; i<elems.length; i++) { | ||
+ | if ( !(' '+elems[i].className+' ').match( / pops / ) ) | ||
+ | continue; | ||
+ | var anchs = elems[i].getElementsByTagName('a'); | ||
+ | for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank'; | ||
+ | } | ||
+ | }; | ||
+ | var bc = document.getElementById('bodyContent'); | ||
+ | var tags = ['span', 'div', 'table', 'td', 'th']; | ||
+ | for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( | ||
+ | tags[i] ) ); | ||
+ | } ); |
Latest revision as of 12:05, 26 June 2013
/* Any JavaScript here will be loaded for all users on every page load. */ (function($){var trailing_whitespace=true;$.fn.truncate=function(options){var opts=$.extend({},$.fn.truncate.defaults,options);$(this).each(function(){var content_length=$.trim(squeeze($(this).text())).length;if(content_length<=opts.max_length) return;var actual_max_length=opts.max_length-opts.more.length-3;var truncated_node=recursivelyTruncate(this,actual_max_length);var full_node=$(this).hide();truncated_node.insertAfter(full_node);findNodeForMore(truncated_node).append(' (<a href="#show more content">'+opts.more+'</a>)');findNodeForLess(full_node).append(' (<a href="#show less content">'+opts.less+'</a>)');truncated_node.find('a:last').click(function(){truncated_node.hide();full_node.show();return false;});full_node.find('a:last').click(function(){truncated_node.show();full_node.hide();return false;});});} $.fn.truncate.defaults={max_length:100,more:'…more',less:'less'};function recursivelyTruncate(node,max_length){return(node.nodeType==3)?truncateText(node,max_length):truncateNode(node,max_length);} function truncateNode(node,max_length){var node=$(node);var new_node=node.clone().empty();var truncatedChild;node.contents().each(function(){var remaining_length=max_length-new_node.text().length;if(remaining_length==0)return;truncatedChild=recursivelyTruncate(this,remaining_length);if(truncatedChild)new_node.append(truncatedChild);});return new_node;} function truncateText(node,max_length){var text=squeeze(node.data);if(trailing_whitespace) text=text.replace(/^ /,'');trailing_whitespace=!!text.match(/ $/);var text=text.slice(0,max_length);text=$('<div/>').text(text).html();return text;} function squeeze(string){return string.replace(/\s+/g,' ');} function findNodeForMore(node){var $node=$(node);var last_child=$node.children(":last");if(!last_child)return node;var display=last_child.css('display');if(!display||display=='inline')return $node;return findNodeForMore(last_child);};function findNodeForLess(node){var $node=$(node);var last_child=$node.children(":last");if(last_child&&last_child.is('p'))return last_child;return node;};})(jQuery);var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;} /* Inserts text at the cursor location in a textarea html element */ $.fn.extend({ insertAtCaret: function(myValue){ var obj; if( typeof this[0].name !='undefined' ) obj = this[0]; else obj = this; if ($.browser.msie) { obj.focus(); sel = document.selection.createRange(); sel.text = myValue; obj.focus(); } else if ($.browser.mozilla || $.browser.webkit) { var startPos = obj.selectionStart; var endPos = obj.selectionEnd; var scrollTop = obj.scrollTop; obj.value = obj.value.substring(0, startPos)+myValue+obj.value.substring(endPos,obj.value.length); obj.focus(); obj.selectionStart = startPos + myValue.length; obj.selectionEnd = startPos + myValue.length; obj.scrollTop = scrollTop; } else { obj.value += myValue; obj.focus(); } } }) 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; } } function CustomizeModificationsOfSidebar() { //to add to toolbox: ModifySidebar("add", "toolbox", "...","http://.."); //removes [[Special:SpecialPages]] from toolbox //ModifySidebar("remove", "toolbox", "Special Pages", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:SpecialPages"); ModifySidebar("remove", "toolbox", "Related Changes", "http://aquapedia.waterdiplomacy.org/wiki/index.php?title=Special:RecentChangesLinked/"); } addOnloadHook(CustomizeModificationsOfSidebar); jQuery(document).ready(function() { jQuery(".expSectionBody").hide(); //toggle the component with class msg_body jQuery(".expSectionHeader").click( function() { jQuery(this).next(".expSectionBody").slideToggle(700); if (jQuery(this).hasClass('open')) { jQuery(this).removeClass('open').addClass('closed'); } else if (jQuery(this).hasClass('closed')) { jQuery(this).removeClass('closed').addClass('open'); } else { jQuery(this).addClass('open'); } }); jQuery(".ASI.expSectionHeader").mouseover(function () { jQuery(this).css("text-decoration","underline"); }); jQuery(".ASI.expSectionHeader").mouseout(function () { jQuery(this).css("text-decoration","none"); }); }); /** Popup links -- Use <span class="pops">[[Homepage|Home]]</span> **/ addOnloadHook( function() { var pops = function( elems ) { for (var i=0; i<elems.length; i++) { if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue; var anchs = elems[i].getElementsByTagName('a'); for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank'; } }; var bc = document.getElementById('bodyContent'); var tags = ['span', 'div', 'table', 'td', 'th']; for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) ); } );