diff --git a/src/DataProvider.js b/src/DataProvider.js index 38c09ac2c..6faea6b49 100644 --- a/src/DataProvider.js +++ b/src/DataProvider.js @@ -81,16 +81,26 @@ export default { const hasIncludeScreen = params.match(/include=.*,screen,/); const hasIncludeNested = params.match(/include=.*,nested,/); + // Extract screen_version from params. + const screenVersionMatch = params.match(/screen_version=([^&]+)/); + const screenVersion = screenVersionMatch ? screenVersionMatch[1] : null; + // remove params ?... promises.push( this.get(endpoint + params.replace(/,screen,|,nested,/g, ",")) ); // Get the screen from a separated cached endpoint if (hasIncludeScreen) { - const screenEndpoint = `${(endpoint + params).replace( + let screenEndpoint = `${(endpoint + params).replace( /\?.+$/, "" )}/screen?include=screen${hasIncludeNested ? ",nested" : ""}`; + + // Append screen_version only if screenVersion is not empty. + if (screenVersion) { + screenEndpoint += `&screen_version=${screenVersion}`; + } + promises.push(this.get(screenEndpoint)); } // Await for both promises to resolve diff --git a/src/components/task.vue b/src/components/task.vue index bf3f5b623..bd93e153c 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -94,6 +94,7 @@ export default { initialRequestId: { type: Number, default: null }, initialProcessId: { type: Number, default: null }, initialNodeId: { type: String, default: null }, + screenVersion: { type: Number, default: null }, userId: { type: Number, default: null }, csrfToken: { type: String, default: null }, value: { type: Object, default: () => {} }, @@ -265,7 +266,12 @@ export default { return; } - const url = `/${this.taskId}?include=data,user,draft,requestor,processRequest,component,screen,requestData,loopContext,bpmnTagName,interstitial,definition,nested,userRequestPermission,elementDestination`; + let url = `/${this.taskId}?include=data,user,draft,requestor,processRequest,component,screen,requestData,loopContext,bpmnTagName,interstitial,definition,nested,userRequestPermission,elementDestination`; + + if (this.screenVersion) { + url += `&screen_version=${this.screenVersion}`; + } + // For Vocabularies if (window.ProcessMaker && window.ProcessMaker.packages && window.ProcessMaker.packages.includes('package-vocabularies')) { window.ProcessMaker.VocabulariesSchemaUrl = `vocabularies/task_schema/${this.taskId}`;