Skip to content

Commit 7ded348

Browse files
authored
Merge pull request #8486 from ProcessMaker/bugfix/FOUR-22600
FOUR-22600: Issues with stages
2 parents a25d728 + 525f735 commit 7ded348

4 files changed

Lines changed: 31 additions & 13 deletions

File tree

ProcessMaker/Http/Controllers/Api/ProcessController.php

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ public function update(Request $request, Process $process)
499499
$lastVersion = $process->getDraftOrPublishedLatestVersion();
500500
$process->bpmn = $lastVersion->bpmn;
501501
$process->alternative = $lastVersion->alternative;
502+
$process->stages = $lastVersion->stages;
502503

503504
$rules = Process::rules($process);
504505
if (!$request->has('name')) {
@@ -2089,24 +2090,22 @@ public function saveStages(Request $request, Process $process)
20892090
$stages = $request->input('stages');
20902091

20912092
if ($alternative === 'B') {
2092-
2093-
// Get or create alternative B version
2094-
$alternativeVersion = ProcessVersion::where('process_id', $process->id)
2093+
ProcessVersion::where('process_id', $process->id)
20952094
->where('alternative', 'B')
2096-
->first();
2097-
2098-
// Save stages to alternative B version
2099-
$alternativeVersion->stages = $stages;
2100-
$alternativeVersion->save();
2101-
2102-
return new ApiCollection($alternativeVersion->stages);
2095+
->update([
2096+
'stages' => $stages,
2097+
]);
21032098
} else {
2104-
// Save stages to main process (alternative A)
2099+
ProcessVersion::where('process_id', $process->id)
2100+
->where('alternative', 'A')
2101+
->update([
2102+
'stages' => $stages,
2103+
]);
21052104
$process->stages = $stages;
21062105
$process->save();
2107-
2108-
return new ApiCollection($process->stages);
21092106
}
2107+
2108+
return new ApiCollection($stages);
21102109
}
21112110

21122111
/**

ProcessMaker/Traits/HasVersioning.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use ProcessMaker\Models\Process;
1212
use ProcessMaker\Models\ProcessMakerModel;
1313
use ProcessMaker\Models\ProcessRequest;
14+
use ProcessMaker\Models\ProcessVersion;
1415

1516
trait HasVersioning
1617
{
@@ -77,10 +78,19 @@ public function saveVersion()
7778
public function saveDraft(string $alternative = null)
7879
{
7980
$attributes = $this->getModelAttributes();
81+
8082
$attributes['draft'] = true;
8183
if ($this->hasAlternative()) {
8284
$alternative = $alternative ?: $this->alternative;
8385
$attributes['alternative'] = $alternative;
86+
87+
$processVersion = ProcessVersion::where('process_id', $this->id)
88+
->where('alternative', $attributes['alternative'])
89+
->where('draft', 1)
90+
->first();
91+
if ($processVersion) {
92+
$attributes['stages'] = $processVersion->stages;
93+
}
8494
}
8595

8696
return $this->versions()->updateOrCreate(

resources/js/processes/modeler/components/ModelerApp.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ export default {
173173
},
174174
},
175175
mounted() {
176+
window.$modelerApp = this;
176177
ProcessMaker.$modeler = this.$refs.modeler;
177178
window.ProcessMaker.EventBus.$emit("modeler-app-init", this);
178179

resources/js/processes/modeler/components/inspector/StageManager.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ const getHighlightedNode = () => getModeler().highlightedNode;
7575
7676
const getDefinition = () => getHighlightedNode().definition;
7777
78+
const saveProcess = () => {
79+
window.$modelerApp?.autosaveApiCall?.();
80+
}
81+
7882
const getConfigFromDefinition = (definition) => {
7983
let config = {};
8084
try {
@@ -148,18 +152,22 @@ const removeStageToFlow = () => {
148152
const onChange = (stages) => {
149153
updateStagesForAllFlowConfigs(stages);
150154
saveStagesToApi(stages);
155+
saveProcess();
151156
};
152157
153158
const onUpdate = (stages, index, val, Oldal) => {
154159
updateStagesForAllFlowConfigs(stages);
160+
saveProcess();
155161
};
156162
157163
const onRemove = (stages, index, removed) => {
158164
removeStageInAllFlowConfig(removed);
165+
saveProcess();
159166
};
160167
161168
const onClickCheckbox = (stage) => {
162169
applyStageToFlow(stage);
170+
saveProcess();
163171
};
164172
165173
const onClickSelected = (stage) => {

0 commit comments

Comments
 (0)