MediaWiki:Common.js: Difference between revisions

From DominionStrategy Wiki
Jump to navigation Jump to search
adding 160 in case someone wants to fix all the 150s
add borders for 75 and 120 for Special:NewPages
Line 38: Line 38:
     if (elem.offsetWidth == 200 || elem.offsetWidth == 320) {
     if (elem.offsetWidth == 200 || elem.offsetWidth == 320) {
       imgSize = 'full';
       imgSize = 'full';
     } else if (elem.offsetWidth == 100 || elem.offsetWidth == 150 || elem.offsetWidth == 160) {
     } else if (elem.offsetWidth == 75 || elem.offsetWidth == 100 || elem.offsetWidth == 120 || elem.offsetWidth == 150 || elem.offsetWidth == 160) {
       imgSize = 'half';
       imgSize = 'half';
     }
     }

Revision as of 03:13, 6 September 2024

/* Any JavaScript here will be loaded for all users on every page load. */

(function() {

function getCookie(cname) {
  var name = cname + '=';
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return '';
}

function changeBorder() {
  var optionInput = document.querySelector('#cardBorderChanger');
  var curVal = 0;
  if (optionInput.checked) {
    curVal = 11;
  }
  var CookieDate = new Date();
  CookieDate.setFullYear(CookieDate.getFullYear() + 1);
  document.cookie = 'cardbordersize=' + curVal + '; expires=' + CookieDate.toUTCString() + ';';
  setBlackBorder(curVal);
}

function setBlackBorder(bSize) {
  var elems = document.querySelectorAll('img');
  for (var i = 0; i < elems.length; i++) {
    var elem = elems[i];
    var imgSize = '';
    if (elem.offsetWidth == 200 || elem.offsetWidth == 320) {
      imgSize = 'full';
    } else if (elem.offsetWidth == 75 || elem.offsetWidth == 100 || elem.offsetWidth == 120 || elem.offsetWidth == 150 || elem.offsetWidth == 160) {
      imgSize = 'half';
    }
    var newSize = bSize;
    if (bSize > 0 && imgSize == 'half') {
      newSize = 5;
    }
    if (imgSize != '') {
      if (elem.parentElement.className != 'cardborderchanger') {
        elem.outerHTML = '<span class="cardborderchanger" style="display:inline-block; padding:' + newSize + 'px; border-radius:' + (newSize - 1) + 'px; background:black;">' + elem.outerHTML + '</span>';
      } else if (elem.parentElement.className == 'cardborderchanger') {
        elem.parentElement.style.padding = newSize + 'px';
        elem.parentElement.style.borderRadius = (newSize - 1) + 'px';
      }
    }
  }
}

function addSiteOption(optionCookie, optionId, optionFunc) {
  if (!document.querySelector('#' + optionId)) {
    var curVal = getCookie(optionCookie);
    var checked = '';
    if (curVal == '') {
      curVal = 0;
    } else if (curVal > 0) {
      checked = 'checked';
      setBlackBorder(curVal);
    }
    var pNavigationUl = document.querySelector('#p-navigation ul');
    var optionLi = document.createElement('li');
    optionLi.innerHTML = '<label for="'+ optionId +'" style="cursor:pointer; user-select:none">Card Border:&nbsp;</label><input style="height:8px" type="checkbox" id="'+ optionId +'" '+ checked +'>';
    pNavigationUl.insertBefore(optionLi, null);
    var optionInput = document.querySelector('#' + optionId);
    optionInput.addEventListener('change', optionFunc);
  }
}

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].title = '';
    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);
  }
}

function initCommon() {
  fixCardPopups();
  addSiteOption('cardbordersize', 'cardBorderChanger', changeBorder);
}

window.addEventListener('readystatechange', function() {
  initCommon();
});

window.addEventListener('DOMContentLoaded', function() {
  initCommon();
});

window.addEventListener('load', function() {
  initCommon();
});

initCommon();

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]);
  }
  add('DominionStrategy_Wiki:Council_Room', 'ca-new-section');
}

$(document).ready(add_portlet_links);

})();