「MediaWiki:Gadget-TemplateInshokuten.js」の版間の差分
MediaWikiインターフェイスページ
その他の操作
編集の要約なし |
編集の要約なし |
||
| (同じ利用者による、間の12版が非表示) | |||
| 1行目: | 1行目: | ||
function initGoogleMaps() { | |||
document.querySelectorAll(".map-embed").forEach(function (el) { | |||
const name = el.dataset.name; | |||
if (!name) return; | |||
const src = `https://www.google.com/maps/embed/v1/place?key=AIzaSyDOA7e6S9arQa6NvnsFYXxGjX9P_ycwoyM&q=${encodeURIComponent(name)}&zoom=16&maptype=roadmap&language=ja®ion=JP`; | |||
const iframe = document.createElement("iframe"); | |||
iframe.width = "100%"; | |||
iframe.height = "400"; | |||
iframe.style.border = "0"; | |||
iframe.loading = "lazy"; | |||
iframe.allowFullscreen = true; | |||
iframe.referrerPolicy = "no-referrer-when-downgrade"; | |||
iframe.src = src; | |||
// iframeが読み込まれたらSkeletonを消す | |||
iframe.addEventListener("load", function() { | |||
el.classList.add("loaded"); | |||
}); | |||
el.appendChild(iframe); | |||
}); | |||
} | |||
// 店舗/飲食店テンプレート用JavaScript | |||
if ( document.querySelector('.template-tenpo') ) { | |||
const twitterdiv = document.querySelector('.twitter-id'); | |||
if(twitterdiv) { | |||
const username = twitterdiv.textContent.trim(); | |||
if(username) { // 空文字なら生成しない | |||
const a = document.createElement('a'); | |||
a.href = `https://twitter.com/${username}?ref_src=twsrc%5Etfw`; | |||
a.className = "twitter-follow-button"; | |||
a.dataset.showCount = "false"; | |||
a.textContent = `Follow @${username}`; | |||
twitterdiv.parentNode.replaceChild(a, twitterdiv); | |||
const script = document.createElement('script'); | |||
script.async = true; | |||
script.src = "https://platform.twitter.com/widgets.js"; | |||
script.charset = "utf-8"; | |||
document.body.appendChild(script); | |||
} | |||
} | |||
const instagramdiv = document.querySelector('.instagram-id'); | |||
if(instagramdiv) { | |||
const username = instagramdiv.textContent.trim(); | |||
if(username) { | |||
const a = document.createElement('a'); | |||
a.href = `https://instagram.com/${username}/`; | |||
a.target = "_blank"; | |||
a.rel = "noopener noreferrer"; | |||
const img = document.createElement('img'); | |||
img.src = "/images/3/3d/Instagram_Glyph_Gradient.png"; | |||
img.alt = "Instagram"; | |||
img.style.width = "50px"; | |||
img.style.height = "50px"; | |||
img.style.marginRight = "15px"; | |||
a.appendChild(img); | |||
instagramdiv.parentNode.replaceChild(a, instagramdiv); | |||
} | |||
} | |||
const tiktokdiv = document.querySelector('.tiktok-id'); | |||
if(tiktokdiv) { | |||
const username = tiktokdiv.textContent.trim(); | |||
if(username) { | |||
const a = document.createElement('a'); | |||
a.href = `https://tiktok.com/@${username}/`; | |||
a.target = "_blank"; | |||
a.rel = "noopener noreferrer"; | |||
const img = document.createElement('img'); | |||
img.src = "/images/f/fa/TikTok-logo-RGB-Tag.png"; | |||
img.alt = "TikTok"; | |||
img.style.width = "50px"; | |||
img.style.height = "50px"; | |||
img.style.marginRight = "15px"; | |||
a.appendChild(img); | |||
tiktokdiv.parentNode.replaceChild(a, tiktokdiv); | |||
} | |||
} | |||
const facebookdiv = document.querySelector('.facebook-id'); | |||
if(facebookdiv) { | |||
const username = facebookdiv.textContent.trim(); | |||
if(username) { | |||
const a = document.createElement('a'); | |||
a.href = `https://facebook.com/${username}/`; | |||
a.target = "_blank"; | |||
a.rel = "noopener noreferrer"; | |||
const img = document.createElement('img'); | |||
img.src = "/images/8/82/Facebook_Logo_Primary.png"; | |||
img.alt = "Facebook"; | |||
img.style.width = "50px"; | |||
img.style.height = "50px"; | |||
a.appendChild(img); | |||
facebookdiv.parentNode.replaceChild(a, facebookdiv); | |||
} | |||
} | |||
document.querySelectorAll(".wikitable p").forEach(function(p) { | |||
if (!p.textContent.trim()) { | |||
p.remove(); | |||
} | |||
}); | |||
document.querySelectorAll(".wikitable tr").forEach(function(tr) { | |||
const th = tr.querySelector("th"); | |||
const td = tr.querySelector("td"); | |||
if (!th || !td) return; | |||
if (th.textContent.trim() === "郵便番号") { | |||
// 郵便番号らしい数字のみ抽出 | |||
const match = td.textContent.replace(/\D/g, "").match(/^(\d{3})(\d{4})$/); | |||
if (match) { | |||
td.textContent = match[1] + "-" + match[2]; | |||
} | |||
} | |||
}); | |||
// DOM準備後に実行 | |||
if (document.readyState === "loading") { | |||
document.addEventListener("DOMContentLoaded", initGoogleMaps); | |||
} else { | |||
initGoogleMaps(); | |||
} | |||
} | |||
document.querySelectorAll(".streetview-placeholder").forEach(function(el) { | |||
const url = el.getAttribute("data-url"); | |||
if (!url) return; | |||
const iframe = document.createElement("iframe"); | |||
iframe.src = url; | |||
iframe.width = "100%"; | |||
iframe.height = "100%"; | |||
iframe.style.border = "0"; | |||
iframe.loading = "lazy"; | |||
iframe.allowFullscreen = true; | |||
iframe.referrerPolicy = "no-referrer-when-downgrade"; | |||
el.appendChild(iframe); | |||
}); | |||
document.querySelectorAll(".streetview-api-placeholder").forEach(function(el) { | |||
const name = el.getAttribute("data-name"); | |||
if (!name) return; | |||
const src = `https://www.google.com/maps/embed/v1/streetview?key=AIzaSyDOA7e6S9arQa6NvnsFYXxGjX9P_ycwoyM&location=${name}`; | |||
const iframe = document.createElement("iframe"); | |||
iframe.src = src; | |||
iframe.width = "100%"; | |||
iframe.height = "100%"; | |||
iframe.style.border = "0"; | |||
iframe.loading = "lazy"; | |||
iframe.allowFullscreen = true; | |||
iframe.referrerPolicy = "no-referrer-when-downgrade"; | |||
el.appendChild(iframe); | |||
}); | |||
2025年12月18日 (木) 16:09時点における最新版
function initGoogleMaps() {
document.querySelectorAll(".map-embed").forEach(function (el) {
const name = el.dataset.name;
if (!name) return;
const src = `https://www.google.com/maps/embed/v1/place?key=AIzaSyDOA7e6S9arQa6NvnsFYXxGjX9P_ycwoyM&q=${encodeURIComponent(name)}&zoom=16&maptype=roadmap&language=ja®ion=JP`;
const iframe = document.createElement("iframe");
iframe.width = "100%";
iframe.height = "400";
iframe.style.border = "0";
iframe.loading = "lazy";
iframe.allowFullscreen = true;
iframe.referrerPolicy = "no-referrer-when-downgrade";
iframe.src = src;
// iframeが読み込まれたらSkeletonを消す
iframe.addEventListener("load", function() {
el.classList.add("loaded");
});
el.appendChild(iframe);
});
}
// 店舗/飲食店テンプレート用JavaScript
if ( document.querySelector('.template-tenpo') ) {
const twitterdiv = document.querySelector('.twitter-id');
if(twitterdiv) {
const username = twitterdiv.textContent.trim();
if(username) { // 空文字なら生成しない
const a = document.createElement('a');
a.href = `https://twitter.com/${username}?ref_src=twsrc%5Etfw`;
a.className = "twitter-follow-button";
a.dataset.showCount = "false";
a.textContent = `Follow @${username}`;
twitterdiv.parentNode.replaceChild(a, twitterdiv);
const script = document.createElement('script');
script.async = true;
script.src = "https://platform.twitter.com/widgets.js";
script.charset = "utf-8";
document.body.appendChild(script);
}
}
const instagramdiv = document.querySelector('.instagram-id');
if(instagramdiv) {
const username = instagramdiv.textContent.trim();
if(username) {
const a = document.createElement('a');
a.href = `https://instagram.com/${username}/`;
a.target = "_blank";
a.rel = "noopener noreferrer";
const img = document.createElement('img');
img.src = "/images/3/3d/Instagram_Glyph_Gradient.png";
img.alt = "Instagram";
img.style.width = "50px";
img.style.height = "50px";
img.style.marginRight = "15px";
a.appendChild(img);
instagramdiv.parentNode.replaceChild(a, instagramdiv);
}
}
const tiktokdiv = document.querySelector('.tiktok-id');
if(tiktokdiv) {
const username = tiktokdiv.textContent.trim();
if(username) {
const a = document.createElement('a');
a.href = `https://tiktok.com/@${username}/`;
a.target = "_blank";
a.rel = "noopener noreferrer";
const img = document.createElement('img');
img.src = "/images/f/fa/TikTok-logo-RGB-Tag.png";
img.alt = "TikTok";
img.style.width = "50px";
img.style.height = "50px";
img.style.marginRight = "15px";
a.appendChild(img);
tiktokdiv.parentNode.replaceChild(a, tiktokdiv);
}
}
const facebookdiv = document.querySelector('.facebook-id');
if(facebookdiv) {
const username = facebookdiv.textContent.trim();
if(username) {
const a = document.createElement('a');
a.href = `https://facebook.com/${username}/`;
a.target = "_blank";
a.rel = "noopener noreferrer";
const img = document.createElement('img');
img.src = "/images/8/82/Facebook_Logo_Primary.png";
img.alt = "Facebook";
img.style.width = "50px";
img.style.height = "50px";
a.appendChild(img);
facebookdiv.parentNode.replaceChild(a, facebookdiv);
}
}
document.querySelectorAll(".wikitable p").forEach(function(p) {
if (!p.textContent.trim()) {
p.remove();
}
});
document.querySelectorAll(".wikitable tr").forEach(function(tr) {
const th = tr.querySelector("th");
const td = tr.querySelector("td");
if (!th || !td) return;
if (th.textContent.trim() === "郵便番号") {
// 郵便番号らしい数字のみ抽出
const match = td.textContent.replace(/\D/g, "").match(/^(\d{3})(\d{4})$/);
if (match) {
td.textContent = match[1] + "-" + match[2];
}
}
});
// DOM準備後に実行
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initGoogleMaps);
} else {
initGoogleMaps();
}
}
document.querySelectorAll(".streetview-placeholder").forEach(function(el) {
const url = el.getAttribute("data-url");
if (!url) return;
const iframe = document.createElement("iframe");
iframe.src = url;
iframe.width = "100%";
iframe.height = "100%";
iframe.style.border = "0";
iframe.loading = "lazy";
iframe.allowFullscreen = true;
iframe.referrerPolicy = "no-referrer-when-downgrade";
el.appendChild(iframe);
});
document.querySelectorAll(".streetview-api-placeholder").forEach(function(el) {
const name = el.getAttribute("data-name");
if (!name) return;
const src = `https://www.google.com/maps/embed/v1/streetview?key=AIzaSyDOA7e6S9arQa6NvnsFYXxGjX9P_ycwoyM&location=${name}`;
const iframe = document.createElement("iframe");
iframe.src = src;
iframe.width = "100%";
iframe.height = "100%";
iframe.style.border = "0";
iframe.loading = "lazy";
iframe.allowFullscreen = true;
iframe.referrerPolicy = "no-referrer-when-downgrade";
el.appendChild(iframe);
});