//=========================================
//本腳本可能會有版權疑慮,不對外公開,若需使用需要代碼 "激活" 否則不會工作。 若需激活代碼請私訊,會視情況提供
//=========================================
/*_addText={{User:A2569875/Tools/DisplayExternalMedia}}<span></span>*/
/*eslint strict: "off", camelcase: "off", no-var: "off", quotes: "off", no-else-return: "off"*/
/*eslint vars-on-top: "off", one-var: "off", one-var-declaration-per-line: "off" */
/*eslint no-plusplus: "off", prefer-template: "off", no-continue: "off", func-names: "off"*/
/*eslint wrap-iife: "off", no-undef-init: "off", no-alert: "off", prefer-destructuring: "off"*/
/*eslint no-underscore-dangle: "off", object-shorthand: "off", comma-dangle: "off"*/
/*eslint function-paren-newline: "off", operator-linebreak: "off"*/
/*global window, console, setTimeout, alert, mw, jQuery, OO*/
function getDisplayExtrnalMediaSetting(setting){
if (typeof (window.DisplayExtrnalMedia) !== 'undefined') {
return window.DisplayExtrnalMedia[setting];
}
return window.DisplayExtrnalMedia;
}
function DisplayExternalMediaMain($_, mw_) {
'use strict';
if (typeof (window.options) === 'undefined') window.options = {};
function addExternalMediaToDisplay($, mw) {
var SCRIPT_NAME = 'DisplayExternalMedia';
var SRCIPT_ITEM_TYPE = 'externalmedia';
var SCRIPT_TEST_MESSAGE = ["\u0073\u0075\u0070\u0065\u0072\u0075" +
"\u0073\u0065\u0072\u0064\u006f\u0073\u006f" +
"\u006d\u0065\u0074\u0068\u0069\u006e\u0067",
"\u0041\u0067\u0072\u0065\u0065\u0020\u0074" +
"\u006f\u0020\u0061\u0063\u0063\u0065\u0070" +
"\u0074\u0020\u0074\u0068\u0065\u0020\u0072" +
"\u0069\u0073\u006b\u0020\u006f\u0066\u0020" +
"\u0063\u006f\u0070\u0079\u0072\u0069\u0067" +
"\u0068\u0074\u0020\u0069\u006e\u0066\u0072" +
"\u0069\u006e\u0067\u0065\u006d\u0065\u006e" +
"\u0074\u002e"];
var SRCIPT_SHOW_SECONDS = 20;
var icon_matcher = /(1f4f7|1f50a|1f3a5|euforie|searchtool|image|sound|speaker|film|nuvola|cube\s*noedges|gnome-compressed)/i;
var icon_replacer = /\s*icon\s*/i;
var regexp_text_icon = /icon/i;
var OOUIALERT = $.noop;
//some wiki not support OO.ui.alert
if (typeof (OO) !== 'undefined' &&
typeof (OO.ui) !== 'undefined' &&
typeof (OO.ui.alert) === 'function') {
OOUIALERT = OO.ui.alert;
}
//some browser not support Array.includes
function isIncludes(array_input, data) {
if (Array.isArray(array_input)) {
if (typeof (Array.prototype.includes) !== 'undefined') {
return array_input.includes(data);
} return array_input.indexOf(data) >= 0;
} return false;
}
function checkHowToShow() {
return !!window.options[SCRIPT_TEST_MESSAGE[0]] ||
getDisplayExtrnalMediaSetting(SCRIPT_TEST_MESSAGE[1]) ===
SCRIPT_TEST_MESSAGE[1];
}
//finding external media template: get candidate template html object.
var infobox_list = $('.infobox');
//some wiki no use infobox
var no_infobox_wiki = ['frwiki', 'huwiki'];
var is_no_infobox_wiki = false;
if (isIncludes(no_infobox_wiki, mw.config.get("wgDBname"))) {
infobox_list = $('table');
is_no_infobox_wiki = true;
}
var kinds = ["image", "audio", "video", "3d model"];
//some wikis not define alt attribute, use src attribute to check.
function getKindFromIcon(icon_url) {
var check_icon_url = icon_url.trim().toLowerCase();
if (check_icon_url.indexOf("searchtool") >= 0 ||
check_icon_url.indexOf("image") >= 0 ||
check_icon_url.indexOf("euforie.png") >= 0 ||
check_icon_url.indexOf("1f4f7") >= 0) return "image";
else if (check_icon_url.indexOf("nuvola") >= 0) {
if (check_icon_url.indexOf("arts") >= 0) return "audio";
else if (check_icon_url.indexOf("kaboodle") >= 0) return "video";
else if (check_icon_url.indexOf("kview") >= 0) return "image";
} else if (check_icon_url.indexOf("sound") >= 0 ||
check_icon_url.indexOf("speaker") >= 0 ||
check_icon_url.indexOf("1f50a") >= 0 ||
check_icon_url.indexOf("midi") >= 0) return "audio";
else if (check_icon_url.indexOf("film") >= 0 ||
check_icon_url.indexOf("1f3a5") >= 0 ||
check_icon_url.indexOf("video") >= 0) return "video";
else if (check_icon_url.indexOf("cube") >= 0 ||
check_icon_url.indexOf("gnome-compressed") >= 0) return "3d model";
return "";
}
var add3DAPI = function (){
$("body").prepend($("<script></script>", {
id: "3d_viewer_API",
type: "module",
src: "https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js",
}));
};
var ext_box_list = [];
var i = 0, j = 0, k = 0;
var $infobox, width, $box_trs, $box_ths, $box_cells,
$tr_it, $td_it, $chk_image, chk_alt, chk_src, find_flag = false;
var kind = '', images = [], finded = false;
var need_3d_viewer_API = false;
if (mw.config.get('wgAction') === 'edit') return;
//find external media template from candidate template html object.
for (i = 0; i < infobox_list.length; ++i) {
$infobox = $(infobox_list[i]);
width = $infobox.width();
$box_trs = $infobox.find("tr");
$box_ths = $infobox.find("th");
$box_cells = [];
for (j = 0; j < $box_trs.length; ++j) $box_cells.push($box_trs[j]);
for (j = 0; j < $box_ths.length; ++j) $box_cells.push($box_ths[j]);
find_flag = false;
for (j = 0; j < $box_cells.length; ++j) {
$tr_it = $($box_cells[j]);
kind = '';
images = $tr_it.find("img");
finded = false;
for (k = 0; k < images.length; ++k) {
$chk_image = $(images[k]);
chk_alt = $chk_image.attr("alt");
chk_src = $chk_image.attr("src");
if (regexp_text_icon.test(chk_alt)) {
chk_alt = chk_alt.replace(icon_replacer, '').trim().toLowerCase();
kind = chk_alt;
if (typeof (kind) !== "undefined" && isIncludes(kinds, ('' + kind).trim())) finded = true;
} else if (icon_matcher.test(chk_src)) {
kind = getKindFromIcon(chk_src);
if (typeof (kind) !== "undefined" && isIncludes(kinds, ('' + kind).trim())) finded = true;
}
if (finded) break;
}
if (typeof (kind) !== "undefined" && ('' + kind).trim() !== '') {
kind = ('' + kind).trim();
if (isIncludes(kinds, kind)) {
find_flag = true;
if ($infobox.attr(SRCIPT_ITEM_TYPE) !== "complete") {
ext_box_list.push($infobox);
}
break;
}
}
if (find_flag) break;
}
}
//if there is no external media template, do nothing
if (ext_box_list.length <= 0) return;
//for each external media template, let it show.
for (i = 0; i < ext_box_list.length; ++i) {
$infobox = $(ext_box_list[i]);
if ($infobox.attr(SRCIPT_ITEM_TYPE) === "complete") continue;
width = $infobox.width();
$box_trs = $infobox.find("tr");
//for each external media in external media template
for (j = 0; j < $box_trs.length; ++j) {
$tr_it = $($box_trs[j]);
$td_it = $tr_it.find("td");
//check external media kind
kind = '';
images = $tr_it.find("img");
finded = false;
//find external media from external media template
for (k = 0; k < images.length; ++k) {
$chk_image = $(images[k]);
chk_alt = $chk_image.attr("alt");
chk_src = $chk_image.attr("src");
if (regexp_text_icon.test(chk_alt)) {
chk_alt = chk_alt.replace(icon_replacer, '').trim().toLowerCase();
kind = chk_alt;
if (typeof (kind) !== "undefined" && isIncludes(kinds, ('' + kind).trim())) finded = true;
} else if (icon_matcher.test(chk_src)) {
kind = getKindFromIcon(chk_src);
if (typeof (kind) !== "undefined" && isIncludes(kinds, ('' + kind).trim())) finded = true;
}
if (finded) break;
}
//if it is a valid external media
if (isIncludes(kinds, kind)) {
//find link to external media
var links = $tr_it.find("a");
finded = false;
for (k = 0; k < links.length; ++k) {
var $link = $(links[k]);
if ($link.attr("media-complete") === "yes") continue;
if (is_no_infobox_wiki) {
var check_infobox = $link.parent();
while (check_infobox.length > 0 &&
typeof (check_infobox.prop("tagName")) !== "undefined") {
if (check_infobox.prop("tagName").toLowerCase() === "table") break;
check_infobox = check_infobox.parent();
}
if (check_infobox.prop("tagName").toLowerCase() === "table") {
$infobox = check_infobox;
width = $infobox.width();
}
}
var addMediaItem = function (_item_to_add, _link_target, _kind,
_$td_it, _$, _width, _console, _SRCIPT_ITEM_TYPE, _getSetting) {
if (typeof (_item_to_add) !== "undefined") {
var $item_to_add = _$(_item_to_add);
$item_to_add.attr("data-link", _link_target);
$item_to_add.attr("data-kind", _kind);
$item_to_add.attr("tag-type", _SRCIPT_ITEM_TYPE);
$item_to_add.addClass(_SRCIPT_ITEM_TYPE + "_display_control");
$item_to_add.addClass(_SRCIPT_ITEM_TYPE);
$item_to_add.on("error", (function (__$, __width, __console, __SRCIPT_ITEM_TYPE) {
return function () {
var $this = __$(this);
__console.log("fail to get \"" +
$this.attr("data-kind") + "\" of " +
__SRCIPT_ITEM_TYPE + " \"" +
__$(this).attr("data-link") + "\". show html.");
var link_https = $this.attr("data-link").replace(/http:\/\//i, "https://");
__$("<slot>").addClass(__SRCIPT_ITEM_TYPE)
.attr("name", "iframe").append(
__$("<iframe>", {
width: __width,
height: __width,
src: link_https,
frameborder: "0",
})
)
.addClass(__SRCIPT_ITEM_TYPE + "_display_control")
.insertAfter($this);
$this.removeClass(__SRCIPT_ITEM_TYPE + "_display_control");
$this.hide();
};
})(_$, _width, _console, _SRCIPT_ITEM_TYPE));
_$(_$td_it[_$td_it.length - 1]).prepend($item_to_add);
_$("<div>")
.css({ clear: "both" })
.insertAfter($item_to_add);
if (_getSetting("Default") === "hide") {
$item_to_add.hide();
}
}
};
var create3DItem = function (_link_target, _link_https, _file_extension, _width, _$, _isIncludes) {
var _item_to_add = [][1];
if (_isIncludes(["gltf", "glb"], _file_extension)) {
_item_to_add = _$("<div>")
.width(_width)
.css({
border: "1px solid darkgray",
})
.append(
_$("<model-viewer></model-viewer>", {
src: _link_target,
"ar-modes": "webxr scene-viewer quick-look",
}).attr("camera-controls", "camera-controls")
.attr("ar", "ar")
);
} else if (_isIncludes(['obj', '3ds', 'stl',
'ply', 'off', 'bim', '3dm', 'fbx',
'dae', 'wrl', '3mf', 'stp', 'ifc'],
_file_extension)) {
_item_to_add = _$("<div>").css({
border: "1px solid darkgray",
height: (_width + 70) + "px",
width: _width + "px",
}).append(_$('<div>').css({
position: "relative",
height: (_width + 70) + "px",
width: _width + "px",
overflow: "hidden",
display: "inline-block",
"vertical-align": "middle",
}).append(_$('<div>').css({
position: "absolute",
height: (_width + 170) + "px",
width: _width + "px",
top: "-100px",
left: "0px",
}).append(
_$("<slot>")
.attr("name", "iframe")
.append(
_$("<iframe>", {
width: _width,
height: _width + 170,
src: "https://3dviewer.net/index.html#model=" + _link_target,
frameborder: "0",
})
)
)));
} else {
_item_to_add = _$("<slot>")
.attr("name", "iframe")
.append(
_$("<iframe>", {
width: _width,
height: _width,
src: _link_https,
frameborder: "0",
})
);
}
return _item_to_add;
};
var is_wiki_file_link = /^((https?:)?(\/\/)?[^/]+\/)?w(\/index.php\?.*title=|iki\/):?[^:]+:.+(\.)[^.]+$/i.test($link.attr("href"));
if (!$link.hasClass("image") &&
($link.hasClass("external") ||
$link.hasClass("extiw") ||
(!$link.hasClass("new") && is_wiki_file_link))) {
var is_ajax = false;
var link_target = decodeURI($link.attr("href"));
var link_https = link_target.replace(/http:\/\//i, "https://");
var file_extension_finder = /[.=]([A-Za-z0-9]+)$/.exec(link_target);
var file_extension = [][1];
if (typeof (file_extension_finder) !== "undefined" &&
file_extension_finder !== null &&
typeof (file_extension_finder[1]) !== "undefined") {
file_extension = ('' + file_extension_finder[1]).toLowerCase().trim();
}
//if (/archive\.(org|is)/.test(link_target)) continue;
finded = true;
var is_youtube = /(https?:)?\/\/[^/]*youtu(\.)?be/.test(link_target);
var is_bilibili = /(https?:)?\/\/[^/]*bilibili/.test(link_target);
//check kind
if (isIncludes(['obj', '3ds', 'stl', 'ply', 'off', 'bim', '3dm',
'fbx', 'dae', 'wrl', '3mf', 'stp', 'ifc', 'gltf', 'glb'],
file_extension)) {
kind = "3d model";
} else if (is_youtube || is_bilibili || isIncludes(['mpg', 'mpeg', 'avi',
'wmv', 'mov', 'rm', 'ram', 'swf', 'flv', 'webm', 'mp4'],
file_extension)) {
kind = "video";
} else if (isIncludes(['jpeg', 'jp2', 'jpe', 'jpg', 'exr', 'gif',
'webp', 'pbm', 'pgm', 'ppm', 'pxm', 'pnm', 'hdr', 'pic', 'sr',
'ras', 'tif', 'tiff', 'dib', 'png', 'apng', 'svg', 'bmp', 'ico'],
file_extension)) {
kind = "image";
}
if (isIncludes(["gltf", "glb"], file_extension)) {
need_3d_viewer_API = true;
}
var item_to_add = [][1];
if ($link.hasClass("extiw") || (!$link.hasClass("new") && is_wiki_file_link)) {
var site_name = '';
var full_file_name = '';
var file_name = '';
var file_namespace = '';
var check_site_name = /https?:\/\/([^/]+)/.exec(link_target);
var check_file_name = /title=([^&?#]+)/.exec(link_target);
if (check_site_name !== null &&
typeof (check_site_name[1]) !== "undefined") {
site_name = check_site_name[1];
}
if(site_name.trim() === '' && /^\/?w(\/index.php\?.*title=|iki\/)/.test(link_target)){
site_name = mw.config.get("wgServerName");
}
if (check_file_name === null ||
typeof (check_file_name[1]) === "undefined") {
check_file_name = /\/?wiki\/([^&?#]+)/.exec(link_target);
}
if (check_file_name !== null &&
typeof (check_file_name[1]) !== "undefined") {
full_file_name = check_file_name[1];
}
var check_namespace = /^:?([^:]+):(.+)$/.exec(full_file_name);
if (check_namespace !== null &&
typeof (check_namespace[1]) !== "undefined" &&
typeof (check_namespace[2]) !== "undefined") {
file_namespace = check_namespace[1];
file_name = check_namespace[2];
}
if (site_name.trim() !== '' &&
file_name.trim() !== '' &&
file_namespace.trim() !== '') {
is_ajax = true;
var url = "https://" + site_name + "/w/api.php";
var params = {
origin: '*',
action: 'parse',
text: $('<span>')
.append($('<span>')
.addClass("filename")
.html('[[Media:' + file_name + ']]'))
.html(),
format: 'json',
};
$.post(url, params, (function (_kind, _$td_it, _link_target,
_link_https, _file_extension,
_$, _width, _console,
_SRCIPT_ITEM_TYPE, _addMediaItem,
_create3DItem, _isIncludes, _add3DAPI, _getSetting) {
return function (data) {
var $media_paths = _$(data.parse.text[0] ||
data.parse.text['*'] || '');
if (($media_paths.length || 0) > 0) {
var media_path_item = $media_paths.find(".filename");
var _$link = media_path_item.find("a");
if (_$link.hasClass("new")) return;
var media_link = _$link.attr('href');
var _item_to_add = [][1];
if (_kind === "video") {
_item_to_add = _$("<video>",
{ width: _width, controls: "controls" })
.append(_$("<source>", { src: media_link }));
} else if (_kind === "image") {
_item_to_add = _$("<img>",
{ width: _width, src: media_link }
);
} else if (_kind === "audio") {
_item_to_add = _$("<audio>",
{ width: _width, controls: "controls" })
.append(_$("<source>", { src: media_link }));
} else if (_kind === "3d model") {
_item_to_add = _create3DItem(
media_link,
_link_https,
_file_extension,
_width, _$, _isIncludes
);
}
_addMediaItem(_item_to_add, _link_target,
_kind, _$td_it, _$, _width,
_console, _SRCIPT_ITEM_TYPE, _getSetting);
if (_isIncludes(["gltf", "glb"], _file_extension)) {
_add3DAPI();
}
}
};
})(kind, $td_it, link_target,
link_https, file_extension,
$, width, console,
SRCIPT_ITEM_TYPE, addMediaItem,
create3DItem, isIncludes, add3DAPI, getDisplayExtrnalMediaSetting));
}
}
if (is_ajax) {
$.noop();
} else if (kind === "video") {
var videoid = '';
var video_flag = false;
if (is_youtube) {
if (/(https?:)?\/\/youtu\.be\//.test(link_target)) {
videoid = /(https?:)?\/\/youtu\.be\/([^?/&#]+)/.exec(link_target)[2];
} else if (/embed\//.test(link_target)) {
videoid = /embed\/([^?/&#]+)/.exec(link_target)[1];
} else {
var check_video_id = /v=([^?/&#]+)/.exec(link_target);
if (check_video_id) {
videoid = check_video_id[1];
}
}
if (typeof (videoid) !== "undefined" && ('' + videoid).trim() !== '') {
item_to_add = $("<slot>")
.attr("name", "iframe")
.append(
$("<iframe>", {
width: width,
height: ((width / 4) * 3).toString(),
src: "https://www.youtube.com/embed/" + videoid,
frameborder: "0",
})
.attr("allow", "accelerometer; autoplay; " +
"clipboard-write; encrypted-media; gyroscope; " +
"picture-in-picture")
);
video_flag = true;
}
} else if (is_bilibili) {
videoid = '';
var checker = /video\/([^&?/#]+)/.exec(link_target);
if (checker != null && typeof (checker[1]) !== "undefined") {
videoid = checker[1];
} else {
checker = /bvid=([^&?/#]+)/.exec(link_target);
if (checker != null && typeof (checker[1]) !== "undefined") {
videoid = checker[1];
}
}
if (typeof (videoid) !== "undefined" && ('' + videoid).trim() !== '') {
item_to_add = $("<slot>")
.attr("name", "iframe")
.append(
$("<iframe>", {
width: width,
height: ((width / 4) * 3).toString(),
src: "https://player.bilibili.com/player.html?bvid=" + videoid,
frameborder: "0",
scrolling: "no",
framespacing: "0",
})
.attr("allow", "accelerometer; autoplay; " +
"clipboard-write; encrypted-media; gyroscope; " +
"picture-in-picture")
);
video_flag = true;
}
}
if (!video_flag) {
if (isIncludes(['mpg', 'mpeg', 'avi', 'wmv',
'mov', 'rm', 'ram', 'swf',
'flv', 'ogg', 'webm', 'mp4'],
file_extension)) {
item_to_add = $("<video>", { width: width, controls: "controls" })
.append($("<source>", { src: link_target }));
} else {
item_to_add = $("<slot>")
.attr("name", "iframe")
.append(
$("<iframe>", {
width: width,
height: width,
src: link_https,
frameborder: "0",
})
);
}
}
} else if (kind === "image") {
item_to_add = $("<img>", { width: width, src: link_target });
} else if (kind === "audio") {
item_to_add = $("<audio>",
{ width: width, controls: "controls" })
.append($("<source>", { src: link_target }));
} else if (kind === "3d model") {
item_to_add = create3DItem(
link_target,
link_https,
file_extension,
width, $, isIncludes
);
}
if (!is_ajax) {
addMediaItem(item_to_add, link_target,
kind, $td_it, $, width,
console, SRCIPT_ITEM_TYPE, getDisplayExtrnalMediaSetting);
}
}
if (finded) break;
}
}
$tr_it.find('a')
.attr("media-complete", "yes");
}
//mark external medias as completed.
$infobox.attr(SRCIPT_ITEM_TYPE, "complete");
}
if (need_3d_viewer_API) {
add3DAPI();
}
//get all external medias
var $externalmedia = $("." + SRCIPT_ITEM_TYPE);
if (!checkHowToShow()) {
$externalmedia.parent().prepend($("<div>")
.addClass(SRCIPT_ITEM_TYPE + "_warning")
.css({ position: "absolute" })
.append($("<span>").css({
"font-size": "3em",
color: "#ccc",
top: "20px",
position: "relative",
}).html("\u8a66\u7528\u7248\u002f\u8a55\u4f30\u7248"))
.append($("<span>")
.addClass(SRCIPT_ITEM_TYPE + "_tryout_countdown")
.css({
"font-size": "2em",
color: "#ccc"
})));
$externalmedia.parent()
.prepend(
$("<small>").addClass(SRCIPT_ITEM_TYPE + "_warning")
.html("\u6ce8\u610f\uff01\u60a8\u7684" + SCRIPT_NAME +
".js\u7248\u672c\u5c1a\u672a\u6fc0\u6d3b\uff01\u70ba" +
"\u8a66\u7528\u7248\u002f\u8a55\u4f30\u7248\uff0c\u529f" +
"\u80fd\u53ef\u80fd\u96a8\u6642\u6703\u88ab\u95dc\u6389" +
"\uff0c\u8acb\u806f\u7d61" +
$("<span>").append($("<a>")
.attr('href', 'https://zh.wikipedia.org/wiki/User:A2569875/Flow')
.html("User:A2569875"))
.html() + "\u53d6\u5f97\u6fc0\u6d3b\u002f\u555f" +
"\u7528\u7684\u65b9\u5f0f\u3002")
);
if ($externalmedia.length > 0) {
OOUIALERT(SCRIPT_NAME + ".js\u672a\u555f\u7528\u002f\u6fc0\u6d3b\uff01");
var get_count_down = function (count_down, _get_count_down) {
return function () {
if (count_down >= 0) {
setTimeout(_get_count_down(count_down - 1, _get_count_down), 1000);
$("." + SRCIPT_ITEM_TYPE + "_tryout_countdown")
.html("<br/><br/>\u5269\u9918\u6642\u9593:" + count_down);
}
};
};
setTimeout(get_count_down(15, get_count_down), 1000);
setTimeout((function (_$, _$externalmedia) {
return function () {
alert("\u8173\u672c" + SCRIPT_NAME + ".js\u8a66\u7528\u5230" +
"\u671f\uff01\uff01。\n" +
"\u8acb\u806f\u7d61\u0055\u0073\u0065\u0072\u003a\u0041" +
"\u0032\u0035\u0036\u0039\u0038\u0037\u0035\u7372\u5f97" +
"\u6fc0\u6d3b\u002f\u555f\u7528\u7684\u65b9\u5f0f\u3002"
);
_$("." + SRCIPT_ITEM_TYPE).hide();
_$("." + SRCIPT_ITEM_TYPE + "_warning").hide();
_$externalmedia.parent()
.prepend(
$("<p>")
.append($("<small>")
.html("\u8173\u672c\u0020\u0044\u0069\u0073\u0070\u006c" +
"\u0061\u0079\u0045\u0078\u0074\u0065\u0072\u006e\u0061" +
"\u006c\u004d\u0065\u0064\u0069\u0061.js" +
"\u0020\u555f\u7528\u5931\u6557\u3002"))
);
};
})($, $externalmedia), SRCIPT_SHOW_SECONDS * 1000);
}
}
//add portlet link to hide/show the external medias
if ($externalmedia.length > 0 &&
$('t-' + SCRIPT_NAME).length <= 0 &&
!!checkHowToShow()) {
var portletLinkText = "隱藏外部媒體";
var portletLinkTip = "將條目中的外部媒體隱藏";
if (getDisplayExtrnalMediaSetting("Default") === "hide") {
portletLinkText = "顯示外部媒體";
portletLinkTip = "將條目中的外部媒體顯示出來";
}
var $portletLink = $(mw.util.addPortletLink('p-tb',
'#', portletLinkText, 't-' + SCRIPT_NAME,
portletLinkTip));
if (getDisplayExtrnalMediaSetting("Default") === "hide") {
$portletLink.addClass(SCRIPT_NAME + "_hide");
} else {
$portletLink.addClass(SCRIPT_NAME + "_show");
}
$portletLink.click(function (e) {
e.preventDefault();
var $this = $(this);
if ($this.hasClass(SCRIPT_NAME + "_show")) {
$this.removeClass(SCRIPT_NAME + "_show");
$this.addClass(SCRIPT_NAME + "_hide");
$this.find("span").html("顯示外部媒體");
$this.find("a").attr("title",
"將條目中的外部媒體顯示出來");
$("." + SRCIPT_ITEM_TYPE + "_display_control").hide();
} else if ($this.hasClass(SCRIPT_NAME + "_hide")) {
$this.removeClass(SCRIPT_NAME + "_hide");
$this.addClass(SCRIPT_NAME + "_show");
$this.find("span").html("隱藏外部媒體");
$this.find("a").attr("title",
"將條目中的外部媒體隱藏");
$("." + SRCIPT_ITEM_TYPE + "_display_control").show();
}
});
}
}
function externalMediaToDisplayHook(_$, _mw) {
return function () {
addExternalMediaToDisplay(_$, _mw);
};
}
function externalMediaToDisplayDelayHook(_$, _mw, delay_time) {
return function () {
setTimeout((function (__$, __mw) {
return function () {
addExternalMediaToDisplay(__$, __mw);
};
})(_$, _mw), delay_time);
};
}
mw_.hook('ve.activationComplete').add(externalMediaToDisplayDelayHook($_, mw_, 100));
mw_.hook('wikipage.content').add(externalMediaToDisplayHook($_, mw_));
$_((function (_$, _mw, _externalMediaToDisplayDelayHook, _externalMediaToDisplayHook) {
return function () {
//_$(".mw-headline").on("click", _externalMediaToDisplayDelayHook(_$, _mw, 500));
var $mwheadline = _$(".mw-headline");
for (var i=0; i<$mwheadline.length; ++i) {
$mwheadline[i].addEventListener("click", _externalMediaToDisplayDelayHook(_$, _mw, 500));
}
_externalMediaToDisplayHook(_$, _mw);
};
})($_, mw_, externalMediaToDisplayDelayHook, externalMediaToDisplayHook));
}
DisplayExternalMediaMain(jQuery, mw);