summaryrefslogtreecommitdiff
path: root/src/server/web
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-04-29 09:11:57 +0900
committerGitHub <noreply@github.com>2019-04-29 09:11:57 +0900
commit05b8111c1906c1285c9ddde758eda45b83792244 (patch)
treeda5d58c4ae18436f739eaee9e1801c6c48056be5 /src/server/web
parentUpdate define.ts (diff)
downloadsharkey-05b8111c1906c1285c9ddde758eda45b83792244.tar.gz
sharkey-05b8111c1906c1285c9ddde758eda45b83792244.tar.bz2
sharkey-05b8111c1906c1285c9ddde758eda45b83792244.zip
Pages (#4811)
* wip * wip * wip * Update page-editor.vue * wip * wip * wip * wip * wip * wip * wip * Update page-editor.variable.core.vue * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update aiscript.ts * wip * Update package.json * wip * wip * wip * wip * wip * Update page.vue * wip * wip * wip * wip * more info * wip fn * wip * wip * wip
Diffstat (limited to 'src/server/web')
-rw-r--r--src/server/web/index.ts37
-rw-r--r--src/server/web/views/note.pug1
-rw-r--r--src/server/web/views/page.pug30
3 files changed, 67 insertions, 1 deletions
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 1f87cd70f8..c5a3497f44 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -16,7 +16,7 @@ import { fetchMeta } from '../../misc/fetch-meta';
import * as pkg from '../../../package.json';
import { genOpenapiSpec } from '../api/openapi/gen-spec';
import config from '../../config';
-import { Users, Notes, Emojis, UserProfiles } from '../../models';
+import { Users, Notes, Emojis, UserProfiles, Pages } from '../../models';
import parseAcct from '../../misc/acct/parse';
import getNoteSummary from '../../misc/get-note-summary';
import { ensure } from '../../prelude/ensure';
@@ -203,6 +203,41 @@ router.get('/notes/:note', async ctx => {
ctx.status = 404;
});
+
+// Page
+router.get('/@:user/pages/:page', async ctx => {
+ const { username, host } = parseAcct(ctx.params.user);
+ const user = await Users.findOne({
+ usernameLower: username.toLowerCase(),
+ host
+ });
+
+ if (user == null) return;
+
+ const page = await Pages.findOne({
+ name: ctx.params.page,
+ userId: user.id
+ });
+
+ if (page) {
+ const _page = await Pages.pack(page);
+ const meta = await fetchMeta();
+ await ctx.render('page', {
+ page: _page,
+ instanceName: meta.name || 'Misskey'
+ });
+
+ if (['public'].includes(page.visibility)) {
+ ctx.set('Cache-Control', 'public, max-age=180');
+ } else {
+ ctx.set('Cache-Control', 'private, max-age=0, must-revalidate');
+ }
+
+ return;
+ }
+
+ ctx.status = 404;
+});
//#endregion
router.get('/info', async ctx => {
diff --git a/src/server/web/views/note.pug b/src/server/web/views/note.pug
index dd6dda2582..983c731a04 100644
--- a/src/server/web/views/note.pug
+++ b/src/server/web/views/note.pug
@@ -25,6 +25,7 @@ block meta
meta(name='twitter:card' content='summary')
+ // todo
if user.twitter
meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
diff --git a/src/server/web/views/page.pug b/src/server/web/views/page.pug
new file mode 100644
index 0000000000..55f64ff054
--- /dev/null
+++ b/src/server/web/views/page.pug
@@ -0,0 +1,30 @@
+extends ./base
+
+block vars
+ - const user = page.user;
+ - const title = page.title;
+ - const url = `${config.url}/@${user.username}/${page.name}`;
+
+block title
+ = `${title} | ${instanceName}`
+
+block desc
+ meta(name='description' content= page.summary)
+
+block og
+ meta(property='og:type' content='article')
+ meta(property='og:title' content= title)
+ meta(property='og:description' content= page.summary)
+ meta(property='og:url' content= url)
+ meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : user.avatarUrl)
+
+block meta
+ meta(name='misskey:user-username' content=user.username)
+ meta(name='misskey:user-id' content=user.id)
+ meta(name='misskey:page-id' content=page.id)
+
+ meta(name='twitter:card' content='summary')
+
+ // todo
+ if user.twitter
+ meta(name='twitter:creator' content=`@${user.twitter.screenName}`)