MediaWiki:Template:MainPageInfopush.js: Difference between revisions

From VRChat Wiki
(Created page with "$( (function () { const entries = [ { createdAt: "2021-09-13T20:50:41.000Z", data: { imageUrl: "https://assets.vrchat.com/ips/assets/80e490a28312d4fbea2107e356e29139b4790108ed3d91ba70bca4b44caddcd4.png" }, hash: "ips_37b26b47-c37f-4c94-8199-d520052e6ba3", id: "ips_37b26b47-c37f-4c94-8199-d520052e6ba3", isEnabled: true, priority: 100, releaseStatus: "public", tags: [ "quick-menu-banner", "version-2023.3.2p2",...")
 
No edit summary
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
$(
$(
(function () {
(function () {
const entries = [
mw.loader.using(["oojs-ui-core", "oojs-ui-windows"]).done(() => {
{
var windowManager = new OO.ui.WindowManager();
createdAt: "2021-09-13T20:50:41.000Z",
$(document.body).append(windowManager.$element);
data: {
 
imageUrl:
function showArticle(element) {
"https://assets.vrchat.com/ips/assets/80e490a28312d4fbea2107e356e29139b4790108ed3d91ba70bca4b44caddcd4.png"
var { articleTitle, articleContent } = element.dataset;
},
 
hash: "ips_37b26b47-c37f-4c94-8199-d520052e6ba3",
function ArticleDialog(config) {
id: "ips_37b26b47-c37f-4c94-8199-d520052e6ba3",
ArticleDialog.super.call(this, config);
isEnabled: true,
this.config = config || {};
priority: 100,
}
releaseStatus: "public",
 
tags: [
OO.inheritClass(ArticleDialog, OO.ui.ProcessDialog);
"quick-menu-banner",
 
"version-2023.3.2p2",
ArticleDialog.static.name = "ArticleDialog";
"version-2023.3.2p1",
ArticleDialog.static.title = articleTitle;
"version-2023.3.2"
ArticleDialog.static.size = "large";
],
ArticleDialog.static.actions = [
updatedAt: "2023-10-16T20:55:19.000Z"
{
},
action: "close",
{
flags: "safe",
createdAt: "2024-07-17T18:01:34.192Z",
icon: "close",
data: {
label: "Close"
imageUrl:
"https://assets.vrchat.com/ips/assets/ipsai_0bccadf6-b0e7-41c6-bd7c-c98351134be9.png",
onPressed: {
command: "OpenWorldsMenu",
parameters: ["ips_bc05dea7-035c-461a-b13e-6266dd5a1189"]
}
}
},
];
endDate: "2024-08-03T14:00:00.000Z",
 
hash: "ips_73f41df5-65ac-4660-a59a-992f2cc4b931",
ArticleDialog.prototype.initialize = function () {
id: "ips_73f41df5-65ac-4660-a59a-992f2cc4b931",
ArticleDialog.super.prototype.initialize.apply(this, arguments);
isEnabled: true,
this.content = new OO.ui.PanelLayout({
priority: 800,
$content: atob(articleContent),
regions: [],
expanded: false,
releaseStatus: "public",
padded: true,
requireClientTags: [],
scrollable: true
startDate: "2024-07-20T01:00:00.000Z",
});
tags: ["quick-menu-banner", "user-all"],
 
updatedAt: "2024-07-17T18:13:39.357Z"
this.$body.append(this.content.$element);
},
};
{
 
createdAt: "2023-06-29T22:26:18.000Z",
ArticleDialog.prototype.getActionProcess = function (action) {
data: {
if (action === "close") {
imageUrl:
return new OO.ui.Process(function () {
"https://assets.vrchat.com/ips/assets/3d77b57763c7cf61c163b6992a2b226809097dae25eb9cce5b6e4daccb63d12b.png",
this.close({ action: "close" });
onPressed: { command: "OpenVRCPlusMenu" }
}, this);
},
endDate: null,
hash: "ips_78bfec9d-8316-41cc-a959-214d9ded061f",
id: "ips_78bfec9d-8316-41cc-a959-214d9ded061f",
isEnabled: true,
priority: 877,
regions: [],
releaseStatus: "public",
requireClientTags: [],
startDate: null,
tags: ["quick-menu-banner", "user-no-vrcplus"],
updatedAt: "2024-07-24T17:18:32.052Z"
},
{
createdAt: "2023-06-29T22:22:28.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/3d77b57763c7cf61c163b6992a2b226809097dae25eb9cce5b6e4daccb63d12b.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_35060828-5b61-4c1e-b01d-19233b890002"]
}
}
},
return ArticleDialog.super.prototype.getActionProcess.call(
endDate: null,
this,
hash: "ips_873d6aa8-133b-456a-b490-22609976110d",
action
id: "ips_873d6aa8-133b-456a-b490-22609976110d",
);
isEnabled: true,
};
priority: 877,
 
regions: [],
var dialog = new ArticleDialog();
releaseStatus: "public",
 
requireClientTags: [],
windowManager.addWindows([dialog]);
startDate: null,
windowManager.openWindow(dialog);
tags: ["quick-menu-banner", "user-vrcplus"],
updatedAt: "2024-07-24T17:19:34.428Z"
},
{
createdAt: "2024-05-21T18:09:44.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/dbc7b2797059913f1af0985d002188b351d6858e78d6fc89f85aa17c1cd0fd39.png",
onPressed: {
command: "OpenURL",
parameters: ["https://hello.vrchat.com/blog/apple-ios-beta-signup"]
}
},
hash: "ips_4b2a3b8e-1c80-4021-a90b-768790476a75",
id: "ips_4b2a3b8e-1c80-4021-a90b-768790476a75",
isEnabled: true,
priority: 890,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2024-05-21T18:09:44.000Z"
},
{
createdAt: "2024-01-11T18:39:53.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/47cd36ef2a54edccc90cf979f99dbd957123333252f96e6559127deb95238087.png",
onPressed: {
command: "OpenURL",
parameters: ["https://hello.vrchat.com/blog/mobile-alpha-now-live"]
}
},
hash: "ips_e47fa6c3-29fa-46bf-b597-3dd050c7f425",
id: "ips_e47fa6c3-29fa-46bf-b597-3dd050c7f425",
isEnabled: true,
priority: 910,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2024-01-11T18:39:53.000Z"
},
{
createdAt: "2023-08-25T21:14:55.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/78434ca43795bb4cccb469f0a2ed396e1a1c5d914b49d0a61ba981226cc953da.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_f834b7c3-8ab8-4281-85d1-fee394163d16"]
}
},
hash: "ips_ce3b4b04-f48e-47de-9cd5-b3acd51fe211",
id: "ips_ce3b4b04-f48e-47de-9cd5-b3acd51fe211",
isEnabled: true,
priority: 915,
releaseStatus: "public",
requireClientTags: ["platform-oculus-quest"],
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-08-25T22:12:24.000Z"
},
{
createdAt: "2023-08-25T21:11:07.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/78434ca43795bb4cccb469f0a2ed396e1a1c5d914b49d0a61ba981226cc953da.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_1e52d592-0a53-417d-af4b-39c4f199dc94"]
}
},
hash: "ips_b720c233-351c-4269-9145-73ef276013d2",
id: "ips_b720c233-351c-4269-9145-73ef276013d2",
isEnabled: true,
priority: 915,
releaseStatus: "public",
requireClientTags: ["platform-pc-vr"],
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-08-25T22:12:23.000Z"
},
{
createdAt: "2023-08-25T21:11:07.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/78434ca43795bb4cccb469f0a2ed396e1a1c5d914b49d0a61ba981226cc953da.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_8626bb31-2c94-44d3-a7bb-18db67fd5d41"]
}
},
hash: "ips_926e7956-e13f-412c-a1b7-f13c88709309",
id: "ips_926e7956-e13f-412c-a1b7-f13c88709309",
isEnabled: true,
priority: 915,
releaseStatus: "public",
requireClientTags: ["platform-pc-desktop"],
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-08-25T22:12:23.000Z"
},
{
createdAt: "2023-06-12T22:38:29.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/1da1e49e888bcc5ed2503d97442d32d2208aaf5802df08f0e71c664c8ebbbfad.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_1f542a96-90b9-4e9a-9bff-0228f8f94289"]
}
},
hash: "ips_56bcef1d-b97a-4b67-9a7c-dcf17f97ab63",
id: "ips_56bcef1d-b97a-4b67-9a7c-dcf17f97ab63",
isEnabled: true,
priority: 930,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-06-28T21:30:13.000Z"
},
{
createdAt: "2022-10-26T22:03:24.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/8e67d9c6121ed9b09ca3b9f8b788c565c8c62f8708f4c1459abf73b78890a0d3.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_d9f4f465-a55c-4c13-8239-a238bb0a9bd7"]
}
},
hash: "ips_44a18206-58af-4f3c-a215-ed0b53dbb31d",
id: "ips_44a18206-58af-4f3c-a215-ed0b53dbb31d",
isEnabled: true,
priority: 930,
releaseStatus: "public",
requireClientTags: ["platform-oculus-quest"],
tags: ["quick-menu-banner", "platform-oculus-quest"],
updatedAt: "2022-11-03T18:38:00.000Z"
},
{
createdAt: "2023-06-12T22:38:29.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/088d2ef27d350e1c0ca26f629b4fdbd68d69b80b186e5523792fe2999cdf6119.png",
onPressed: {
command: "OpenHelpArticle",
parameters: ["ips_4916df41-5925-4baa-9349-0eea287503f4"]
}
},
hash: "ips_6d8ccc90-da25-439e-aaba-c478665dc79f",
id: "ips_6d8ccc90-da25-439e-aaba-c478665dc79f",
isEnabled: true,
priority: 940,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-06-28T19:15:52.000Z"
},
{
createdAt: "2023-03-09T18:56:29.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/745b0f27e9df4146376515045c2168d8efc0d4fe5ebdf1365759d2f55db5820d.png",
onPressed: {
command: "OpenURL",
parameters: ["https://vcc.docs.vrchat.com/news/release-2.0.0"]
}
},
hash: "ips_a94abc7b-1df1-44cb-a830-7ced30ed103c",
id: "ips_a94abc7b-1df1-44cb-a830-7ced30ed103c",
isEnabled: true,
priority: 950,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2023-06-28T19:15:53.000Z"
},
{
createdAt: "2022-10-24T23:54:48.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/adaed2094c59dbe1f4fa6d92060ce8f6a2221e4ca5c140ecce292a44550f22e9.png",
onPressed: {
command: "OpenURL",
parameters: [
"https://www.youtube.com/playlist?list=PLRUlfYGZBxVeEAVXkaG1uydyzFZAMOuMd"
]
}
},
hash: "ips_3dd68d7c-1051-4ffc-8c67-d93191aa3625",
id: "ips_3dd68d7c-1051-4ffc-8c67-d93191aa3625",
isEnabled: true,
priority: 970,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2022-10-24T23:54:48.000Z"
},
{
createdAt: "2021-06-08T20:24:54.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/e5fbc47936bdd52ea045bee16740ae802f65a41eb2a1f0aa0aa7d290191f432a.png",
onPressed: { command: "OpenVRCPlusMenu" }
},
hash: "ips_09265e23-fbcb-4239-bfca-126d3beb147e",
id: "ips_09265e23-fbcb-4239-bfca-126d3beb147e",
isEnabled: true,
priority: 999,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-no-vrcplus"],
updatedAt: "2023-06-12T22:44:14.000Z"
},
{
createdAt: "2021-11-08T22:45:26.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/c9bb5ca0943d090263c4f6bf7b25191a0330f34e6a0bf53cf742ea587a319048.png",
onPressed: {
command: "OpenURL",
parameters: ["https://feedback.vrchat.com/"]
}
},
hash: "ips_d83ed94c-dc16-4b32-a4c9-16fa9dd52e48",
id: "ips_d83ed94c-dc16-4b32-a4c9-16fa9dd52e48",
isEnabled: true,
priority: 1030,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2022-09-08T21:59:18.000Z"
},
{
createdAt: "2021-06-08T20:24:53.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/66de2dfb2320e6f50a2da082441b91ae4d07276b2e928528c04a00cc3b37bb0a.png",
onPressed: {
command: "OpenURL",
parameters: [
"https://docs.vrchat.com/docs/creating-your-first-avatar"
]
}
},
hash: "ips_1ced880f-d2d4-436c-b13f-bd43467e4c64",
id: "ips_1ced880f-d2d4-436c-b13f-bd43467e4c64",
isEnabled: true,
priority: 1040,
releaseStatus: "public",
tags: ["quick-menu-banner", "user-all"],
updatedAt: "2022-09-08T21:59:19.000Z"
},
{
createdAt: "2021-09-13T20:50:40.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/0f2870c9b5033df8ad337e4bd4f9b5687efa421359a72ebcf22d8421acae7299.png",
onPressed: { command: "CannedWorldSearch", parameters: ["Avatar"] }
},
hash: "ips_76a92137-c91a-4d6a-981b-438df0b5b0b5",
id: "ips_76a92137-c91a-4d6a-981b-438df0b5b0b5",
isEnabled: true,
priority: 1080,
releaseStatus: "public",
tags: [
"quick-menu-banner",
"user-trust-level-visitor",
"user-trust-level-new-user"
],
updatedAt: "2023-09-12T17:51:03.000Z"
},
{
createdAt: "2021-09-13T20:50:41.000Z",
data: {
imageUrl:
"https://assets.vrchat.com/ips/assets/15c3a1d7bcba45c63f384f0c31b903f0edc71c695b5b71810e1963ac53fe1c04.png"
},
hash: "ips_3bc3d31c-85f7-407e-9e08-d1bb6373a70e",
id: "ips_3bc3d31c-85f7-407e-9e08-d1bb6373a70e",
isEnabled: true,
priority: 1090,
releaseStatus: "public",
tags: [
"quick-menu-banner",
"user-trust-level-visitor",
"user-trust-level-new-user"
],
updatedAt: "2023-08-31T20:59:11.000Z"
}
}
];
const visibleContentIds = [];
const visibleContent = new Map();
const excluded = new Set(["ips_37b26b47-c37f-4c94-8199-d520052e6ba3"]);


