Difference between revisions of "MediaWiki:Common.js"

From AquaPedia Case Study Database
Jump to: navigation, search
 
(152 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* 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(document).ready(function() {
   jQuery(".altASlist").hide();
+
   jQuery(".expSectionBody").hide();
 
   //toggle the component with class msg_body
 
   //toggle the component with class msg_body
   jQuery(".altASheader").click( function() {
+
   jQuery(".expSectionHeader").click( function() {
     jQuery(this).next(".altASlist").slideToggle(700);
+
     jQuery(this).next(".expSectionBody").slideToggle(700);
 
     if (jQuery(this).hasClass('open')) {
 
     if (jQuery(this).hasClass('open')) {
 
         jQuery(this).removeClass('open').addClass('closed');
 
         jQuery(this).removeClass('open').addClass('closed');
Line 14: Line 120:
 
     }
 
     }
 
   });
 
   });
   jQuery(".altASheader").mouseover(function () {
+
   jQuery(".ASI.expSectionHeader").mouseover(function () {
 
     jQuery(this).css("text-decoration","underline");
 
     jQuery(this).css("text-decoration","underline");
 
   });
 
   });
   jQuery(".altASheader").mouseout(function () {
+
   jQuery(".ASI.expSectionHeader").mouseout(function () {
 
     jQuery(this).css("text-decoration","none");
 
     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] ) );
} );