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
This commit is contained in:
@ -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 => {
|
||||
|
@ -25,6 +25,7 @@ block meta
|
||||
|
||||
meta(name='twitter:card' content='summary')
|
||||
|
||||
// todo
|
||||
if user.twitter
|
||||
meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
|
||||
|
||||
|
30
src/server/web/views/page.pug
Normal file
30
src/server/web/views/page.pug
Normal file
@ -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}`)
|
Reference in New Issue
Block a user