mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-08-08 06:55:26 +02:00
Merge branch 'master' into feature/design-updates
This commit is contained in:
commit
9437bacdc3
13 changed files with 125 additions and 128 deletions
24
package.json
24
package.json
|
@ -12,56 +12,51 @@
|
|||
"build": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=production",
|
||||
"build:dev": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=development --watch",
|
||||
"precommit": "yarn lint && yarn test --exit",
|
||||
"generatePassword": "node ./generatePassword.js"
|
||||
"generatePassword": "node ./generatePassword.js",
|
||||
"editor-upgrade": "yarn add -D @editorjs/{editorjs,header,code,delimiter,list,image,table,inline-code,marker}@latest"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/polyfill": "^7.0.0",
|
||||
"bcrypt": "^3.0.3",
|
||||
"body-parser": "latest",
|
||||
"commander": "^2.19.0",
|
||||
"cookie-parser": "~1.4.3",
|
||||
"cross-env": "^5.2.0",
|
||||
"csurf": "^1.9.0",
|
||||
"debug": "~4.1.0",
|
||||
"dotenv": "^6.2.0",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"express": "~4.16.0",
|
||||
"file-type": "^10.7.1",
|
||||
"http-errors": "~1.7.1",
|
||||
"jsonwebtoken": "^8.4.0",
|
||||
"mime": "^2.4.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"module-dispatcher": "^2.0.0",
|
||||
"morgan": "~1.9.0",
|
||||
"multer": "^1.3.1",
|
||||
"nedb": "^1.8.0",
|
||||
"node-fetch": "^2.3.0",
|
||||
"nodemon": "^1.18.3",
|
||||
"normalize.css": "^8.0.0",
|
||||
"twig": "~1.12.0",
|
||||
"uuid4": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.0.0",
|
||||
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
|
||||
"@babel/polyfill": "^7.2.5",
|
||||
"@babel/preset-env": "^7.1.0",
|
||||
"@editorjs/code": "^2.4.0",
|
||||
"@editorjs/delimiter": "^1.1.0",
|
||||
"@editorjs/editorjs": "^2.11.7",
|
||||
"@editorjs/embed": "^2.2.0",
|
||||
"@editorjs/header": "^2.2.0",
|
||||
"@editorjs/editorjs": "^2.11.8",
|
||||
"@editorjs/header": "^2.2.2",
|
||||
"@editorjs/image": "^2.1.0",
|
||||
"@editorjs/inline-code": "^1.3.0",
|
||||
"@editorjs/list": "^1.3.0",
|
||||
"@editorjs/list": "^1.3.1",
|
||||
"@editorjs/marker": "^1.2.0",
|
||||
"@editorjs/quote": "^2.2.0",
|
||||
"@editorjs/raw": "^2.1.1",
|
||||
"@editorjs/table": "^1.2.0",
|
||||
"autoprefixer": "^9.1.3",
|
||||
"babel": "^6.23.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"babel-loader": "^8.0.2",
|
||||
"chai": "^4.1.2",
|
||||
"chai-http": "^4.0.0",
|
||||
"cross-env": "^5.2.0",
|
||||
"css-loader": "^1.0.0",
|
||||
"cssnano": "^4.1.0",
|
||||
"eslint": "^5.3.0",
|
||||
|
@ -69,11 +64,14 @@
|
|||
"eslint-plugin-chai-friendly": "^0.4.1",
|
||||
"eslint-plugin-import": "^2.14.0",
|
||||
"eslint-plugin-node": "^8.0.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"highlight.js": "^9.13.1",
|
||||
"husky": "^1.1.2",
|
||||
"mini-css-extract-plugin": "^0.4.3",
|
||||
"mocha": "^5.2.0",
|
||||
"mocha-sinon": "^2.1.0",
|
||||
"module-dispatcher": "^2.0.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"nyc": "^13.1.0",
|
||||
"postcss": "^7.0.2",
|
||||
"postcss-apply": "^0.11.0",
|
||||
|
|
35
public/dist/editor.bundle.js
vendored
35
public/dist/editor.bundle.js
vendored
File diff suppressed because one or more lines are too long
2
public/dist/main.css
vendored
2
public/dist/main.css
vendored
File diff suppressed because one or more lines are too long
|
@ -1,18 +1,20 @@
|
|||
import EditorJS from '@editorjs/editorjs';
|
||||
|
||||
/**
|
||||
* Tools for the Editor
|
||||
* Block Tools for the Editor
|
||||
*/
|
||||
import Header from '@editorjs/header';
|
||||
import Quote from '@editorjs/quote';
|
||||
import Marker from '@editorjs/marker';
|
||||
import CodeTool from '@editorjs/code';
|
||||
import Delimiter from '@editorjs/delimiter';
|
||||
import InlineCode from '@editorjs/inline-code';
|
||||
import List from '@editorjs/list';
|
||||
import Image from '@editorjs/image';
|
||||
import RawTool from '@editorjs/raw';
|
||||
import Embed from '@editorjs/embed';
|
||||
import CodeTool from '@editorjs/code';
|
||||
import List from '@editorjs/list';
|
||||
import Delimiter from '@editorjs/delimiter';
|
||||
import Table from '@editorjs/table';
|
||||
|
||||
/**
|
||||
* Inline Tools for the Editor
|
||||
*/
|
||||
import InlineCode from '@editorjs/inline-code';
|
||||
import Marker from '@editorjs/marker';
|
||||
|
||||
/**
|
||||
* Class for working with Editor.js
|
||||
|
@ -30,37 +32,12 @@ export default class Editor {
|
|||
tools: {
|
||||
header: {
|
||||
class: Header,
|
||||
inlineToolbar: ['link', 'marker'],
|
||||
inlineToolbar: ['link', 'marker', 'inlineCode'],
|
||||
config: {
|
||||
placeholder: options.headerPlaceholder || ''
|
||||
}
|
||||
},
|
||||
quote: {
|
||||
class: Quote,
|
||||
inlineToolbar: true
|
||||
},
|
||||
code: {
|
||||
class: CodeTool,
|
||||
shortcut: 'CMD+SHIFT+D'
|
||||
},
|
||||
rawTool: {
|
||||
class: RawTool,
|
||||
shortcut: 'CMD+SHIFT+R'
|
||||
},
|
||||
delimiter: Delimiter,
|
||||
embed: Embed,
|
||||
inlineCode: {
|
||||
class: InlineCode,
|
||||
shortcut: 'CMD+SHIFT+C'
|
||||
},
|
||||
marker: {
|
||||
class: Marker,
|
||||
shortcut: 'CMD+SHIFT+M'
|
||||
},
|
||||
list: {
|
||||
class: List,
|
||||
inlineToolbar: true
|
||||
},
|
||||
|
||||
image: {
|
||||
class: Image,
|
||||
inlineToolbar: true,
|
||||
|
@ -78,6 +55,36 @@ export default class Editor {
|
|||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
code: {
|
||||
class: CodeTool,
|
||||
shortcut: 'CMD+SHIFT+D'
|
||||
},
|
||||
|
||||
list: {
|
||||
class: List,
|
||||
inlineToolbar: true
|
||||
},
|
||||
|
||||
delimiter: Delimiter,
|
||||
|
||||
table: {
|
||||
class: Table,
|
||||
inlineToolbar: true
|
||||
},
|
||||
|
||||
/**
|
||||
* Inline Tools
|
||||
*/
|
||||
inlineCode: {
|
||||
class: InlineCode,
|
||||
shortcut: 'CMD+SHIFT+C'
|
||||
},
|
||||
|
||||
marker: {
|
||||
class: Marker,
|
||||
shortcut: 'CMD+SHIFT+M'
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
text-align: center;
|
||||
|
||||
&__content {
|
||||
img {
|
||||
img, video {
|
||||
vertical-align: bottom;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
@ -136,13 +136,13 @@
|
|||
width: calc(100% + 120px) !important;
|
||||
margin-left: -60px;
|
||||
|
||||
img {
|
||||
img, video {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&--bordered {
|
||||
img {
|
||||
img, video {
|
||||
border: 3px solid var(--color-line-gray);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -152,7 +152,7 @@
|
|||
padding: 15px;
|
||||
background: var(--color-line-gray);
|
||||
|
||||
img {
|
||||
img, video {
|
||||
max-width: 60%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
@ -183,3 +183,21 @@
|
|||
letter-spacing: 0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Table
|
||||
* ==================
|
||||
*/
|
||||
.block-table {
|
||||
margin: 20px 0;
|
||||
table-layout: fixed;
|
||||
width: 100%;
|
||||
border-radius: 3px;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid var(--color-line-gray);
|
||||
|
||||
td {
|
||||
padding: 8px 10px;
|
||||
border: 1px solid var(--color-line-gray);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
require('dotenv').config();
|
||||
|
||||
const express = require('express');
|
||||
const bodyParser = require('body-parser');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const router = express.Router();
|
||||
const Users = require('../controllers/users');
|
||||
|
@ -9,7 +8,7 @@ const config = require('../../config/index');
|
|||
const bcrypt = require('bcrypt');
|
||||
const csrf = require('csurf');
|
||||
const csrfProtection = csrf({ cookie: true });
|
||||
const parseForm = bodyParser.urlencoded({ extended: false });
|
||||
const parseForm = express.urlencoded({ extended: false });
|
||||
|
||||
/**
|
||||
* Authorization page
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
{% else %}
|
||||
href="/page/{{ firstLevelPage._id }}"
|
||||
{% endif %}>
|
||||
{{ firstLevelPage.title }}
|
||||
{{ firstLevelPage.title | striptags }}
|
||||
</a>
|
||||
{% if firstLevelPage.children is not empty %}
|
||||
<ul class="docs-aside__section-list">
|
||||
|
@ -22,7 +22,7 @@
|
|||
{% else %}
|
||||
href="/page/{{ child._id }}"
|
||||
{% endif %}>
|
||||
{{ child.title }}
|
||||
{{ child.title | striptags }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<header class="docs-header">
|
||||
<a href="/" class="docs-header__logo">
|
||||
{{ config.title }}
|
||||
{{ config.title | striptags }}
|
||||
</a>
|
||||
<ul class="docs-header__menu">
|
||||
{% if isAuthorized == true %}
|
||||
|
@ -19,7 +19,7 @@
|
|||
{% else %}
|
||||
href="/page/{{ option._id }}"
|
||||
{% endif %}>
|
||||
{{ option.title }}
|
||||
{{ option.title | striptags }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ config.title }}</title>
|
||||
<title>{{ (page.title ?: config.title) | striptags }}</title>
|
||||
<link rel="stylesheet" href="/dist/main.css" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:title" content="{{ page.title }}" />
|
||||
<meta property="article:modified_time" content="{{ (page.body.time / 1000) | date("c") }}" />
|
||||
<meta property="og:title" content="{{ page.title | striptags }}" />
|
||||
<meta property="article:modified_time" content="{{ (page.body.time / 1000) | date("c") }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -14,7 +14,14 @@
|
|||
|
||||
<figure class="block-image">
|
||||
<div class="{{classes.join(' ')}}">
|
||||
<img src="{{file.url}}" alt="{{caption ? caption : ''}}">
|
||||
{% if file.mime and file.mime == 'video/mp4' %}
|
||||
<video autoplay loop muted playsinline>
|
||||
<source src="{{file.url}}" type="video/mp4">
|
||||
</video>
|
||||
{% else %}
|
||||
<img src="{{file.url}}" alt="{{caption ? caption : ''}}">
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
{% if caption %}
|
||||
<footer class="block-image__caption">
|
||||
|
|
11
src/views/pages/blocks/table.twig
Normal file
11
src/views/pages/blocks/table.twig
Normal file
|
@ -0,0 +1,11 @@
|
|||
<table class="block-table">
|
||||
{% for row in content %}
|
||||
<tr>
|
||||
{% for cell in row %}
|
||||
<td>
|
||||
{{ cell }}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
|
@ -32,7 +32,7 @@
|
|||
{% for block in page.body.blocks %}
|
||||
{# Skip first header, because it is already showed as a Title #}
|
||||
{% if not (loop.first and block.type == 'header') %}
|
||||
{% if block.type in ['paragraph', 'header', 'list', 'code', 'image', 'delimiter'] %}
|
||||
{% if block.type in ['paragraph', 'header', 'image', 'code', 'list', 'delimiter', 'table'] %}
|
||||
{% include './blocks/' ~ block.type ~ '.twig' with block.data %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
|
48
yarn.lock
48
yarn.lock
|
@ -510,7 +510,7 @@
|
|||
"@babel/helper-regex" "^7.0.0"
|
||||
regexpu-core "^4.1.3"
|
||||
|
||||
"@babel/polyfill@^7.0.0":
|
||||
"@babel/polyfill@^7.2.5":
|
||||
version "7.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d"
|
||||
integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==
|
||||
|
@ -613,20 +613,15 @@
|
|||
resolved "https://registry.yarnpkg.com/@editorjs/delimiter/-/delimiter-1.1.0.tgz#f61808ea92e4e289607d54441964f1cb8605410a"
|
||||
integrity sha512-0G36vEvvb94g6nu/qs2rVjC/qjxLnY20OfOgxROKSOOXzS7xnkTij5raeIxRiYueeLL5fMrzrvtFH7wclfxF+g==
|
||||
|
||||
"@editorjs/editorjs@^2.11.7":
|
||||
version "2.11.7"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/editorjs/-/editorjs-2.11.7.tgz#63c66ce74ef4f55e344f3ad703a7cfec476478b4"
|
||||
integrity sha512-f1kJc41n0MkEm+PadjRSyhQEHDauPA6S90OwlCW+bUwuLIvxwan1ttnE9G4lf6LT/Yd8PIanTlOTJqeEYiqDqA==
|
||||
"@editorjs/editorjs@^2.11.8":
|
||||
version "2.11.8"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/editorjs/-/editorjs-2.11.8.tgz#b3269158ec866e9667b5ce0d96982bfc7922ce85"
|
||||
integrity sha512-kUYofUe9Csp+d7/MiDmIv05cTY3WRBynz01ImjjEG+4d7YDgYdAqRHrl/nF4ffLZ/VpL3OyTI3Crgq3Rf6E4bA==
|
||||
|
||||
"@editorjs/embed@^2.2.0":
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/embed/-/embed-2.2.0.tgz#4a6121cd4c526ea1db20c9cc9629e6022861f18f"
|
||||
integrity sha512-jWjFL6VyiGlezSWQRvddMHpidGHy2blUS9lmtNxuIZRwob6Xizg8LweKSFEvjr9tPLqKyX3sIeSQlnCb1vntJQ==
|
||||
|
||||
"@editorjs/header@^2.2.0":
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/header/-/header-2.2.0.tgz#df19f1dd6a22a0a2264ed7ef3c0611d841420390"
|
||||
integrity sha512-y0JfNT7BwGiewzwklYiXEYgHkEAZVo/Y1noAg1ZF/Kd9vY6MoK/o9LjTzV3IfxZsObKBSvwzz3OxfXhGIv3tCQ==
|
||||
"@editorjs/header@^2.2.2":
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/header/-/header-2.2.2.tgz#47ce654032f7a094c0b40daa4545c61893033002"
|
||||
integrity sha512-r9lmDVdVSNjnSoYmEMOSLp7BARWEU2O79UJjWPkLWAwV7RIOYO+s9fF3IbTEaPaltANAZvIzOYNmryGOhL8biA==
|
||||
|
||||
"@editorjs/image@^2.1.0":
|
||||
version "2.1.0"
|
||||
|
@ -638,25 +633,20 @@
|
|||
resolved "https://registry.yarnpkg.com/@editorjs/inline-code/-/inline-code-1.3.0.tgz#66b915d2c128ba520ba4b245067d40851d78355a"
|
||||
integrity sha512-pKvBYvPyaNZKiRd+jK8X2HDgAq8kDaOPXxUTB33He2L53OqbAJ8Cmt+8F4EQ3i0EyQYOrtT2uXnDQkjvVg41tg==
|
||||
|
||||
"@editorjs/list@^1.3.0":
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/list/-/list-1.3.0.tgz#8657012488e29bd86d072530f6bf8ad6d9686bb7"
|
||||
integrity sha512-jMfvny9BUy2MroFoiy5WyxRVKwLw3F0jAcLZ/Qgw055/TvP2I9LzIRJhIUEkKOPo8T/rx7Xf4/8lklUKvF6Yrg==
|
||||
"@editorjs/list@^1.3.1":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/list/-/list-1.3.1.tgz#0c551aa1efe80a8fcd6242cc6053eb72351d25c8"
|
||||
integrity sha512-LYjUL26fe5P1mXmwXiiUPcU1V/HHT4tZPRJaEC4M7DB8SScYCiK9/ByIxd47a7751rsN/rUaI1MhKammZNH+dA==
|
||||
|
||||
"@editorjs/marker@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/marker/-/marker-1.2.0.tgz#4e3130870c2ca4b3ac5b05405b4e49add55893cb"
|
||||
integrity sha512-BkAvAvf2B0xsUbMPoht7g1oWaxw79NeqJM//+wM3VnEruj908qw7AluDBVy1gwOe2fhhryaDXQ3kbqU6HC8o1g==
|
||||
|
||||
"@editorjs/quote@^2.2.0":
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/quote/-/quote-2.2.0.tgz#a62250c7b6ef19772021530f12b56f0ed13377e8"
|
||||
integrity sha512-Ej0z8ylsdfu106n+d6tDZG5A6SXTBDgtKlmtACsvtUa645oiDatwNwe5K6u7nFm6SJiTJmBxA9qKRQPH3YBT6g==
|
||||
|
||||
"@editorjs/raw@^2.1.1":
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/raw/-/raw-2.1.1.tgz#00cea181d8ce1a2a082352c6644090660c8237c7"
|
||||
integrity sha512-So+Y6fLIO7+JGRa/tOsHho58hASYt1m7lDM/+0fehs+LMdYlloLmj68X2q7Wxk60R8aCrUscXt/fOggcg7giPQ==
|
||||
"@editorjs/table@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@editorjs/table/-/table-1.2.0.tgz#547d7b28c96f8a37605bea10bd4f016e8bfc344d"
|
||||
integrity sha512-pCcNf/9JzVWQw6TsqUHew73UoVSYTftXviKVqsnVazx4/D8eH5g5fsEY5L0LEl9KC0mJMJij+h6I1ge70kDlgg==
|
||||
|
||||
"@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.2.0":
|
||||
version "1.3.0"
|
||||
|
@ -1225,7 +1215,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
|||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
|
||||
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
|
||||
|
||||
body-parser@1.18.3, body-parser@latest:
|
||||
body-parser@1.18.3:
|
||||
version "1.18.3"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
|
||||
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
|
||||
|
@ -4828,7 +4818,7 @@ normalize-url@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
||||
|
||||
normalize.css@^8.0.0:
|
||||
normalize.css@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
|
||||
integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue