123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- // ====================================
- // Markdown Editor
- // ====================================
- if($('#mk-editor').length === 1) {
- let mdeModalOpenState = false;
- let mdeCurrentEditor = null;
- Vue.filter('filesize', (v) => {
- return _.toUpper(filesize(v));
- });
- //=include editor-image.js
- //=include editor-file.js
- //=include editor-video.js
- //=include editor-codeblock.js
- var mde = new SimpleMDE({
- autofocus: true,
- autoDownloadFontAwesome: false,
- element: $("#mk-editor").get(0),
- placeholder: 'Enter Markdown formatted content here...',
- spellChecker: false,
- status: false,
- toolbar: [{
- name: "bold",
- action: SimpleMDE.toggleBold,
- className: "icon-bold",
- title: "Bold",
- },
- {
- name: "italic",
- action: SimpleMDE.toggleItalic,
- className: "icon-italic",
- title: "Italic",
- },
- {
- name: "strikethrough",
- action: SimpleMDE.toggleStrikethrough,
- className: "icon-strikethrough",
- title: "Strikethrough",
- },
- '|',
- {
- name: "heading-1",
- action: SimpleMDE.toggleHeading1,
- className: "icon-header fa-header-x fa-header-1",
- title: "Big Heading",
- },
- {
- name: "heading-2",
- action: SimpleMDE.toggleHeading2,
- className: "icon-header fa-header-x fa-header-2",
- title: "Medium Heading",
- },
- {
- name: "heading-3",
- action: SimpleMDE.toggleHeading3,
- className: "icon-header fa-header-x fa-header-3",
- title: "Small Heading",
- },
- {
- name: "quote",
- action: SimpleMDE.toggleBlockquote,
- className: "icon-quote-left",
- title: "Quote",
- },
- '|',
- {
- name: "unordered-list",
- action: SimpleMDE.toggleUnorderedList,
- className: "icon-th-list",
- title: "Bullet List",
- },
- {
- name: "ordered-list",
- action: SimpleMDE.toggleOrderedList,
- className: "icon-list-ol",
- title: "Numbered List",
- },
- '|',
- {
- name: "link",
- action: (editor) => {
- /*if(!mdeModalOpenState) {
- mdeModalOpenState = true;
- $('#modal-editor-link').slideToggle();
- }*/
- },
- className: "icon-link2",
- title: "Insert Link",
- },
- {
- name: "image",
- action: (editor) => {
- if(!mdeModalOpenState) {
- vueImage.open();
- }
- },
- className: "icon-image",
- title: "Insert Image",
- },
- {
- name: "file",
- action: (editor) => {
- if(!mdeModalOpenState) {
- vueFile.open();
- }
- },
- className: "icon-paper",
- title: "Insert File",
- },
- {
- name: "video",
- action: (editor) => {
- if(!mdeModalOpenState) {
- vueVideo.open();
- }
- },
- className: "icon-video-camera2",
- title: "Insert Video Player",
- },
- '|',
- {
- name: "inline-code",
- action: (editor) => {
- if(!editor.codemirror.doc.somethingSelected()) {
- return alerts.pushError('Invalid selection','You must select at least 1 character first.');
- }
- let curSel = editor.codemirror.doc.getSelections();
- curSel = _.map(curSel, (s) => {
- return '`' + s + '`';
- });
- editor.codemirror.doc.replaceSelections(curSel);
- },
- className: "icon-terminal",
- title: "Inline Code",
- },
- {
- name: "code-block",
- action: (editor) => {
- if(!mdeModalOpenState) {
- mdeModalOpenState = true;
- if(mde.codemirror.doc.somethingSelected()) {
- vueCodeBlock.initContent = mde.codemirror.doc.getSelection();
- }
- vueCodeBlock.open();
- }
- },
- className: "icon-code",
- title: "Code Block",
- },
- '|',
- {
- name: "table",
- action: (editor) => {
- //todo
- },
- className: "icon-table",
- title: "Insert Table",
- },
- {
- name: "horizontal-rule",
- action: SimpleMDE.drawHorizontalRule,
- className: "icon-minus2",
- title: "Horizontal Rule",
- }
- ],
- shortcuts: {
- "toggleBlockquote": null,
- "toggleFullScreen": null
- }
- });
- //-> Save
- let saveCurrentDocument = (ev) => {
- $.ajax(window.location.href, {
- data: {
- markdown: mde.value()
- },
- dataType: 'json',
- method: 'PUT'
- }).then((rData, rStatus, rXHR) => {
- if(rData.ok) {
- window.location.assign('/' + pageEntryPath);
- } else {
- alerts.pushError('Something went wrong', rData.error);
- }
- }, (rXHR, rStatus, err) => {
- alerts.pushError('Something went wrong', 'Save operation failed.');
- });
- };
- $('.btn-edit-save, .btn-create-save').on('click', (ev) => {
- saveCurrentDocument(ev);
- });
- $(window).bind('keydown', (ev) => {
- if (ev.ctrlKey || ev.metaKey) {
- switch (String.fromCharCode(ev.which).toLowerCase()) {
- case 's':
- ev.preventDefault();
- saveCurrentDocument(ev);
- break;
- }
- }
- });
- }
|