From 27229dd68f3b449f666d4111f086e14f0688768b Mon Sep 17 00:00:00 2001 From: Maribeth Moffatt Date: Thu, 23 Jul 2026 14:10:38 -0400 Subject: [PATCH] chore: add export and deprecation warnings to app engine demos --- packages/blockly/appengine/app.yaml | 10 ++++++ packages/blockly/appengine/redirect.html | 11 +++++++ .../blockly/demos/blockfactory/index.html | 5 ++- packages/blockly/demos/code/code.js | 19 ++++++++++++ packages/blockly/demos/code/index.html | 12 +++++++ packages/blockly/demos/code/style.css | 12 +++++++ packages/blockly/demos/storage/index.html | 31 +++++++++++++++++++ 7 files changed, 99 insertions(+), 1 deletion(-) diff --git a/packages/blockly/appengine/app.yaml b/packages/blockly/appengine/app.yaml index 563af8b24d0..711f1e9dc34 100644 --- a/packages/blockly/appengine/app.yaml +++ b/packages/blockly/appengine/app.yaml @@ -66,6 +66,16 @@ handlers: - url: /static/demos/custom-fields/.* static_files: redirect.html upload: redirect.html +# Playgrounds moved to GitHub Pages. +- url: /static/tests/playgrounds/advanced_playground\.html + static_files: redirect.html + upload: redirect.html +- url: /static/tests/multi_playground\.html + static_files: redirect.html + upload: redirect.html +- url: /static/tests/playground\.html + static_files: redirect.html + upload: redirect.html # Blockly files. - url: /static diff --git a/packages/blockly/appengine/redirect.html b/packages/blockly/appengine/redirect.html index cc7cf301848..09a817bf08f 100644 --- a/packages/blockly/appengine/redirect.html +++ b/packages/blockly/appengine/redirect.html @@ -100,6 +100,17 @@ loc = 'https://google.github.io/blockly-samples/examples/pitch-field-demo/'; } +// Playgrounds moved to GitHub Pages in 2026. +var ghPagesBase = + 'https://raspberrypifoundation.github.io/blockly/packages/blockly/tests/'; +if (loc.includes('/tests/playgrounds/advanced_playground.html')) { + loc = ghPagesBase + 'playgrounds/advanced_playground.html'; +} else if (loc.includes('/tests/multi_playground.html')) { + loc = ghPagesBase + 'multi_playground.html'; +} else if (loc.includes('/tests/playground.html')) { + loc = ghPagesBase + 'playground.html'; +} + location = loc; diff --git a/packages/blockly/demos/blockfactory/index.html b/packages/blockly/demos/blockfactory/index.html index 3e532bc49a6..9ae77907b21 100644 --- a/packages/blockly/demos/blockfactory/index.html +++ b/packages/blockly/demos/blockfactory/index.html @@ -54,7 +54,10 @@

Blockly >

- This version of Developer Tools is only compatible with Blockly version 10 and earlier. Try the new Block Factory and learn how to migrate your blocks. + This service will be shut down on December 1, 2026. + Please export your block definitions before then, using the "Export Block Library" button, so you can import them into the new Block Factory. +
+ This version of Developer Tools is only compatible with Blockly version 10 and earlier. Try the new Block Factory and learn how to migrate your blocks.
Block Factory
diff --git a/packages/blockly/demos/code/code.js b/packages/blockly/demos/code/code.js index c264ff2dc9d..50d7bdac153 100644 --- a/packages/blockly/demos/code/code.js +++ b/packages/blockly/demos/code/code.js @@ -490,6 +490,7 @@ Code.init = function() { Code.bindClick('trashButton', function() {Code.discard(); Code.renderContent();}); + Code.bindClick('exportButton', Code.exportWorkspace); Code.bindClick('runButton', Code.runJS); // Disable the link button if page isn't backed by App Engine storage. var linkButton = document.getElementById('linkButton'); @@ -604,6 +605,24 @@ Code.runJS = function(event) { } }; +/** + * Download the current workspace as a JSON file that can be loaded into the + * Blockly Playground. + */ +Code.exportWorkspace = function() { + var state = Blockly.serialization.workspaces.save(Code.workspace); + var text = JSON.stringify(state, null, 2); + var blob = new Blob([text], {type: 'application/json'}); + var url = URL.createObjectURL(blob); + var a = document.createElement('a'); + a.href = url; + a.download = 'blockly-workspace.json'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); +}; + /** * Discard all blocks from the workspace. */ diff --git a/packages/blockly/demos/code/index.html b/packages/blockly/demos/code/index.html index d8f894607f7..0b16a458694 100644 --- a/packages/blockly/demos/code/index.html +++ b/packages/blockly/demos/code/index.html @@ -30,6 +30,17 @@

Blockly‏ > Privacy + + +
+ This service will be shut down on December 1, 2026. + Saving and sharing via App Engine will no longer be available after + that date. Please use the "Export" button to download your work + before then. You can load the exported file into the + Blockly Playground. +
+ + @@ -54,6 +65,7 @@

Blockly‏ >

+ diff --git a/packages/blockly/demos/code/style.css b/packages/blockly/demos/code/style.css index ef7d9b4d373..f2347d24658 100644 --- a/packages/blockly/demos/code/style.css +++ b/packages/blockly/demos/code/style.css @@ -57,6 +57,18 @@ button.disabled { button.notext { font-size: 10%; } +#exportButton { + font-size: medium; + padding: 5px 10px; + vertical-align: middle; +} +#deprecationBanner { + border: #ccc 1px solid; + background-color: #FFCDD2; + margin: 5px; + padding: 8px; + font-size: medium; +} h1 { font-weight: normal; diff --git a/packages/blockly/demos/storage/index.html b/packages/blockly/demos/storage/index.html index 55bf5e92a52..1dd779fa391 100644 --- a/packages/blockly/demos/storage/index.html +++ b/packages/blockly/demos/storage/index.html @@ -26,12 +26,26 @@ font-size: small; text-decoration: none; } + #deprecationBanner { + border: #ccc 1px solid; + background-color: #FFCDD2; + margin: 4px 0; + padding: 8px; + }

Blockly > Demos > Cloud Storage

+
+ This service will be shut down on December 1, 2026. + Cloud storage will no longer be available after that date. Please use the + "Export" button to download your work before then. You can load the + exported file into the + Blockly Playground. +
+

This is a simple demo of cloud storage using App Engine.