• 正在查找将来过去时的官方设定集?不如看看万界大百科吧!
  • 《将来过去时》第一部分 现在 魔科纪元的少年少女 即将正式发布!
  • 让我偷偷看一眼小鱼君的博客……
  • 服务器已成功迁移到 阿里云(杭州)

MediaWiki:Common.js

来自小鱼君和他的朋友们
机智的小鱼君讨论 | 贡献2019年10月25日 (五) 21:44的版本 (//InPageEdit)

注意:在保存以后,您必须绕过浏览器缓存才能看到所作出的改变。

  • 谷歌浏览器(Google Chrome)- Windows:按下“Ctrl”键然后按 F5。OS X系统:同时按⌘ Cmd⇧ Shift键之后按R键。
  • Safari - 按住⇧ Shift键然后点击工具栏中重新载入键。
  • 火狐(Firefox)- Windows:按住Ctrl键然后按F5。OS X系统:同时按⌘ Cmd⇧ Shift键之后按R键。
  • Internet Explorer:按住Ctrl键然后按F5(或者点击“刷新”按钮)。

/** jQuery cookie **/
mw.loader.using(['jquery.cookie'], function () {
  if ($.cookie('use-cookie-notify') !== 'showed') {
    $.toast({
      heading:'我们使用cookie',
      text:'是的,我们的网站使用cookie技术来满足某些功能的使用需求,更多信息请阅读我们的<a href="/wiki/Project:关于/Cookie" style="text-decoration:underline">Cookie使用声明</a>。',
      icon:'info',
      hideAfter:false,
      afterHidden: function(){$.cookie('use-cookie-notify','showed',{expires:60});},
      position:'top-left'
    });
  }
});

/** 分享按钮 **/
mw.loader.load('/index.php?title=MediaWiki:Share-btn.js&action=raw&ctype=text/javascript');

/** ToastNotify **/
mw.loader.load('https://common.wjghj.cn/js/toast');

/** ToastrNotify **/
// mw.loader.load('https://common.wjghj.cn/js/toastr');

/** 版权提示 **/
mw.loader.load('/index.php?title=MediaWiki:NotifyWhenCopy.js&action=raw&ctype=text/javascript');

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

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

/** 方便上传相册缺少的图片 **/
$('.gallery .thumb').prepend(function () {
  var galleryfile = $(this).text();
  if (galleryfile == '') {
    return;
  } else {
    $(this).html('<a href="https://wjghj.cn/index.php?title=Special:Upload&wpDestFile='+galleryfile+'" class="new" target="_blank">点击上传<br/>' + galleryfile + '</a>')
  }
});

/** In page dialog **/
$(function () {
  var DialogId,
  BtnId,
  NextId,
  LastId;
  $('.ipd').html(function () {
    DialogId = this.dataset.dialogid;
    if (DialogId != '1') {
      $(this).hide();
    }
  });
  $('.ipd-next-btn').click(function () {
    BtnId = this.dataset.btnid;
    LastId = this.dataset.lastid;
    if (LastId === 'last') {
      $('#game-selector').show(300);
      $(this).css('color', 'green');
    } else {
      BtnId = parseInt(BtnId);
      NextId = ++BtnId;
      $(this).css('color', 'green');
      $('.ipd[data-dialogid=' + NextId + ']').show(300);
    }
  });
});

/** Game saver **/
$('.GameSaver').html(function(){
  var game,time,user,title,page;
  if ( wgUserName =='' || wgUserName == null ) {
    unlogin = true ;
  } else {
    user = 'User:'+wgUserName ;
}
  game = this.dataset.game;
  time = this.dataset.time;
  title = this.dataset.title;
  page = this.dataset.page;
  $(this).html('<input type=button class="save" value="保存游戏"/>&nbsp;&nbsp;<input type=button class="load" value="读取存档"/>');
  if ( unlogin ) {
    $('.GameSaver .load').click(function(){alert('无法读取存档,请登录后再试');});
  } else {
    $('.GameSaver .load').click(function(){location.href='/wiki/'+user+'/gamesave/'+game});
  }
  $('.GameSaver .save').click(function() {
    if ( unlogin ) {
      $('.GameSaver .save').unbind().attr({'value':'存档失败,请登录后再试','disabled':''});
      return;
    }
    var note = prompt('有什么要备注的吗?','无');
    if (note === null||note === 'null') {
      return;
    }
    $('.GameSaver .save').attr('value','SILI努力帮你存档中…');
    new mw.Api().post({
      action: 'edit',
      title: user+'/gamesave/'+game,
      summary: '\/*' + title+' | '+ time +'*\/新增游戏'+ game +'存档',
      appendtext: '\n== '+ title +' | '+ time +' ==\n*游戏:[[Game:'+ game +']]\n*时间:'+ time +'\n*[['+ page +'|继续游戏]]\n*备注:'+ note +'\n\n',
      token: mw.user.tokens.get('editToken')
    })
    .done(function(){
      $('.GameSaver .save').unbind().attr({'value':'存档完毕!','disabled':''});
    })
    .fail(function(){
      alert('啊哦,存档失败了!\n1)请检查您的网络连接?\n2)您是否没有登录?\n3)刷新页面再试?');
      $('.GameSaver .save').attr('value','重试');
    });
  });
});

/** 顶部公告 **/
function siteNoticeScroll(obj,interval) {
  $(obj).animate({
    height: 'show',
    paddingTop: 'show',
    marginTop: 'show',
    paddingBottom: 'show',
    marginBottom: 'show',
  });
  setInterval(function() {
    $(obj).find('ul:first').animate({
      marginTop: '-25px'
    },
    300,
    function() {
      $(this).css({
        marginTop: '0px',
      }).find('li:first').appendTo(this);
    });
  },
  interval);
}
siteNoticeScroll('.siteNoticeScroll',5000);

/** [[T:Notify]] **/
$(function(){
  $('.notify').html(function(){
    var type = $(this).attr('data-type'),
        content = $(this).html();
    $.toast({
      text: content,
      icon: type
    });
  }).remove();
});

/** 头像系统 **/
$(function() {
  $('#personal').prepend($('<a>', {
    href: '/wiki/Special:Uploadavatar',
    class: 'user-avatar-link',
  }).append($('<img>', {
    src: '/extensions/Avatar/avatar.php?user=' + mw.config.get('wgUserName'),
    class: 'user-avatar'
  })));
  $('.mw-userlink').before(function() {
    var user = $(this).attr('title'),
    avatar = $('<img>', {
      src: '/extensions/Avatar/avatar.php?user=' + user,
      class: 'user-avatar'
    });
    return avatar;
  });
  $('.mw-userlink').each(function() {
    var $this = $(this),
    user = $(this).attr('title'),
    isDone = $(this).attr('data-get-group');
    if (isDone === 'done') return;
    $('.mw-userlink[title="'+user+'"]').attr('data-get-group','done');

    new mw.Api().get({
      action: 'query',
      list: 'users',
      ususers: user,
      usprop: 'groups'
    }).done(function(data) {
      var groups = data.query.users[0].groups;
      if (groups.indexOf('staff') > 0) {
        $this.after('<img class="user-badge staff-icon" src="/images/icons/staff.svg" style="height:1em;width:auto;" title="This user is a wiki staff"/>');
      }
      if (groups.indexOf('sysop') > 0) {
        $this.after('<img class="user-badge" src="/images/icons/admin.svg" style="height:1em;width:auto;" title="This user is a wiki admin"/>');
      }
    });
  });
});

/** Custom Modal**/
function PopupWindow(content,title,settings) {
  PopupWindow(content,title,settings);
}
function closeModal(id){
  var target;
  if (id === undefined) {
    target = $('.customModal, .customModal-bg');
  } else {
    target = $('.customModal[data-modalid="'+id+'"], .customModal-bg[data-modalid="'+id+'"]');
  }
  target.fadeOut(400);
  setTimeout(function(){target.remove()},400);
}
function Modal(content,title,settings) {
  var closeBtn = '<div class="customModal-close"><img class="close-modal" data-action="closeModal" src="https://wjghj.cn/images/d/d0/Close-btn.png"/></div>',
      addClass = '',
      modalId = new Date().getTime();

  if (settings !== undefined) {
    if (settings.closeBtn == false) {
      closeBtn = '';
    }
    if (settings.addClass !== undefined) {
      addClass = settings.addClass;
    }
  }

  if (title != '' && title != undefined) {
    title = '<h2 class="customModal-title">' + title + '</h2>';
  } else {
    title = '';
  }
  if (content == undefined || content == '') {
    title = '<h2 class="customModal-title" class="error"> Error in Popup Window </h2>';
    content = 'No content!';
  }

  $('body').append(
  '<div class="customModal-bg '+addClass+'" data-modalid="'+ modalId + '" style="z-index:'+ modalId + '"></div>' +
  '<div class="customModal '+addClass+'" data-modalid="'+ modalId + '" style="z-index:'+ Number(modalId+1) + '">' +
  '<div class="dragArea" style="width: 100%; text-align: center; color:white; background: gray; height:18px; user-select: none;"><span class="m-icons">drag_handle</span></div>'+
  closeBtn+
  title +
  '<div class="customModal-content">' +
  content +
  '</div>'+
  '</div>'
);

  // 初始化
  $('.customModal[data-modalid="'+modalId+'"], .customModal-bg[data-modalid="'+modalId+'"]').fadeIn(300);
  $('.customModal[data-modalid="'+modalId+'"]').css({
    'position': 'absolute',
    'top': $(window).scrollTop()+120
  });
  $('.customModal').each(function(){
    $this = $(this);
    $this.find('[data-action="closeModal"]').attr('data-modalid',$this.attr('data-modalid'));
  });

  // Close Modal
  $('.customModal-bg, .customModal [data-action="closeModal"]').click(function(){closeModal($(this).attr('data-modalid'))});

  // Dragable
  function bindDragging(e) {
    var element = $(this);
    var baseX = e.clientX;
    var baseY = e.clientY;
    var baseOffsetX = element.parent().offset().left;
    var baseOffsetY = element.parent().offset().top;
    $(document).mousemove(function(e) {
      element.parent().css({
        'left': baseOffsetX + e.clientX - baseX,
        'top': baseOffsetY + e.clientY - baseY
      });
    });
    $(document).mouseup(function() {
      $(document).unbind('mousemove');
      $(document).unbind('mouseup');
      bindDragging(element);
    });
  };
  if (settings !== undefined) {

    if (settings.disableDrag === true) {
      $('.customModal .dragArea').remove();
    } else {
      $('.customModal .dragArea').mousedown(bindDragging);
    }
    if (settings.disableBg !== undefined && settings.disableBg === true) {
      $('.customModal-bg[data-modalid="'+modalId+'"]').unbind();
    }
    if (settings.removeBg !== undefined && settings.removeBg === true) {
      $('.customModal-bg[data-modalid="'+modalId+'"]').remove();
    }

  } else {
    $('.customModal .dragArea').mousedown(bindDragging);
  }

}

//ALL CLEAR