MediaWiki:Common.js:修订间差异

来自McZoo红石站
(创建页面,内容为“→‎这里的任何JavaScript将为所有用户在每次页面载入时加载。:​ →‎-- 为页面加载JS脚本或CSS样式表 --:​ →‎参见[[模板:ResourceLoader]]:​ →‎来源:碧蓝航线WIKI:​ $('.resourceLoader').each(function () { var $x = $(this); var text = $.trim($x.text()); if (!text) return; //加载模块 if ($x.data('isModule') === true) return mw.loader.load(text); //自动补充MediaWiki命名空间 var ns = text.match('…”
 
Xm讨论 | 贡献
无编辑摘要
标签手工回退
 
(未显示同一用户的7个中间版本)
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* -- 为页面加载JS脚本或CSS样式表 -- */
/* 不要脸的复制 */
/* 参见[[模板:ResourceLoader]]*/
/* sitenotice from huoqibaike.com*/
/* 来源:碧蓝航线WIKI*/
$('.resourceLoader').each(function () {
  var $x = $(this);
  var text = $.trim($x.text());
 
  if (!text) return;
 
  //加载模块
  if ($x.data('isModule') === true)
    return mw.loader.load(text);
 
  //自动补充MediaWiki命名空间
  var ns = text.match('^.*?:');
  if (!ns) text = 'MediaWiki:' + text;
 
  //加载CSS样式表
  var mime = ($x.data('mime') || "text/javascript").toLowerCase();
  if (mime == "text/css") {
    if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css';
    //if ($x.data('debug') !== true) text = text + '&debug=false';
    return mw.loader.load("//wiki.biligame.com/wiki/index.php?title=" + text + "&action=raw&ctype=text/css", "text/css");
  }
 
  //加载JS脚本
  if (ns && ns[0].toLowerCase() !== 'mediawiki:') {
    return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本');
  }
  if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js';
  //if ($x.data('debug') !== true) text = text + '&debug=false';
  return mw.loader.load("//wiki.biligame.com/wiki/index.php?title=" + text + "&action=raw&ctype=text/javascript", "text/javascript");
});
 
 
 
 
 
 
 
 
//轮播图滚动
$(function () {
$(function () {
     var $carousels = $('.carousel');
     var self = $('#siteNoticeScroll');
     var startX,endX;
    if (!self[0]) return;
     var offset = 50;
    var ul = self.find('ul:first');
     $carousels.on('touchstart',function (e) {
     ul.width(self.width() * self.find('li').length).attr({
         startX = e.originalEvent.touches[0].clientX;
        'data-left': 0,
        'data-length': self.find('li').length
    }).find('li').width(self.width());
     window.setInterval(function () {
        var dataset = ul[0].dataset,
            oldLeft = +dataset.left;
        ul.css('marginLeft', -(++oldLeft * self.width()) + 'px').delay(730).queue(function () {
            dataset.left = oldLeft === +dataset.length - 1 ? -1 : oldLeft;
            $(this).dequeue();
        });
    }, 5000);
     $(window).on('resize', function () {
         ul.width(self.width() * self.find('li').length).animate({
            marginLeft: -((+ul[0].dataset.left === -1 ? 0 : +ul[0].dataset.left) * self.width()) + 'px'
        }, 370);
     });
     });
    $carousels.on('touchmove',function (e) {
        endX = e.originalEvent.touches[0].clientX;
    });
    $carousels.on('touchend',function (e) {
        var distance = Math.abs(startX - endX);
        if (distance > offset){
            $(this).carousel(startX >endX ? 'next':'prev');
        }
    })
});
/*
//测试
$("body").on("click", "div.mw-highlight.mw-content-ltr", function () {
  var index = $("div.mw-highlight.mw-content-ltr").index(this);
  var preArray = $("div pre");
  var preEle = preArray[index];
  window.getSelection().selectAllChildren(preEle);
  document.execCommand("Copy");
  alert("复制成功,可直接粘贴");
  console.log("已经复制");
});
*/
if (mw.config.get("wgNamespaceNumber") == 12) {mw.loader.load("//wiki.biligame.com/wiki/index.php?title=MediaWiki:Help.js&action=raw&ctype=text/javascript", "text/javascript");}
else if(mw.config.get("wgCategories").indexOf('一键安装')!==-1){ mw.loader.load("//wiki.biligame.com/wiki/index.php?title=MediaWiki:Install.js&action=raw&ctype=text/javascript", "text/javascript");}
$(function() {
//解决手机上按键选项hover效果不消失的问题
//筛选页面列表筛选
$('.filter li').on('mouseenter touchstart',function(e) {
$(this).children().addClass('hover');
});
$('.filter li').on('mouseleave touchend',function(e) {
$(this).children().removeClass('hover');
});
$('.filter li').on('click',function(e) {
$(this).siblings().children().removeClass('active');
$(this).children().toggleClass('active');
var item = new Array();
$('.filter').find('.active').parent().each(function() {
var data_type = $(this).parent().attr('data-type');
item.push("[data-param" + data_type + "='" + $(this).attr("data-value") + "']");
});
if(item.length != 0) {
$('#wiki_table tbody').children().hide(400);
$('#wiki_table tbody').children(item.toString().replace(/,/g, '')).show(300);
//$('#wiki_table tbody').children().not(item.toString().replace(/,/g, '')).hide(1000);
} else {
$('#wiki_table tbody').children().show(300);
}
});
});
$(function InitCardSelect() {
var self = {};
var selectOptions; //所有筛选按钮
var filters = {}; //当前筛选规则
var filterKeys = []; //所有筛选Key
var showAll = true; //不筛选,显示全部
var tableRows; //所有要被筛选的行
var computedRows; //筛选后的行
var $sorter; //当前进行排序的表头
var sortDesent = false; //反向排序
function isNil(s) {
return s === '' || s === undefined || s === null || s === false
}
//点击筛选按钮时
function OnSelectOptionClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 筛选';
console.time(label);
//显示全部
if ($x.FilterKey == 0) {
for (i in selectOptions) {
selectOptions[i].Select = false;
selectOptions[i].removeClass('selected');
}
filters = {};
showAll = true;
//更新表格
self.FilterRows();
console.timeEnd(label);
return;
}
showAll = false;
var select = !$x.Select;
$x.Select = select;
//变更筛选状态
var key = $x.FilterKey;
filters[key] = filters[key] || {};
var opt = $x.FilterOpt == "AND" ? "AND" : "OR";
filters[key][opt] = filters[key][opt] || [];
if (select) {
filters[key][opt].push($x.FilterValue);
} else {
filters[key][opt] = filters[key][opt].filter(function(x) {
return x !== $x.FilterValue;
});
if (filters[key][opt].length < 1) delete filters[key][opt];
}
select ? $x.addClass('selected') : $x.removeClass('selected');
self.FilterRows();
console.timeEnd(label);
}
function OnHeaderSortClick(e) {
var $x = e.data;
e.preventDefault();
var label = '['+$.trim($x.text())+'] 排序';
console.time(label);
if ($sorter !== $x) {
//第一次:新的排序
$sorter = $x;
sortDesent = false;
} else if (!sortDesent) {
//第二次:切换排序
sortDesent = true;
} else {
//第三次:不进行排序
$sorter = null;
}
self.SortRows();
console.timeEnd(label);
}
//初始化
self.Init = function () {
selectOptions = $('.cardSelectOption').toArray().map(function(x) {
var $x = $(x);
var dataOption = $.trim($x.data('option'));
var dataGroup = $.trim($x.data('group'));
if (isNil(dataOption) || isNil(dataGroup)) return $x;
var splt = dataOption.split('|');
$x.FilterKey = dataGroup;
$x.FilterValue = $.trim(splt[1]);
$x.FilterOpt = $.trim($x.data('opt') || 'OR').toUpperCase();
if (filterKeys.indexOf(dataGroup) < 0)
filterKeys.push(dataGroup);
$x.click($x, OnSelectOptionClick);
return $x;
});
//$head = $('#CardSelectTabHeader');
tableRows = $('#CardSelectTr>tbody>tr').toArray().map( function(x) {
var $x = $(x);
//if (x == $head[0]) continue;
for (i in filterKeys) {
var key = filterKeys[i];
var val = $x.data('param'+key);
if (val === undefined) continue;
if (typeof val == 'number'){
val = val.toString(10);
}
var splt = val.split(',');
for (j in splt) {
var s = $.trim(splt[j]);
if (!isNil(s)) {
$x.FilterData = $x.FilterData || {};
$x.FilterData[key] = $x.FilterData[key] || [];
$x.FilterData[key].push(s);
}
}
}
return $x;
});
//computedRows = tableRows.concat([]);
$('#CardSelectTr>thead>tr>th').each(function(index, x) {
var $x = $(x);
$x.off('click').off('mousedown');
if ($x.hasClass('headerSort')) {
$x.Index = index;
//$x.SortKey = $x.data('group');
$x.click($x, OnHeaderSortClick);
}
});
}
//t1中包含t2中所有项
function includeAll(t1, t2) {
for (i in t2) {
if (t1.indexOf(t2[i]) < 0) return false;
}
return true;
}
//t1中包含t2中的任一项
function includeAny(t1, t2) {
if (t2.length == 0) return true;
for (i in t2) {
if (t1.indexOf(t2[i]) > -1) return true;
}
return false;
}
//使用show/hide来显示表格行
self.FilterRows = function() {
if (showAll) {
filters = {};
}
$('#CardSelectTr>tbody').hide();
for (var idx in tableRows) {
var $x = tableRows[idx];
var data = $x.FilterData;
var hide = false;
for (key in filters) {
hide = !data || !data[key];
if (!hide && filters[key]['AND']) {
hide = !includeAll(data[key],filters[key]['AND']);
}
if (!hide && filters[key]['OR']) {
hide = !includeAny(data[key],filters[key]['OR']);
}
if (hide) break;
}
if (!hide != !$x.Hide) {
$x.Hide = hide;
hide ? $x.hide() : $x.show();
}
}
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$('#CardSelectTr>tbody').show();
$sorter = null;
}
function grabSortData($tr, index) {
$tr.SortData = $tr.SortData || [];
if ($tr.SortData[index] !== undefined) return $tr.SortData[index];
var td = $tr.children('td')[index];
if (!td) {
$tr.SortData[index] = -1;
return -1;
}
var text = $.trim(td.textContent);
$tr.SortData[index] = text;
return text;
}
//对行排序,不显示的行会被移除
self.SortRows = function() {
//var residues = [];
if (!$sorter) {
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
}
else if (!sortDesent) {
var index = $sorter.Index;
computedRows = tableRows.filter(function($x) { return !$x.Hide; });
computedRows.sort(function compareFunction($x, $y) {
var x = grabSortData($x, index);
var y = grabSortData($y, index);
var nx = + x;
var ny = + y;
return (isNaN(nx) || isNaN(ny))
? isNaN(nx) && isNaN(ny)
? x < y ? -1 : 1
: isNaN(nx) ? 1 : -1 //字符串排后
: nx === ny
? 0
: nx < ny ? -1 : 1; //数值小的排前
//console.log (`${x} ~ ${y} => ${ret}`);
//return ret;
});
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortDown');
}
else {
computedRows.reverse();
$('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp');
$sorter.addClass('headerSortUp');
}
$('#CardSelectTr>tbody').hide()
.prepend(computedRows)
.show();
}
$('.cardSelectOption').off('click').off('mousedown');
if ($('#CardSelectTabHeader').parent().is('tbody')){
$('#CardSelectTr').prepend( $('<thead/>').append($('#CardSelectTabHeader')));
}
self.Init();
console.log('CardSelectTr.js Initialized.');
return self;
});
});
(window.RLQ = window.RLQ || []).push([ ["mediawiki.extra.bili", "jquery"], function() {
    $(".resp-tabs .resp-tabs-list .bili-list-style").unbind("click").click(function() {
        $(this).addClass("active").siblings().removeClass("active");
        var e = $(this).index();
        $(this).parents(".resp-tabs").eq(0).children(".resp-tabs-container").children(".resp-tab-content").eq(e).show().siblings().hide(),
        $(".resp-accordion-handle").hide()
    })
}]);

2024年6月26日 (三) 00:56的最新版本

/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* 不要脸的复制 */
/* sitenotice from huoqibaike.com*/
$(function () {
    var self = $('#siteNoticeScroll');
    if (!self[0]) return;
    var ul = self.find('ul:first');
    ul.width(self.width() * self.find('li').length).attr({
        'data-left': 0,
        'data-length': self.find('li').length
    }).find('li').width(self.width());
    window.setInterval(function () {
        var dataset = ul[0].dataset,
            oldLeft = +dataset.left;
        ul.css('marginLeft', -(++oldLeft * self.width()) + 'px').delay(730).queue(function () {
            dataset.left = oldLeft === +dataset.length - 1 ? -1 : oldLeft;
            $(this).dequeue();
        });
    }, 5000);
    $(window).on('resize', function () {
        ul.width(self.width() * self.find('li').length).animate({
            marginLeft: -((+ul[0].dataset.left === -1 ? 0 : +ul[0].dataset.left) * self.width()) + 'px'
        }, 370);
    });
});