[ekg2-commit] r4030 - trunk/plugins/jabber: trunk/plugins/jabber/jabber.c trunk/plugins/jabber/jabber_handlers.c

SVN commit svn w toxygen.net
Czw, 26 Cze 2008, 19:27:53 CEST


Author: wiechu
Date: 2008-06-26 19:27:53 +0200 (Thu, 26 Jun 2008)
New Revision: 4030

Modified:
   trunk/plugins/jabber/jabber.c
   trunk/plugins/jabber/jabber_handlers.c
Log:
    Nicer display of jabber:x:data form.


Modified: trunk/plugins/jabber/jabber.c
===================================================================
--- trunk/plugins/jabber/jabber.c	2008-06-25 22:26:53 UTC (rev 4029)
+++ trunk/plugins/jabber/jabber.c	2008-06-26 17:27:53 UTC (rev 4030)
@@ -1262,6 +1262,7 @@
 
 	format_add("jabber_form_command",	_("%g|| %nType %W/%3 %g%2 %W%4%n"), 1); 
 	format_add("jabber_form_instructions", 	  "%g|| %n%|%3", 1);
+	format_add("jabber_form_description", 	  "%g|| %n%|%3", 1);
 	format_add("jabber_form_end",		_("%g`+=%G----- End of this %3 form ;)%n"), 1);
 
 	format_add("jabber_registration_item", 	  "%g|| %n            --%3 %4%n", 1); /* %3 - keyname %4 - value */ /* XXX, merge */

Modified: trunk/plugins/jabber/jabber_handlers.c
===================================================================
--- trunk/plugins/jabber/jabber_handlers.c	2008-06-25 22:26:53 UTC (rev 4029)
+++ trunk/plugins/jabber/jabber_handlers.c	2008-06-26 17:27:53 UTC (rev 4030)
@@ -1090,12 +1090,14 @@
 		} else if (!xstrcmp(node->name, "field")) {
 			xmlnode_t *child;
 			char *label	= jabber_unescape(jabber_attr(node->atts, "label"));
+			char *type	= jabber_unescape(jabber_attr(node->atts, "type"));
 			char *var	= jabber_unescape(jabber_attr(node->atts, "var"));
 			char *def_option = NULL;
 			string_t sub = NULL;
 			int subcount = 0;
 
 			int isreq = 0;	/* -1 - optional; 1 - required */
+			/* ?WO? XEP-0004 tells nothing about optional values ??? */
 			
 			if (!fieldcount) print("jabber_form_command", session_name(s), uid, command, param);
 
@@ -1126,8 +1128,13 @@
 				} else debug_error("[jabber] wtf? FIELD->CHILD: %s\n", child->name);
 			}
 
-			print("jabber_form_item", session_name(s), uid, label, var, def_option, 
-				isreq == -1 ? "X" : isreq == 1 ? "V" : " ");
+			if (!(xstrcmp(type, "fixed")))
+				print("jabber_form_description", session_name(s), uid, def_option);
+			else if (!(xstrcmp(type, "hidden")))
+				print("jabber_form_hidden", session_name(s), uid, label, var, def_option);
+			else
+				print("jabber_form_item", session_name(s), uid, label, var, def_option, 
+					isreq == -1 ? "X" : isreq == 1 ? "V" : " ", type);
 
 			if (sub && sub->len > 1) {
 				int len = sub->len;
@@ -1137,6 +1144,7 @@
 			}
 			fieldcount++;
 			xfree(var);
+			xfree(type);
 			xfree(label);
 		}
 	}



Więcej informacji o liście dyskusyjnej ekg2-commit