Mercurial > p > roundup > code
annotate templates/classic/html/user_utils.js @ 3909:e89bcb28f683
indexargs_url force ids to int
ids appear as hyperdb.String instances, which confused indexargs_url when they
appear in the filterspec. They need to be treated as treated as integers when
generating URLs.
It feels sort of hacky to check for 'id' like this but I'm at a loss for what
else to do in this case. Suggestions are welcome :)
Maybe we should look into using some other hyperdb class to represent ids?
this fixes [SF#783492]
Some trailing whitespace also got trimmed.
| author | Justus Pendleton <jpend@users.sourceforge.net> |
|---|---|
| date | Tue, 18 Sep 2007 16:59:42 +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 |
