From 1c288dbd31bf0d0973ae4ca63ee495fc0a68de22 Mon Sep 17 00:00:00 2001 From: Antonio17 Date: Fri, 31 May 2024 08:39:23 -0700 Subject: [PATCH 1/2] Update etherpad-editor.js --- src/etherpad-editor.js | 130 ++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 54 deletions(-) diff --git a/src/etherpad-editor.js b/src/etherpad-editor.js index c0ba3fb..88acfef 100644 --- a/src/etherpad-editor.js +++ b/src/etherpad-editor.js @@ -1,21 +1,15 @@ import jQuery from 'jquery'; import { collabuml } from './config'; - -export const getText = (callback) => { - jQuery.ajax({ - 'url': collabuml.host + '/api/1/getText?apikey=' + collabuml.apikey + '&padID=' + collabuml.padId + '&jsonp=?', - 'type': 'GET', - 'dataType': "jsonp", - 'success': function (response) { - callback(response.data.text); - } - }); -}; +const plantumlEncoder = require('plantuml-encoder') export const renderPad = (selector, padId) => { jQuery(selector).pad({ 'padId': padId, 'showChat': 'false' }); }; +export const getText = (selector, padId, getContents, callback) => { + jQuery(selector).pad({ 'padId': padId, 'getContents': getContents, 'callback': callback}); +}; + (function (jQuery) { jQuery.fn.pad = function (options) { var settings = { @@ -47,60 +41,88 @@ export const renderPad = (selector, padId) => { var useValue = $self[0].tagName.toLowerCase() == 'textarea'; var selfId = $self.attr('id'); var epframeId = 'epframe' + selfId; - // This writes a new frame if required - if (options) { - jQuery.extend(settings, options); - } - var pluginParams = ''; - for (var option in settings.plugins) { - pluginParams += '&' + option + '=' + settings.plugins[option] - } + if (!options.getContents){ + if (options) { + jQuery.extend(settings, options); + } - var iFrameLink = ''; + var pluginParams = ''; + for (var option in settings.plugins) { + pluginParams += '&' + option + '=' + settings.plugins[option] + } + var iFrameLink = ''; - var $iFrameLink = jQuery(iFrameLink); + var $iFrameLink = jQuery(iFrameLink); - if (useValue) { - var $toggleLink = jQuery('' + settings.toggleTextOn + '').click(function () { + if (useValue) { + var $toggleLink = jQuery('' + settings.toggleTextOn + '').click(function () { var $this = jQuery(this); $this.toggleClass('active'); if ($this.hasClass('active')) $this.text(settings.toggleTextOff); - $self.pad({ getContents: true }); - return false; - }); - $self - .hide() - .after($toggleLink) - .after($iFrameLink) - ; + $self.pad({ getContents: true }); + return false; + }); + $self + .hide() + .after($toggleLink) + .after($iFrameLink); + } + else { + $self.html(iFrameLink); + } } else { - $self.html(iFrameLink); - } + var frameUrl = jQuery('#'+ epframeId).attr('src').split('?')[0]; + var contentsUrl = frameUrl + "/export/html"; + var target = jQuery(options.getContents); + jQuery.get(contentsUrl, function(data) { + var bodyContentRegex = /]*>([\s\S]+)<\/body>/i; + var bodyContentMatch = data.match(bodyContentRegex); + var bodyContent = bodyContentMatch ? bodyContentMatch[1] : ''; + + const toText = function (text) { + var br = /
/g; + text = text.replace(br, '\n'); + var gt = />/g; + text = text.replace(gt, '>'); + var lt = /</g; + text = text.replace(lt, '<'); + var amp = /&/g; + text = text.replace(amp, '&'); + var quot = /"/g; + text = text.replace(quot, '"'); + var nbsp = / /g; + text = text.replace(nbsp, ''); + return text; + } + var text = toText(bodyContent) + options.callback(text) + }); + } return $self; }; })(jQuery); From 1f92a2d827007d4b4d6d8110f1a45c90dc9e377a Mon Sep 17 00:00:00 2001 From: Antonio17 Date: Fri, 31 May 2024 08:40:06 -0700 Subject: [PATCH 2/2] Update plantuml-rendered.js --- src/plantuml-rendered.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plantuml-rendered.js b/src/plantuml-rendered.js index 9c1715a..f0b5937 100644 --- a/src/plantuml-rendered.js +++ b/src/plantuml-rendered.js @@ -1,10 +1,11 @@ import jQuery from 'jquery'; +import { collabuml } from './config'; const plantumlEncoder = require('plantuml-encoder') function renderDiagram(ms, getText) { scheduledRendering(ms, getText); - getText(function (text) { + getText('#etherpad-input', collabuml.padId, '#diagram-view', function (text) { var encoded = plantumlEncoder.encode(text); var div = jQuery('#diagram-view') var sourceUrl = "https://www.plantuml.com/plantuml/img/" + encoded;