1 | jQuery.fn.updatePermissionsForm = function() { |
---|
2 | return this.each(function() { |
---|
3 | var perms = {}; |
---|
4 | var re = /^perm\[(.+?)\]\[(.+?)\]$/; |
---|
5 | var e,prop; |
---|
6 | |
---|
7 | // Building a nice object of form elements |
---|
8 | for (var i=0; i<this.elements.length; i++) { |
---|
9 | e = this.elements[i]; |
---|
10 | |
---|
11 | if (e.name == undefined) { |
---|
12 | continue; |
---|
13 | } |
---|
14 | prop = e.name.match(re); |
---|
15 | if (!prop) { |
---|
16 | continue; |
---|
17 | } |
---|
18 | if (perms[prop[1]] == undefined) { |
---|
19 | perms[prop[1]] = {}; |
---|
20 | } |
---|
21 | perms[prop[1]][prop[2]] = e; |
---|
22 | } |
---|
23 | |
---|
24 | // Update elements status |
---|
25 | var E; |
---|
26 | for (blog in perms) { |
---|
27 | for (perm in perms[blog]) { |
---|
28 | E = perms[blog][perm]; |
---|
29 | E.onclick = function() {}; |
---|
30 | |
---|
31 | if (perm == 'admin' && !E.disabled) { |
---|
32 | perms[blog]['usage'].checked = E.checked; |
---|
33 | perms[blog]['publish'].checked = E.checked; |
---|
34 | perms[blog]['delete'].checked = E.checked; |
---|
35 | perms[blog]['contentadmin'].checked = E.checked; |
---|
36 | perms[blog]['categories'].checked = E.checked; |
---|
37 | perms[blog]['media'].checked = E.checked; |
---|
38 | perms[blog]['media_admin'].checked = E.checked; |
---|
39 | perms[blog]['usage'].disabled = E.checked; |
---|
40 | perms[blog]['publish'].disabled = E.checked; |
---|
41 | perms[blog]['delete'].disabled = E.checked; |
---|
42 | perms[blog]['contentadmin'].disabled = E.checked; |
---|
43 | perms[blog]['categories'].disabled = E.checked; |
---|
44 | perms[blog]['media'].disabled = E.checked; |
---|
45 | perms[blog]['media_admin'].disabled = E.checked; |
---|
46 | E.onclick = function() { $(this.form).updatePermissionsForm(); }; |
---|
47 | } else if (perm == 'contentadmin' && !E.disabled) { |
---|
48 | perms[blog]['usage'].checked = E.checked; |
---|
49 | perms[blog]['publish'].checked = E.checked; |
---|
50 | perms[blog]['delete'].checked = E.checked; |
---|
51 | perms[blog]['usage'].disabled = E.checked; |
---|
52 | perms[blog]['publish'].disabled = E.checked; |
---|
53 | perms[blog]['delete'].disabled = E.checked; |
---|
54 | E.onclick = function() { $(this.form).updatePermissionsForm(); }; |
---|
55 | } else if (perm == 'media_admin' && !E.disabled) { |
---|
56 | perms[blog]['media'].checked = E.checked; |
---|
57 | perms[blog]['media'].disabled = E.checked; |
---|
58 | E.onclick = function() { $(this.form).updatePermissionsForm(); }; |
---|
59 | } |
---|
60 | } |
---|
61 | } |
---|
62 | }); |
---|
63 | }; |
---|
64 | |
---|
65 | $(function() { |
---|
66 | $('.checkboxes-helpers').each(function() { |
---|
67 | dotclear.checkboxesHelpers(this); |
---|
68 | }); |
---|
69 | $('#permissions-form').updatePermissionsForm(); |
---|
70 | }); |
---|