diff --git a/xwiki-platform-core/xwiki-platform-ckeditor/xwiki-platform-ckeditor-plugins/src/main/webjar/xwiki-realtime/plugin.js b/xwiki-platform-core/xwiki-platform-ckeditor/xwiki-platform-ckeditor-plugins/src/main/webjar/xwiki-realtime/plugin.js index 06144a1ab726ba850b0da969ccdb4f8509c2f4b0..8d8c87939a12096662d2d7ea762fe049cce6599d 100644 --- a/xwiki-platform-core/xwiki-platform-ckeditor/xwiki-platform-ckeditor-plugins/src/main/webjar/xwiki-realtime/plugin.js +++ b/xwiki-platform-core/xwiki-platform-ckeditor/xwiki-platform-ckeditor-plugins/src/main/webjar/xwiki-realtime/plugin.js @@ -127,7 +127,7 @@ field: editor.name, // This is used to generate the WYSIWYG editor URL so we need to take into account if we are in view mode // (i.e. in-place editing) or in edit mode (standalone editing). - href: window.XWiki?.contextaction === 'view' ? '&force=1#edit' : '&editor=wysiwyg&force=1', + href: window.XWiki?.contextaction === 'view' ? '&force=1' : '&editor=wysiwyg&force=1', name: 'WYSIWYG', compatible: ['wysiwyg', 'wiki'] }; diff --git a/xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/loader.js b/xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/loader.js index 15480110359f13d1ccd45a63143c5135ec11c664..f41a68a7e249e0a22c9f630778cc471a121a6202 100644 --- a/xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/loader.js +++ b/xwiki-platform-core/xwiki-platform-realtime/xwiki-platform-realtime-webjar/src/main/webjar/loader.js @@ -49,16 +49,12 @@ define('xwiki-realtime-loader', [ }, getRTEditorURL = module.getEditorURL = function(href, info) { - href = href.replace(/\?(.*)$/, function (all, args) { - return '?' + args.split('&').filter( - arg => ['editor', 'section', 'force', 'realtime'].indexOf(arg.split('=', 1)[0]) < 0 - ).join('&'); - }); - if (href.indexOf('?') < 0) { - href += '?'; - } - href = href + info.href; - return href; + const currentURL = new URL(href); + const baseURL = new URL("?", currentURL).toString(); + const params = new URLSearchParams(currentURL.search); + ['editor', 'section', 'force', 'realtime'].forEach(param => params.delete(param)); + const hash = info.href.includes('#') ? '' : currentURL.hash; + return baseURL + params.toString() + info.href + hash; }, allRt = {