1
0
Fork 0
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:
Peter Savchenko 2019-03-13 08:42:53 +03:00
commit 9437bacdc3
No known key found for this signature in database
GPG key ID: 63E739583C761566
13 changed files with 125 additions and 128 deletions

View file

@ -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",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -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: {

View file

@ -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);
}
}

View file

@ -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

View file

@ -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 %}

View file

@ -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 %}

View file

@ -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>

View file

@ -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">

View 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>

View file

@ -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 %}

View file

@ -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==