diff --git a/backend/pages/accounts/configure.js b/backend/pages/accounts/configure.js index 60f44b29..2ad738f1 100644 --- a/backend/pages/accounts/configure.js +++ b/backend/pages/accounts/configure.js @@ -258,6 +258,7 @@ module.exports.GET = async function(req, write, server, ctx, params) { color_cell: world.feature.colorCell, quick_erase: world.feature.quickErase, show_cursor: world.feature.showCursor, + redirect_value: world.feature.redirect, color, cursor_color, @@ -785,6 +786,15 @@ module.exports.POST = async function(req, write, server, ctx) { modifyWorldProp(world, "opts/desc", ""); } + if(post_data.redirect_value) { + var redir = post_data.redirect_value; + if(typeof redir != "string") redir = ""; + redir = redir.trim().replace(/\r|\n/g, ""); + modifyWorldProp(world, "feature/redirect", redir); + } else { + modifyWorldProp(world, "feature/redirect", ""); + } + if(post_data.priv_note) { var pnote = post_data.priv_note; if(typeof pnote != "string") pnote = ""; diff --git a/backend/pages/world_props.js b/backend/pages/world_props.js index d5be7303..45d3feab 100644 --- a/backend/pages/world_props.js +++ b/backend/pages/world_props.js @@ -41,7 +41,8 @@ module.exports.GET = async function(req, write, server, ctx) { showCursor: world.feature.showCursor, colorText: world.feature.colorText, colorCell: world.feature.colorCell, - quickErase: world.feature.quickErase + quickErase: world.feature.quickErase, + redirect: world.feature.redirect }, theme: { bg: world.theme.bg, diff --git a/backend/pages/yourworld.js b/backend/pages/yourworld.js index 09961e3a..eb0845a4 100644 --- a/backend/pages/yourworld.js +++ b/backend/pages/yourworld.js @@ -108,6 +108,7 @@ module.exports.GET = async function(req, write, server, ctx, params) { }, worldModel: { feature_membertiles_addremove: world.feature.memberTilesAddRemove, + redirect: world.feature.redirect, writability: world.writability, feature_url_link: world.feature.urlLink, feature_go_to_coord: world.feature.goToCoord, diff --git a/backend/subsystems/world_mgr.js b/backend/subsystems/world_mgr.js index 47bfe011..408df387 100644 --- a/backend/subsystems/world_mgr.js +++ b/backend/subsystems/world_mgr.js @@ -93,7 +93,8 @@ var world_default_props = { color_palette_enabled: false, color_palette: null, bg_color_palette_enabled: false, - bg_color_palette: null + bg_color_palette: null, + redirect: "" }; function validateWorldname(name) { @@ -129,6 +130,7 @@ async function insertWorld(name) { var writability = 0; var readability = 0; var properties = JSON.stringify({}); + var redirect = ""; var rw = await db.run(` INSERT INTO world (id, name, owner_id, created_at, feature_go_to_coord, feature_membertiles_addremove, feature_paste, @@ -198,7 +200,8 @@ function makeWorldObject() { showCursor: 0, colorText: 0, colorCell: 0, - quickErase: 0 + quickErase: 0, + redirect: "", }, theme: { bg: "", @@ -327,6 +330,7 @@ function loadWorldIntoObject(world, wobj) { wobj.feature.colorText = getAndProcWorldProp(wprops, "color_text"); wobj.feature.colorCell = getAndProcWorldProp(wprops, "color_cell"); wobj.feature.quickErase = getAndProcWorldProp(wprops, "quick_erase"); + wobj.feature.redirect = getAndProcWorldProp(wprops, "redirect"); wobj.theme.bg = world.custom_bg; wobj.theme.cursor = world.custom_cursor; @@ -497,6 +501,7 @@ async function commitWorld(world) { "feature/colorText", "feature/colorCell", "feature/quickErase", + "feature/redirect", "theme/menu", "theme/publicText", "theme/memberText", @@ -535,6 +540,7 @@ async function commitWorld(world) { color_text: world.feature.colorText, color_cell: world.feature.colorCell, quick_erase: world.feature.quickErase, + redirect: world.feature.redirect, custom_menu_color: world.theme.menu, custom_public_text_color: world.theme.publicText, custom_member_text_color: world.theme.memberText, diff --git a/frontend/templates/configure.html b/frontend/templates/configure.html index a33422f2..716fd831 100644 --- a/frontend/templates/configure.html +++ b/frontend/templates/configure.html @@ -820,6 +820,14 @@