From 0f8d972603177eadfbd75f0b2956c493b1a8289f Mon Sep 17 00:00:00 2001 From: Xmer <108153683+XmerStudio@users.noreply.github.com> Date: Sat, 11 May 2024 19:40:34 +0300 Subject: [PATCH] New extension: Close Control (#1384) Co-authored-by: Muffin --- extensions/XmerOriginals/closecontrol.js | 69 ++++++++++++++++++++++++ extensions/extensions.json | 1 + images/XmerOriginals/closecontol.svg | 27 ++++++++++ 3 files changed, 97 insertions(+) create mode 100644 extensions/XmerOriginals/closecontrol.js create mode 100644 images/XmerOriginals/closecontol.svg diff --git a/extensions/XmerOriginals/closecontrol.js b/extensions/XmerOriginals/closecontrol.js new file mode 100644 index 0000000000..4e12de0417 --- /dev/null +++ b/extensions/XmerOriginals/closecontrol.js @@ -0,0 +1,69 @@ +// Name: Close Control +// ID: xmerclosecontrol +// Description: Ask before closing the tab. +// By: XmerOriginals +// License: MPL-2.0 + +(function (Scratch) { + "use strict"; + + let enabled = false; + + window.addEventListener("beforeunload", (e) => { + if (enabled) { + e.preventDefault(); + } + }); + + class CloseControl { + getInfo() { + return { + id: "xmerclosecontrol", + name: Scratch.translate("Close Control"), + blocks: [ + { + opcode: "setControl", + blockType: Scratch.BlockType.COMMAND, + text: Scratch.translate("set ask before closing tab to [OPTION]"), + arguments: { + OPTION: { + type: Scratch.ArgumentType.STRING, + menu: "option", + }, + }, + }, + { + opcode: "getControl", + blockType: Scratch.BlockType.BOOLEAN, + text: Scratch.translate("is close control enabled?"), + }, + ], + menus: { + option: { + acceptReporters: true, + items: [ + { + text: Scratch.translate("enabled"), + value: "true", + }, + { + text: Scratch.translate("disabled"), + value: "false", + }, + ], + }, + }, + }; + } + + setControl({ OPTION }) { + enabled = Scratch.Cast.toBoolean(OPTION); + } + + getControl() { + return enabled; + } + } + + Scratch.extensions.register(new CloseControl()); +})(Scratch); diff --git a/extensions/extensions.json b/extensions/extensions.json index 0d6b5f5078..88c108a06a 100644 --- a/extensions/extensions.json +++ b/extensions/extensions.json @@ -35,6 +35,7 @@ "CubesterYT/WindowControls", "veggiecan/browserfullscreen", "shreder95ua/resolution", + "XmerOriginals/closecontrol", "navigator", "battery", "TheShovel/CustomStyles", diff --git a/images/XmerOriginals/closecontol.svg b/images/XmerOriginals/closecontol.svg new file mode 100644 index 0000000000..83f36e04f5 --- /dev/null +++ b/images/XmerOriginals/closecontol.svg @@ -0,0 +1,27 @@ + +Created with Fabric.js 3.5.0 + + + + + + + + + + + + + + + + + + + + + + + + +