diff --git a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/IFrameTaskTemplateBean.java b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/IFrameTaskTemplateBean.java index c7b6b99bcd..af864d2565 100644 --- a/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/IFrameTaskTemplateBean.java +++ b/AxonIvyPortal/portal/src/ch/ivy/addon/portal/generic/bean/IFrameTaskTemplateBean.java @@ -54,6 +54,7 @@ public class IFrameTaskTemplateBean extends AbstractTaskTemplateBean implements public static final String PORTAL_GROWL_MESSGE_PARAM = "portalGrowlMessage"; private static final String DEFAULT_TASK_ICON = "si si-task-list-edit"; private static final String TASK_ICON = "taskIcon"; + private static final String TASK_URL = "taskUrl"; private int currentProcessStep; private List processSteps; @@ -74,6 +75,12 @@ public class IFrameTaskTemplateBean extends AbstractTaskTemplateBean implements private Long caseId = null; + public String getTaskUrl() { + return Optional.ofNullable(FacesContext.getCurrentInstance() + .getExternalContext().getRequestParameterMap().get(TASK_URL)) + .orElse(StringUtils.EMPTY); + } + public void useTaskInIFrame() { keepOverridePortalGrowl(); Map requestParamMap = getRequestParameterMap(); diff --git a/AxonIvyPortal/portal/webContent/layouts/restricted/IFrameTaskTemplate.xhtml b/AxonIvyPortal/portal/webContent/layouts/restricted/IFrameTaskTemplate.xhtml index c9cda06739..7b521bc862 100644 --- a/AxonIvyPortal/portal/webContent/layouts/restricted/IFrameTaskTemplate.xhtml +++ b/AxonIvyPortal/portal/webContent/layouts/restricted/IFrameTaskTemplate.xhtml @@ -70,24 +70,24 @@ **2. JavaScript-Based Configuration:** Example: + window.taskName = "Approve Investment"; + window.taskIcon = "si si-bulb"; + window.isHideTaskName = false; + window.caseId = "123456"; + window.isHideCaseInfo = false; + window.currentProcessStep = 0; + window.processSteps = ["Create Investment Request", "Approve Investment Request"]; + // Convert Java List of steps to JSON format if needed: + window.processSteps = #{portalComponentUtilsBean.convertToJSON(data.steps)}; + window.isShowAllSteps = true; + window.processChainDirection = "VERTICAL"; + window.processChainShape = "LINE"; + window.isHideTaskAction = false; + window.isWorkingOnATask = false; + window.announcementInvisible = false; + window.isCardFrame = true; + window.viewName = "TASK_DETAIL"; + --> @@ -113,6 +113,19 @@ + diff --git a/AxonIvyPortal/portal/webContent/resources/js/iframe-task-template.js b/AxonIvyPortal/portal/webContent/resources/js/iframe-task-template.js index 7e32a706de..46a55531bc 100644 --- a/AxonIvyPortal/portal/webContent/resources/js/iframe-task-template.js +++ b/AxonIvyPortal/portal/webContent/resources/js/iframe-task-template.js @@ -1,16 +1,5 @@ var invalidIFrameSrcPath = false; -let taskUrl = new URLSearchParams(window.location.search).get("taskUrl"); -let updateIframeSrc = (newSrc) => { - getPortalIframe().src = newSrc; -} -if (taskUrl){ - if(taskUrl.endsWith('blank')){ - window.history.back(document.referrer); - } - updateIframeSrc(taskUrl) -} -loadIframe(false); var recheckFrameTimer; function loadIframe(recheckIndicator) { var iframe = getPortalIframe();