From d9e6f3d52ae5e98305b950f86bcda5a92c220222 Mon Sep 17 00:00:00 2001 From: sunhao Date: Wed, 5 Mar 2025 10:14:56 +0800 Subject: [PATCH] * [bug #59286] save form data from doc basic info modal. --- lib/zin/wg/docapp/js/v1.js | 45 +++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/lib/zin/wg/docapp/js/v1.js b/lib/zin/wg/docapp/js/v1.js index 75ee362a41..5f32e5ed40 100644 --- a/lib/zin/wg/docapp/js/v1.js +++ b/lib/zin/wg/docapp/js/v1.js @@ -6,6 +6,7 @@ let currentUser = null; let currentSpaceType = ''; let userPrivs = {}; let docLangData = null; +let docBasicModal = {}; const savingDocData = {}; window.setZentaoSlashMenu = function(menus, title, vision) @@ -325,6 +326,11 @@ function handleSwitchView(mode, location, info) if(url === lastAppUrl) return; if(lastAppUrl && !$.apps.getAppUrl().endsWith(url)) $.apps.updateAppUrl(url, info.title ? (info.title + documentTitleSuffix) : originalDocumentTitle); lastAppUrl = url; + if(docBasicModal.current) + { + docBasicModal.current.destroy(); + docBasicModal = {}; + } } function showDocBasicModal(docID, isDraft) @@ -335,23 +341,42 @@ function showDocBasicModal(docID, isDraft) const libID = docApp.libID; const moduleID = docApp.moduleID; const url = $.createLink('doc', 'setDocBasic', `objectType=${spaceType}&objectID=${spaceID}&libID=${libID}&moduleID=${moduleID}&docID=${docID || 0}&isDraft=${isDraft ? 'yes' : 'no'}`); - const modal = {current: null}; - zui.Modal.open( + + console.log('showDocBasicModal', {docBasicModal: {...docBasicModal}, docID}); + if(docBasicModal.doc === docID && docBasicModal.current) { - ref: modal, - url: url, - request: { - error: error => { - if(modal.current) modal.current.hide(); - showSaveFailedAlert(error); + docBasicModal.current.show(); + } + else + { + if(docBasicModal.current) docBasicModal.current.destroy(); + docBasicModal.doc = docID; + zui.Modal.open( + { + ref : docBasicModal, + url : url, + destroyOnHide: false, + cache : true, + request: { + error: error => { + if(docBasicModal.current) docBasicModal.current.hide(); + showSaveFailedAlert(error); + } + }, + onHidden: () => { + if(!docBasicModal.keepOnHide) docBasicModal.current.destroy(); + }, + $onDestroy: () => { + if(docBasicModal.current) docBasicModal = {}; } - } - }); + }); + } return new Promise((resolve) => {window.docBasicModalResolver = resolve;}); } window.beforeSetDocBasicInfo = function(_, form) { + docBasicModal.keepOnHide = true; if (window.docBasicModalResolver) window.docBasicModalResolver(new FormData(form)); zui.Modal.query('#setDocBasicForm').hide(); return false;