mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-09-12 15:56:05 +00:00
First pass at a route for serving rendered tiddlers
cc @Drakor
This commit is contained in:
42
core/modules/server/routes/get-tiddler-html.js
Normal file
42
core/modules/server/routes/get-tiddler-html.js
Normal file
@@ -0,0 +1,42 @@
|
||||
/*\
|
||||
title: $:/core/modules/server/routes/get-tiddler-html.js
|
||||
type: application/javascript
|
||||
module-type: route
|
||||
|
||||
GET /:title
|
||||
|
||||
\*/
|
||||
(function() {
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.method = "GET";
|
||||
|
||||
exports.path = /^\/([^\/]+)$/;
|
||||
|
||||
exports.handler = function(request,response,state) {
|
||||
var title = decodeURIComponent(state.params[0]),
|
||||
tiddler = state.wiki.getTiddler(title);
|
||||
if(tiddler) {
|
||||
var serveType,template;
|
||||
// Render ordinary tiddlers as HTML, and system tiddlers in plain text
|
||||
if(state.wiki.isSystemTiddler(title)) {
|
||||
serveType = "text/plain";
|
||||
template = "$:/core/templates/wikified-tiddler";
|
||||
} else {
|
||||
serveType = "text/html";
|
||||
template = "$:/core/templates/server/static.tiddler.html";
|
||||
}
|
||||
var text = state.wiki.renderTiddler("text/plain",template,{variables: {currentTiddler: title}});
|
||||
// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS
|
||||
response.writeHead(200);
|
||||
response.end(text,"utf8");
|
||||
} else {
|
||||
response.writeHead(404);
|
||||
response.end();
|
||||
}
|
||||
};
|
||||
|
||||
}());
|
29
core/templates/server/static.tiddler.html.tid
Normal file
29
core/templates/server/static.tiddler.html.tid
Normal file
@@ -0,0 +1,29 @@
|
||||
title: $:/core/templates/server/static.tiddler.html
|
||||
|
||||
\define tv-wikilink-template() $uri_encoded$
|
||||
`<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="generator" content="TiddlyWiki" />
|
||||
<meta name="tiddlywiki-version" content="`{{$:/core/templates/version}}`" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link id="faviconLink" rel="shortcut icon" href="%24%3A%2Ffavicon.ico">
|
||||
<link rel="stylesheet" href="%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css">
|
||||
<title>`<$view field="caption"><$view field="title"/></$view>: {{$:/core/wiki/title}}`</title>
|
||||
</head>
|
||||
<body class="tc-body">
|
||||
<section class="tc-story-river">
|
||||
<div class="tc-tiddler-frame">
|
||||
`<$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]">
|
||||
<$view tiddler="$:/core/templates/server/static.tiddler.wikitext" format="htmlwikified"/>
|
||||
</$importvariables>`
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
`
|
22
core/templates/server/static.tiddler.wikitext.tid
Normal file
22
core/templates/server/static.tiddler.wikitext.tid
Normal file
@@ -0,0 +1,22 @@
|
||||
title: $:/core/templates/server/static.tiddler.wikitext
|
||||
|
||||
<div class="tc-tiddler-title">
|
||||
<div class="tc-titlebar">
|
||||
<h2><$text text=<<currentTiddler>>/></h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tc-subtitle">
|
||||
<$link to={{!!modifier}}>
|
||||
<$view field="modifier"/>
|
||||
</$link> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
|
||||
</div>
|
||||
<div class="tc-tags-wrapper">
|
||||
<$list filter="[all[current]tags[]sort[title]]">
|
||||
<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>
|
||||
<$macrocall $name="tag-pill" tag=<<currentTiddler>>/>
|
||||
</a>
|
||||
</$list>
|
||||
</div>
|
||||
<div class="tc-tiddler-body">
|
||||
<$transclude mode="block"/>
|
||||
</div>
|
Reference in New Issue
Block a user