@@ -280,7 +280,7 @@ class Events {
280280 }
281281 else if ( is_workflow && ! privs . admin ) {
282282 // for workflows, if user is non-admin we need to default the locked params of all event and job nodes
283- self . applyDefaultWorkflowNodeParams ( params ) ;
283+ self . applyDefaultWorkflowNodeParams ( params , event ) ;
284284 }
285285
286286 // allow api to update state for each event (e.g. cursor)
@@ -1065,32 +1065,44 @@ class Events {
10651065 return true ;
10661066 }
10671067
1068- applyDefaultWorkflowNodeParams ( params ) {
1068+ applyDefaultWorkflowNodeParams ( params , orig_event ) {
10691069 // for workflows, we need to apply defaults for all locked params of all event and job nodes
10701070 // this assumes the current user is not an admin
10711071 var self = this ;
10721072 if ( ! params . workflow || ! params . workflow . nodes ) return ;
10731073
10741074 params . workflow . nodes . forEach ( function ( node ) {
1075+ var orig_node = ( orig_event && orig_event . workflow && orig_event . workflow . nodes ) ?
1076+ Tools . findObject ( orig_event . workflow . nodes , { id : node . id } ) : null ;
1077+
10751078 if ( node . type == 'event' ) {
10761079 // apply defaults for locked event + plugin params, if user is not an admin
10771080 var event = Tools . findObject ( self . events , { id : node . data . event } ) ;
10781081 if ( ! event ) return ;
10791082
10801083 if ( event . fields ) event . fields . forEach ( function ( field ) {
1081- if ( field . locked ) node . data . params [ field . id ] = field . value ;
1084+ if ( ! field . locked ) return ;
1085+
1086+ node . data . params [ field . id ] = ( orig_node && orig_node . data && orig_node . data . params && ( field . id in orig_node . data . params ) ) ?
1087+ orig_node . data . params [ field . id ] : field . value ;
10821088 } ) ;
10831089
10841090 var plugin = Tools . findObject ( self . plugins , { id : event . plugin } ) ;
10851091 if ( plugin && plugin . params ) plugin . params . forEach ( function ( param ) {
1086- if ( param . locked ) node . data . params [ param . id ] = param . value ;
1092+ if ( ! param . locked ) return ;
1093+
1094+ node . data . params [ param . id ] = ( orig_node && orig_node . data && orig_node . data . params && ( param . id in orig_node . data . params ) ) ?
1095+ orig_node . data . params [ param . id ] : param . value ;
10871096 } ) ;
10881097 }
10891098 else if ( node . type == 'job' ) {
10901099 // apply defaults for locked plugin params, if user is not an admin
10911100 var plugin = Tools . findObject ( self . plugins , { id : node . data . plugin } ) ;
10921101 if ( plugin && plugin . params ) plugin . params . forEach ( function ( param ) {
1093- if ( param . locked ) node . data . params [ param . id ] = param . value ;
1102+ if ( ! param . locked ) return ;
1103+
1104+ node . data . params [ param . id ] = ( orig_node && orig_node . data && orig_node . data . params && ( param . id in orig_node . data . params ) ) ?
1105+ orig_node . data . params [ param . id ] : param . value ;
10941106 } ) ;
10951107 }
10961108 } ) ; // foreach node
0 commit comments