for (const infopush of document.querySelectorAll(".tpl-infopush")) {
const infopushes = document.querySelectorAll(".tpl-infopush");
const content = infopush.querySelector(".tpl-infopush-content");
console.log("Template:MainPageInfopush", infopushes);


entries.map((value, index) => {
for (const infopush of infopushes) {
const { id, data } = value;
try {
if (excluded.has(id) || !data || !data.imageUrl) return;
const content = infopush.querySelector(".tpl-infopush-content");


const image = document.createElement("img");
const items = content.querySelectorAll(".tpl-infopush-item");
image.src = data.imageUrl;
const total = items.length;
image.style.width = "100%";
image.style.flexShrink = "0";
// image.dataset.index = index;
image.dataset.id = id;


content.append(image);
console.log("Template:MainPageInfopush", infopush, items);
visibleContentIds.push(id);
visibleContent.set(id, value);
});
const navigation = infopush.querySelector(".tpl-infopush-navigation");
const action = navigation
.querySelector(".tpl-infopush-action")


let currentOffset = 0;
for (const item of items) {
function showSlide(index) {
const { articleId } = item.dataset;
if (index < 0) {
if (!articleId) continue;
currentOffset = content.children.length - 1;
 
} else if (index >= content.children.length) {
item.style.cursor = "pointer";
currentOffset = 0;
item.addEventListener("click", () => showArticle(item));
}
}
 
const navigation = infopush.querySelector(".tpl-infopush-navigation");
 
let currentOffset = 0;
function showSlide(index) {
currentOffset = (index + total) % total;
content.style.transform = `translateX(-${currentOffset * 100}%)`;
}


content.style.transform = `translateX(-${currentOffset * 100}%)`;
const autoAdvanceEvery = 5000;
action.classList.add("tpl-infopush-action-none");
const { data } = visibleContent.get(visibleContentIds[currentOffset]);
if (data.onPressed && data.onPressed.command === "OpenURL") {
action.classList.remove("tpl-infopush-action-none");
}
}


const autoAdvanceEvery = 5000;
let autoAdvanceInterval;
function resetAutoAdvance() {
if (autoAdvanceInterval) clearInterval(autoAdvanceInterval);
autoAdvanceInterval = setInterval(function () {
showSlide(currentOffset + 1);
}, autoAdvanceEvery);
}


let autoAdvanceInterval;
navigation
function resetAutoAdvance() {
.querySelector(".tpl-infopush-navigation-previous")
if (autoAdvanceInterval) clearInterval(autoAdvanceInterval);
.addEventListener("click", () => {
autoAdvanceInterval = setInterval(function () {
showSlide(currentOffset - 1);
showSlide(currentOffset++);
resetAutoAdvance();
}, autoAdvanceEvery);
});
}
action.addEventListener("click", () => {
const { data } = visibleContent.get(visibleContentIds[currentOffset]);
const { command, parameters: [url] } = data.onPressed || {};
if (command === "OpenURL" && url) {
open(url)
}
});


navigation
navigation
.querySelector(".tpl-infopush-navigation-previous")
.querySelector(".tpl-infopush-navigation-next")
.addEventListener("click", () => {
.addEventListener("click", () => {
showSlide(currentOffset--);
showSlide(currentOffset + 1);
resetAutoAdvance();
resetAutoAdvance();
});
});


navigation
.querySelector(".tpl-infopush-navigation-next")
.addEventListener("click", () => {
showSlide(currentOffset++);
resetAutoAdvance();
resetAutoAdvance();
});
showSlide(0);
 
} catch (reason) {
resetAutoAdvance();
console.warn(
showSlide(0)
"Template:MainPageInfopush",
}
"Couldn't initialize infopush.",
reason
);
}
}
});
})()
})()
);
);

