let action = button.getAttribute('data-action');
if (action === 'insertImage') this.actionInsertImage();
if (action === 'insertLink') this.actionShowLinkSelector();
- if (action === 'insertDrawing' && event.ctrlKey) {
+ if (action === 'insertDrawing' && (event.ctrlKey || event.metaKey)) {
this.actionShowImageManager();
return;
}
if (action === 'insertDrawing') this.actionStartDrawing();
});
+ // Mobile section toggling
+ this.elem.addEventListener('click', event => {
+ const toolbarLabel = event.target.closest('.editor-toolbar-label');
+ if (!toolbarLabel) return;
+
+ const currentActiveSections = this.elem.querySelectorAll('.markdown-editor-wrap');
+ for (let activeElem of currentActiveSections) {
+ activeElem.classList.remove('active');
+ }
+
+ toolbarLabel.closest('.markdown-editor-wrap').classList.add('active');
+ });
+
window.$events.listen('editor-markdown-update', value => {
this.cm.setValue(value);
this.updateAndRender();
// Handle image paste
cm.on('paste', (cm, event) => {
- if (!event.clipboardData || !event.clipboardData.items) return;
- for (let i = 0; i < event.clipboardData.items.length; i++) {
- uploadImage(event.clipboardData.items[i].getAsFile());
+ const clipboardItems = event.clipboardData.items;
+ if (!event.clipboardData || !clipboardItems) return;
+
+ // Don't handle if clipboard includes text content
+ for (let clipboardItem of clipboardItems) {
+ if (clipboardItem.type.includes('text/')) {
+ return;
+ }
+ }
+
+ for (let clipboardItem of clipboardItems) {
+ if (clipboardItem.type.includes("image")) {
+ uploadImage(clipboardItem.getAsFile());
+ }
}
});
formData.append('file', file, remoteFilename);
formData.append('uploaded_to', context.pageId);
- window.$http.post('/images/gallery/upload', formData).then(resp => {
+ window.$http.post('/images/gallery', formData).then(resp => {
const newContent = `[](${resp.data.url})`;
replaceContent(placeHolderText, newContent);
}).catch(err => {
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
};
- window.$http.post(window.baseUrl('/images/drawing/upload'), data).then(resp => {
+ window.$http.post(window.baseUrl('/images/drawio'), data).then(resp => {
this.insertDrawing(resp.data, cursorPos);
DrawIO.close();
}).catch(err => {
const drawingId = imgContainer.getAttribute('drawio-diagram');
DrawIO.show(() => {
- return window.$http.get(window.baseUrl(`/images/base64/${drawingId}`)).then(resp => {
- return `data:image/png;base64,${resp.data.content}`;
- });
+ return DrawIO.load(drawingId);
}, (pngData) => {
let data = {
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
};
- window.$http.post(window.baseUrl(`/images/drawing/upload`), data).then(resp => {
+ window.$http.post(window.baseUrl(`/images/drawio`), data).then(resp => {
let newText = `<div drawio-diagram="${resp.data.id}"><img src="${resp.data.url}"></div>`;
let newContent = this.cm.getValue().split('\n').map(line => {
if (line.indexOf(`drawio-diagram="${drawingId}"`) !== -1) {