root/trunk/website/soundings/handlers/matrix/edit.cfm @ 5

Revision 5, 11.5 kB (checked in by DanWilson, 17 years ago)

Initial Commit Of ModelGlue? Website (upgrade to blogcfc 511)

RevLine 
[5]1<cfsetting enablecfoutputonly=true>
2<!---
3        Name         : handlers/matrix/edit.cfm
4        Author       : Raymond Camden
5        Created      : September 20, 2004
6        Last Updated : November 22, 2005
7        History      : Bug in deleting items (rkc 11/22/05)
8        Purpose          :
9--->
10
11<cfparam name="attributes.multi" default="false">
12<cfparam name="answers" default="#arrayNew(1)#">
13<cfparam name="items" default="#arrayNew(1)#">
14
15<cfif isDefined("attributes.question")>
16        <cfparam name="form.question" default="#attributes.question.question#">
17        <cfparam name="form.rank" default="#attributes.question.rank#">
18        <cfparam name="form.required" default="#attributes.question.required#">
19        <cfloop query="attributes.question.answers">
20                <cfif rank gte 0>
21                        <cfset answers[arrayLen(answers)+1] = structNew()>
22                        <cfset answers[arrayLen(answers)].answer = answer>
23                        <cfset answers[arrayLen(answers)].rank = rank>
24                        <cfset answers[arrayLen(answers)].id = id>
25                <cfelse>
26                        <cfset items[arrayLen(items)+1] = structNew()>
27                        <cfset items[arrayLen(items)].answer = answer>
28                        <cfset items[arrayLen(items)].rank = -1 * rank>
29                        <cfset items[arrayLen(items)].id = id>         
30                </cfif>
31        </cfloop>
32<cfelse>
33        <cfparam name="form.question" default="">
34        <cfparam name="form.rank" default="#attributes.toprank+1#">
35        <cfparam name="form.required" default="false">
36</cfif>
37<cfparam name="form.answer_new" default="">
38<cfparam name="form.rank_new" default="">
39<cfparam name="form.answer_new2" default="">
40<cfparam name="form.rank_new2" default="">
41<cfparam name="form.item_new" default="">
42<cfparam name="form.itemrank_new" default="">
43<cfparam name="form.item_new2" default="">
44<cfparam name="form.itemrank_new2" default="">
45
46<cfif isDefined("form.delete")>
47        <cfset index = listLast(form.delete," ")>
48        <cfset id = answers[index].id>
49        <cfset application.question.deleteAnswer(id)>
50        <cfset arrayDeleteAt(answers,index)>
51</cfif>
52
53<cfif isDefined("form.delete_item")>
54        <cfset index = listLast(form.delete_item," ")>
55        <cfset id = items[index].id>
56        <cfset application.question.deleteAnswer(id)>
57        <cfset arrayDeleteAt(items,index)>
58</cfif>
59
60<cfif isDefined("form.save")>
61        <cfset form = request.udf.cleanStruct(form)>
62        <cfset errors = "">
63
64        <cfif not len(form.question)>
65                <cfset errors = errors & "You must enter a question.<br>">
66        </cfif>
67       
68        <cfif form.rank is "" or not isNumeric(form.rank) or form.rank lte 0>
69                <cfset errors = errors & "Rank must be 1 or above.<br>">
70        </cfif>
71       
72        <!--- ANSWERS --->
73        <cfset answers = arrayNew(1)>
74        <cfset counter = 1>
75        <cfloop condition="isDefined(""form.answer#counter#"")">
76                <cfset a = form["answer#counter#"]>
77                <cfset r = form["rank#counter#"]>
78                <cfif len(a) and len(r) and isNumeric(r) and r gte 1>
79                        <cfset answers[arrayLen(answers)+1] = structNew()>
80                        <cfset answers[arrayLen(answers)].answer = a>
81                        <cfset answers[arrayLen(answers)].rank = r>
82                        <cfif isDefined("form.answerid#counter#")>
83                                <cfset answers[arrayLen(answers)].id = form["answerid#counter#"]>
84                        </cfif>
85                </cfif>
86                <cfif a is "" and r is "">
87                        <!--- deletion of answer, it's ok, really --->
88                <cfelse>
89                        <cfif a is "">
90                                <cfset errors = errors & "The answer cannot be blank.<br>">
91                        <cfelseif r is "">
92                                <cfset errors = errors & "The rank for #a# cannot be blank.<br>">
93                        <cfelseif not isNumeric(r) or r lte 0>
94                                <cfset errors = errors & "The rank, #r#, must be numeric and greater than zero.<br>">
95                        </cfif>
96                </cfif>
97                <cfset counter = counter + 1>
98        </cfloop>
99        <cfif len(form.answer_new)>
100                <cfif not len(form.rank_new) or not isNumeric(form.rank_new) or form.rank_new lte 0>
101                        <cfset errors = errors & "Your rank for the new answer must be numeric and greater than one.<br>">
102                <cfelse>
103                        <cfset answers[arrayLen(answers)+1] = structNew()>
104                        <cfset answers[arrayLen(answers)].answer = form.answer_new>
105                        <cfset answers[arrayLen(answers)].rank = form.rank_new>
106                        <cfset form.answer_new = "">
107                        <cfset form.rank_new = "">
108                </cfif>                 
109        </cfif>
110        <cfif len(form.answer_new2)>
111                <cfif not len(form.rank_new2) or not isNumeric(form.rank_new2) or form.rank_new2 lte 0>
112                        <cfset errors = errors & "Your rank for the new answer must be numeric and greater than one.<br>">
113                <cfelse>
114                        <cfset answers[arrayLen(answers)+1] = structNew()>
115                        <cfset answers[arrayLen(answers)].answer = form.answer_new2>
116                        <cfset answers[arrayLen(answers)].rank = form.rank_new2>
117                        <cfset form.answer_new2 = "">
118                        <cfset form.rank_new2 = "">
119                </cfif>                 
120        </cfif>
121
122        <cfif arrayLen(answers) lt 2>
123                <cfset errors = errors & "You must have at least two answers.<br>">
124        </cfif>
125               
126        <!--- ITEMS --->
127        <cfset items = arrayNew(1)>
128        <cfset counter = 1>
129        <cfloop condition="isDefined(""form.item#counter#"")">
130                <cfset a = form["item#counter#"]>
131                <cfset r = form["itemrank#counter#"]>
132                <cfif len(a) and len(r) and isNumeric(r) and r gte 1>
133                        <cfset items[arrayLen(items)+1] = structNew()>
134                        <cfset items[arrayLen(items)].answer = a>
135                        <cfset items[arrayLen(items)].rank = r>
136                        <cfif isDefined("form.itemid#counter#")>
137                                <cfset items[arrayLen(items)].id = form["itemid#counter#"]>
138                        </cfif>
139                </cfif>
140                <cfif a is "" and r is "">
141                        <!--- deletion of answer, it's ok, really --->
142                <cfelse>
143                        <cfif a is "">
144                                <cfset errors = errors & "The item cannot be blank.<br>">
145                        <cfelseif r is "">
146                                <cfset errors = errors & "The rank for #a# cannot be blank.<br>">
147                        <cfelseif not isNumeric(r) or r lte 0>
148                                <cfset errors = errors & "The rank, #r#, must be numeric and greater than zero.<br>">
149                        </cfif>
150                </cfif>
151                <cfset counter = counter + 1>
152        </cfloop>
153        <cfif len(form.item_new)>
154                <cfif not len(form.itemrank_new) or not isNumeric(form.itemrank_new) or form.itemrank_new lte 0>
155                        <cfset errors = errors & "Your rank for the new item must be numeric and greater than one.<br>">
156                <cfelse>
157                        <cfset items[arrayLen(items)+1] = structNew()>
158                        <cfset items[arrayLen(items)].answer = form.item_new>
159                        <cfset items[arrayLen(items)].rank = form.itemrank_new>
160                        <cfset form.item_new = "">
161                        <cfset form.itemrank_new = "">
162                </cfif>                 
163        </cfif>
164        <cfif len(form.item_new2)>
165                <cfif not len(form.itemrank_new2) or not isNumeric(form.itemrank_new2) or form.itemrank_new2 lte 0>
166                        <cfset errors = errors & "Your rank for the new answer must be numeric and greater than one.<br>">
167                <cfelse>
168                        <cfset items[arrayLen(items)+1] = structNew()>
169                        <cfset items[arrayLen(items)].answer = form.item_new2>
170                        <cfset items[arrayLen(items)].rank = form.itemrank_new2>
171                        <cfset form.item_new2 = "">
172                        <cfset form.itemrank_new2 = "">
173                </cfif>                 
174        </cfif>
175
176        <cfif arrayLen(items) lt 2>
177                <cfset errors = errors & "You must have at least two items.<br>">
178        </cfif>
179               
180        <cfif not len(errors)>
181                <cftry>
182                        <!--- before saving, invert items and add to answers --->
183                        <cfloop index="x" from="1" to="#arrayLen(items)#">
184                                <cfset tempItem = duplicate(items[x])>
185                                <cfset tempItem.rank = -1 * tempItem.rank>
186                                <cfset arrayAppend(answers, tempItem)>
187                        </cfloop>
188                       
189                        <cfif not isDefined("attributes.question")>
190                                <cfset application.question.addQuestion(form.question, form.rank, form.required, attributes.surveyidfk, attributes.questionType.id,answers)>
191                        <cfelse>
192                                <cfset application.question.updateQuestion(attributes.question.id,form.question, form.rank, form.required, attributes.surveyidfk, attributes.questiontype.id,answers)>
193                        </cfif>
194                        <cfset msg = "Your question has been saved.">
195                        <cflocation url="questions.cfm?surveyidfk=#attributes.surveyidfk#&msg=#urlEncodedFormat(msg)#" addToken="false">
196                        <cfcatch>
197                                <cfset errors = cfcatch.message>
198                                <!--- clean answers --->
199                                <cfloop index="x" to="#arrayLen(answers)#" from="1" step="-1">
200                                        <cfif answers[x].rank lt 0>
201                                                <cfset arrayDeleteAt(answers, x)>
202                                        </cfif>
203                                </cfloop>
204                        </cfcatch>
205                </cftry>
206        </cfif>
207       
208</cfif>
209
210<cfoutput>
211<p>
212Please use the form below to edit the Multiple Choice question. You must have at least two choices.
213</p>
214
215<p>
216<cfif isDefined("errors")><ul><b>#errors#</b></ul></cfif>
217<form action="#cgi.script_name#?#attributes.queryString#" method="post">
218<table cellspacing=0 cellpadding=5 class="adminEditTable" width="100%">
219        <tr valign="top">
220                <td width="200"><b>(*) Question:</b></td>
221                <td><input type="text" name="question" value="#form.question#" size="50"></td>
222        </tr>
223        <tr valign="top">
224                <td><b>(*) Rank:</b></td>
225                <td><input type="text" name="rank" value="#form.rank#" size="2"></td>
226        </tr>
227        <tr valign="top">
228                <td><b>(*) Required:</b></td>
229                <td>
230                        <input type="radio" name="required" value="true" <cfif form.required>checked</cfif>>Yes<br>     
231                        <input type="radio" name="required" value="false" <cfif not form.required>checked</cfif>>No<br>
232                </td>
233        </tr>
234
235        <!--- Answers --->     
236        <tr>
237                <td colspan="2">The following answers apply to the values for your matrix. This is how the user will rate each item.</td>
238        </tr>
239        <cfloop index="x" from="1" to="#arrayLen(answers)#">
240                <cfif structKeyExists(answers[x],"id")>
241                        <input type="hidden" name="answerid#x#" value="#answers[x].id#">
242                </cfif>
243                <tr>
244                        <td><b>Answer #x#:</b></td>
245                        <td><input type="text" name="answer#x#" value="#answers[x].answer#" size="50"></td>
246                </tr>
247                <tr valign="top">
248                        <td><b>Rank #x#:</b></td>
249                        <td><input type="text" name="rank#x#" value="#answers[x].rank#" size="2"> <cfif structKeyExists(answers[x],"id")><input type="submit" name="delete" value="Delete Answer #x#" onClick="return confirm('This change cannot be undone. Are you sure?')"></cfif></td>
250                </tr>   
251        </cfloop>
252        <tr>
253                <td><b>New Answer:</b></td>
254                <td><input type="text" name="answer_new" value="#form.answer_new#" size="50"></td>
255        </tr>
256        <tr valign="top">
257                <td><b>New Rank:</b></td>
258                <td><input type="text" name="rank_new" value="#form.rank_new#" size="2"></td>
259        </tr>   
260        <tr>
261                <td><b>New Answer:</b></td>
262                <td><input type="text" name="answer_new2" value="#form.answer_new2#" size="50"></td>
263        </tr>
264        <tr valign="top">
265                <td><b>New Rank:</b></td>
266                <td><input type="text" name="rank_new2" value="#form.rank_new2#" size="2"></td>
267        </tr>   
268
269        <!--- items --->
270        <tr>
271                <td colspan="2">The following are the items that will be ranked.</td>
272        </tr>
273        <cfloop index="x" from="1" to="#arrayLen(items)#">
274                <cfif structKeyExists(items[x],"id")>
275                        <input type="hidden" name="itemid#x#" value="#items[x].id#">
276                </cfif>
277                <tr>
278                        <td><b>Item #x#:</b></td>
279                        <td><input type="text" name="item#x#" value="#items[x].answer#" size="50"></td>
280                </tr>
281                <tr valign="top">
282                        <td><b>Rank #x#:</b></td>
283                        <td><input type="text" name="itemrank#x#" value="#items[x].rank#" size="2"> <cfif structKeyExists(items[x],"id")><input type="submit" name="delete_item" value="Delete Item #x#" onClick="return confirm('This change cannot be undone. Are you sure?')"></cfif></td>
284                </tr>   
285        </cfloop>
286        <tr>
287                <td><b>New Item:</b></td>
288                <td><input type="text" name="item_new" value="#form.item_new#" size="50"></td>
289        </tr>
290        <tr valign="top">
291                <td><b>New Rank:</b></td>
292                <td><input type="text" name="itemrank_new" value="#form.itemrank_new#" size="2"></td>
293        </tr>   
294        <tr>
295                <td><b>New Item:</b></td>
296                <td><input type="text" name="item_new2" value="#form.item_new2#" size="50"></td>
297        </tr>
298        <tr valign="top">
299                <td><b>New Rank:</b></td>
300                <td><input type="text" name="itemrank_new2" value="#form.itemrank_new2#" size="2"></td>
301        </tr>   
302
303        <tr>
304                <td>&nbsp;</td>
305                <td><input type="submit" name="save" value="Save"> <input type="submit" name="cancel" value="Cancel"></td>
306        </tr>
307</table>
308</form>
309</p>
310
311</cfoutput>
312
313<cfsetting enablecfoutputonly=false>
314
315<cfexit method="exittag">
Note: See TracBrowser for help on using the browser.