Mercurial > p > roundup > code
annotate templates/classic/html/help_controls.js @ 3043:3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Tue, 04 Jan 2005 01:07:09 +0000 |
| parents | 10a49678ebf2 |
| children | 18def94e5150 |
| rev | line source |
|---|---|
|
1663
09f0a54829eb
Fixed spelling of "supersede";
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1608
diff
changeset
|
1 // initial values for either Nosy, Superseder, Topic and Waiting On, |
|
09f0a54829eb
Fixed spelling of "supersede";
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1608
diff
changeset
|
2 // depending on which has called |
|
2761
10a49678ebf2
allow listing popup to be used in query forms (thanks Marcus Priesch)
Richard Jones <richard@users.sourceforge.net>
parents:
2361
diff
changeset
|
3 original_field = form[field].value; |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
2361
9cdc49488fe6
define the "undefined" var manually
Richard Jones <richard@users.sourceforge.net>
parents:
2273
diff
changeset
|
5 // Some browsers (ok, IE) don't define the "undefined" variable. |
|
9cdc49488fe6
define the "undefined" var manually
Richard Jones <richard@users.sourceforge.net>
parents:
2273
diff
changeset
|
6 undefined = document.geez_IE_is_really_friggin_annoying; |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 function trim(value) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 var temp = value; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 var obj = /^(\s*)([\W\w]*)(\b\s*$)/; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 if (obj.test(temp)) { temp = temp.replace(obj, '$2'); } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 var obj = / /g; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 while (temp.match(obj)) { temp = temp.replace(obj, " "); } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 return temp; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
17 function determineList() { |
|
3043
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
18 // generate a comma-separated list of the checked items |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
19 var list = new String(''); |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
20 |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
21 // either a checkbox object or an array of checkboxes |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
22 var check = document.frm_help.check; |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
23 |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
24 if ((check.length == undefined) && (check.checked != undefined)) { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
25 // only one checkbox on page |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
26 if (check.checked) { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
27 list = check.value; |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
28 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
29 } else { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
30 // array of checkboxes |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
31 for (box=0; box < check.length; box++) { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
32 if (check[box].checked) { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
33 if (list.length == 0) { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
34 separator = ''; |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
35 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
36 else { |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
37 separator = ','; |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
38 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
39 // we used to use an Array and push / join, but IE5.0 sux |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
40 list = list + separator + check[box].value; |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
41 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
42 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
43 } |
|
3f3ca882deb2
fix "(list)" popup when list is one item long [SF#1064716]
Richard Jones <richard@users.sourceforge.net>
parents:
2761
diff
changeset
|
44 return list; |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
45 } |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
46 |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 function updateList() { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 // write back to opener window |
|
1764
cd50fbc275a1
Fix JavaScript error when help was asked while no keyword was defined.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1663
diff
changeset
|
49 if (document.frm_help.check==undefined) { return; } |
|
2761
10a49678ebf2
allow listing popup to be used in query forms (thanks Marcus Priesch)
Richard Jones <richard@users.sourceforge.net>
parents:
2361
diff
changeset
|
50 form[field].value = determineList(); |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 function updatePreview() { |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
54 // update the preview box |
|
1764
cd50fbc275a1
Fix JavaScript error when help was asked while no keyword was defined.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1663
diff
changeset
|
55 if (document.frm_help.check==undefined) { return; } |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
56 writePreview(determineList()); |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 function clearList() { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 // uncheck all checkboxes |
|
1764
cd50fbc275a1
Fix JavaScript error when help was asked while no keyword was defined.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1663
diff
changeset
|
61 if (document.frm_help.check==undefined) { return; } |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 for (box=0; box < document.frm_help.check.length; box++) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 document.frm_help.check[box].checked = false; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 function reviseList(vals) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 // update the checkboxes based on the preview field |
|
1764
cd50fbc275a1
Fix JavaScript error when help was asked while no keyword was defined.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1663
diff
changeset
|
69 if (document.frm_help.check==undefined) { return; } |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 var to_check; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 var list = vals.split(","); |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
72 if (document.frm_help.check.length==undefined) { |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
73 check = document.frm_help.check; |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
74 to_check = false; |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
75 for (val in list) { |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
76 if (check.value==trim(list[val])) { |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
77 to_check = true; |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
78 break; |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
79 } |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
80 } |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
81 check.checked = to_check; |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
82 } else { |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
83 for (box=0; box < document.frm_help.check.length; box++) { |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 check = document.frm_help.check[box]; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 to_check = false; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 for (val in list) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 if (check.value==trim(list[val])) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 to_check = true; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 break; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
91 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 check.checked = to_check; |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
93 } |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 function resetList() { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 // reset preview and check boxes to initial values |
|
1764
cd50fbc275a1
Fix JavaScript error when help was asked while no keyword was defined.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1663
diff
changeset
|
99 if (document.frm_help.check==undefined) { return; } |
|
1899
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
100 writePreview(original_field); |
|
d6c039c5b52b
fixed javascript for help window for only one checkbox case
Richard Jones <richard@users.sourceforge.net>
parents:
1764
diff
changeset
|
101 reviseList(original_field); |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 function writePreview(val) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
105 // writes a value to the text_preview |
|
1663
09f0a54829eb
Fixed spelling of "supersede";
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1608
diff
changeset
|
106 document.frm_help.text_preview.value = val; |
|
1608
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
107 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
108 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
109 function focusField(name) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 for(i=0; i < document.forms.length; ++i) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 var obj = document.forms[i].elements[name]; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 if (obj && obj.focus) {obj.focus();} |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
114 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 function selectField(name) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 for(i=0; i < document.forms.length; ++i) { |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 var obj = document.forms[i].elements[name]; |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 if (obj && obj.focus){obj.focus();} |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
120 if (obj && obj.select){obj.select();} |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
121 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 } |
|
49dd1bf17d66
new improved help controls
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 |
