aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-02-05 17:57:20 -0600
committerthe lemons <citrons@mondecitronne.com>2022-02-05 17:57:20 -0600
commit07a50a4b3cd2ac4c3ef4ab314ba8bc00043d8219 (patch)
tree7a28128a071fb38ce21e1eff5b4259542196e1fe
parent0c6c8d1f682e12ec8710f0b94779ca40c7d5f508 (diff)
improve directives
1. DEADEND defeats the collaborative purpose of the site, and BACKLINK is fairly useless without it. 2. PAGETITLE has been added, and it should be useful in cases where REDIRECT is used heavily.
-rw-r--r--about.html7
-rwxr-xr-xzzcxz.cgi21
2 files changed, 13 insertions, 15 deletions
diff --git a/about.html b/about.html
index a96a417..7751e11 100644
--- a/about.html
+++ b/about.html
@@ -63,13 +63,10 @@
surround text in square brackets to <code>[emphasize it as important]</code>.
<li>
- type <code>#BACKLINK &lt;room&gt; &lt;action&gt;</code> on its own line to cause the room to link back to an already existing room. replace <code>&lt;action&gt;</code> with the text you desire to appear in the link. replace <code>&lt;room&gt;</code> with everything after <code>https://zzcxz.citrons.xyz/g/</code>. for example, to make a link with the text "go back" which links to <code>https://zzcxz.citrons.xyz/g/xxxxx</code>, type the line <code>#BACKLINK xxxxx go back</code>. <code>#BACKLINK</code> cannot add new actions.
+ type <code>#REDIRECT &lt;room&gt;</code> on its own line to cause the action to bring you to <code>&lt;room&gt;</code> instead of a new room. replace <code>&lt;room&gt;</code> with the five letters at the end of the url of the desired room. for instance, to make the action link to <code>https://zzcxz.citrons.xyz/g/zzcxz</code>, type <code>#REDIRECT zzcxz</code>.
<li>
- type <code>#REDIRECT &lt;room&gt;</code> to cause the action to bring you to <code>&lt;room&gt;</code> instead of a new room. like with <code>#BACKLINK</code> replace <code>&lt;room&gt;</code> with the five letters at the end of the url of the desired room.
-
- <li>
- type <code>#DEADEND</code> to prevent people from taking additional actions on the page. this is mostly useful in combination with <code>#BACKLINK</code>.
+ by default, a title at the top of the page contains the action which brings you to the room. this title can be overridden with <code>#PAGETITLE &lt;title&gt;</code>.
<li>
you can add <code>/raw</code> to the end of the URL of a room to see its markup (on the lines starting with tab) (<a href="/g/zzcxz/raw">example</a>). this feature could also potentially be utilized to implement third-party interfaces.
diff --git a/zzcxz.cgi b/zzcxz.cgi
index 8f8b480..6fbdb47 100755
--- a/zzcxz.cgi
+++ b/zzcxz.cgi
@@ -144,13 +144,10 @@ local function parse_directive(line, directives)
directive = directive and directive:lower()
if not directive then
return
- elseif directive == "backlink" then
- local page, action = args:match "^(%w%w%w%w%w)%s+(.+)$"
- if not page then return end
- directives.backlinks = directives.backlinks or {}
- table.insert(directives.backlinks, {page = page, action = action})
- elseif directive == "deadend" then
- directives.deadend = true
+ elseif directive == "pagetitle" then
+ if args:match "^%s*$" then return end
+ if utf8.len(args) > 150 then return end
+ directives.title = args
elseif directive == "redirect" then
local redirect = args:match "^%s*(%w%w%w%w%w)%s*$"
if not redirect then return end
@@ -265,7 +262,7 @@ local function new_action(page, action, result)
local new = assert(io.open('content/'..new_name, 'w'))
action = action:gsub('\n', ' ')
- assert(new:write(action..'\n'))
+ assert(new:write((directives.title or action)..'\n'))
for line in (result..'\n'):gmatch "(.-\n)" do
assert(new:write('\t' .. line))
end
@@ -399,6 +396,8 @@ map["^/g/(%w%w%w%w%w)/act$"] = function(p)
local form = parse_qs(io.read "a")
form.wyd = form.wyd or "something"
form.happens = form.happens or "something"
+
+ local prev, prev_direct = convert_markup(form.happens)
return base {
title = "do something new",
@@ -406,8 +405,10 @@ map["^/g/(%w%w%w%w%w)/act$"] = function(p)
page = p,
content = convert_markup(page.content),
preview = preview_template {
- title = html_encode(form.wyd),
- content = convert_markup(form.happens),
+ title =
+ prev_direct.title and html_encode(prev_direct.title)
+ or html_encode(form.wyd),
+ content = prev,
},
title = html_encode(form.wyd),
editing = html_encode(form.happens),