From c4d5060e32e708e1f1cdcce36b3338b77b48fea8 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Tue, 18 Aug 2026 22:21:48 +0200 Subject: [PATCH] css polish --- src/.init.lua | 2 ++ src/.lua/soakbean.lua | 5 +++ src/css/xrforge.css | 11 ++++++ src/css/xrforge.max.css | 10 +++--- src/page/dir.lua | 6 ++-- src/page/footer.html | 6 ++-- src/page/header.html | 2 +- src/page/janusxr.html | 44 +++++++++++++++++------- src/plugin/archive.lua | 75 +++++++++++++++++++++++++++++++++++++++++ src/plugin/global.lua | 4 +-- src/plugin/janusxr.lua | 10 +++++- 11 files changed, 149 insertions(+), 26 deletions(-) create mode 100644 src/plugin/archive.lua diff --git a/src/.init.lua b/src/.init.lua index 19a8029..b12054b 100644 --- a/src/.init.lua +++ b/src/.init.lua @@ -68,6 +68,7 @@ app.plugin.manyfold = app.addPlugin('plugin/manyfold') app.plugin.peertube = app.addPlugin('plugin/peertube') app.plugin.git = app.addPlugin('plugin/git') app.plugin.webhook = app.addPlugin('plugin/webhook') +app.plugin.archive = app.addPlugin('plugin/archive') app.plugin.staticwebgen = app.addPlugin('plugin/staticwebgen') -- should always be last app.runcmd(app) -- run clicmds @@ -121,3 +122,4 @@ end OnServerStart = function() app.init() -- this triggers init event end + diff --git a/src/.lua/soakbean.lua b/src/.lua/soakbean.lua index 3ce5672..d9dfc5d 100644 --- a/src/.lua/soakbean.lua +++ b/src/.lua/soakbean.lua @@ -173,6 +173,8 @@ sb = { useDefaults = function(app) app.use( function(req,res,next) + app.host = GetHost() + app.scheme = GetScheme() app.pub(req.url,{req=req,res=res}) next() end) @@ -282,6 +284,9 @@ sb = { init = function(app) end, + + destroy = function(app) + end, runcmd = function(app) for k,v in pairs(argv) do diff --git a/src/css/xrforge.css b/src/css/xrforge.css index 931686f..7931540 100644 --- a/src/css/xrforge.css +++ b/src/css/xrforge.css @@ -184,10 +184,21 @@ h1{ .sym{ font-size:100px; color:#000; } +table.header tr td { + vertical-align:top; +} .header td a{ border:none; } +.btn.XR{ + line-height:10px; + display: inline-block; + position: absolute; + top: 20px; + right: 2px; +} + /* logo */ .logo *{ font-size:15px; diff --git a/src/css/xrforge.max.css b/src/css/xrforge.max.css index 76f78a4..984bac6 100644 --- a/src/css/xrforge.max.css +++ b/src/css/xrforge.max.css @@ -24,6 +24,12 @@ body{ background-color:#2230; } +@media (max-width: 470px){ + .menu a:nth-child(2){ + display:none; + } +} + @media (max-width: 890px){ .grid .tile { width:47%; @@ -39,10 +45,6 @@ body{ form table tr > td:nth-child(3) { display:none; } - .menu{ - position:absolute; - right:20px; - } .menu a{ padding-right:20px !important; } diff --git a/src/page/dir.lua b/src/page/dir.lua index 9442cdc..186dd20 100644 --- a/src/page/dir.lua +++ b/src/page/dir.lua @@ -48,9 +48,9 @@ return { if not isroot then res.items[ v.parent.id ] = { view2D = false, - url = v.parent.url, - title = "parent world", - name = "parent world", + url = v.parent.parent.url, + title = app.opts.plugin_janusxr_portal_up, + name = app.opts.plugin_janusxr_portal_up, thumbnail = '', } end diff --git a/src/page/footer.html b/src/page/footer.html index 6c79cbc..b65f7dd 100644 --- a/src/page/footer.html +++ b/src/page/footer.html @@ -41,11 +41,13 @@ + + ${janusxr} + - -${janusxr} + ') + print("
") + for k,url in pairs(app.plugin.archive.url) do + print(' ') + end + print("
") +end} diff --git a/src/plugin/archive.lua b/src/plugin/archive.lua new file mode 100644 index 0000000..5583693 --- /dev/null +++ b/src/plugin/archive.lua @@ -0,0 +1,75 @@ +local util = require('util') + +app.on('scan_experience', function(exp) + --print_r(exp) +end) + +app.on('scan_experience_file', function(exp) +end) + +app.on('set', function(k,v) +end) + +app.on('init', function() + local me = app.plugin.archive + if arg[1] == 'server' then + local code, pid = unix.fork() + + -- kill thread when main app gets CTRL-c + unix.sigaction(unix.SIGINT, function() + unix.exit() + end) + + function notify() + app.plugin.archive.notify() + --notify() -- loop forever + end + if assert( code) == 0 then notify() end -- go! + end +end) + +-- this registers the plugin UI +local plugin = { + name = " Archive.org", + info = 'Notify archive.org to archive experiences.
NOTE: this only works in server mode. For static website generator-users: see Save Page Now', + opts = { + { + key='app.opts.plugin_archive_frequency', + title='Archive frequency', + info='when should archive.org check this xrforge?', + default = "wip beta -v[0-9] customerX", + values={boot="On XRForge start"} + }, + { + key='app.opts.plugin_archive_url', + title='Startingpoint URL', + info='absolute URL which archive.org should start with', + default = "https://localhost:8080/myverse", + placeholder = "http://my.org/myverse", + values='' + } + }, + notify = function() + if #app.opts.plugin_archive_url > 0 + and not app.opts.plugin_archive_url:match("localhost") + then + print("notifying archive.org") + local ok, headers, body = Fetch('https://web.archive.org/save/'.. app.opts.plugin_archive_url ) + else + print("ℹ️ skip notifying archive.org") + end + unix.exit() + end, + + url = {}, + + flush = function() + app.plugin.archive.url = {} + end, + + add = function(url) + table.insert( app.plugin.archive.url, url ) + end +} + +return plugin diff --git a/src/plugin/global.lua b/src/plugin/global.lua index 9770bd1..8f8983a 100644 --- a/src/plugin/global.lua +++ b/src/plugin/global.lua @@ -73,7 +73,7 @@ local plugin = { key='app.opts.plugin_global_homepage', title='Homepage', info='Display 3D or 2D experiences on homepage', - default = "3D", + default = "2D", values={ ['3D'] = '3D', ['2D'] = '2D' }, }, { @@ -113,7 +113,7 @@ local plugin = { }, middleware = { homepage_2D_or_3D = function(req,res,next) - if (req.url == '/' or req.url == '/index.html' and app.opts.plugin_global_homepage == '3D') or (req.param.view == '3D') or (req.param.url) then + if ( (req.url == '/' or req.url == '/index.html') and app.opts.plugin_global_homepage == '3D') or (req.param.view == '3D') or (req.param.url) then res.template = 'page/index.html' else res.template = 'page/dir.html' diff --git a/src/plugin/janusxr.lua b/src/plugin/janusxr.lua index 13d283c..cc60abf 100644 --- a/src/plugin/janusxr.lua +++ b/src/plugin/janusxr.lua @@ -126,12 +126,20 @@ local plugin = { default="room_plane", values={random="random room",room_plane="wirefloor",room1="room1",room2="room2",room3="room3",room4="room4",room5="room5",room6="room6",room7="room7"} }, + { + key='app.opts.plugin_janusxr_portal_up', + title='Parent directory portal', + info='Title for the "directory up" 3D portal', + default="../ outer world", + placeholder="../ outer world", + values="", + }, { key='app.opts.plugin_janusxr_random_objects', title='Random objects', info="Random object id's in portal rooms", default="capsule cone cube cylinder pyramid sphere torus", - placeholder="capsule cone cube cylinder pipe pyramid sphere torus", + placeholder="capsule cone cylinder pyramid sphere torus", values="", }, {