mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-05-22 22:59:58 +08:00
Added support for changing the draw.io instance URL
- Allowed DRAWIO env option to be passed as URL to point to instance. - Updated tests to check URL gets passed to pages correctly. - Update default URL to be the default theme. For #826
This commit is contained in:
@ -411,17 +411,23 @@ class MarkdownEditor {
|
||||
});
|
||||
}
|
||||
|
||||
getDrawioUrl() {
|
||||
const drawioUrlElem = document.querySelector('[drawio-url]');
|
||||
return drawioUrlElem ? drawioUrlElem.getAttribute('drawio-url') : false;
|
||||
}
|
||||
|
||||
// Show draw.io if enabled and handle save.
|
||||
actionStartDrawing() {
|
||||
if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true') return;
|
||||
let cursorPos = this.cm.getCursor('from');
|
||||
const url = this.getDrawioUrl();
|
||||
if (!url) return;
|
||||
|
||||
DrawIO.show(() => {
|
||||
const cursorPos = this.cm.getCursor('from');
|
||||
|
||||
DrawIO.show(url,() => {
|
||||
return Promise.resolve('');
|
||||
}, (pngData) => {
|
||||
// let id = "image-" + Math.random().toString(16).slice(2);
|
||||
// let loadingImage = window.baseUrl('/loading.gif');
|
||||
let data = {
|
||||
|
||||
const data = {
|
||||
image: pngData,
|
||||
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
|
||||
};
|
||||
@ -445,15 +451,15 @@ class MarkdownEditor {
|
||||
|
||||
// Show draw.io if enabled and handle save.
|
||||
actionEditDrawing(imgContainer) {
|
||||
const drawingDisabled = document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true';
|
||||
if (drawingDisabled) {
|
||||
const drawioUrl = this.getDrawioUrl();
|
||||
if (!drawioUrl) {
|
||||
return;
|
||||
}
|
||||
|
||||
const cursorPos = this.cm.getCursor('from');
|
||||
const drawingId = imgContainer.getAttribute('drawio-diagram');
|
||||
|
||||
DrawIO.show(() => {
|
||||
DrawIO.show(drawioUrl, () => {
|
||||
return DrawIO.load(drawingId);
|
||||
}, (pngData) => {
|
||||
|
||||
|
@ -238,7 +238,7 @@ function codePlugin() {
|
||||
});
|
||||
}
|
||||
|
||||
function drawIoPlugin() {
|
||||
function drawIoPlugin(drawioUrl) {
|
||||
|
||||
let pageEditor = null;
|
||||
let currentNode = null;
|
||||
@ -266,7 +266,7 @@ function drawIoPlugin() {
|
||||
function showDrawingEditor(mceEditor, selectedNode = null) {
|
||||
pageEditor = mceEditor;
|
||||
currentNode = selectedNode;
|
||||
DrawIO.show(drawingInit, updateContent);
|
||||
DrawIO.show(drawioUrl, drawingInit, updateContent);
|
||||
}
|
||||
|
||||
async function updateContent(pngData) {
|
||||
@ -423,10 +423,14 @@ class WysiwygEditor {
|
||||
loadPlugins() {
|
||||
codePlugin();
|
||||
customHrPlugin();
|
||||
if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') === 'true') {
|
||||
drawIoPlugin();
|
||||
|
||||
const drawioUrlElem = document.querySelector('[drawio-url]');
|
||||
if (drawioUrlElem) {
|
||||
const url = drawioUrlElem.getAttribute('drawio-url');
|
||||
drawIoPlugin(url);
|
||||
this.plugins += ' drawio';
|
||||
}
|
||||
|
||||
if (this.textDirection === 'rtl') {
|
||||
this.plugins += ' directionality'
|
||||
}
|
||||
|
@ -1,22 +1,21 @@
|
||||
|
||||
const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json';
|
||||
let iFrame = null;
|
||||
|
||||
let onInit, onSave;
|
||||
|
||||
/**
|
||||
* Show the draw.io editor.
|
||||
* @param onInitCallback - Must return a promise with the xml to load for the editor.
|
||||
* @param onSaveCallback - Is called with the drawing data on save.
|
||||
* @param {String} drawioUrl
|
||||
* @param {Function} onInitCallback - Must return a promise with the xml to load for the editor.
|
||||
* @param {Function} onSaveCallback - Is called with the drawing data on save.
|
||||
*/
|
||||
function show(onInitCallback, onSaveCallback) {
|
||||
function show(drawioUrl, onInitCallback, onSaveCallback) {
|
||||
onInit = onInitCallback;
|
||||
onSave = onSaveCallback;
|
||||
|
||||
iFrame = document.createElement('iframe');
|
||||
iFrame.setAttribute('frameborder', '0');
|
||||
window.addEventListener('message', drawReceive);
|
||||
iFrame.setAttribute('src', drawIoUrl);
|
||||
iFrame.setAttribute('src', drawioUrl);
|
||||
iFrame.setAttribute('class', 'fullscreen');
|
||||
iFrame.style.backgroundColor = '#FFFFFF';
|
||||
document.body.appendChild(iFrame);
|
||||
|
Reference in New Issue
Block a user