@@ -196,8 +196,6 @@ func ConfigSettings(ctx *context.Context) {
196196}
197197
198198func ChangeConfig (ctx * context.Context ) {
199- key := strings .TrimSpace (ctx .FormString ("key" ))
200- value := ctx .FormString ("value" )
201199 cfg := setting .Config ()
202200
203201 marshalBool := func (v string ) (string , error ) { //nolint:unparam // error is always nil
@@ -248,21 +246,38 @@ func ChangeConfig(ctx *context.Context) {
248246 cfg .Repository .OpenWithEditorApps .DynKey (): marshalOpenWithApps ,
249247 cfg .Template .GitRemoteName .DynKey (): marshalString ,
250248 }
251- marshaller , hasMarshaller := marshallers [key ]
252- if ! hasMarshaller {
253- ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
254- return
255- }
256- marshaledValue , err := marshaller (value )
257- if err != nil {
258- ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
259- return
260- }
261- if err = system_model .SetSettings (ctx , map [string ]string {key : marshaledValue }); err != nil {
262- ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
263- return
249+
250+ _ = ctx .Req .ParseForm ()
251+ queryKeys := ctx .Req .Form ["key" ]
252+ queryValues := ctx .Req .Form ["value" ]
253+ loop:
254+ for i , key := range queryKeys {
255+ if i >= len (queryValues ) {
256+ ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
257+ break loop
258+ }
259+ value := queryValues [i ]
260+
261+ marshaller , hasMarshaller := marshallers [key ]
262+ if ! hasMarshaller {
263+ ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
264+ break loop
265+ }
266+
267+ marshaledValue , err := marshaller (value )
268+ if err != nil {
269+ ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
270+ break loop
271+ }
272+
273+ if err = system_model .SetSettings (ctx , map [string ]string {key : marshaledValue }); err != nil {
274+ ctx .JSONError (ctx .Tr ("admin.config.set_setting_failed" , key ))
275+ break loop
276+ }
264277 }
265278
266279 config .GetDynGetter ().InvalidateCache ()
267- ctx .JSONOK ()
280+ if ! ctx .Written () {
281+ ctx .JSONOK ()
282+ }
268283}
0 commit comments