Latest revision as of 01:02, 19 August 2024

$(
	(function () {
		mw.loader.using(["oojs-ui-core", "oojs-ui-windows"]).done(() => {
			var windowManager = new OO.ui.WindowManager();
			$(document.body).append(windowManager.$element);

			function showArticle(element) {
				var { articleTitle, articleContent } = element.dataset;

				function ArticleDialog(config) {
					ArticleDialog.super.call(this, config);
					this.config = config || {};
				}

				OO.inheritClass(ArticleDialog, OO.ui.ProcessDialog);

				ArticleDialog.static.name = "ArticleDialog";
				ArticleDialog.static.title = articleTitle;
				ArticleDialog.static.size = "large";
				ArticleDialog.static.actions = [
					{
						action: "close",
						flags: "safe",
						icon: "close",
						label: "Close"
					}
				];

				ArticleDialog.prototype.initialize = function () {
					ArticleDialog.super.prototype.initialize.apply(this, arguments);
					this.content = new OO.ui.PanelLayout({
						$content: atob(articleContent),
						expanded: false,
						padded: true,
						scrollable: true
					});

					this.$body.append(this.content.$element);
				};

				ArticleDialog.prototype.getActionProcess = function (action) {
					if (action === "close") {
						return new OO.ui.Process(function () {
							this.close({ action: "close" });
						}, this);
					}
					return ArticleDialog.super.prototype.getActionProcess.call(
						this,
						action
					);
				};

				var dialog = new ArticleDialog();

				windowManager.addWindows([dialog]);
				windowManager.openWindow(dialog);
			}

			const infopushes = document.querySelectorAll(".tpl-infopush");
			console.log("Template:MainPageInfopush", infopushes);

			for (const infopush of infopushes) {
				try {
					const content = infopush.querySelector(".tpl-infopush-content");

					const items = content.querySelectorAll(".tpl-infopush-item");
					const total = items.length;

					console.log("Template:MainPageInfopush", infopush, items);

					for (const item of items) {
						const { articleId } = item.dataset;
						if (!articleId) continue;

						item.style.cursor = "pointer";
						item.addEventListener("click", () => showArticle(item));
					}

					const navigation = infopush.querySelector(".tpl-infopush-navigation");

					let currentOffset = 0;
					function showSlide(index) {
						currentOffset = (index + total) % total;
						content.style.transform = `translateX(-${currentOffset * 100}%)`;
					}

					const autoAdvanceEvery = 5000;

					let autoAdvanceInterval;
					function resetAutoAdvance() {
						if (autoAdvanceInterval) clearInterval(autoAdvanceInterval);
						autoAdvanceInterval = setInterval(function () {
							showSlide(currentOffset + 1);
						}, autoAdvanceEvery);
					}

					navigation
						.querySelector(".tpl-infopush-navigation-previous")
						.addEventListener("click", () => {
							showSlide(currentOffset - 1);
							resetAutoAdvance();
						});

					navigation
						.querySelector(".tpl-infopush-navigation-next")
						.addEventListener("click", () => {
							showSlide(currentOffset + 1);
							resetAutoAdvance();
						});

					resetAutoAdvance();
					showSlide(0);
				} catch (reason) {
					console.warn(
						"Template:MainPageInfopush",
						"Couldn't initialize infopush.",
						reason
					);
				}
			}
		});
	})()
);