early catalog view

merge-requests/208/head
fatchan 5 years ago
parent 4ab5f786ba
commit 66c3b40fbd
  1. 31
      controllers/pages.js
  2. 21
      models/pages/catalog.js
  3. 31
      static/css/style.css
  4. 12
      views/mixins/catalogtile.pug
  5. 2
      views/pages/board.pug
  6. 18
      views/pages/catalog.pug
  7. 2
      views/pages/thread.pug

@ -3,14 +3,16 @@
const express = require('express')
, router = express.Router()
, Boards = require(__dirname+'/../db-models/boards.js')
, checkAuth = require(__dirname+'/../helpers/check-auth.js')
, numberConverter = require(__dirname+'/../helpers/number-converter.js')
//page models
, home = require(__dirname+'/../models/pages/home.js')
, register = require(__dirname+'/../models/pages/register.js')
, manage = require(__dirname+'/../models/pages/manage.js')
, login = require(__dirname+'/../models/pages/login.js')
, board = require(__dirname+'/../models/pages/board.js')
, thread = require(__dirname+'/../models/pages/thread.js')
, checkAuth = require(__dirname+'/../helpers/check-auth.js')
, numberConverter = require(__dirname+'/../helpers/number-converter.js');
, catalog = require(__dirname+'/../models/pages/catalog.js')
, thread = require(__dirname+'/../models/pages/thread.js');
//homepage with board list
router.get('/', home);
@ -45,28 +47,13 @@ router.get('/logout', (req, res, next) => {
router.get('/:board/manage', Boards.exists, checkAuth, Boards.canManage, manage);
// board page/recents
router.get('/:board/:page(\\d+)?', Boards.exists, numberConverter, (req, res, next) => {
const errors = [];
if (req.params.page && req.params.page <= 0) {
errors.push('Invalid page.');
}
if (errors.length > 0) {
return res.status(400).render('message', {
'title': 'Bad request',
'errors': errors,
'redirect': `/${req.params.board}`
});
}
board(req, res);
});
router.get('/:board/:page(\\d+)?', Boards.exists, numberConverter, board);
// thread view page
router.get('/:board/thread/:id(\\d+)', Boards.exists, numberConverter, thread);
// board catalog page
router.get('/:board/catalog', Boards.exists, catalog);
module.exports = router;

@ -0,0 +1,21 @@
'use strict';
const Posts = require(__dirname+'/../../db-models/posts.js');
module.exports = async (req, res, next) => {
// get all threads
let threads;
try {
threads = await Posts.getCatalog(req.params.board);
} catch (err) {
console.error(err);
return next();
}
//render the page
res.render('catalog', {
threads: threads || [],
});
}

@ -9,6 +9,30 @@ body {
margin: 0;
}
.catalog-tile {
text-align: center;
padding: 5px;
margin: 1px;
height: 150px;
width: 150px;
min-width: 150px;
overflow: hidden;
border: 2px solid #B7C5D9;
box-sizing: border-box;
}
.catalog-thumb {
box-shadow: 0 0 3px black;
}
.catalog {
display:flex;
flex-direction: row;
align-items:flex-start;
flex-wrap: wrap;
}
.spoiler {
background: black;
}
@ -17,7 +41,7 @@ body {
color: white;
}
.post-mode {
.mode {
background-color: red;
color: white;
font-weight: bold;
@ -268,4 +292,9 @@ hr {
width: 100%;
}
.catalog-tile {
width: 50%;
margin: 0px;
}
}

@ -0,0 +1,12 @@
mixin catalogtile(board, post, truncate)
article(class='catalog-tile')
if post.files.length > 0
.post-file-src
a(target='_blank' href='/img/'+post.files[0].filename)
object.catalog-thumb(data=`/img/thumb-${post.files[0].filename.split('.')[0]}.png` width='64' height='64')
header.post-info
if post.subject
span.post-subject #{post.subject}
span: a(href=`/${board._id}/thread/${post.thread ? post.thread : post.postId}#${post.postId}`) ##{post.postId}
if post.message
blockquote.post-message !{post.message}

@ -8,7 +8,7 @@ block content
include ../includes/boardheader.pug
hr(size=1)
include ../includes/postform.pug
.post-mode Posting mode: Thread
.mode Posting mode: Thread [#[a.no-decoration(href=`/${board._id}/catalog`) Catalog]]
hr(size=1)
form(action='/forms/board/'+board._id+'/posts' method='POST' enctype='application/x-www-form-urlencoded')
input(type='hidden' name='_csrf' value=csrf)

@ -0,0 +1,18 @@
extends ../layout.pug
include ../mixins/catalogtile.pug
block head
title /#{board._id}/ - Catalog
block content
include ../includes/boardheader.pug
hr(size=1)
.mode Catalog View [#[a.no-decoration(href=`/${board._id}`) Go Back]]
hr(size=1)
if threads.length === 0
p No posts.
hr(size=1)
section.catalog
for thread in threads
+catalogtile(board, thread)

@ -13,7 +13,7 @@ block content
include ../includes/boardheader.pug
hr(size=1)
include ../includes/postform.pug
.post-mode Posting mode: Reply [#[a.no-decoration(href=`/${board._id}`) Go Back]]
.mode Posting mode: Reply [#[a.no-decoration(href=`/${board._id}`) Go Back]]
hr(size=1)
form(action='/forms/board/'+board._id+'/posts' method='POST' enctype='application/x-www-form-urlencoded')
input(type='hidden' name='_csrf' value=csrf)

Loading…
Cancel
Save