add sgx dropdown for number_change

Phillip Davis created

- detect if resource-part indicates a client that renders open
  validation in forms

Change summary

forms/admin_number_change.rb       | 16 +++++++++++++++-
lib/admin_actions/number_change.rb |  6 +++++-
2 files changed, 20 insertions(+), 2 deletions(-)

Detailed changes

forms/admin_number_change.rb 🔗

@@ -18,9 +18,23 @@ field(
 
 field(
 	var: "new_backend",
-	type: "text-single",
+	type: "list-single",
+	open: @cheogram,
 	label: "Backend to change to?",
 	description:
 		"Leave blank to keep current backend, or specify new backend JID",
+	options: [{ label: "(keep current)", value: "" }] +
+		(CONFIG[:sgx_creds].keys.map(&:to_s) + [CONFIG[:sgx]]).map { |b|
+			{ label: b, value: b }
+		},
 	value: ""
 )
+
+unless @cheogram
+	field(
+		var: "custom_backend",
+		type: "text-single",
+		label: "Custom backend (overrides dropdown if filled in)",
+		value: ""
+	)
+end

lib/admin_actions/number_change.rb 🔗

@@ -26,7 +26,8 @@ class AdminAction
 			end
 
 			def form
-				FormTemplate.render("admin_number_change")
+				cheogram = ::Command.execution.iq.from.resource =~ /\ACheogram/
+				FormTemplate.render("admin_number_change", cheogram: cheogram)
 			end
 
 			def change(result)
@@ -36,6 +37,9 @@ class AdminAction
 						.reject { |_k, v| v == "nil" || v.to_s.empty? }
 						.tap { |form_h|
 							form_h["new_backend"] ||= @bag[:old_backend]
+							if (custom = form_h.delete("custom_backend"))
+								form_h["new_backend"] = custom
+							end
 							form_h["new_tel"] ||= @bag[:old_tel]
 						}
 						.transform_keys(&:to_sym)