Draft/MediaWiki:Common.js

From CODECS Dev

/* Any JavaScript here will be loaded for all users on every page load. */ mw.loader.load( '/dev/index.php?title=MediaWiki:Common.js/BootstrapMultiselect.js&action=raw&ctype=text/javascript' );

function setupCollapseToggle() {

$('.collapse-toggle').click(function(){ $(this).toggleClass('fa-chevron-down'); $(this).toggleClass('fa-chevron-up'); $(this).parent().find(".collapse").collapse('toggle'); });

}

function setupCodeMirrorXML() {

$.getScript("/dev/extensions/CodeMirror/resources/lib/codemirror/mode/javascript/javascript.js"), $.getScript("/dev/extensions/CodeMirror/resources/lib/codemirror/mode/xml/xml.js").done(function() {

var codeMirror = $(".CodeMirrorXML")[0]; var editor = CodeMirror.fromTextArea(codeMirror, { lineNumbers: true, mode: "xml", autoCloseTags: true, lineWrapping:true });

});

}

/**/ function readMoreOverflowControl() { var getElements = document.querySelectorAll('.collapse-text'); Array.from(getElements).forEach(function(element) { if (element.scrollHeight >= 100 ) { // Do Nothing } else { $(element).next().find(".collapse-btn").hide(); } }); }

/* Lazy loading */ var callback = function(entries, observer) {

   entries.forEach(function(entry){
       if (entry.isIntersecting) {
           var tofetch = entry.target.getAttribute('data-fetch');
           var params = {
               action: 'parse',
               text: tofetch,
               contentmodel: 'wikitext',
               format: 'json'
             },
            api = new mw.Api();
            api.post( params ).done( function ( data ) {
               console.log(data.parse.text['*']);
               entry.target.innerHTML = data.parse.text['*'];
               observer.unobserve(entry.target);
             } )
             .fail( function (data){
               console.log('fail', data);
               entry.target.innerHTML = data+' error';
            });
           }
   });

};

var options = {

 root: document,
 rootMargin: '0px',
 threshold: 1.0

};

var observer = new IntersectionObserver(callback, options); $('document').ready(function(){

     document.querySelectorAll('[data-fetch]').forEach(function(target){
         observer.observe(target);
      });

});


/***** WSForm: loading Select2 ****/

 if ($('select[data-inputtype="ws-select2"]')[0]) {
   mw.loader.load('/dev/extensions/WSForm/select2.min.css', 'text/css');
   $.getScript('/dev/extensions/WSForm/select2.min.js').done(function() {
     $('select[data-inputtype="ws-select2"]').each(function() {
       var selectid = $(this).attr('id');
       var selectoptionsid = 'select2options-' + selectid;
       var select2config = $("input#" + selectoptionsid).val();
       var F = new Function(select2config);
       return (F());
     });
   });
 }

/* Enable Select2 for WSForm

$(function() { setSelect2(); }); window.setSelect2 = function() { // Select2 if ($('select[data-inputtype="ws-select2"]')[0]) {

   mw.loader.using('ws.wsform.select2').then(function(script, textStatus) {
     $('select[data-inputtype="ws-select2"]').each(function() {
       var selectid = $(this).attr('id');
       var selectoptionsid = 'select2options-' + selectid;
       var select2config = $("input#" + selectoptionsid).val();
       var F = new Function(select2config);
       return (F());
     });
   });
 }

};

  • /

/* compare function attachTokens() { if ($('select[data-inputtype="ws-select2"]')[0]) { mw.loader.load('/dev/extensions/WSForm/select2.min.css', 'text/css'); $.getScript('/dev/extensions/WSForm/select2.min.js').done(function() { $('select[data-inputtype="ws-select2"]').each(function() { var selectid = $(this).attr('id'); var selectoptionsid = 'select2options-' + selectid; var select2config = $("input#" + selectoptionsid).val(); var F = new Function(select2config); return (F()); }); }); } }

  • /

function setupContentEditable() { $('[contenteditable]').on('paste', function(e) { var $self = $(this); setTimeout(function() { $self.html($self.text()); }, 0); }).on('keypress', function(e) { return e.which != 13; }); }

/* */ $(document).ready(function() {

if ($("select.multiselect")[0]) { $.when( mw.loader.load( '/dev/index.php?title=MediaWiki:Common.js/BootstrapMultiselect.js&action=raw&ctype=text/javascript' ) ).done(function() { setupBootstrapMultiselect(); }); }

/* if ($(".CodeMirrorXML")[0]) { $.when( $.getScript("https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"), $.getScript("https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"), mw.loader.load( 'https://www.vanhamel.nl/dev/extensions/CodeMirror/resources/lib/codemirror/lib/codemirror.css', 'text/css' ), $.getScript("https://www.vanhamel.nl/dev/extensions/CodeMirror/resources/lib/codemirror/lib/codemirror.js") ).then(function() { setupCodeMirrorXML(); }, function(e) { mw.notify( 'Whoops!' ); mw.log.error( e.message ); } ); } */

setupContentEditable();

if ($(".collapse-text")[0]) { readMoreOverflowControl(); }

if ($(".collapse-toggle")[0]) { setupCollapseToggle(); }


/* if ($("#cropper-image")[0]) { setupCropper(); } */

});