TeXify-Plickers

GreaseMonkey script for add LaTeX code in Plickers website. Use delimiters [; and ;]

// ==UserScript==
// @name TeXify-Plickers
// @namespace https://github.com/obook/TeXify-Plickers
// @version	17
// @description	GreaseMonkey script for add LaTeX code in Plickers website. Use delimiters [; and ;]
// @author obooklage - Education Nationale / Académie de Créteil - FRANCE
// @licence MIT License (MIT)
// @grant none
// @include https://plickers.com/*
// @include https://*.plickers.com/*
// @include https://www.plickers.com/*
// @homepageURL https://github.com/obook/TeXify-Plickers/
// @icon https://github.com/obook/TeXify-Plickers/raw/master/icon.png
// @run-at document-end
// ==/UserScript==

/* AS FONT SIZE +/- WAS REMOVED : NEW SETTING PLICKERS SEPTEMBER 2018 HERE */
var QUESTION_TEXT_SIZE = "32px";
var CHOICES_TEXT_SIZE = "24px";

/* OTHER SETTINGS */
var mathjaxloaded = false;
var debugtexify = false;
var movequestionimage = false;

function ConsolePrint(message)
{
  var startTime = new Date();
  console.log('[TeXify-Plickers] '+ startTime.toLocaleTimeString() + ' ' + message) ;
}

function SetClassFontSize(ClassStr,SizeStr) {
  var class_obj_array = document.getElementsByClassName(ClassStr);
  if(class_obj_array)
  {
    for (var i = 0; i < class_obj_array.length; i++)
    {
      var element = class_obj_array[i];
      if( element.innerText )
      {
        element.style["font-size"] = SizeStr;
      }
    }
  } 
}

function OnLoadMathJax()
{
    
    MathJax.Hub.Config({
    showProcessingMessages : false,
    tex2jax: {
      inlineMath: [ ['[;',';]'] ],
      processEscapes: true
    }
    });
    
    mathjaxloaded = true;

    ConsolePrint('MATHJAX SET & READY');
}

function TeXifyPlickers() {

    if( mathjaxloaded !== true)
    {
        ConsolePrint('MATHJAX NOT LOADED YET ');
        return;
    }

    if( debugtexify === true )
        ConsolePrint('MATHJAX SCAN & FONT RESIZE');
  
    /* Question Size */
    SetClassFontSize("slide-body", QUESTION_TEXT_SIZE);
  
    /* Choices Size */
    SetClassFontSize("slide-choices slide-choices--complete", CHOICES_TEXT_SIZE);  
  
    /* MathJax rescan */
    MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
}

/* Intercept CTRL+E for "[; XX ;]" insertion (Futur use)*/

function keyDownHandler(zEvent) {
    if (zEvent.ctrlKey  &&  zEvent.code === "KeyE") {
      ConsolePrint('CONTROL-E KEY DETECTED');
      /* question editor present ? */
      var editor_div_array = document.getElementsByClassName('table-question heading-small ng-binding ng-hide');
      if( editor_div_array.length > 0 )
      {
        ConsolePrint(editor_div_array.length + ' EDITOR(S) DETECTED ');
        
        // Insert "[; XX ;]"
        // 
      }
    }
}

/* Application */
if (self == top) { /* run only in the top frame. we do our own frame parsing */
  ConsolePrint('STARTED');
  var script = document.createElement('script');
  script.type = 'text/javascript';
  /* end 30/04/2017 : script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"; */
  script.src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML";
  script.onload = OnLoadMathJax;
  document.head.appendChild(script);
  /* Keyboard */
  /* not ready : 
   * document.addEventListener("keydown", keyDownHandler, false);
   * */
  setInterval(TeXifyPlickers, 3000);
}