Dotclear

source: admin/js/_users_actions.js @ 3880:e6d1f6d9d7df

Revision 3880:e6d1f6d9d7df, 3.2 KB checked in by franck <carnet.franck.paul@…>, 7 years ago (diff)

Use let and const rather than var (ES2015/ES6), use template string where is more efficient

Line 
1/*global $, jQuery, dotclear */
2'use strict';
3
4jQuery.fn.updatePermissionsForm = function() {
5  return this.each(function() {
6
7    let perms = {};
8    const re = /^perm\[(.+?)\]\[(.+?)\]$/;
9    let e, prop;
10
11    const admin = function(E, perms, re) {
12      const P = E.name.match(re);
13
14      perms[P[1]].usage.checked = E.checked;
15      perms[P[1]].publish.checked = E.checked;
16      perms[P[1]].delete.checked = E.checked;
17      perms[P[1]].contentadmin.checked = E.checked;
18      perms[P[1]].categories.checked = E.checked;
19      perms[P[1]].media.checked = E.checked;
20      perms[P[1]].media_admin.checked = E.checked;
21
22      perms[P[1]].usage.disabled = E.checked;
23      perms[P[1]].publish.disabled = E.checked;
24      perms[P[1]].delete.disabled = E.checked;
25      perms[P[1]].contentadmin.disabled = E.checked;
26      perms[P[1]].categories.disabled = E.checked;
27      perms[P[1]].media.disabled = E.checked;
28      perms[P[1]].media_admin.disabled = E.checked;
29    };
30
31    const contentadmin = function(E, perms, re) {
32      const P = E.name.match(re);
33
34      perms[P[1]].usage.checked = E.checked;
35      perms[P[1]].publish.checked = E.checked;
36      perms[P[1]].delete.checked = E.checked;
37
38      perms[P[1]].usage.disabled = E.checked;
39      perms[P[1]].publish.disabled = E.checked;
40      perms[P[1]].delete.disabled = E.checked;
41    };
42
43    const mediaadmin = function(E, perms, re) {
44      const P = E.name.match(re);
45
46      perms[P[1]].media.checked = E.checked;
47
48      perms[P[1]].media.disabled = E.checked;
49    };
50
51    // Building a nice object of form elements
52    for (let i = 0; i < this.elements.length; i++) {
53      e = this.elements[i];
54      if (e.name == undefined) {
55        continue;
56      }
57      prop = e.name.match(re);
58      if (!prop) {
59        continue;
60      }
61      if (perms[prop[1]] == undefined) {
62        perms[prop[1]] = {};
63      }
64      perms[prop[1]][prop[2]] = e;
65    }
66    // Populate states
67    for (let blog in perms) {
68      // Loop on blog
69      for (let element in perms[blog]) {
70        // Loop on permission
71        e = perms[blog][element];
72        prop = e.name.match(re);
73        if (prop[2] == 'admin') {
74          // select related permissions for admin
75          if (e.checked) {
76            admin(e, perms, re);
77          }
78          $(e).click(function() {
79            admin(this, perms, re);
80          });
81        } else if (prop[2] == 'contentadmin') {
82          // select related permissions for content admin
83          if (e.checked) {
84            contentadmin(e, perms, re);
85          }
86          $(e).click(function() {
87            contentadmin(this, perms, re);
88          });
89        } else if (prop[2] == 'media_admin') {
90          // select related permissions for media admin
91          if (e.checked) {
92            mediaadmin(e, perms, re);
93          }
94          $(e).click(function() {
95            mediaadmin(this, perms, re);
96          });
97        }
98      }
99    }
100  });
101};
102
103$(function() {
104  $('.checkboxes-helpers').each(function() {
105    dotclear.checkboxesHelpers(this, undefined, '#form-blogs input[type="checkbox"]', '#form-blogs #do-action');
106  });
107  dotclear.condSubmit('#form-blogs input[type="checkbox"]', '#form-blogs #do-action');
108  $('#permissions-form').updatePermissionsForm();
109});
Note: See TracBrowser for help on using the repository browser.

Sites map