diff options
Diffstat (limited to 'public/js/lib')
-rw-r--r-- | public/js/lib/common/login.js | 32 | ||||
-rw-r--r-- | public/js/lib/editor/index.js | 11 | ||||
-rw-r--r-- | public/js/lib/editor/toolbar.html | 31 | ||||
-rw-r--r-- | public/js/lib/editor/ui-elements.js | 3 | ||||
-rw-r--r-- | public/js/lib/editor/utils.js | 14 | ||||
-rw-r--r-- | public/js/lib/syncscroll.js | 4 |
6 files changed, 54 insertions, 41 deletions
diff --git a/public/js/lib/common/login.js b/public/js/lib/common/login.js index 18cd377d..28e5b470 100644 --- a/public/js/lib/common/login.js +++ b/public/js/lib/common/login.js @@ -60,22 +60,22 @@ export function checkIfAuth (yesCallback, noCallback) { if (checkLoginStateChanged()) checkAuth = false if (!checkAuth || typeof cookieLoginState === 'undefined') { $.get(`${serverurl}/me`) - .done(data => { - if (data && data.status === 'ok') { - profile = data - yesCallback(profile) - setLoginState(true, data.id) - } else { - noCallback() - setLoginState(false) - } - }) - .fail(() => { - noCallback() - }) - .always(() => { - checkAuth = true - }) + .done(data => { + if (data && data.status === 'ok') { + profile = data + yesCallback(profile) + setLoginState(true, data.id) + } else { + noCallback() + setLoginState(false) + } + }) + .fail(() => { + noCallback() + }) + .always(() => { + checkAuth = true + }) } else if (cookieLoginState) { yesCallback(profile) } else { diff --git a/public/js/lib/editor/index.js b/public/js/lib/editor/index.js index f05d01b8..8553caa9 100644 --- a/public/js/lib/editor/index.js +++ b/public/js/lib/editor/index.js @@ -3,6 +3,8 @@ import config from './config' import statusBarTemplate from './statusbar.html' import toolBarTemplate from './toolbar.html' +import '../../../css/ui/toolbar.css' + /* config section */ const isMac = CodeMirror.keyMap.default === CodeMirror.keyMap.macDefault const defaultEditorMode = 'gfm' @@ -138,6 +140,7 @@ export default class Editor { } addToolBar () { + var inlineAttach = inlineAttachment.editors.codemirror4.attach(this.editor) this.toolBar = $(toolBarTemplate) this.toolbarPanel = this.editor.addPanel(this.toolBar[0], { position: 'top' @@ -157,6 +160,7 @@ export default class Editor { var makeTable = $('#makeTable') var makeLine = $('#makeLine') var makeComment = $('#makeComment') + var uploadImage = $('#uploadImage') makeBold.click(() => { utils.wrapTextWith(this.editor, this.editor, '**') @@ -217,6 +221,13 @@ export default class Editor { makeComment.click(() => { utils.insertText(this.editor, '> []') }) + + uploadImage.bind('change', function (e) { + var files = e.target.files || e.dataTransfer.files + e.dataTransfer = {} + e.dataTransfer.files = files + inlineAttach.onDrop(e) + }) } addStatusBar () { diff --git a/public/js/lib/editor/toolbar.html b/public/js/lib/editor/toolbar.html index a2ac476f..dc5b8ad4 100644 --- a/public/js/lib/editor/toolbar.html +++ b/public/js/lib/editor/toolbar.html @@ -1,46 +1,49 @@ <div class="toolbar"> <div class="btn-toolbar" role="toolbar" aria-label="Editor toolbar"> <div class="btn-group" role="group"> - <a id="makeBold" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Bold"> + <a id="makeBold" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Bold"> <i class="fa fa-bold fa-fw"></i> </a> - <a id="makeItalic" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Italic"> + <a id="makeItalic" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Italic"> <i class="fa fa-italic fa-fw"></i> </a> - <a id="makeStrike" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Strikethrough"> + <a id="makeStrike" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Strikethrough"> <i class="fa fa-strikethrough fa-fw"></i> </a> - <a id="makeHeader" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Heading"> + <a id="makeHeader" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Heading"> <i class="fa fa-h1 fa-fw">H</i> </a> - <a id="makeCode" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Code"> + <a id="makeCode" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Code"> <i class="fa fa-code fa-fw"></i> </a> - <a id="makeQuote" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Quote"> + <a id="makeQuote" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Quote"> <i class="fa fa-quote-right fa-fw"></i> </a> - <a id="makeGenericList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="List"> + <a id="makeGenericList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="List"> <i class="fa fa-list fa-fw"></i> </a> - <a id="makeOrderedList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Numbered List"> + <a id="makeOrderedList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Numbered List"> <i class="fa fa-list-ol fa-fw"></i> </a> - <a id="makeCheckList" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Check List"> + <a id="makeCheckList" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Check List"> <i class="fa fa-check-square fa-fw"></i> </a> - <a id="makeLink" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Link"> + <a id="makeLink" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Link"> <i class="fa fa-link fa-fw"></i> </a> - <a id="makeImage" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Image"> + <a id="makeImage" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Image"> <i class="fa fa-image fa-fw"></i> </a> - <a id="makeTable" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Table"> + <a id="uploadImage" class="btn btn-sm btn-file ui-upload-image" title="Upload Image"> + <i class="fa fa-upload fa-fw"></i><input type="file" accept="image/*" name="upload" multiple title="Upload Image"> + </a> + <a id="makeTable" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Table"> <i class="fa fa-table fa-fw"></i> </a> - <a id="makeLine" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Line"> + <a id="makeLine" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Line"> <i class="fa fa-minus fa-fw"></i> </a> - <a id="makeComment" class="btn btn-sm btn-dark text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Comment"> + <a id="makeComment" class="btn btn-sm text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="Comment"> <i class="fa fa-comment fa-fw"></i> </a> </div> diff --git a/public/js/lib/editor/ui-elements.js b/public/js/lib/editor/ui-elements.js index 29a37782..ce19436b 100644 --- a/public/js/lib/editor/ui-elements.js +++ b/public/js/lib/editor/ui-elements.js @@ -35,8 +35,7 @@ export const getUIElements = () => ({ edit: $('.ui-edit'), view: $('.ui-view'), both: $('.ui-both'), - night: $('.ui-night'), - uploadImage: $('.ui-upload-image') + night: $('.ui-night') }, infobar: { lastchange: $('.ui-lastchange'), diff --git a/public/js/lib/editor/utils.js b/public/js/lib/editor/utils.js index 36e5c121..d87c7e41 100644 --- a/public/js/lib/editor/utils.js +++ b/public/js/lib/editor/utils.js @@ -51,7 +51,7 @@ export function insertText (cm, text, cursorEnd = 0) { let cursor = cm.getCursor() cm.replaceSelection(text, cursor, cursor) cm.focus() - cm.setCursor({line: cursor.line, ch: cursor.ch + cursorEnd}) + cm.setCursor({ line: cursor.line, ch: cursor.ch + cursorEnd }) } export function insertLink (cm, isImage) { @@ -80,7 +80,7 @@ export function insertLink (cm, isImage) { cm.setSelections(ranges) } else { cm.replaceRange(symbol + linkEnd, cursor, cursor) - cm.setCursor({line: cursor.line, ch: cursor.ch + symbol.length + linkEnd.length}) + cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length + linkEnd.length }) } } cm.focus() @@ -88,8 +88,8 @@ export function insertLink (cm, isImage) { export function insertHeader (cm) { let cursor = cm.getCursor() - let startOfLine = {line: cursor.line, ch: 0} - let startOfLineText = cm.getRange(startOfLine, {line: cursor.line, ch: 1}) + let startOfLine = { line: cursor.line, ch: 0 } + let startOfLineText = cm.getRange(startOfLine, { line: cursor.line, ch: 1 }) // See if it is already a header if (startOfLineText === '#') { cm.replaceRange('#', startOfLine, startOfLine) @@ -108,14 +108,14 @@ export function insertOnStartOfLines (cm, symbol) { if (!range.empty()) { const from = range.from() const to = range.to() - let selection = cm.getRange({line: from.line, ch: 0}, to) + let selection = cm.getRange({ line: from.line, ch: 0 }, to) selection = selection.replace(/\n/g, '\n' + symbol) selection = symbol + selection cm.replaceRange(selection, from, to) } else { - cm.replaceRange(symbol, {line: cursor.line, ch: 0}, {line: cursor.line, ch: 0}) + cm.replaceRange(symbol, { line: cursor.line, ch: 0 }, { line: cursor.line, ch: 0 }) } } - cm.setCursor({line: cursor.line, ch: cursor.ch + symbol.length}) + cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length }) cm.focus() } diff --git a/public/js/lib/syncscroll.js b/public/js/lib/syncscroll.js index cee317ea..d492fbc9 100644 --- a/public/js/lib/syncscroll.js +++ b/public/js/lib/syncscroll.js @@ -188,7 +188,7 @@ function buildMapInner (callback) { } nonEmptyList.push(0) - // make the first line go top + // make the first line go top _scrollMap[0] = viewTop const parts = markdownArea.find('.part').toArray() @@ -336,7 +336,7 @@ export function syncScrollToView (event, preventAnimate) { const scrollInfo = editor.getScrollInfo() const textHeight = editor.defaultTextHeight() lineNo = Math.floor(scrollInfo.top / textHeight) - // if reach the last line, will start lerp to the bottom + // if reach the last line, will start lerp to the bottom const diffToBottom = (scrollInfo.top + scrollInfo.clientHeight) - (scrollInfo.height - textHeight) if (scrollInfo.height > scrollInfo.clientHeight && diffToBottom > 0) { topDiffPercent = diffToBottom / textHeight |