Mercurial > p > roundup > code
annotate templates/classic/html/user_utils.js @ 3898:dd00c917fc40
per-tracker 404 templating
Currently if CGI can't map a name it raises NotFound which gets
propagated up to roundup-server which generates a plain vanilla 404
page.
This changes it so that the CGI client tries to handle NotFound itself
by rendering the appropriate template: classname.404.html (or
_generic.404.html if no class specific one is found). If the URL can't
be mapped to a DB class then we just reraise NotFound and let the
upper layer take care of it.
Also, add some basic templates for it. They aren't pretty but no worse
than what you got before and provide a jumping off point for further
customization.
This should fix [SF#403287].
| author | Justus Pendleton <jpend@users.sourceforge.net> |
|---|---|
| date | Wed, 12 Sep 2007 01:15:07 +0000 |
| parents | 18def94e5150 |
| children | 3eb45e7f0d57 |
| rev | line source |
|---|---|
|
3704
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
1 // User Editing Utilities |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
2 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
3 /** |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
4 * for new users: |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
5 * Depending on the input field which calls it, takes the value |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
6 * and dispatches it to certain other input fields: |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
7 * |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
8 * address |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
9 * +-> username |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
10 * | `-> realname |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
11 * `-> organisation |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
12 */ |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
13 function split_name(that) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
14 var raw = that.value |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
15 var val = trim(raw) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
16 if (val == '') { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
17 return |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
18 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
19 var username='' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
20 var realname='' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
21 var address='' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
22 switch (that.name) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
23 case 'address': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
24 address=val |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
25 break |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
26 case 'username': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
27 username=val |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
28 break |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
29 case 'realname': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
30 realname=val |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
31 break |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
32 default: |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
33 alert('Ooops - unknown name field '+that.name+'!') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
34 return |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
35 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
36 var the_form = that.form; |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
37 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
38 function field_empty(name) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
39 return the_form[name].value == '' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
40 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
41 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
42 // no break statements - on purpose! |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
43 switch (that.name) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
44 case 'address': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
45 var split1 = address.split('@') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
46 if (field_empty('username')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
47 username = split1[0] |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
48 the_form.username.value = username |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
49 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
50 if (field_empty('organisation')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
51 the_form.organisation.value = default_organisation(split1[1]) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
52 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
53 case 'username': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
54 if (field_empty('realname')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
55 realname = Cap(username.split('.').join(' ')) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
56 the_form.realname.value = realname |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
57 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
58 case 'realname': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
59 if (field_empty('username')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
60 username = Cap(realname.replace(' ', '.')) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
61 the_form.username.value = username |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
62 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
63 if (the_form.firstname && the_form.lastname) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
64 var split2 = realname.split(' ') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
65 var firstname='', lastname='' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
66 firstname = split2[0] |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
67 lastname = split2.slice(1).join(' ') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
68 if (field_empty('firstname')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
69 the_form.firstname.value = firstname |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
70 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
71 if (field_empty('lastname')) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
72 the_form.lastname.value = lastname |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
73 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
74 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
75 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
76 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
77 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
78 function SubCap(str) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
79 switch (str) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
80 case 'de': case 'do': case 'da': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
81 case 'du': case 'von': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
82 return str; |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
83 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
84 if (str.toLowerCase().slice(0,2) == 'mc') { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
85 return 'Mc'+str.slice(2,3).toUpperCase()+str.slice(3).toLowerCase() |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
86 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
87 return str.slice(0,1).toUpperCase()+str.slice(1).toLowerCase() |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
88 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
90 function Cap(str) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
91 var liz = str.split(' ') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
92 for (var i=0; i<liz.length; i++) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
93 liz[i] = SubCap(liz[i]) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
94 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
95 return liz.join(' ') |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
96 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
97 |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
98 /** |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
99 * Takes a domain name (behind the @ part of an email address) |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
100 * Customise this to handle the mail domains you're interested in |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
101 */ |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
102 function default_organisation(orga) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
103 switch (orga.toLowerCase()) { |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
104 case 'gmx': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
105 case 'yahoo': |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
106 return '' |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
107 default: |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
108 return orga |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
109 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
110 } |
|
18def94e5150
macro th_label:
Tobias Herp <tobias-herp@users.sourceforge.net>
parents:
diff
changeset
|
111 |
