root/trunk/src/forms.c

Revision 680, 3.9 kB (checked in by jajcus, 3 years ago)

- dates in the copyright header updated

Line 
1 /* $Id: forms.c,v 1.6 2003/04/16 11:10:17 jajcus Exp $ */
2
3 /*
4  *  (C) Copyright 2002-2006 Jacek Konieczny [jajcus(a)jajcus,net]
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License Version 2 as
8  *  published by the Free Software Foundation.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19
20 #include "ggtrans.h"
21
22 /*
23  * creates a new jabber:x:data form
24  * returns the node created added
25  */
26 xmlnode form_new(xmlnode parent,const char *title,const char *instructions){
27 xmlnode form,tag;
28
29         if (parent)
30                 form=xmlnode_insert_tag(parent,"x");
31         else
32                 form=xmlnode_new_tag("x");
33
34         xmlnode_put_attrib(form,"xmlns","jabber:x:data");
35         xmlnode_put_attrib(form,"type","form");
36         tag=xmlnode_insert_tag(form,"title");
37         xmlnode_insert_cdata(tag,title,-1);
38         tag=xmlnode_insert_tag(form,"instructions");
39         xmlnode_insert_cdata(tag,instructions,-1);
40         return form;
41 }
42
43 /*
44  * creates a new jabber:x:data result form
45  * returns the node created added
46  */
47 xmlnode form_new_result(const char *title){
48 xmlnode form,tag;
49
50         form=xmlnode_new_tag("x");
51         xmlnode_put_attrib(form,"xmlns","jabber:x:data");
52         xmlnode_put_attrib(form,"type","result");
53         tag=xmlnode_insert_tag(form,"title");
54         xmlnode_insert_cdata(tag,title,-1);
55         return form;
56 }
57
58
59 /*
60  * adds a field to a jabber:x:data form
61  * returns the field added
62  */
63 xmlnode form_add_field(xmlnode form,const char *type,const char *var,
64                                 const char *label,const char *val,int required){
65 xmlnode field,value;
66
67         field=xmlnode_insert_tag(form,"field");
68         xmlnode_put_attrib(field,"type",type);
69         xmlnode_put_attrib(field,"var",var);
70         if (required) xmlnode_insert_tag(field,"required");
71         xmlnode_put_attrib(field,"label",label);
72         if (val){
73                 value=xmlnode_insert_tag(field,"value");
74                 xmlnode_insert_cdata(value,val,-1);
75         }
76         return field;
77 }
78
79 /*
80  * adds an option to list field of jabber:x:data form
81  * returns the node added
82  */
83 xmlnode form_add_option(xmlnode field,const char *label,const char *val){
84 xmlnode option,value;
85
86         option=xmlnode_insert_tag(field,"option");
87         xmlnode_put_attrib(option,"label",label);
88         value=xmlnode_insert_tag(option,"value");
89         xmlnode_insert_cdata(value,val,-1);
90         return option;
91 }
92
93
94 /*
95  * adds "fixed" field to a jabber:x:data form
96  * returns the field added
97  */
98 xmlnode form_add_fixed(xmlnode form,const char *val){
99 xmlnode field,value;
100
101         field=xmlnode_insert_tag(form,"field");
102         xmlnode_put_attrib(field,"type","fixed");
103         value=xmlnode_insert_tag(field,"value");
104         xmlnode_insert_cdata(value,val,-1);
105         return field;
106 }
107
108 /*
109  * adds a field declaration to a jabber:x:data report
110  * returns the field added
111  */
112 xmlnode form_add_result_field(xmlnode form,const char *var,const char *label,const char *type){
113 xmlnode rep,field;
114
115         rep=xmlnode_get_tag(form,"reported");
116         if (rep==NULL){
117                 rep=xmlnode_insert_tag(form,"reported");
118         }
119         field=xmlnode_insert_tag(rep,"field");
120         xmlnode_put_attrib(field,"var",var);
121         xmlnode_put_attrib(field,"label",label);
122         if (type!=NULL)
123                 xmlnode_put_attrib(field,"type",type);
124         return field;
125 }
126
127 /*
128  * adds an item jabber:x:data report
129  * returns the item added
130  */
131 xmlnode form_add_result_item(xmlnode form){
132 xmlnode item;
133
134         item=xmlnode_insert_tag(form,"item");
135         return item;
136 }
137
138 /*
139  * adds a value to a jabber:x:data report item
140  * returns the field added
141  */
142 xmlnode form_add_result_value(xmlnode item,const char *var,const char *val){
143 xmlnode field,value;
144
145         field=xmlnode_insert_tag(item,"field");
146         xmlnode_put_attrib(field,"var",var);
147         value=xmlnode_insert_tag(field,"value");
148         if (val!=NULL)
149                 xmlnode_insert_cdata(value,val,-1);
150         return field;
151 }
152
153
Note: See TracBrowser for help on using the browser.