changeset 3211:2969ed764fe8

mod_adhoc_test: A module to test dataforms generation and rendering
author Kim Alvefur <zash@zash.se>
date Fri, 03 Aug 2018 19:30:15 +0200
parents 9505282ad24f
children 69b6910f3bfc
files mod_adhoc_test/README.markdown mod_adhoc_test/mod_adhoc_test.lua
diffstat 2 files changed, 145 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_adhoc_test/README.markdown	Fri Aug 03 19:30:15 2018 +0200
@@ -0,0 +1,24 @@
+# Introduction
+
+This module adds an [Ad-Hoc command][xep0050] with a demo [data
+form][xep0004] that includes all kinds of fields. It's meant to help
+debug both Prosodys
+[`util.dataforms`][doc:developers:util:dataforms] library and
+clients, eg seeing how various field types are rendered.
+
+# Configuration
+
+Simply add it to [`modules_enabled`][doc:modules_enabled] like any
+other module.
+
+``` {.lua}
+modules_enabled = {
+    -- All your other modules etc
+    "adhoc_test";
+}
+```
+
+# Usage
+
+In your Ad-Hoc capable client, look for **Dataforms Demo**, and execute
+it. You should see a form with various kinds of fields.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_adhoc_test/mod_adhoc_test.lua	Fri Aug 03 19:30:15 2018 +0200
@@ -0,0 +1,121 @@
+local dataforms = require "util.dataforms";
+local adhoc_util = require "util.adhoc";
+local serialization = require "util.serialization";
+
+local adhoc_new = module:require "adhoc".new;
+
+-- Dataform borrowed from Prosodys busted test for util.dataforms
+local form = dataforms.new({
+	title = "form-title",
+	instructions = "form-instructions",
+	{
+		type = "hidden",
+		name = "FORM_TYPE",
+		value = "xmpp:prosody.im/spec/util.dataforms#1",
+	};
+	{
+		type = "fixed";
+		value = "Fixed field";
+	},
+	{
+		type = "boolean",
+		label = "boolean-label",
+		name = "boolean-field",
+		value = true,
+	},
+	{
+		type = "fixed",
+		label = "fixed-label",
+		name = "fixed-field",
+		value = "fixed-value",
+	},
+	{
+		type = "hidden",
+		label = "hidden-label",
+		name = "hidden-field",
+		value = "hidden-value",
+	},
+	{
+		type = "jid-multi",
+		label = "jid-multi-label",
+		name = "jid-multi-field",
+		value = {
+			"jid@multi/value#1",
+			"jid@multi/value#2",
+		},
+	},
+	{
+		type = "jid-single",
+		label = "jid-single-label",
+		name = "jid-single-field",
+		value = "jid@single/value",
+	},
+	{
+		type = "list-multi",
+		label = "list-multi-label",
+		name = "list-multi-field",
+		value = {
+			"list-multi-option-value#1",
+			"list-multi-option-value#3",
+		},
+		options = {
+			{
+				label = "list-multi-option-label#1",
+				value = "list-multi-option-value#1",
+				default = true,
+			},
+			{
+				label = "list-multi-option-label#2",
+				value = "list-multi-option-value#2",
+				default = false,
+			},
+			{
+				label = "list-multi-option-label#3",
+				value = "list-multi-option-value#3",
+				default = true,
+			},
+		}
+	},
+	{
+		type = "list-single",
+		label = "list-single-label",
+		name = "list-single-field",
+		value = "list-single-value",
+		options = {
+			"list-single-value",
+			"list-single-value#2",
+			"list-single-value#3",
+		}
+	},
+	{
+		type = "text-multi",
+		label = "text-multi-label",
+		name = "text-multi-field",
+		value = "text\nmulti\nvalue",
+	},
+	{
+		type = "text-private",
+		label = "text-private-label",
+		name = "text-private-field",
+		value = "text-private-value",
+	},
+	{
+		type = "text-single",
+		label = "text-single-label",
+		name = "text-single-field",
+		value = "text-single-value",
+	},
+})
+
+local function handler(fields, err, data)
+		return {
+			status = "completed",
+			info = "Data was:\n"
+				.. serialization.serialize(err or fields),
+		};
+end
+
+module:provides("adhoc",
+	adhoc_new("Dataforms Demo",
+		"xmpp:zash.se/mod_adhoc_test",
+		adhoc_util.new_simple_form(form, handler)));