aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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),