Site Notice

hello, world

Difference between revisions of "MediaWiki:Common.js"

From Project-EPB Commons
([InPageEdit] 没有编辑摘要)
([InPageEdit] 没有编辑摘要)
Line 99: Line 99:
 
/* TEST */
 
/* TEST */
 
$(window).on('copy',function(){
 
$(window).on('copy',function(){
   var selectString = window.getSelection().toString();
+
   window.selectString = window.getSelection().toString();
   var finalString = selectString + '\n\n来自wjghj.cn';
+
   window.finalString = selectString + '\n\n来自wjghj.cn';
 
   $('body').append($('<textarea>').attr('id','copyNt').val(finalString));
 
   $('body').append($('<textarea>').attr('id','copyNt').val(finalString));
 
   $("#copyNt").select();
 
   $("#copyNt").select();
   document.execCommand('copy');
+
   $("#copyNt").select(function(){
  $("#copyNt").remove();
+
    document.execCommand('copy');
 +
    $(this).remove();
 +
  });
 
});
 
});
  

Revision as of 18:05, 4 March 2020

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

/** Prettyprint **/
$(function () {
  var pagename = mw.config.get('wgPageName');
  if (pagename.substr(pagename.length - 3, 3) === '.js') {
    $('#mw-content-text pre').addClass('prettyprint lang-js linenums');
  } else if (pagename.substr(pagename.length - 4, 4) === '.css') {
    $('#mw-content-text pre').addClass('prettyprint lang-css linenums');
  } else if (wgNamespaceNumber === 828) {
    $('#mw-content-text pre').addClass('prettyprint lang-lua linenums');
  }
  mw.loader.load('https://common.wjghj.cn/js/prettify');
  mw.loader.load('https://common.wjghj.cn/css/prettify', 'text/css');
});


/** JS Minify **/
mw.loader.load('https://common.wjghj.cn/js/JsMin');
var jsminModal = function (originaltext) {
  ssi_modal.show({
    className: 'in-page-edit minify-js',
    outSideClose: false,
    center: true,
    title: '压缩JS代码',
    content: '<section><textarea id="minifyjs-text" style="width:100% !important;min-height:350px;"></textarea><label for="minifyjs-conment">评论:</label><textarea id="minifyjs-conment" style="width:100% !important;min-height:50px;"></textarea><label for="minifyjs-level">压缩等级:</label><select id="minifyjs-level"><option value="1">最小压缩</option><option value="2" selected="selected">普通压缩</option><option value="3">超级压缩</option></select><hr/><b>压缩前: </b><span id="minifyjs-oldsize">-</span>&nbsp;&nbsp;<b>压缩后: </b><span id="minifyjs-newsize">-</span>&nbsp;&nbsp;<b>压缩率: </b><span id="minifyjs-ratio">0.00%</span></section>',
    buttons: [{
      label: '关闭',
      className: 'btn btn-secondary',
      method: function (e, modal) { modal.close() }
    }, {
      label: '压缩',
      className: 'btn btn-primary',
      method: function (e, modal) {
        $('#minifyjs-text').val(jsmin($('#minifyjs-conment').val(), $('#minifyjs-text').val(), $('#minifyjs-level').val()));
        $('#minifyjs-oldsize').html(jsmin.oldSize);
        $('#minifyjs-newsize').html(jsmin.newSize);
        $('#minifyjs-ratio').html((Math.round(jsmin.newSize / jsmin.oldSize * 1000) / 10) + '%');
      }
    }],
    onShow: function () {
      $('#minifyjs-text').val(originaltext);
    }
  });
}
if (wgNamespaceNumber === 8 && wgAction === 'edit' && wgPageName.substr(wgPageName.length - 3, 3) === '.js') {
  $('.editButtons').append('<div class="wgMinifyJs in-page-edit" style="float:right"><a href="javascript:;" id="minify-js" class="btn btn-primary">压缩JS</a></div>');
  $('#minify-js').click(function () {
    jsminModal($('#wpTextbox1').val());
  });
}


/** Demo **/
switch (mw.config.get('wgPageName')) {
  case 'InPageEdit-v2':
  case 'InPageEdit-v2/API':
  case '受限制页面':
    mw.loader.load('https://common.wjghj.cn/js/InPageEdit-v2');
    break;
}

/** Global script (gtag.js) - Google Analytics **/
mw.loader.load('https://www.googletagmanager.com/gtag/js?id=UA-148909815-2');
$(window).load(function () {
  window.dataLayer = window.dataLayer || [];
  function gtag() { dataLayer.push(arguments); }
  gtag('js', new Date());

  gtag('config', 'UA-148909815-2');
});

/**
 * ECharts
 * Put ECharts on wiki pages
 * Apache licenses https://www.echartsjs.com
 **/
$(function () {
  if ($('.echarts, .ECharts, .Echarts').length > 0) {
    mw.loader.load('https://cdn.bootcss.com/echarts/4.4.0-rc.1/echarts.min.js'); // ECharts CDN
    var tryEcharts = setInterval(function () {
      if (typeof (echarts) !== 'undefined') {
        clearInterval(tryEcharts);
        $('.echarts, .ECharts, .Echarts').each(function () {
          var $this = $(this),
            option = eval("(" + $this.text() + ")"),
            echartsElement = 'echartsElement-' + $this.index();
          console.log("(" + $this.text() + ")");
          $this.attr({ 'id': echartsElement });
          echarts.init(document.getElementById(echartsElement)).setOption(option);
        });
      }
    }, 500);
  }
});

/* TEST */
$(window).on('copy',function(){
  window.selectString = window.getSelection().toString();
  window.finalString = selectString + '\n\n来自wjghj.cn';
  $('body').append($('<textarea>').attr('id','copyNt').val(finalString));
  $("#copyNt").select();
  $("#copyNt").select(function(){
    document.execCommand('copy');
    $(this).remove();
  });
});

/** 
 * User Functions
 ** Provides functions similar to [[Mw:Extension:UserFunctions]]
 * Author: 机智的小鱼君
 * Logs:
 ** 
 **/
(function ($, mw) {
  $('.UserFunctions').html(function () {

    // Create variables
    var NoMatchedItems = 0,
      $this = $(this), // class="UserFunctions"
      $children = $this.children(),
      type = this.dataset.type,
      username = mw.config.get('wgUserName'),
      usergroup = mw.config.get('wgUserGroups');

    // Functions
    switch (type) {

      case 'iflogin':
        if (username != null) {
          $this.children('[data-keyword="true"]').show();
          $this.children('[data-keyword="false"]').hide();
        } else {
          $this.children('[data-keyword="false"]').show();
          $this.children('[data-keyword="true"]').hide();
        }
        break;

      case 'username':
        return username;
        break;

      case 'ifusername':
        $children.each(function () {
          var keyword = this.dataset.keyword;
          if (keyword == username) {
            $(this).show(); ++NoMatchedItems;
          } else {
            $(this).hide();
          }
        });
        break;

      case 'usergroup':
        return usergroup;
        break;

      case 'ifingroup':
        $children.each(function () {
          var keyword = this.dataset.keyword;
          if ($.inArray(keyword, usergroup) > 0) {
            $(this).show(); ++NoMatchedItems;
          } else {
            $(this).hide();
          }
        });
        break;

      default:
        return '<a href="https://dev.fandom.com/wiki/UserFunctions" target="_blank"><span style="font-weight:bold;color:#b00">User Functions type error!</span></a>';

    }

    // If no matched items, then show default
    if (NoMatchedItems < 1) {
      $this.children('[data-keyword="!default"]').show();
    }
  });
}(jQuery, mediaWiki));