Skip to content

Commit

Permalink
liveedit
Browse files Browse the repository at this point in the history
  • Loading branch information
raikov committed Apr 26, 2024
1 parent 6806f58 commit dba2737
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 18 deletions.
Expand Up @@ -69,18 +69,18 @@ mw.app = new MWUniversalContainer();
};

mw.app.broadcast.on('canvasURL', async (data) => {
console.log(1)



mw.app.broadcast.record('canvasURL', data.url);

const isActive = mw.app.documentFocus.isActive();

if(mw.top().app.canvas.isUrlOpened(data.url) ) {
console.log` 2`

const action = await mw.app.pageAlreadyOpened.handle();
console.log(3)

const action = await mw.app.pageAlreadyOpened.handle(data.url);

if(action) {

} else {
Expand Down
Expand Up @@ -36,15 +36,21 @@ export class LiveEditCanvas extends MicroweberBaseClass {
}
}


if(this.isUrlOpened(url)) {
const action = await mw.app.pageAlreadyOpened.handle();

const action = await mw.app.pageAlreadyOpened.handle(url);

if(action) {

open()
} else {

mw.top().win.location.href = mw.settings.adminUrl;
}

} else{

await open();
}
};
Expand Down Expand Up @@ -99,10 +105,16 @@ export class LiveEditCanvas extends MicroweberBaseClass {
}

async setUrl(url) {
url = url.toString();
await this.#registerURL( url);




this.#canvas.src = url;


url = url.toString();

await this.#registerURL( url);
}

mount(target) {
Expand All @@ -126,23 +138,18 @@ export class LiveEditCanvas extends MicroweberBaseClass {

url = new URL(url);

// url.searchParams.set('editmode', 'iframe');


if(url.host !== top.location.host) {
url = `${mw.settings.site_url}`;
}

// if(url.host !== top.location.host) {
// url = `${mw.settings.site_url}?editmode=iframe`;
// }

// if(url.host !== top.location.host) {
// url = `${mw.settings.site_url}?editmode=iframe`;
// }

this.#canvas = liveEditIframe;




liveEditIframe.frameBorder = 0;
liveEditIframe.id="live-editor-frame";
liveEditIframe.name="live-editor-frame";
Expand All @@ -158,7 +165,6 @@ export class LiveEditCanvas extends MicroweberBaseClass {
window.onbeforeunload = function () {
if(liveEditIframe && liveEditIframe.contentWindow && liveEditIframe.contentWindow.mw
&& liveEditIframe.contentWindow.mw.askusertostay){
// prevent user from leaving the page


return true;
Expand All @@ -175,6 +181,7 @@ export class LiveEditCanvas extends MicroweberBaseClass {


liveEditIframe.addEventListener('load', e => {

mw.spinner({element: target, decorate: true}).remove();

if(liveEditIframe && liveEditIframe.contentWindow && liveEditIframe.contentWindow.mw) {
Expand Down Expand Up @@ -237,6 +244,8 @@ export class LiveEditCanvas extends MicroweberBaseClass {
if(liveEditIframe.contentWindow && liveEditIframe.contentWindow.mw) {
liveEditIframe.contentWindow.mw.isNavigating = false;
}


this.dispatch('liveEditCanvasLoaded', {frame: liveEditIframe, frameWindow: liveEditIframe.contentWindow, frameDocument: liveEditIframe.contentWindow.document});


Expand Down
@@ -0,0 +1,83 @@
export class MWPageAlreadyOpened{
constructor() {

mw.top().app.broadcast.on('refreshFocusedPage', data => {
if(!data.url ) {
return;
}

if(data.url === mw.top().app.canvas.getUrl()) {
if(data.skipIdentity && data.skipIdentity.includes(mw.top().app.broadcast.getIdentity())) {
return;
}
mw.top().app.canvas.refresh();
}
})
mw.top().app.broadcast.on('saveAndGoToAdmin', data => {

if(!data.url ) {
return;
}

if(data.url === mw.top().app.canvas.getUrl() && mw.top().app.documentFocus.isActive()) {
mw.top().app.canvas.refresh();
}
})
mw.top().app.broadcast.on('closePage', data => {
if(!data.url ) {
return;
}

if(data.url === mw.top().app.canvas.getUrl()) {
if(data.skipIdentity && data.skipIdentity.includes(mw.top().app.broadcast.getIdentity())) {
return;
}
mw.top().win.location.href = mw.settings.adminUrl;
}
})
}

async saveAndBack() {

}

async handle(url) {
return new Promise((resolve) => {
const ok = mw.element(`
<button class="btn btn-primary" data-action="save">${mw.lang('Edit here')}</button>
`);
const cancel = mw.element(`<button class="btn">${mw.lang('Cancel')}</button>`);

const dialogContent = `
<div class="alert alert-warning" role="alert">
<div class="d-flex">
<div>
<h4 class="alert-title">${mw.lang('This page is already opened in another tab')}!</h4>
</div>
</div>
</div>
`;

const dlg = mw.dialog({
overlay: true,
content: dialogContent,
footer: [cancel.get(0), ok.get(0)],
id: 'canvasURLAlreadyOpened',
closeButton: false,
title: mw.lang('Warning')
})

ok.on('click', async function(){
dlg.remove();
mw.top().app.broadcast.message('closePage', {url, skipIdentity: [mw.top().app.broadcast.getIdentity()]}); // close the page in the other tab
resolve(true)
});
cancel.on('click', function(){
dlg.remove();
resolve(false);

});
})
}
}
7 changes: 5 additions & 2 deletions userfiles/modules/microweber/api/tools/dialog.js
Expand Up @@ -170,6 +170,7 @@
// skin: 'default'
});


this.id = this.options.id;


Expand Down Expand Up @@ -334,13 +335,15 @@

this.options.root.body.appendChild(this.dialogMain);
this.dialogMain.appendChild(this.dialogHolder);

if (this.options.closeButtonAppendTo) {
mw.$(this.options.closeButtonAppendTo, this.dialogMain).append(this.closeButton)
if (this.options.closeButton !== false) {
mw.$(this.options.closeButtonAppendTo, this.dialogMain).append(this.closeButton)
}
}
else {
if (this.options.closeButton !== false) {
this.dialogHolder.appendChild(this.closeButton);

}
}

Expand Down

0 comments on commit dba2737

Please sign in to comment.