Compare commits

..
9 Commits
14 changed files with 46 additions and 22 deletions
+1
View File
@@ -5,6 +5,7 @@ const config = {
playgroundEndpoint: "http://127.0.0.1:17000/playground", playgroundEndpoint: "http://127.0.0.1:17000/playground",
port: 8080, port: 8080,
root: "http://localhost:8080", root: "http://localhost:8080",
trustedProxy: null,
auth0: { auth0: {
secret: "INVALID_SECRET", secret: "INVALID_SECRET",
clientId: "", clientId: "",
+1 -1
View File
@@ -7,7 +7,7 @@ div.overlay {
padding-top: 1em; padding-top: 1em;
z-index: 999; z-index: 999;
background-color: rgba(0, 0, 0, 0.90); background-color: rgba(0, 0, 0, 0.95);
overflow-y: scroll; overflow-y: scroll;
@@ -16,12 +16,13 @@
so you can still read it (or back it up) before leaving the page. so you can still read it (or back it up) before leaving the page.
</p> </p>
</annotation> </annotation>
<post for(post in state.log.posts) <post for(post in state.log.posts | status-var=loop)
key=post.id key=post.id
on-move("movePost", post) on-move("movePost", post)
on-remove("removePost", post) on-remove("removePost", post)
on-edited("postEdited") on-edited("postEdited")
user=input.user user=input.user
prev=(state.log.posts[loop.getIndex() - 1] || {})
post=post post=post
characters=state.log.characters characters=state.log.characters
last=(post.position === state.log.posts.length) last=(post.position === state.log.posts.length)
@@ -1,6 +1,6 @@
div.logs-content { div.logs-content {
width: 90%; width: 90%;
max-width: 75ch; max-width: 95ch;
margin: auto; margin: auto;
div.header { div.header {
@@ -1,4 +1,6 @@
<div if(!state.removed) class=["post", component.kindClass("post-type")]> $ const multipart = (input.post.nick == input.prev.nick && input.prev.multipart !== false);
<div if(!state.removed) class=["post", component.kindClass("post-type"), multipart ? "multipart" : null]>
<div class="post-meta-row"> <div class="post-meta-row">
<div class="options color-menu"> <div class="options color-menu">
<if-permitted user=input.user permission="post.move"> <if-permitted user=input.user permission="post.move">
@@ -24,7 +26,8 @@
<markdown class="post-content post-scene" source=state.text /> <markdown class="post-content post-scene" source=state.text />
</div> </div>
<div if(input.post.kind === "action") class="post-body color-text"> <div if(input.post.kind === "action") class="post-body color-text">
<markdown class="post-content post-action" source=(state.shortName + state.nameSuffix + " " + state.text) /> $ const prefix = (!multipart ? state.shortName + state.nameSuffix + " " : "");
<markdown class="post-content post-action" source=(prefix + state.text) />
</div> </div>
<div if(input.post.kind === "text") class="post-body color-text"> <div if(input.post.kind === "text") class="post-body color-text">
<markdown class="post-content post-text" source=state.text /> <markdown class="post-content post-text" source=state.text />
@@ -10,7 +10,7 @@ div.post {
position: absolute; position: absolute;
text-align: right; text-align: right;
width: calc(100% - 35.5ch); width: calc(100% - 35.5ch);
max-width: 75ch; max-width: 95ch;
a { a {
display: inline-block; display: inline-block;
@@ -54,3 +54,13 @@ div.post {
padding-top: 0; padding-top: 0;
} }
} }
div.post.multipart {
margin-top: -1.25em;
div.post-meta {
span {
display: none;
}
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<include("../layout", {title: "Logs", site: "logs"})> <include("../layout", {title: "Logs", site: "logs"})>
<@body> <@body>
<background src="/assets/images/bg.png" opacity=0.25 /> <background src="/assets/images/bg.png" opacity=0.125 />
<page log=input.log user=input.user selected=input.selected /> <page log=input.log user=input.user selected=input.selected />
</@body> </@body>
</include> </include>
@@ -16,7 +16,7 @@
position: absolute; position: absolute;
text-align: right; text-align: right;
width: calc(100% - 35.5ch); width: calc(100% - 35.5ch);
max-width: 75ch; max-width: 95ch;
pointer-events: none; pointer-events: none;
@@ -1,6 +1,6 @@
.story-content { .story-content {
width: 90%; width: 90%;
max-width: 75ch; max-width: 95ch;
margin: auto; margin: auto;
h1 { h1 {
+1 -1
View File
@@ -1,6 +1,6 @@
<include("../layout", {title: "Stories", site: "story"})> <include("../layout", {title: "Stories", site: "story"})>
<@body> <@body>
<background src="/assets/images/bg.png" opacity=0.25 /> <background src="/assets/images/bg.png" opacity=0.125 />
<page story=input.story categories=input.categories user=input.user selected=input.selected /> <page story=input.story categories=input.categories user=input.user selected=input.selected />
</@body> </@body>
</include> </include>
@@ -9,7 +9,7 @@ div.tags-page {
} }
div.groups { div.groups {
column-count: 4; column-count: 5;
padding: 0.5em; padding: 0.5em;
div.group { div.group {
@@ -43,7 +43,15 @@ div.tags-page {
} }
} }
@media screen and (max-width: 1900px) { @media screen and (max-width: 2000px) {
div.tags-page {
div.groups {
column-count: 4;
}
}
}
@media screen and (max-width: 1400px) {
div.tags-page { div.tags-page {
div.groups { div.groups {
column-count: 3; column-count: 3;
@@ -51,7 +59,7 @@ div.tags-page {
} }
} }
@media screen and (max-width: 1300px) { @media screen and (max-width: 1000px) {
div.tags-page { div.tags-page {
div.groups { div.groups {
column-count: 2; column-count: 2;
@@ -59,7 +67,7 @@ div.tags-page {
} }
} }
@media screen and (max-width: 1000px) { @media screen and (max-width: 900px) {
div.tags-page { div.tags-page {
div.groups { div.groups {
column-count: 1; column-count: 1;
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@gisle/rpdata-frontend", "name": "@gisle/rpdata-frontend",
"version": "1.0.2", "version": "1.0.7",
"description": "RPData (www.aiterp.net) frontend/proxy", "description": "RPData (www.aiterp.net) frontend/proxy",
"main": "./index.js", "main": "./index.js",
"scripts": { "scripts": {
+1 -5
View File
@@ -17,11 +17,7 @@ router.get("/login", saveReferer, passport.authenticate("auth0", {scope: "openid
res.redirect("/") res.redirect("/")
}) })
router.get("/error", (req, res) => { router.get("/callback", passport.authenticate("auth0"), (req, res) => {
res.render("Login error")
})
router.get("/callback", passport.authenticate("auth0", { failureRedirect: "/auth/error" }), (req, res) => {
if (req.user == null) { if (req.user == null) {
throw new Error("user null"); throw new Error("user null");
} }
+7 -2
View File
@@ -33,7 +33,7 @@ lasso.configure({
outputDir: "./.static", // Place all generated JS/CSS/etc. files into the "static" dir outputDir: "./.static", // Place all generated JS/CSS/etc. files into the "static" dir
bundlingEnabled: isProduction, // Only enable bundling in production bundlingEnabled: isProduction, // Only enable bundling in production
minify: isProduction, // Only minify JS and CSS code in production minify: isProduction, // Only minify JS and CSS code in production
fingerprintsEnabled: true, // Only add fingerprints to URLs in production fingerprintsEnabled: isProduction, // Only add fingerprints to URLs in production
require: { require: {
builtins: { builtins: {
@@ -54,6 +54,11 @@ lasso.configure({
} }
}) })
// Set trusted proxy
if (config.trustedProxy != null) {
app.set('trust proxy', config.trustedProxy)
}
// Apply middleware // Apply middleware
app.use(markoExpress()) app.use(markoExpress())
app.use(session) app.use(session)
@@ -83,7 +88,7 @@ app.use("/story/by-author/", require("./routes/story/by-author"))
app.use("/story/tag-list/", require("./routes/story/tag-list")) app.use("/story/tag-list/", require("./routes/story/tag-list"))
app.use("/story/:id(S[0-9a-z]{15})/", require("./routes/story-content")) app.use("/story/:id(S[0-9a-z]{15})/", require("./routes/story-content"))
app.use("/logs/", require("./routes/logs")) app.use("/logs/", require("./routes/logs"))
app.use("/logs/:id([0-9]{4}-[0-1][0-9]-[0-3][0-9]_[0-9]{9}_[A-Za-z\,\']{2,})/", require("./routes/logs-content")) app.use("/logs/:id([0-9]{4}-[0-1][0-9]-[0-3][0-9]_[0-9]{9}_[A-Za-z0-9\,\']{2,})/", require("./routes/logs-content"))
app.use("/logs/:id(L[0-9]{0,7})/", require("./routes/logs-content")) app.use("/logs/:id(L[0-9]{0,7})/", require("./routes/logs-content"))
app.use("/data/", require("./routes/data")) app.use("/data/", require("./routes/data"))
app.use("/data/characters/", require("./routes/data/characters")) app.use("/data/characters/", require("./routes/data/characters"))