Merge remote-tracking branch 'upstream/master' into DepauMD
This commit is contained in:
commit
36749cc645
21 changed files with 267 additions and 237 deletions
|
@ -4,7 +4,7 @@ cache: yarn
|
|||
env:
|
||||
global:
|
||||
- CXX=g++-4.8
|
||||
- YARN_VERSION=1.3.2
|
||||
- YARN_VERSION=1.15.2
|
||||
|
||||
jobs:
|
||||
include:
|
||||
|
|
3
app.js
3
app.js
|
@ -289,6 +289,9 @@ function handleTermSignals () {
|
|||
socket.disconnect(true)
|
||||
}, 0)
|
||||
})
|
||||
if (config.path) {
|
||||
fs.unlink(config.path)
|
||||
}
|
||||
var checkCleanTimer = setInterval(function () {
|
||||
if (realtime.isReady()) {
|
||||
models.Revision.checkAllNotesRevision(function (err, notes) {
|
||||
|
|
|
@ -6,34 +6,35 @@ Manual Installation
|
|||
- Node.js 6.x or up (test up to 7.5.0) and <10.x
|
||||
- Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL) use charset `utf8`
|
||||
- npm (and its dependencies, [node-gyp](https://github.com/nodejs/node-gyp#installation))
|
||||
- yarn
|
||||
- `libssl-dev` for building scrypt (see [here](https://github.com/ml1nk/node-scrypt/blob/master/README.md#installation-instructions) for further information)
|
||||
- Bash (for the setup script)
|
||||
- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM
|
||||
|
||||
|
||||
## Instructions
|
||||
|
||||
1. Download a release and unzip or clone into a directory
|
||||
2. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs. The setup script is written in Bash, you would need bash as a prerequisite.
|
||||
3. Setup the configs, see more below
|
||||
4. Setup environment variables which will overwrite the configs
|
||||
5. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
|
||||
6. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
|
||||
1. Check if you meet the [requirements at the top of this document](#requirements-on-your-server).
|
||||
2. Clone this repository (preferred) or download a release and unzip it.
|
||||
3. Enter the directory and type `bin/setup`, which will install npm dependencies and create configs.
|
||||
4. Setup the configs, see more below
|
||||
5. Setup environment variables which will overwrite the configs
|
||||
6. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
|
||||
7. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
|
||||
For example: `postgres://username:password@localhost:5432/codimd`
|
||||
7. Run `node_modules/.bin/sequelize db:migrate`, this step will migrate your db to the latest schema
|
||||
8. Run the server as you like (node, forever, pm2)
|
||||
8. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development).
|
||||
9. Run the server as you like (node, forever, pm2, SystemD, Init-Scripts)
|
||||
|
||||
|
||||
## How to upgrade your installation
|
||||
|
||||
:warning: When you are still running from the old repository, please run: `git remote set-url origin https://github.com/codimd/server.git` :warning:
|
||||
|
||||
If you are upgrading CodiMD from an older version, follow these steps:
|
||||
|
||||
1. Fully stop your old server first (important)
|
||||
2. `git pull` or do whatever that updates the files
|
||||
3. `npm install` to update dependencies
|
||||
4. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development)
|
||||
5. Modify the file named `.sequelizerc`, change the value of the variable `url` with your db connection string
|
||||
For example: `postgres://username:password@localhost:5432/codimd`
|
||||
6. Run `node_modules/.bin/sequelize db:migrate`, this step will migrate your db to the latest schema
|
||||
7. Start your whole new server!
|
||||
1. Check if you meet the [requirements at the top of this document](#requirements-on-your-server).
|
||||
2. Verify which version you were running before and take a look at [migrations and breaking changes](../guides/migrations-and-breaking-changes.md) to see if additional steps, or configuration changes are necessary!
|
||||
3. Fully stop your old CodiMD server.
|
||||
4. `git pull` or unzip a new release in the directory.
|
||||
5. Run `bin/setup`. This will take care of installing dependencies. It is safe to run on an existing installation.
|
||||
6. Build front-end bundle by `npm run build` (use `npm run dev` if you are in development).
|
||||
7. It is recommended to start your server manually once: `npm start --production`, this way it's easier to see warnings or errors that might occur (leave out `--production` for development).
|
||||
8. You can now restart the CodiMD server!
|
||||
|
|
|
@ -113,5 +113,9 @@
|
|||
"Delete user": "Benutzer löschen",
|
||||
"Export user data": "Exportiere Nutzerdaten",
|
||||
"Help us translating on %s": "Hilf uns übersetzen auf %s",
|
||||
"Source Code": "Quelltext"
|
||||
"Source Code": "Quelltext",
|
||||
"Register": "Registrieren",
|
||||
"Powered by %s": "Ermöglicht durch %s",
|
||||
"Help us translating": "Hilf uns übersetzen",
|
||||
"Join the community": "Tritt der Community bei"
|
||||
}
|
|
@ -112,8 +112,9 @@
|
|||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "This will delete your account, all notes that are owned by you and remove all references to your account from other notes.",
|
||||
"Delete user": "Delete user",
|
||||
"Export user data": "Export user data",
|
||||
"Help us translating on %s": "Help us translating on %s",
|
||||
"Source Code": "Source Code",
|
||||
"Powered by %s": "Powered by %s",
|
||||
"Register": "Register"
|
||||
"Register": "Register",
|
||||
"Help us translating": "Help us translating",
|
||||
"Join the community": "Join the community"
|
||||
}
|
||||
|
|
|
@ -115,5 +115,7 @@
|
|||
"Help us translating on %s": "Aidez nous à traduire sur %s",
|
||||
"Source Code": "Code source",
|
||||
"Register": "S'enregistrer",
|
||||
"Powered by %s": "Propulsé par %s"
|
||||
"Powered by %s": "Propulsé par %s",
|
||||
"Help us translating": "Aidez nous à traduire",
|
||||
"Join the community": "Rejoignez la communauté"
|
||||
}
|
|
@ -115,5 +115,7 @@
|
|||
"Help us translating on %s": "Aiutaci nella traduzione su %s",
|
||||
"Source Code": "Codice Sorgente",
|
||||
"Register": "Registrati",
|
||||
"Powered by %s": "Alimentato da %s"
|
||||
"Powered by %s": "Alimentato da %s",
|
||||
"Help us translating": "Aiutaci nella traduzione",
|
||||
"Join the community": "Unisciti alla comunità"
|
||||
}
|
|
@ -115,5 +115,7 @@
|
|||
"Help us translating on %s": "%s の翻訳にご協力ください",
|
||||
"Source Code": "ソースコード",
|
||||
"Register": "登録",
|
||||
"Powered by %s": "Powered by %s"
|
||||
"Powered by %s": "Powered by %s",
|
||||
"Help us translating": "翻訳のお手伝いをお願いします",
|
||||
"Join the community": "コミュニティに参加しましょう"
|
||||
}
|
|
@ -115,5 +115,7 @@
|
|||
"Help us translating on %s": "Pomóż nam przetłumaczyć na język %s",
|
||||
"Source Code": "Kod źródłowy",
|
||||
"Register": "Zarejestruj",
|
||||
"Powered by %s": "Wspierany przez %s"
|
||||
"Powered by %s": "Wspierany przez %s",
|
||||
"Help us translating": "Pomóż nam w tłumaczeniu",
|
||||
"Join the community": "Dołącz do społeczności"
|
||||
}
|
|
@ -110,10 +110,12 @@
|
|||
"Terms of Use": "Услови коришћења",
|
||||
"Do you really want to delete your user account?": "Да ли заиста желите да трајно обришете свој налог?",
|
||||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Ова операција ће избрисати ваш налог, све ваше белешке, а уклониће и све везе ка вашем налогу из других белешки.",
|
||||
"Delete user": "Брисање корисника",
|
||||
"Delete user": "Обриши корисника",
|
||||
"Export user data": "Извоз свих корисничких података",
|
||||
"Help us translating on %s": "Помозите нам да преведемо на %s",
|
||||
"Help us translating on %s": "Помозите око превода на %s",
|
||||
"Source Code": "Изворни код",
|
||||
"Register": "Региструј се",
|
||||
"Powered by %s": "Покреће %s"
|
||||
"Powered by %s": "Покреће %s",
|
||||
"Help us translating": "Помозите око превода",
|
||||
"Join the community": "Приступите заједници"
|
||||
}
|
|
@ -29,6 +29,8 @@
|
|||
"Import from browser": "Importera från webbläsare",
|
||||
"Releases": "Lanseringar",
|
||||
"Are you sure?": "Är du säker?",
|
||||
"Do you really want to delete this note?": "Vill du verkligen radera denna anteckning?",
|
||||
"All users will lose their connection.": "Alla användare kommer att förlora sin anslutning.",
|
||||
"Cancel": "Avbryt",
|
||||
"Yes, do it!": "Ja, gör det!",
|
||||
"Choose method": "Välj metod",
|
||||
|
@ -60,6 +62,7 @@
|
|||
"Refresh": "Ladda om",
|
||||
"Contacts": "Kontakter",
|
||||
"Report an issue": "Rapportera ett fel",
|
||||
"Meet us on %s": "Träffa oss på% s",
|
||||
"Send us email": "Skicka e-post till oss",
|
||||
"Documents": "Dokument",
|
||||
"Features": "Funktioner",
|
||||
|
@ -100,5 +103,19 @@
|
|||
"Select From Available Snippets": "Välj från tillgängliga Snippets",
|
||||
"OR": "ELLER",
|
||||
"Export to Snippet": "Exportera till Snippet",
|
||||
"Select Visibility Level": "Välj synlighetsnivå"
|
||||
"Select Visibility Level": "Välj synlighetsnivå",
|
||||
"Night Theme": "Natttema",
|
||||
"Follow us on %s and %s.": "Följ oss på %s och %s.",
|
||||
"Privacy": "Integritet",
|
||||
"Terms of Use": "Villkor",
|
||||
"Do you really want to delete your user account?": "Vill du verkligen ta bort ditt användarkonto?",
|
||||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Detta tar bort ditt konto, alla anteckningar som ägs av dig och tar bort alla referenser till ditt konto från andra anteckningar.",
|
||||
"Delete user": "Ta bort användare",
|
||||
"Export user data": "Exportera användardata",
|
||||
"Help us translating on %s": "Hjälp oss att översätta på %s",
|
||||
"Source Code": "Källkod",
|
||||
"Register": "Registrera",
|
||||
"Powered by %s": "Drivs av %s",
|
||||
"Help us translating": "Hjälp oss att översätta",
|
||||
"Join the community": "Gå med i samhället"
|
||||
}
|
|
@ -1,117 +1,121 @@
|
|||
{
|
||||
"Collaborative markdown notes": "Markdown 协作笔记",
|
||||
"Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即时协作笔记",
|
||||
"Best way to write and share your knowledge in markdown.": "您使用 Markdown 写作与分享知识的最佳方式",
|
||||
"Realtime collaborative markdown notes on all platforms.": "使用 Markdown 的跨平台即时协作笔记。",
|
||||
"Best way to write and share your knowledge in markdown.": "写作与分享 Markdown 的最佳平台。",
|
||||
"Intro": "简介",
|
||||
"History": "历史",
|
||||
"New guest note": "建立访客笔记",
|
||||
"Collaborate with URL": "使用网址协作",
|
||||
"New guest note": "新建访客笔记",
|
||||
"Collaborate with URL": "实时协作",
|
||||
"Support charts and MathJax": "支持图表与 MathJax",
|
||||
"Support slide mode": "支持简报模式",
|
||||
"Support slide mode": "支持幻灯模式",
|
||||
"Sign In": "登录",
|
||||
"Below is the history from browser": "以下为来自浏览器的历史",
|
||||
"Welcome!": "欢迎!",
|
||||
"New note": "建立笔记",
|
||||
"New note": "新建笔记",
|
||||
"or": "或",
|
||||
"Sign Out": "登出",
|
||||
"Explore all features": "探索所有功能",
|
||||
"Select tags...": "选择标签...",
|
||||
"Search keyword...": "搜索关键字...",
|
||||
"Sort by title": "用标题排序",
|
||||
"Sort by title": "按标题排序",
|
||||
"Title": "标题",
|
||||
"Sort by time": "用时间排序",
|
||||
"Sort by time": "按时间排序",
|
||||
"Time": "时间",
|
||||
"Export history": "导出历史",
|
||||
"Import history": "导入历史",
|
||||
"Clear history": "清空历史",
|
||||
"Refresh history": "刷新历史",
|
||||
"No history": "没有历史",
|
||||
"No history": "无历史记录",
|
||||
"Import from browser": "从浏览器导入",
|
||||
"Releases": "版本",
|
||||
"Are you sure?": "你确定吗?",
|
||||
"Do you really want to delete this note?": "确定要删除这个文件吗?",
|
||||
"All users will lose their connection.": "所有用户将失去连接",
|
||||
"Are you sure?": "您确定吗?",
|
||||
"Do you really want to delete this note?": "您确定要删除这篇笔记吗?",
|
||||
"All users will lose their connection.": "所有用户将失去连接。",
|
||||
"Cancel": "取消",
|
||||
"Yes, do it!": "没错,就这样办!",
|
||||
"Yes, do it!": "是的,就这样做!",
|
||||
"Choose method": "选择方式",
|
||||
"Sign in via %s": "通过 %s 登录",
|
||||
"New": "新增",
|
||||
"New": "新建",
|
||||
"Publish": "发表",
|
||||
"Extra": "增益",
|
||||
"Extra": "附加功能",
|
||||
"Revision": "修订版本",
|
||||
"Slide Mode": "简报模式",
|
||||
"Slide Mode": "幻灯模式",
|
||||
"Export": "导出",
|
||||
"Import": "导入",
|
||||
"Clipboard": "剪贴板",
|
||||
"Download": "下载",
|
||||
"Raw HTML": "纯 HTML",
|
||||
"Raw HTML": "原始 HTML",
|
||||
"Edit": "编辑",
|
||||
"View": "检视",
|
||||
"View": "预览",
|
||||
"Both": "双栏",
|
||||
"Help": "帮助",
|
||||
"Upload Image": "上传图片",
|
||||
"Menu": "菜单",
|
||||
"This page need refresh": "此页面需要重新整理",
|
||||
"You have an incompatible client version.": "您使用的是不相容的客户端",
|
||||
"Refresh to update.": "请重新整理来更新",
|
||||
"New version available!": "新版本来了!",
|
||||
"See releases notes here": "请由此查阅更新纪录",
|
||||
"Refresh to enjoy new features.": "请重新整理来享受最新功能",
|
||||
"Your user state has changed.": "您的使用者状态已变更",
|
||||
"Refresh to load new user state.": "请重新整理来载入新的使用者状态",
|
||||
"Refresh": "重新整理",
|
||||
"Contacts": "联络方式",
|
||||
"This page need refresh": "此页面需要刷新",
|
||||
"You have an incompatible client version.": "您的客户端版本不兼容。",
|
||||
"Refresh to update.": "刷新页面以更新。",
|
||||
"New version available!": "新版本可用!",
|
||||
"See releases notes here": "在此查看更新记录",
|
||||
"Refresh to enjoy new features.": "刷新页面以体验新功能。",
|
||||
"Your user state has changed.": "您的用户状态已变更。",
|
||||
"Refresh to load new user state.": "刷新页面以加载新的用户状态。",
|
||||
"Refresh": "刷新",
|
||||
"Contacts": "联系我们",
|
||||
"Report an issue": "报告问题",
|
||||
"Meet us on %s": "在 %s 上联系我们",
|
||||
"Send us email": "寄信给我们",
|
||||
"Documents": "文件",
|
||||
"Features": "功能简介",
|
||||
"YAML Metadata": "YAML Metadata",
|
||||
"Slide Example": "简报范例",
|
||||
"Cheatsheet": "快速简表",
|
||||
"Send us email": "给我们发送电子邮件",
|
||||
"Documents": "文档",
|
||||
"Features": "功能",
|
||||
"YAML Metadata": "YAML 元数据",
|
||||
"Slide Example": "幻灯范例",
|
||||
"Cheatsheet": "速查表",
|
||||
"Example": "范例",
|
||||
"Syntax": "语法",
|
||||
"Header": "标题",
|
||||
"Unordered List": "无序清单",
|
||||
"Ordered List": "有序清单",
|
||||
"Todo List": "待办事项",
|
||||
"Unordered List": "无序列表",
|
||||
"Ordered List": "有序列表",
|
||||
"Todo List": "清单",
|
||||
"Blockquote": "引用",
|
||||
"Bold font": "粗体",
|
||||
"Italics font": "斜体",
|
||||
"Strikethrough": "删除线",
|
||||
"Inserted text": "插入文字",
|
||||
"Marked text": "标记文字",
|
||||
"Inserted text": "下划线文字",
|
||||
"Marked text": "高亮文字",
|
||||
"Link": "链接",
|
||||
"Image": "图片",
|
||||
"Code": "代码",
|
||||
"Externals": "外部",
|
||||
"This is a alert area.": "这是警告区块",
|
||||
"Externals": "外部扩展",
|
||||
"This is a alert area.": "这是一个警告区块。",
|
||||
"Revert": "还原",
|
||||
"Import from clipboard": "从剪贴板导入",
|
||||
"Paste your markdown or webpage here...": "在这里贴上 Markdown 或是网页内容...",
|
||||
"Paste your markdown or webpage here...": "在这里粘贴 Markdown 或网页内容...",
|
||||
"Clear": "清除",
|
||||
"This note is locked": "此份笔记已被锁定",
|
||||
"Sorry, only owner can edit this note.": "抱歉,只有拥有者可以编辑此笔记",
|
||||
"This note is locked": "这篇笔记已被锁定",
|
||||
"Sorry, only owner can edit this note.": "抱歉,只有所有者可以编辑这篇笔记。",
|
||||
"OK": "好的",
|
||||
"Reach the limit": "到达上限",
|
||||
"Sorry, you've reached the max length this note can be.": "抱歉,您已使用到此份笔记可用的最大长度",
|
||||
"Please reduce the content or divide it to more notes, thank you!": "请减少内容或是将内容切成更多笔记,谢谢!",
|
||||
"Reach the limit": "达到上限",
|
||||
"Sorry, you've reached the max length this note can be.": "抱歉,您的这篇笔记已达到可用的最大长度。",
|
||||
"Please reduce the content or divide it to more notes, thank you!": "请减少笔记的内容。",
|
||||
"Import from Gist": "从 Gist 导入",
|
||||
"Paste your gist url here...": "在这里贴上 gist 网址...",
|
||||
"Paste your gist url here...": "在这里粘贴 Gist 网址...",
|
||||
"Import from Snippet": "从 Snippet 导入",
|
||||
"Select From Available Projects": "从可用的项目中选择",
|
||||
"Select From Available Snippets": "从可用的 Snippets 中选择",
|
||||
"OR": "或是",
|
||||
"Select From Available Snippets": "从可用的 Snippet 中选择",
|
||||
"OR": "或",
|
||||
"Export to Snippet": "导出到 Snippet",
|
||||
"Select Visibility Level": "选择可见层级",
|
||||
"Night Theme": "夜间主题",
|
||||
"Follow us on %s and %s.": "在 %s 和 %s 上关注我们",
|
||||
"Privacy": "隐私政策",
|
||||
"Privacy": "隐私",
|
||||
"Terms of Use": "使用条款",
|
||||
"Do you really want to delete your user account?": "你确定真的想要删除帐户?",
|
||||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "我们将会删除你的帐户、你所拥有的笔记、以及你在别人笔记里的作者纪录。",
|
||||
"Do you really want to delete your user account?": "您确定要删除帐户吗?",
|
||||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "您的帐户、您所拥有的笔记、他人笔记中对您帐户的引用都将被删除。",
|
||||
"Delete user": "删除帐户",
|
||||
"Export user data": "汇出使用者资料",
|
||||
"Help us translating on %s": "来 %s 帮我们翻译",
|
||||
"Source Code": "源码"
|
||||
"Export user data": "导出用户数据",
|
||||
"Help us translating on %s": "在 %s 上帮我们翻译",
|
||||
"Source Code": "源代码",
|
||||
"Register": "注册",
|
||||
"Powered by %s": "由 %s 驱动",
|
||||
"Help us translating": "帮助我们翻译",
|
||||
"Join the community": "加入社区"
|
||||
}
|
|
@ -114,6 +114,8 @@
|
|||
"Export user data": "匯出使用者資料",
|
||||
"Help us translating on %s": "來 %s 幫我們翻譯",
|
||||
"Source Code": "原始碼",
|
||||
"Powered by %s": "Powered by %s",
|
||||
"Register": "註冊"
|
||||
"Register": "註冊",
|
||||
"Powered by %s": "由 %s 強力驅動",
|
||||
"Help us translating": "幫助我們改進翻譯",
|
||||
"Join the community": "加入社群"
|
||||
}
|
|
@ -38,6 +38,7 @@
|
|||
"diff-match-patch": "git+https://github.com/hackmdio/diff-match-patch.git",
|
||||
"ejs": "^2.5.5",
|
||||
"emojify.js": "~1.1.0",
|
||||
"escape-html": "^1.0.3",
|
||||
"express": ">=4.14",
|
||||
"express-session": "^1.14.2",
|
||||
"file-saver": "^1.3.3",
|
||||
|
@ -46,7 +47,7 @@
|
|||
"formidable": "^1.0.17",
|
||||
"gist-embed": "~2.6.0",
|
||||
"graceful-fs": "^4.1.11",
|
||||
"handlebars": "^4.0.13",
|
||||
"handlebars": "^4.1.2",
|
||||
"helmet": "^3.13.0",
|
||||
"highlight.js": "~9.12.0",
|
||||
"i18n": "^0.8.3",
|
||||
|
@ -57,7 +58,7 @@
|
|||
"jquery-ui": "^1.12.1",
|
||||
"js-cookie": "^2.1.3",
|
||||
"js-sequence-diagrams": "git+https://github.com/codimd/js-sequence-diagrams.git",
|
||||
"js-url": "^2.3.0",
|
||||
"wurl": "^2.5.3",
|
||||
"js-yaml": "^3.13.1",
|
||||
"jsdom-nogyp": "^0.8.3",
|
||||
"keymaster": "^1.6.2",
|
||||
|
@ -82,7 +83,7 @@
|
|||
"mathjax": "~2.7.0",
|
||||
"mattermost": "^3.4.0",
|
||||
"mermaid": "~7.1.0",
|
||||
"meta-marked": "^0.4.2",
|
||||
"meta-marked": "git+https://github.com/codimd/meta-marked#semver:^0.4.2",
|
||||
"method-override": "^2.3.7",
|
||||
"minimist": "^1.2.0",
|
||||
"minio": "^6.0.0",
|
||||
|
|
|
@ -15,6 +15,7 @@ import hljs from 'highlight.js'
|
|||
import PDFObject from 'pdfobject'
|
||||
import S from 'string'
|
||||
import { saveAs } from 'file-saver'
|
||||
import escapeHTML from 'escape-html'
|
||||
|
||||
require('./lib/common/login')
|
||||
require('../vendor/md-toc')
|
||||
|
@ -323,7 +324,7 @@ export function finishView (view) {
|
|||
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet')
|
||||
} catch (err) {
|
||||
$value.unwrap()
|
||||
$value.parent().append('<div class="alert alert-warning">' + err + '</div>')
|
||||
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
|
||||
console.warn(err)
|
||||
}
|
||||
})
|
||||
|
@ -347,7 +348,7 @@ export function finishView (view) {
|
|||
$value.children().unwrap().unwrap()
|
||||
} catch (err) {
|
||||
$value.unwrap()
|
||||
$value.parent().append('<div class="alert alert-warning">' + err + '</div>')
|
||||
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
|
||||
console.warn(err)
|
||||
}
|
||||
})
|
||||
|
@ -366,7 +367,7 @@ export function finishView (view) {
|
|||
$value.children().unwrap().unwrap()
|
||||
} catch (err) {
|
||||
$value.unwrap()
|
||||
$value.parent().append('<div class="alert alert-warning">' + err + '</div>')
|
||||
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
|
||||
console.warn(err)
|
||||
}
|
||||
})
|
||||
|
@ -388,7 +389,7 @@ export function finishView (view) {
|
|||
}
|
||||
|
||||
$value.unwrap()
|
||||
$value.parent().append('<div class="alert alert-warning">' + errormessage + '</div>')
|
||||
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(errormessage)}</div>`)
|
||||
console.warn(errormessage)
|
||||
}
|
||||
})
|
||||
|
@ -408,7 +409,7 @@ export function finishView (view) {
|
|||
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet')
|
||||
} catch (err) {
|
||||
$value.unwrap()
|
||||
$value.parent().append('<div class="alert alert-warning">' + err + '</div>')
|
||||
$value.parent().append(`<div class="alert alert-warning">${escapeHTML(err)}</div>`)
|
||||
console.warn(err)
|
||||
}
|
||||
})
|
||||
|
@ -568,7 +569,7 @@ export function postProcess (code) {
|
|||
if (warning && warning.length > 0) {
|
||||
warning.text(md.metaError)
|
||||
} else {
|
||||
warning = $('<div id="meta-error" class="alert alert-warning">' + md.metaError + '</div>')
|
||||
warning = $(`<div id="meta-error" class="alert alert-warning">${escapeHTML(md.metaError)}</div>`)
|
||||
result.prepend(warning)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
import store from 'store'
|
||||
import S from 'string'
|
||||
import LZString from 'lz-string'
|
||||
import url from 'wurl'
|
||||
|
||||
import {
|
||||
checkNoteIdValid,
|
||||
|
@ -23,9 +24,9 @@ window.migrateHistoryFromTempCallback = null
|
|||
migrateHistoryFromTemp()
|
||||
|
||||
function migrateHistoryFromTemp () {
|
||||
if (window.url('#tempid')) {
|
||||
if (url('#tempid')) {
|
||||
$.get(`${serverurl}/temp`, {
|
||||
tempid: window.url('#tempid')
|
||||
tempid: url('#tempid')
|
||||
})
|
||||
.done(data => {
|
||||
if (data && data.temp) {
|
||||
|
|
|
@ -17,6 +17,7 @@ import { saveAs } from 'file-saver'
|
|||
import randomColor from 'randomcolor'
|
||||
import store from 'store'
|
||||
import hljs from 'highlight.js'
|
||||
import url from 'wurl'
|
||||
|
||||
import _ from 'lodash'
|
||||
|
||||
|
@ -1373,12 +1374,12 @@ $('#gistImportModalConfirm').click(function () {
|
|||
if (!isValidURL(gisturl)) {
|
||||
showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid URL :(', '', '', false)
|
||||
} else {
|
||||
var hostname = window.url('hostname', gisturl)
|
||||
var hostname = url('hostname', gisturl)
|
||||
if (hostname !== 'gist.github.com') {
|
||||
showMessageModal('<i class="fa fa-github"></i> Import from Gist', 'Not a valid Gist URL :(', '', '', false)
|
||||
} else {
|
||||
ui.spinner.show()
|
||||
$.get('https://api.github.com/gists/' + window.url('-1', gisturl))
|
||||
$.get('https://api.github.com/gists/' + url('-1', gisturl))
|
||||
.done(function (data) {
|
||||
if (data.files) {
|
||||
var contents = ''
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.pagination.js/0.1.1/list.pagination.min.js" integrity="sha256-WwTza96H3BgcQTfEfxX7MFaFc/dZA0QrPRKDRLdFHJo=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.js" integrity="sha256-HzzZFiY4t0PIv02Tm8/R3CVvLpcjHhO1z/YAUCp4oQ4=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-url/2.3.0/url.min.js" integrity="sha256-HOZJz4x+1mn1Si84WT5XKXPtOlTytmZLnMb6n1v4+5Q=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.8/validator.min.js" integrity="sha256-LHeY7YoYJ0SSXbCx7sR14Pqna+52moaH3bhv0Mjzd/M=" crossorigin="anonymous" defer></script>
|
||||
<%- include ../build/cover-scripts %>
|
||||
<% } else { %>
|
||||
|
|
|
@ -15,11 +15,13 @@
|
|||
<h3 class="panel-title"><%= __('Contacts') %></h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<a href="https://github.com/codimd/server/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
|
||||
<a href="https://community.codimd.org" target="_blank"><i class="fa fa-users fa-fw"></i> <%= __('Join the community') %></a>
|
||||
<br>
|
||||
<a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank"><i class="fa fa-hashtag fa-fw"></i> <%= __('Meet us on %s', 'Matrix') %></a>
|
||||
<br>
|
||||
<a href="https://translate.codimd.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating on %s', 'POEditor') %></a>
|
||||
<a href="https://github.com/codimd/server/issues" target="_blank"><i class="fa fa-tag fa-fw"></i> <%= __('Report an issue') %></a>
|
||||
<br>
|
||||
<a href="https://translate.codimd.org" target="_blank"><i class="fa fa-language fa-fw"></i> <%= __('Help us translating') %></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
|
|
|
@ -195,13 +195,11 @@ module.exports = {
|
|||
'bootstrap-validator',
|
||||
'expose-loader?select2!select2',
|
||||
'expose-loader?moment!moment',
|
||||
'script-loader!js-url',
|
||||
path.join(__dirname, 'public/js/cover.js')
|
||||
],
|
||||
index: [
|
||||
'babel-polyfill',
|
||||
'script-loader!jquery-ui-resizable',
|
||||
'script-loader!js-url',
|
||||
'script-loader!Idle.Js',
|
||||
'expose-loader?LZString!lz-string',
|
||||
'script-loader!codemirror',
|
||||
|
@ -248,7 +246,6 @@ module.exports = {
|
|||
'expose-loader?jsyaml!js-yaml',
|
||||
'script-loader!mermaid',
|
||||
'expose-loader?moment!moment',
|
||||
'script-loader!js-url',
|
||||
'script-loader!handlebars',
|
||||
'expose-loader?hljs!highlight.js',
|
||||
'expose-loader?emojify!emojify.js',
|
||||
|
|
38
yarn.lock
38
yarn.lock
|
@ -510,7 +510,7 @@ are-we-there-yet@~1.1.2:
|
|||
delegates "^1.0.0"
|
||||
readable-stream "^2.0.6"
|
||||
|
||||
argparse@^1.0.2, argparse@^1.0.7:
|
||||
argparse@^1.0.7:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
|
||||
|
@ -3363,7 +3363,7 @@ es6-weak-map@^2.0.2:
|
|||
es6-iterator "^2.0.1"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
escape-html@~1.0.3:
|
||||
escape-html@^1.0.3, escape-html@~1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
|
||||
|
@ -3521,11 +3521,6 @@ espree@^5.0.1:
|
|||
acorn-jsx "^5.0.0"
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
|
||||
esprima@^2.6.0:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
|
||||
integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
|
||||
|
||||
esprima@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
|
||||
|
@ -5608,7 +5603,7 @@ js-url@^2.3.0:
|
|||
grunt-contrib-qunit ""
|
||||
grunt-contrib-uglify ""
|
||||
|
||||
js-yaml@^3.13.0, js-yaml@^3.13.1:
|
||||
js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@~3.13.1:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||
|
@ -5616,14 +5611,6 @@ js-yaml@^3.13.0, js-yaml@^3.13.1:
|
|||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
js-yaml@~3.5.5:
|
||||
version "3.5.5"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe"
|
||||
integrity sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=
|
||||
dependencies:
|
||||
argparse "^1.0.2"
|
||||
esprima "^2.6.0"
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
|
@ -6406,10 +6393,10 @@ markdown-pdf@^9.0.0:
|
|||
through2 "^2.0.0"
|
||||
tmp "0.0.33"
|
||||
|
||||
marked@~0.3.6:
|
||||
version "0.3.19"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
|
||||
integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==
|
||||
marked@~0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.2.tgz#c574be8b545a8b48641456ca1dbe0e37b6dccc1a"
|
||||
integrity sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA==
|
||||
|
||||
math-interval-parser@^1.1.0:
|
||||
version "1.1.0"
|
||||
|
@ -6543,13 +6530,12 @@ messageformat@^0.3.1:
|
|||
nopt "~3.0.6"
|
||||
watchr "~2.4.13"
|
||||
|
||||
meta-marked@^0.4.2:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/meta-marked/-/meta-marked-0.4.2.tgz#4a1fae344f53d7040aacabb723e2f432a37455f8"
|
||||
integrity sha1-Sh+uNE9T1wQKrKu3I+L0MqN0Vfg=
|
||||
"meta-marked@git+https://github.com/codimd/meta-marked#semver:^0.4.2":
|
||||
version "0.4.4"
|
||||
resolved "git+https://github.com/codimd/meta-marked#04fd9775b38566e41b71e3e63bd78717d3eb4445"
|
||||
dependencies:
|
||||
js-yaml "~3.5.5"
|
||||
marked "~0.3.6"
|
||||
js-yaml "~3.13.1"
|
||||
marked "~0.6.2"
|
||||
|
||||
method-override@^2.3.7:
|
||||
version "2.3.10"
|
||||
|
|
Loading…
Reference in a new issue