MediaWiki talk:Common.js

From DominionStrategy Wiki
Jump to navigation Jump to search
/* Any JavaScript here will be loaded for all users on every page load. */

// ADDING PORTLET LINKS
function add_portlet_links(){
	var PortletLinks = {
	/*
		PortletLinks[ string linkID ] = Array(
			boolean left,     // true if added on the left-side, false if right
			string label,
			string tooltip,
			string href,
			string accesskey,
			integer position  // insert position, counting from left
		)
	*/
		"ca-new-section":[false,"New Section","Add a new section","?action=edit&section=new","+",3]
	}

	/*
		Add a portlet link to page
		PARAMS
			regexp/string page: RegExp or exact match string of page titles to add portlet link
			string id         : linkID of the added portlet link
	*/

	function add(page,id){
		if(typeof page == "string"){
			if(wgPageName != page) return false
		}else if(!page.test(wgPageName)) return false
		
		var link = PortletLinks[id]
		if(!link) return false
		var vector = link[0] ? 'p-namespaces' : 'p-views'
		return mw.util.addPortletLink( vector , link[3] , link[1] , id , link[2] , link[4] , $('#'+vector+' li')[link[5]-1] )
	}

	// Register adding portlets
	add('DominionStrategy_Wiki:Council_Room','ca-new-section')
}
$(document).ready( add_portlet_links )

function fixCardPopup(e) {
  var elem;
  if (e.target) {
    elem = e.target.parentElement.nextElementSibling;
  } else {
    elem = e;
  }
  if (elem.getBoundingClientRect().x > window.innerWidth / 2) {
    elem.style.left = '-' + (elem.offsetWidth - elem.previousElementSibling.offsetWidth + 20) + 'px';
  }
}

function fixCardPopups() {
  var elems = document.querySelectorAll('.card-popup > a');
  for (var i = 0; i < elems.length; i++) {
    elems[i].addEventListener('mouseover', fixCardPopup);
  }
  var elems = document.querySelectorAll('.card-popup > span > img');
  for (var i = 0; i < elems.length; i++) {
    fixCardPopup(elems[i].parentElement);
  }
}
$(document).ready( fixCardPopups )