annotate templates/classic/html/help_controls.js @ 3696:790363e96852

Sorting/grouping by multiple properties. - Implement sorting/grouping by multiple properties for the web interface. I'm now using @sort0/@sortdir0,@sort1/@sortdir1,... and @group0/@groupdir0,... when generating URLs from a search template. These are converted to a list internally. When saving URLs (e.g. when storing queries) I'm using @sort=prop1,prop2,... and @group=... with optional '-' prepended to individual props. This means saved URLs are backward compatible with existing trackers (and yes, this was a design goal). I need the clumsy version with @sort0,@sort1 etc, because I'm currently using several selectors and checkboxes (as the classic template does, too). I don't think there is a way around that in HTML? - Updated (hopefully all) documentation to reflect the new URL format and the consequences in the web-interface. - I've set the number of sort/group properties in the classic template to two -- this can easily be reverted by changing n_sort to 1. Richard, would you look over these changes? I've set a tag before and (will set) after commit, so that it would be easy to merge out. Don't be too scared about the size of the change, most is documentation, the guts are in cgi/templating.py and small changes in the classic template.
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Wed, 30 Aug 2006 20:28:26 +0000
parents 3f3ca882deb2
children 18def94e5150
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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

Roundup Issue Tracker: http://roundup-tracker.org/