Capability Manager Enhanced - Version 2.3.5

Version Description

  • 13 Apr 2022 =
    • Feature : Export / Import for new features
    • Change : Clarify captions on Roles, Backup screens
    • Fixed : Multisite: Don't apply Feature Restrictions to Super Administrators unless constant PP_CAPABILITIES_RESTRICT_SUPER_ADMIN is defined
    • Fixed : Capabilities could not be updated if third party code executes too early. Now support constant PP_CAPABILITIES_COMPAT_MODE to work around conflicts.
    • Fixed : Coding standards - WordPress VIP scan compliance improvements
    • Compat : LoginWP - custom redirect failed
    • Lang : New French, Italian and Spanish translations
Download this release

Release Info

Developer kevinB
Plugin Icon 128x128 Capability Manager Enhanced
Version 2.3.5
Comparing to
See all releases

Code changes from version 2.3.4 to 2.3.5

Files changed (48) hide show
  1. capsman-enhanced.php +7 -12
  2. classes/pp-capabilities-notices.php +17 -22
  3. common/css/admin.css +835 -703
  4. common/js/admin.dev.js +236 -161
  5. common/js/admin.js +1 -5
  6. composer.lock +36 -11
  7. framework/styles/admin.css +4 -3
  8. includes/admin-load.php +5 -1
  9. includes/admin.php +87 -57
  10. includes/backup-handler.php +182 -1
  11. includes/backup.php +72 -3
  12. includes/features/admin-features.php +25 -0
  13. includes/features/editor-features-classic.php +3 -1
  14. includes/features/editor-features-gutenberg.php +3 -1
  15. includes/features/features-block-script.js +3 -0
  16. includes/features/restrict-admin-features.php +8 -3
  17. includes/features/restrict-editor-features.php +5 -2
  18. includes/filters.php +0 -9
  19. includes/functions-admin.php +45 -0
  20. includes/handler.php +1 -57
  21. includes/manager.php +76 -8
  22. includes/roles/class/class-pp-roles-actions.php +176 -62
  23. includes/roles/class/class-pp-roles-admin.php +380 -0
  24. includes/roles/class/class-pp-roles-list-table.php +141 -8
  25. includes/roles/class/class-pp-roles-manager.php +41 -3
  26. includes/roles/js/pp-roles-admin.js +14 -0
  27. includes/roles/roles-functions.php +41 -0
  28. includes/roles/roles.php +14 -32
  29. languages/capsman-enhanced-es_ES.mo +0 -0
  30. languages/capsman-enhanced-es_ES.po +70 -10
  31. languages/capsman-enhanced-fr_FR.mo +0 -0
  32. languages/capsman-enhanced-fr_FR.po +1246 -3185
  33. languages/capsman-enhanced-it_IT.mo +0 -0
  34. languages/capsman-enhanced-it_IT.po +67 -7
  35. readme.txt +10 -1
  36. vendor/composer/ClassLoader.php +142 -15
  37. vendor/composer/InstalledVersions.php +350 -0
  38. vendor/composer/autoload_classmap.php +1 -0
  39. vendor/composer/autoload_files.php +1 -0
  40. vendor/composer/autoload_real.php +11 -4
  41. vendor/composer/autoload_static.php +6 -0
  42. vendor/composer/installed.json +267 -245
  43. vendor/composer/installed.php +68 -0
  44. vendor/composer/platform_check.php +26 -0
  45. vendor/publishpress/wordpress-banners/BannersMain.php +84 -79
  46. vendor/publishpress/wordpress-banners/composer.json +5 -0
  47. vendor/publishpress/wordpress-reviews/ReviewsController.php +12 -30
  48. vendor/publishpress/wordpress-reviews/phpcs.xml.dist +15 -0
capsman-enhanced.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
- * Version: 2.3.4
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
@@ -25,19 +25,19 @@
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2022 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
- * @version 2.3.4
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
- define('CAPSMAN_VERSION', '2.3.4');
33
- define('CAPSMAN_ENH_VERSION', '2.3.4');
34
- define('PUBLISHPRESS_CAPS_VERSION', '2.3.4');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
38
  if ( false !== strpos($plugin_file, 'capsman.php') ) {
39
  add_action('admin_notices', function() {
40
- echo '<div id="message" class="error fade" style="color: black">' . esc_html__( '<strong>Error:</strong> PublishPress Capabilities cannot function because another copy of Capability Manager is active.', 'capsman-enhanced' ) . '</div>';
41
  });
42
  return;
43
  }
@@ -67,7 +67,7 @@ if ($pro_active) {
67
  function($links, $file)
68
  {
69
  if ($file == plugin_basename(__FILE__)) {
70
- $links[]= esc_html__('<strong>This plugin can be deleted.</strong>', 'press-permit-core');
71
  }
72
 
73
  return $links;
@@ -144,11 +144,6 @@ if ( is_multisite() )
144
  // Check if Permissions is installed
145
  if (!cme_is_plugin_active('press-permit-core.php') && !cme_is_plugin_active('presspermit-pro.php')) {
146
  define('CAPSMAN_PERMISSIONS_INSTALLED', false);
147
-
148
- // Sidebar banners library
149
- if (!defined('PP_WP_BANNERS_VERSION')) {
150
- require_once __DIR__ . '/vendor/publishpress/wordpress-banners/BannersMain.php';
151
- }
152
  } else {
153
  define('CAPSMAN_PERMISSIONS_INSTALLED', true);
154
  }
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
+ * Version: 2.3.5
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2022 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
+ * @version 2.3.5
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
+ define('CAPSMAN_VERSION', '2.3.5');
33
+ define('CAPSMAN_ENH_VERSION', '2.3.5');
34
+ define('PUBLISHPRESS_CAPS_VERSION', '2.3.5');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
38
  if ( false !== strpos($plugin_file, 'capsman.php') ) {
39
  add_action('admin_notices', function() {
40
+ echo '<div id="message" class="error fade" style="color: black">' . sprintf(esc_html__('%1s Error: %2s PublishPress Capabilities cannot function because another copy of Capability Manager is active.', 'capsman-enhanced'), '<strong>', '</strong>') . '</div>';
41
  });
42
  return;
43
  }
67
  function($links, $file)
68
  {
69
  if ($file == plugin_basename(__FILE__)) {
70
+ $links[]= '<strong>' . esc_html__('This plugin can be deleted.', 'capsman-enhanced') . '</strong>';
71
  }
72
 
73
  return $links;
144
  // Check if Permissions is installed
145
  if (!cme_is_plugin_active('press-permit-core.php') && !cme_is_plugin_active('presspermit-pro.php')) {
146
  define('CAPSMAN_PERMISSIONS_INSTALLED', false);
 
 
 
 
 
147
  } else {
148
  define('CAPSMAN_PERMISSIONS_INSTALLED', true);
149
  }
classes/pp-capabilities-notices.php CHANGED
@@ -4,10 +4,10 @@ class PP_Capabilities_Notices
4
  {
5
 
6
  /**
7
- *
8
- * Cookie name to use
9
  */
10
- protected $cookie = 'pp_roles_notification';
11
 
12
  /**
13
  * All types of notifications allowed
@@ -30,20 +30,16 @@ class PP_Capabilities_Notices
30
  public function __construct()
31
  {
32
  /**
33
- * Read cookie if exist
34
  */
35
- if (isset($_COOKIE[$this->cookie])) {
36
- $messages = sanitize_text_field($_COOKIE[$this->cookie]);
37
  $messages = @json_decode($messages, true);
38
  if (is_array($messages)) {
39
- $this->messages = array_map('esc_html', $messages);
40
- }
41
-
42
- /**
43
- * Delete the cookie by setting an expiration time before current time
44
- */
45
- if (!headers_sent()) {
46
- @setcookie($this->cookie, '', strtotime("-1 month"), '/; samesite=strict');
47
  }
48
  }
49
  }
@@ -59,10 +55,15 @@ class PP_Capabilities_Notices
59
  $messages = $this->get($type);
60
  foreach ($messages as $message) {
61
  if (is_string($message)) {
62
- printf('<div class="notice notice-%s is-dismissible"><p>%s</p></div>', esc_attr($type), urldecode($message));
63
  }
64
  }
65
  }
 
 
 
 
 
66
  }
67
 
68
  /**
@@ -101,13 +102,7 @@ class PP_Capabilities_Notices
101
  //Update the messages
102
  $this->messages[$type] = $messages;
103
 
104
- if (!headers_sent()) {
105
- /**
106
- * Set the cookie to read in the next call
107
- * Expiration time is set to a long number to avoid timezone differences
108
- */
109
- @setcookie($this->cookie, json_encode($this->messages), strtotime('+1 month'), '/; samesite=strict');
110
- }
111
 
112
  return true;
113
  }
4
  {
5
 
6
  /**
7
+ * Notification name to use
8
+ *
9
  */
10
+ protected $notification = 'pp_roles_notification';
11
 
12
  /**
13
  * All types of notifications allowed
30
  public function __construct()
31
  {
32
  /**
33
+ * Read notification if exist
34
  */
35
+ if (get_option($this->notification)) {
36
+ $messages = get_option($this->notification);
37
  $messages = @json_decode($messages, true);
38
  if (is_array($messages)) {
39
+ $this->messages = [];
40
+ foreach($messages as $message_type => $message_content){
41
+ $this->messages[$message_type] = array_map('esc_html', $message_content);
42
+ }
 
 
 
 
43
  }
44
  }
45
  }
55
  $messages = $this->get($type);
56
  foreach ($messages as $message) {
57
  if (is_string($message)) {
58
+ printf('<div class="notice notice-%s is-dismissible"><p>%s</p></div>', esc_attr($type), esc_html($message));
59
  }
60
  }
61
  }
62
+
63
+ /**
64
+ * Delete the notification after display
65
+ */
66
+ delete_option($this->notification);
67
  }
68
 
69
  /**
102
  //Update the messages
103
  $this->messages[$type] = $messages;
104
 
105
+ update_option($this->notification, json_encode($this->messages));
 
 
 
 
 
 
106
 
107
  return true;
108
  }
common/css/admin.css CHANGED
@@ -1,703 +1,835 @@
1
- /**
2
- * Settings for admin dashboard.
3
- * Based on the styles for Maintenance Mode plugin by Michael Wöhrer
4
- *
5
- * @version $Rev: 198515 $
6
- * @author Jordi Canals
7
- * @copyright Copyright (C) 2009, 2010 Jordi Canals
8
- * @license GNU General Public License version 2
9
- * @link http://alkivia.org
10
- * @package Alkivia
11
- * @subpackage CapsMan
12
- *
13
-
14
- Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
15
-
16
- This program is free software; you can redistribute it and/or
17
- modify it under the terms of the GNU General Public License
18
- version 2 as published by the Free Software Foundation.
19
-
20
- This program is distributed in the hope that it will be useful,
21
- but WITHOUT ANY WARRANTY; without even the implied warranty of
22
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
- GNU General Public License for more details.
24
-
25
- You should have received a copy of the GNU General Public License
26
- along with this program. If not, see <http://www.gnu.org/licenses/>.
27
- */
28
-
29
-
30
- /* ====================================================== SIDEBAR ICONS */
31
-
32
- a.cap_type {
33
- text-decoration: none;
34
- }
35
-
36
- a.cap_type:hover {
37
- text-decoration: underline;
38
- }
39
-
40
- ul.cme-listhoriz li {
41
- text-align: center;
42
- padding-right: 1em;
43
- }
44
-
45
- ul.cme-listhoriz li table{
46
- text-align: center;
47
- }
48
-
49
-
50
- ul.cme-listhoriz {
51
- width: 100%;
52
- clear: both;
53
- float: left;
54
- margin: 0;
55
- padding: 0;
56
- }
57
-
58
- ul.cme-listhoriz li {
59
- list-style: none;
60
- float: left;
61
- margin: 0;
62
- }
63
-
64
-
65
- div.cme-listhoriz h3 {
66
- margin: 0.2em;
67
- }
68
-
69
- div.cme-cap-type-tables {
70
- border: 1px solid black;
71
- }
72
-
73
- /*
74
- table.cme-typecaps {
75
-
76
- }
77
- */
78
-
79
- table .cme-typecaps td:first-of-type {
80
- text-align: left;
81
- }
82
-
83
- table .cme-typecaps td {
84
- text-align: center;
85
- height: 2em;
86
- }
87
-
88
- table .cme-typecaps th:first-of-type {
89
- width: 160px;
90
- }
91
-
92
- table .cme-typecaps th {
93
- cursor: pointer;
94
- text-align: center;
95
- }
96
-
97
- table.cme-typecaps span.cap-x {
98
- display: none;
99
- cursor: pointer;
100
- }
101
-
102
- table.cme-checklist span.cap-x {
103
- cursor: pointer;
104
- }
105
-
106
- table.cme-checklist tr td input[type="checkbox"] {
107
- margin-right: 10px !important;
108
- }
109
-
110
- h3.cme-cap-section {
111
- margin-top:0;
112
- }
113
-
114
- a.neg-cap, a.cap-on, a.type-on, a.neg-type-caps, a.cme-neg-all {
115
- text-decoration: none;
116
- }
117
-
118
- span.cap-x, a.cme-neg-all {
119
- color: red;
120
- font-size: 1.5em;
121
- padding-left: 1px;
122
- padding-right: 1px;
123
- vertical-align: middle;
124
- }
125
-
126
- a.cme-switch-all {
127
- color: black;
128
- font-size: 1.5em;
129
- padding-right: 1px;
130
- padding-right: 1px;
131
- vertical-align: middle;
132
- text-decoration: line-through !important;
133
- }
134
-
135
- td.cap-yes span {
136
- color:green;font-weight:bold;
137
- }
138
-
139
- td.cap-no {
140
- color:#777;
141
- }
142
-
143
- td.cap-neg label span {
144
- color: red;
145
- }
146
-
147
- td.cap-neg input {
148
- display:none;
149
- }
150
-
151
- td.cap-no span.cap-x, td.cap-yes span.cap-x {
152
- display:none;
153
- }
154
-
155
- td.cap-neg span.cap-x {
156
- display:inline;
157
- }
158
-
159
- td.cap-neg a.neg-cap {
160
- display:none;
161
- }
162
-
163
- td.cap-metagroup label span {
164
- color: #080 !important;
165
- }
166
-
167
- td.cap-locked a.neg-cap {
168
- display: none !important;
169
- }
170
-
171
- a.type-off, a.neg-cap, a.cme-neg-all, a.neg-type-caps {
172
- color: #800;
173
- }
174
-
175
- a.type-on, a.cap-on, a.cme-switch-all {
176
- color: black;
177
- }
178
-
179
- input.cme-check-all, a.cme-neg-all {
180
- margin-right: 10px;
181
- padding-right: 10px;
182
- }
183
-
184
- #akmin input.button {
185
- margin-top: 5px;
186
- }
187
-
188
- #akmin input.button-primary {
189
- margin: 0;
190
- }
191
-
192
- #akmin td.sidebar {
193
- width: 300px;
194
- }
195
-
196
- #akmin .cme-backup-tool a {
197
- padding-left:0;
198
- }
199
-
200
- #akmin input.regular-text {
201
- width: 200px;
202
- }
203
-
204
- #akmin input.tight-text {
205
- width: 125px;
206
- }
207
-
208
- .cme-subtext {
209
- color: #686868;
210
- font-style: italic;
211
- margin-top:5px;
212
- }
213
-
214
- td.cm-has-via-pp {
215
- background-color: #84fb84;
216
- }
217
-
218
- div.pressshack-admin-wrapper footer {
219
- padding-right: 5px;
220
- }
221
-
222
- .toplevel_page_pp-capabilities div.pressshack-admin-wrapper footer {
223
- padding-right: 270px;
224
- }
225
-
226
- #akmin div.publishpress-headline {
227
- line-height:25px;
228
- }
229
-
230
- #akmin div.publishpress-filters {
231
- margin-bottom: 20px; margin-top: 10px;
232
- }
233
-
234
- #akmin span.publishpress-thanks{
235
- margin-left:5px;
236
- color:#655997;
237
- white-space:nowrap;
238
- }
239
-
240
- #akmin span.publishpress-thanks,#akmin span.publishpress-thanks a,#akmin span.publishpress-thanks a:visited {
241
- color:#655997;
242
- font-weight:bold;
243
- }
244
-
245
- table#akmin td.sidebar li.publishpress-contact{
246
- text-align:center;
247
- }
248
-
249
- table#akmin td.sidebar li.publishpress-contact a{
250
- padding:5px 0 5px 0;
251
- }
252
-
253
- #pp_features {
254
- display:none;
255
- border:1px solid #eee;
256
- padding:5px;
257
- text-align:center;
258
- min-width:600px;
259
- }
260
-
261
- #pp_features div.pp-logo {
262
- text-align: center;
263
- }
264
-
265
- #pp_features div.features-wrap {
266
- margin-left: auto;
267
- margin-right: auto;
268
- text-align: center;
269
- width: 600px;
270
- }
271
-
272
- #pp_features ul.pp-features {
273
- list-style: none;
274
- padding-top:10px;
275
- text-align:left;
276
- margin-left: auto;
277
- }
278
-
279
- #pp_features ul.pp-features li:before {
280
- content: "\2713\0020";
281
- }
282
-
283
- #pp_features ul.pp-features li {
284
- padding-bottom: 5px;
285
- }
286
-
287
- #pp_features img.cme-play {
288
- margin-bottom: -3px;
289
- margin-left: 5px;
290
- }
291
-
292
- div.publishpress-caps-manage span.manage-members {
293
- margin-left:5px;
294
- font-weight:normal;
295
- color: #777;
296
- }
297
-
298
- div.publishpress-caps-manage span.manage-members a {
299
- color: #777;
300
- }
301
-
302
- div.publishpress-caps-manage span.manage-members a:hover {
303
- text-decoration: underline;
304
- color:#655997;
305
- }
306
-
307
- div.publishpress-headline .cme-subtext a {
308
- font-weight: bold;
309
- }
310
-
311
- div.publishpress-headline .cme-subtext a:hover {
312
- text-decoration: underline;
313
- }
314
-
315
- div.publishpress-caps-backup th {
316
- text-align:right;
317
- padding-top:28px;
318
- width: 140px;
319
- }
320
-
321
- div.publishpress-caps-backup p.description {max-width:620px !important;}
322
-
323
- div.publishpress-caps-backup #cme_select_restore_div {height:250px;}
324
- div.publishpress-caps-backup #cme_select_restore {
325
- list-style:none;
326
- max-height:250px;
327
- margin:0;
328
- overflow:auto;
329
- padding:0;
330
- background-color: #eee;
331
- padding: 5px;
332
- width: min-content;
333
- text-indent:10px;
334
- }
335
- div.publishpress-caps-backup #cme_select_restore li {
336
- padding: 7px 15px 7px 7px;
337
- white-space: nowrap;
338
- background-color: #f4f4f4;
339
- margin: 0;
340
- line-height:25px;
341
- }
342
-
343
- div.publishpress-caps-backup #cme_select_restore li label {
344
- font-size: 13px;
345
- }
346
-
347
- div.publishpress-caps-backup #cme_select_restore li:nth-child(even){
348
- background-color:white;
349
- }
350
-
351
- div.cme-selected-backup-caption {
352
- padding-left: 5px;
353
- }
354
-
355
- div.pp-caps-backup-button {
356
- margin-top: 10px;
357
- }
358
-
359
- div.cme-restore-button {
360
- margin-top: 25px;
361
- padding-left: 5px;
362
- }
363
-
364
- div.publishpress-caps-backup td.cme-backup-info{
365
- padding:0;
366
- }
367
-
368
- div.cme-show-backup {
369
- padding-left:20px;
370
- }
371
-
372
- div.publishpress-caps-backup td.cme-backup-info li {
373
- display:none;
374
- }
375
-
376
- div.publishpress-caps-backup td.cme-backup-info li.cme-change {
377
- display: list-item;
378
- }
379
-
380
- div.publishpress-caps-backup td.cme-backup-info .cme-plus {
381
- font-weight: bold;
382
- color: green;
383
- }
384
-
385
- .cme-backup-info ul.pp-restore-caps {
386
- display: inline-block;
387
- }
388
-
389
- ul.pp-restore-caps li {
390
- margin-left: 20px;
391
- }
392
-
393
- span.pp-restore-caps-no-change {
394
- font-style: italic;
395
- padding-left : 20px;
396
- }
397
-
398
- div.publishpress-caps-backup td.cme-backup-info .cme-minus {
399
- font-weight: bold;
400
- color: #a00;
401
- text-decoration: line-through;
402
- }
403
-
404
- div.publishpress-caps-backup td.cme-backup-info .cme-negate {
405
- font-weight: bold;
406
- background-color: #a00;
407
- color: white;
408
- text-decoration: line-through;
409
- }
410
-
411
- .cme-backup-info ul.toplevel_page_pp-capabilities {
412
- display: inline-block;
413
- padding-left:30px;
414
- }
415
-
416
- .restrict-column input[type=checkbox]:checked:focus {
417
- border-color: crimson;
418
- box-shadow: 0 0 0 1px crimson;
419
- }
420
-
421
- .restrict-column input[type=checkbox]:checked::before {
422
- content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiIHZpZXdCb3g9IjAgMCAyMCAyMCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7Ij48cGF0aCBkPSJNMTQuOTUgNi40NkwxMS40MSAxMGwzLjU0IDMuNTRsLTEuNDEgMS40MUwxMCAxMS40MmwtMy41MyAzLjUzbC0xLjQyLTEuNDJMOC41OCAxMEw1LjA1IDYuNDdsMS40Mi0xLjQyTDEwIDguNThsMy41NC0zLjUzeiIgZmlsbD0iI2RjMTQzYyIvPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0icmdiYSgwLCAwLCAwLCAwKSIgLz48L3N2Zz4=");
423
- }
424
-
425
- #ppcb-tab-reset p {
426
- text-align:center;
427
- }
428
-
429
- #ppcb-tab-reset span.pp-caps-warning {
430
- color:red;
431
- }
432
-
433
- table#akmin tr td input[type=checkbox] {
434
- margin: 0;
435
- }
436
-
437
-
438
- .pp-capability-menus {
439
- width: 100%;
440
- overflow: hidden;
441
- background: #fff;
442
- background: linear-gradient(90deg, #fafafa 0%, #fafafa 20%, #fff 20%, #fff 100%);
443
- }
444
-
445
- .pp-capability-menus .pp-capability-menus-wrap {
446
- float: left;
447
- width: 100%;
448
- margin-left: -1px;
449
- margin-right: 20px;
450
- }
451
-
452
-
453
- #pp-capability-menu-wrapper table {
454
- border-right: none;
455
- border-top: none;
456
- border-bottom: none;
457
- }
458
-
459
- #pp-capability-menu-wrapper table td,
460
- #pp-capability-menu-wrapper table th {
461
- padding: 10px;
462
- padding-bottom: 10px;
463
- font-size: 13px;
464
- line-height: 20px;
465
- }
466
-
467
- #pp-capability-menu-wrapper table td h4.ppc-menu-row-section {
468
- margin-bottom: 0;
469
- }
470
-
471
- #pp-capability-menu-wrapper table td {
472
- padding: 9px;
473
- }
474
-
475
- #pp-capability-menu-wrapper tbody tr:last-of-type td {
476
- border-bottom: none;
477
- }
478
-
479
- #pp-capability-menu-wrapper tfoot th {
480
- border-color: #eee;
481
- }
482
-
483
-
484
- table#akmin .pp-capability-menus-select .restrict-column {
485
- min-width: 90px;
486
- text-align: center;
487
- display: table-cell !important;
488
- clear: none !important;
489
- }
490
-
491
- .pp-capability-menus .menu-item-link {
492
- display: inline;
493
- color: #0073aa;
494
- margin: -4px;
495
- line-height: inherit;
496
- padding: 4px 8px;
497
- border: 1px solid transparent;
498
- background: transparent;
499
- border-radius: 0;
500
- outline: none;
501
- -webkit-transition: all 0.25s ease-out;
502
- -moz-transition: all 0.25s ease-out;
503
- -o-transition: all 0.25s ease-out;
504
- transition: all 0.25s ease-out;
505
- }
506
-
507
- .pp-capability-menus .menu-item-link:hover,
508
- .pp-capability-menus .menu-item-link:focus {
509
- border-color: #eee;
510
- background: #fafafa;
511
- cursor: pointer;
512
- }
513
-
514
- .pp-capability-menus .menu-item-link:active {
515
- color: #0073aa;
516
- border-color: #0073aa;
517
- }
518
-
519
- .pp-capability-menus .check-all-menu-link,
520
- .pp-capability-menus .check-all-menu-link:active {
521
- color: #555;
522
- }
523
-
524
- .pp-capability-menus .menu-item-link.restricted,
525
- .pp-capability-menus .menu-item-link.restricted:active {
526
- color: crimson;
527
- }
528
-
529
- .pp-capability-menus .menu-item-link.disabled,
530
- .pp-capability-menus .menu-item-link.disabled:active {
531
- color: #555;
532
- }
533
-
534
- .pp-capability-menus .menu-item-link + .dashicons {
535
- display: none;
536
- margin-top: 1px;
537
- margin-bottom: -1px;
538
- line-height: inherit;
539
- }
540
-
541
- .pp-capability-menus .menu-item-link:hover + .dashicons,
542
- .pp-capability-menus .menu-item-link:focus + .dashicons {
543
- display: inline-block;
544
- }
545
-
546
- .pp-capability-menus-wrapper .button-primary {
547
- margin-bottom: 25px !important;
548
- }
549
-
550
-
551
- .pp-capability-menus-wrapper .tooltip {
552
- position: relative;
553
- display: inline-block;
554
- border-bottom: 1px dotted black;
555
- }
556
-
557
- .pp-capability-menus-wrapper .tooltip .tooltiptext {
558
- visibility: hidden;
559
- width: 120px;
560
- background-color: black;
561
- color: #fff;
562
- text-align: center;
563
- padding: 5px 0;
564
- border-radius: 6px;
565
-
566
- position: absolute;
567
- z-index: 1;
568
- }
569
-
570
- .pp-capability-menus-wrapper .tooltip:hover .tooltiptext {
571
- visibility: visible;
572
- }
573
-
574
- .capabilities_page_pp-capabilities-admin-menus input.ppc-admin-menu-submit,
575
- .capabilities_page_pp-capabilities-nav-menus input.ppc-nav-menu-submit {
576
- margin-bottom: 10px !important;
577
- }
578
-
579
- .pp-capability-menus-wrapper .features-section-header {
580
- padding-left: 10px !important;
581
- }
582
-
583
-
584
- body.capabilities_page_pp-capabilities-admin-features .pp-capability-menus-select .restrict-column {
585
- width: 70px !important;
586
- }
587
-
588
-
589
- /* Filters */
590
- .ppc-filter-wrapper {
591
- float: right;
592
- margin-bottom: 15px;
593
- display: flex;
594
- }
595
-
596
- .ppc-filter-wrapper .button {
597
- margin-left: 5px;
598
- }
599
-
600
- .ppc-filter-no-results {
601
- margin-top: 20px;
602
- }
603
-
604
- /* ====================================================== Main Screen */
605
-
606
- #ppc-capabilities-wrapper {
607
- display: grid;
608
- grid-template-columns: 1fr 4fr;
609
- min-height: 400px;
610
- }
611
-
612
- /*
613
- #ppc-capabilities-wrapper .ppc-capabilities-tabs {
614
-
615
- }
616
- */
617
-
618
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul {
619
- padding: 0;
620
- margin: 0;
621
- display: block;
622
- }
623
-
624
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li {
625
- margin: 0;
626
- padding: 15px 12px;
627
- background: #f0f0f1;
628
- cursor: pointer;
629
- border-bottom: 1px solid #ccc;
630
- border-right: 1px solid #ccc;
631
- font-size: 1.1em;
632
- line-height: 1.3em;
633
- }
634
-
635
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li:last-child {
636
- margin-bottom: 20px;
637
- }
638
-
639
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
640
- background: #fff;
641
- border-right-color: #fff;
642
- }
643
-
644
- #ppc-capabilities-wrapper .ppc-capabilities-content > div {
645
- padding: 20px;
646
- }
647
-
648
- #ppc-capabilities-wrapper .ppc-capabilities-content > div > h3 {
649
- margin-top: 0;
650
- display: inline-block;
651
- }
652
-
653
- @media (max-width: 1199px) {
654
-
655
- #ppc-capabilities-wrapper {
656
- display: block;
657
- }
658
-
659
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li,
660
- #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
661
- border-right: none;
662
- }
663
-
664
- #publishpress_caps_form #akmin td.content,
665
- #publishpress_caps_form #akmin td.sidebar {
666
- display: block;
667
- padding: 0;
668
- }
669
-
670
- #publishpress_caps_form #akmin td.content {
671
- margin-bottom: 40px;
672
- }
673
- }
674
-
675
- @media (max-width: 1184px) {
676
-
677
- /* Filters */
678
- .ppc-filter-wrapper {
679
- float: none;
680
- margin-bottom: 25px;
681
- }
682
- }
683
-
684
- @media (max-width: 782px) {
685
-
686
- table.cme-checklist.form-table tr td {
687
- padding: 15px 10px;
688
- }
689
-
690
- table .cme-typecaps th:first-of-type {
691
- width: 110px;
692
- }
693
-
694
- .pp-capability-menus {
695
- background: linear-gradient(90deg, #fafafa 0%, #fafafa 48px, #fff 48px, #fff 100%);
696
- }
697
-
698
- #pp-capability-menu-wrapper table td,
699
- #pp-capability-menu-wrapper table th {
700
- line-height: 24px;
701
- }
702
-
703
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Settings for admin dashboard.
3
+ * Based on the styles for Maintenance Mode plugin by Michael Wöhrer
4
+ *
5
+ * @version $Rev: 198515 $
6
+ * @author Jordi Canals
7
+ * @copyright Copyright (C) 2009, 2010 Jordi Canals
8
+ * @license GNU General Public License version 2
9
+ * @link http://alkivia.org
10
+ * @package Alkivia
11
+ * @subpackage CapsMan
12
+ *
13
+
14
+ Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
15
+
16
+ This program is free software; you can redistribute it and/or
17
+ modify it under the terms of the GNU General Public License
18
+ version 2 as published by the Free Software Foundation.
19
+
20
+ This program is distributed in the hope that it will be useful,
21
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
+ GNU General Public License for more details.
24
+
25
+ You should have received a copy of the GNU General Public License
26
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
27
+ */
28
+
29
+
30
+ /* ====================================================== SIDEBAR ICONS */
31
+
32
+ a.cap_type {
33
+ text-decoration: none;
34
+ }
35
+
36
+ a.cap_type:hover {
37
+ text-decoration: underline;
38
+ }
39
+
40
+ ul.cme-listhoriz li {
41
+ text-align: center;
42
+ padding-right: 1em;
43
+ }
44
+
45
+ ul.cme-listhoriz li table{
46
+ text-align: center;
47
+ }
48
+
49
+
50
+ ul.cme-listhoriz {
51
+ width: 100%;
52
+ clear: both;
53
+ float: left;
54
+ margin: 0;
55
+ padding: 0;
56
+ }
57
+
58
+ ul.cme-listhoriz li {
59
+ list-style: none;
60
+ float: left;
61
+ margin: 0;
62
+ }
63
+
64
+
65
+ div.cme-listhoriz h3 {
66
+ margin: 0.2em;
67
+ }
68
+
69
+ div.cme-cap-type-tables {
70
+ border: 1px solid black;
71
+ }
72
+
73
+ /*
74
+ table.cme-typecaps {
75
+
76
+ }
77
+ */
78
+
79
+ table .cme-typecaps td:first-of-type {
80
+ text-align: left;
81
+ }
82
+
83
+ table .cme-typecaps td {
84
+ text-align: center;
85
+ height: 2em;
86
+ }
87
+
88
+ table .cme-typecaps th:first-of-type {
89
+ width: 160px;
90
+ }
91
+
92
+ table .cme-typecaps th {
93
+ cursor: pointer;
94
+ text-align: center;
95
+ }
96
+
97
+ table.cme-typecaps span.cap-x {
98
+ display: none;
99
+ cursor: pointer;
100
+ }
101
+
102
+ table.cme-checklist span.cap-x {
103
+ cursor: pointer;
104
+ }
105
+
106
+ table.cme-checklist tr td input[type="checkbox"] {
107
+ margin-right: 10px !important;
108
+ }
109
+
110
+ h3.cme-cap-section {
111
+ margin-top:0;
112
+ }
113
+
114
+ a.neg-cap, a.cap-on, a.type-on, a.neg-type-caps, a.cme-neg-all {
115
+ text-decoration: none;
116
+ }
117
+
118
+ span.cap-x, a.cme-neg-all {
119
+ color: red;
120
+ font-size: 1.5em;
121
+ padding-left: 1px;
122
+ padding-right: 1px;
123
+ vertical-align: middle;
124
+ }
125
+
126
+ a.cme-switch-all {
127
+ color: black;
128
+ font-size: 1.5em;
129
+ padding-right: 1px;
130
+ padding-right: 1px;
131
+ vertical-align: middle;
132
+ text-decoration: line-through !important;
133
+ }
134
+
135
+ td.cap-yes span {
136
+ color:green;font-weight:bold;
137
+ }
138
+
139
+ td.cap-no {
140
+ color:#777;
141
+ }
142
+
143
+ td.cap-neg label span {
144
+ color: red;
145
+ }
146
+
147
+ td.cap-neg input {
148
+ display:none;
149
+ }
150
+
151
+ td.cap-no span.cap-x, td.cap-yes span.cap-x {
152
+ display:none;
153
+ }
154
+
155
+ td.cap-neg span.cap-x {
156
+ display:inline;
157
+ }
158
+
159
+ td.cap-neg a.neg-cap {
160
+ display:none;
161
+ }
162
+
163
+ td.cap-metagroup label span {
164
+ color: #080 !important;
165
+ }
166
+
167
+ td.cap-locked a.neg-cap {
168
+ display: none !important;
169
+ }
170
+
171
+ tr.cme-bulk-select td {
172
+ padding-top: 8px;
173
+ padding-bottom: 8px;
174
+ color: black;
175
+ -webkit-user-select: none;
176
+ -moz-user-select: none;
177
+ -ms-user-select: none;
178
+ user-select: none;
179
+ }
180
+
181
+ tr.cme-bulk-select span {
182
+ vertical-align: bottom;
183
+ }
184
+
185
+ a.type-off, a.neg-cap, a.cme-neg-all, a.neg-type-caps {
186
+ color: #800;
187
+ }
188
+
189
+ a.type-on, a.cap-on, a.cme-switch-all {
190
+ color: black;
191
+ }
192
+
193
+ input.cme-check-all, a.cme-neg-all {
194
+ margin-right: 10px;
195
+ padding-right: 10px;
196
+ }
197
+
198
+ #akmin input.button {
199
+ margin-top: 5px;
200
+ }
201
+
202
+ #akmin input.button-primary {
203
+ margin: 0;
204
+ }
205
+
206
+ #akmin td.sidebar {
207
+ width: 300px;
208
+ }
209
+
210
+ #akmin .cme-backup-tool a {
211
+ padding-left:0;
212
+ }
213
+
214
+ #akmin input.regular-text {
215
+ width: 200px;
216
+ }
217
+
218
+ #akmin input.tight-text {
219
+ width: 125px;
220
+ }
221
+
222
+ .cme-subtext {
223
+ color: #686868;
224
+ font-style: italic;
225
+ margin-top:5px;
226
+ }
227
+
228
+ td.cm-has-via-pp {
229
+ background-color: #84fb84;
230
+ }
231
+
232
+ div.pressshack-admin-wrapper footer {
233
+ padding-right: 5px;
234
+ }
235
+
236
+ #akmin div.publishpress-headline {
237
+ line-height:25px;
238
+ }
239
+
240
+ #akmin div.publishpress-filters {
241
+ margin-bottom: 20px; margin-top: 10px;
242
+ }
243
+
244
+ #akmin span.publishpress-thanks{
245
+ margin-left:5px;
246
+ color:#655997;
247
+ white-space:nowrap;
248
+ }
249
+
250
+ #akmin span.publishpress-thanks,#akmin span.publishpress-thanks a,#akmin span.publishpress-thanks a:visited {
251
+ color:#655997;
252
+ font-weight:bold;
253
+ }
254
+
255
+ table#akmin td li.publishpress-contact{
256
+ text-align:center;
257
+ }
258
+
259
+ table#akmin td li.publishpress-contact a{
260
+ padding:5px 0 5px 0;
261
+ }
262
+
263
+ #pp_features {
264
+ display:none;
265
+ border:1px solid #eee;
266
+ padding:5px;
267
+ text-align:center;
268
+ min-width:600px;
269
+ }
270
+
271
+ #pp_features div.pp-logo {
272
+ text-align: center;
273
+ }
274
+
275
+ #pp_features div.features-wrap {
276
+ margin-left: auto;
277
+ margin-right: auto;
278
+ text-align: center;
279
+ width: 600px;
280
+ }
281
+
282
+ #pp_features ul.pp-features {
283
+ list-style: none;
284
+ padding-top:10px;
285
+ text-align:left;
286
+ margin-left: auto;
287
+ }
288
+
289
+ #pp_features ul.pp-features li:before {
290
+ content: "\2713\0020";
291
+ }
292
+
293
+ #pp_features ul.pp-features li {
294
+ padding-bottom: 5px;
295
+ }
296
+
297
+ #pp_features img.cme-play {
298
+ margin-bottom: -3px;
299
+ margin-left: 5px;
300
+ }
301
+
302
+ div.publishpress-caps-manage span.manage-members {
303
+ margin-left:5px;
304
+ font-weight:normal;
305
+ color: #777;
306
+ }
307
+
308
+ div.publishpress-caps-manage span.manage-members a {
309
+ color: #777;
310
+ }
311
+
312
+ div.publishpress-caps-manage span.manage-members a:hover {
313
+ text-decoration: underline;
314
+ color:#655997;
315
+ }
316
+
317
+ div.publishpress-headline .cme-subtext a {
318
+ font-weight: bold;
319
+ }
320
+
321
+ div.publishpress-headline .cme-subtext a:hover {
322
+ text-decoration: underline;
323
+ }
324
+
325
+ div.publishpress-caps-backup th {
326
+ text-align:right;
327
+ padding-top:28px;
328
+ width: 140px;
329
+ }
330
+
331
+ div.publishpress-caps-backup p.description {max-width:620px !important;}
332
+
333
+ div.publishpress-caps-backup #cme_select_restore_div {height:250px;}
334
+ div.publishpress-caps-backup #cme_select_restore {
335
+ list-style:none;
336
+ max-height:250px;
337
+ margin:0;
338
+ overflow:auto;
339
+ padding:0;
340
+ background-color: #eee;
341
+ padding: 5px;
342
+ text-indent:10px;
343
+ }
344
+ div.publishpress-caps-backup #cme_select_restore li {
345
+ padding: 7px 15px 7px 7px;
346
+ background-color: #f4f4f4;
347
+ margin: 0;
348
+ line-height:25px;
349
+ }
350
+
351
+ div.publishpress-caps-backup #cme_select_restore li label {
352
+ font-size: 13px;
353
+ }
354
+
355
+ div.publishpress-caps-backup #cme_select_restore li:nth-child(even){
356
+ background-color:white;
357
+ }
358
+
359
+ div.cme-selected-backup-caption {
360
+ padding-left: 5px;
361
+ }
362
+
363
+ div.pp-caps-backup-button {
364
+ margin-top: 10px;
365
+ }
366
+
367
+ div.cme-restore-button {
368
+ margin-top: 25px;
369
+ padding-left: 5px;
370
+ }
371
+
372
+ div.publishpress-caps-backup td.cme-backup-info{
373
+ padding:0;
374
+ }
375
+
376
+ div.cme-show-backup {
377
+ padding-left:20px;
378
+ }
379
+
380
+ div.publishpress-caps-backup td.cme-backup-info li {
381
+ display:none;
382
+ }
383
+
384
+ div.publishpress-caps-backup td.cme-backup-info li.cme-change {
385
+ display: list-item;
386
+ }
387
+
388
+ div.publishpress-caps-backup td.cme-backup-info .cme-plus {
389
+ font-weight: bold;
390
+ color: green;
391
+ }
392
+
393
+ .cme-backup-info ul.pp-restore-caps {
394
+ display: inline-block;
395
+ }
396
+
397
+ ul.pp-restore-caps li {
398
+ margin-left: 20px;
399
+ }
400
+
401
+ span.pp-restore-caps-no-change {
402
+ font-style: italic;
403
+ padding-left : 20px;
404
+ }
405
+
406
+ div.publishpress-caps-backup td.cme-backup-info .cme-minus {
407
+ font-weight: bold;
408
+ color: #a00;
409
+ text-decoration: line-through;
410
+ }
411
+
412
+ div.publishpress-caps-backup td.cme-backup-info .cme-negate {
413
+ font-weight: bold;
414
+ background-color: #a00;
415
+ color: white;
416
+ text-decoration: line-through;
417
+ }
418
+
419
+ .cme-backup-info ul.toplevel_page_pp-capabilities {
420
+ display: inline-block;
421
+ padding-left:30px;
422
+ }
423
+
424
+ .restrict-column input[type=checkbox]:checked:focus {
425
+ border-color: crimson;
426
+ box-shadow: 0 0 0 1px crimson;
427
+ }
428
+
429
+ .restrict-column input[type=checkbox]:checked::before {
430
+ content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiIHZpZXdCb3g9IjAgMCAyMCAyMCIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7Ij48cGF0aCBkPSJNMTQuOTUgNi40NkwxMS40MSAxMGwzLjU0IDMuNTRsLTEuNDEgMS40MUwxMCAxMS40MmwtMy41MyAzLjUzbC0xLjQyLTEuNDJMOC41OCAxMEw1LjA1IDYuNDdsMS40Mi0xLjQyTDEwIDguNThsMy41NC0zLjUzeiIgZmlsbD0iI2RjMTQzYyIvPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0icmdiYSgwLCAwLCAwLCAwKSIgLz48L3N2Zz4=");
431
+ }
432
+
433
+ #ppcb-tab-reset p {
434
+ text-align:center;
435
+ }
436
+
437
+ .publishpress-caps-backup span.pp-caps-warning {
438
+ color:red;
439
+ }
440
+
441
+ table#akmin tr td input[type=checkbox] {
442
+ margin: 0;
443
+ }
444
+
445
+
446
+ .pp-capability-menus {
447
+ width: 100%;
448
+ overflow: hidden;
449
+ background: #fff;
450
+ background: linear-gradient(90deg, #fafafa 0%, #fafafa 20%, #fff 20%, #fff 100%);
451
+ }
452
+
453
+ .pp-capability-menus .pp-capability-menus-wrap {
454
+ float: left;
455
+ width: 100%;
456
+ margin-left: -1px;
457
+ margin-right: 20px;
458
+ }
459
+
460
+
461
+ #pp-capability-menu-wrapper table {
462
+ border-right: none;
463
+ border-top: none;
464
+ border-bottom: none;
465
+ }
466
+
467
+ #pp-capability-menu-wrapper table td,
468
+ #pp-capability-menu-wrapper table th {
469
+ padding: 10px;
470
+ padding-bottom: 10px;
471
+ font-size: 13px;
472
+ line-height: 20px;
473
+ }
474
+
475
+ #pp-capability-menu-wrapper table td h4.ppc-menu-row-section {
476
+ margin-bottom: 0;
477
+ }
478
+
479
+ #pp-capability-menu-wrapper table td {
480
+ padding: 9px;
481
+ }
482
+
483
+ #pp-capability-menu-wrapper tbody tr:last-of-type td {
484
+ border-bottom: none;
485
+ }
486
+
487
+ #pp-capability-menu-wrapper tfoot th {
488
+ border-color: #eee;
489
+ }
490
+
491
+
492
+ table#akmin .pp-capability-menus-select .restrict-column {
493
+ min-width: 90px;
494
+ text-align: center;
495
+ display: table-cell !important;
496
+ clear: none !important;
497
+ }
498
+
499
+ .pp-capability-menus .menu-item-link {
500
+ display: inline;
501
+ color: #0073aa;
502
+ margin: -4px;
503
+ line-height: inherit;
504
+ padding: 4px 8px;
505
+ border: 1px solid transparent;
506
+ background: transparent;
507
+ border-radius: 0;
508
+ outline: none;
509
+ -webkit-transition: all 0.25s ease-out;
510
+ -moz-transition: all 0.25s ease-out;
511
+ -o-transition: all 0.25s ease-out;
512
+ transition: all 0.25s ease-out;
513
+ }
514
+
515
+ .pp-capability-menus .menu-item-link:hover,
516
+ .pp-capability-menus .menu-item-link:focus {
517
+ border-color: #eee;
518
+ background: #fafafa;
519
+ cursor: pointer;
520
+ }
521
+
522
+ .pp-capability-menus .menu-item-link:active {
523
+ color: #0073aa;
524
+ border-color: #0073aa;
525
+ }
526
+
527
+ .pp-capability-menus .check-all-menu-link,
528
+ .pp-capability-menus .check-all-menu-link:active {
529
+ color: #555;
530
+ }
531
+
532
+ .pp-capability-menus .menu-item-link.restricted,
533
+ .pp-capability-menus .menu-item-link.restricted:active {
534
+ color: crimson;
535
+ }
536
+
537
+ .pp-capability-menus .menu-item-link.disabled,
538
+ .pp-capability-menus .menu-item-link.disabled:active {
539
+ color: #555;
540
+ }
541
+
542
+ .pp-capability-menus .menu-item-link + .dashicons {
543
+ display: none;
544
+ margin-top: 1px;
545
+ margin-bottom: -1px;
546
+ line-height: inherit;
547
+ }
548
+
549
+ .pp-capability-menus .menu-item-link:hover + .dashicons,
550
+ .pp-capability-menus .menu-item-link:focus + .dashicons {
551
+ display: inline-block;
552
+ }
553
+
554
+ .pp-capability-menus-wrapper .button-primary {
555
+ margin-bottom: 25px !important;
556
+ }
557
+
558
+
559
+ .pp-capability-menus-wrapper .tooltip {
560
+ position: relative;
561
+ display: inline-block;
562
+ border-bottom: 1px dotted black;
563
+ }
564
+
565
+ .pp-capability-menus-wrapper .tooltip .tooltiptext {
566
+ visibility: hidden;
567
+ width: 120px;
568
+ background-color: black;
569
+ color: #fff;
570
+ text-align: center;
571
+ padding: 5px 0;
572
+ border-radius: 6px;
573
+
574
+ position: absolute;
575
+ z-index: 1;
576
+ }
577
+
578
+ .pp-capability-menus-wrapper .tooltip:hover .tooltiptext {
579
+ visibility: visible;
580
+ }
581
+
582
+ .capabilities_page_pp-capabilities-admin-menus input.ppc-admin-menu-submit,
583
+ .capabilities_page_pp-capabilities-nav-menus input.ppc-nav-menu-submit {
584
+ margin-bottom: 10px !important;
585
+ }
586
+
587
+ .pp-capability-menus-wrapper .features-section-header {
588
+ padding-left: 10px !important;
589
+ }
590
+
591
+
592
+ body.capabilities_page_pp-capabilities-admin-features .pp-capability-menus-select .restrict-column {
593
+ width: 70px !important;
594
+ }
595
+
596
+ .pp-column-right.capabilities-sidebar .button.button-primary {
597
+ color: #2271b1;
598
+ border-color: #2271b1;
599
+ background: #f6f7f7;
600
+ }
601
+
602
+ /* Roles screen */
603
+
604
+ .roles-capabilities-title {
605
+ font-weight: bold !important;
606
+ padding-left: 0 !important;
607
+ }
608
+ .pp-role-edit-wrap #publishing-action {
609
+ text-align: unset !important;
610
+ float: unset !important;
611
+ }
612
+
613
+ .pp-roles-delete-botton {
614
+ color: red !important;
615
+ border-color: red !important;
616
+ }
617
+
618
+ .ppc-roles-section {
619
+ min-height: 370px;
620
+ }
621
+
622
+ #poststuff .ppc-roles-section.postbox .inside {
623
+ margin-left: 0 !important;
624
+ margin-top: 0 !important;
625
+ padding-left: 0 !important;
626
+ }
627
+
628
+ .ppc-roles-section input[type=text],
629
+ .ppc-roles-section input[type=number],
630
+ .ppc-roles-section select {
631
+ width: 300px;
632
+ }
633
+
634
+ .ppc-roles-section #poststuff {
635
+ min-height: 600px;
636
+ }
637
+
638
+ ul.ppc-roles-tab {
639
+ margin: 0;
640
+ width: 20%;
641
+ float: left;
642
+ line-height: 1em;
643
+ padding: 0 0 10px;
644
+ position: relative;
645
+ background-color: #fafafa;
646
+ border-right: 1px solid #eee;
647
+ box-sizing: border-box;
648
+ min-height: 363px;
649
+ }
650
+ .ppc-roles-tab-content {
651
+ float: left;
652
+ width: 80%;
653
+ min-height: 275px;
654
+ box-sizing: border-box;
655
+ padding-left: 10px;
656
+ }
657
+
658
+
659
+ ul.ppc-roles-tab li {
660
+ margin: 0;
661
+ padding: 0;
662
+ display: block;
663
+ position: relative;
664
+ }
665
+ ul.ppc-roles-tab li a {
666
+ margin: 0;
667
+ padding: 10px;
668
+ display: block;
669
+ box-shadow: none;
670
+ text-decoration: none;
671
+ line-height: 20px!important;
672
+ border-bottom: 1px solid #eee;
673
+ }
674
+
675
+ ul.ppc-roles-tab li a span {
676
+ margin-right: .618em;
677
+ }
678
+
679
+ ul.ppc-roles-tab li a span.dashicons {
680
+ margin-left: 0;
681
+ font-size: 15px;
682
+ }
683
+ ul.ppc-roles-tab li.active a {
684
+ color: #555;
685
+ position: relative;
686
+ background-color: #eee;
687
+ }
688
+
689
+ .ppc-roles-sidebar ul.pp-roles-capabilities li {
690
+ margin-bottom: 0;
691
+ }
692
+
693
+ .ppc-roles-sidebar ul.pp-roles-capabilities li::before {
694
+ font-family: Dashicons;
695
+ font-weight: 400;
696
+ text-transform: none;
697
+ line-height: 1;
698
+ -webkit-font-smoothing: antialiased;
699
+ content: "\f12a";
700
+ font-variant: normal;
701
+ text-decoration: none;
702
+ color: green;
703
+ }
704
+ .roles-capabilities-load-more,
705
+ .roles-capabilities-load-less {
706
+ cursor: pointer;
707
+ color: #2271b1;
708
+ text-decoration: underline;
709
+ }
710
+
711
+ .ppc-roles-section .red-warning {
712
+ color: red;
713
+ font-weight: bold;
714
+ }
715
+
716
+ /* Filters */
717
+ .ppc-filter-wrapper {
718
+ float: right;
719
+ margin-bottom: 15px;
720
+ display: flex;
721
+ }
722
+
723
+ .ppc-filter-wrapper .button {
724
+ margin-left: 5px;
725
+ }
726
+
727
+ .ppc-filter-no-results {
728
+ margin-top: 20px;
729
+ }
730
+
731
+ /* ====================================================== Main Screen */
732
+
733
+ #ppc-capabilities-wrapper {
734
+ display: grid;
735
+ grid-template-columns: 1fr 4fr;
736
+ min-height: 400px;
737
+ }
738
+
739
+ /*
740
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs {
741
+
742
+ }
743
+ */
744
+
745
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul {
746
+ padding: 0;
747
+ margin: 0;
748
+ display: block;
749
+ }
750
+
751
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li {
752
+ margin: 0;
753
+ padding: 15px 12px;
754
+ background: #f0f0f1;
755
+ cursor: pointer;
756
+ border-bottom: 1px solid #ccc;
757
+ border-right: 1px solid #ccc;
758
+ font-size: 1.1em;
759
+ line-height: 1.3em;
760
+ }
761
+
762
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li:last-child {
763
+ margin-bottom: 20px;
764
+ }
765
+
766
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
767
+ background: #fff;
768
+ border-right-color: #fff;
769
+ }
770
+
771
+ #ppc-capabilities-wrapper .ppc-capabilities-content > div {
772
+ padding: 20px;
773
+ }
774
+
775
+ #ppc-capabilities-wrapper .ppc-capabilities-content > div > h3 {
776
+ margin-top: 0;
777
+ display: inline-block;
778
+ }
779
+
780
+ #publishpress_caps_form table#akmin td .pp-sidebar-box p:not(:last-of-type) {
781
+ margin: 15px 0;
782
+ padding: 0;
783
+ }
784
+
785
+ @media (max-width: 1199px) {
786
+
787
+ #ppc-capabilities-wrapper {
788
+ display: block;
789
+ }
790
+
791
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li,
792
+ #ppc-capabilities-wrapper .ppc-capabilities-tabs > ul > li.ppc-capabilities-tab-active {
793
+ border-right: none;
794
+ }
795
+
796
+ #publishpress_caps_form #akmin td.content,
797
+ #publishpress_caps_form #akmin td.sidebar {
798
+ display: block;
799
+ padding: 0;
800
+ }
801
+
802
+ #publishpress_caps_form #akmin td.content {
803
+ margin-bottom: 40px;
804
+ }
805
+ }
806
+
807
+ @media (max-width: 1184px) {
808
+
809
+ /* Filters */
810
+ .ppc-filter-wrapper {
811
+ float: none;
812
+ margin-bottom: 25px;
813
+ }
814
+ }
815
+
816
+ @media (max-width: 782px) {
817
+
818
+ table.cme-checklist.form-table tr td {
819
+ padding: 15px 10px;
820
+ }
821
+
822
+ table .cme-typecaps th:first-of-type {
823
+ width: 110px;
824
+ }
825
+
826
+ .pp-capability-menus {
827
+ background: linear-gradient(90deg, #fafafa 0%, #fafafa 48px, #fff 48px, #fff 100%);
828
+ }
829
+
830
+ #pp-capability-menu-wrapper table td,
831
+ #pp-capability-menu-wrapper table th {
832
+ line-height: 24px;
833
+ }
834
+
835
+ }
common/js/admin.dev.js CHANGED
@@ -1,161 +1,236 @@
1
- jQuery(document).ready( function($) {
2
- $('a.neg-cap').attr('title',cmeAdmin.negationCaption);
3
- $('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);
4
- $('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);
5
- $('a.normal-cap').attr('title',cmeAdmin.switchableCaption);
6
- $('span.cap-x').attr('title',cmeAdmin.capNegated);
7
- $('table.cme-checklist input[class!="cme-check-all"]').not(':disabled').attr('title',cmeAdmin.chkCaption);
8
-
9
- $('table.cme-checklist a.neg-cap').click( function(e) {
10
- $(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
11
-
12
- var cap_name_attr = $(this).parent().find('input[type="checkbox"]').attr('name');
13
- $(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
14
-
15
- $('input[name="' + cap_name_attr + '"]').closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
16
-
17
- return false;
18
- });
19
-
20
- //$('table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span').live( 'click', function(e) {
21
- $(document).on( 'click', 'table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span', function(e) {
22
- $(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');
23
- $(this).parent().find('input[type="checkbox"]').prop('checked',false);
24
- $(this).parent().find('input.cme-negation-input').remove();
25
-
26
- // Also apply for any other checkboxes with the same name
27
- var cap_name_attr = $(this).next('input[type="checkbox"]').attr('name');
28
-
29
- if (!cap_name_attr) {
30
- cap_name_attr = $(this).next('label').find('input[type="checkbox"]').attr('name');
31
- }
32
-
33
- $('input[name="' + cap_name_attr + '"]').parent().closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');
34
- $('input[name="' + cap_name_attr + '"]').prop('checked',false).parent().find('input.cme-negation-input').remove();
35
-
36
- return false;
37
- });
38
-
39
- $("#publishpress_caps_form").bind("keypress", function(e) {
40
- if (e.keyCode == 13) {
41
- $(document.activeElement).parent().find('input[type="submit"]').first().click();
42
- return false;
43
- }
44
- });
45
-
46
- $('input.cme-check-all').click( function(e) {
47
- $(this).closest('table').find('input[type="checkbox"][disabled!="disabled"]:visible').prop('checked', $(this).is(":checked") );
48
- });
49
-
50
- $('a.cme-neg-all').click( function(e) {
51
- $(this).closest('table').find('a.neg-cap:visible').click();
52
- return false;
53
- });
54
-
55
- $('a.cme-switch-all').click( function(e) {
56
- $(this).closest('table').find('td.cap-neg span').click();
57
- return false;
58
- });
59
-
60
- $('table.cme-typecaps a.neg-type-caps').click( function(e) {
61
- $(this).closest('tr').find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each( function() {
62
- $(this).addClass('cap-neg');
63
-
64
- var cap_name_attr = $(this).find('input[type="checkbox"]').attr('name');
65
- $(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
66
-
67
- $('input[name="' + cap_name_attr + '"]').parent().next('a.neg-cap:visible').click();
68
- });
69
-
70
- return false;
71
- });
72
-
73
- //http://stackoverflow.com/users/803925/nbrooks
74
- $('table.cme-typecaps th').click(function(){
75
- var columnNo = $(this).index();
76
-
77
- var check_val = ! $(this).prop('checked_all');
78
-
79
- if ( $(this).hasClass('term-cap') )
80
- var class_sel = '[class*="term-cap"]';
81
- else
82
- var class_sel = '[class*="post-cap"]';
83
-
84
- var chks = $(this).closest("table")
85
- .find("tr td" + class_sel + ":nth-child(" + (columnNo+1) + ') input[type="checkbox"]:visible');
86
-
87
- $(chks).each(function(i,e) {
88
- $('input[name="' + $(this).attr('name') + '"]').prop('checked', check_val);
89
- });
90
-
91
- $(this).prop('checked_all',check_val);
92
- });
93
-
94
- $('a.cme-fix-read-cap').click(function(){
95
- $('input[name="caps[read]"]').prop('checked', true);
96
- $('input[name="SaveRole"]').trigger('click');
97
- return false;
98
- });
99
-
100
- /* Filter Edit, Delete and Read capabilities */
101
-
102
- // Fill the <select> extracting the values and labels from the tables
103
- $('.ppc-filter-select').each(function(){
104
- var filter = $(this)
105
- var options = new Array();
106
- $(this).parent().siblings('table').find('tbody').find('tr').each(function(){
107
- options.push({
108
- value : $(this).attr('class'),
109
- text : $(this).find('.cap_type').text()
110
- });
111
- });
112
- options.forEach(function(option, index){
113
- filter.append($('<option>', {
114
- value: option.value,
115
- text: option.text
116
- }));
117
- });
118
- });
119
-
120
- // Reset select filters on load
121
- $('.ppc-filter-select').prop('selectedIndex', 0);
122
-
123
- $('.ppc-filter-select-reset').click(function(){
124
- $(this).prev('.ppc-filter-select').prop('selectedIndex', 0);
125
- $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
126
- });
127
- $('.ppc-filter-select').change(function(){
128
- if($(this).val()){
129
- $(this).parent().siblings('table').find('tr').hide();
130
- $(this).parent().siblings('table').find('thead tr:first-child').show(); // Show the table heading
131
- $(this).parent().siblings('table').find('tr.' + $(this).val()).show(); // Show only the filtered row
132
- } else {
133
- $(this).parent().siblings('table').find('tr').show(); // No value selected; show all the table rows
134
- }
135
- });
136
-
137
- /* Filter WordPress core, WooCommerce, Additional capabilities */
138
-
139
- // Reset text filters on load
140
- $('.ppc-filter-text').val('');
141
-
142
- $('.ppc-filter-text-reset').click(function(){
143
- $(this).prev('.ppc-filter-text').val('');
144
- $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
145
- $(this).parent().siblings('.ppc-filter-no-results').hide(); // Hide "no results" message
146
- });
147
- $('.ppc-filter-text').keyup(function(){
148
- $(this).parent().siblings('table').find('tr').hide();
149
- $(this).parent().siblings('table').find('tr[class*="' + $(this).val() + '"]').show(); // Show only the filtered row
150
- $(this).parent().siblings('table').find('tr.cme-bulk-select').hide(); // Hide bulk row
151
- if($(this).val().length === 0){
152
- $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
153
- }
154
- // Show / Hide the no-results message
155
- if($(this).parent().siblings('table').find('tr:visible').length === 0) {
156
- $(this).parent().siblings('.ppc-filter-no-results').show(); // Show "no results" message
157
- } else {
158
- $(this).parent().siblings('.ppc-filter-no-results').hide(); // Hide "no results" message
159
- }
160
- });
161
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready( function($) {
2
+ $('a.neg-cap').attr('title',cmeAdmin.negationCaption);
3
+ $('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);
4
+ $('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);
5
+ $('a.normal-cap').attr('title',cmeAdmin.switchableCaption);
6
+ $('span.cap-x').attr('title',cmeAdmin.capNegated);
7
+ $('table.cme-checklist input[class!="cme-check-all"]').not(':disabled').attr('title',cmeAdmin.chkCaption);
8
+
9
+ $('table.cme-checklist a.neg-cap').click( function(e) {
10
+ $(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
11
+
12
+ var cap_name_attr = $(this).parent().find('input[type="checkbox"]').attr('name');
13
+ $(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
14
+
15
+ $('input[name="' + cap_name_attr + '"]').closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
16
+
17
+ return false;
18
+ });
19
+
20
+ //$('table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span').live( 'click', function(e) {
21
+ $(document).on( 'click', 'table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span', function(e) {
22
+ $(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');
23
+ $(this).parent().find('input[type="checkbox"]').prop('checked',false);
24
+ $(this).parent().find('input.cme-negation-input').remove();
25
+
26
+ // Also apply for any other checkboxes with the same name
27
+ var cap_name_attr = $(this).next('input[type="checkbox"]').attr('name');
28
+
29
+ if (!cap_name_attr) {
30
+ cap_name_attr = $(this).next('label').find('input[type="checkbox"]').attr('name');
31
+ }
32
+
33
+ $('input[name="' + cap_name_attr + '"]').parent().closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');
34
+ $('input[name="' + cap_name_attr + '"]').prop('checked',false).parent().find('input.cme-negation-input').remove();
35
+
36
+ return false;
37
+ });
38
+
39
+ $("#publishpress_caps_form").bind("keypress", function(e) {
40
+ if (e.keyCode == 13) {
41
+ $(document.activeElement).parent().find('input[type="submit"]').first().click();
42
+ return false;
43
+ }
44
+ });
45
+
46
+ $('input.cme-check-all').click( function(e) {
47
+ $(this).closest('table').find('input[type="checkbox"][disabled!="disabled"]:visible').prop('checked', $(this).is(":checked") );
48
+ });
49
+
50
+ $('a.cme-neg-all').click( function(e) {
51
+ $(this).closest('table').find('a.neg-cap:visible').click();
52
+ return false;
53
+ });
54
+
55
+ $('a.cme-switch-all').click( function(e) {
56
+ $(this).closest('table').find('td.cap-neg span').click();
57
+ return false;
58
+ });
59
+
60
+ $('table.cme-typecaps a.neg-type-caps').click( function(e) {
61
+ $(this).closest('tr').find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each( function() {
62
+ $(this).addClass('cap-neg');
63
+
64
+ var cap_name_attr = $(this).find('input[type="checkbox"]').attr('name');
65
+ $(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
66
+
67
+ $('input[name="' + cap_name_attr + '"]').parent().next('a.neg-cap:visible').click();
68
+ });
69
+
70
+ return false;
71
+ });
72
+
73
+ //http://stackoverflow.com/users/803925/nbrooks
74
+ $('table.cme-typecaps th').click(function(){
75
+ var columnNo = $(this).index();
76
+
77
+ var check_val = ! $(this).prop('checked_all');
78
+
79
+ if ( $(this).hasClass('term-cap') )
80
+ var class_sel = '[class*="term-cap"]';
81
+ else
82
+ var class_sel = '[class*="post-cap"]';
83
+
84
+ var chks = $(this).closest("table")
85
+ .find("tr td" + class_sel + ":nth-child(" + (columnNo+1) + ') input[type="checkbox"]:visible');
86
+
87
+ $(chks).each(function(i,e) {
88
+ $('input[name="' + $(this).attr('name') + '"]').prop('checked', check_val);
89
+ });
90
+
91
+ $(this).prop('checked_all',check_val);
92
+ });
93
+
94
+ $('a.cme-fix-read-cap').click(function(){
95
+ $('input[name="caps[read]"]').prop('checked', true);
96
+ $('input[name="SaveRole"]').trigger('click');
97
+ return false;
98
+ });
99
+
100
+ /* Filter Edit, Delete and Read capabilities */
101
+
102
+ // Fill the <select> extracting the values and labels from the tables
103
+ $('.ppc-filter-select').each(function(){
104
+ var filter = $(this)
105
+ var options = new Array();
106
+ $(this).parent().siblings('table').find('tbody').find('tr').each(function(){
107
+ options.push({
108
+ value : $(this).attr('class'),
109
+ text : $(this).find('.cap_type').text()
110
+ });
111
+ });
112
+ options.forEach(function(option, index){
113
+ filter.append($('<option>', {
114
+ value: option.value,
115
+ text: option.text
116
+ }));
117
+ });
118
+ });
119
+
120
+ // Reset select filters on load
121
+ $('.ppc-filter-select').prop('selectedIndex', 0);
122
+
123
+ $('.ppc-filter-select-reset').click(function(){
124
+ $(this).prev('.ppc-filter-select').prop('selectedIndex', 0);
125
+ $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
126
+ });
127
+ $('.ppc-filter-select').change(function(){
128
+ if($(this).val()){
129
+ $(this).parent().siblings('table').find('tr').hide();
130
+ $(this).parent().siblings('table').find('thead tr:first-child').show(); // Show the table heading
131
+ $(this).parent().siblings('table').find('tr.' + $(this).val()).show(); // Show only the filtered row
132
+ } else {
133
+ $(this).parent().siblings('table').find('tr').show(); // No value selected; show all the table rows
134
+ }
135
+ });
136
+
137
+ /* Filter WordPress core, WooCommerce, Additional capabilities */
138
+
139
+ // Reset text filters on load
140
+ $('.ppc-filter-text').val('');
141
+
142
+ $('.ppc-filter-text-reset').click(function(){
143
+ $(this).prev('.ppc-filter-text').val('');
144
+ $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
145
+ $(this).parent().siblings('.ppc-filter-no-results').hide(); // Hide "no results" message
146
+ });
147
+ $('.ppc-filter-text').keyup(function(){
148
+ $(this).parent().siblings('table').find('tr').hide();
149
+ $(this).parent().siblings('table').find('tr[class*="' + $(this).val() + '"]').show(); // Show only the filtered row
150
+ $(this).parent().siblings('table').find('tr.cme-bulk-select').hide(); // Hide bulk row
151
+ if($(this).val().length === 0){
152
+ $(this).parent().siblings('table').find('tr').show(); // Show all the table rows
153
+ }
154
+ // Show / Hide the no-results message
155
+ if($(this).parent().siblings('table').find('tr:visible').length === 0) {
156
+ $(this).parent().siblings('.ppc-filter-no-results').show(); // Show "no results" message
157
+ } else {
158
+ $(this).parent().siblings('.ppc-filter-no-results').hide(); // Hide "no results" message
159
+ }
160
+ });
161
+
162
+ /**
163
+ * Roles tab toggle
164
+ */
165
+ $(document).on('click', '.ppc-roles-tab li', function (event) {
166
+ event.preventDefault();
167
+
168
+ var clicked_tab = $(this).attr('data-tab');
169
+
170
+ //remove active class from all tabs
171
+ $('.ppc-roles-tab li').removeClass('active');
172
+ //add active class to current tab
173
+ $(this).addClass('active');
174
+
175
+ //hide all tabs contents
176
+ $('.pp-roles-tab-tr').hide();
177
+ //show this current tab contents
178
+ $('.pp-roles-' + clicked_tab + '-tab').show();
179
+ });
180
+
181
+ /**
182
+ * Roles capabilities load more button
183
+ */
184
+ $(document).on('click', '.roles-capabilities-load-more', function (event) {
185
+ event.preventDefault();
186
+
187
+ $('.roles-capabilities-load-more').hide();
188
+
189
+ $('.roles-capabilities-load-less').show();
190
+
191
+ $('ul.pp-roles-capabilities li').show();
192
+ });
193
+
194
+ /**
195
+ * Roles capabilities load less button
196
+ */
197
+ $(document).on('click', '.roles-capabilities-load-less', function (event) {
198
+ event.preventDefault();
199
+
200
+ $('.roles-capabilities-load-less').hide();
201
+
202
+ $('.roles-capabilities-load-more').show();
203
+
204
+ $('ul.pp-roles-capabilities li').hide();
205
+
206
+ $('ul.pp-roles-capabilities').children().slice(0, 6).show();
207
+
208
+ window.scrollTo({ top: 0, behavior: 'smooth' });
209
+ });
210
+
211
+ /**
212
+ * Capabilities role slug validation
213
+ */
214
+ $('.ppc-roles-tab-content input[name="role_slug"]').on('keyup', function (e) {
215
+ is_role_slug_exist();
216
+ });
217
+
218
+ if ($('#pp-role-slug-exists').length > 0) {
219
+ is_role_slug_exist();
220
+ }
221
+
222
+ function is_role_slug_exist() {
223
+ if ($('.ppc-roles-tab-content input[name="role_slug"]').attr('readonly') !== 'readonly') {
224
+ var value = $('.ppc-roles-tab-content input[name="role_slug"]').val();
225
+ var slugexists = $('#pp-role-slug-exists')
226
+ var all_roles = $('.ppc-roles-all-roles').val();
227
+ var role_array = all_roles.split(',');
228
+ if (role_array.includes(value)) {
229
+ slugexists.show();
230
+ } else {
231
+ slugexists.hide();
232
+ }
233
+ }
234
+ }
235
+
236
+ });
common/js/admin.js CHANGED
@@ -1,5 +1 @@
1
- jQuery(document).ready(function($){$('a.neg-cap').attr('title',cmeAdmin.negationCaption);$('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);$('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);$('a.normal-cap').attr('title',cmeAdmin.switchableCaption);$('span.cap-x').attr('title',cmeAdmin.capNegated);$('table.cme-checklist input[class!="cme-check-all"]').not(':disabled').attr('title',cmeAdmin.chkCaption);$('table.cme-checklist a.neg-cap').click(function(e){$(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');var cap_name_attr=$(this).parent().find('input[type="checkbox"]').attr('name');$(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');$('input[name="'+cap_name_attr+'"]').closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');return false;});$(document).on('click','table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span',function(e){$(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');$(this).parent().find('input[type="checkbox"]').prop('checked',false);$(this).parent().find('input.cme-negation-input').remove();var cap_name_attr=$(this).next('input[type="checkbox"]').attr('name');if(!cap_name_attr){cap_name_attr=$(this).next('label').find('input[type="checkbox"]').attr('name');}
2
- $('input[name="'+cap_name_attr+'"]').parent().closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');$('input[name="'+cap_name_attr+'"]').prop('checked',false).parent().find('input.cme-negation-input').remove();return false;});$("#publishpress_caps_form").bind("keypress",function(e){if(e.keyCode==13){$(document.activeElement).parent().find('input[type="submit"]').first().click();return false;}});$('input.cme-check-all').click(function(e){$(this).closest('table').find('input[type="checkbox"][disabled!="disabled"]:visible').prop('checked',$(this).is(":checked"));});$('a.cme-neg-all').click(function(e){$(this).closest('table').find('a.neg-cap:visible').click();return false;});$('a.cme-switch-all').click(function(e){$(this).closest('table').find('td.cap-neg span').click();return false;});$('table.cme-typecaps a.neg-type-caps').click(function(e){$(this).closest('tr').find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each(function(){$(this).addClass('cap-neg');var cap_name_attr=$(this).find('input[type="checkbox"]').attr('name');$(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');$('input[name="'+cap_name_attr+'"]').parent().next('a.neg-cap:visible').click();});return false;});$('table.cme-typecaps th').click(function(){var columnNo=$(this).index();var check_val=!$(this).prop('checked_all');if($(this).hasClass('term-cap'))
3
- var class_sel='[class*="term-cap"]';else
4
- var class_sel='[class*="post-cap"]';var chks=$(this).closest("table").find("tr td"+class_sel+":nth-child("+(columnNo+1)+') input[type="checkbox"]:visible');$(chks).each(function(i,e){$('input[name="'+$(this).attr('name')+'"]').prop('checked',check_val);});$(this).prop('checked_all',check_val);});$('a.cme-fix-read-cap').click(function(){$('input[name="caps[read]"]').prop('checked',true);$('input[name="SaveRole"]').trigger('click');return false;});
5
- $(".ppc-filter-select").each(function(){var t=$(this),i=new Array;$(this).parent().siblings("table").find("tbody").find("tr").each(function(){i.push({value:$(this).attr("class"),text:$(this).find(".cap_type").text()})}),i.forEach(function(i,e){t.append($("<option>",{value:i.value,text:i.text}))})}),$(".ppc-filter-select").prop("selectedIndex",0),$(".ppc-filter-select-reset").click(function(){$(this).prev(".ppc-filter-select").prop("selectedIndex",0),$(this).parent().siblings("table").find("tr").show()}),$(".ppc-filter-select").change(function(){$(this).val()?($(this).parent().siblings("table").find("tr").hide(),$(this).parent().siblings("table").find("thead tr:first-child").show(),$(this).parent().siblings("table").find("tr."+$(this).val()).show()):$(this).parent().siblings("table").find("tr").show()}),$(".ppc-filter-text").val(""),$(".ppc-filter-text-reset").click(function(){$(this).prev(".ppc-filter-text").val(""),$(this).parent().siblings("table").find("tr").show(),$(this).parent().siblings(".ppc-filter-no-results").hide()}),$(".ppc-filter-text").keyup(function(){$(this).parent().siblings("table").find("tr").hide(),$(this).parent().siblings("table").find('tr[class*="'+$(this).val()+'"]').show(),$(this).parent().siblings("table").find("tr.cme-bulk-select").hide(),0===$(this).val().length&&$(this).parent().siblings("table").find("tr").show(),0===$(this).parent().siblings("table").find("tr:visible").length?$(this).parent().siblings(".ppc-filter-no-results").show():$(this).parent().siblings(".ppc-filter-no-results").hide()});});
1
+ jQuery(document).ready(function(e){function t(){if("readonly"!==e('.ppc-roles-tab-content input[name="role_slug"]').attr("readonly")){var t=e('.ppc-roles-tab-content input[name="role_slug"]').val(),i=e("#pp-role-slug-exists");e(".ppc-roles-all-roles").val().split(",").includes(t)?i.show():i.hide()}}e("a.neg-cap").attr("title",cmeAdmin.negationCaption),e("a.neg-type-caps").attr("title",cmeAdmin.typeCapsNegationCaption),e("td.cap-unreg").attr("title",cmeAdmin.typeCapUnregistered),e("a.normal-cap").attr("title",cmeAdmin.switchableCaption),e("span.cap-x").attr("title",cmeAdmin.capNegated),e('table.cme-checklist input[class!="cme-check-all"]').not(":disabled").attr("title",cmeAdmin.chkCaption),e("table.cme-checklist a.neg-cap").click(function(t){e(this).closest("td").removeClass("cap-yes").removeClass("cap-no").addClass("cap-neg");var i=e(this).parent().find('input[type="checkbox"]').attr("name");return e(this).after('<input type="hidden" class="cme-negation-input" name="'+i+'" value="" />'),e('input[name="'+i+'"]').closest("td").removeClass("cap-yes").removeClass("cap-no").addClass("cap-neg"),!1}),e(document).on("click","table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span",function(t){e(this).closest("td").removeClass("cap-neg").removeClass("cap-yes").addClass("cap-no"),e(this).parent().find('input[type="checkbox"]').prop("checked",!1),e(this).parent().find("input.cme-negation-input").remove();var i=e(this).next('input[type="checkbox"]').attr("name");return i||(i=e(this).next("label").find('input[type="checkbox"]').attr("name")),e('input[name="'+i+'"]').parent().closest("td").removeClass("cap-neg").removeClass("cap-yes").addClass("cap-no"),e('input[name="'+i+'"]').prop("checked",!1).parent().find("input.cme-negation-input").remove(),!1}),e("#publishpress_caps_form").bind("keypress",function(t){if(13==t.keyCode)return e(document.activeElement).parent().find('input[type="submit"]').first().click(),!1}),e("input.cme-check-all").click(function(t){e(this).closest("table").find('input[type="checkbox"][disabled!="disabled"]:visible').prop("checked",e(this).is(":checked"))}),e("a.cme-neg-all").click(function(t){return e(this).closest("table").find("a.neg-cap:visible").click(),!1}),e("a.cme-switch-all").click(function(t){return e(this).closest("table").find("td.cap-neg span").click(),!1}),e("table.cme-typecaps a.neg-type-caps").click(function(t){return e(this).closest("tr").find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each(function(){e(this).addClass("cap-neg");var t=e(this).find('input[type="checkbox"]').attr("name");e(this).append('<input type="hidden" class="cme-negation-input" name="'+t+'" value="" />'),e('input[name="'+t+'"]').parent().next("a.neg-cap:visible").click()}),!1}),e("table.cme-typecaps th").click(function(){var t=e(this).index(),i=!e(this).prop("checked_all");if(e(this).hasClass("term-cap"))var a='[class*="term-cap"]';else a='[class*="post-cap"]';var s=e(this).closest("table").find("tr td"+a+":nth-child("+(t+1)+') input[type="checkbox"]:visible');e(s).each(function(t,a){e('input[name="'+e(this).attr("name")+'"]').prop("checked",i)}),e(this).prop("checked_all",i)}),e("a.cme-fix-read-cap").click(function(){return e('input[name="caps[read]"]').prop("checked",!0),e('input[name="SaveRole"]').trigger("click"),!1}),e(".ppc-filter-select").each(function(){var t=e(this),i=new Array;e(this).parent().siblings("table").find("tbody").find("tr").each(function(){i.push({value:e(this).attr("class"),text:e(this).find(".cap_type").text()})}),i.forEach(function(i,a){t.append(e("<option>",{value:i.value,text:i.text}))})}),e(".ppc-filter-select").prop("selectedIndex",0),e(".ppc-filter-select-reset").click(function(){e(this).prev(".ppc-filter-select").prop("selectedIndex",0),e(this).parent().siblings("table").find("tr").show()}),e(".ppc-filter-select").change(function(){e(this).val()?(e(this).parent().siblings("table").find("tr").hide(),e(this).parent().siblings("table").find("thead tr:first-child").show(),e(this).parent().siblings("table").find("tr."+e(this).val()).show()):e(this).parent().siblings("table").find("tr").show()}),e(".ppc-filter-text").val(""),e(".ppc-filter-text-reset").click(function(){e(this).prev(".ppc-filter-text").val(""),e(this).parent().siblings("table").find("tr").show(),e(this).parent().siblings(".ppc-filter-no-results").hide()}),e(".ppc-filter-text").keyup(function(){e(this).parent().siblings("table").find("tr").hide(),e(this).parent().siblings("table").find('tr[class*="'+e(this).val()+'"]').show(),e(this).parent().siblings("table").find("tr.cme-bulk-select").hide(),0===e(this).val().length&&e(this).parent().siblings("table").find("tr").show(),0===e(this).parent().siblings("table").find("tr:visible").length?e(this).parent().siblings(".ppc-filter-no-results").show():e(this).parent().siblings(".ppc-filter-no-results").hide()}),e(document).on("click",".ppc-roles-tab li",function(t){t.preventDefault();var i=e(this).attr("data-tab");e(".ppc-roles-tab li").removeClass("active"),e(this).addClass("active"),e(".pp-roles-tab-tr").hide(),e(".pp-roles-"+i+"-tab").show()}),e(document).on("click",".roles-capabilities-load-more",function(t){t.preventDefault(),e(".roles-capabilities-load-more").hide(),e(".roles-capabilities-load-less").show(),e("ul.pp-roles-capabilities li").show()}),e(document).on("click",".roles-capabilities-load-less",function(t){t.preventDefault(),e(".roles-capabilities-load-less").hide(),e(".roles-capabilities-load-more").show(),e("ul.pp-roles-capabilities li").hide(),e("ul.pp-roles-capabilities").children().slice(0,6).show(),window.scrollTo({top:0,behavior:"smooth"})}),e('.ppc-roles-tab-content input[name="role_slug"]').on("keyup",function(e){t()}),e("#pp-role-slug-exists").length>0&&t()});
 
 
 
 
composer.lock CHANGED
@@ -54,6 +54,10 @@
54
  "container",
55
  "dependency injection"
56
  ],
 
 
 
 
57
  "time": "2018-01-21T07:42:36+00:00"
58
  },
59
  {
@@ -103,26 +107,35 @@
103
  "container-interop",
104
  "psr"
105
  ],
 
 
 
 
106
  "time": "2017-02-14T16:28:37+00:00"
107
  },
108
  {
109
  "name": "publishpress/wordpress-banners",
110
- "version": "v1.2.4",
111
  "source": {
112
  "type": "git",
113
  "url": "https://github.com/publishpress/wordpress-banners.git",
114
- "reference": "76db80ef2166e671fff021fdce20ff4ec206def2"
115
  },
116
  "dist": {
117
  "type": "zip",
118
- "url": "https://api.github.com/repos/publishpress/wordpress-banners/zipball/76db80ef2166e671fff021fdce20ff4ec206def2",
119
- "reference": "76db80ef2166e671fff021fdce20ff4ec206def2",
120
  "shasum": ""
121
  },
122
  "require": {
123
  "php": ">=5.6.20"
124
  },
125
  "type": "library",
 
 
 
 
 
126
  "notification-url": "https://packagist.org/downloads/",
127
  "license": [
128
  "GPL-3.0-or-later"
@@ -135,20 +148,24 @@
135
  ],
136
  "description": "Display banners in admin pages of PublishPress Plugins.",
137
  "homepage": "http://publishpress.com/",
138
- "time": "2021-11-22T22:01:45+00:00"
 
 
 
 
139
  },
140
  {
141
  "name": "publishpress/wordpress-reviews",
142
- "version": "v1.1.16",
143
  "source": {
144
  "type": "git",
145
  "url": "https://github.com/publishpress/wordpress-reviews.git",
146
- "reference": "2b647f104d7aa64e0c72c028f86e1875035b7a91"
147
  },
148
  "dist": {
149
  "type": "zip",
150
- "url": "https://api.github.com/repos/publishpress/wordpress-reviews/zipball/2b647f104d7aa64e0c72c028f86e1875035b7a91",
151
- "reference": "2b647f104d7aa64e0c72c028f86e1875035b7a91",
152
  "shasum": ""
153
  },
154
  "require": {
@@ -199,7 +216,11 @@
199
  "reviews",
200
  "wordpress plugin"
201
  ],
202
- "time": "2021-12-01T20:36:26+00:00"
 
 
 
 
203
  },
204
  {
205
  "name": "publishpress/wordpress-version-notices",
@@ -241,6 +262,10 @@
241
  }
242
  ],
243
  "description": "Library for displaying version notices for Pro plugins in WordPress.",
 
 
 
 
244
  "time": "2021-07-14T16:15:47+00:00"
245
  }
246
  ],
@@ -254,5 +279,5 @@
254
  "php": ">=5.6.20"
255
  },
256
  "platform-dev": [],
257
- "plugin-api-version": "1.1.0"
258
  }
54
  "container",
55
  "dependency injection"
56
  ],
57
+ "support": {
58
+ "issues": "https://github.com/silexphp/Pimple/issues",
59
+ "source": "https://github.com/silexphp/Pimple/tree/master"
60
+ },
61
  "time": "2018-01-21T07:42:36+00:00"
62
  },
63
  {
107
  "container-interop",
108
  "psr"
109
  ],
110
+ "support": {
111
+ "issues": "https://github.com/php-fig/container/issues",
112
+ "source": "https://github.com/php-fig/container/tree/master"
113
+ },
114
  "time": "2017-02-14T16:28:37+00:00"
115
  },
116
  {
117
  "name": "publishpress/wordpress-banners",
118
+ "version": "v1.2.8",
119
  "source": {
120
  "type": "git",
121
  "url": "https://github.com/publishpress/wordpress-banners.git",
122
+ "reference": "79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c"
123
  },
124
  "dist": {
125
  "type": "zip",
126
+ "url": "https://api.github.com/repos/publishpress/wordpress-banners/zipball/79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c",
127
+ "reference": "79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c",
128
  "shasum": ""
129
  },
130
  "require": {
131
  "php": ">=5.6.20"
132
  },
133
  "type": "library",
134
+ "autoload": {
135
+ "files": [
136
+ "BannersMain.php"
137
+ ]
138
+ },
139
  "notification-url": "https://packagist.org/downloads/",
140
  "license": [
141
  "GPL-3.0-or-later"
148
  ],
149
  "description": "Display banners in admin pages of PublishPress Plugins.",
150
  "homepage": "http://publishpress.com/",
151
+ "support": {
152
+ "issues": "https://github.com/publishpress/wordpress-banners/issues",
153
+ "source": "https://github.com/publishpress/wordpress-banners/tree/v1.2.8"
154
+ },
155
+ "time": "2022-03-18T14:49:29+00:00"
156
  },
157
  {
158
  "name": "publishpress/wordpress-reviews",
159
+ "version": "v1.1.18",
160
  "source": {
161
  "type": "git",
162
  "url": "https://github.com/publishpress/wordpress-reviews.git",
163
+ "reference": "0020705b8f6a7177fc393c6c42c82171bf9e2fbd"
164
  },
165
  "dist": {
166
  "type": "zip",
167
+ "url": "https://api.github.com/repos/publishpress/wordpress-reviews/zipball/0020705b8f6a7177fc393c6c42c82171bf9e2fbd",
168
+ "reference": "0020705b8f6a7177fc393c6c42c82171bf9e2fbd",
169
  "shasum": ""
170
  },
171
  "require": {
216
  "reviews",
217
  "wordpress plugin"
218
  ],
219
+ "support": {
220
+ "issues": "https://github.com/publishpress/wordpress-reviews/issues",
221
+ "source": "https://github.com/publishpress/wordpress-reviews/tree/v1.1.18"
222
+ },
223
+ "time": "2021-12-15T00:03:53+00:00"
224
  },
225
  {
226
  "name": "publishpress/wordpress-version-notices",
262
  }
263
  ],
264
  "description": "Library for displaying version notices for Pro plugins in WordPress.",
265
+ "support": {
266
+ "issues": "https://github.com/publishpress/WordPress-Version-Notices/issues",
267
+ "source": "https://github.com/publishpress/WordPress-Version-Notices/tree/1.1.3"
268
+ },
269
  "time": "2021-07-14T16:15:47+00:00"
270
  }
271
  ],
279
  "php": ">=5.6.20"
280
  },
281
  "platform-dev": [],
282
+ "plugin-api-version": "2.2.0"
283
  }
framework/styles/admin.css CHANGED
@@ -68,7 +68,7 @@ table#akmin dl dt {
68
  background: #dfdfdf;
69
  }
70
 
71
- table#akmin p {
72
  padding: 5px 0 5px 0;
73
  margin: 0;
74
  }
@@ -127,7 +127,8 @@ table#akmin td.sidebar ul li {
127
  border-bottom: 1px dotted gray;
128
  }
129
 
130
- table#akmin td.sidebar dd {
 
131
  margin: 0;
132
  padding: 5px 10px 5px 10px;
133
- }
68
  background: #dfdfdf;
69
  }
70
 
71
+ table#akmin p:not(.pp-recommendations-heading) {
72
  padding: 5px 0 5px 0;
73
  margin: 0;
74
  }
127
  border-bottom: 1px dotted gray;
128
  }
129
 
130
+ table#akmin td.sidebar dd,
131
+ table#akmin td .pp-column-right dd {
132
  margin: 0;
133
  padding: 5px 10px 5px 10px;
134
+ }
includes/admin-load.php CHANGED
@@ -39,7 +39,7 @@ class PP_Capabilities_Admin_UI {
39
 
40
  || (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
41
  || ( ! empty($_SERVER['SCRIPT_NAME']) && strpos(sanitize_text_field($_SERVER['SCRIPT_NAME']), 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
42
- || ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
43
  || in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
44
  ) ) {
45
  global $capsman;
@@ -105,6 +105,10 @@ class PP_Capabilities_Admin_UI {
105
  private function applyFeatureRestrictions($editor = 'gutenberg') {
106
  global $pagenow;
107
 
 
 
 
 
108
  // Return if not a post editor request
109
  if (!in_array($pagenow, ['post.php', 'post-new.php'])) {
110
  return;
39
 
40
  || (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
41
  || ( ! empty($_SERVER['SCRIPT_NAME']) && strpos(sanitize_text_field($_SERVER['SCRIPT_NAME']), 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
42
+ || ( isset($_GET['action']) && ('reset-defaults' == $_GET['action']) && isset($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], 'capsman-reset-defaults') )
43
  || in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
44
  ) ) {
45
  global $capsman;
105
  private function applyFeatureRestrictions($editor = 'gutenberg') {
106
  global $pagenow;
107
 
108
+ if (is_multisite() && is_super_admin() && !defined('PP_CAPABILITIES_RESTRICT_SUPER_ADMIN')) {
109
+ return;
110
+ }
111
+
112
  // Return if not a post editor request
113
  if (!in_array($pagenow, ['post.php', 'post-new.php'])) {
114
  return;
includes/admin.php CHANGED
@@ -78,7 +78,11 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
78
  <?php wp_nonce_field('capsman-general-manager'); ?>
79
 
80
  <?php
81
- $pp_tab = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
 
 
 
 
82
  ?>
83
 
84
  <input type="hidden" name="pp_caps_tab" value="<?php echo esc_attr($pp_tab);?>" />
@@ -99,9 +103,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
99
  </p>
100
 
101
  <fieldset>
102
- <table id="akmin">
103
- <tr>
104
- <td class="content">
105
 
106
  <div style="float:right">
107
 
@@ -273,7 +277,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
273
  <div class="ppc-capabilities-tabs">
274
  <ul>
275
  <?php
276
- $active_tab_slug = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
 
 
 
 
 
277
  $active_tab_id = "cme-cap-type-tables-{$active_tab_slug}";
278
 
279
  $ppc_tab_active = 'ppc-capabilities-tab-active';
@@ -734,6 +743,17 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
734
  $checks_per_row = get_option( 'cme_form-rows', 1 );
735
  $i = 0; $first_row = true;
736
 
 
 
 
 
 
 
 
 
 
 
 
737
  $core_caps = _cme_core_caps();
738
  foreach( array_keys($core_caps) as $cap_name ) {
739
  $cap_name = sanitize_key($cap_name);
@@ -819,11 +839,13 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
819
  ?>
820
 
821
  <tr class="cme-bulk-select">
822
- <td colspan="<?php echo (int) $checks_per_row;?>">
823
- <span style="float:right">
824
- <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
825
- </span>
826
- </td></tr>
 
 
827
 
828
  </table>
829
  </div>
@@ -859,6 +881,16 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
859
  $checks_per_row = get_option( 'cme_form-rows', 1 );
860
  $i = 0; $first_row = true;
861
 
 
 
 
 
 
 
 
 
 
 
862
  foreach( array_keys($_plugin_caps) as $cap_name ) {
863
  $cap_name = sanitize_key($cap_name);
864
 
@@ -924,11 +956,13 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
924
  ?>
925
 
926
  <tr class="cme-bulk-select">
927
- <td colspan="<?php echo (int) $checks_per_row;?>">
928
- <span style="float:right">
929
- <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
930
- </span>
931
- </td></tr>
 
 
932
 
933
  </table>
934
  </div>
@@ -1048,6 +1082,16 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1048
  echo '<div class="ppc-filter-no-results" style="display:none;">' . esc_html__( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
1049
  ?>
1050
  <table class="widefat fixed striped form-table cme-checklist">
 
 
 
 
 
 
 
 
 
 
1051
  <?php
1052
  $centinel_ = true;
1053
  $i = 0; $first_row = true;
@@ -1157,11 +1201,13 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1157
  ?>
1158
 
1159
  <tr class="cme-bulk-select">
1160
- <td colspan="<?php echo (int) $checks_per_row;?>">
1161
- <span style="float:right">
1162
- <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
1163
- </span>
1164
- </td></tr>
 
 
1165
 
1166
  </table>
1167
  </div>
@@ -1273,7 +1319,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1273
  /* ]]> */
1274
  </script>
1275
 
1276
- <div style="display:inline-block; float:right;">
1277
  <?php
1278
  $level = ak_caps2level($rcaps);
1279
  ?>
@@ -1302,15 +1348,25 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1302
  $save_caption = (in_array(sanitize_key(get_locale()), ['en_EN', 'en_US'])) ? 'Save Capabilities' : __('Save Changes', 'capsman-enhanced');
1303
  ?>
1304
  <input type="submit" name="SaveRole" value="<?php echo esc_attr($save_caption);?>" class="button-primary" /> &nbsp;
1305
-
1306
- <?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
1307
- <a class="ak-delete" title="<?php echo esc_attr__('Delete this role', 'capsman-enhanced') ?>" href="<?php echo esc_url_raw(wp_nonce_url("admin.php?page={$this->ID}&amp;action=delete&amp;role={$default}", 'delete-role_' . $default)); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php esc_html_e('Delete Role', 'capsman-enhanced')?></a>
1308
- <?php endif; ?>
1309
  </p>
1310
 
1311
- </td>
1312
- <td class="sidebar">
1313
- <?php do_action('publishpress-caps_sidebar_top');?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1314
 
1315
  <dl>
1316
  <dt><?php esc_html_e('Add Capability', 'capsman-enhanced'); ?></dt>
@@ -1327,35 +1383,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1327
  do_action('publishpress-caps_sidebar_bottom');
1328
  ?>
1329
 
1330
- <dl>
1331
- <dt><?php (!in_array(get_locale(), ['en_EN', 'en_US'])) ? esc_html_e('Copy this role to', 'capsman-enhanced') : printf('Copy %s Role', esc_html(translate_user_role($roles[$default]))); ?></dt>
1332
- <dd style="text-align:center;">
1333
- <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
1334
- <p><input type="text" name="copy-name" class="<?php echo esc_attr($class);?>" placeholder="<?php esc_attr_e('Role Name', 'capsman-enhanced') ?>" />
1335
-
1336
- <?php if( $support_pp_only_roles ) : ?>
1337
- <label for="copy_role_pp_only" title="<?php esc_attr_e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" autocomplete="off" value="1"> <?php esc_html_e('hidden', 'capsman-enhanced'); ?> </label>
1338
- <?php endif; ?>
1339
-
1340
- <br />
1341
- <input type="submit" name="CopyRole" value="<?php esc_attr_e('Copy', 'capsman-enhanced') ?>" class="button" />
1342
- </p>
1343
- </dd>
1344
- </dl>
1345
-
1346
- <dl>
1347
- <dt><?php esc_html_e('Rename Role', 'capsman-enhanced'); ?></dt>
1348
- <dd style="text-align:center;">
1349
- <p><input type="text" name="rename-name" class="regular-text" placeholder="<?php esc_attr_e('New Role Name', 'capsman-enhanced') ?>" />
1350
-
1351
- <br />
1352
- <input type="submit" name="RenameRole" value="<?php esc_attr_e('Rename', 'capsman-enhanced') ?>" class="button" />
1353
- </p>
1354
- </dd>
1355
- </dl>
1356
- </td>
1357
- </tr>
1358
- </table>
1359
  </fieldset>
1360
  </form>
1361
 
78
  <?php wp_nonce_field('capsman-general-manager'); ?>
79
 
80
  <?php
81
+ if (empty($_REQUEST['pp_caps_tab']) && !empty($_REQUEST['added'])) {
82
+ $pp_tab = 'additional';
83
+ } else {
84
+ $pp_tab = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
85
+ }
86
  ?>
87
 
88
  <input type="hidden" name="pp_caps_tab" value="<?php echo esc_attr($pp_tab);?>" />
103
  </p>
104
 
105
  <fieldset>
106
+ <table id="akmin"><tr><td>
107
+ <div class="pp-columns-wrapper pp-enable-sidebar">
108
+ <div class="pp-column-left">
109
 
110
  <div style="float:right">
111
 
277
  <div class="ppc-capabilities-tabs">
278
  <ul>
279
  <?php
280
+ if (empty($_REQUEST['pp_caps_tab']) && !empty($_REQUEST['added'])) {
281
+ $active_tab_slug = 'additional';
282
+ } else {
283
+ $active_tab_slug = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
284
+ }
285
+
286
  $active_tab_id = "cme-cap-type-tables-{$active_tab_slug}";
287
 
288
  $ppc_tab_active = 'ppc-capabilities-tab-active';
743
  $checks_per_row = get_option( 'cme_form-rows', 1 );
744
  $i = 0; $first_row = true;
745
 
746
+ ?>
747
+ <tr class="cme-bulk-select">
748
+ <td colspan="<?php echo (int) $checks_per_row;?>">
749
+ <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
750
+ <span style="float:right">
751
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
752
+ </span>
753
+ </td>
754
+ </tr>
755
+
756
+ <?php
757
  $core_caps = _cme_core_caps();
758
  foreach( array_keys($core_caps) as $cap_name ) {
759
  $cap_name = sanitize_key($cap_name);
839
  ?>
840
 
841
  <tr class="cme-bulk-select">
842
+ <td colspan="<?php echo (int) $checks_per_row;?>">
843
+ <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
844
+ <span style="float:right">
845
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
846
+ </span>
847
+ </td>
848
+ </tr>
849
 
850
  </table>
851
  </div>
881
  $checks_per_row = get_option( 'cme_form-rows', 1 );
882
  $i = 0; $first_row = true;
883
 
884
+ ?>
885
+ <tr class="cme-bulk-select">
886
+ <td colspan="<?php echo (int) $checks_per_row;?>">
887
+ <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
888
+ <span style="float:right">
889
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
890
+ </span>
891
+ </td>
892
+ </tr>
893
+ <?php
894
  foreach( array_keys($_plugin_caps) as $cap_name ) {
895
  $cap_name = sanitize_key($cap_name);
896
 
956
  ?>
957
 
958
  <tr class="cme-bulk-select">
959
+ <td colspan="<?php echo (int) $checks_per_row;?>">
960
+ <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
961
+ <span style="float:right">
962
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
963
+ </span>
964
+ </td>
965
+ </tr>
966
 
967
  </table>
968
  </div>
1082
  echo '<div class="ppc-filter-no-results" style="display:none;">' . esc_html__( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
1083
  ?>
1084
  <table class="widefat fixed striped form-table cme-checklist">
1085
+
1086
+ <tr class="cme-bulk-select">
1087
+ <td colspan="<?php echo (int) $checks_per_row;?>">
1088
+ <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
1089
+ <span style="float:right">
1090
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
1091
+ </span>
1092
+ </td>
1093
+ </tr>
1094
+
1095
  <?php
1096
  $centinel_ = true;
1097
  $i = 0; $first_row = true;
1201
  ?>
1202
 
1203
  <tr class="cme-bulk-select">
1204
+ <td colspan="<?php echo (int) $checks_per_row;?>">
1205
+ <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check / uncheck all', 'capsman-enhanced');?>"> <span><?php _e('Capability Name', 'capability-manager-enhanced');?></span>
1206
+ <span style="float:right">
1207
+ &nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
1208
+ </span>
1209
+ </td>
1210
+ </tr>
1211
 
1212
  </table>
1213
  </div>
1319
  /* ]]> */
1320
  </script>
1321
 
1322
+ <div style="display:none; float:right;">
1323
  <?php
1324
  $level = ak_caps2level($rcaps);
1325
  ?>
1348
  $save_caption = (in_array(sanitize_key(get_locale()), ['en_EN', 'en_US'])) ? 'Save Capabilities' : __('Save Changes', 'capsman-enhanced');
1349
  ?>
1350
  <input type="submit" name="SaveRole" value="<?php echo esc_attr($save_caption);?>" class="button-primary" /> &nbsp;
 
 
 
 
1351
  </p>
1352
 
1353
+ </div><!-- .pp-column-left -->
1354
+ <div class="pp-column-right capabilities-sidebar">
1355
+ <?php
1356
+ do_action('publishpress-caps_sidebar_top');
1357
+
1358
+ $banners = new PublishPress\WordPressBanners\BannersMain;
1359
+ $banners->pp_display_banner(
1360
+ '',
1361
+ __( 'PublishPress Capabilities is safe to use', 'capsman-enhanced' ),
1362
+ array(
1363
+ __( 'This plugin automatically creates a backup whenever you save changes. You can use these backups to
1364
+ restore an earlier version of your roles and capabilities.', 'capsman-enhanced' )
1365
+ ),
1366
+ admin_url( 'admin.php?page=pp-capabilities-backup' ),
1367
+ __( 'Go to the Backup feature', 'capsman-enhanced' )
1368
+ );
1369
+ ?>
1370
 
1371
  <dl>
1372
  <dt><?php esc_html_e('Add Capability', 'capsman-enhanced'); ?></dt>
1383
  do_action('publishpress-caps_sidebar_bottom');
1384
  ?>
1385
 
1386
+ </div><!-- .pp-column-right -->
1387
+ </div><!-- .pp-columns-wrapper -->
1388
+ </td></tr></table> <!-- .akmin -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1389
  </fieldset>
1390
  </form>
1391
 
includes/backup-handler.php CHANGED
@@ -33,6 +33,8 @@ class Capsman_BackupHandler
33
  $cm_roles = $this->cm->ID . '_backup';
34
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
35
 
 
 
36
  if ( ! get_option( $cm_roles_initial ) ) {
37
  if ( $current_backup = get_option( $cm_roles ) ) {
38
  update_option( $cm_roles_initial, $current_backup, false );
@@ -43,8 +45,30 @@ class Capsman_BackupHandler
43
  }
44
  }
45
 
 
 
 
46
  $roles = get_option($wp_roles);
47
  update_option($cm_roles, $roles, false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  update_option($this->cm->ID . '_backup_datestamp', current_time( 'timestamp' ), false );
49
  ak_admin_notify(__('New backup saved.', 'capsman-enhanced'));
50
 
@@ -57,6 +81,8 @@ class Capsman_BackupHandler
57
  $cm_roles = $this->cm->ID . '_backup';
58
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
59
 
 
 
60
  switch ($_POST['select_restore']) {
61
  case 'restore_initial':
62
  if ($roles = get_option($cm_roles_initial)) {
@@ -69,8 +95,28 @@ class Capsman_BackupHandler
69
 
70
  case 'restore':
71
  if ($roles = get_option($cm_roles)) {
 
 
 
 
72
  update_option($wp_roles, $roles);
73
- ak_admin_notify(__('Roles and Capabilities restored from last backup.', 'capsman-enhanced'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  } else {
75
  ak_admin_error(__('Restore failed. No backup found.', 'capsman-enhanced'));
76
  }
@@ -85,7 +131,142 @@ class Capsman_BackupHandler
85
  }
86
  }
87
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  /**
91
  * Resets roles to WordPress defaults.
33
  $cm_roles = $this->cm->ID . '_backup';
34
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
35
 
36
+ $backup_sections = pp_capabilities_backup_sections();
37
+
38
  if ( ! get_option( $cm_roles_initial ) ) {
39
  if ( $current_backup = get_option( $cm_roles ) ) {
40
  update_option( $cm_roles_initial, $current_backup, false );
45
  }
46
  }
47
 
48
+ $active_backup = ['Roles and Capabilities'];
49
+
50
+ //role backup
51
  $roles = get_option($wp_roles);
52
  update_option($cm_roles, $roles, false);
53
+
54
+ //other backup
55
+ foreach($backup_sections as $backup_section){
56
+ $section_options = $backup_section['options'];
57
+ if(is_array($section_options) && !empty($section_options)){
58
+ foreach($section_options as $section_option){
59
+ $active_backup[] = $backup_section['label'];
60
+ $current_option = get_option($section_option);
61
+ update_option($section_option.'_backup', $current_option, false);
62
+ }
63
+ }
64
+ }
65
+
66
+ $active_backup = array_unique($active_backup);
67
+
68
+ //update last backup
69
+ update_option($this->cm->ID . '_last_backup', implode(', ', $active_backup));
70
+
71
+ //backup datestamp and response
72
  update_option($this->cm->ID . '_backup_datestamp', current_time( 'timestamp' ), false );
73
  ak_admin_notify(__('New backup saved.', 'capsman-enhanced'));
74
 
81
  $cm_roles = $this->cm->ID . '_backup';
82
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
83
 
84
+ $backup_sections = pp_capabilities_backup_sections();
85
+
86
  switch ($_POST['select_restore']) {
87
  case 'restore_initial':
88
  if ($roles = get_option($cm_roles_initial)) {
95
 
96
  case 'restore':
97
  if ($roles = get_option($cm_roles)) {
98
+
99
+ $restored_backup = ['Roles and Capabilities'];
100
+
101
+ //restore role backup
102
  update_option($wp_roles, $roles);
103
+
104
+ //restore other backup
105
+ foreach($backup_sections as $backup_section){
106
+ $section_options = $backup_section['options'];
107
+ if(is_array($section_options) && !empty($section_options)){
108
+ foreach($section_options as $section_option){
109
+ $backup_option = get_option($section_option.'_backup');
110
+ if ($backup_option) {
111
+ $restored_backup[] = $backup_section['label'];
112
+ update_option($section_option, $backup_option);
113
+ }
114
+ }
115
+ }
116
+ }
117
+
118
+ $restored_backup = array_unique($restored_backup);
119
+ ak_admin_notify(sprintf(__('%s restored from last backup.', 'capsman-enhanced'), implode(', ', $restored_backup)));
120
  } else {
121
  ak_admin_error(__('Restore failed. No backup found.', 'capsman-enhanced'));
122
  }
131
  }
132
  }
133
  }
134
+
135
+ if (isset($_POST['import_backup'])) {
136
+
137
+ check_admin_referer('pp-capabilities-backup');
138
+
139
+ if (empty($_FILES['import_file']['tmp_name']) || empty($_FILES['import_file']['name'])) {
140
+ ak_admin_error(__( 'Please upload a file to import', 'capsman-enhanced'));
141
+ return;
142
+ }
143
+
144
+ if (pathinfo(sanitize_text_field($_FILES['import_file']['name']), PATHINFO_EXTENSION) !== 'json') {
145
+ ak_admin_error(__( 'Please upload a valid .json file', 'capsman-enhanced'));
146
+ return;
147
+ }
148
+
149
+ // Make sure WordPress upload support is loaded.
150
+ if ( ! function_exists( 'wp_handle_upload' ) ) {
151
+ require_once( ABSPATH . 'wp-admin/includes/file.php' );
152
+ }
153
+
154
+ // Setup internal vars.
155
+ $overrides = array( 'test_form' => false, 'test_type' => false, 'mimes' => array('json' => 'application/json') );
156
+ $file = wp_handle_upload( $_FILES['import_file'], $overrides );
157
+
158
+ // Make sure we have an uploaded file.
159
+ if (isset($file['error'])) {
160
+ ak_admin_error($file['error']);
161
+ return;
162
+ }
163
+
164
+ if ( ! file_exists( $file['file'] ) ) {
165
+ ak_admin_error(__( 'Error importing settings! Please try again.', 'capsman-enhanced'));
166
+ return;
167
+ }
168
+
169
+ // Get the upload data.
170
+ $raw = file_get_contents( $file['file'] );
171
+ $data = @unserialize( $raw );
172
+
173
+ // Remove the uploaded file.
174
+ unlink( $file['file'] );
175
+
176
+ // Data checks.
177
+ if ( 'array' != gettype( $data ) ) {
178
+ ak_admin_error(__( 'Error importing settings! Please check that you uploaded a valid json file.', 'capsman-enhanced'));
179
+ return;
180
+ }
181
+
182
+ $backup_sections = pp_capabilities_backup_sections();
183
+ $restored_backup = [];
184
+
185
+ foreach ( $data as $option_key => $option_value ) {
186
+ if($option_key === 'user_roles'){
187
+ $restored_backup[] = 'Roles and Capabilities';
188
+ $section_data = $this->santize_import_role($option_value);
189
+ update_option($wpdb->prefix . 'user_roles', $section_data);
190
+ }else{
191
+ $restored_backup[] = $this->get_import_option_section($option_key, $backup_sections);
192
+ $section_data = $this->santize_import_data($option_value);
193
+ update_option($option_key, $section_data);
194
+ }
195
+ }
196
+
197
+ $restored_backup = array_unique($restored_backup);
198
+
199
+ ak_admin_notify(sprintf(__('%s successfully imported from uploaded data.', 'capsman-enhanced'), implode(', ', $restored_backup)));
200
+
201
+ }
202
  }
203
+
204
+ /**
205
+ * Sanitize role data before import.
206
+ *
207
+ * @return array
208
+ */
209
+ function get_import_option_section($option_key, $backup_sections)
210
+ {
211
+ $option_section = '';
212
+
213
+ foreach($backup_sections as $backup_section){
214
+ $section_options = $backup_section['options'];
215
+ if(is_array($section_options) && in_array($option_key, $section_options)){
216
+ $option_section= $backup_section['label'];
217
+ }
218
+ }
219
+
220
+ return $option_section;
221
+ }
222
+
223
+ /**
224
+ * Sanitize role data before import.
225
+ *
226
+ * @return array
227
+ */
228
+ function santize_import_role($role){
229
+
230
+ $sanitized_role = [];
231
+
232
+ foreach($role as $role_key => $role_data){
233
+ $role_key = sanitize_key($role_key);
234
+ $role_name = sanitize_text_field($role_data['name']);
235
+ $capabilities = $role_data['capabilities'];
236
+ $role_capabilities = array_combine(
237
+ array_map('sanitize_key', array_keys($capabilities)),
238
+ array_map('sanitize_text_field', array_values($capabilities))
239
+ );
240
+
241
+ //return sanitized data
242
+ $sanitized_role[$role_key] = ['name' => $role_name, 'capabilities' => $role_capabilities];
243
+ }
244
+
245
+ return $sanitized_role;
246
+ }
247
+
248
+ /**
249
+ * Sanitize other data before import.
250
+ *
251
+ * @return mixed
252
+ */
253
+ function santize_import_data($data){
254
+
255
+ $sanitized_data = [];
256
+
257
+ if (is_array($data)) {
258
+ foreach ($data as $data_key => $data_content) {
259
+ $new_key = sanitize_key($data_key);
260
+ $new_content = is_array($data_content) ? array_map('sanitize_text_field', $data_content) : sanitize_text_field($data_content);
261
+ //return sanitized data
262
+ $sanitized_data[$new_key] = $new_content;
263
+ }
264
+ }else{
265
+ $sanitized_data = sanitize_text_field($data);
266
+ }
267
+
268
+ return $sanitized_data;
269
+ }
270
 
271
  /**
272
  * Resets roles to WordPress defaults.
includes/backup.php CHANGED
@@ -36,10 +36,10 @@ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb-
36
 
37
  <div class="wrap publishpress-caps-manage publishpress-caps-backup pressshack-admin-wrapper">
38
  <div id="icon-capsman-admin" class="icon32"></div>
39
- <h2><?php printf(esc_html__('Backup Tool for %1$sPublishPress Capabilities%2$s', 'capsman-enhanced'), '<a href="admin.php?page=pp-capabilities">', '</a>'); ?></h2>
40
 
41
 
42
- <form method="post" action="admin.php?page=pp-capabilities-backup">
43
  <?php wp_nonce_field('pp-capabilities-backup'); ?>
44
 
45
  <div class="pp-columns-wrapper<?php echo defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ? ' pp-enable-sidebar' : '' ?>">
@@ -48,6 +48,7 @@ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb-
48
  <li class="nav-tab nav-tab-active"><a href="#ppcb-tab-restore"><?php esc_html_e('Restore', 'capsman-enhanced');?></a></li>
49
  <li class="nav-tab"><a href="#ppcb-tab-backup"><?php esc_html_e('Backup', 'capsman-enhanced');?></a></li>
50
  <li class="nav-tab"><a href="#ppcb-tab-reset"><?php esc_html_e('Reset Roles', 'capsman-enhanced');?></a></li>
 
51
  </ul>
52
 
53
  <fieldset>
@@ -108,10 +109,14 @@ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb-
108
 
109
  if (!$listed_manual_backup && ($backup_datestamp > strtotime($date_caption))) :
110
  $manual_date_caption = date('Y-m-d, g:i a', $backup_datestamp);
 
 
 
 
111
  ?>
112
  <li>
113
  <input type="radio" name="select_restore" value="restore" id="cme_restore_manual">
114
- <label for="cme_restore_manual"><?php printf(esc_html__('Manual backup of all roles (%s)', 'capsman-enhanced'), esc_html($manual_date_caption)); ?></label>
115
  </li>
116
  <?php
117
  $listed_manual_backup = true;
@@ -299,6 +304,70 @@ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb-
299
  </dl>
300
 
301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  </td>
303
  </tr>
304
  </table>
36
 
37
  <div class="wrap publishpress-caps-manage publishpress-caps-backup pressshack-admin-wrapper">
38
  <div id="icon-capsman-admin" class="icon32"></div>
39
+ <h2><?php esc_html_e('Backup Tool for PublishPress Capabilities', 'capsman-enhanced');?></h2>
40
 
41
 
42
+ <form method="post" action="admin.php?page=pp-capabilities-backup" enctype="multipart/form-data">
43
  <?php wp_nonce_field('pp-capabilities-backup'); ?>
44
 
45
  <div class="pp-columns-wrapper<?php echo defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ? ' pp-enable-sidebar' : '' ?>">
48
  <li class="nav-tab nav-tab-active"><a href="#ppcb-tab-restore"><?php esc_html_e('Restore', 'capsman-enhanced');?></a></li>
49
  <li class="nav-tab"><a href="#ppcb-tab-backup"><?php esc_html_e('Backup', 'capsman-enhanced');?></a></li>
50
  <li class="nav-tab"><a href="#ppcb-tab-reset"><?php esc_html_e('Reset Roles', 'capsman-enhanced');?></a></li>
51
+ <li class="nav-tab"><a href="#ppcb-tab-import-export"><?php esc_html_e('Export / Import', 'capsman-enhanced');?></a></li>
52
  </ul>
53
 
54
  <fieldset>
109
 
110
  if (!$listed_manual_backup && ($backup_datestamp > strtotime($date_caption))) :
111
  $manual_date_caption = date('Y-m-d, g:i a', $backup_datestamp);
112
+ $last_backup = get_option('capsman_last_backup');
113
+ if(!$last_backup){
114
+ $last_backup = __('all roles', 'capsman-enhanced');
115
+ }
116
  ?>
117
  <li>
118
  <input type="radio" name="select_restore" value="restore" id="cme_restore_manual">
119
+ <label for="cme_restore_manual"><?php printf(esc_html__('Manual backup of %s (%s)', 'capsman-enhanced'), esc_html($last_backup), esc_html($manual_date_caption)); ?></label>
120
  </li>
121
  <?php
122
  $listed_manual_backup = true;
304
  </dl>
305
 
306
 
307
+ <dl id="ppcb-tab-import-export" style="display:none;">
308
+ <dt><?php
309
+ esc_html_e('Export / Import', 'capsman-enhanced'); ?></dt>
310
+ <dd>
311
+
312
+ <div class="metabox-holder">
313
+ <div class="postbox">
314
+ <h3><span><?php esc_html_e('Export Settings', 'capsman-enhanced'); ?></span></h3>
315
+ <div class="inside">
316
+ <p><?php esc_html_e('Export the plugin settings for this site as a .json file. This allows you to easily import the configuration into another site.', 'capsman-enhanced'); ?></p>
317
+ <ul>
318
+ <li>
319
+ <input id="pp_capabilities_export_roles" name="pp_capabilities_export_section[]" type="checkbox" value="user_roles" checked />
320
+ <label for="pp_capabilities_export_roles">
321
+ <?php esc_html_e('Roles and Capabilities', 'capsman-enhanced'); ?>
322
+ </label>
323
+ </li>
324
+ <?php
325
+ $backup_sections = pp_capabilities_backup_sections();
326
+ foreach($backup_sections as $backup_key => $backup_section){
327
+ ?>
328
+ <li>
329
+ <input id="pp_capabilities_export_<?php echo esc_attr($backup_key); ?>" name="pp_capabilities_export_section[]" type="checkbox" value="<?php echo esc_attr($backup_key); ?>" checked />
330
+ <label for="pp_capabilities_export_<?php echo esc_attr($backup_key); ?>"> <?php esc_html_e($backup_section['label']); ?> </label>
331
+ </li>
332
+ <?php
333
+ }
334
+ ?>
335
+ </ul>
336
+ <p>
337
+ <input type="submit" name="export_backup"
338
+ value="<?php esc_attr_e('Export', 'capsman-enhanced') ?>"
339
+ class="button-primary"/>
340
+ </p>
341
+ </div>
342
+ </div>
343
+
344
+ <div class="postbox">
345
+ <h3><span><?php esc_html_e('Import Settings', 'capsman-enhanced'); ?></span></h3>
346
+ <div class="inside">
347
+ <p><strong><span class="pp-caps-warning"><?php esc_html_e('WARNING:', 'capsman-enhanced'); ?></span> <?php esc_html_e('Please make a \'Manual Backup\' in the backup tab to enable backup restore in case anything goes wrong.', 'capsman-enhanced'); ?></p>
348
+
349
+ <p><?php esc_html_e('Import the plugin settings from a .json file. This file can be obtained by exporting the settings on another site using the form above.', 'capsman-enhanced'); ?></p>
350
+
351
+ <p><?php esc_html_e('Before importing, we recommend using the "Backup" tab to create a backup of your current settings.', 'capsman-enhanced'); ?></p>
352
+
353
+ <br />
354
+
355
+ <p>
356
+ <input type="file" name="import_file"/>
357
+ </p>
358
+ <p>
359
+ <input type="submit" name="import_backup"
360
+ value="<?php esc_attr_e('Import', 'capsman-enhanced') ?>"
361
+ class="button-primary"/>
362
+ </p>
363
+ </div>
364
+ </div>
365
+ </div>
366
+
367
+ </dd>
368
+ </dl>
369
+
370
+
371
  </td>
372
  </tr>
373
  </table>
includes/features/admin-features.php CHANGED
@@ -312,6 +312,31 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
312
  window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-features&role=')); ?>' + $(this).val() + ''
313
 
314
  })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  })
316
  /* ]]> */
317
  </script>
312
  window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-features&role=')); ?>' + $(this).val() + ''
313
 
314
  })
315
+
316
+ // -------------------------------------------------------------
317
+ // Admin Toolbar Check
318
+ // -------------------------------------------------------------
319
+ $(document).on('change', '.pp-capability-menus-wrapper .ppc-menu-row.parent-menu.admintoolbar .check-item', function() {
320
+
321
+ if ($(this).is(':checked')) {
322
+ //add class if value is checked
323
+ $('.ppc-menu-row.child-menu.admintoolbar').find('.menu-item-link').addClass('restricted')
324
+
325
+ //toggle all checkbox
326
+ $('.ppc-menu-row.child-menu.admintoolbar').find("input[type='checkbox'][name='capsman_disabled_admin_features[]']").prop('checked', true)
327
+ $('.ppc-menu-row.child-menu.admintoolbar').find('.menu-item-link').addClass('restricted')
328
+
329
+ } else {
330
+ //unchecked value
331
+ $('.ppc-menu-row.child-menu.admintoolbar').find('.menu-item-link').removeClass('restricted')
332
+
333
+ //toggle all checkbox
334
+ $('.ppc-menu-row.child-menu.admintoolbar').find("input[type='checkbox'][name='capsman_disabled_admin_features[]']").prop('checked', false)
335
+ $('.ppc-menu-row.child-menu.admintoolbar').find('.menu-item-link').removeClass('restricted')
336
+
337
+ }
338
+
339
+ })
340
  })
341
  /* ]]> */
342
  </script>
includes/features/editor-features-classic.php CHANGED
@@ -7,7 +7,9 @@ $def_post_types = array_unique(apply_filters('pp_capabilities_feature_post_types
7
 
8
  asort($def_post_types);
9
 
10
- if (count($def_post_types) > 6) {
 
 
11
  ?>
12
  <style type="text/css">
13
  .pp-columns-wrapper.pp-enable-sidebar .pp-column-left {width: 100% !important;}
7
 
8
  asort($def_post_types);
9
 
10
+ $types_limit = (defined('PP_CAPABILITIES_EDITOR_FEATURES_MAX_TYPES')) ? PP_CAPABILITIES_EDITOR_FEATURES_MAX_TYPES : 12;
11
+
12
+ if (count($def_post_types) > $types_limit ) {
13
  ?>
14
  <style type="text/css">
15
  .pp-columns-wrapper.pp-enable-sidebar .pp-column-left {width: 100% !important;}
includes/features/editor-features-gutenberg.php CHANGED
@@ -7,7 +7,9 @@ $def_post_types = array_unique(apply_filters('pp_capabilities_feature_post_types
7
 
8
  asort($def_post_types);
9
 
10
- if (count($def_post_types) > 6) {
 
 
11
  ?>
12
  <style type="text/css">
13
  .pp-columns-wrapper.pp-enable-sidebar .pp-column-left {width: 100% !important;}
7
 
8
  asort($def_post_types);
9
 
10
+ $types_limit = (defined('PP_CAPABILITIES_EDITOR_FEATURES_MAX_TYPES')) ? PP_CAPABILITIES_EDITOR_FEATURES_MAX_TYPES : 12;
11
+
12
+ if (count($def_post_types) > $types_limit ) {
13
  ?>
14
  <style type="text/css">
15
  .pp-columns-wrapper.pp-enable-sidebar .pp-column-left {width: 100% !important;}
includes/features/features-block-script.js CHANGED
@@ -29,4 +29,7 @@ if(ppc_features.disabled_panel){
29
  if(disabled_panel.includes("post-status")){
30
  wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'post-status' ) ;// Post status
31
  }
 
 
 
32
  }
29
  if(disabled_panel.includes("post-status")){
30
  wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'post-status' ) ;// Post status
31
  }
32
+ if(disabled_panel.includes("template")){
33
+ wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'template' ) ;// Template
34
+ }
35
  }
includes/features/restrict-admin-features.php CHANGED
@@ -229,7 +229,7 @@ class PP_Capabilities_Admin_Features
229
  $title = preg_replace('#(<img.*?>)#', '', $title);
230
 
231
  //strip other html tags
232
- $title = strip_tags($title);
233
 
234
  return $title;
235
  }
@@ -260,6 +260,11 @@ class PP_Capabilities_Admin_Features
260
  public static function adminFeaturedRestriction()
261
  {
262
  global $ppc_disabled_toolbar, $ppc_disabled_widget;
 
 
 
 
 
263
  // Get all user roles.
264
  $user_roles = wp_get_current_user()->roles;
265
  $disabled_features = get_option("capsman_disabled_admin_features", []);
@@ -342,8 +347,8 @@ class PP_Capabilities_Admin_Features
342
  */
343
  public static function disableDashboardBarBackend()
344
  {
345
- echo '<style>html.wp-toolbar { padding-top:0!important; }</style>';
346
- echo '<style>#wpadminbar { display:none!important }</style>';
347
  }
348
 
349
  /**
229
  $title = preg_replace('#(<img.*?>)#', '', $title);
230
 
231
  //strip other html tags
232
+ $title = wp_strip_all_tags($title);
233
 
234
  return $title;
235
  }
260
  public static function adminFeaturedRestriction()
261
  {
262
  global $ppc_disabled_toolbar, $ppc_disabled_widget;
263
+
264
+ if (is_multisite() && is_super_admin() && !defined('PP_CAPABILITIES_RESTRICT_SUPER_ADMIN')) {
265
+ return;
266
+ }
267
+
268
  // Get all user roles.
269
  $user_roles = wp_get_current_user()->roles;
270
  $disabled_features = get_option("capsman_disabled_admin_features", []);
347
  */
348
  public static function disableDashboardBarBackend()
349
  {
350
+ //add inline styles
351
+ ppc_add_inline_style('html.wp-toolbar { padding-top:0!important; } #wpadminbar {display:none !important;}');
352
  }
353
 
354
  /**
includes/features/restrict-editor-features.php CHANGED
@@ -169,7 +169,8 @@ class PP_Capabilities_Post_Features {
169
 
170
  // apply the stored restrictions by css
171
  if ($restrict_elements = array_unique($restrict_elements)) {
172
- echo '<style>' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}</style>';
 
173
  }
174
  }
175
 
@@ -259,7 +260,8 @@ class PP_Capabilities_Post_Features {
259
  ['editor_script' => 'ppc-features-block-script']
260
  );
261
 
262
- echo '<style>' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}</style>';
 
263
  }
264
  }
265
 
@@ -315,6 +317,7 @@ class PP_Capabilities_Post_Features {
315
 
316
  esc_html__('Document Panel', 'capabilities-pro') => [
317
  'status_visibility' => ['label' => esc_html__('Status & visibility', 'capsman-enhanced'), 'elements' => 'post-status'],
 
318
  'permalink' => ['label' => esc_html__('Permalink', 'capsman-enhanced'), 'elements' => 'post-link'],
319
  'categories' => ['label' => esc_html__('Categories', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-category'],
320
  'tags' => ['label' => esc_html__('Tags', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-post_tag'],
169
 
170
  // apply the stored restrictions by css
171
  if ($restrict_elements = array_unique($restrict_elements)) {
172
+ //add inline styles
173
+ ppc_add_inline_style('' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}');
174
  }
175
  }
176
 
260
  ['editor_script' => 'ppc-features-block-script']
261
  );
262
 
263
+ //add inline styles
264
+ ppc_add_inline_style('' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}');
265
  }
266
  }
267
 
317
 
318
  esc_html__('Document Panel', 'capabilities-pro') => [
319
  'status_visibility' => ['label' => esc_html__('Status & visibility', 'capsman-enhanced'), 'elements' => 'post-status'],
320
+ 'template' => ['label' => esc_html__('Template', 'capsman-enhanced'), 'elements' => 'template'],
321
  'permalink' => ['label' => esc_html__('Permalink', 'capsman-enhanced'), 'elements' => 'post-link'],
322
  'categories' => ['label' => esc_html__('Categories', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-category'],
323
  'tags' => ['label' => esc_html__('Tags', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-post_tag'],
includes/filters.php CHANGED
@@ -55,15 +55,6 @@ add_filter('plugin_action_links_' . plugin_basename(CME_FILE), '_cme_fltPluginAc
55
 
56
  add_action('plugins_loaded', '_cme_migrate_pp_options');
57
 
58
- add_filter('cme_filterable_post_types', '_cme_filterable_post_types');
59
-
60
- function _cme_filterable_post_types($post_type_objects) {
61
- if ($advgb_profiles = get_post_type_object('advgb_profiles')) {
62
- $post_type_objects['advgb_profiles'] = $advgb_profiles;
63
- }
64
-
65
- return $post_type_objects;
66
- }
67
 
68
  function _cme_publishpress_roles_js() {
69
  if (defined('PUBLISHPRESS_VERSION') && !empty($_SERVER['REQUEST_URI']) && strpos(sanitize_text_field($_SERVER['REQUEST_URI']), 'page=pp-manage-roles')) {
55
 
56
  add_action('plugins_loaded', '_cme_migrate_pp_options');
57
 
 
 
 
 
 
 
 
 
 
58
 
59
  function _cme_publishpress_roles_js() {
60
  if (defined('PUBLISHPRESS_VERSION') && !empty($_SERVER['REQUEST_URI']) && strpos(sanitize_text_field($_SERVER['REQUEST_URI']), 'page=pp-manage-roles')) {
includes/functions-admin.php CHANGED
@@ -186,3 +186,48 @@ function ppc_remove_non_alphanumeric_space_characters($string)
186
  {
187
  return preg_replace("/(\W)+/", "", $string);
188
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  {
187
  return preg_replace("/(\W)+/", "", $string);
188
  }
189
+
190
+ /**
191
+ * Get all capabilities backup section.
192
+ *
193
+ * @return array $backup_sections
194
+ */
195
+ function pp_capabilities_backup_sections()
196
+ {
197
+ $cms_id = 'capsman';
198
+ $backup_sections = [];
199
+
200
+ //Editor Features
201
+ $backup_sections[$cms_id . '_editor_features_backup']['label'] = esc_html__('Editor Feature', 'capsman-enhanced');
202
+ $classic_editor = pp_capabilities_is_classic_editor_available();
203
+ $def_post_types = array_unique(apply_filters('pp_capabilities_feature_post_types', ['post', 'page']));
204
+ foreach ($def_post_types as $post_type) {
205
+ if ($classic_editor) {
206
+ $backup_sections[$cms_id . '_editor_features_backup']['options'][] = "capsman_feature_restrict_classic_{$post_type}";
207
+ }
208
+ $backup_sections[$cms_id . '_editor_features_backup']['options'][] = "capsman_feature_restrict_{$post_type}";
209
+ }
210
+
211
+ //Admin Features
212
+ $backup_sections[$cms_id . '_admin_features_backup']['label'] = esc_html__('Admin Feature', 'capsman-enhanced');
213
+ $backup_sections[$cms_id . '_admin_features_backup']['options'][] = "capsman_disabled_admin_features";
214
+
215
+ return apply_filters('pp_capabilities_backup_sections', $backup_sections);
216
+ }
217
+
218
+ /**
219
+ * Register and add inline styles.
220
+ *
221
+ * @param string $custom_css
222
+ * @param string $handle
223
+ *
224
+ * @return string
225
+ *
226
+ * @since 2.3.5
227
+ */
228
+ function ppc_add_inline_style($custom_css, $handle = 'ppc-dummy-css-handle')
229
+ {
230
+ wp_register_style(esc_attr($handle), false);
231
+ wp_enqueue_style(esc_attr($handle));
232
+ wp_add_inline_style(esc_attr($handle), esc_attr($custom_css));
233
+ }
includes/handler.php CHANGED
@@ -51,36 +51,7 @@ class CapsmanHandler
51
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
52
  }
53
 
54
- // rename role
55
- } elseif (!empty($_POST['RenameRole']) && !empty($_POST['rename-name']) && !empty($_POST['current'])) {
56
- $current = get_role(sanitize_key($_POST['current']));
57
- $new_title = sanitize_text_field($_POST['rename-name']);
58
-
59
- if ($current && isset($wp_roles->roles[$current->name]) && $new_title) {
60
- $old_title = $wp_roles->roles[$current->name]['name'];
61
- $wp_roles->roles[$current->name]['name'] = $new_title;
62
- update_option($wp_roles->role_key, $wp_roles->roles);
63
-
64
- $this->cm->set_current_role($current->name);
65
-
66
- $url = admin_url('admin.php?page=pp-capabilities&role=' . sanitize_key($current->name));
67
- wp_redirect($url);
68
- exit;
69
- }
70
- // Copy current role to a new one.
71
- } elseif (!empty($_POST['CopyRole']) && !empty($_POST['copy-name']) && !empty($_POST['current'])) {
72
- $current = get_role(sanitize_key($_POST['current']));
73
- if ( $newrole = $this->createRole(sanitize_text_field($_POST['copy-name']), $current->capabilities) ) {
74
- ak_admin_notify(__('New role created.', 'capsman-enhanced'));
75
- $this->cm->set_current_role($newrole);
76
- } else {
77
- if ( empty($_POST['copy-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
78
- ak_admin_error('Error: No role name specified.');
79
- else
80
- ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
81
- }
82
-
83
- // Save role changes. Already saved at start with self::saveRoleCapabilities().
84
  } elseif ( ! empty($_POST['SaveRole']) && !empty($_POST['current'])) {
85
  if ( MULTISITE ) {
86
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
@@ -399,33 +370,6 @@ class CapsmanHandler
399
 
400
  pp_capabilities_autobackup();
401
  }
402
-
403
- /**
404
- * Deletes a role.
405
- * The role comes from the $_GET['role'] var and the nonce has already been checked.
406
- * Default WordPress role cannot be deleted and if trying to do it, throws an error.
407
- * Users with the deleted role, are moved to the WordPress default role.
408
- *
409
- * @return void
410
- */
411
- function adminDeleteRole ()
412
- {
413
- if (!empty($_GET['role'])) {
414
- $role_name = sanitize_key($_GET['role']);
415
- check_admin_referer('delete-role_' . $role_name);
416
-
417
- $this->cm->current = $role_name;
418
-
419
- if (!pp_capabilities_is_editable_role($role_name)) {
420
- ak_admin_error(__('The selected role is not editable.', 'capsman-enhanced'));
421
- }
422
-
423
- if (false !== pp_capabilities_roles()->actions->delete_role($role_name, ['allow_system_role_deletion' => true, 'nonce_check' => false])) {
424
- unset($this->cm->roles[$role_name]);
425
- $this->cm->current = get_option('default_role');
426
- }
427
- }
428
- }
429
  }
430
 
431
  if ( ! function_exists('boolval') ) {
51
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
52
  }
53
 
54
+ // Save role changes. Already saved at start with self::saveRoleCapabilities()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  } elseif ( ! empty($_POST['SaveRole']) && !empty($_POST['current'])) {
56
  if ( MULTISITE ) {
57
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
370
 
371
  pp_capabilities_autobackup();
372
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  }
374
 
375
  if ( ! function_exists('boolval') ) {
includes/manager.php CHANGED
@@ -37,6 +37,8 @@ add_action( 'init', 'cme_update_pp_usage' ); // update early so resulting post
37
 
38
  function cme_update_pp_usage() {
39
  if ( ! empty($_REQUEST['update_filtered_types']) || ! empty($_REQUEST['update_filtered_taxonomies']) || ! empty($_REQUEST['update_detailed_taxonomies']) || ! empty($_REQUEST['SaveRole']) ) {
 
 
40
  require_once( dirname(__FILE__).'/pp-handler.php' );
41
  return _cme_update_pp_usage();
42
  }
@@ -134,7 +136,11 @@ class CapabilityManager
134
  $this->mod_url = plugins_url( '', CME_FILE );
135
 
136
  if (is_admin() && !empty($_REQUEST['page']) && ('pp-capabilities-settings' == $_REQUEST['page']) && (!empty($_POST['all_options']) || !empty($_POST['all_options_pro']))) {
137
- require_once (dirname(CME_FILE) . '/includes/settings-handler.php');
 
 
 
 
138
  }
139
 
140
  $this->moduleLoad();
@@ -157,6 +163,9 @@ class CapabilityManager
157
  add_action('wp_ajax_pp-roles-hide-role', [$this, 'handleRolesAjax']);
158
  add_action('wp_ajax_pp-roles-unhide-role', [$this, 'handleRolesAjax']);
159
  }
 
 
 
160
  }
161
 
162
  /**
@@ -234,7 +243,8 @@ class CapabilityManager
234
  add_filter( 'option_' . $role_key, array( &$this, 'reinstate_db_roles' ), PHP_INT_MAX );
235
  }
236
 
237
- add_action( 'plugins_loaded', array( &$this, 'processRoleUpdate' ) );
 
238
  }
239
 
240
  public function set_current_role($role_name) {
@@ -721,12 +731,6 @@ class CapabilityManager
721
  $this->generateNames();
722
  $roles = array_keys($this->roles);
723
 
724
- if ( isset($_GET['action']) && 'delete' == $_GET['action']) {
725
- require_once( dirname(__FILE__).'/handler.php' );
726
- $capsman_modify = new CapsmanHandler( $this );
727
- $capsman_modify->adminDeleteRole();
728
- }
729
-
730
  if ( ! isset($this->current) ) { // By default, we manage the default role
731
  if (empty($_POST) && !empty($_REQUEST['role'])) {
732
  $role = sanitize_key($_REQUEST['role']);
@@ -879,12 +883,14 @@ class CapabilityManager
879
  }
880
 
881
  if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD'])) {
 
882
  require_once( dirname(__FILE__).'/backup-handler.php' );
883
  $cme_backup_handler = new Capsman_BackupHandler( $this );
884
  $cme_backup_handler->processBackupTool();
885
  }
886
 
887
  if ( isset($_GET['action']) && 'reset-defaults' == $_GET['action']) {
 
888
  require_once( dirname(__FILE__).'/backup-handler.php' );
889
  $cme_backup_handler = new Capsman_BackupHandler( $this );
890
  $cme_backup_handler->backupToolReset();
@@ -893,6 +899,68 @@ class CapabilityManager
893
  include ( dirname(CME_FILE) . '/includes/backup.php' );
894
  }
895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
896
  function settingsPage() {
897
  include ( dirname(CME_FILE) . '/includes/settings.php' );
898
  }
37
 
38
  function cme_update_pp_usage() {
39
  if ( ! empty($_REQUEST['update_filtered_types']) || ! empty($_REQUEST['update_filtered_taxonomies']) || ! empty($_REQUEST['update_detailed_taxonomies']) || ! empty($_REQUEST['SaveRole']) ) {
40
+ check_admin_referer('capsman-general-manager');
41
+
42
  require_once( dirname(__FILE__).'/pp-handler.php' );
43
  return _cme_update_pp_usage();
44
  }
136
  $this->mod_url = plugins_url( '', CME_FILE );
137
 
138
  if (is_admin() && !empty($_REQUEST['page']) && ('pp-capabilities-settings' == $_REQUEST['page']) && (!empty($_POST['all_options']) || !empty($_POST['all_options_pro']))) {
139
+ add_action('init', function() {
140
+ if (isset($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], 'pp-capabilities-settings') && current_user_can('manage_capabilities')) {
141
+ require_once (dirname(CME_FILE) . '/includes/settings-handler.php');
142
+ }
143
+ }, 1);
144
  }
145
 
146
  $this->moduleLoad();
163
  add_action('wp_ajax_pp-roles-hide-role', [$this, 'handleRolesAjax']);
164
  add_action('wp_ajax_pp-roles-unhide-role', [$this, 'handleRolesAjax']);
165
  }
166
+
167
+ //process export
168
+ add_action( 'admin_init', [$this, 'processExport']);
169
  }
170
 
171
  /**
243
  add_filter( 'option_' . $role_key, array( &$this, 'reinstate_db_roles' ), PHP_INT_MAX );
244
  }
245
 
246
+ $action = (defined('PP_CAPABILITIES_COMPAT_MODE')) ? 'init' : 'plugins_loaded';
247
+ add_action( $action, array( &$this, 'processRoleUpdate' ) );
248
  }
249
 
250
  public function set_current_role($role_name) {
731
  $this->generateNames();
732
  $roles = array_keys($this->roles);
733
 
 
 
 
 
 
 
734
  if ( ! isset($this->current) ) { // By default, we manage the default role
735
  if (empty($_POST) && !empty($_REQUEST['role'])) {
736
  $role = sanitize_key($_REQUEST['role']);
883
  }
884
 
885
  if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD'])) {
886
+ check_admin_referer('pp-capabilities-backup');
887
  require_once( dirname(__FILE__).'/backup-handler.php' );
888
  $cme_backup_handler = new Capsman_BackupHandler( $this );
889
  $cme_backup_handler->processBackupTool();
890
  }
891
 
892
  if ( isset($_GET['action']) && 'reset-defaults' == $_GET['action']) {
893
+ check_admin_referer('capsman-reset-defaults');
894
  require_once( dirname(__FILE__).'/backup-handler.php' );
895
  $cme_backup_handler = new Capsman_BackupHandler( $this );
896
  $cme_backup_handler->backupToolReset();
899
  include ( dirname(CME_FILE) . '/includes/backup.php' );
900
  }
901
 
902
+
903
+ /**
904
+ * Processes export.
905
+ *
906
+ * This function need to run in admin init
907
+ * to enable clean download.
908
+ *
909
+ * @return void
910
+ */
911
+ function processExport()
912
+ {
913
+ global $wpdb;
914
+
915
+ if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('restore_roles')) {
916
+ // TODO: Implement exceptions.
917
+ wp_die('<strong>' . esc_html__('You do not have permission to perform this action.', 'capsman-enhanced') . '</strong>');
918
+ }
919
+
920
+ if ( isset($_POST['export_backup']) && isset($_POST['pp_capabilities_export_section']) && !empty($_POST['pp_capabilities_export_section'])) {
921
+ check_admin_referer('pp-capabilities-backup');
922
+
923
+
924
+ $export_option = array_map('sanitize_text_field', $_POST['pp_capabilities_export_section']);
925
+ $backup_sections = pp_capabilities_backup_sections();
926
+ $charset = get_option( 'blog_charset' );
927
+ $data = [];
928
+
929
+ //add role
930
+ if(in_array('user_roles', $export_option)){
931
+ $data['user_roles'] = get_option($wpdb->prefix . 'user_roles');
932
+ }
933
+
934
+ //other section
935
+ foreach($backup_sections as $backup_key => $backup_section){
936
+
937
+ if(!in_array($backup_key, $export_option)){
938
+ continue;
939
+ }
940
+ $section_options = $backup_section['options'];
941
+ if(is_array($section_options) && !empty($section_options)){
942
+ foreach($section_options as $section_option){
943
+ $active_backup[] = $backup_section['label'];
944
+ $data[$section_option] = get_option($section_option);
945
+ }
946
+ }
947
+ }
948
+
949
+ // Set the download headers.
950
+ nocache_headers();
951
+ header( 'Content-Type: application/json; charset=' . $charset );
952
+ header( 'Content-Disposition: attachment; filename=capabilities-export-' . current_time('Y-m-d_g-i-s_a') . '.json' );
953
+ header( "Expires: 0" );
954
+
955
+ // Serialize the export data.
956
+ echo serialize( $data );
957
+
958
+ // Start the download.
959
+ die();
960
+
961
+ }
962
+ }
963
+
964
  function settingsPage() {
965
  include ( dirname(CME_FILE) . '/includes/settings.php' );
966
  }
includes/roles/class/class-pp-roles-actions.php CHANGED
@@ -18,6 +18,7 @@ class Pp_Roles_Actions
18
  */
19
  protected $actions = [
20
  'pp-roles-add-role',
 
21
  'pp-roles-delete-role',
22
  'pp-roles-hide-role',
23
  'pp-roles-unhide-role',
@@ -85,6 +86,10 @@ class Pp_Roles_Actions
85
  $this->notify($message, 'success', false);
86
  }
87
 
 
 
 
 
88
  protected function notify_error($message) {
89
  $this->notify($message, 'error', false);
90
  }
@@ -95,8 +100,9 @@ class Pp_Roles_Actions
95
  * @param string $message The message to show to the user
96
  * @param string $type The type of message to show [error|success|warning\info]
97
  * @param bool $redirect If we should redirect to referrer
 
98
  */
99
- protected function notify($message, $type = 'error', $redirect = true)
100
  {
101
  if (!in_array($type, ['error', 'success', 'warning'])) {
102
  $type = 'error';
@@ -110,22 +116,22 @@ class Pp_Roles_Actions
110
  //enqueue message
111
  pp_capabilities_roles()->notify->add($type, $message);
112
 
113
- // @todo: migrate Capabilities screen notice display method
114
  if (!empty($_REQUEST['page']) && ('pp-capabilities' == $_REQUEST['page'])) {
115
  $redirect = false;
116
  }
117
 
118
  if ($redirect) {
119
- $redirect_url = wp_get_referer();
120
- $redirect_url = wp_get_raw_referer();
121
-
122
- if (empty($redirect_url)) {
123
- $params = [
 
124
  'page' => 'pp-capabilities-roles',
125
  ];
126
- $redirect_url = add_query_arg($params, admin_url('admin.php'));
 
127
  }
128
-
129
  wp_safe_redirect($redirect_url);
130
  die();
131
  }
@@ -139,7 +145,7 @@ class Pp_Roles_Actions
139
  {
140
 
141
  if (!current_user_can($this->capability)) {
142
- $this->notify(__('You do not have sufficient permissions to perform this action.', 'capsman-enhanced'));
143
  }
144
  }
145
 
@@ -151,10 +157,9 @@ class Pp_Roles_Actions
151
  */
152
  protected function check_nonce($action = '-1', $query_arg = '_wpnonce')
153
  {
154
-
155
  $checked = isset($_REQUEST[$query_arg]) && wp_verify_nonce(sanitize_key($_REQUEST[$query_arg]), $action);
156
  if (!$checked) {
157
- $this->notify(__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
158
  }
159
  }
160
 
@@ -171,10 +176,24 @@ class Pp_Roles_Actions
171
  /**
172
  * Check nonce
173
  */
174
- $this->check_nonce('add-role');
 
 
175
 
176
- if (empty($_REQUEST['name'])) {
177
- $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
179
 
180
  /**
@@ -182,7 +201,7 @@ class Pp_Roles_Actions
182
  */
183
  require_once(dirname(CME_FILE).'/includes/handler.php');
184
  $capsman_handler = new CapsmanHandler();
185
- $role = $capsman_handler->createNewName(sanitize_text_field($_REQUEST['name']));
186
 
187
  /**
188
  * Check for invalid name entry
@@ -190,7 +209,7 @@ class Pp_Roles_Actions
190
  if (!empty($role['error']) && ('invalid_name' == $role['error'])) {
191
  $out = sprintf(
192
  __('Invalid role name entry: %s', 'capsman-enhanced'),
193
- "<strong>" . esc_html($role['name']) . "</strong>"
194
  );
195
  $this->notify($out);
196
  }
@@ -202,7 +221,7 @@ class Pp_Roles_Actions
202
  //this role already exist
203
  $out = sprintf(
204
  __('The role "%s" already exists. Please choose a different name.', 'capsman-enhanced'),
205
- "<strong>" . esc_html($role['name']) . "</strong>"
206
  );
207
 
208
  $this->notify($out);
@@ -211,46 +230,132 @@ class Pp_Roles_Actions
211
  /**
212
  * Add role
213
  */
214
- $result = add_role($role['name'], $role['display'], []);
215
 
 
 
 
 
 
 
 
 
 
 
 
216
  if (!$result instanceof WP_Role) {
217
- if ($this->notify(__('Something went wrong, the system wasn\'t able to create the role, refresh the page and try again.', 'capsman-enhanced'))) {
218
  return;
219
  }
220
  }
221
 
222
- if ($this->is_ajax()) {
223
- /**
224
- * The role row
225
- */
226
- $count_users = count_users();
227
- ob_start();
228
-
229
- global $hook_suffix; //avoid warning outputs
230
- if (!isset($hook_suffix)) {
231
- $hook_suffix = '';
232
- }
233
 
234
- pp_capabilities_roles()->admin->get_roles_list_table()->single_row([
235
- 'role' => $result->name,
236
- 'name' => $this->manager->get_role_name($result->name),
237
- 'count' => isset($count_users['avail_roles'][$result->name]) ? $count_users['avail_roles'][$result->name] : 0,
238
- 'is_system' => $this->manager->is_system_role($result->name)
239
- ]);
240
- $out = ob_get_clean();
 
 
 
 
 
 
 
241
 
242
- wp_send_json_success($out);
243
- } else {
244
- /**
245
- * Notify user and redirect
246
- */
247
- $out = sprintf(
248
- __('The new role %s was created successfully.', 'capsman-enhanced'),
249
- '<strong>' . $role . '</strong>'
250
- );
251
-
252
- $this->notify($out, 'success');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  }
255
 
256
  /**
@@ -276,8 +381,8 @@ class Pp_Roles_Actions
276
  /**
277
  * Check nonce
278
  */
279
- if ($nonce_check) {
280
- $this->check_nonce($nonce_check);
281
  }
282
 
283
  /**
@@ -301,7 +406,7 @@ class Pp_Roles_Actions
301
  * If no roles provided return
302
  */
303
  if (empty($roles)) {
304
- $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
305
  }
306
 
307
  $default = get_option('default_role');
@@ -309,7 +414,7 @@ class Pp_Roles_Actions
309
  if ( $default == $role ) {
310
  $this->notify(
311
  sprintf(
312
- __('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'),
313
  'options-general.php'
314
  )
315
  );
@@ -328,7 +433,7 @@ class Pp_Roles_Actions
328
  }
329
 
330
  if (empty($roles)) {
331
- $this->notify(__('Deleting a system role is not allowed.', 'capsman-enhanced'));
332
  }
333
  }
334
 
@@ -356,13 +461,13 @@ class Pp_Roles_Actions
356
 
357
  $single = sprintf(
358
  esc_html__('The role %1$s was successfully deleted. %2$s', 'capsman-enhanced'),
359
- '<strong>' . esc_html($roles[0]) . '</strong>',
360
  $users_message
361
  );
362
 
363
  $plural = sprintf(
364
  esc_html__('The selected %1$s roles were successfully deleted. %2$s', 'capsman-enhanced'),
365
- '<strong>' . $deleted . '</strong>',
366
  $users_message
367
  );
368
 
@@ -371,10 +476,19 @@ class Pp_Roles_Actions
371
  if ($this->is_ajax()) {
372
  wp_send_json_success($out);
373
  } else {
374
- $this->notify($out, 'success');
 
 
 
 
 
 
 
 
 
375
  }
376
  } else {
377
- $this->notify(__('The role could not be deleted.', 'capsman-enhanced'));
378
  }
379
  }
380
 
@@ -429,7 +543,7 @@ class Pp_Roles_Actions
429
 
430
  $out = sprintf(
431
  __('The role %1$s was successfully hidden.', 'capsman-enhanced'),
432
- '<strong>' . $roles[0] . '</strong>'
433
  );
434
 
435
  if ($this->is_ajax()) {
@@ -478,10 +592,10 @@ class Pp_Roles_Actions
478
  * If no roles provided return
479
  */
480
  if (empty($roles)) {
481
- $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
482
  }
483
 
484
- $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
485
  $pp_only = array_diff($pp_only, (array) $roles);
486
  pp_capabilities_update_permissions_option('supplemental_role_defs', $pp_only);
487
 
@@ -489,7 +603,7 @@ class Pp_Roles_Actions
489
 
490
  $out = sprintf(
491
  __('The role %1$s was successfully unhidden.', 'capsman-enhanced'),
492
- '<strong>' . $roles[0] . '</strong>'
493
  );
494
 
495
  if ($this->is_ajax()) {
18
  */
19
  protected $actions = [
20
  'pp-roles-add-role',
21
+ 'pp-roles-edit-role',
22
  'pp-roles-delete-role',
23
  'pp-roles-hide-role',
24
  'pp-roles-unhide-role',
86
  $this->notify($message, 'success', false);
87
  }
88
 
89
+ protected function notify_info($message) {
90
+ $this->notify($message, 'info', false);
91
+ }
92
+
93
  protected function notify_error($message) {
94
  $this->notify($message, 'error', false);
95
  }
100
  * @param string $message The message to show to the user
101
  * @param string $type The type of message to show [error|success|warning\info]
102
  * @param bool $redirect If we should redirect to referrer
103
+ * @param bool|string $redirect_url url to redirect to if provided
104
  */
105
+ protected function notify($message, $type = 'error', $redirect = true, $redirect_url = false)
106
  {
107
  if (!in_array($type, ['error', 'success', 'warning'])) {
108
  $type = 'error';
116
  //enqueue message
117
  pp_capabilities_roles()->notify->add($type, $message);
118
 
 
119
  if (!empty($_REQUEST['page']) && ('pp-capabilities' == $_REQUEST['page'])) {
120
  $redirect = false;
121
  }
122
 
123
  if ($redirect) {
124
+ if (!$redirect_url) {
125
+ $redirect_url = wp_get_referer();
126
+ $redirect_url = wp_get_raw_referer();
127
+
128
+ if (empty($redirect_url)) {
129
+ $params = [
130
  'page' => 'pp-capabilities-roles',
131
  ];
132
+ $redirect_url = esc_url_raw(add_query_arg($params, admin_url('admin.php')));
133
+ }
134
  }
 
135
  wp_safe_redirect($redirect_url);
136
  die();
137
  }
145
  {
146
 
147
  if (!current_user_can($this->capability)) {
148
+ $this->notify(esc_html__('You do not have sufficient permissions to perform this action.', 'capsman-enhanced'));
149
  }
150
  }
151
 
157
  */
158
  protected function check_nonce($action = '-1', $query_arg = '_wpnonce')
159
  {
 
160
  $checked = isset($_REQUEST[$query_arg]) && wp_verify_nonce(sanitize_key($_REQUEST[$query_arg]), $action);
161
  if (!$checked) {
162
+ $this->notify(esc_html__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
163
  }
164
  }
165
 
176
  /**
177
  * Check nonce
178
  */
179
+ if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), 'add-role')) {
180
+ $this->notify(esc_html__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
181
+ }
182
 
183
+ if (empty($_REQUEST['role_name'])) {
184
+ $this->notify(esc_html__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
185
+ }
186
+
187
+ if (empty($_REQUEST['role_slug'])) {
188
+ $role_slug = str_replace(
189
+ [' ', '(', ')', '&', '#', '@', '+', ','],
190
+ '_',
191
+ strtolower(sanitize_text_field($_REQUEST['role_name']))
192
+ );
193
+
194
+ $role_slug = preg_replace('/[^0-9a-zA-Z\-\_]/', '', $role_slug);
195
+ } else {
196
+ $role_slug = sanitize_key($_REQUEST['role_slug']);
197
  }
198
 
199
  /**
201
  */
202
  require_once(dirname(CME_FILE).'/includes/handler.php');
203
  $capsman_handler = new CapsmanHandler();
204
+ $role = $capsman_handler->createNewName(sanitize_key($role_slug));
205
 
206
  /**
207
  * Check for invalid name entry
209
  if (!empty($role['error']) && ('invalid_name' == $role['error'])) {
210
  $out = sprintf(
211
  __('Invalid role name entry: %s', 'capsman-enhanced'),
212
+ esc_html($role['name'])
213
  );
214
  $this->notify($out);
215
  }
221
  //this role already exist
222
  $out = sprintf(
223
  __('The role "%s" already exists. Please choose a different name.', 'capsman-enhanced'),
224
+ esc_html($role['name'])
225
  );
226
 
227
  $this->notify($out);
230
  /**
231
  * Add role
232
  */
233
+ $role_capabilities = [];
234
 
235
+ //get copied role capabilites
236
+ if (!empty($_REQUEST['role_action']) && $_REQUEST['role_action'] === 'copy'
237
+ && !empty($_REQUEST['role'])
238
+ && $role_data = pp_roles_get_role_data(sanitize_key($_REQUEST['role']))
239
+ ) {
240
+ $role_capabilities = $role_data['capabilities'];
241
+ }
242
+ if (isset($_REQUEST['role_level'])) {
243
+ $role_capabilities = array_merge($role_capabilities, ak_level2caps(absint($_REQUEST['role_level'])));
244
+ }
245
+ $result = add_role($role['name'], sanitize_text_field($_REQUEST['role_name']), $role_capabilities);
246
  if (!$result instanceof WP_Role) {
247
+ if ($this->notify(esc_html__('Something went wrong, the system wasn\'t able to create the role, refresh the page and try again.', 'capsman-enhanced'))) {
248
  return;
249
  }
250
  }
251
 
252
+ /**
253
+ * Notify user and redirect
254
+ */
255
+ $out = sprintf(esc_html__('The new role %s was created successfully.', 'capsman-enhanced'), sanitize_text_field($_REQUEST['role_name']));
 
 
 
 
 
 
 
256
 
257
+ $redirect_url = esc_url_raw(
258
+ add_query_arg(
259
+ [
260
+ 'page' => 'pp-capabilities-roles',
261
+ 'add' => 'new_item',
262
+ 'role_action' => 'edit',
263
+ 'role' => esc_attr($role['name'])
264
+ ],
265
+ admin_url('admin.php')
266
+ )
267
+ );
268
+
269
+ $this->notify($out, 'success', true, $redirect_url);
270
+ }
271
 
272
+ /**
273
+ * Handles edit role action
274
+ */
275
+ public function edit_role()
276
+ {
277
+ global $wp_roles;
278
+
279
+ /**
280
+ * Check capabilities
281
+ */
282
+ $this->check_permissions();
283
+
284
+ /**
285
+ * Check nonce
286
+ */
287
+ if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), 'edit-role')) {
288
+ $this->notify(esc_html__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
289
+ }
290
+
291
+ if (empty($_REQUEST['current_role']) || empty($_REQUEST['role_name'])) {
292
+ $this->notify(esc_html__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
293
+ }
294
+
295
+ /**
296
+ * check if it's delete action and refer
297
+ */
298
+ if (!empty($_REQUEST['delete_role'])) {
299
+ $this->delete_role(sanitize_key($_REQUEST['current_role']), ['nonce_check' => 'edit-role']);
300
+ return;
301
+ }
302
+
303
+ /**
304
+ * Update role
305
+ */
306
+ $current = get_role(sanitize_key($_REQUEST['current_role']));
307
+ $new_title = sanitize_text_field($_REQUEST['role_name']);
308
+
309
+ $old_title = $wp_roles->roles[$current->name]['name'];
310
+ $wp_roles->roles[$current->name]['name'] = $new_title;
311
+
312
+ if ($current && isset($wp_roles->roles[$current->name]) && $new_title) {
313
+ $old_title = $wp_roles->roles[$current->name]['name'];
314
+ $wp_roles->roles[$current->name]['name'] = $new_title;
315
+ update_option($wp_roles->role_key, $wp_roles->roles);
316
  }
317
+
318
+ $new_caps = pp_roles_remove_capabilities_role_level($current->capabilities);
319
+
320
+ if (isset($_REQUEST['role_level'])) {
321
+ $add_caps = array_merge($new_caps, ak_level2caps(absint($_REQUEST['role_level'])));
322
+ }else{
323
+ $add_caps = $new_caps;
324
+ }
325
+ $del_caps = array_diff_key($current->capabilities, $new_caps);
326
+
327
+
328
+ // Remove capabilities from role
329
+ foreach ( $del_caps as $cap => $grant) {
330
+ if ( current_user_can('administrator') || current_user_can($cap) )
331
+ $current->remove_cap($cap);
332
+ }
333
+
334
+ //add new capabilities to the role
335
+ foreach ( $add_caps as $cap => $grant ) {
336
+ if ( current_user_can('administrator') || current_user_can($cap) )
337
+ $current->add_cap( $cap, $grant );
338
+ }
339
+
340
+
341
+ /**
342
+ * Notify user and redirect
343
+ */
344
+ $out = sprintf( __('%s role updated successfully.', 'capsman-enhanced'), $new_title);
345
+
346
+ $redirect_url = esc_url_raw(
347
+ add_query_arg(
348
+ [
349
+ 'page' => 'pp-capabilities-roles',
350
+ 'add' => 'new_item',
351
+ 'role_action' => 'edit',
352
+ 'role' => esc_attr(sanitize_key($_REQUEST['current_role']))
353
+ ],
354
+ admin_url('admin.php')
355
+ )
356
+ );
357
+
358
+ $this->notify($out, 'success', true, $redirect_url);
359
  }
360
 
361
  /**
381
  /**
382
  * Check nonce
383
  */
384
+ if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), $nonce_check)) {
385
+ $this->notify(esc_html__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
386
  }
387
 
388
  /**
406
  * If no roles provided return
407
  */
408
  if (empty($roles)) {
409
+ $this->notify(esc_html__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
410
  }
411
 
412
  $default = get_option('default_role');
414
  if ( $default == $role ) {
415
  $this->notify(
416
  sprintf(
417
+ esc_html__('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'),
418
  'options-general.php'
419
  )
420
  );
433
  }
434
 
435
  if (empty($roles)) {
436
+ $this->notify(esc_html__('Deleting a system role is not allowed.', 'capsman-enhanced'));
437
  }
438
  }
439
 
461
 
462
  $single = sprintf(
463
  esc_html__('The role %1$s was successfully deleted. %2$s', 'capsman-enhanced'),
464
+ esc_html($roles[0]),
465
  $users_message
466
  );
467
 
468
  $plural = sprintf(
469
  esc_html__('The selected %1$s roles were successfully deleted. %2$s', 'capsman-enhanced'),
470
+ $deleted,
471
  $users_message
472
  );
473
 
476
  if ($this->is_ajax()) {
477
  wp_send_json_success($out);
478
  } else {
479
+ $redirect_url = esc_url_raw(
480
+ add_query_arg(
481
+ [
482
+ 'page' => 'pp-capabilities-roles'
483
+ ],
484
+ admin_url('admin.php')
485
+ )
486
+ );
487
+
488
+ $this->notify($out, 'success', true, $redirect_url);
489
  }
490
  } else {
491
+ $this->notify(esc_html__('The role could not be deleted.', 'capsman-enhanced'));
492
  }
493
  }
494
 
543
 
544
  $out = sprintf(
545
  __('The role %1$s was successfully hidden.', 'capsman-enhanced'),
546
+ $roles[0]
547
  );
548
 
549
  if ($this->is_ajax()) {
592
  * If no roles provided return
593
  */
594
  if (empty($roles)) {
595
+ $this->notify(esc_html__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
596
  }
597
 
598
+ $pp_only = (array) pp_capabilities_get_permissions_option('supplemental_role_defs');
599
  $pp_only = array_diff($pp_only, (array) $roles);
600
  pp_capabilities_update_permissions_option('supplemental_role_defs', $pp_only);
601
 
603
 
604
  $out = sprintf(
605
  __('The role %1$s was successfully unhidden.', 'capsman-enhanced'),
606
+ $roles[0]
607
  );
608
 
609
  if ($this->is_ajax()) {
includes/roles/class/class-pp-roles-admin.php CHANGED
@@ -89,6 +89,386 @@ class Pp_Roles_Admin
89
  return $this->roles_list_table;
90
  }
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  /**
93
  * Display admin flash notices
94
  */
89
  return $this->roles_list_table;
90
  }
91
 
92
+ /**
93
+ * Get the fields tabs to be rendered on role screen
94
+ *
95
+ * @param mixed $current
96
+ * @param bool $role_edit whether current action is role edit
97
+ * @param bool $role_copy whether current action is role copy
98
+ *
99
+ * @return array
100
+ */
101
+ public static function get_fields_tabs($current, $role_edit, $role_copy)
102
+ {
103
+ $fields_tabs = [
104
+ 'general' => [
105
+ 'label' => esc_html__('General', 'capsman-enhanced'),
106
+ 'icon' => 'dashicons dashicons-admin-tools',
107
+ ],
108
+ 'advanced' => [
109
+ 'label' => esc_html__('Advanced', 'capsman-enhanced'),
110
+ 'icon' => 'dashicons dashicons-admin-generic',
111
+ ],
112
+ ];
113
+
114
+ if ($role_edit && !$current['is_system']) {
115
+ $fields_tabs['delete'] = [
116
+ 'label' => esc_html__('Delete', 'capsman-enhanced'),
117
+ 'icon' => 'dashicons dashicons-trash',
118
+ ];
119
+ }
120
+
121
+ /**
122
+ * Customize fields tabs presented on role screen.
123
+ *
124
+ * @param array $fields_tabs Existing fields tabs to display.
125
+ * @param mixed $current
126
+ */
127
+ $fields_tabs = apply_filters('pp_roles_tabs', $fields_tabs, $current);
128
+
129
+ return $fields_tabs;
130
+ }
131
+
132
+ /**
133
+ * Get the fields to be rendered on role screen
134
+ *
135
+ * @param mixed $current.
136
+ * @param bool $role_edit whether current action is role edit
137
+ * @param bool $role_copy whether current action is role copy
138
+ *
139
+ * @return array
140
+ */
141
+ public static function get_fields($current, $role_edit, $role_copy)
142
+ {
143
+ $fields = [
144
+ 'role_name' => [
145
+ 'label' => esc_html__('Role Name', 'capsman-enhanced'),
146
+ 'type' => 'text',
147
+ 'value_key' => 'name',
148
+ 'tab' => 'general',
149
+ 'editable' => true,
150
+ 'required' => true,
151
+ ],
152
+ 'role_slug' => [
153
+ 'label' => esc_html__('Role Slug', 'capsman-enhanced'),
154
+ 'description' => esc_html__('The “slug” is the URL-friendly version of the role. It is usually all lowercase and contains only letters, numbers and underscores.', 'capsman-enhanced'),
155
+ 'type' => 'text',
156
+ 'value_key' => 'role',
157
+ 'tab' => 'general',
158
+ 'editable' => ($role_edit) ? false : true,
159
+ 'required' => false,
160
+ ],
161
+ 'role_level' => [
162
+ 'label' => esc_html__('Role Level', 'capsman-enhanced'),
163
+ 'type' => 'select',
164
+ 'value_key' => '',
165
+ 'tab' => 'advanced',
166
+ 'editable' => true,
167
+ 'options' => [
168
+ '10' => '10',
169
+ '9' => '9',
170
+ '8' => '8',
171
+ '7' => '7',
172
+ '6' => '6',
173
+ '5' => '5',
174
+ '4' => '4',
175
+ '3' => '3',
176
+ '2' => '2',
177
+ '1' => '1',
178
+ '0' => '0',
179
+ ],
180
+ 'selected' => (is_array($current) && isset($current['capabilities'])) ? ak_caps2level($current['capabilities']) : '0',
181
+ ],
182
+ 'delete_role' => [
183
+ 'label' => esc_html__('Delete role', 'capsman-enhanced'),
184
+ 'description' => esc_html__('Deleting this role will completely remove it from database and is irrecoverable.', 'capsman-enhanced'),
185
+ 'type' => 'button',
186
+ 'value_key' => '',
187
+ 'tab' => 'delete',
188
+ 'editable' => true,
189
+ ],
190
+ ];
191
+
192
+ /**
193
+ * Customize fields presented on role screen.
194
+ *
195
+ * @param array $fields Existing fields to display.
196
+ * @param mixed $current Author to be rendered.
197
+ */
198
+ $fields = apply_filters('pp_roles_fields', $fields, $current);
199
+
200
+ return $fields;
201
+ }
202
+
203
+ /**
204
+ * Get a rendered field partial
205
+ *
206
+ * @param array $args Arguments to render in the partial.
207
+ */
208
+ private static function get_rendered_role_partial($args)
209
+ {
210
+ $defaults = [
211
+ 'description' => '',
212
+ 'type' => 'text',
213
+ 'tab' => 'general',
214
+ 'editable' => true,
215
+ 'required' => false,
216
+ 'value' => '',
217
+ 'options' => [],
218
+ 'selected' => '',
219
+ 'label' => '',
220
+ ];
221
+ $args = array_merge($defaults, $args);
222
+ $key = $args['key'];
223
+ $tab_class = 'pp-roles-tab-tr pp-roles-' . $args['tab'] . '-tab';
224
+ $tab_style = ($args['tab'] === 'general') ? '' : 'display:none;';
225
+ ?>
226
+ <tr valign="top"
227
+ class="<?php echo esc_attr('form-field role-' . $key . '-wrap '. $tab_class); ?>"
228
+ data-tab="<?php echo esc_attr($args['tab']); ?>"
229
+ style="<?php echo esc_attr($tab_style); ?>"
230
+ >
231
+ <th scope="row">
232
+ <?php if (!empty($args['label'])) : ?>
233
+ <label for="<?php echo esc_attr($key); ?>"><?php echo esc_html($args['label']); ?></label>
234
+ <?php if ($args['required']) { ?>
235
+ <span class="required">*</span>
236
+ <?php } ?>
237
+ <?php endif; ?>
238
+ <?php if ($key === 'role_slug') { ?>
239
+ <p id="pp-role-slug-exists" class="red-warning" style="display:none;">
240
+ <?php esc_html_e('Slug already exists', 'capsman-enhanced'); ?>
241
+ <span class="dashicons dashicons-warning"></span>
242
+ </p>
243
+ <?php } ?>
244
+ </th>
245
+ <td>
246
+ <?php
247
+ if ($args['type'] === 'select') : ?>
248
+ <select name="<?php echo esc_attr($key); ?>" <?php echo ($args['required'] ? 'required="true"' : '');?>>
249
+ <?php
250
+ foreach ($args['options'] as $select_key => $select_label) {
251
+ ?>
252
+ <option value="<?php esc_attr_e($select_key); ?>"
253
+ <?php selected($select_key, $args['selected']); ?>>
254
+ <?php echo esc_html($select_label); ?>
255
+ </option>
256
+ <?php } ?>
257
+ </select>
258
+ <?php
259
+ elseif ($args['type'] === 'button') :
260
+ ?>
261
+ <input type="submit"
262
+ class="button-secondary pp-roles-delete-botton"
263
+ name="<?php echo esc_attr($key); ?>"
264
+ value="<?php echo esc_attr($args['label']); ?>"
265
+ onclick="return confirm('<?php esc_attr_e('Are you sure you want to delete this role?', 'capsman-enhanced'); ?>');"
266
+ />
267
+ <?php if (isset($args['description'])) : ?>
268
+ <p class="description" style="color: red;"><?php echo esc_html($args['description']); ?></p>
269
+ <?php endif; ?>
270
+ <?php else : ?>
271
+ <input name="<?php echo esc_attr($key); ?>" type="<?php echo esc_attr($args['type']); ?>"
272
+ value="<?php echo esc_attr($args['value']); ?>"
273
+ <?php echo ($args['required'] ? 'required="true"' : '');?>
274
+ <?php echo (!$args['editable'] ? 'readonly="readonly"' : ''); ?>/>
275
+
276
+ <?php if (isset($args['description'])) : ?>
277
+ <p class="description"><?php echo esc_html($args['description']); ?></p>
278
+ <?php endif; ?>
279
+ <?php endif; ?>
280
+ </td>
281
+ </tr>
282
+ <?php
283
+ }
284
+
285
+ /**
286
+ * Get role edit screen
287
+ *
288
+ */
289
+ public function get_roles_edit_ui()
290
+ {
291
+ global $wp_roles;
292
+
293
+ if (!empty($_GET) && !empty($_GET['role_action'])) {
294
+ $role_action = sanitize_key($_GET['role_action']);
295
+ } else {
296
+ $role_action = 'new';
297
+ }
298
+
299
+ $default_tab = (!empty($_GET) && !empty($_GET['active_tab'])) ? sanitize_key($_GET['active_tab']) : 'general';
300
+ $tab_class = 'ppc-' . $role_action;
301
+ $current_role = '';
302
+ $current = false;
303
+ $role_edit = false;
304
+ $role_copy = false;
305
+
306
+ if ($role_action === 'edit' && !empty($_GET['role']) && $role_data = pp_roles_get_role_data(sanitize_key($_GET['role']))) {
307
+ $current_role = sanitize_key($_GET['role']);
308
+ $current = $role_data;
309
+ $role_edit = true;
310
+ } elseif ($role_action === 'copy' && !empty($_GET['role']) && $role_data = pp_roles_get_role_data(sanitize_key($_GET['role']))) {
311
+ $current_role = sanitize_key($_GET['role']);
312
+ $current = $role_data;
313
+ $role_copy = true;
314
+ }
315
+
316
+ $fields_tabs = apply_filters('pp_roles_fields_tabs', self::get_fields_tabs($current, $role_edit, $role_copy), $current, $role_edit, $role_copy);
317
+ $fields = apply_filters('pp_roles_fields', self::get_fields($current, $role_edit, $role_copy), $current, $role_edit, $role_copy);
318
+
319
+ if ($role_copy) {
320
+ pp_capabilities_roles()->notify->add('info', sprintf( esc_html__('%s role copied to editor. Please click the "Create Role" button to create this new role.', 'capsman-enhanced'), $current['name']));
321
+ //update new name and remove slug
322
+ $current['role'] = $current['role'] . '_copy';
323
+ $current['name'] = $current['name'] . ' Copy';
324
+ }
325
+
326
+ $save_button_text = ($role_edit) ? esc_html__('Update Role', 'capsman-enhanced') : esc_html__('Create Role', 'capsman-enhanced');
327
+
328
+ pp_capabilities_roles()->notify->display();
329
+ ?>
330
+ <div class="wrap pp-role-edit-wrap <?php echo esc_attr($tab_class); ?>">
331
+ <h1>
332
+ <?php
333
+ if ($role_edit) {
334
+ esc_html_e('Edit Role', 'capsman-enhanced');
335
+ } elseif ($role_copy) {
336
+ esc_html_e('Copy Role', 'capsman-enhanced');
337
+ } else {
338
+ esc_html_e('Create New Role', 'capsman-enhanced');
339
+ }
340
+ ?>
341
+ <a href="<?php echo esc_url(admin_url('admin.php?page=pp-capabilities-roles')); ?>" class="page-title-action">
342
+ <?php esc_html_e('All Roles', 'capsman-enhanced'); ?>
343
+ </a>
344
+ </h1>
345
+ <div class="wp-clearfix"></div>
346
+
347
+ <form method="post" action="">
348
+ <input type="hidden" name="active_tab" class="ppc-roles-active-tab" value="<?php echo esc_attr($default_tab); ?>">
349
+ <input type="hidden" name="role_action" value="<?php echo esc_attr($role_action); ?>">
350
+ <input type="hidden" name="action" value="<?php echo ($role_action === 'edit' ? 'pp-roles-edit-role' : 'pp-roles-add-role'); ?>">
351
+ <input type="hidden" class="ppc-roles-all-roles" value="<?php echo esc_attr(join(',', array_keys($wp_roles->get_names()))); ?>">
352
+ <input type="hidden" name="_wpnonce"
353
+ value="<?php echo esc_attr($role_action === 'edit' ? wp_create_nonce('edit-role') : wp_create_nonce('add-role') ); ?>"
354
+ >
355
+ <input type="hidden" name="current_role" class="ppc-roles-current-role" value="<?php echo esc_attr($current_role); ?>">
356
+ <div id="poststuff">
357
+ <div id="post-body" class="metabox-holder columns-2">
358
+ <div id="post-body-content">
359
+ <div class="ppc-roles-section postbox">
360
+
361
+ <div class="inside">
362
+ <div class="main">
363
+
364
+ <ul class="ppc-roles-tab">
365
+ <?php
366
+ foreach ($fields_tabs as $key => $args) {
367
+ $active_tab = ($key === $default_tab) ? ' active' : '';
368
+ ?>
369
+ <li class="<?php esc_attr_e($active_tab); ?>"
370
+ data-tab="<?php esc_attr_e($key); ?>"
371
+ >
372
+ <a href="#">
373
+ <span class="<?php esc_attr_e($args['icon']); ?>"></span>
374
+ <span><?php esc_html_e($args['label']); ?></span>
375
+ </a>
376
+ </li>
377
+ <?php
378
+ }
379
+ ?>
380
+ </ul>
381
+
382
+ <div class="ppc-roles-tab-content">
383
+ <table class="form-table">
384
+ <?php
385
+ foreach ($fields as $key => $args) {
386
+ $args['key'] = $key;
387
+ $args['value'] = (is_array($current) && isset($current[$args['value_key']])) ? $current[$args['value_key']] : '';
388
+
389
+ self::get_rendered_role_partial($args);
390
+ }
391
+ ?>
392
+ </table>
393
+ </div>
394
+ <div class="clear"></div>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+
400
+ <div id="postbox-container-1" class="postbox-container ppc-roles-sidebar">
401
+ <div id="submitdiv" class="postbox">
402
+ <div class="inside">
403
+ <div id="minor-publishing">
404
+ <div id="misc-publishing-actions">
405
+ <div class="misc-pub-section misc-pub-section-last" style="margin:0;">
406
+ <p>
407
+ <input type="submit"
408
+ value="<?php echo esc_attr($save_button_text); ?>" class="button-primary" id="publish" name="publish">
409
+ </p>
410
+ </div>
411
+ </div>
412
+
413
+
414
+ <div id="major-publishing-actions">
415
+ <div id="publishing-action">
416
+ <h2 class="roles-capabilities-title"><?php esc_html_e('Capabilities', 'capsman-enhanced'); ?></h2>
417
+ <p class="description">
418
+ <?php
419
+ printf(
420
+ esc_html__(
421
+ 'These can be edited on the %1s Capabilities screen %2s',
422
+ 'capsman-enhanced'
423
+ ),
424
+ '<a href="' . esc_url(add_query_arg(['page' => 'pp-capabilities'], admin_url('admin.php'))) .'">',
425
+ '</a>'
426
+ );
427
+ ?>
428
+ </p>
429
+ <ul class="pp-roles-capabilities">
430
+ <?php
431
+ if($current && isset($current['capabilities']) && is_array($current['capabilities'])) :
432
+ ksort($current['capabilities']);
433
+ $sn = 0;
434
+ foreach ($current['capabilities'] as $cap_name => $val) :
435
+ if (0 === strpos($cap_name, 'level_')) {
436
+ continue;
437
+ }
438
+ $sn++;
439
+ $style = ($sn > 6) ? 'display:none;' : '';
440
+ ?>
441
+ <li style="<?php echo esc_attr($style);?>">
442
+ &nbsp; <?php echo esc_html($cap_name);?>
443
+ </li>
444
+ <?php endforeach; ?>
445
+
446
+ <?php if ($sn > 6) :?>
447
+ <div class="roles-capabilities-load-more">
448
+ <?php echo esc_html__('Load More', 'capsman-enhanced'); ?>
449
+ </div>
450
+ <div class="roles-capabilities-load-less" style="display:none;">
451
+ <?php echo esc_html__('Load Less', 'capsman-enhanced'); ?>
452
+ </div>
453
+ <?php endif;?>
454
+
455
+ <?php endif; ?>
456
+ </ul>
457
+ </div>
458
+ <div class="clear"></div>
459
+ </div>
460
+ </div>
461
+ </div>
462
+ </div>
463
+ </div>
464
+ <br class="clear">
465
+ </div>
466
+ </div>
467
+ </form>
468
+ </div>
469
+ <?php
470
+ }
471
+
472
  /**
473
  * Display admin flash notices
474
  */
includes/roles/class/class-pp-roles-list-table.php CHANGED
@@ -18,6 +18,30 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
18
  protected $manager;
19
  private $default_role = '';
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  /**
22
  * PP_Capabilities_Roles_List_Table constructor.
23
  *
@@ -37,6 +61,70 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
37
  $this->manager = pp_capabilities_roles()->manager;
38
 
39
  $this->default_role = get_option('default_role');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
 
42
  /**
@@ -114,18 +202,43 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
114
  //Build row actions
115
  if (pp_capabilities_is_editable_role($item['role'])) {
116
  $actions = [
117
- 'edit' => sprintf(
118
  '<a href="%s">%s</a>',
119
- add_query_arg(
120
- ['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
121
- admin_url('admin.php')
 
 
122
  ),
123
  esc_html__('Capabilities', 'capsman-enhanced')
124
  ),
125
  ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  } else {
127
  $actions = [
128
- 'edit' => '<span class="pp-caps-action-note">' . esc_html__('(non-editable role)', 'capsman-enhanced') . '</span>',
129
  ];
130
 
131
  if (defined("PRESSPERMIT_ACTIVE")) {
@@ -252,7 +365,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
252
  $out = sprintf(
253
  '<a href="%1$s"><strong><span class="row-title">%2$s</span>%3$s</strong></a>',
254
  add_query_arg(
255
- ['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
256
  admin_url('admin.php')
257
  ),
258
  esc_html($item['name']),
@@ -372,7 +485,10 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
372
  echo '<input type="hidden" name="order" value="' . esc_attr(sanitize_key($_REQUEST['order'])) . '" />';
373
  }
374
  if (!empty($_REQUEST['page'])) {
375
- echo '<input type="hidden" name="page" value="' . (int) $_REQUEST['page'] . '" />';
 
 
 
376
  }
377
  ?>
378
  <p class="search-box">
@@ -402,7 +518,11 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
402
  /**
403
  * Fetch the data
404
  */
405
- $data = $this->manager->get_roles_for_list_table();
 
 
 
 
406
 
407
  /**
408
  * Handle search
@@ -459,4 +579,17 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
459
  'total_pages' => ceil($total_items / $per_page) //calculate the total number of pages
460
  ]);
461
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
462
  }
18
  protected $manager;
19
  private $default_role = '';
20
 
21
+ /**
22
+ * The current view.
23
+ *
24
+ * @access public
25
+ * @var string
26
+ */
27
+ public $role_view = 'all';
28
+
29
+ /**
30
+ * Array of role views.
31
+ *
32
+ * @access public
33
+ * @var array
34
+ */
35
+ public $role_views = array();
36
+
37
+ /**
38
+ * Allowed role views.
39
+ *
40
+ * @access public
41
+ * @var array
42
+ */
43
+ public $allowed_role_views = array();
44
+
45
  /**
46
  * PP_Capabilities_Roles_List_Table constructor.
47
  *
61
  $this->manager = pp_capabilities_roles()->manager;
62
 
63
  $this->default_role = get_option('default_role');
64
+
65
+ // Get the role views.
66
+ $this->allowed_role_views = array_keys($this->get_views());
67
+
68
+ // Get the current view.
69
+ if (isset($_GET['view']) && in_array(sanitize_key($_GET['view']), $this->allowed_role_views)) {
70
+ $this->role_view = sanitize_key($_GET['view']);
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Returns an array of views for the list table.
76
+ *
77
+ * @access protected
78
+ * @return array
79
+ */
80
+ protected function get_views() {
81
+
82
+ $views = array();
83
+ $current = ' class="current"';
84
+
85
+ $role_view_filters = [
86
+ 'all' => _n_noop('All %s', 'All %s', 'capsman-enhanced'),
87
+ 'mine' => _n_noop('Mine %s', 'Mine %s', 'capsman-enhanced'),
88
+ 'active' => _n_noop('Has Users %s', 'Has Users %s', 'capsman-enhanced'),
89
+ 'inactive' => _n_noop('No Users %s', 'No Users %s', 'capsman-enhanced'),
90
+ 'editable' => _n_noop('Editable %s', 'Editable %s', 'capsman-enhanced'),
91
+ 'uneditable'=> _n_noop('Uneditable %s', 'Uneditable %s', 'capsman-enhanced'),
92
+ 'system' => _n_noop('System %s', 'System %s', 'capsman-enhanced'),
93
+ ];
94
+
95
+ foreach($role_view_filters as $view => $noop){
96
+ $view_roles = $this->manager->get_roles_for_list_table($view);
97
+ //add role view
98
+ $this->role_views[$view] = ['roles' => $view_roles];
99
+
100
+ $count = count($view_roles);
101
+
102
+ // Skip any views with 0 roles.
103
+ if ((int)$count === 0) {
104
+ continue;
105
+ }
106
+
107
+ // Add the view link.
108
+ $views[ $view ] = sprintf(
109
+ '<a%s href="%s">%s</a>',
110
+ $view === $this->role_view ? $current : '',
111
+ esc_url(
112
+ add_query_arg(
113
+ [
114
+ 'page' => 'pp-capabilities-roles',
115
+ 'view' => esc_attr($view)
116
+ ],
117
+ admin_url('admin.php')
118
+ )
119
+ ),
120
+ sprintf(
121
+ translate_nooped_plural($noop, $count, $noop['domain']),
122
+ sprintf('<span class="count">(%s)</span>', number_format_i18n($count))
123
+ )
124
+ );
125
+ }
126
+
127
+ return $views;
128
  }
129
 
130
  /**
202
  //Build row actions
203
  if (pp_capabilities_is_editable_role($item['role'])) {
204
  $actions = [
205
+ 'capabilities' => sprintf(
206
  '<a href="%s">%s</a>',
207
+ esc_url(
208
+ add_query_arg(
209
+ ['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
210
+ admin_url('admin.php')
211
+ )
212
  ),
213
  esc_html__('Capabilities', 'capsman-enhanced')
214
  ),
215
  ];
216
+
217
+ $actions['edit'] = sprintf(
218
+ '<a href="%s">%s</a>',
219
+ esc_url(
220
+ add_query_arg(
221
+ ['page' => 'pp-capabilities-roles', 'add' => 'new_item', 'role_action' => 'edit', 'role' => esc_attr($item['role'])],
222
+ admin_url('admin.php')
223
+ )
224
+ ),
225
+ esc_html__('Edit', 'capsman-enhanced')
226
+ );
227
+
228
+ $actions['copy'] = sprintf(
229
+ '<a href="%s">%s</a>',
230
+ esc_url(
231
+ add_query_arg(
232
+ ['page' => 'pp-capabilities-roles', 'add' => 'new_item', 'role_action' => 'copy', 'role' => esc_attr($item['role'])],
233
+ admin_url('admin.php')
234
+ )
235
+ ),
236
+ esc_html__('Copy', 'capsman-enhanced')
237
+ );
238
+
239
  } else {
240
  $actions = [
241
+ 'capabilities' => '<span class="pp-caps-action-note">' . esc_html__('(non-editable role)', 'capsman-enhanced') . '</span>',
242
  ];
243
 
244
  if (defined("PRESSPERMIT_ACTIVE")) {
365
  $out = sprintf(
366
  '<a href="%1$s"><strong><span class="row-title">%2$s</span>%3$s</strong></a>',
367
  add_query_arg(
368
+ ['page' => 'pp-capabilities-roles', 'add' => 'new_item', 'role_action' => 'edit', 'role' => esc_attr($item['role'])],
369
  admin_url('admin.php')
370
  ),
371
  esc_html($item['name']),
485
  echo '<input type="hidden" name="order" value="' . esc_attr(sanitize_key($_REQUEST['order'])) . '" />';
486
  }
487
  if (!empty($_REQUEST['page'])) {
488
+ echo '<input type="hidden" name="page" value="' . esc_attr(sanitize_key($_REQUEST['page'])) . '" />';
489
+ }
490
+ if (!empty($_REQUEST['view'])) {
491
+ echo '<input type="hidden" name="view" value="' . esc_attr(sanitize_key($_REQUEST['view'])) . '" />';
492
  }
493
  ?>
494
  <p class="search-box">
518
  /**
519
  * Fetch the data
520
  */
521
+ if (!empty($this->role_views[$this->role_view]['roles'])) {
522
+ $data = $this->role_views[$this->role_view]['roles'];
523
+ } else {
524
+ $data = [];
525
+ }
526
 
527
  /**
528
  * Handle search
579
  'total_pages' => ceil($total_items / $per_page) //calculate the total number of pages
580
  ]);
581
  }
582
+
583
+ /**
584
+ * Display the list table.
585
+ *
586
+ * @access public
587
+ * @return void
588
+ */
589
+ public function display() {
590
+
591
+ $this->views();
592
+
593
+ parent::display();
594
+ }
595
  }
includes/roles/class/class-pp-roles-manager.php CHANGED
@@ -14,20 +14,58 @@ class Pp_Roles_Manager
14
  /**
15
  * Returns an array of all the available roles.
16
  * This method is used to show the roles list table.
 
 
 
17
  *
18
  * @return array[]
19
  */
20
- public function get_roles_for_list_table()
21
  {
 
 
22
  $roles = wp_roles()->roles;
 
 
 
 
23
  $count = count_users();
24
  $res = [];
 
25
  foreach ($roles as $role => $detail) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  $res[] = [
27
  'role' => $role,
28
  'name' => $detail['name'],
29
  'count' => isset($count['avail_roles'][$role]) ? $count['avail_roles'][$role] : 0,
30
- 'is_system' => $this->is_system_role($role)
 
31
  ];
32
  }
33
 
@@ -151,7 +189,7 @@ class Pp_Roles_Manager
151
  "SELECT ID FROM $wpdb->usermeta INNER JOIN $wpdb->users "
152
  . "ON $wpdb->usermeta.user_id = $wpdb->users.ID "
153
  . "WHERE meta_key='{$wpdb->prefix}capabilities' AND meta_value LIKE %s",
154
-
155
  $like
156
  )
157
  );
14
  /**
15
  * Returns an array of all the available roles.
16
  * This method is used to show the roles list table.
17
+ *
18
+ * @param $view string
19
+ * @param $capabilities bool whether to add capabilities to result or not
20
  *
21
  * @return array[]
22
  */
23
+ public function get_roles_for_list_table($view = 'all', $capabilities = false)
24
  {
25
+ global $wp_roles;
26
+
27
  $roles = wp_roles()->roles;
28
+ $current_user = wp_get_current_user();
29
+ $editable = function_exists('get_editable_roles') ?
30
+ array_keys(get_editable_roles()) :
31
+ array_keys(apply_filters('editable_roles', $roles));
32
  $count = count_users();
33
  $res = [];
34
+
35
  foreach ($roles as $role => $detail) {
36
+
37
+ //mine role filter
38
+ if ($view === 'mine' && !in_array($role, $current_user->roles)) {
39
+ continue;
40
+ //active role filter
41
+ } elseif ($view === 'active'
42
+ && (!isset($count['avail_roles'][$role])
43
+ || (isset($count['avail_roles'][$role]) && (int)$count['avail_roles'][$role] === 0))
44
+ ) {
45
+ continue;
46
+ //inactive role filter
47
+ } elseif ($view === 'inactive'
48
+ && (isset($count['avail_roles'][$role])
49
+ && (isset($count['avail_roles'][$role]) && (int)$count['avail_roles'][$role] > 0))
50
+ ) {
51
+ continue;
52
+ //editable role filter
53
+ } elseif ($view === 'editable' && !in_array($role, $editable)) {
54
+ continue;
55
+ //uneditable role filter
56
+ } elseif ($view === 'uneditable' && in_array($role, $editable)) {
57
+ continue;
58
+ //system role filter
59
+ } elseif ($view === 'system' && !$this->is_system_role($role)) {
60
+ continue;
61
+ }
62
+
63
  $res[] = [
64
  'role' => $role,
65
  'name' => $detail['name'],
66
  'count' => isset($count['avail_roles'][$role]) ? $count['avail_roles'][$role] : 0,
67
+ 'is_system' => $this->is_system_role($role),
68
+ 'capabilities' => ($capabilities) ? $detail['capabilities'] : [],
69
  ];
70
  }
71
 
189
  "SELECT ID FROM $wpdb->usermeta INNER JOIN $wpdb->users "
190
  . "ON $wpdb->usermeta.user_id = $wpdb->users.ID "
191
  . "WHERE meta_key='{$wpdb->prefix}capabilities' AND meta_value LIKE %s",
192
+
193
  $like
194
  )
195
  );
includes/roles/js/pp-roles-admin.js CHANGED
@@ -9,6 +9,20 @@
9
  /* global ajaxurl, validateForm */
10
 
11
  jQuery(document).ready(function ($) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  /**
14
  * Adds an event handler to the delete role link on the role overview page.
9
  /* global ajaxurl, validateForm */
10
 
11
  jQuery(document).ready(function ($) {
12
+ $('input[name="role_name"]').keyup(function(k){
13
+ // Indicate how default role slug will be generated from Role Name: PHP save handler will convert certain special characters to underscore, strip out others.
14
+ var role_slug = $('input[name="role_name"]').val().toLowerCase().replace(/[ \(\)\&\#\@\+\,\-]/gi, "_").replace(/[^0-9a-zA-Z\_]/g, '');
15
+ $('input[name="role_slug"]').attr('placeholder', role_slug);
16
+ });
17
+
18
+ $('input[name="role_slug"]').keypress(function (e) {
19
+ // Don't allow forbidden characters to be entered. Note that dash is not normally allowed, but ban be allowed if constant is defined.
20
+
21
+ // underscore, numeric, lowercase
22
+ if (95 != e.which && (e.which < 48 || e.which > 57) && (e.which < 97 || e.which > 122)) {
23
+ return false;
24
+ }
25
+ });
26
 
27
  /**
28
  * Adds an event handler to the delete role link on the role overview page.
includes/roles/roles-functions.php CHANGED
@@ -77,3 +77,44 @@ function pp_roles_user_has_role($user_id, $roles)
77
 
78
  return false;
79
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  return false;
79
  }
80
+
81
+ /**
82
+ * Check if role exist and return it data
83
+ *
84
+ * @param string $role_name
85
+ * @return bool|WP_Role
86
+ */
87
+ function pp_roles_get_role_data($role_name)
88
+ {
89
+
90
+ $role = false;
91
+ $all_roles = pp_capabilities_roles()->manager->get_roles_for_list_table('all', true);
92
+
93
+ foreach ($all_roles as $role_data) {
94
+ if ($role_name === $role_data['role']) {
95
+ $role = $role_data;
96
+ break;
97
+ }
98
+ }
99
+
100
+ return $role;
101
+ }
102
+
103
+
104
+ /**
105
+ * Remove capabilities role levels
106
+ *
107
+ * @param array $capabilities
108
+ * @return array
109
+ */
110
+ function pp_roles_remove_capabilities_role_level($capabilities)
111
+ {
112
+
113
+ for($i = 0; $i<=10; $i++) {
114
+ if (array_key_exists("level_{$i}", $capabilities)) {
115
+ unset($capabilities["level_{$i}"]);
116
+ }
117
+ }
118
+
119
+ return $capabilities;
120
+ }
includes/roles/roles.php CHANGED
@@ -1,7 +1,14 @@
1
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-roles-wrapper">
2
 
 
 
 
 
3
  <div class="wrap">
4
  <h1 class="wp-heading-inline"><?php esc_html_e('Roles', 'capsman-enhanced') ?> </h1>
 
 
 
5
  <?php
6
  if (isset($_REQUEST['s']) && $search_str = esc_attr(wp_unslash(sanitize_text_field($_REQUEST['s'])))) {
7
  /* translators: %s: search keywords */
@@ -19,38 +26,12 @@
19
  <?php $table->search_box(esc_html__('Search Roles', 'capsman-enhanced'), 'roles'); ?>
20
  </form>
21
  <div id="col-container" class="wp-clearfix">
22
- <div id="col-left">
23
- <div class="col-wrap">
24
- <div class="form-wrap">
25
- <h2><?php esc_html_e('Add New Role', 'capsman-enhanced') ?> </h2>
26
- <form id="addrole" method="post" action="" class="validate">
27
- <input type="hidden" name="action" value="pp-roles-add-role">
28
- <input type="hidden" name="screen" value="<?php echo 'capabilities_page_pp-capabilities-roles';?>">
29
- <?php
30
- wp_nonce_field('add-role');
31
- ?>
32
- <div class="form-field form-required">
33
- <label for="name"><?php esc_html_e('Name', 'capsman-enhanced') ?> </label>
34
- <input name="name" id="name" type="text" value="" size="40">
35
- <p><?php esc_html_e('The name is how it appears on your site.', 'capsman-enhanced'); ?></p>
36
- </div>
37
-
38
- <p class="submit">
39
- <input type="submit" name="submit" id="submit" class="button button-primary"
40
- value="<?php esc_attr_e('Add'); ?> ">
41
- </p>
42
- </form>
43
- </div>
44
- </div>
45
- </div>
46
- <div id="col-right">
47
- <div class="col-wrap">
48
- <form action="" method="post">
49
- <?php $table->display(); //Display the table ?>
50
- </form>
51
- <div class="form-wrap edit-term-notes">
52
- <p><?php esc_html__('Description here.', 'capsman-enhanced') ?></p>
53
- </div>
54
  </div>
55
  </div>
56
  </div>
@@ -59,6 +40,7 @@
59
  </form>
60
 
61
  </div>
 
62
 
63
 
64
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
1
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-roles-wrapper">
2
 
3
+ <?php
4
+ if (isset($_GET['add']) && $_GET['add'] === 'new_item') {
5
+ pp_capabilities_roles()->admin->get_roles_edit_ui();
6
+ }else{ ?>
7
  <div class="wrap">
8
  <h1 class="wp-heading-inline"><?php esc_html_e('Roles', 'capsman-enhanced') ?> </h1>
9
+ <a href="<?php echo esc_url(admin_url('admin.php?page=pp-capabilities-roles&add=new_item')); ?>" class="page-title-action">
10
+ <?php esc_html_e('Add New', 'capsman-enhanced'); ?>
11
+ </a>
12
  <?php
13
  if (isset($_REQUEST['s']) && $search_str = esc_attr(wp_unslash(sanitize_text_field($_REQUEST['s'])))) {
14
  /* translators: %s: search keywords */
26
  <?php $table->search_box(esc_html__('Search Roles', 'capsman-enhanced'), 'roles'); ?>
27
  </form>
28
  <div id="col-container" class="wp-clearfix">
29
+ <div class="col-wrap">
30
+ <form action="" method="post">
31
+ <?php $table->display(); //Display the table ?>
32
+ </form>
33
+ <div class="form-wrap edit-term-notes">
34
+ <p><?php esc_html__('Description here.', 'capsman-enhanced') ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  </div>
36
  </div>
37
  </div>
40
  </form>
41
 
42
  </div>
43
+ <?php } ?>
44
 
45
 
46
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
languages/capsman-enhanced-es_ES.mo CHANGED
Binary file
languages/capsman-enhanced-es_ES.po CHANGED
@@ -2,17 +2,17 @@
2
  # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2021-12-03 21:32+0100\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: Poedit 3.0\n"
11
- "Language: es\n"
12
  "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
13
  "POT-Creation-Date: \n"
 
14
  "Last-Translator: \n"
15
  "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
 
 
 
 
 
 
16
 
17
  #. Plugin name.
18
  msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
@@ -236,7 +236,7 @@ msgstr "Estado del sistema"
236
 
237
  #. Found in faq list item.
238
  msgid "Add-ons"
239
- msgstr "Extensiónes"
240
 
241
  #. Found in faq list item.
242
  msgid "Import/Export"
@@ -688,7 +688,7 @@ msgstr "<strong>Ocultar características del editor</strong>: decide qué ven lo
688
 
689
  #. Found in description list item.
690
  msgid "<strong>Multisite support</strong>: Manage permissions on a single site or across your whole network."
691
- msgstr "<Compatibilidad con multisitio>: gestiona los permisos en un solo sitio o en toda tu red."
692
 
693
  #. Found in description list item.
694
  msgid "<strong>WooCommerce permissions</strong>: Control access to WooCommerce products, orders, coupons and more."
@@ -736,7 +736,7 @@ msgstr "Las principales características de PublishPress Capabilities"
736
 
737
  #. Found in description paragraph.
738
  msgid "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click here to learn about multisite permissions</a>."
739
- msgstr "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\" >Haz clic aquí para saber más sobre los permisos del multisitio</a>."
740
 
741
  #. Found in description paragraph.
742
  msgid "PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network."
@@ -906,6 +906,66 @@ msgstr "7. Copia de seguridad y restauración de los perfiles y capacidades de l
906
  msgid "2. Capabilities for any Post Type"
907
  msgstr "2. Capacidades para cualquier tipo de contenido"
908
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
909
  #. Found in changelog list item.
910
  msgid "Feature : New \"Admin Features\" screen #200"
911
  msgstr "Característica: nueva pantalla «Admin Features» #200"
2
  # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
 
 
 
 
 
 
 
5
  "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
6
  "POT-Creation-Date: \n"
7
+ "PO-Revision-Date: 2022-02-28 11:30+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
10
+ "Language: es\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
+ "X-Generator: Poedit 3.0.1\n"
16
 
17
  #. Plugin name.
18
  msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
236
 
237
  #. Found in faq list item.
238
  msgid "Add-ons"
239
+ msgstr "Extensiones"
240
 
241
  #. Found in faq list item.
242
  msgid "Import/Export"
688
 
689
  #. Found in description list item.
690
  msgid "<strong>Multisite support</strong>: Manage permissions on a single site or across your whole network."
691
+ msgstr "<strong>Es compatible con multisitio</strong>: gestiona los permisos en un solo sitio o en toda tu red."
692
 
693
  #. Found in description list item.
694
  msgid "<strong>WooCommerce permissions</strong>: Control access to WooCommerce products, orders, coupons and more."
736
 
737
  #. Found in description paragraph.
738
  msgid "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click here to learn about multisite permissions</a>."
739
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Haz clic aquí para saber más sobre los permisos del multisitio</a>."
740
 
741
  #. Found in description paragraph.
742
  msgid "PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network."
906
  msgid "2. Capabilities for any Post Type"
907
  msgstr "2. Capacidades para cualquier tipo de contenido"
908
 
909
+ #. Found in changelog list item.
910
+ msgid "Compat : WordPress 5.9 - failure adding / editing posts under some Editor Features configurations (work around WP hooking late-defined function _disable_block_editor_for_navigation_post_type)"
911
+ msgstr "Compatibilidad: WordPress 5.9 - Fallo en la adición/edición de entradas en algunas configuraciones de las características del editor (trabajar en torno al enganche de WP `late-defined function _disable_block_editor_for_navigation_post_type`)"
912
+
913
+ #. Found in changelog list item.
914
+ msgid "Fixed : CSRF vulnerability"
915
+ msgstr "Corregido: Vulnerabilidad CSRF"
916
+
917
+ #. Found in changelog list item.
918
+ msgid "Change : Capabilities screen - Tab for PublishPress Capabilities #220"
919
+ msgstr "Cambiado: Pantalla de Capacidades - pestaña por PublishPress Capabilities #220"
920
+
921
+ #. Found in changelog list item.
922
+ msgid "Change : Admin Features - Captions use dashes, not numbers #229"
923
+ msgstr "Cambiado: Características de administración - Los leyendas utilizan guiones, no números #229"
924
+
925
+ #. Found in changelog list item.
926
+ msgid "Feature : Admin Features - More items available for restriction #240"
927
+ msgstr "Característica: Características de administración - Más elementos disponibles para la restricción #240"
928
+
929
+ #. Found in changelog list item.
930
+ msgid "Feature : Admin Features - Restrict Admin Bar or individual Admin Bar elements"
931
+ msgstr "Característica: Características de administración - Restringir la barra de administración o los elementos individuales de la barra de administración"
932
+
933
+ #. Found in changelog list item.
934
+ msgid "Feature : Editor Features - Restrict editor elements for custom post types"
935
+ msgstr "Característica: Características del editor - Restringir los elementos del editor por los tipos de contenido personalizados"
936
+
937
+ #. Found in changelog list item.
938
+ msgid "Feature : Filter Capabilities display by post type or text entry"
939
+ msgstr "Característica: Filtrar las capacidades de visualización por tipo de contenido o por entrada de texto"
940
+
941
+ #. Found in changelog list item.
942
+ msgid "Lang : Spanish, French, Italian"
943
+ msgstr "Idiomas: Español, Francés, Italiano"
944
+
945
+ #. Found in changelog list item.
946
+ msgid "Fixed : Escape output variables"
947
+ msgstr "Corregido: Escape de variables de salida"
948
+
949
+ #. Found in changelog list item.
950
+ msgid "Fixed : Input sanitization consistency"
951
+ msgstr "Corregido: Coherencia en el saneamiento de las entradas"
952
+
953
+ #. Found in changelog list item.
954
+ msgid "Fixed : After role rename, title in dropdown does not refresh"
955
+ msgstr "Corregido: Después de cambiar el nombre del perfil, el título en el menú desplegable no se actualiza."
956
+
957
+ #. Found in changelog list item.
958
+ msgid "Fixed : Capability names with dashes could not be added"
959
+ msgstr "Corregido: Nombres de capacidades con guiones no se podían añadir"
960
+
961
+ #. Found in changelog list item.
962
+ msgid "Fixed : PHP Notice on Capabilities screen"
963
+ msgstr "Corregido: Aviso de PHP en la pantalla de las capacidades"
964
+
965
+ #. Found in changelog list item.
966
+ msgid "Fixed : Security issue"
967
+ msgstr "Corregido: Fallo de seguridad"
968
+
969
  #. Found in changelog list item.
970
  msgid "Feature : New \"Admin Features\" screen #200"
971
  msgstr "Característica: nueva pantalla «Admin Features» #200"
languages/capsman-enhanced-fr_FR.mo CHANGED
Binary file
languages/capsman-enhanced-fr_FR.po CHANGED
@@ -1,3317 +1,1378 @@
1
- # Translation of Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) in French (France)
2
- # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role "
6
- "Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
7
  "POT-Creation-Date: \n"
8
- "PO-Revision-Date: 2021-12-06 14:00+0100\n"
9
  "Last-Translator: \n"
10
- "Language-Team: \n"
11
  "Language: fr\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
16
- "X-Generator: Poedit 3.0\n"
17
 
18
- #. Plugin name.
19
- msgid ""
20
- "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
21
- msgstr ""
22
- "PublishPress Capabilities - accès aux rôles des utilisateurs, autorisations "
23
- "d’édition, menus d’administration"
24
-
25
- #. Short description.
26
- msgid ""
27
- "The best permissions plugin allows you to customize user roles, editor "
28
- "features and admin menus. You control who has access to your WordPress site."
29
- msgstr ""
30
- "La meilleure extension de droits vous permet de personnaliser les rôles des "
31
- "utilisateurs, les fonctionnalités des éditeurs et les menus "
32
- "d’administration. Vous contrôlez qui a accès à votre site WordPress."
33
-
34
- #. Found in description paragraph.
35
- msgid ""
36
- "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/"
37
- "\">Click here to learn about removing toolbar items and dashboard widgets</"
38
- "a>."
39
- msgstr ""
40
- "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/"
41
- "\">Cliquez ici pour en savoir plus sur la suppression des éléments de la "
42
- "barre d’outils et des widgets du tableau de bord</a>."
43
-
44
- #. Found in description paragraph.
45
- msgid ""
46
- "“Admin Features” allows you to hide features in the WordPress admin area and "
47
- "toolbar. You can decide what users see in your WordPress dashboard. You can "
48
- "use this option to hide all the links in the toolbar including \"About "
49
- "WordPress\", \"Visit Site\" and more. You can also hide dashboard widgets "
50
- "such as \"At a Glance\", \"Quick Draft\", and \"WordPress Events and News\"."
51
- msgstr ""
52
- "« Fonctionnalités d’administration » vous permet de masquer des "
53
- "fonctionnalités dans la zone d’administration et la barre d’outils de "
54
- "WordPress. Vous pouvez décider de ce que les utilisateurs voient dans votre "
55
- "tableau de bord WordPress. Vous pouvez utiliser cette option pour masquer "
56
- "tous les liens de la barre d’outils, y compris « À propos de WordPress », "
57
- "« Visiter le site » et plus encore. Vous pouvez également masquer les "
58
- "widgets du tableau de bord tels que « D’un coup d’œil », « Brouillon "
59
- "rapide », et « Événements et actualités de WordPress »."
60
-
61
- #. Found in description list item.
62
- msgid ""
63
- "<strong>Hide admin area features</strong>: Remove items from the WordPress "
64
- "toolbar, plus dashboard widgets."
65
- msgstr ""
66
- "<strong>Masquer les fonctionnalités de la zone d’administration</strong> : "
67
- "supprimez les éléments de la barre d’outils de WordPress, ainsi que les "
68
- "widgets du tableau de bord."
69
-
70
- #. Found in description header.
71
- msgid "4. Hide Toolbar Link and Dashboard Widgets"
72
- msgstr ""
73
- "4. Masquer les liens de la barre d’outils et les widgets du tableau de bord"
74
-
75
- #. Screenshot description.
76
- msgid ""
77
- "Admin Feature Restriction: PublishPress Capabilities enables you remove "
78
- "items from the WordPress toolbar, plus dashboard widgets."
79
- msgstr ""
80
- "Restriction des fonctionnalités de l’administrateur : PublishPress "
81
- "Capabilities vous permet de supprimer des éléments de la barre d’outils de "
82
- "WordPress, ainsi que des widgets du tableau de bord."
83
-
84
- #. Found in description header.
85
- #| msgid "The Key Features of PublishPress Capabilities"
86
- msgid "PublishPress Capabilities Pro"
87
- msgstr "PublishPress Capabilities Pro"
88
-
89
- #. Found in description paragraph.
90
- msgid ""
91
- "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-"
92
- "wordpress-posts/\">Click here to learn about hiding metaboxes</a>."
93
- msgstr ""
94
- "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-"
95
- "wordpress-posts/\">Cliquez ici pour en savoir plus sur le masquage des "
96
- "boîtes méta</a>."
97
-
98
- #. Found in description paragraph.
99
- msgid ""
100
- "WordPress has a feature called “metaboxes”. This is a strange name, but you "
101
- "have seen them often if you use WordPress. When a user edits a post, the "
102
- "edit screen has several default boxes: Status &amp; visibility, Featured "
103
- "image, Categories, Tags, etc. These boxes are metaboxes. Plugins can add "
104
- "also add their own metaboxes. The Pro version of the PublishPress "
105
- "Capabilities plugin allows you to hide metaboxes for specific user roles."
106
- msgstr ""
107
- "WordPress a une fonctionnalité appelée « métaboxes ou boîtes méta ». C’est "
108
- "un nom étrange, mais vous les avez souvent vues si vous utilisez WordPress. "
109
- "Lorsqu’un utilisateur modifie un article, l’écran de modification comporte "
110
- "plusieurs boîtes par défaut : État et visibilité, Image mise en avant, "
111
- "Catégories, Étiquettes, etc. Ces boîtes sont des boîtes méta. Les extensions "
112
- "peuvent également ajouter leurs propres boîtes méta. La version Pro de la "
113
- "extension PublishPress Capabilities vous autorise à masquer les boîtes méta "
114
- "pour des rôles d’utilisateurs/utilisatrices spécifiques."
115
-
116
- #. Found in description paragraph.
117
- msgid ""
118
- "<strong>Upgrade to Capabilities Pro</strong><br />\n"
119
- " This plugin is the free version of PublishPress Capabilities. The Pro "
120
- "version of Capabilities has all the features you need to control permissions "
121
- "for your WordPress users. With Capabilities Pro you can manage access to "
122
- "posts, pages, media and custom post types. <a href=\"https://publishpress."
123
- "com/capabilities\" title=\"Capabilities Pro\">Click here to control access "
124
- "to your WordPress site with Capabilities Pro!</a>"
125
- msgstr ""
126
- "<strong>Mise à niveau vers Capabilities Pro</strong><br />\n"
127
- " Cette extension est la version gratuite de PublishPress Capabilities. La "
128
- "version Pro de Capabilities possède toutes les fonctionnalités dont vous "
129
- "avez besoin pour contrôler les droits de vos utilisateurs WordPress. Avec "
130
- "Capabilities Pro, vous pouvez gérer l’accès aux articles, pages, médias et "
131
- "types de publications personnalisés. <a href=\"https://publishpress.com/"
132
- "capabilities\" title=\"Capabilities Pro\">Cliquez ici pour contrôler l’accès "
133
- "à votre site WordPress avec Capabilities Pro !</a>"
134
-
135
- #. Found in description list item.
136
- msgid ""
137
- "<strong>Hide editor metaboxes (Pro version)</strong>: You can hide metaboxes "
138
- "on the post editing screen. "
139
- msgstr ""
140
- "<strong>Masquer l’éditeur des boîtes méta (version Pro)</strong> : vous "
141
- "pouvez masquer les boîtes méta sur l’écran de modification des publications. "
142
-
143
- #. Found in description header.
144
- msgid "6. Hide Metaboxes in WordPress Posts"
145
- msgstr "6. Masquer les boîtes méta dans les publications WordPress"
146
-
147
- #. Screenshot description.
148
- msgid ""
149
- "Editor Feature Restriction: PublishPress Capabilities enables you to decide "
150
- "what users see when they're writing posts."
151
- msgstr ""
152
- "Éditeur de restriction des fonctionnalités : les fonctionnalités de "
153
- "PublishPress vous permettent de décider ce que les utilisateurs voient "
154
- "lorsqu’ils rédigent des publications."
155
-
156
- #. Screenshot description.
157
- msgid ""
158
- "Admin Menu Restrictions: With PublishPress Capabilities you can restrict "
159
- "access to admin menu screens by user roles."
160
- msgstr ""
161
- "Restrictions du menu d’administration : avec PublishPress Capabilities, vous "
162
- "pouvez restreindre l’accès aux écrans du menu d’administration en fonction "
163
- "des rôles des utilisateurs."
164
-
165
- #. Screenshot description.
166
- msgid ""
167
- "Navigation Menu Restrictions: PublishPress Capabilities enables you to "
168
- "restrict access to navigation menus by roles, logged in and logged out users."
169
- msgstr ""
170
- "Restrictions des menus de navigation : PublishPress Capabilities vous permet "
171
- "de restreindre l’accès aux menus de navigation par rôles, utilisateurs "
172
- "connectés et déconnectés."
173
-
174
- #. Screenshot description.
175
- msgid ""
176
- "WooCommerce Permissions: With PublishPress Capabilities you can control "
177
- "permissions for WooCommerce products, orders and coupons."
178
- msgstr ""
179
- "Droits WooCommerce : avec PublishPress Capabilities, vous pouvez contrôler "
180
- "les permissions pour les produits, les commandes et les codes promo de "
181
- "WooCommerce."
182
-
183
- #. Screenshot description.
184
- msgid ""
185
- "Media Library Permissions: PublishPress Capabilities enables you to decide "
186
- "who can upload, edit and delete files from your site’s Media Library."
187
- msgstr ""
188
- "Droits de la médiathèque : PublishPress Capabilities vous permet de décider "
189
- "qui peut télécharger, modifier et supprimer les fichiers de la médiathèque "
190
- "de votre site."
191
-
192
- #. Screenshot description.
193
- msgid ""
194
- "Permission backups: Every time you change your permissions, the PublishPress "
195
- "Capabilities plugin will automatically create a backup."
196
- msgstr ""
197
- "Sauvegarde des droits : chaque fois que vous modifiez vos droits, la "
198
- "extension PublishPress Capabilities créera automatiquement une sauvegarde."
199
-
200
- #. Screenshot description.
201
- msgid ""
202
- "Enforce Taxonomy-Specific Capabilities: You can give “Manage”, “Edit” and "
203
- "“Assign” permissions for all your taxonomies."
204
- msgstr ""
205
- "Donner des droits spécifiques à une taxonomie : vous pouvez donner des "
206
- "autorisations « gérer », « modifier » et « attribuer » pour toutes vos "
207
- "taxonomies."
208
-
209
- #. Screenshot description.
210
- msgid ""
211
- "Custom Statuses: With Capabilities Pro, you can decide which user roles are "
212
- "able to send posts to each status."
213
- msgstr ""
214
- "États personnalisés : avec Capabilities Pro, vous pouvez décider quels rôles "
215
- "d’utilisateur peuvent envoyer des publications à chaque état."
216
-
217
- #. Screenshot description.
218
- msgid ""
219
- "Multi-site support: Capabilities can control permissions on a single site or "
220
- "across your whole network."
221
- msgstr ""
222
- "Prise en charge multisite : Capabilities vous permet de contrôler les droits "
223
- "d’accès sur un seul site ou sur l’ensemble de votre réseau."
224
-
225
- #. Screenshot description.
226
- msgid ""
227
- "Content permissions: With Capabilities, you can choose who can Publish, "
228
- "Read, Edit and Delete content."
229
- msgstr ""
230
- "Droits sur le contenu : avec Capabilities vous pouvez choisir qui peut "
231
- "publier, lire, modifier et supprimer le contenu."
232
-
233
- #. Screenshot description.
234
- msgid ""
235
- "Create and copy user roles: With PublishPress Capabilities you can create or "
236
- "copy any existing WordPress user role."
237
- msgstr ""
238
- "Créer et copier les rôles des utilisateurs : avec PublishPress Capabilities, "
239
- "vous pouvez créer ou copier tous les rôles utilisateurs existants de "
240
- "WordPress."
241
-
242
- #. Screenshot description.
243
- msgid ""
244
- "Control user permissions: You can customize all the user roles on your site, "
245
- "from Administrator to Subscriber."
246
- msgstr ""
247
- "Contrôlez les droits des utilisateurs : vous pouvez personnaliser tous les "
248
- "rôles des utilisateurs sur votre site, de l’administrateur à l’abonné."
249
-
250
- #. Found in description list item.
251
- #| msgid ""
252
- #| "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
253
- #| "allows you to add multiple authors and guest authors to WordPress posts."
254
- msgid ""
255
- "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> has "
256
- "everything you need to build professional websites with the WordPress block "
257
- "editor."
258
- msgstr ""
259
- "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> a "
260
- "tout ce dont vous avez besoin pour créer des sites Web professionnels avec "
261
- "l’éditeur de blocs WordPress."
262
-
263
- #. Found in description list item.
264
- #| msgid ""
265
- #| "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions "
266
- #| "Pro</a> allows you to update your published pages with teamwork and "
267
- #| "precision."
268
- msgid ""
269
- "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> "
270
- "enables you to group content together into a series "
271
- msgstr ""
272
- "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> vous "
273
- "permet de regrouper les contenus dans une série "
274
-
275
- #. Found in faq paragraph.
276
- msgid ""
277
- "Jetpack is a plugin built by Automattic, the company behind WordPress.com. "
278
- "This plugin offers many different services including backups, spam blocking, "
279
- "analytics, malware scans, contact forms, and more. PublishPress Capabilities "
280
- "can help you manage Jetpack permissisons."
281
- msgstr ""
282
- "Jetpack est une extension construite par Automattic, la société derrière "
283
- "WordPress.com. Cette extension offre de nombreux services différents, y "
284
- "compris les sauvegardes, le blocage des indésirables, les mesures "
285
- "d’audience, les analyses de logiciels malveillants, les formulaires de "
286
- "contact, et plus encore. PublishPress Capabilities peut vous aider à gérer "
287
- "les droits de Jetpack."
288
-
289
- #. Found in faq paragraph.
290
- msgid ""
291
- "The Elementor plugin is one of the most popular drag-and-drop page builders. "
292
- "With Elementor, you’re editing the site live, and simultaneously see exactly "
293
- "how it looks like. Elementor designs are full-responsive and come with over "
294
- "40 powerful widgets. PublishPress Capabilities can help you manage Elementor "
295
- "permissisons."
296
- msgstr ""
297
- "Elementor est l’un des constructeurs de pages par glisser-déposer les plus "
298
- "populaires. Avec Elementor, vous éditez le site en direct, et voyez "
299
- "simultanément à quoi il ressemble exactement. Les designs Elementor sont "
300
- "entièrement responsive et viennent avec plus de 40 widgets puissants. "
301
- "PublishPress Capabilities peut vous aider à gérer les droits d’Elementor."
302
-
303
- #. Found in faq paragraph.
304
- msgid ""
305
- "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-"
306
- "forms-admin-menus/\">Click here to learn about Gravity Forms menu "
307
- "permissions</a>."
308
- msgstr ""
309
- "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-"
310
- "forms-admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès "
311
- "au menu de Gravity Forms.</a>."
312
-
313
- #. Found in faq paragraph.
314
- msgid ""
315
- "This approach works for the core Gravity Forms plugin and can also be used "
316
- "for add-on plugins from the official site, or third-party sites."
317
- msgstr ""
318
- "Cette approche fonctionne pour la extension Gravity Forms principale et peut "
319
- "également être utilisée pour des modules complémentaires du site officiel ou "
320
- "de sites tiers."
321
-
322
- #. Found in faq paragraph.
323
- msgid ""
324
- "It is possible to control who can access these links by using the "
325
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
326
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
327
- "admin area. In the top-left corner of this screen, choose the role that you "
328
- "want to edit. For example, you can restrict access for the “Editor” role. By "
329
- "default, Editors aren't given access to Gravity Forms, but site "
330
- "administrators often do they give them some access. Scroll down and you can "
331
- "enter a red X for any Gravity Forms menu link that you don't want users in "
332
- "the Editor role to access. Now when an Editor logs in to your site, they "
333
- "will not be able to see the blocked Gravity Forms menu links."
334
- msgstr ""
335
- "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
336
- "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
337
- "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
338
- "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
339
- "écran, choisissez le rôle que vous souhaitez modifier. Par exemple, vous "
340
- "pouvez restreindre l’accès au rôle « Éditeur/éditrice ». Par défaut, les "
341
- "éditeurs/éditrices n’ont pas accès à Gravity Forms, mais les administrateurs "
342
- "de sites leur donnent souvent un certain accès. Faites défiler la page vers "
343
- "le bas et vous pouvez inscrire un X rouge pour tout lien du menu Gravity "
344
- "Forms auquel vous ne voulez pas que les utilisateurs ayant le rôle d’éditeur/"
345
- "éditrice aient accès. Désormais, lorsqu’un éditeur ou éditrice se connectera "
346
- "à votre site, il ne pourra pas voir les liens de menu Gravity Forms bloqués."
347
-
348
- #. Found in faq paragraph.
349
- msgid ""
350
- "When you first install Gravity Forms, you'll see one top-level menu link, "
351
- "plus eight sub-menus."
352
- msgstr ""
353
- "Lorsque vous installez la extension Gravity Forms pour la première fois, "
354
- "vous verrez un lien de menu de niveau supérieur et huit sous-menus."
355
-
356
- #. Found in faq paragraph.
357
- msgid ""
358
- "Gravity Forms is perhaps the most popular contact form plugin for WordPress. "
359
- "You can build and publish your WordPress forms in just minutes. Choose your "
360
- "fields, configure your options and easily embed forms on your WordPress-"
361
- "powered site. Gravity Forms allows you to easily integrate with third party "
362
- "services such as PayPal, Mailchimp, and Zapier."
363
- msgstr ""
364
- "Gravity Forms est peut-être la extension de formulaire de contact la plus "
365
- "populaire pour WordPress. Vous pouvez créer et publier vos formulaires "
366
- "WordPress en quelques minutes seulement. Choisissez vos champs, configurez "
367
- "vos options et intégrez facilement les formulaires sur votre site alimenté "
368
- "par WordPress. Gravity Forms vous permet d’intégrer facilement des services "
369
- "tiers tels que PayPal, Mailchimp et Zapier."
370
-
371
- #. Found in faq paragraph.
372
- msgid ""
373
- "The Pro version of PublishPress Capabilities allows you to block access to "
374
- "admin menu links in the Gravity Forms plugin. This is useful because Gravity "
375
- "Forms has limited options for controlling who can access the admin screens."
376
- msgstr ""
377
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
378
- "aux liens du menu administrateur dans la extension Gravity Forms. Ceci est "
379
- "utile car Gravity Forms a des options limitées pour contrôler qui peut "
380
- "accéder aux écrans d’administration."
381
-
382
- #. Found in faq paragraph.
383
- msgid ""
384
- "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-"
385
- "calendar-admin-menus/\">Click here to learn about The Events Calendar menu "
386
- "permissions</a>."
387
- msgstr ""
388
- "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-"
389
- "calendar-admin-menus/\">Cliquez ici pour en savoir plus sur les droits "
390
- "d’accès au menu de The Events Calendar</a>."
391
-
392
- #. Found in faq paragraph.
393
- msgid ""
394
- "This approach works for the core The Events Calendar plugin and can also be "
395
- "used for add-on plugins such as Virtual Events, Events Tickets, and more."
396
- msgstr ""
397
- "Cette approche fonctionne pour le cœur de la extension The Events Calendar "
398
- "et peut également être utilisée pour des modules complémentaires tels que "
399
- "Virtual Events, Events Tickets, etc."
400
-
401
- #. Found in faq paragraph.
402
- msgid ""
403
- "It is possible to control who can access these The Events Calendar plugin "
404
- "links by using the PublishPress Capabilities Pro plugin. After installing "
405
- "PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in "
406
- "your WordPress admin area. In the top-left corner of this screen, choose the "
407
- "role that you want to edit. For example, you can restrict The Events "
408
- "Calendar access for the “Editor” role. Scroll down and you can enter a red X "
409
- "for any The Events Calendar menu link that you don't want users in the "
410
- "Editor role to access. Now when an Administrator logs in to your site, they "
411
- "will not be able to see the Events Calendar menu links that you have blocked:"
412
- msgstr ""
413
- "Il est possible de contrôler qui peut accéder à ces liens de la extension "
414
- "The Events Calendar en utilisant la extension PublishPress Capabilities Pro. "
415
- "Après avoir installé PublishPress Capabilities Pro, allez dans "
416
- "« Capabilities », puis « Admin Menus » dans votre zone d’administration "
417
- "WordPress. Dans le coin supérieur gauche de cet écran, choisissez le rôle "
418
- "que vous souhaitez modifier. Par exemple, vous pouvez restreindre l’accès à "
419
- "The Events Calendar pour le rôle « Éditeur/éditrice ». Faites défiler la "
420
- "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
421
- "The Events Calendar auquel vous ne voulez pas que les utilisateurs ayant le "
422
- "rôle d’éditeur/éditrice aient accès. Désormais, lorsqu’un éditeur ou "
423
- "éditrice se connecteront à votre site, ils ne pourront pas voir les liens de "
424
- "menu The Events Calendar bloqués :"
425
-
426
- #. Found in faq paragraph.
427
- msgid ""
428
- "When you first install the The Events Calendar plugin, you'll see one top-"
429
- "level menu link, plus at least 10 sub-menus:"
430
- msgstr ""
431
- "Lorsque vous installez la extension The Events Calendar pour la première "
432
- "fois, vous verrez un lien de menu de niveau supérieur et dix sous-menus : "
433
-
434
- #. Found in faq paragraph.
435
- msgid ""
436
- "With The Events Calendar, you can easily create and manage an events "
437
- "calendar on your WordPress site. The plugin supports both in-person and "
438
- "virtual events. There are also many ways to extend the plugin for recurring "
439
- "events, ticket sales, user-submitted events and more."
440
- msgstr ""
441
- "Avec The Events Calendar, vous pouvez facilement créer et gérer un "
442
- "calendrier d’événements sur votre site WordPress. Cette extension prend en "
443
- "charge les événements en personne et virtuels. Il existe également de "
444
- "nombreuses façons d’étendre cette extension pour les événements récurrents, "
445
- "la vente de billets, les événements soumis par les utilisateurs et plus "
446
- "encore."
447
-
448
- #. Found in faq paragraph.
449
- msgid ""
450
- "The Pro version of PublishPress Capabilities allows you to block access to "
451
- "admin menu links in The Events Calendar plugin. This is useful because The "
452
- "Events Calendar has limited options for managing who can access the admin "
453
- "screens and important features."
454
- msgstr ""
455
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
456
- "aux liens du menu administrateur dans la extension The Events Calendar. Ceci "
457
- "est utile car The Events Calendar a des options limitées pour contrôler qui "
458
- "peut accéder aux écrans d’administration."
459
-
460
- #. Found in faq paragraph.
461
- #| msgid ""
462
- #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
463
- #| "\">Click here to learn about WooCommerce permissions</a>."
464
- msgid ""
465
- "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-"
466
- "admin-menus/\">Click here to learn about WPForms menu permissions</a>."
467
- msgstr ""
468
- "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-"
469
- "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
470
- "menu de WPForms</a>."
471
-
472
- #. Found in faq paragraph.
473
- msgid ""
474
- "This approach works for the core WPForms plugin and can also be used for add-"
475
- "on plugins such as Form Abandonment, Form Locker, Offline Forms, and more."
476
- msgstr ""
477
- "Cette approche fonctionne pour le cœur de la extension WPForms et peut "
478
- "également être utilisée pour des modules complémentaires tels que Form "
479
- "Abandonment, Form Locker, Offline Forms, etc."
480
-
481
- #. Found in faq paragraph.
482
- msgid ""
483
- "Scroll down and you can enter a red X for any WPForms menu link that you "
484
- "don't want users in the Administrator role to access. Now when an "
485
- "Administrator logs in to your site, they will not be able to see the WPForms "
486
- "menu links that you have blocked."
487
- msgstr ""
488
- "Faites défiler la page vers le bas et vous pouvez inscrire un X rouge pour "
489
- "tout lien du menu auquel vous ne voulez pas que les utilisateurs ayant le "
490
- "rôle d’administrateur ou administratrice aient accès. Désormais, lorsqu’un "
491
- "administrateur ou une administratrice se connectera à votre site, ils ne "
492
- "pourront pas voir les liens de menu WPForms que vous avez bloqué."
493
-
494
- #. Found in faq paragraph.
495
- msgid ""
496
- "It is possible to control who can access these WPForms plugin links by using "
497
- "the PublishPress Capabilities Pro plugin. After installing PublishPress "
498
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
499
- "admin area. In the top-left corner of this screen, choose the role that you "
500
- "want to edit. For example, you can restrict WPForms access for the "
501
- "“Administrator” role. If you do this, I would recommend making a copy of the "
502
- "Administrator role so that one role still has full WPForms access."
503
- msgstr ""
504
- "Il est possible de contrôler qui peut accéder à ces liens de la extension "
505
- "WPForms en utilisant la extension PublishPress Capabilities Pro. Après avoir "
506
- "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
507
- "« Admin Menus » dans votre zone d’administration WordPress. Dans le coin "
508
- "supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
509
- "modifier. Par exemple, vous pouvez restreindre l’accès à WPForms pour le "
510
- "rôle « Administrateur/administratrice ». Si vous faites cela, nous vous "
511
- "recommandons de faire une copie du rôle d’administrateur et "
512
- "d’administratrice afin que l’un des rôles ait toujours un accès complet à "
513
- "WPForms."
514
-
515
- #. Found in faq paragraph.
516
- msgid ""
517
- "When you first install the WPForms plugin, you'll see one top-level menu "
518
- "link, plus at least 10 sub-menus:"
519
- msgstr ""
520
- "Lorsque vous installez la extension WPForms pour la première fois, vous "
521
- "verrez un lien de menu de niveau supérieur et dix sous-menus : "
522
-
523
- #. Found in faq paragraph.
524
- msgid ""
525
- "WPForms is one of the most popular WordPress contact form plugin with "
526
- "millions of active installs. WPForms allows you to create beautiful contact "
527
- "forms, feedback forms, subscription forms, payment forms, and more."
528
- msgstr ""
529
- "WPForms est l’une des extensions de formulaire de contact WordPress les plus "
530
- "populaires avec des millions d’installations actives. WPForms vous permet de "
531
- "créer de magnifiques formulaires de contact, des formulaires de "
532
- "commentaires, des formulaires d’abonnement, des formulaires de paiement, et "
533
- "plus encore."
534
-
535
- #. Found in faq paragraph.
536
- msgid ""
537
- "The Pro version of PublishPress Capabilities allows you to block access to "
538
- "admin menu links in the WP Forms plugin. This is useful because WPForms has "
539
- "limited options for managing who can access the admin screens and important "
540
- "features."
541
- msgstr ""
542
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
543
- "aux liens du menu administrateur dans la extension WP Forms. Ceci est utile "
544
- "car WP Forms a des options limitées pour contrôler qui peut accéder aux "
545
- "écrans d’administration et aux fonctionnalités importantes."
546
-
547
- #. Found in faq paragraph.
548
- #| msgid ""
549
- #| "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
550
- #| "access/\">Click here to learn about Media Library permissions</a>."
551
- msgid ""
552
- "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-"
553
- "admin-menus/\">Click here to learn about Jetpack permissions</a>."
554
- msgstr ""
555
- "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-"
556
- "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès à "
557
- "Jetpack</a>."
558
-
559
- #. Found in faq paragraph.
560
- #| msgid ""
561
- #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
562
- #| "\">Click here to learn about WooCommerce permissions</a>."
563
- msgid ""
564
- "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-"
565
- "admin-menus/\">Click here to learn about Elementor menu permissions</a>."
566
- msgstr ""
567
- "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-"
568
- "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
569
- "menu de Elementor</a>."
570
-
571
- #. Found in faq paragraph.
572
- #| msgid ""
573
- #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
574
- #| "\">Click here to learn about WooCommerce permissions</a>."
575
- msgid ""
576
- "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-"
577
- "admin-menus/\">Click here to learn about Yoast SEO menu permissions</a>."
578
- msgstr ""
579
- "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-"
580
- "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
581
- "menu de Yoast SEO</a>."
582
-
583
- #. Found in faq paragraph.
584
- #| msgid ""
585
- #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
586
- #| "\">Click here to learn about WooCommerce permissions</a>."
587
- msgid ""
588
- "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-"
589
- "form-7-admin-menus/\">Click here to learn about Contact Form 7 menu "
590
- "permissions</a>."
591
- msgstr ""
592
- "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-"
593
- "form-7-admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès "
594
- "au menu de Contact Form 7</a>."
595
-
596
- #. Found in faq paragraph.
597
- #| msgid ""
598
- #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
599
- #| "\">Click here to learn about WooCommerce permissions</a>."
600
- msgid ""
601
- "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-"
602
- "admin-menus/\">Click here to learn about WooCommerce menu permissions</a>."
603
- msgstr ""
604
- "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-"
605
- "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
606
- "menu de WooCommerce</a>."
607
-
608
- #. Found in faq list item.
609
- msgid "System Status"
610
- msgstr "État du système"
611
-
612
- #. Found in faq list item.
613
- msgid "Add-ons"
614
- msgstr "Modules complémentaires"
615
-
616
- #. Found in faq list item.
617
- msgid "Import/Export"
618
- msgstr "Importer/Exporter"
619
-
620
- #. Found in faq list item.
621
- msgid "New Form"
622
- msgstr "Nouveau formulaire"
623
-
624
- #. Found in faq list item.
625
- msgid "Forms"
626
- msgstr "Formulaires"
627
-
628
- #. Found in faq list item.
629
- msgid "Event Add-Ons"
630
- msgstr "Modules complémentaires pour les événements"
631
-
632
- #. Found in faq list item.
633
- msgid "Help"
634
- msgstr "Aide"
635
-
636
- #. Found in faq list item.
637
- msgid "Import"
638
- msgstr "Importer"
639
-
640
- #. Found in faq list item.
641
- msgid "Organizers"
642
- msgstr "Organisateurs"
643
-
644
- #. Found in faq list item.
645
- msgid "Venues"
646
- msgstr "Lieux"
647
-
648
- #. Found in faq list item.
649
- msgid "Events Categories"
650
- msgstr "Catégories d’événements"
651
-
652
- #. Found in faq list item.
653
- msgid "Tag"
654
- msgstr "Étiquette"
655
-
656
- #. Found in faq list item.
657
- msgid "Events"
658
- msgstr "Événements"
659
-
660
- #. Found in faq list item.
661
- msgid "Community"
662
- msgstr "Communauté"
663
-
664
- #. Found in faq list item.
665
- msgid "About Us"
666
- msgstr "À propos de nous"
667
-
668
- #. Found in faq list item.
669
- msgid "SMTP"
670
- msgstr "SMTP"
671
-
672
- #. Found in faq list item.
673
- msgid "Addons"
674
- msgstr "Modules complémentaires"
675
-
676
- #. Found in faq list item.
677
- msgid "Entries"
678
- msgstr "Entrées"
679
-
680
- #. Found in faq list item.
681
- msgid "All Forms"
682
- msgstr "Tous les formulaires"
683
-
684
- #. Found in faq header.
685
- msgid "How Do I Control The Gravity Forms User Roles and Permissions?"
686
- msgstr ""
687
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
688
- "Gravity Forms ?"
689
-
690
- #. Found in faq header.
691
- msgid "How Do I Control The Events Calendar User Roles and Permissions?"
692
- msgstr ""
693
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de The "
694
- "Events Calendar ?"
695
-
696
- #. Found in faq header.
697
- msgid "How Do I Control WPForms User Roles and Permissions?"
698
- msgstr ""
699
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
700
- "WPForms ?"
701
-
702
- #. Found in faq header.
703
- msgid "How Do I Control WooCommerce Menu Link Permissions?"
704
- msgstr "Comment puis-je contrôler les droits des liens du menu WooCommerce ?"
705
-
706
- #. Found in faq paragraph.
707
- msgid ""
708
- "It is possible to control who can access these Jetpack links by using the "
709
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
710
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
711
- "admin area. In the top-left corner of this screen, choose the role that you "
712
- "want to edit. For example, you can restrict Jetpack access for the "
713
- "“Administrator” role. If you do this, I would recommend making a copy of the "
714
- "Administrator role so that one role still has full Jetpack access. Scroll "
715
- "down and you can enter a red X for any Jetpack menu link that you don't want "
716
- "users in the Administrator role to access. Now when an Administrator logs in "
717
- "to your site, they will not be able to see the Jetpack menu links that you "
718
- "have blocked. This approach works for the core Jetpack plugin and can also "
719
- "be used for add-on plugins such as Jetpack CRM and others."
720
- msgstr ""
721
- "Il est possible de contrôler qui peut accéder à ces liens de la extension "
722
- "Jetpack en utilisant la extension PublishPress Capabilities Pro. Après avoir "
723
- "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
724
- "« Admin Menus » dans votre zone d’administration WordPress. Dans le coin "
725
- "supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
726
- "modifier. Par exemple, vous pouvez restreindre l’accès à Jetpack pour le "
727
- "rôle « Administrateur/administratrice ». Faites défiler la page vers le bas "
728
- "et vous pouvez inscrire un X rouge pour tout lien du menu Jetpack auquel "
729
- "vous ne voulez pas que les utilisateurs ayant le rôle d’administrateur ou "
730
- "administratrice aient accès. Désormais, lorsqu’un administrateur ou une "
731
- "administratrice se connecteront à votre site, il ne pourront pas voir les "
732
- "liens de menu Jetpack que vous avez bloqué : "
733
-
734
- #. Found in faq paragraph.
735
- msgid ""
736
- "When you first install the Jetpack plugin, you'll see one top-level menu "
737
- "link, plus at least 2 sub-menus:"
738
- msgstr ""
739
- "Lorsque vous installez la extension Jetpack pour la première fois, vous "
740
- "verrez un lien de menu de niveau supérieur et deux sous-menus : "
741
-
742
- #. Found in faq paragraph.
743
- msgid ""
744
- "The Pro version of PublishPress Capabilities allows you to block access to "
745
- "admin menu links in the Jetpack plugin. This is useful because Jetpack has "
746
- "limited options for managing who can access the admin screens and important "
747
- "features."
748
- msgstr ""
749
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
750
- "aux liens du menu administrateur dans la extension Jetpack. Ceci est utile "
751
- "car Jetpack a des options limitées pour contrôler qui peut accéder aux "
752
- "écrans d’administration."
753
-
754
- #. Found in faq paragraph.
755
- msgid ""
756
- "This approach works for the core Elementor plugin and can also be used for "
757
- "add-on plugins such as Essential Addons, Premium Addons, and others."
758
- msgstr ""
759
- "Cette approche fonctionne pour le cœur de la extension Elementor et peut "
760
- "également être utilisée pour des modules complémentaires tels que Essential "
761
- "Addons, Premium Addons, etc."
762
-
763
- #. Found in faq paragraph.
764
- msgid ""
765
- "In the top-left corner of this screen, choose the role that you want to "
766
- "edit. For example, you can restrict Elementor access for the “Administrator” "
767
- "role. If you do this, I would recommend making a copy of the Administrator "
768
- "role so that one role still has full Elementor access. Scroll down and you "
769
- "can enter a red X for any Elementor menu link that you don't want users in "
770
- "the Administrator role to access."
771
- msgstr ""
772
- "Dans le coin supérieur gauche de cet écran, choisissez le rôle que vous "
773
- "souhaitez modifier. Par exemple, vous pouvez restreindre l’accès à Elementor "
774
- "pour le rôle « Administrateur/administratrice ». Si vous faites cela, nous "
775
- "vous recommandons de faire une copie du rôle d’administrateur et "
776
- "d’administratrice afin que l’un des rôles ait toujours un accès complet à "
777
- "WPForms."
778
-
779
- #. Found in faq paragraph.
780
- msgid ""
781
- "It is possible to control who can access Elementor menu links by using the "
782
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
783
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
784
- "admin area."
785
- msgstr ""
786
- "Il est possible de contrôler qui peut accéder à ces liens du menu Elementor "
787
- "en utilisant la extension PublishPress Capabilities Pro. Après avoir "
788
- "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
789
- "« Admin Menus » dans votre zone d’administration WordPress."
790
-
791
- #. Found in faq paragraph.
792
- msgid ""
793
- "When you first install Elementor, you'll see one top-level menu link, plus "
794
- "at least 9 sub-menus:"
795
- msgstr ""
796
- "Lorsque vous installez la extension Elementor pour la première fois, vous "
797
- "verrez un lien de menu de niveau supérieur et neuf sous-menus : "
798
-
799
- #. Found in faq paragraph.
800
- msgid ""
801
- "The Pro version of PublishPress Capabilities allows you to block access to "
802
- "admin menu links in the Elementor plugin. This is useful because Elementor "
803
- "has limited options for managing who can access the admin screens and "
804
- "important features."
805
- msgstr ""
806
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
807
- "aux liens du menu administrateur dans la extension Elementor. Ceci est utile "
808
- "car Elementor a des options limitées pour contrôler qui peut accéder aux "
809
- "écrans d’administration et aux fonctionnalités importantes."
810
-
811
- #. Found in faq paragraph.
812
- msgid ""
813
- "This approach works for the core Yoast SEO plugin and can also be used for "
814
- "add-on plugins such as Local SEO, WooCommerce SEO, Google News, and more."
815
- msgstr ""
816
- "Cette approche fonctionne pour le cœur de la extension Yoast SEO et peut "
817
- "également être utilisée pour des modules complémentaires tels que Local SEO, "
818
- "WooCommerce SEO, Google News, etc."
819
-
820
- #. Found in faq paragraph.
821
- msgid ""
822
- "It is possible to control who can access these Yoast SEO links by using the "
823
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
824
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
825
- "admin area. In the top-left corner of this screen, choose the role that you "
826
- "want to edit. For example, you can restrict Yoast SEO access for the “SEO "
827
- "Manager” role. Scroll down and you can enter a red X for any menu link that "
828
- "you don't want users in the SEO Manager role to access."
829
- msgstr ""
830
- "Il est possible de contrôler qui peut accéder à ces liens de la extension "
831
- "Yoast SEO en utilisant la extension PublishPress Capabilities Pro. Après "
832
- "avoir installé PublishPress Capabilities Pro, allez dans « Capabilities », "
833
- "puis « Admin Menus » dans votre zone d’administration WordPress. Dans le "
834
- "coin supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
835
- "modifier. Par exemple, vous pouvez restreindre l’accès à Yoast SEO pour le "
836
- "rôle « Responsable SEO ». Faites défiler la page vers le bas et vous pouvez "
837
- "inscrire un X rouge pour tout lien du menu auquel vous ne voulez pas que les "
838
- "utilisateurs ayant le rôle de responsable SEO aient accès."
839
-
840
- #. Found in faq paragraph.
841
- msgid ""
842
- "When you first install Yoast SEO, you'll see one top-level menu link, plus "
843
- "at least 5 sub-menus:"
844
- msgstr ""
845
- "Lorsque vous installez la extension Yoast SEO pour la première fois, vous "
846
- "verrez un lien de menu de niveau supérieur et cinq sous-menus : "
847
-
848
- #. Found in faq paragraph.
849
- msgid ""
850
- "Yoast SEO is the most popular WordPress SEO plugin and contains everything "
851
- "that you need to manage your SEO. Yoast SEO is packed full of feature that "
852
- "help search engines to find and understand your website."
853
- msgstr ""
854
- "Yoast SEO est la extension WordPress SEO la plus populaire et contient tout "
855
- "ce dont vous avez besoin pour gérer votre référencement. Yoast SEO est "
856
- "rempli de fonctionnalités qui aident les moteurs de recherche à trouver et à "
857
- "comprendre votre site web."
858
-
859
- #. Found in faq paragraph.
860
- msgid ""
861
- "The Pro version of PublishPress Capabilities allows you to block access to "
862
- "admin menu links in the Yoast SEO plugin. This is useful because Yoast SEO "
863
- "has limited options for managing who can access the admin screens and "
864
- "important features."
865
- msgstr ""
866
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
867
- "aux liens du menu administrateur dans la extension Yoast SEO. Ceci est utile "
868
- "car Yoast SEO a des options limitées pour contrôler qui peut accéder aux "
869
- "écrans d’administration et aux fonctionnalités importantes."
870
-
871
- #. Found in faq paragraph.
872
- msgid ""
873
- "It is possible to control who can access these links by using the "
874
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
875
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
876
- "admin area. In the top-left corner of this screen, choose the role that you "
877
- "want to edit. Scroll down and you can enter a red X for any menu link that "
878
- "you don't want users in the Editor role to access. This approach works for "
879
- "the core Contact Form 7 plugin and can also be used for add-on plugins such "
880
- "as Flamingo which records entries for Contact Form 7 forms."
881
- msgstr ""
882
- "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
883
- "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
884
- "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
885
- "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
886
- "écran, choisissez le rôle que vous souhaitez modifier. Faites défiler la "
887
- "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
888
- "auquel vous ne voulez pas que les utilisateurs ayant le rôle d’Éditeur/"
889
- "éditrice aient accès. Cette approche fonctionne pour le cœur de la extension "
890
- "Contact Form 7 et peut également être utilisé pour des modules "
891
- "complémentaires tels que Flamingo, qui enregistre les entrées des "
892
- "formulaires Contact Form 7."
893
-
894
- #. Found in faq paragraph.
895
- msgid ""
896
- "When you first install Contact Form 7, you'll see one top-level menu link, "
897
- "plus three sub-menus. All of these links are available to users in the "
898
- "Administrator role:"
899
- msgstr ""
900
- "Lorsque vous installez la extension Contact Form 7 pour la première fois, "
901
- "vous verrez un lien de menu de niveau supérieur et trois sous-menus. Tous "
902
- "ces liens sont disponibles pour les utilisateurs ayant le rôle "
903
- "d’administrateur et d’administratrice : "
904
-
905
- #. Found in faq paragraph.
906
- msgid ""
907
- "Contact Form 7 is the most popular contact form plugin for WordPress. You "
908
- "can manage multiple contact forms, and easily customize each form and the "
909
- "emails it sends. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, "
910
- "Akismet spam filtering and much more."
911
- msgstr ""
912
- "Contact Form 7 est la extension de formulaire de contact la plus populaire "
913
- "pour WordPress. Vous pouvez gérer plusieurs formulaires de contact, et "
914
- "personnaliser facilement chaque formulaire et les e-mails qu’il envoie. "
915
- "Contact Form 7 prend en charge la soumission par Ajax, CAPTCHA, le filtrage "
916
- "anti-indésirable Akismet et bien plus encore."
917
-
918
- #. Found in faq paragraph.
919
- msgid ""
920
- "The Pro version of PublishPress Capabilities allows you to block access to "
921
- "admin menu links in the Contact Form 7 plugin. This is useful because "
922
- "Contact Form 7 has very limited options for controlling who can access the "
923
- "admin screens."
924
- msgstr ""
925
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
926
- "aux liens du menu administrateur dans la extension Contact Form 7. Ceci est "
927
- "utile car Contact Form 7 a des options limitées pour contrôler qui peut "
928
- "accéder aux écrans d’administration."
929
-
930
- #. Found in faq paragraph.
931
- msgid ""
932
- "It is possible to control who can access these links by using the "
933
- "PublishPress Capabilities Pro plugin. After installing PublishPress "
934
- "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
935
- "admin area. n the top-left corner of this screen, choose the role that you "
936
- "want to edit. Scroll down and you can enter a red X for any menu link that "
937
- "you don't want users in that role to access. This is a great way to "
938
- "customize a WooCommerce role such as Shop Manager. This approach works for "
939
- "the core WooCommerce plugin and can also be used for WooCommerce add-on "
940
- "plugins such as WooCommerce Subscriptions, WooCommerce Shipping, and "
941
- "WooCommerce Bookings. PublishPress Capabilities can help you manage "
942
- "WooCommerce permissisons."
943
- msgstr ""
944
- "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
945
- "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
946
- "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
947
- "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
948
- "écran, choisissez le rôle que vous souhaitez modifier. Faites défiler la "
949
- "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
950
- "auquel vous ne voulez pas que les utilisateurs ayant ce rôle aient accès. Il "
951
- "constitue un excellent moyen de personnaliser un rôle WooCommerce tel que le "
952
- "gestionnaire de boutique. Cette approche fonctionne pour le cœur de la "
953
- "extension WooCommerce et peut également être utilisé pour des modules "
954
- "complémentaires tels que WooCommerce Subscriptions, WooCommerce Shipping, "
955
- "and WooCommerce Bookings. PublishPress Capabilities peut vous aider à gérer "
956
- "les droits de WooCommerce."
957
-
958
- #. Found in faq paragraph.
959
- msgid ""
960
- "The Pro version of PublishPress Capabilities allows you to block access to "
961
- "admin menu links in WooCommerce. This is useful because WooCommerce has very "
962
- "limited options for controlling who can access the admin screens. When you "
963
- "first install WooCommerce, you'll see four top-level menu links, plus sub-"
964
- "menus. All of these links are available to users in the Administrator and "
965
- "Shop Manager roles:"
966
- msgstr ""
967
- "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
968
- "aux liens du menu administrateur dans la extension WooCommerce. Ceci est "
969
- "utile car WooCommerce a des options limitées pour contrôler qui peut accéder "
970
- "aux écrans d’administration. Lorsque vous installez la extension WooCommerce "
971
- "pour la première fois, vous verrez quatre liens de menu de niveau supérieur "
972
- "et des sous-menus. Tous ces liens sont disponibles pour les utilisateurs "
973
- "ayant le rôle d’administrateur/administratrice et de gestionnaire de "
974
- "boutique : "
975
-
976
- #. Found in faq paragraph.
977
- msgid ""
978
- "In the right sidebar, you can also enable permissions for WooCommerce "
979
- "taxonomies. Check the boxes for Product categories, Product tags, and "
980
- "Product shipping classes. After you check those boxes and refresh your "
981
- "screen, you will see Manager, Edit, Assign and Delete options for Product "
982
- "categories, Product tags, and Product shipping classes."
983
- msgstr ""
984
- "Dans la colonne latérale droite, vous pouvez également activer les droits "
985
- "pour les taxonomies WooCommerce. Cochez les boîtes pour les catégories de "
986
- "produits, les étiquettes de produits et les classes d’expédition de "
987
- "produits. Après avoir coché ces boîtes et rafraîchi votre écran, vous verrez "
988
- "apparaître les options gestionnaire, modifier, assigner et supprimer pour "
989
- "les catégories de produits, les étiquettes de produits et les classes "
990
- "d’expédition de produits."
991
-
992
- #. Found in faq paragraph.
993
- msgid ""
994
- "The PublishPress Capabilities plugin enables you to control permissions for "
995
- "the WooCommerce plugin and also WooCommerce user roles. You can use this "
996
- "plugin as a WooCommerce user role editor. Go to the “Capabilities” link in "
997
- "your WordPress admin menu. In the main area of your screen will see options "
998
- "for WooCommerce Products, Orders and Coupons. These permissions cover "
999
- "editing, deleting and reading."
1000
- msgstr ""
1001
- "La extension PublishPress Capabilities vous permet de contrôler les "
1002
- "permissions pour la extension WooCommerce ainsi que les rôles des "
1003
- "utilisateurs de WooCommerce. Vous pouvez utiliser cette extension comme un "
1004
- "éditeur de rôle d’utilisateur WooCommerce. Allez sur le lien "
1005
- "« Capabilities » dans votre menu d’administration WordPress. Dans la zone "
1006
- "principale de votre écran, vous verrez des options pour les produits, les "
1007
- "commandes et les codes promo WooCommerce. Ces permissions couvrent la "
1008
- "modification, la suppression et la lecture."
1009
-
1010
- #. Found in faq paragraph.
1011
- msgid ""
1012
- "WooCommerce is the most popular WordPress eCommerce plugin. You can create "
1013
- "beautiful store with themes customized to your brand and industry and you'll "
1014
- "find 1,000's of tools and popular integrations."
1015
- msgstr ""
1016
- "WooCommerce est la extension de commerce électronique la plus populaire de "
1017
- "WordPress. Vous pouvez créer de magnifiques boutiques avec des thèmes "
1018
- "personnalisés en fonction de votre marque et de votre secteur d’activité et "
1019
- "vous trouverez des milliers d’outils et d’intégrations populaires."
1020
-
1021
- #. Found in faq list item.
1022
- msgid "Dashboard"
1023
- msgstr "Tableau de bord"
1024
-
1025
- #. Found in faq list item.
1026
- msgid "Go Pro"
1027
- msgstr "Passer Pro"
1028
-
1029
- #. Found in faq list item.
1030
- msgid "Custom Icons"
1031
- msgstr "Icônes personnalisées"
1032
-
1033
- #. Found in faq list item.
1034
- msgid "Custom Fonts"
1035
- msgstr "Polices personnalisées"
1036
-
1037
- #. Found in faq list item.
1038
- msgid "Get Help"
1039
- msgstr "Obtenir de l’aide"
1040
-
1041
- #. Found in faq list item.
1042
- msgid "Getting Started"
1043
- msgstr "Premiers pas"
1044
-
1045
- #. Found in faq list item.
1046
- msgid "System Info"
1047
- msgstr "Information système"
1048
-
1049
- #. Found in faq list item.
1050
- msgid "Role Manager"
1051
- msgstr "Gestionnaire de rôles"
1052
-
1053
- #. Found in faq list item.
1054
- msgid "Settings"
1055
- msgstr "Réglages"
1056
-
1057
- #. Found in faq list item.
1058
- msgid "Premium"
1059
- msgstr "Premium"
1060
-
1061
- #. Found in faq list item.
1062
- msgid "Tools"
1063
- msgstr "Outils"
1064
-
1065
- #. Found in faq list item.
1066
- msgid "Social"
1067
- msgstr "Social"
1068
-
1069
- #. Found in faq list item.
1070
- msgid "Search Appearance"
1071
- msgstr "Apparence de la recherche"
1072
-
1073
- #. Found in faq list item.
1074
- msgid "General"
1075
- msgstr "Général"
1076
-
1077
- #. Found in faq list item.
1078
- msgid "Integration"
1079
- msgstr "Intégration"
1080
-
1081
- #. Found in faq list item.
1082
- msgid "Add New"
1083
- msgstr "Ajouter"
1084
-
1085
- #. Found in faq list item.
1086
- msgid "Contact Forms"
1087
- msgstr "Formulaires de contact"
1088
-
1089
- #. Found in faq list item.
1090
- msgid "Marketing"
1091
- msgstr "Marketing"
1092
-
1093
- #. Found in faq list item.
1094
- msgid "Analytics"
1095
- msgstr "Statistiques"
1096
-
1097
- #. Found in faq list item.
1098
- msgid "Products"
1099
- msgstr "Produits"
1100
-
1101
- #. Found in faq list item.
1102
- msgid "WooCommerce"
1103
- msgstr "WooCommerce"
1104
-
1105
- #. Found in faq header.
1106
- msgid "How Do I Control Jetpack User Roles and Permissions?"
1107
- msgstr ""
1108
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
1109
- "Jetpack ?"
1110
-
1111
- #. Found in faq header.
1112
- msgid "How Do I Control Elementor User Roles and Permissions?"
1113
- msgstr ""
1114
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
1115
- "Elementor ?"
1116
-
1117
- #. Found in faq header.
1118
- msgid "How Do I Control Yoast SEO User Roles and Permissions?"
1119
- msgstr ""
1120
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de Yoast "
1121
- "SEO ?"
1122
-
1123
- #. Found in faq header.
1124
- msgid "How Do I Control Contact Form 7 Permissions?"
1125
- msgstr ""
1126
- "Comment puis-je contrôler les rôles et les droits des utilisateurs de Form "
1127
- "7 ?"
1128
-
1129
- #. Found in faq paragraph.
1130
- msgid ""
1131
- "Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, "
1132
- "Cspabilities, Capsbilities, Caoabilities, Calabilities."
1133
- msgstr ""
1134
- "Les fautes de frappe courantes et incorrectes comprennent Capabilitise, "
1135
- "Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, "
1136
- "Calabilities."
1137
-
1138
- #. Found in faq paragraph.
1139
- msgid ""
1140
- "PublishPress is the official brandname. When writing about this user role "
1141
- "editor plugin, please make sure to uppercase the Ps."
1142
- msgstr ""
1143
- "PublishPress est la marque officielle. Lorsque vous écrivez à propos de ce "
1144
- "plugin d’édition de rôle d’utilisateur, veillez à mettre les P en majuscule."
1145
-
1146
- #. Found in faq paragraph.
1147
- msgid "Here's another comparison:"
1148
- msgstr "Voici une autre comparaison :"
1149
-
1150
- #. Found in faq paragraph.
1151
- msgid "Here's an contrasting example when it comes to Post:"
1152
- msgstr "Voici un exemple contrasté en ce qui concerne la publication : "
1153
-
1154
- #. Found in faq paragraph.
1155
- msgid "OK, that's maybe too simple, so here's more detail:"
1156
- msgstr "OK, c’est peut-être trop simple, alors voici plus de détails :"
1157
-
1158
- #. Found in faq paragraph.
1159
- msgid ""
1160
- "We provide two plugins that allow you to control who can access what on your "
1161
- "WordPress site. This is simple way to understand the difference:"
1162
- msgstr ""
1163
- "Nous fournissons deux extensions qui vous permettent de contrôler qui peut "
1164
- "accéder à quoi sur votre site WordPress. Voici une façon simple de "
1165
- "comprendre la différence :"
1166
-
1167
- #. Found in faq paragraph.
1168
- msgid ""
1169
- "If you want to proceed, click the “Reset to WordPress defaults” link. "
1170
- "PublishPress Capabilities will ask you if you're really sure you want to do "
1171
- "this. Click “OK” to continue. Once the process is complete, you'll see the "
1172
- "message, “Roles and Capabilities reset to WordPress defaults”."
1173
- msgstr ""
1174
- "Si vous voulez continuer, cliquez sur le lien « Réinitialiser les valeurs "
1175
- "par défaut de WordPress ». PublishPress Capabilities vous demandera si vous "
1176
- "êtes vraiment sûr de vouloir faire cela. Cliquez sur « OK » pour continuer. "
1177
- "Une fois le processus terminé, vous verrez le message « Rôles et capacités "
1178
- "réinitialisés aux valeurs par défaut de WordPress »."
1179
-
1180
- #. Found in faq paragraph.
1181
- msgid ""
1182
- "“WARNING: This will delete and/or modify stored role definitions. If you "
1183
- "have installed any plugin that adds new roles or capabilities, these will be "
1184
- "lost. It is recommended to use this only as a last resort!”"
1185
- msgstr ""
1186
- "« AVERTISSEMENT : Ceci va supprimer et/ou modifier les définitions de rôles "
1187
- "stockés. Si vous avez installé une extension qui ajoute de nouveaux rôles ou "
1188
- "capacités, ceux-ci seront perdus. Il est recommandé de n’utiliser cette "
1189
- "opération que comme dernier recours ! »"
1190
-
1191
- #. Found in faq paragraph.
1192
- msgid ""
1193
- "If you really need to clean up and refresh your site, PublishPress "
1194
- "Capabilities does allow you to restore the default WordPress permissions. Go "
1195
- "to Capabilities &gt; Backup and dlick the “Reset Roles” tab. Before you take "
1196
- "next step, make sure to read this warning:"
1197
- msgstr ""
1198
- "Si vous avez vraiment besoin de nettoyer et de rafraîchir votre site, "
1199
- "PublishPress Capabilities vous permet de restaurer les droits par défaut de "
1200
- "WordPress. Allez dans Capabilities &gt; Sauvegardes et cliquez sur l’onglet "
1201
- "« Réinitialiser les rôles ». Avant de passer à l’étape suivante, assurez-"
1202
- "vous de lire cet avertissement :"
1203
-
1204
- #. Found in faq paragraph.
1205
- msgid ""
1206
- "Whenever you choose a backup, the plugin will show all the permissions in "
1207
- "that backup. Important changes in permissions are highlighted:"
1208
- msgstr ""
1209
- "Chaque fois que vous choisissez une sauvegarde, la extension affiche toutes "
1210
- "les droits de cette sauvegarde. Les changements importants dans les droits "
1211
- "sont mis en évidence :"
1212
-
1213
- #. Found in faq paragraph.
1214
- msgid ""
1215
- "Click the yellow “Restore Selected Roles” button and you'll be able to roll "
1216
- "back to a previous version."
1217
- msgstr ""
1218
- "Cliquez sur le bouton jaune «Restaurer les rôles sélectionnés »et vous "
1219
- "pourrez revenir à une version antérieure."
1220
-
1221
- #. Found in faq paragraph.
1222
- msgid ""
1223
- "Every time you change your permissions, the PublishPress Capabilities plugin "
1224
- "will automatically create a backup. If you make a mistake, go to the "
1225
- "“Backup” menu link and click the “Restore” tab. Here you can browse through "
1226
- "the most recent 20 automatic backups. The plugin also saves a backup from "
1227
- "you first installed PublishPress Capabilities. And you can click the "
1228
- "“Backup” tab to manually create backups."
1229
- msgstr ""
1230
- "Chaque fois que vous modifiez vos droits, la extension PublishPress "
1231
- "Capabilities crée automatiquement une sauvegarde. Si vous faites une erreur, "
1232
- "allez dans le lien du menu « Sauvegardes » et cliquez sur "
1233
- "l’onglet « Restaurer ». Ici, vous pouvez parcourir les 20 sauvegardes "
1234
- "automatiques les plus récentes. Cette extension enregistre également une "
1235
- "sauvegarde depuis votre première installation de PublishPress Capabilities. "
1236
- "Et vous pouvez cliquer sur l’onglet « Sauvegardes »pour créer manuellement "
1237
- "des sauvegardes."
1238
-
1239
- #. Found in faq paragraph.
1240
- msgid ""
1241
- "Changing permissions in WordPress can be a tricky task. It's possible to "
1242
- "lock yourself or others out of some important features. So, we've built a "
1243
- "way to keep your site safe."
1244
- msgstr ""
1245
- "La modification des droits d’accès dans WordPress peut être une tâche "
1246
- "délicate. Il est possible de se bloquer ou de bloquer d’autres personnes "
1247
- "pour certaines fonctionnalités importantes. C’est pourquoi nous avons conçu "
1248
- "un moyen de sécuriser votre site."
1249
-
1250
- #. Found in faq paragraph.
1251
- msgid ""
1252
- "PublishPress Capabilities is a user role editor that offers you the ability "
1253
- "to backup and restore your WordPress user permissions. This feature is very "
1254
- "helpful if you want to test out changes on your site, or you've installed a "
1255
- "new plugin that has changed your site's permissions."
1256
- msgstr ""
1257
- "PublishPress Capabilities est un éditeur de rôles d’utilisateurs qui vous "
1258
- "offre la possibilité de sauvegarder et de restaurer les droits de vos "
1259
- "utilisateurs WordPress. Cette fonctionnalité est très utile si vous voulez "
1260
- "tester des changements sur votre site, ou si vous avez installé une nouvelle "
1261
- "extension qui a modifié les droits de votre site."
1262
-
1263
- #. Found in faq list item.
1264
- msgid "publish press cpabilities (incorrect)"
1265
- msgstr "publish press cpabilities (incorrect)"
1266
-
1267
- #. Found in faq list item.
1268
- msgid "publishpress capabilities (incorrect)"
1269
- msgstr "publishpress capabilities (incorrect)"
1270
-
1271
- #. Found in faq list item.
1272
- #| msgid "The Key Features of PublishPress Capabilities"
1273
- msgid "Publish Press Capabilities (incorrect)"
1274
- msgstr "Publish Press Capabilities (incorrect)"
1275
-
1276
- #. Found in faq list item.
1277
- #| msgid "The Key Features of PublishPress Capabilities"
1278
- msgid "PublishPress Capabilities (correct)"
1279
- msgstr "PublishPress Capabilities (correct)"
1280
-
1281
- #. Found in faq list item.
1282
- msgid ""
1283
- "PublishPress Permissions allows you to control who can read Pages with a "
1284
- "specific Status, Category or Tag, or even Pages with a particular parent "
1285
- "Page."
1286
- msgstr ""
1287
- "PublishPress Permissions vous permet de contrôler qui peut lire les pages "
1288
- "ayant un état, une catégorie ou une étiquette spécifique, ou même les pages "
1289
- "ayant une page parente particulière."
1290
-
1291
- #. Found in faq list item.
1292
- msgid ""
1293
- "PublishPress Capabilities allows you to control who can read all your Pages."
1294
- msgstr ""
1295
- "PublishPress Capabilities vous permet de contrôler qui peut lire toutes vos "
1296
- "pages."
1297
-
1298
- #. Found in faq list item.
1299
- msgid ""
1300
- "PublishPress Permissions allows you to control who can publish Posts with a "
1301
- "particular Status, Category or Tag, or even Posts without a specific "
1302
- "Category or Tag."
1303
- msgstr ""
1304
- "PublishPress Permissions vous permet de contrôler qui peut publier des "
1305
- "publications avec un état, une catégorie ou une étiquette particulière, ou "
1306
- "même des publications sans catégorie ou étiquette spécifique."
1307
-
1308
- #. Found in faq list item.
1309
- msgid ""
1310
- "PublishPress Capabilities allows you to control who can publish all your "
1311
- "Posts."
1312
- msgstr ""
1313
- "PublishPress Capabilities vous permet de contrôler qui peut publier tous vos "
1314
- "publications."
1315
-
1316
- #. Found in faq list item.
1317
- msgid ""
1318
- "PublishPress Permissions allows you to customize advanced permissions that "
1319
- "go far beyond the scope of the WordPress core."
1320
- msgstr ""
1321
- "PublishPress Permissions vous permet de personnaliser des droits avancés qui "
1322
- "vont bien au-delà de la portée du cœur de WordPress."
1323
-
1324
- #. Found in faq list item.
1325
- msgid ""
1326
- "PublishPress Permissions allows you to customize the default WordPress "
1327
- "permissions."
1328
- msgstr ""
1329
- "PublishPress Permissions vous permet de personnaliser les droits par défaut "
1330
- "de WordPress."
1331
-
1332
- #. Found in faq list item.
1333
- msgid "PublishPress Permissions: Advanced."
1334
- msgstr "Permissions PublishPress : Avancé."
1335
-
1336
- #. Found in faq list item.
1337
- msgid "PublishPress Capabilities: Easy."
1338
- msgstr "PublishPress Capabilities : Facile."
1339
-
1340
- #. Found in faq list item.
1341
- msgid ""
1342
- "A stuck-through capability is set in the current role, but not the role "
1343
- "backup."
1344
- msgstr ""
1345
- "Une capacité « bloquée \" est définie dans le rôle actuel, mais pas dans le "
1346
- "rôle de secours."
1347
-
1348
- #. Found in faq list item.
1349
- msgid "A green capability is set in the role backup, but not the current role."
1350
- msgstr ""
1351
- "Une capacité verte est définie dans la sauvegarde du rôle, mais pas dans le "
1352
- "rôle actuel."
1353
-
1354
- #. Found in faq list item.
1355
- msgid "A green role title means the role does not exist in your current set. "
1356
- msgstr ""
1357
- "Un titre de rôle vert signifie que le rôle n’existe pas dans votre jeu "
1358
- "actuel. "
1359
-
1360
- #. Found in faq header.
1361
- msgid "What's the correct way to spell PublishPress Capabilities?"
1362
- msgstr "Quelle est la façon correcte d’épeler PublishPress Capabilities ?"
1363
-
1364
- #. Found in faq header.
1365
- msgid ""
1366
- "What’s the Difference Between PublishPress Capabilities and PublishPress "
1367
- "Permissions?"
1368
- msgstr ""
1369
- "Quelle est la différence entre PublishPress Capabilities et PublishPress "
1370
- "Permissions ?"
1371
-
1372
- #. Found in faq header.
1373
- msgid "How Do I Restore Permissions to the WordPress Defaults?"
1374
- msgstr ""
1375
- "Comment puis-je rétablir les droits d’accès aux valeurs par défaut de "
1376
- "WordPress ?"
1377
-
1378
- #. Found in faq header.
1379
- msgid "How do I Backup and Restore WordPress User Permissions?"
1380
- msgstr ""
1381
- "Comment sauvegarder et restaurer les droits des utilisateurs de WordPress ?"
1382
-
1383
- #. Found in description paragraph.
1384
- msgid ""
1385
- "PublishPress Capabilities gives you detailed control over all the permission "
1386
- "levelsss on your WordPress site. You can edit user roles on your site, from "
1387
- "Administrator and Editor to Contributor and Subscriber."
1388
- msgstr ""
1389
- "PublishPress Capabilities vous donne un contrôle détaillé de tous les "
1390
- "niveaux de droits sur votre site WordPress. Vous pouvez modifier les rôles "
1391
- "des utilisateurs sur votre site, de l’administrateur/administratrice à "
1392
- "l’éditeur/éditrice en passant par le contributeur/contributrice et l’abonné/"
1393
- "abonnée."
1394
-
1395
- #. Found in description paragraph.
1396
- msgid ""
1397
- "The Pro version of PublishPress Capabilities enables you to stop users from "
1398
- "accessing any admin menu link and any frontend menu link."
1399
- msgstr ""
1400
- "La version Pro de PublishPress Capabilities vous permet d’empêcher les "
1401
- "utilisateurs d’accéder à tout lien des menus d’administration et de "
1402
- "l’interface publique."
1403
-
1404
- #. Found in description header.
1405
- msgid "10. WordPress Admin Menu Restrictions (Pro version)"
1406
- msgstr "10. Restrictions du menu d’administration de WordPress (version Pro)"
1407
-
1408
- #. Found in description header.
1409
- msgid "8. Create New User Roles or Copy User Roles"
1410
- msgstr ""
1411
- "8. Créer de nouveaux rôles d’utilisateur ou copier des rôles d’utilisateur"
1412
-
1413
- #. Found in description header.
1414
- msgid "5. Hide Gutenberg and Classic Editor Features"
1415
- msgstr "5. Masquer les fonctionnalités de Gutenberg et de l’éditeur classique"
1416
-
1417
- #. Found in description header.
1418
- msgid "3. Capabilities for any WordPress Taxonomy"
1419
- msgstr "3. Permissions pour toutes les taxonomies WordPress"
1420
-
1421
- #. Found in description header.
1422
- msgid "1. WordPress User Role Editor"
1423
- msgstr "1. Éditeur de rôle d’utilisateur WordPress"
1424
-
1425
- #. Found in description paragraph.
1426
- msgid ""
1427
- "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Click "
1428
- "here to learn about hiding editor features</a>."
1429
- msgstr ""
1430
- "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Cliquez "
1431
- "ici pour en savoir plus sur le masquage des fonctionnalités de l’éditeur</a>."
1432
-
1433
- #. Found in description paragraph.
1434
- msgid ""
1435
- "PublishPress Capabilities has an option called \"Editor Features\" allows "
1436
- "you to clean up the post editing screen. You can decide what users see when "
1437
- "they're writing posts. You can hide anything on the Gutenberg or Classic "
1438
- "Editor screens. You can hide boxes inside the sidebadd such Tags, "
1439
- "Categories, or Excerpt. You can the \"Publish\" button. You can even hide "
1440
- "the post title, body, or permalink. This is a great alternative to plugins "
1441
- "such as Adminimize."
1442
- msgstr ""
1443
- "PublishPress Capabilities a une option appelée « Fonctionnalités de "
1444
- "l’éditeur » qui vous permet de nettoyer l’écran d’édition de publication. "
1445
- "Vous pouvez décider ce que les utilisateurs voient lorsqu’ils écrivent des "
1446
- "publications. Vous pouvez masquer n’importe quoi sur les écrans Gutenberg ou "
1447
- "Éditeur classique. Vous pouvez masquer les cases à l’intérieur de la barre "
1448
- "latérale telles que les balises, les catégories ou les extraits. Vous pouvez "
1449
- "cliquer sur le bouton « Publier ». Vous pouvez même masquer le titre, le "
1450
- "corps ou le permalien de la publication. C’est une excellente alternative "
1451
- "aux extensions telles que Adminimize."
1452
-
1453
- #. Found in description paragraph.
1454
- msgid ""
1455
- "You can use PublishPress Capabilities to clean up the post editing screen. "
1456
- "You can decide what authors see when they're writing posts. You can "
1457
- "<strong>hide any features on the Gutenberg or Classic Editor screens</"
1458
- "strong>."
1459
- msgstr ""
1460
- "Vous pouvez utiliser PublishPress Capabilities pour nettoyer l’écran "
1461
- "d’édition de publication. Vous pouvez décider ce que les auteurs voient "
1462
- "lorsqu’ils écrivent des publications. Vous pouvez <strong>masquer n’importe "
1463
- "quelle fonctionnalité sur les écrans de Gutenberg ou de l’Éditeur classique</"
1464
- "strong>."
1465
-
1466
- #. Found in description list item.
1467
- msgid ""
1468
- "<strong>Hide editor features</strong>: Decide what users see when they're "
1469
- "writing posts in Gutenberg or the Classic Editor."
1470
- msgstr ""
1471
- "<strong>Masquer les fonctionnalités de l’éditeur</strong> : décidez ce que "
1472
- "les utilisateurs voient lorsqu’ils écrivent des publications dans Gutenberg "
1473
- "ou dans l’éditeur classique."
1474
-
1475
- #. Found in description list item.
1476
- msgid ""
1477
- "<strong>Multisite support</strong>: Manage permissions on a single site or "
1478
- "across your whole network."
1479
- msgstr ""
1480
- "<strong>Support multisite</strong> : gérez les permissions sur un seul site "
1481
- "ou sur l’ensemble de votre réseau."
1482
-
1483
- #. Found in description list item.
1484
- msgid ""
1485
- "<strong>WooCommerce permissions</strong>: Control access to WooCommerce "
1486
- "products, orders, coupons and more."
1487
- msgstr ""
1488
- "<strong>Les droits WooCommerce</strong> : Contrôlez l’accès aux produits "
1489
- "WooCommerce, aux commandes, aux code promo et plus encore."
1490
-
1491
- #. Found in description list item.
1492
- msgid ""
1493
- "<strong>Media library permissions</strong>: Decide who can upload, edit and "
1494
- "delete files."
1495
- msgstr ""
1496
- "<strong>Permissions de la médiathèque</strong> : décidez qui peut "
1497
- "télécharger, modifier et supprimer des fichiers."
1498
-
1499
- #. Found in description list item.
1500
- msgid ""
1501
- "<strong>Admin menus (Pro version)</strong>: Stop users from accessing any "
1502
- "admin menu link."
1503
- msgstr ""
1504
- "<strong>Menus d’administration (version Pro)</strong> : empêchez les "
1505
- "utilisateurs d’accéder aux liens du menu d’administration."
1506
-
1507
- #. Found in description list item.
1508
- msgid ""
1509
- "<strong>Frontend menus (Pro version)</strong>: Stop users from accessing any "
1510
- "frontend menu link."
1511
- msgstr ""
1512
- "<strong> Menus de l’interface publique (Pro version) </strong> : empêchez "
1513
- "les utilisateurs d’accéder aux liens du menu de l’interface publique."
1514
-
1515
- #. Found in description list item.
1516
- msgid ""
1517
- "<strong>Create or copy user roles</strong>: Add new roles, or clone existing "
1518
- "roles."
1519
- msgstr ""
1520
- "<strong>Créer ou copier des rôles utilisateur</strong> : ajoutez de nouveaux "
1521
- "rôles ou clonez des rôles existants."
1522
-
1523
- #. Found in description list item.
1524
- msgid ""
1525
- "<strong>Safe backups</strong>: Every time you change your permissions, "
1526
- "PublishPress Capabilities saves a backup."
1527
- msgstr ""
1528
- "<strong>Sauvegardes sécurisées</strong> : chaque fois que vous modifiez vos "
1529
- "permissions, PublishPress Capabilities enregistre une sauvegarde."
1530
-
1531
- #. Found in description list item.
1532
- msgid ""
1533
- "<strong>Works for all taxonomies</strong>: Choose who can Manage, Edit and "
1534
- "Assign terms in any taxonomy."
1535
- msgstr ""
1536
- "<strong>Fonctionne pour toutes les taxonomies</strong> : choisissez qui peut "
1537
- "gérer, modifier et attribuer des termes dans n’importe quelle taxonomie."
1538
-
1539
- #. Found in description list item.
1540
- msgid ""
1541
- "<strong>Works for all post types</strong>: Choose who can Publish, Read, "
1542
- "Edit and Delete content for any post type."
1543
- msgstr ""
1544
- "<strong>Fonctionne pour tous les types de publication</strong> : choisissez "
1545
- "qui peut publier, lire, modifier et supprimer du contenu pour tout type de "
1546
- "publication."
1547
-
1548
- #. Found in description list item.
1549
- msgid ""
1550
- "<strong>User role editor</strong>: You can change the capabilities for any "
1551
- "role."
1552
- msgstr ""
1553
- "<strong>Éditeur de rôle utilisateur</strong> : vous pouvez modifier les "
1554
- "fonctionnalités de n’importe quel rôle."
1555
-
1556
- #. Found in description header.
1557
- msgid "9. Frontend Menu Restrictions (Pro version)"
1558
- msgstr "#7. Limitations de l’interface publique (Pro version)"
1559
-
1560
- #. Found in description header.
1561
- msgid "The Key Features of PublishPress Capabilities"
1562
- msgstr "Les principales caractéristiques de PublishPress Capabilities"
1563
-
1564
- #. Found in description paragraph.
1565
- msgid ""
1566
- "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click "
1567
- "here to learn about multisite permissions</a>."
1568
- msgstr ""
1569
- "<a href=\"https://publishpress.com/knowledge-base/multisite-network/"
1570
- "\">Cliquez ici pour en savoir plus sur les permissions multisites.</a>."
1571
-
1572
- #. Found in description paragraph.
1573
- msgid ""
1574
- "PublishPress Capabilities allows you to control permissions on a single site "
1575
- "or across your whole network. Every time you update permissions in "
1576
- "PublishPress Capabilities, you can choose to sync those changes across your "
1577
- "multisite network."
1578
- msgstr ""
1579
- "PublishPress Capabilities vous permet de contrôler les permissions sur un "
1580
- "seul site ou sur l’ensemble de votre réseau. Chaque fois que vous mettez à "
1581
- "jour les permissions dans PublishPress Capabilities, vous pouvez choisir de "
1582
- "synchroniser ces changements sur votre réseau multisite."
1583
-
1584
- #. Found in description paragraph.
1585
- msgid ""
1586
- "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
1587
- "\">Click here to learn about WooCommerce permissions</a>."
1588
- msgstr ""
1589
- "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
1590
- "\">Cliquez ici pour en savoir plus sur les permissions WooCommerce</a>."
1591
-
1592
- #. Found in description paragraph.
1593
- msgid ""
1594
- "We mentioned earlier that PublishPress Capabilities has special support for "
1595
- "WooCommerce taxonomies. This is true for the rest of WooCommerce also. With "
1596
- "PublishPress Capabilities you can control permissions for WooCommerce "
1597
- "products, orders and coupons."
1598
- msgstr ""
1599
- "Nous avons mentionné précédemment que PublishPress prend en charge les "
1600
- "taxonomies WooCommerce. Cela est également vrai pour le reste de "
1601
- "WooCommerce. PublishPress Capabilities vous permet de contrôler les droits "
1602
- "pour les produits, les commandes et les code promo WooCommerce."
1603
-
1604
- #. Found in description paragraph.
1605
- msgid ""
1606
- "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
1607
- "access/\">Click here to learn about Media Library permissions</a>."
1608
- msgstr ""
1609
- "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
1610
- "access/\">Cliquez ici pour en savoir plus sur les permissions de la "
1611
- "médiathèque</a>."
1612
-
1613
- #. Found in description paragraph.
1614
- msgid ""
1615
- "PublishPress Capabilities enables you to decide who can upload, edit and "
1616
- "delete files from your site's Media Library. By default, only Administrators "
1617
- "are able to delete files in your Media Library. Subscribers and Contributors "
1618
- "are not even allowed to upload files. You can customize these permissions "
1619
- "for the Media Library and also the Featured Image box."
1620
- msgstr ""
1621
- "PublishPress Capabilities vous permet de décider qui peut télécharger, "
1622
- "modifier et supprimer des fichiers de la médiathèque de votre site. Par "
1623
- "défaut, seuls les administrateurs peuvent supprimer des fichiers de votre "
1624
- "médiathèque. Les abonnés et les contributeurs ne sont même pas autorisés à "
1625
- "télécharger des fichiers. Vous pouvez personnaliser ces permissions pour la "
1626
- "médiathèque ainsi que la zone image mise en avant."
1627
-
1628
- #. Found in description paragraph.
1629
- msgid ""
1630
- "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Click to "
1631
- "see how to block Admin menu access</a>."
1632
- msgstr ""
1633
- "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Cliquez "
1634
- "pour voir comment bloquer l’accès au menu d’administration</a>."
1635
-
1636
- #. Found in description paragraph.
1637
- msgid ""
1638
- "With PublishPress Capabilities you can restrict access to admin menu screens "
1639
- "by user roles. This is useful because many plugin do not have any way to "
1640
- "control who can access their admin screens."
1641
- msgstr ""
1642
- "PublishPress Capabilities vous permet de restreindre l’accès aux écrans du "
1643
- "menu d’administration par rôles d’utilisateur. Ceci est utile car de "
1644
- "nombreuses extensions n’ont aucun moyen de contrôler qui peut accéder à "
1645
- "leurs écrans d’administration."
1646
-
1647
- #. Found in description paragraph.
1648
- msgid ""
1649
- "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Click to see "
1650
- "how to block frontend menu access</a>."
1651
- msgstr ""
1652
- "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Cliquez pour "
1653
- "voir comment bloquer l’accès au menu de l’interface publique</a>."
1654
-
1655
- #. Found in description paragraph.
1656
- msgid ""
1657
- "PublishPress Capabilities enables you to restrict access to navigation menus "
1658
- "by roles, logged in and logged out users. This is useful because a default "
1659
- "WordPress site does not give you way to control the visibility of your links."
1660
- msgstr ""
1661
- "PublishPress Capabilities vous permet de restreindre l’accès aux menus de "
1662
- "navigation par rôles, utilisateurs connectés et déconnectés. Ceci est utile "
1663
- "car un site WordPress par défaut ne vous permet pas de contrôler la "
1664
- "visibilité de vos liens."
1665
-
1666
- #. Found in description paragraph.
1667
- msgid ""
1668
- "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/"
1669
- "\">Click here to see how to create or copy user roles</a>."
1670
- msgstr ""
1671
- "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/"
1672
- "\">Cliquez ici pour voir comment créer ou copier des rôles d’utilisateur</a>."
1673
-
1674
- #. Found in description paragraph.
1675
- msgid ""
1676
- "With PublishPress Capabilities you can create or copy any existing WordPress "
1677
- "user role. These roles can be customized in exactly the same way as the "
1678
- "default WordPress roles. These new roles can be added to single sites or to "
1679
- "an entire multisite network."
1680
- msgstr ""
1681
- "Avec PublishPress Capabilities, vous pouvez créer ou copier n’importe quel "
1682
- "rôle d’utilisateur WordPress existant. Ces rôles peuvent être personnalisés "
1683
- "exactement de la même manière que les rôles WordPress par défaut. Ces "
1684
- "nouveaux rôles peuvent être ajoutés à des sites uniques ou à un réseau "
1685
- "multisite entier."
1686
-
1687
- #. Found in description paragraph.
1688
- msgid ""
1689
- "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/"
1690
- "\">Click here to see how to backup permissions</a>."
1691
- msgstr ""
1692
- "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/"
1693
- "\">Cliquez ici pour voir comment sauvegarder les permissions</a>."
1694
-
1695
- #. Found in description paragraph.
1696
- msgid ""
1697
- "Every time you change your permissions, the PublishPress Capabilities plugin "
1698
- "will now automatically create a backup. If you make a mistake, go to the "
1699
- "\"Backup\" menu link and you'll be able to roll back to a previous version."
1700
- msgstr ""
1701
- "Chaque fois que vous modifiez vos permissions, l’extension PublishPress "
1702
- "Capabilities crée automatiquement une sauvegarde. Si vous faites une erreur, "
1703
- "allez sur le lien du menu « Sauvegarde » et vous pourrez revenir à une "
1704
- "version précédente."
1705
-
1706
- #. Found in description paragraph.
1707
- msgid ""
1708
- "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-"
1709
- "capabilities/\">Click here to learn about taxonomy permissions</a>."
1710
- msgstr ""
1711
- "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-"
1712
- "capabilities/\">Cliquez ici pour en savoir plus sur les permissions de "
1713
- "taxonomie</a>."
1714
-
1715
- #. Found in description paragraph.
1716
- msgid ""
1717
- "PublishPress Capabilities enables you to add extra permissions to the "
1718
- "taxonomies on your site. This feature includes the default Categories and "
1719
- "Tags, but also applies to other taxonomies. For example, in WooCommerce you "
1720
- "can apply custom permissions to Product categories, Product tags, and "
1721
- "Product shipping classes. You can enforce and assign \"Manage\", \"Edit\" "
1722
- "and \"Assign\" distinct capabilities for all your taxonomies."
1723
- msgstr ""
1724
- "PublishPress Capabilities vous permet d’ajouter des permissions "
1725
- "supplémentaires aux taxonomies de votre site. Cette fonctionnalité inclut "
1726
- "les catégories et les balises par défaut, mais s’applique également à "
1727
- "d’autres taxonomies. Par exemple, dans WooCommerce, vous pouvez appliquer "
1728
- "des permissions personnalisées aux catégories de produits, aux étiquettes de "
1729
- "produits et aux classes d’expédition de produits. Vous pouvez appliquer et "
1730
- "attribuer des fonctionnalités distinctes « Gérer », « Modifier » et "
1731
- "« Attribuer » pour toutes vos taxonomies."
1732
-
1733
- #. Found in description paragraph.
1734
- msgid ""
1735
- "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-"
1736
- "capability/\">Click here to see how to control post type permissions</a>."
1737
- msgstr ""
1738
- "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-"
1739
- "capability/\">Cliquez ici pour voir comment contrôler les permissions de "
1740
- "type de publication</a>."
1741
-
1742
- #. Found in description paragraph.
1743
- msgid ""
1744
- "Many WordPress users have sites with custom post types. This can be done "
1745
- "using custom code, a theme, or with a plugin. No matter how your post type "
1746
- "is created, PublishPress Capabilities lets you enforce and assign distinct "
1747
- "capabilities for your post type."
1748
- msgstr ""
1749
- "De nombreux utilisateurs de WordPress ont des sites avec des types de "
1750
- "publication personnalisés. Cela peut être fait à l’aide d’un code "
1751
- "personnalisé, d’un thème ou d’une extension. Quelle que soit la manière dont "
1752
- "votre type de publication est créé, PublishPress Capabilities vous permet "
1753
- "d’appliquer et d’attribuer des permissions distinctes à votre type de "
1754
- "publication."
1755
-
1756
- #. Found in description paragraph.
1757
- msgid ""
1758
- "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Click "
1759
- "here for your quick start guide to PublishPress Capabilities</a>."
1760
- msgstr ""
1761
- "<a href=\"https://publishpress.com/knowledge-base/permissions-start/"
1762
- "\">Cliquez ici pour accéder à votre guide de démarrage rapide de "
1763
- "PublishPress Capabilities</a>."
1764
-
1765
- #. Found in description paragraph.
1766
- msgid ""
1767
- "With the Capabilities plugin, you can choose who can Publish, Read, Edit and "
1768
- "Delete content. You can choose permissions for posts, pages, custom content "
1769
- "types, categories, tags, and more."
1770
- msgstr ""
1771
- "Avec Capabilities, vous pouvez choisir qui peut publier, lire, modifier et "
1772
- "supprimer du contenu. Vous pouvez choisir des permissions pour les "
1773
- "publications, les pages, les types de publication personnalisées, les "
1774
- "catégories, les balises, etc."
1775
-
1776
- #. Found in description paragraph.
1777
- msgid ""
1778
- "You can <strong>customize all your WordPress user roles</strong>, from "
1779
- "Administrators and Editors to Authors, Contributors, Subscribers and custom "
1780
- "roles. Each use role can have the exact permissions that your site needs."
1781
- msgstr ""
1782
- "Vous pouvez <strong>personnaliser tous les rôles d’utilisateur sur votre "
1783
- "site</strong>, des administrateurs et éditeurs aux auteurs, contributeurs, "
1784
- "abonnés et rôles personnalisés. Chaque rôle peut avoir les permissions "
1785
- "exactes dont votre site a besoin."
1786
-
1787
- #. Found in description paragraph.
1788
- msgid ""
1789
- "<a href=\"https://publishpress.com/capabilities/\">PublishPress "
1790
- "Capabilities</a> gives you control over all the permissions on your "
1791
- "WordPress site. We built this user role editor plugin so you have an EASY "
1792
- "and POWERFUL way to manage users."
1793
- msgstr ""
1794
- "<a href=\"https://publishpress.com/capabilities/\">PublishPress "
1795
- "Capabilities</a> vous permet de contrôler toutes les permissions sur votre "
1796
- "site WordPress. Nous avons construit cette extension d’éditeur de rôle "
1797
- "d’utilisateur afin que vous ayez un moyen facile et puissant de gérer les "
1798
- "utilisateurs."
1799
-
1800
- #. Found in description paragraph.
1801
- msgid ""
1802
- "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress"
1803
- "\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom"
1804
- "\">Twitter</a> and <a href=\"https://www.youtube.com/publishpress\">YouTube</"
1805
- "a>."
1806
- msgstr ""
1807
- "Suivez PublishPress sur <a href=\"https://www.facebook.com/publishpress"
1808
- "\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom"
1809
- "\">Twitter</a> et <a href=\"https://www.youtube.com/publishpress\">YouTube</"
1810
- "a>."
1811
-
1812
- #. Found in description paragraph.
1813
- msgid ""
1814
- "Bug reports for PublishPress Capabilities are welcomed in our <a href="
1815
- "\"https://github.com/publishpress/publishpress-capabilities\">repository on "
1816
- "GitHub</a>. Please note that GitHub is not a support forum, and that issues "
1817
- "that aren't properly qualified as bugs will be closed."
1818
- msgstr ""
1819
- "Les rapports de bogues pour PublishPress Capabilities sont les bienvenus "
1820
- "dans notre <a href=\"https://github.com/publishpress/publishpress-"
1821
- "capabilities\">dépôt sur GitHub</a>. Veuillez noter que GitHub n’est pas un "
1822
- "forum de support et que les problèmes qui ne sont pas correctement qualifiés "
1823
- "de bogues seront fermés."
1824
-
1825
- #. Found in description paragraph.
1826
- msgid ""
1827
- "Together, these plugins are a suite of powerful publishing tools for "
1828
- "WordPress. If you need to create a professional workflow in WordPress, with "
1829
- "moderation, revisions, permissions and more... then you should try "
1830
- "PublishPress."
1831
- msgstr ""
1832
- "Ensemble, ces extensions constituent une suite d’outils de publication "
1833
- "puissants pour WordPress. Si vous avez besoin de créer un flux de travail "
1834
- "professionnel dans WordPress, avec modération, révisions, permissions et "
1835
- "plus encore... alors vous devriez essayer PublishPress."
1836
-
1837
- #. Found in description paragraph.
1838
- msgid "Join PublishPress and you'll get access to these Pro plugins:"
1839
- msgstr "Rejoignez PublishPress et vous aurez accès à ces extensions Pro : "
1840
-
1841
- #. Found in description paragraph.
1842
- msgid ""
1843
- "The Pro versions of the PublishPress plugins are well worth your investment. "
1844
- "The Pro versions have extra features and faster support. <a href=\"https://"
1845
- "publishpress.com/pricing/\">Click here to join PublishPress</a>."
1846
- msgstr ""
1847
- "Les versions Pro des extensions PublishPress valent bien votre "
1848
- "investissement. Les versions Pro ont des fonctionnalités supplémentaires et "
1849
- "un support plus rapide. <a href=\"https://publishpress.com/pricing/"
1850
- "\">Cliquez ici pour rejoindre PublishPress</a>."
1851
-
1852
- #. Found in description paragraph.
1853
- msgid ""
1854
- "PublishPress Capabilities offers you the ability to back up and restore your "
1855
- "permissions. This feature is very helpful if you want to test out changes on "
1856
- "your site, or if you've installed a new plugin that has changed your site's "
1857
- "permissions."
1858
- msgstr ""
1859
- "PublishPress Capabilities vous offre la possibilité de sauvegarder et de "
1860
- "restaurer vos permissions. Cette fonctionnalité est très utile si vous "
1861
- "souhaitez tester des modifications sur votre site ou si vous avez installé "
1862
- "une nouvelle extension qui a modifié les permissions de votre site."
1863
-
1864
- #. Found in description paragraph.
1865
- msgid ""
1866
- "PublishPress Capabilities is <strong>safe to use</strong>. Every time you "
1867
- "change your site's permissions, this plugin will take a backup that you can "
1868
- "restore if anything goes wrong. You can use these backups to migrate your "
1869
- "roles and permissions from one site to another."
1870
- msgstr ""
1871
- "PublishPress Capabilities est <strong>sûr à utiliser</strong>. Chaque fois "
1872
- "que vous modifiez les permissions de votre site, cette extension effectuera "
1873
- "une sauvegarde que vous pourrez restaurer en cas de problème. Vous pouvez "
1874
- "utiliser ces sauvegardes pour migrer vos rôles et permissions d’un site à un "
1875
- "autre."
1876
-
1877
- #. Found in description list item.
1878
- msgid ""
1879
- "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</"
1880
- "a> allows you to update your published pages with teamwork and precision."
1881
- msgstr ""
1882
- "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</"
1883
- "a> vous permet de mettre à jour vos pages publiées avec précision et travail "
1884
- "d’équipe."
1885
-
1886
- #. Found in description list item.
1887
- msgid ""
1888
- "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> is "
1889
- "the plugin for managing and scheduling WordPress content."
1890
- msgstr ""
1891
- "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> est "
1892
- "l’extension pour gérer et planifier les publications WordPress."
1893
-
1894
- #. Found in description list item.
1895
- msgid ""
1896
- "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions "
1897
- "Pro</a> is the plugin for advanced WordPress permissions."
1898
- msgstr ""
1899
- "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions "
1900
- "Pro</a> est l’extension pour les permissions WordPress avancées."
1901
-
1902
- #. Found in description list item.
1903
- msgid ""
1904
- "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</"
1905
- "a> enables you to define tasks that must be completed before content is "
1906
- "published."
1907
- msgstr ""
1908
- "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</"
1909
- "a> vous permet de définir les tâches qui doivent être effectuées avant "
1910
- "publier une publication."
1911
-
1912
- #. Found in description list item.
1913
- msgid ""
1914
- "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities "
1915
- "Pro</a> is the plugin to manage your WordPress user roles, permissions, and "
1916
- "capabilities."
1917
- msgstr ""
1918
- "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities "
1919
- "Pro</a> est l’extension pour gérer vos rôles, permissions et droits "
1920
- "d’utilisateur WordPress."
1921
-
1922
- #. Found in description list item.
1923
- msgid ""
1924
- "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
1925
- "allows you to add multiple authors and guest authors to WordPress posts."
1926
- msgstr ""
1927
- "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
1928
- "vous permet d’ajouter plusieurs auteurs et auteurs invités aux publications "
1929
- "WordPress."
1930
-
1931
- #. Found in description header.
1932
- msgid "Follow the PublishPress team"
1933
- msgstr "Suivez l’équipe de PublishPress"
1934
-
1935
- #. Found in description header.
1936
- msgid "Bug Reports"
1937
- msgstr "Rapports de bogues"
1938
-
1939
- #. Found in description header.
1940
- msgid "Join PublishPress and get the Pro plugins"
1941
- msgstr "Rejoignez PublishPress et obtenez les extensions Pro"
1942
-
1943
- #. Found in description header.
1944
- msgid "13. WordPress Multisite support"
1945
- msgstr "#11. Prise en charge de WordPress multisite"
1946
-
1947
- #. Found in description header.
1948
- msgid "12. Support for WooCommerce Permissions"
1949
- msgstr "#dix. Prise en charge des permissions WooCommerce"
1950
-
1951
- #. Found in description header.
1952
- msgid "11. Support for Media Library Permissions"
1953
- msgstr "#9. Prise en charge des permissions de la médiathèque"
1954
-
1955
- #. Found in description header.
1956
- msgid "7. Backup and Restore User Roles and Capabilities"
1957
- msgstr "#5. Rôles et permissions de sauvegarde et de restauration"
1958
-
1959
- #. Found in description header.
1960
- msgid "2. Capabilities for any Post Type"
1961
- msgstr "#2. Permissions pour toutes les publications"
1962
-
1963
- #. Found in changelog list item.
1964
- msgid "Feature : New \"Admin Features\" screen #200"
1965
- msgstr "Feature : New \"Admin Features\" screen #200"
1966
-
1967
- #. Found in changelog list item.
1968
- msgid "Change : Role Capabilities screen uses tabs"
1969
- msgstr "Change : Role Capabilities screen uses tabs"
1970
-
1971
- #. Found in changelog list item.
1972
- msgid ""
1973
- "Fixed : Some security scans flagged an unused file in external library "
1974
- "\"chosen\". That file (and other developer documentation files) has been "
1975
- "removed"
1976
- msgstr ""
1977
- "Fixed : Some security scans flagged an unused file in external library "
1978
- "\"chosen\". That file (and other developer documentation files) has been "
1979
- "removed"
1980
-
1981
- #. Found in changelog list item.
1982
- msgid ""
1983
- "Perf : Sync role to all sites - Operation timed out on networks with ~100 "
1984
- "sites "
1985
- msgstr ""
1986
- "Perf : Sync role to all sites - Operation timed out on networks with ~100 "
1987
- "sites "
1988
-
1989
- #. Found in changelog list item.
1990
- msgid ""
1991
- "Feature : Retain last role selection for Capabilities, Editor Features "
1992
- "screens"
1993
- msgstr ""
1994
- "Feature : Retain last role selection for Capabilities, Editor Features "
1995
- "screens"
1996
-
1997
- #. Found in changelog list item.
1998
- msgid ""
1999
- "Fixed : PHP Warning if a role is stored without a valid capabilities array"
2000
- msgstr ""
2001
- "Fixed : PHP Warning if a role is stored without a valid capabilities array"
2002
-
2003
- #. Found in changelog list item.
2004
- msgid ""
2005
- "Fixed : If Media \"Create\" capability is negated or un-negated, the "
2006
- "corresponding upload_files checkbox (in Other WP Core Capabilities section) "
2007
- "is not toggled, leading to an apparant update failure "
2008
- msgstr ""
2009
- "Fixed : If Media \"Create\" capability is negated or un-negated, the "
2010
- "corresponding upload_files checkbox (in Other WP Core Capabilities section) "
2011
- "is not toggled, leading to an apparant update failure "
2012
-
2013
- #. Found in changelog list item.
2014
- msgid ""
2015
- "Fixed : If Media \"Create\" capability is selected / unselected by clicking "
2016
- "Media caption or Create caption, the corresponding upload_files checkbox (in "
2017
- "Other WP Core Capabilities section) is not toggled, leading to an apparant "
2018
- "update failure"
2019
- msgstr ""
2020
- "Fixed : If Media \"Create\" capability is selected / unselected by clicking "
2021
- "Media caption or Create caption, the corresponding upload_files checkbox (in "
2022
- "Other WP Core Capabilities section) is not toggled, leading to an apparant "
2023
- "update failure"
2024
-
2025
- #. Found in changelog list item.
2026
- msgid ""
2027
- "Feature : Editor Features restriction (new screen to block editor elements "
2028
- "per-role)"
2029
- msgstr ""
2030
- "Feature : Editor Features restriction (new screen to block editor elements "
2031
- "per-role)"
2032
-
2033
- #. Found in changelog list item.
2034
- msgid ""
2035
- "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row "
2036
- "actions"
2037
- msgstr ""
2038
- "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row "
2039
- "actions"
2040
-
2041
- #. Found in changelog list item.
2042
- msgid ""
2043
- "Compat : PublishPress - Authors without publish capability could directly "
2044
- "publish on the Calendar screen"
2045
- msgstr ""
2046
- "Compat : PublishPress - Authors without publish capability could directly "
2047
- "publish on the Calendar screen"
2048
-
2049
- #. Found in changelog list item.
2050
- msgid "Fixed : Add New User - couldn't display password entry"
2051
- msgstr "Fixed : Add New User - couldn't display password entry"
2052
-
2053
- #. Found in changelog list item.
2054
- msgid ""
2055
- "Fixed : Fatal error on Capabilities screen if another plugin calls "
2056
- "get_editable_roles() too early"
2057
- msgstr ""
2058
- "Fixed : Fatal error on Capabilities screen if another plugin calls "
2059
- "get_editable_roles() too early"
2060
-
2061
- #. Found in changelog list item.
2062
- msgid ""
2063
- "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID "
2064
- "is not 1"
2065
- msgstr ""
2066
- "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID "
2067
- "is not 1"
2068
-
2069
- #. Found in changelog list item.
2070
- msgid ""
2071
- "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use "
2072
- "create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific "
2073
- "Capabilities, Detailed Taxonomy Capabilities settings "
2074
- msgstr ""
2075
- "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use "
2076
- "create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific "
2077
- "Capabilities, Detailed Taxonomy Capabilities settings "
2078
-
2079
- #. Found in changelog list item.
2080
- msgid "Fixed : Fatal error on plugin load if Administrator role does not exist"
2081
- msgstr ""
2082
- "Fixed : Fatal error on plugin load if Administrator role does not exist"
2083
-
2084
- #. Found in changelog list item.
2085
- msgid "Feature : Rename Role sidebar box on Capabilities screen"
2086
- msgstr "Feature : Rename Role sidebar box on Capabilities screen"
2087
-
2088
- #. Found in changelog list item.
2089
- msgid ""
2090
- "Change : Add New Role retains capitalization as entered for role title "
2091
- "(otherwise applies proper case)"
2092
- msgstr ""
2093
- "Change : Add New Role retains capitalization as entered for role title "
2094
- "(otherwise applies proper case)"
2095
-
2096
- #. Found in changelog list item.
2097
- msgid ""
2098
- "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting "
2099
- "was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; "
2100
- "Filtered Post Types"
2101
- msgstr ""
2102
- "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting "
2103
- "was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; "
2104
- "Filtered Post Types"
2105
-
2106
- #. Found in changelog list item.
2107
- msgid ""
2108
- "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly "
2109
- "synchronized under some conditions"
2110
- msgstr ""
2111
- "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly "
2112
- "synchronized under some conditions"
2113
-
2114
- #. Found in changelog list item.
2115
- msgid "Fixed : Upgrade menu links were not displayed"
2116
- msgstr "Fixed : Upgrade menu links were not displayed"
2117
-
2118
- #. Found in changelog list item.
2119
- msgid "Fixed : Fatal error due to missing vendor library folder"
2120
- msgstr "Fixed : Fatal error due to missing vendor library folder"
2121
-
2122
- #. Found in changelog list item.
2123
- msgid ""
2124
- "Fixed : Language file load failure if plugin directory structure is non-"
2125
- "standard"
2126
- msgstr ""
2127
- "Fixed : Language file load failure if plugin directory structure is non-"
2128
- "standard"
2129
-
2130
- #. Found in changelog list item.
2131
- msgid ""
2132
- "Fixed : Multisite - Incorrect menu display on sites where main site ID is "
2133
- "not 1"
2134
- msgstr ""
2135
- "Fixed : Multisite - Incorrect menu display on sites where main site ID is "
2136
- "not 1"
2137
-
2138
- #. Found in changelog list item.
2139
- msgid ""
2140
- "Fixed : Media Create / upload_files capability could not be removed from role"
2141
- msgstr ""
2142
- "Fixed : Media Create / upload_files capability could not be removed from role"
2143
-
2144
- #. Found in changelog list item.
2145
- msgid ""
2146
- "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, "
2147
- "Deletion, Reading capabilities grid"
2148
- msgstr ""
2149
- "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, "
2150
- "Deletion, Reading capabilities grid"
2151
-
2152
- #. Found in changelog list item.
2153
- msgid ""
2154
- "Feature : Backup &gt; Restore - filter to display only modified capabilities"
2155
- msgstr ""
2156
- "Feature : Backup &gt; Restore - filter to display only modified capabilities"
2157
-
2158
- #. Found in changelog list item.
2159
- msgid "Feature : Improved design and styling for Backup and Restore"
2160
- msgstr "Feature : Improved design and styling for Backup and Restore"
2161
-
2162
- #. Found in changelog list item.
2163
- msgid ""
2164
- "Fixed : Review of role backup contents does not show name of current roles "
2165
- "which would be removed by restoring backup"
2166
- msgstr ""
2167
- "Fixed : Review of role backup contents does not show name of current roles "
2168
- "which would be removed by restoring backup"
2169
-
2170
- #. Found in changelog list item.
2171
- msgid ""
2172
- "Fixed : Type-Specific Capabilities options included some non-public "
2173
- "WordPress post types that don't support capability customization "
2174
- msgstr ""
2175
- "Fixed : Type-Specific Capabilities options included some non-public "
2176
- "WordPress post types that don't support capability customization "
2177
-
2178
- #. Found in changelog list item.
2179
- msgid ""
2180
- "Change : Backup &gt; Restore - Preview displays \"No changes\" below role "
2181
- "name where appropriate "
2182
- msgstr ""
2183
- "Change : Backup &gt; Restore - Preview displays \"No changes\" below role "
2184
- "name where appropriate "
2185
-
2186
- #. Found in changelog list item.
2187
- msgid ""
2188
- "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped "
2189
- "selection to Last Manual Backup"
2190
- msgstr ""
2191
- "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped "
2192
- "selection to Last Manual Backup"
2193
-
2194
- #. Found in changelog list item.
2195
- msgid ""
2196
- "Fixed : Backup &gt; Restore - Negated capabilities were not displayed "
2197
- "correctly in restore preview"
2198
- msgstr ""
2199
- "Fixed : Backup &gt; Restore - Negated capabilities were not displayed "
2200
- "correctly in restore preview"
2201
-
2202
- #. Found in changelog list item.
2203
- msgid ""
2204
- "Fixed : PHP warning for invalid foreach argument, on sites with no "
2205
- "active_plugins option stored"
2206
- msgstr ""
2207
- "Fixed : PHP warning for invalid foreach argument, on sites with no "
2208
- "active_plugins option stored"
2209
-
2210
- #. Found in changelog list item.
2211
- msgid ""
2212
- "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false "
2213
- "positives for post types with map_meta_cap disabled"
2214
- msgstr ""
2215
- "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false "
2216
- "positives for post types with map_meta_cap disabled"
2217
-
2218
- #. Found in changelog list item.
2219
- msgid ""
2220
- "Fixed : uneditable bbPress roles could be opened for editing (require "
2221
- "Capabilities Pro)"
2222
- msgstr ""
2223
- "Fixed : uneditable bbPress roles could be opened for editing (require "
2224
- "Capabilities Pro)"
2225
-
2226
- #. Found in changelog list item.
2227
- msgid ""
2228
- "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in "
2229
- "Editing Capabilities grid"
2230
- msgstr ""
2231
- "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in "
2232
- "Editing Capabilities grid"
2233
-
2234
- #. Found in changelog list item.
2235
- msgid ""
2236
- "Change : Adjust some captions, variable names, more selective code execution"
2237
- msgstr ""
2238
- "Change : Adjust some captions, variable names, more selective code execution"
2239
-
2240
- #. Found in changelog list item.
2241
- msgid ""
2242
- "Change : Capabilities screen - move some sidebar items to Settings screen"
2243
- msgstr ""
2244
- "Change : Capabilities screen - move some sidebar items to Settings screen"
2245
-
2246
- #. Found in changelog list item.
2247
- msgid ""
2248
- "Change : Capabilities screen - move role selector to top left, eliminate "
2249
- "load button"
2250
- msgstr ""
2251
- "Change : Capabilities screen - move role selector to top left, eliminate "
2252
- "load button"
2253
-
2254
- #. Found in changelog list item.
2255
- msgid ""
2256
- "Lang : Fixed handling, activated partial translations in German, Italian, "
2257
- "Russian, Spanish, Swedish, Belarusian, Catalan"
2258
- msgstr ""
2259
- "Lang : Fixed handling, activated partial translations in German, Italian, "
2260
- "Russian, Spanish, Swedish, Belarusian, Catalan"
2261
-
2262
- #. Found in changelog list item.
2263
- msgid "Feature : Multiple role assignment on Add / Edit User screen"
2264
- msgstr "Feature : Multiple role assignment on Add / Edit User screen"
2265
-
2266
- #. Found in changelog list item.
2267
- msgid "Feature : Roles screen"
2268
- msgstr "Feature : Roles screen"
2269
-
2270
- #. Found in changelog list item.
2271
- msgid ""
2272
- "Fixed : Capabilities menu was displayed to non-Administrators with no items "
2273
- "except \"Upgrade to Pro\""
2274
- msgstr ""
2275
- "Fixed : Capabilities menu was displayed to non-Administrators with no items "
2276
- "except \"Upgrade to Pro\""
2277
-
2278
- #. Found in changelog list item.
2279
- msgid ""
2280
- "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific "
2281
- "Capabilities\" were not synchronized with PublishPress Permissions under "
2282
- "some conditions"
2283
- msgstr ""
2284
- "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific "
2285
- "Capabilities\" were not synchronized with PublishPress Permissions under "
2286
- "some conditions"
2287
-
2288
- #. Found in changelog list item.
2289
- msgid ""
2290
- "Fixed : Fatal error loading Capabilities screen on a small percentage of "
2291
- "installations"
2292
- msgstr ""
2293
- "Fixed : Fatal error loading Capabilities screen on a small percentage of "
2294
- "installations"
2295
-
2296
- #. Found in changelog list item.
2297
- msgid ""
2298
- "Change : Apply workaround filters for WordPress edit_published_posts / "
2299
- "publish_posts handling only for users who have edit_published_posts "
2300
- "capability for current post type"
2301
- msgstr ""
2302
- "Change : Apply workaround filters for WordPress edit_published_posts / "
2303
- "publish_posts handling only for users who have edit_published_posts "
2304
- "capability for current post type"
2305
-
2306
- #. Found in changelog list item.
2307
- msgid ""
2308
- "Change : Reinstate WordPress edit_published_posts workaround with correct "
2309
- "status filtering behavior"
2310
- msgstr ""
2311
- "Change : Reinstate WordPress edit_published_posts workaround with correct "
2312
- "status filtering behavior"
2313
-
2314
- #. Found in changelog list item.
2315
- msgid ""
2316
- "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect "
2317
- "under some conditions"
2318
- msgstr ""
2319
- "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect "
2320
- "under some conditions"
2321
-
2322
- #. Found in changelog list item.
2323
- msgid ""
2324
- "Fixed : Role name captions on Role Capabilities and Backup Tool screens "
2325
- "could not be translated"
2326
- msgstr ""
2327
- "Fixed : Role name captions on Role Capabilities and Backup Tool screens "
2328
- "could not be translated"
2329
-
2330
- #. Found in changelog list item.
2331
- msgid ""
2332
- "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display "
2333
- "PublishPress Capabilities section to Super Administrators who don't have a "
2334
- "role on the site"
2335
- msgstr ""
2336
- "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display "
2337
- "PublishPress Capabilities section to Super Administrators who don't have a "
2338
- "role on the site"
2339
-
2340
- #. Found in changelog list item.
2341
- msgid ""
2342
- "Fixed : Term Assign or Delete capabilities were not effective due to "
2343
- "WordPress core forcing default capability requirement"
2344
- msgstr ""
2345
- "Fixed : Term Assign or Delete capabilities were not effective due to "
2346
- "WordPress core forcing default capability requirement"
2347
-
2348
- #. Found in changelog list item.
2349
- msgid ""
2350
- "Fixed : Category Assign or Delete capabilities were not effective due to "
2351
- "WordPress core forcing default capability requirement"
2352
- msgstr ""
2353
- "Fixed : Category Assign or Delete capabilities were not effective due to "
2354
- "WordPress core forcing default capability requirement"
2355
-
2356
- #. Found in changelog list item.
2357
- msgid ""
2358
- "Fixed : Add Capability sidebar added custom capability to role immediately, "
2359
- "but capability checkbox did not display as checked until reload"
2360
- msgstr ""
2361
- "Fixed : Add Capability sidebar added custom capability to role immediately, "
2362
- "but capability checkbox did not display as checked until reload"
2363
-
2364
- #. Found in changelog list item.
2365
- msgid ""
2366
- "Fixed : Browser reload caused Role Capabilities screen to display default "
2367
- "role "
2368
- msgstr ""
2369
- "Fixed : Browser reload caused Role Capabilities screen to display default "
2370
- "role "
2371
-
2372
- #. Found in changelog list item.
2373
- msgid ""
2374
- "Feature : Role Capabilities screen links to PublishPress &gt; Roles for "
2375
- "member management"
2376
- msgstr ""
2377
- "Feature : Role Capabilities screen links to PublishPress &gt; Roles for "
2378
- "member management"
2379
-
2380
- #. Found in changelog list item.
2381
- msgid ""
2382
- "Feature : Capabilities link on PublishPress &gt; Roles row opens Role "
2383
- "Capabilities screen"
2384
- msgstr ""
2385
- "Feature : Capabilities link on PublishPress &gt; Roles row opens Role "
2386
- "Capabilities screen"
2387
-
2388
- #. Found in changelog list item.
2389
- msgid "Change : Renamed to PublishPress Capabilities"
2390
- msgstr "Change : Renamed to PublishPress Capabilities"
2391
-
2392
- #. Found in changelog list item.
2393
- msgid ""
2394
- "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not "
2395
- "work with ENTER keypress (caused screen reload without applying operation)"
2396
- msgstr ""
2397
- "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not "
2398
- "work with ENTER keypress (caused screen reload without applying operation)"
2399
-
2400
- #. Found in changelog list item.
2401
- msgid ""
2402
- "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to "
2403
- "missing strikethrough"
2404
- msgstr ""
2405
- "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to "
2406
- "missing strikethrough"
2407
-
2408
- #. Found in changelog list item.
2409
- msgid ""
2410
- "Fixed : Plugin capability sections - pp_set_notification_channel and "
2411
- "pp_manage_roles were included in both PublishPress and PublishPress "
2412
- "Permissions sections"
2413
- msgstr ""
2414
- "Fixed : Plugin capability sections - pp_set_notification_channel and "
2415
- "pp_manage_roles were included in both PublishPress and PublishPress "
2416
- "Permissions sections"
2417
 
2418
- #. Found in changelog list item.
2419
- msgid ""
2420
- "Change : Third Party Plugin Capabilities - always display checkboxes even if "
2421
- "capabilities not present in Administrator role"
2422
- msgstr ""
2423
- "Change : Third Party Plugin Capabilities - always display checkboxes even if "
2424
- "capabilities not present in Administrator role"
2425
-
2426
- #. Found in changelog list item.
2427
- msgid ""
2428
- "Fixed : First-time installation: Capabilities menu item not displayed until "
2429
- "after Plugins or Users menu clicked "
2430
- msgstr ""
2431
- "Fixed : First-time installation: Capabilities menu item not displayed until "
2432
- "after Plugins or Users menu clicked "
2433
-
2434
- #. Found in changelog list item.
2435
- msgid ""
2436
- "Feature : Auto-backup role and capabilities on each update (and on update to "
2437
- "this version)"
2438
- msgstr ""
2439
- "Feature : Auto-backup role and capabilities on each update (and on update to "
2440
- "this version)"
2441
-
2442
- #. Found in changelog list item.
2443
- msgid "Change : Clarify some messages for plugin access denial"
2444
- msgstr "Change : Clarify some messages for plugin access denial"
2445
-
2446
- #. Found in changelog list item.
2447
- msgid ""
2448
- "Fixed : Some functions were not accessible to network Super Administrators "
2449
- "without a role on the site"
2450
- msgstr ""
2451
- "Fixed : Some functions were not accessible to network Super Administrators "
2452
- "without a role on the site"
2453
-
2454
- #. Found in changelog list item.
2455
- msgid ""
2456
- "Fixed : Capabilities screen was not accessible to non-Administrators who "
2457
- "have \"manage_capabilities\" capability"
2458
- msgstr ""
2459
- "Fixed : Capabilities screen was not accessible to non-Administrators who "
2460
- "have \"manage_capabilities\" capability"
2461
-
2462
- #. Found in changelog list item.
2463
- msgid ""
2464
- "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save "
2465
- "with incorrect post status (since 1.8)"
2466
- msgstr ""
2467
- "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save "
2468
- "with incorrect post status (since 1.8)"
2469
-
2470
- #. Found in changelog list item.
2471
- msgid ""
2472
- "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not "
2473
- "updated based on role edit"
2474
- msgstr ""
2475
- "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not "
2476
- "updated based on role edit"
2477
-
2478
- #. Found in changelog list item.
2479
- msgid "Change : PublishPress icon, footer on Roles and Capabilities screen"
2480
- msgstr "Change : PublishPress icon, footer on Roles and Capabilities screen"
2481
-
2482
- #. Found in changelog list item.
2483
- msgid "Change : Edit Roles link in CME row of Plugins list"
2484
- msgstr "Change : Edit Roles link in CME row of Plugins list"
2485
-
2486
- #. Found in changelog list item.
2487
- msgid ""
2488
- "Change : Move Role Capabilities menu item to Permissions menu if PressPermit "
2489
- "plugin is active (restoring previous behavior with Press Permit Core)"
2490
- msgstr ""
2491
- "Change : Move Role Capabilities menu item to Permissions menu if PressPermit "
2492
- "plugin is active (restoring previous behavior with Press Permit Core)"
2493
-
2494
- #. Found in changelog list item.
2495
- msgid ""
2496
- "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin "
2497
- "Posts / Pages listing"
2498
- msgstr ""
2499
- "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin "
2500
- "Posts / Pages listing"
2501
-
2502
- #. Found in changelog list item.
2503
- msgid "Fixed : HTML validation errors on Manage Capabilities screen"
2504
- msgstr "Fixed : HTML validation errors on Manage Capabilities screen"
2505
-
2506
- #. Found in changelog list item.
2507
- msgid ""
2508
- "Fixed : PHP Notices on Role Capabilities screen for undefined index, under "
2509
- "some configurations "
2510
- msgstr ""
2511
- "Fixed : PHP Notices on Role Capabilities screen for undefined index, under "
2512
- "some configurations "
2513
-
2514
- #. Found in changelog list item.
2515
- msgid ""
2516
- "Fixed : Removed add_users from the Core WordPress Capabilities section "
2517
- "because it is was replaced by promote_users"
2518
- msgstr ""
2519
- "Fixed : Removed add_users from the Core WordPress Capabilities section "
2520
- "because it is was replaced by promote_users"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2521
 
2522
- #. Found in changelog list item.
2523
- msgid ""
2524
- "Fixed : If a unique edit/delete capability is already defined, don't change "
2525
- "the definition"
2526
- msgstr ""
2527
- "Fixed : If a unique edit/delete capability is already defined, don't change "
2528
- "the definition"
2529
-
2530
- #. Found in changelog list item.
2531
- msgid ""
2532
- "Feature : Work around WordPress issue allowing users with "
2533
- "edit_published_posts (but not publish_posts) to unpublish published posts"
2534
- msgstr ""
2535
- "Feature : Work around WordPress issue allowing users with "
2536
- "edit_published_posts (but not publish_posts) to unpublish published posts"
2537
 
2538
- #. Found in changelog list item.
2539
- msgid ""
2540
- "Feature : Work around WordPress issue preventing users with "
2541
- "edit_published_posts (but not publish_posts) capability from updating "
2542
- "published posts (https://core.trac.wordpress.org/ticket/47443)"
2543
- msgstr ""
2544
- "Feature : Work around WordPress issue preventing users with "
2545
- "edit_published_posts (but not publish_posts) capability from updating "
2546
- "published posts (https://core.trac.wordpress.org/ticket/47443)"
2547
 
2548
- #. Found in changelog list item.
2549
- msgid ""
2550
- "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" "
2551
- "filter to register their capabilities "
2552
- msgstr ""
2553
- "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" "
2554
- "filter to register their capabilities "
2555
 
2556
- #. Found in changelog list item.
2557
- msgid ""
2558
- "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in "
2559
- "sections on role editor screen"
2560
- msgstr ""
2561
- "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in "
2562
- "sections on role editor screen"
2563
 
2564
- #. Found in changelog list item.
2565
- msgid "Fixed : Correct some irregularities in CME admin menu item display"
2566
- msgstr "Fixed : Correct some irregularities in CME admin menu item display"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2567
 
2568
- #. Found in changelog list item.
2569
- msgid ""
2570
- "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role "
2571
- "Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; "
2572
- "Capabilities\")"
2573
- msgstr ""
2574
- "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role "
2575
- "Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; "
2576
- "Capabilities\")"
2577
 
2578
- #. Found in changelog list item.
2579
- msgid ""
2580
- "Change : Don't allow non-Administrator to edit Administrators, even if "
2581
- "Administrator role level is set to 0"
2582
- msgstr ""
2583
- "Change : Don't allow non-Administrator to edit Administrators, even if "
2584
- "Administrator role level is set to 0"
2585
 
2586
- #. Found in changelog list item.
2587
- msgid "Fixed : PHP warning for deprecated function WP_Roles::reinit"
2588
- msgstr "Fixed : PHP warning for deprecated function WP_Roles::reinit"
2589
 
2590
- #. Found in changelog list item.
2591
- msgid ""
2592
- "Fixed : Potential vulnerability in wp-admin (but exposure was only to users "
2593
- "with role editing capability)"
2594
- msgstr ""
2595
- "Fixed : Potential vulnerability in wp-admin (but exposure was only to users "
2596
- "with role editing capability)"
2597
 
2598
- #. Found in changelog list item.
2599
- msgid ""
2600
- "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME "
2601
- "is activated"
2602
- msgstr ""
2603
- "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME "
2604
- "is activated"
2605
 
2606
- #. Found in changelog list item.
2607
- msgid "Fixed : Back button caused mismatching role dropdown selection"
2608
- msgstr "Fixed : Back button caused mismatching role dropdown selection"
2609
 
2610
- #. Found in changelog list item.
2611
- msgid "Feature : Backup Tool can also display contents of role backups"
2612
- msgstr "Feature : Backup Tool can also display contents of role backups"
 
2613
 
2614
- #. Found in changelog list item.
2615
- msgid ""
2616
- "Feature : When roles are manually backed up, also retain initial role backup"
2617
- msgstr ""
2618
- "Feature : When roles are manually backed up, also retain initial role backup"
2619
 
2620
- #. Found in changelog list item.
2621
- msgid ""
2622
- "Feature : Automatically save backup of WP roles on plugin activation or "
2623
- "update"
2624
- msgstr ""
2625
- "Feature : Automatically save backup of WP roles on plugin activation or "
2626
- "update"
2627
 
2628
- #. Found in changelog list item.
2629
- msgid ""
2630
- "Change : Links to Related Permissions Plugins in sidebar on Roles and "
2631
- "Capabilities screen"
2632
- msgstr ""
2633
- "Change : Links to Related Permissions Plugins in sidebar on Roles and "
2634
- "Capabilities screen"
2635
 
2636
- #. Found in changelog list item.
2637
- msgid "Change : Copyrights, onscreen link for PublishPress ownership"
2638
- msgstr "Change : Copyrights, onscreen link for PublishPress ownership"
2639
 
2640
- #. Found in changelog list item.
2641
- msgid "Change : Minor code cleanup and refactor"
2642
- msgstr "Change : Minor code cleanup and refactor"
2643
 
2644
- #. Found in changelog list item.
2645
- msgid "Feature : Link to Roles and Capabilities screen from Backup Tool"
2646
- msgstr "Feature : Link to Roles and Capabilities screen from Backup Tool"
2647
 
2648
- #. Found in changelog list item.
2649
- msgid ""
2650
- "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
2651
- msgstr ""
2652
- "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
2653
 
2654
- #. Found in changelog list item.
2655
- msgid ""
2656
- "Feature : WooCommerce - If current user has duplicate_products capability, "
2657
- "make Woo honor it"
2658
- msgstr ""
2659
- "Feature : WooCommerce - If current user has duplicate_products capability, "
2660
- "make Woo honor it"
2661
 
2662
- #. Found in changelog list item.
2663
- msgid "Change : Thickbox popups for related plugins"
2664
- msgstr "Change : Thickbox popups for related plugins"
 
2665
 
2666
- #. Found in changelog list item.
2667
- msgid "Change : Reinstate Press Permit description link "
2668
- msgstr "Change : Reinstate Press Permit description link "
2669
 
2670
- #. Found in changelog list item.
2671
- msgid ""
2672
- "Feature : Additional save button at top of Roles and Capabilities screen!"
2673
- msgstr ""
2674
- "Feature : Additional save button at top of Roles and Capabilities screen!"
2675
 
2676
- #. Found in changelog list item.
2677
- msgid ""
2678
- "Feature : If read capability is missing from a standard role, display "
2679
- "warning and instant fix link "
2680
- msgstr ""
2681
- "Feature : If read capability is missing from a standard role, display "
2682
- "warning and instant fix link "
2683
 
2684
- #. Found in changelog list item.
2685
- msgid ""
2686
- "Feature : Prevent read capability from being removed from a standard role"
2687
- msgstr ""
2688
- "Feature : Prevent read capability from being removed from a standard role"
2689
 
2690
- #. Found in changelog list item.
2691
- msgid "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
2692
- msgstr "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
2693
 
2694
- #. Found in changelog list item.
2695
- msgid ""
2696
- "Change : Lockout safeguard (preventing read capability removal) is bypassed "
2697
- "if role has no WP admin / edit capabilities, or if it has "
2698
- "\"dashboard_lockout_ok\" capability"
2699
- msgstr ""
2700
- "Change : Lockout safeguard (preventing read capability removal) is bypassed "
2701
- "if role has no WP admin / edit capabilities, or if it has "
2702
- "\"dashboard_lockout_ok\" capability"
2703
 
2704
- #. Found in changelog list item.
2705
- msgid ""
2706
- "Feature : WooCommerce - Ensure orders can be edited or added based on "
2707
- "edit_shop_orders / create_shop_orders capability"
2708
- msgstr ""
2709
- "Feature : WooCommerce - Ensure orders can be edited or added based on "
2710
- "edit_shop_orders / create_shop_orders capability"
2711
 
2712
- #. Found in changelog list item.
2713
- msgid ""
2714
- "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" "
2715
- "causes term assign, edit and deletion capabilities to be required and "
2716
- "credited separate from management capability"
2717
- msgstr ""
2718
- "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" "
2719
- "causes term assign, edit and deletion capabilities to be required and "
2720
- "credited separate from management capability"
2721
 
2722
- #. Found in changelog list item.
2723
- msgid ""
2724
- "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" "
2725
- "ensures a distinct manage capability for selected taxonomies"
2726
- msgstr ""
2727
- "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" "
2728
- "ensures a distinct manage capability for selected taxonomies"
2729
 
2730
- #. Found in changelog list item.
2731
- msgid ""
2732
- "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for "
2733
- "selected post types (without activating Press Permit Core)."
2734
- msgstr ""
2735
- "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for "
2736
- "selected post types (without activating Press Permit Core)."
2737
 
2738
- #. Found in changelog list item.
2739
- msgid ""
2740
- "Fixed : Press Permit integration - cannot load Permissions &gt; Role "
2741
- "Capabilities with Press Permit Core &lt; 2.7"
2742
- msgstr ""
2743
- "Fixed : Press Permit integration - cannot load Permissions &gt; Role "
2744
- "Capabilities with Press Permit Core &lt; 2.7"
2745
 
2746
- #. Found in changelog list item.
2747
- msgid ""
2748
- "Compat : WooCommerce integration - Users lacking access to the \"Add New "
2749
- "Order\" submenu could not access Posts, Pages, Products or any other Post "
2750
- "Type listing. This occurred if \"use create_posts\" option enabled and user "
2751
- "lacks the create capability for Orders. "
2752
- msgstr ""
2753
- "Compat : WooCommerce integration - Users lacking access to the \"Add New "
2754
- "Order\" submenu could not access Posts, Pages, Products or any other Post "
2755
- "Type listing. This occurred if \"use create_posts\" option enabled and user "
2756
- "lacks the create capability for Orders. "
2757
 
2758
- #. Found in changelog list item.
2759
- msgid ""
2760
- "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator "
2761
- "with WooCommerce active"
2762
- msgstr ""
2763
- "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator "
2764
- "with WooCommerce active"
2765
 
2766
- #. Found in changelog list item.
2767
- msgid ""
2768
- "Fixed : Work around WP quirk of completely blocking admin page access for a "
2769
- "post type if user lacks create capability for the post type and there are no "
2770
- "other accessible items on the menu."
2771
- msgstr ""
2772
- "Fixed : Work around WP quirk of completely blocking admin page access for a "
2773
- "post type if user lacks create capability for the post type and there are no "
2774
- "other accessible items on the menu."
2775
 
2776
- #. Found in changelog list item.
2777
- msgid ""
2778
- "Fixed : Negative role capabilities could not be directly unset (had to be "
2779
- "checked, saved, then unchecked)."
2780
- msgstr ""
2781
- "Fixed : Negative role capabilities could not be directly unset (had to be "
2782
- "checked, saved, then unchecked)."
2783
 
2784
- #. Found in changelog list item.
2785
- msgid ""
2786
- "Fixed : On some sites, capabilities added dynamically by other code were "
2787
- "forced into stored role definition (and could not be removed)."
2788
- msgstr ""
2789
- "Fixed : On some sites, capabilities added dynamically by other code were "
2790
- "forced into stored role definition (and could not be removed)."
2791
 
2792
- #. Found in changelog list item.
2793
- msgid "Fixed : User editing was improperly blocked in some cases"
2794
- msgstr "Fixed : User editing was improperly blocked in some cases"
2795
 
2796
- #. Found in changelog list item.
2797
- msgid "First public version."
2798
- msgstr "First public version."
 
2799
 
2800
- #. Found in changelog list item.
2801
- msgid "Updated Alkivia Framework."
2802
- msgstr "Updated Alkivia Framework."
2803
 
2804
- #. Found in changelog list item.
2805
- msgid "Some code improvements."
2806
- msgstr "Some code improvements."
2807
 
2808
- #. Found in changelog list item.
2809
- msgid "Role deletion added."
2810
- msgstr "Role deletion added."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2811
 
2812
- #. Found in changelog list item.
2813
- msgid "Added backup/restore tool."
2814
- msgstr "Added backup/restore tool."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2815
 
2816
- #. Found in changelog list item.
2817
- msgid "Updated Framework."
2818
- msgstr "Updated Framework."
2819
 
2820
- #. Found in changelog list item.
2821
- msgid "Corrected internal links."
2822
- msgstr "Corrected internal links."
2823
 
2824
- #. Found in changelog list item.
2825
- msgid "Coding Standards."
2826
- msgstr "Coding Standards."
2827
 
2828
- #. Found in changelog list item.
2829
- msgid "Added Russian translation."
2830
- msgstr "Added Russian translation."
 
2831
 
2832
- #. Found in changelog list item.
2833
- msgid "Added German and Belorussian translations."
2834
- msgstr "Added German and Belorussian translations."
2835
 
2836
- #. Found in changelog list item.
2837
- msgid "Added Italian translation."
2838
- msgstr "Added Italian translation."
2839
 
2840
- #. Found in changelog list item.
2841
- msgid "Tested up to WP 2.9.1."
2842
- msgstr "Tested up to WP 2.9.1."
2843
 
2844
- #. Found in changelog list item.
2845
- msgid "Changed license to GPL version 2."
2846
- msgstr "Changed license to GPL version 2."
2847
 
2848
- #. Found in changelog list item.
2849
- msgid "Migrated to the new Alkivia Framework."
2850
- msgstr "Migrated to the new Alkivia Framework."
2851
 
2852
- #. Found in changelog list item.
2853
- msgid "Solved an incompatibility with Chameleon theme."
2854
- msgstr "Solved an incompatibility with Chameleon theme."
2855
 
2856
- #. Found in changelog list item.
2857
- msgid "Cannot assign to users a role with more capabilities than current user."
2858
- msgstr ""
2859
- "Cannot assign to users a role with more capabilities than current user."
2860
 
2861
- #. Found in changelog list item.
2862
- msgid "Cannot edit users with more capabilities than current user."
2863
- msgstr "Cannot edit users with more capabilities than current user."
2864
 
2865
- #. Found in changelog list item.
2866
- msgid ""
2867
- "Fixed a bug where administrators could not create or manage other "
2868
- "administrators."
2869
- msgstr ""
2870
- "Fixed a bug where administrators could not create or manage other "
2871
- "administrators."
2872
 
2873
- #. Found in changelog list item.
2874
- msgid "Added Swedish translation."
2875
- msgstr "Added Swedish translation."
2876
 
2877
- #. Found in changelog list item.
2878
- msgid ""
2879
- "Reduce memory usage by loading framework and plugin code only when needed"
2880
- msgstr ""
2881
- "Reduce memory usage by loading framework and plugin code only when needed"
2882
 
2883
- #. Found in changelog list item.
2884
- msgid ""
2885
- "Show capabilities which Press Permit adds to the role by supplemental type-"
2886
- "specific role assignment"
2887
- msgstr ""
2888
- "Show capabilities which Press Permit adds to the role by supplemental type-"
2889
- "specific role assignment"
2890
 
2891
- #. Found in changelog list item.
2892
- msgid ""
2893
- "Press Permit integration: externally (dis)enable Post Types, Taxonomies for "
2894
- "PP filtering (which forces type-specific capability definitions)"
2895
- msgstr ""
2896
- "Press Permit integration: externally (dis)enable Post Types, Taxonomies for "
2897
- "PP filtering (which forces type-specific capability definitions)"
2898
 
2899
- #. Found in changelog list item.
2900
- msgid "Fixed : PHP Warnings for unchecked capabilities"
2901
- msgstr "Fixed : PHP Warnings for unchecked capabilities"
2902
 
2903
- #. Found in changelog list item.
2904
- msgid ""
2905
- "Don't allow a non-Administrator to add or remove a capability they don't have"
2906
- msgstr ""
2907
- "Don't allow a non-Administrator to add or remove a capability they don't have"
2908
 
2909
- #. Found in changelog list item.
2910
- msgid "Clarified sidebar captions"
2911
- msgstr "Clarified sidebar captions"
2912
 
2913
- #. Found in changelog list item.
2914
- msgid "Editing UI separates WP core capabilities and 3rd party capabilities"
2915
- msgstr "Editing UI separates WP core capabilities and 3rd party capabilities"
2916
 
2917
- #. Found in changelog list item.
2918
- msgid "Organized capabilities UI by post type and operation"
2919
- msgstr "Organized capabilities UI by post type and operation"
2920
 
2921
- #. Found in changelog list item.
2922
- msgid ""
2923
- "Press Permit integration: if role definitions are reset to WP defaults, also "
2924
- "repopulate PP capabilities (pp_manage_settings, etc.)"
2925
- msgstr ""
2926
- "Press Permit integration: if role definitions are reset to WP defaults, also "
2927
- "repopulate PP capabilities (pp_manage_settings, etc.)"
2928
 
2929
- #. Found in changelog list item.
2930
- msgid "https compatibility: use content_url(), plugins_url()"
2931
- msgstr "https compatibility: use content_url(), plugins_url()"
2932
 
2933
- #. Found in changelog list item.
2934
  msgid ""
2935
- "Press Permit integration: roles can be marked for supplemental assignment "
2936
- "only (and suppressed from WP role assignment dropdown, requires PP 1.0-"
2937
- "beta1.4)"
2938
  msgstr ""
2939
- "Press Permit integration: roles can be marked for supplemental assignment "
2940
- "only (and suppressed from WP role assignment dropdown, requires PP 1.0-"
2941
- "beta1.4)"
2942
-
2943
- #. Found in changelog list item.
2944
- msgid "Language: updated .pot file"
2945
- msgstr "Language: updated .pot file"
2946
 
2947
- #. Found in changelog list item.
2948
- msgid ""
2949
- "Press Permit integration: automatically store a backup copy of each role's "
2950
- "last saved capability set so they can be reinstated if necessary (currently "
2951
- "for bbPress)"
2952
- msgstr ""
2953
- "Press Permit integration: automatically store a backup copy of each role's "
2954
- "last saved capability set so they can be reinstated if necessary (currently "
2955
- "for bbPress)"
2956
 
2957
- #. Found in changelog list item.
2958
- msgid ""
2959
- "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts "
2960
- "even if it was defined to the be same as cap-&gt;edit_posts"
2961
- msgstr ""
2962
- "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts "
2963
- "even if it was defined to the be same as cap-&gt;edit_posts"
2964
 
2965
- #. Found in changelog list item.
2966
- msgid ""
2967
- "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
2968
- msgstr ""
2969
- "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
2970
 
2971
- #. Found in changelog list item.
2972
- msgid "Fixed : On translated sites, roles could not be edited"
2973
- msgstr "Fixed : On translated sites, roles could not be edited"
2974
 
2975
- #. Found in changelog list item.
2976
- msgid ""
2977
- "Press Permit integration: If capability is granted by the role's Permit "
2978
- "Group, highlight it as green with a descriptive caption title, but leave "
2979
- "checkbox enabled for display/editing of role defintion setting (previous "
2980
- "behavior caused capability to be stripped out of WP role definition under "
2981
- "some PP configurations)"
2982
- msgstr ""
2983
- "Press Permit integration: If capability is granted by the role's Permit "
2984
- "Group, highlight it as green with a descriptive caption title, but leave "
2985
- "checkbox enabled for display/editing of role defintion setting (previous "
2986
- "behavior caused capability to be stripped out of WP role definition under "
2987
- "some PP configurations)"
2988
 
2989
- #. Found in changelog list item.
2990
- msgid ""
2991
- "Fixed : Capability labels in \"Other WordPress\" section did not toggle "
2992
- "checkbox selection"
2993
- msgstr ""
2994
- "Fixed : Capability labels in \"Other WordPress\" section did not toggle "
2995
- "checkbox selection"
2996
 
2997
- #. Found in changelog list item.
2998
- msgid "Fixed : Capabilities were needlessly re-saved on role load"
2999
- msgstr "Fixed : Capabilities were needlessly re-saved on role load"
3000
 
3001
- #. Found in changelog list item.
3002
- msgid ""
3003
- "Fixed : Role update and copy failed if currently stored capability array is "
3004
- "corrupted"
3005
- msgstr ""
3006
- "Fixed : Role update and copy failed if currently stored capability array is "
3007
- "corrupted"
3008
 
3009
- #. Found in changelog list item.
3010
- msgid ""
3011
- "Compat : Press Permit + bbPress - customized role capabilities were not "
3012
- "properly maintained on bbPress activation / deactivation, in some scenarios"
3013
- msgstr ""
3014
- "Compat : Press Permit + bbPress - customized role capabilities were not "
3015
- "properly maintained on bbPress activation / deactivation, in some scenarios"
3016
 
3017
- #. Found in changelog list item.
3018
- msgid ""
3019
- "Compat : bbPress 2.2 (supports customization of dynamic forum role "
3020
- "capabilities)"
3021
- msgstr ""
3022
- "Compat : bbPress 2.2 (supports customization of dynamic forum role "
3023
- "capabilities)"
3024
 
3025
- #. Found in changelog list item.
3026
- msgid ""
3027
- "Compat : Press Permit - flagging of roles as \"supplemental assignment only"
3028
- "\" was not saved"
3029
- msgstr ""
3030
- "Compat : Press Permit - flagging of roles as \"supplemental assignment only"
3031
- "\" was not saved"
3032
 
3033
- #. Found in changelog list item.
3034
- msgid ""
3035
- "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used "
3036
- "on a bbPress role, caused creation of an invalid role"
3037
- msgstr ""
3038
- "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used "
3039
- "on a bbPress role, caused creation of an invalid role"
3040
 
3041
- #. Found in changelog list item.
3042
- msgid ""
3043
- "Compat : Press Permit - \"supplemental only\" option was always enabled for "
3044
- "newly created and copied roles, regardless of checkbox setting near Create/"
3045
- "Copy button"
3046
- msgstr ""
3047
- "Compat : Press Permit - \"supplemental only\" option was always enabled for "
3048
- "newly created and copied roles, regardless of checkbox setting near Create/"
3049
- "Copy button"
3050
 
3051
- #. Found in changelog list item.
3052
- msgid ""
3053
- "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" "
3054
- "textbox caused the checkbox to be available but not selected"
3055
- msgstr ""
3056
- "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" "
3057
- "textbox caused the checkbox to be available but not selected"
3058
 
3059
- #. Found in changelog list item.
3060
- msgid ""
3061
- "Compat : bbPress + Press Permit - Modified bbPress role capabilities were "
3062
- "not redisplayed following save, required reload"
3063
- msgstr ""
3064
- "Compat : bbPress + Press Permit - Modified bbPress role capabilities were "
3065
- "not redisplayed following save, required reload"
3066
 
3067
- #. Found in changelog list item.
3068
- msgid ""
3069
- "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines "
3070
- "create_posts capabilities (requires Press Permit)"
3071
- msgstr ""
3072
- "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines "
3073
- "create_posts capabilities (requires Press Permit)"
3074
 
3075
- #. Found in changelog list item.
3076
- msgid ""
3077
- "Feature : If create_posts capabilities are defined, organize checkboxes into "
3078
- "a column alongside edit_posts"
3079
- msgstr ""
3080
- "Feature : If create_posts capabilities are defined, organize checkboxes into "
3081
- "a column alongside edit_posts"
3082
 
3083
- #. Found in changelog list item.
3084
- msgid ""
3085
- "Fixed : Role capabilities were not updated / refreshed properly on multisite "
3086
- "installations"
3087
- msgstr ""
3088
- "Fixed : Role capabilities were not updated / refreshed properly on multisite "
3089
- "installations"
3090
 
3091
- #. Found in changelog list item.
3092
- msgid ""
3093
- "Change : Reduced download size by moving screenshots to assets folder of "
3094
- "project folder"
3095
- msgstr ""
3096
- "Change : Reduced download size by moving screenshots to assets folder of "
3097
- "project folder"
3098
 
3099
- #. Found in changelog list item.
3100
- msgid "Maint : Stop using $GLOBALS superglobal"
3101
- msgstr "Maint : Stop using $GLOBALS superglobal"
3102
 
3103
- #. Found in changelog list item.
3104
- msgid "Compat : Press Permit - green background around capabilities which "
3105
- msgstr "Compat : Press Permit - green background around capabilities which "
3106
 
3107
- #. Found in changelog list item.
3108
- msgid ""
3109
- "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
3110
- msgstr ""
3111
- "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
3112
 
3113
- #. Found in changelog list item.
3114
- msgid ""
3115
- "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" "
3116
- "settings update"
3117
- msgstr ""
3118
- "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" "
3119
- "settings update"
3120
 
3121
- #. Found in changelog list item.
3122
- msgid "Compat : Press Permit - PHP Warning on role save"
3123
- msgstr "Compat : Press Permit - PHP Warning on role save"
3124
 
3125
- #. Found in changelog list item.
3126
- msgid "Fixed : Failure to save capability changes, on some versions of PHP"
3127
- msgstr "Fixed : Failure to save capability changes, on some versions of PHP"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3128
 
3129
- #. Found in changelog list item.
3130
- msgid ""
3131
- "Perf : Eliminated unused framework code (reduced typical wp-admin memory "
3132
- "usage by 0.6 MB)"
3133
- msgstr ""
3134
- "Perf : Eliminated unused framework code (reduced typical wp-admin memory "
3135
- "usage by 0.6 MB)"
3136
 
3137
- #. Found in changelog list item.
3138
- msgid ""
3139
- "Change : Press Permit promotional message includes link to display further "
3140
- "info"
3141
- msgstr ""
3142
- "Change : Press Permit promotional message includes link to display further "
3143
- "info"
3144
 
3145
- #. Found in changelog list item.
3146
- msgid ""
3147
- "Compat : Press Permit - if a role is marked as hidden, also default it for "
3148
- "use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated "
3149
- "and Advanced Settings enabled)"
3150
- msgstr ""
3151
- "Compat : Press Permit - if a role is marked as hidden, also default it for "
3152
- "use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated "
3153
- "and Advanced Settings enabled)"
3154
 
3155
- #. Found in changelog list item.
3156
- msgid "Fixed : jQuery notices for deprecated methods on Edit Role screen"
3157
- msgstr "Fixed : jQuery notices for deprecated methods on Edit Role screen"
3158
 
3159
- #. Found in changelog list item.
3160
- msgid ""
3161
- "Fixed : Term deletion capability was not included in taxonomies grid even if "
3162
- "defined"
3163
- msgstr ""
3164
- "Fixed : Term deletion capability was not included in taxonomies grid even if "
3165
- "defined"
3166
 
3167
- #. Found in changelog list item.
3168
- msgid "Change : Clarified English captions on Backup Tool screen"
3169
- msgstr "Change : Clarified English captions on Backup Tool screen"
3170
 
3171
- #. Found in changelog list item.
3172
- msgid ""
3173
- "Fixed : Role reset to WP defaults did not work, caused a PHP error / white "
3174
- "screen"
3175
- msgstr ""
3176
- "Fixed : Role reset to WP defaults did not work, caused a PHP error / white "
3177
- "screen"
3178
 
3179
- #. Found in changelog list item.
3180
- msgid ""
3181
- "Feature : Backup / Restore tool requires \"restore_roles\" capability or "
3182
- "super admin status"
3183
- msgstr ""
3184
- "Feature : Backup / Restore tool requires \"restore_roles\" capability or "
3185
- "super admin status"
3186
 
3187
- #. Found in changelog list item.
3188
- msgid ""
3189
- "Feature : Multisite - Copy a role definition to new (future) sites on a "
3190
- "network"
3191
- msgstr ""
3192
- "Feature : Multisite - Copy a role definition to new (future) sites on a "
3193
- "network"
3194
 
3195
- #. Found in changelog list item.
3196
- msgid ""
3197
- "Feature : Multisite - Copy a role definition to all current sites on a "
3198
- "network"
3199
- msgstr ""
3200
- "Feature : Multisite - Copy a role definition to all current sites on a "
3201
- "network"
3202
 
3203
- #. Found in changelog list item.
3204
- msgid ""
3205
- "Feature : Support negative capabilities (storage to wp_roles array with "
3206
- "false value)"
3207
- msgstr ""
3208
- "Feature : Support negative capabilities (storage to wp_roles array with "
3209
- "false value)"
3210
 
3211
- #. Found in changelog list item.
3212
- msgid ""
3213
- "Fixed : Non-administrators with user editing capabilities could give new "
3214
- "users a role with a higher level than their own (including Administrator)"
3215
- msgstr ""
3216
- "Fixed : Non-administrators with user editing capabilities could give new "
3217
- "users a role with a higher level than their own (including Administrator)"
3218
 
3219
- #. Found in changelog list item.
3220
- msgid ""
3221
- "Fixed : Network Super Administrators without an Administrator role on a "
3222
- "particular site could not assign an Administrator role to other users of "
3223
- "that site"
3224
- msgstr ""
3225
- "Fixed : Network Super Administrators without an Administrator role on a "
3226
- "particular site could not assign an Administrator role to other users of "
3227
- "that site"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3228
 
3229
- #. Found in changelog list item.
3230
- msgid "Lang : Updated .pot and .po files"
3231
- msgstr "Lang : Updated .pot and .po files"
3232
 
3233
- #. Found in changelog list item.
3234
- msgid "Lang : Fixed erroneous text_domain argument for numerous strings"
3235
- msgstr "Lang : Fixed erroneous text_domain argument for numerous strings"
3236
 
3237
- #. Found in changelog list item.
3238
- msgid "Perf : Don't output wp-admin CSS on non-CME screens"
3239
- msgstr "Perf : Don't output wp-admin CSS on non-CME screens"
3240
 
3241
- #. Found in changelog list item.
3242
- msgid ""
3243
- "Fixed : CSS caused formatting issues around wp-admin Update button on some "
3244
- "installations"
3245
- msgstr ""
3246
- "Fixed : CSS caused formatting issues around wp-admin Update button on some "
3247
- "installations"
3248
 
3249
- #. Found in changelog list item.
3250
- msgid ""
3251
- "Change : If user_level of Administrator role was cleared, non-Administrators "
3252
- "with user editing capabilities could create/edit/delete Administrators. "
3253
- "Administrator role is now implicitly treated as level 10."
3254
- msgstr ""
3255
- "Change : If user_level of Administrator role was cleared, non-Administrators "
3256
- "with user editing capabilities could create/edit/delete Administrators. "
3257
- "Administrator role is now implicitly treated as level 10."
3258
 
3259
- #. Found in changelog list item.
3260
- msgid ""
3261
- "Compat : Support third party display of available capabilities via "
3262
- "capsman_get_capabilities or members_get_capabilities filter"
3263
- msgstr ""
3264
- "Compat : Support third party display of available capabilities via "
3265
- "capsman_get_capabilities or members_get_capabilities filter"
3266
 
3267
- #. Found in changelog list item.
3268
- msgid ""
3269
- "Compat : Press Permit Core - Permission Group refresh was not triggered if "
3270
- "Press Permit Core is inactive when CME deletes a role definition"
3271
- msgstr ""
3272
- "Compat : Press Permit Core - Permission Group refresh was not triggered if "
3273
- "Press Permit Core is inactive when CME deletes a role definition"
3274
 
3275
- #. Found in changelog list item.
3276
- msgid ""
3277
- "Fixed : Deletion of a third party plugin role could cause users to be "
3278
- "demoted to Subscriber inappropriately"
3279
- msgstr ""
3280
- "Fixed : Deletion of a third party plugin role could cause users to be "
3281
- "demoted to Subscriber inappropriately"
3282
 
3283
- #. Found in changelog list item.
3284
- msgid ""
3285
- "Fixed : On single-site installations, non-Administrators with delete_users "
3286
- "capability could give new users an Administrator role (since 1.5.2) "
3287
- msgstr ""
3288
- "Fixed : On single-site installations, non-Administrators with delete_users "
3289
- "capability could give new users an Administrator role (since 1.5.2) "
3290
 
3291
- #. Found in changelog list item.
3292
- msgid "Lang : Changed text domain for language pack conformance"
3293
- msgstr "Lang : Changed text domain for language pack conformance"
3294
 
3295
- #. Found in changelog list item.
3296
- msgid ""
3297
- "Fixed : Non-administrators could not assign their role to other users "
3298
- "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3299
- msgstr ""
3300
- "Fixed : Non-administrators could not assign their role to other users "
3301
- "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3302
 
3303
- #. Found in changelog list item.
3304
- msgid ""
3305
- "Fixed : Non-administrators could not edit other users with their role "
3306
- "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3307
- msgstr ""
3308
- "Fixed : Non-administrators could not edit other users with their role "
3309
- "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3310
 
3311
- #. Found in changelog list item.
3312
- msgid ""
3313
- "Fixed : Non-administrators' user editing capabilities were blocked if Press "
3314
- "Permit Core was also active"
3315
- msgstr ""
3316
- "Fixed : Non-administrators' user editing capabilities were blocked if Press "
3317
- "Permit Core was also active"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable (latest release) in French (France)
2
+ # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable (latest release)\n"
 
6
  "POT-Creation-Date: \n"
7
+ "PO-Revision-Date: 2022-02-28 12:10+0100\n"
8
  "Last-Translator: \n"
9
+ "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
10
  "Language: fr\n"
11
  "MIME-Version: 1.0\n"
12
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Content-Transfer-Encoding: 8bit\n"
14
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
15
+ "X-Generator: Poedit 3.0.1\n"
16
 
17
+ #: includes/roles/class/class-pp-roles-actions.php:248
18
+ msgid "The new role %s was created successfully."
19
+ msgstr "Le nouveau rôle %s a été créé avec succès."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
+ #: includes/roles/class/class-pp-roles-actions.php:204
22
+ msgid "The role \"%s\" already exists. Please choose a different name."
23
+ msgstr "Le rôle « %s » existe déjà. Veuillez choisir un autre nom."
24
+
25
+ #: includes/roles/class/class-pp-roles-actions.php:192
26
+ msgid "Invalid role name entry: %s"
27
+ msgstr "Entrée de nom de rôle invalide : %s"
28
+
29
+ #: includes/manager.php:508 includes/manager.php:530
30
+ msgid "You do not have permission to manage admin features."
31
+ msgstr "Vous n’avez pas le droit de gérer les fonctionnalités d’administration."
32
+
33
+ #: includes/features/restrict-admin-features.php:133
34
+ msgid "Welcome panel"
35
+ msgstr "Panneau d’accueil"
36
+
37
+ #: includes/features/restrict-admin-features.php:84
38
+ msgid "Version %s"
39
+ msgstr "Version %s"
40
+
41
+ #: includes/features/restrict-admin-features.php:83
42
+ msgid "Thank you for creating with WordPress"
43
+ msgstr "Merci de faire de WordPress votre outil de création"
44
+
45
+ #: includes/features/restrict-admin-features.php:69
46
+ msgid "Yoast SEO"
47
+ msgstr "Yoast SEO"
48
+
49
+ #: includes/features/restrict-admin-features.php:68
50
+ msgid "User Display Name"
51
+ msgstr "Nom affiché de l’utilisateur/utilisatrice"
52
+
53
+ #: includes/features/restrict-admin-features.php:66
54
+ #: includes/features/restrict-admin-features.php:67
55
+ msgid "New"
56
+ msgstr "Ajouter nouveau"
57
+
58
+ #: includes/features/restrict-admin-features.php:65
59
+ msgid "User actions"
60
+ msgstr "Actions de l’utilisateur ou utilisatrice"
61
+
62
+ #: includes/features/restrict-admin-features.php:64
63
+ msgid "Right bar"
64
+ msgstr "Barre de droite"
65
+
66
+ #: includes/features/restrict-admin-features.php:63
67
+ msgid "Comments"
68
+ msgstr "Commentaires"
69
+
70
+ #: includes/features/restrict-admin-features.php:62
71
+ msgid "Updates"
72
+ msgstr "Mises à jour"
73
+
74
+ #: includes/features/restrict-admin-features.php:61
75
+ msgid "WordPress External Links"
76
+ msgstr "Liens externes de WordPress"
77
+
78
+ #: includes/features/restrict-admin-features.php:60
79
+ msgid "WordPress Logo"
80
+ msgstr "Logo de WordPress"
81
+
82
+ #: includes/features/restrict-admin-features.php:59
83
+ msgid "Mobile Menu Toggle"
84
+ msgstr "Ouvrir/fermer le menu mobile"
85
+
86
+ #: includes/features/restrict-admin-features.php:22
87
+ msgid "Dashboard widgets"
88
+ msgstr "Widgets de tableau de bord"
89
+
90
+ #: includes/features/restrict-admin-features.php:19
91
+ msgid "Admin Toolbar"
92
+ msgstr "Barre d’outils de l’administration"
93
+
94
+ #: includes/features/restrict-admin-features.php:16
95
+ msgid "Header and Footer"
96
+ msgstr "En-tête et pied de page"
97
+
98
+ #: includes/features/admin-features.php:53
99
+ msgid "Note: You are only restricting access to admin features screens. Some plugins may also add features to other areas of WordPress."
100
+ msgstr "Note : Vous ne limitez l’accès qu’aux écrans des fonctionnalités d’administration. Certaines extensions peuvent également ajouter des fonctionnalités à d’autres zones de WordPress."
101
+
102
+ #: includes/features/admin-features.php:37
103
+ msgid "Admin Feature Restrictions"
104
+ msgstr "Restrictions des fonctionnalités administratives"
105
+
106
+ #: includes/backup.php:320 includes/features/admin-features.php:236
107
+ #: includes/features/editor-features.php:143
108
+ msgid "Click here to install PublishPress Permissions"
109
+ msgstr "Cliquez ici pour installer PublishPress Permissions"
110
+
111
+ #: includes/backup.php:317 includes/features/admin-features.php:233
112
+ #: includes/features/editor-features.php:140
113
+ msgid "PublishPress Permissions is 100% free to install."
114
+ msgstr "PublishPress Permissions est 100% gratuit à installer."
115
+
116
+ #: includes/backup.php:316 includes/features/admin-features.php:232
117
+ #: includes/features/editor-features.php:139
118
+ msgid "Allow specific user roles or users to manage each post."
119
+ msgstr "Autorisez des rôles d’utilisateur ou utilisatrices et des utilisateurs ou utilisatrices spécifiques à gérer chaque publication."
120
+
121
+ #: includes/backup.php:315 includes/features/admin-features.php:231
122
+ #: includes/features/editor-features.php:138
123
+ msgid "Choose who can read and edit each post."
124
+ msgstr "Choisissez qui peut lire et modifier chaque publication."
125
+
126
+ #: includes/backup.php:313 includes/features/admin-features.php:229
127
+ #: includes/features/editor-features.php:136
128
+ msgid "Control permissions for individual posts and pages"
129
+ msgstr "Contrôlez les autorisations pour les publications et les pages individuelles"
130
+
131
+ #: includes/backup.php:312 includes/features/admin-features.php:228
132
+ #: includes/features/editor-features.php:135
133
+ msgid "Recommendations for you"
134
+ msgstr "Des recommandations pour vous"
135
+
136
+ #: includes/admin.php:848
137
+ msgid "Plugin Capabilities &ndash; %s"
138
+ msgstr "Plugin Capabilities &ndash; %s"
139
+
140
+ #: includes/admin.php:729 includes/admin.php:854 includes/admin.php:1048
141
+ msgid "No results found. Please try again with a different word."
142
+ msgstr "Aucun résultat trouvé. Veuillez réessayer avec un autre mot."
143
+
144
+ #: includes/admin.php:726 includes/admin.php:851 includes/admin.php:1045
145
+ msgid "Filter by capability"
146
+ msgstr "Filtrer par permission"
147
+
148
+ #: includes/admin.php:723
149
+ msgid "WordPress Core Capabilities"
150
+ msgstr "Permissions de base de WordPress"
151
+
152
+ #: includes/admin.php:539 includes/admin.php:727 includes/admin.php:852
153
+ #: includes/admin.php:1046
154
+ msgid "Clear"
155
+ msgstr "Effacer"
156
+
157
+ #: includes/admin.php:536
158
+ msgid "Filter by post type"
159
+ msgstr "Filtrer par type de publication"
160
+
161
+ #: includes/admin.php:536
162
+ msgid "Filter by taxonomy"
163
+ msgstr "Filtrer par taxonomie"
164
+
165
+ #: includes/admin.php:530
166
+ msgid "Post %s Capabilities"
167
+ msgstr "Permissions de la publication %s"
168
+
169
+ #: includes/admin.php:530
170
+ msgid "Term %s Capabilities"
171
+ msgstr "Permissions de le terme %s"
172
+
173
+ #: includes/admin.php:486
174
+ msgid "Additional"
175
+ msgstr "Additionnel"
176
+
177
+ #: includes/admin.php:307
178
+ msgid "WordPress Core"
179
+ msgstr "WordPress Core"
180
+
181
+ #: includes/admin.php:220
182
+ msgid "Deletion"
183
+ msgstr "Supression"
184
+
185
+ #: includes/admin.php:219
186
+ msgid "Editing"
187
+ msgstr "Édition"
188
+
189
+ #: includes/admin-load.php:306 includes/manager.php:365
190
+ msgid "Admin Features"
191
+ msgstr "Fonctionnalités administratives"
192
+
193
+ #: includes-core/admin-features-promo.php:74
194
+ msgid "You can block pages by URL or hide Admin elements by entering a CSS class or ID. This feature is available in PublishPress Capabilities Pro."
195
+ msgstr "Vous pouvez bloquer des pages par URL ou masquer des éléments de l’administration en saisissant une classe ou un ID CSS. Cette fonctionnalité est disponible dans PublishPress Capabilities Pro."
196
+
197
+ #: includes/manager.php:199
198
+ msgid "Add or clear custom item entry before saving changes."
199
+ msgstr "Ajoutez ou effacez une entrée d’élément personnalisé avant d’enregistrer les modifications."
200
+
201
+ #: includes/manager.php:198
202
+ msgid "Are you sure you want to delete this item ?"
203
+ msgstr "Confirmez-vous vouloir supprimer cet élément ?"
204
+
205
+ #: includes-core/editor-features-promo.php:135
206
+ msgid "Page Attributes: Order"
207
+ msgstr "Attributs de la page : Tri"
208
+
209
+ #: includes-core/editor-features-promo.php:121
210
+ msgid "Permalink: Descriptive Caption"
211
+ msgstr "Permalien : Légende descriptive"
212
+
213
+ #: includes-core/editor-features-promo.php:107
214
+ msgid "Custom item one"
215
+ msgstr "Élément personnalisé un"
216
+
217
+ #: includes-core/editor-features-promo.php:101
218
+ msgid "Custom Items"
219
+ msgstr "Éléments personnalisés"
220
+
221
+ #: includes-core/editor-features-promo.php:86
222
+ msgid "You can hide plugin metaboxes. You can also hide specific items by entering their CSS class or ID. This feature is available in PublishPress Capabilities Pro."
223
+ msgstr "Vous pouvez masquer les boîtes méta des extensions. Vous pouvez également masquer des éléments spécifiques en saisissant leur classe CSS ou leur ID. Cette fonctionnalité est disponible dans PublishPress Capabilities Pro."
224
+
225
+ #: includes-core/editor-features-promo.php:71
226
+ msgid "TaxoPress - Settings"
227
+ msgstr "TaxoPress - Réglages"
228
+
229
+ #: includes-core/editor-features-promo.php:58
230
+ msgid "Notifications"
231
+ msgstr "Notifications"
232
+
233
+ #: includes-core/editor-features-promo.php:45
234
+ msgid "Editorial Comments"
235
+ msgstr "Commentaires éditoriaux"
236
+
237
+ #: includes-core/editor-features-promo.php:32
238
+ msgid "Checklist"
239
+ msgstr "Liste de contrôle"
240
+
241
+ #: includes-core/editor-features-promo.php:24
242
+ msgid "Metaboxes"
243
+ msgstr "Boîtes méta"
244
+
245
+ #: includes/manager.php:492 includes/manager.php:546
246
+ msgid "Settings updated."
247
+ msgstr "Réglages mis à jour."
248
+
249
+ #: includes/manager.php:448 includes/manager.php:470
250
+ msgid "You do not have permission to manage editor features."
251
+ msgstr "Vous n’êtes pas autorisé à gérer les fonctionnalités de l’éditeur."
252
+
253
+ #: includes/admin-load.php:305 includes/manager.php:363
254
+ msgid "Editor Features"
255
+ msgstr "Fonctionnalités de l’éditeur"
256
 
257
+ #: includes/features/restrict-editor-features.php:345
258
+ msgid "Text settings"
259
+ msgstr "Réglages du texte"
 
 
 
 
 
 
 
 
 
 
 
 
260
 
261
+ #: includes/features/restrict-editor-features.php:344
262
+ msgid "Color settings"
263
+ msgstr "Réglages de couleur"
 
 
 
 
 
 
264
 
265
+ #: includes/features/restrict-editor-features.php:343
266
+ msgid "Typography"
267
+ msgstr "Typographie"
 
 
 
 
268
 
269
+ #: includes/features/restrict-editor-features.php:342
270
+ msgid "Paragraph"
271
+ msgstr "Paragraphe"
 
 
 
 
272
 
273
+ #: includes/features/restrict-editor-features.php:340
274
+ #: includes/features/restrict-editor-features.php:341
275
+ msgid "Block Panel"
276
+ msgstr "Panneau de blocs"
277
+
278
+ #: includes/features/restrict-editor-features.php:337
279
+ msgid "Post Attributes"
280
+ msgstr "Attributs d’articles"
281
+
282
+ #: includes/features/restrict-editor-features.php:335
283
+ msgid "Excerpt"
284
+ msgstr "Extrait"
285
+
286
+ #: includes/features/restrict-editor-features.php:334
287
+ msgid "Featured image"
288
+ msgstr "Image mise en avant"
289
+
290
+ #: includes/features/restrict-editor-features.php:317
291
+ msgid "Status & visibility"
292
+ msgstr "État et visibilité"
293
+
294
+ #: includes/features/restrict-editor-features.php:316
295
+ msgid "Document Panel"
296
+ msgstr "Panneau de publication"
297
+
298
+ #: includes/features/restrict-editor-features.php:313
299
+ msgid "Content"
300
+ msgstr "Contenu"
301
+
302
+ #: includes/features/restrict-editor-features.php:312
303
+ msgid "Edit title"
304
+ msgstr "Modifier le titre"
305
+
306
+ #: includes/features/restrict-editor-features.php:311
307
+ msgid "Body"
308
+ msgstr "Corps"
309
+
310
+ #: includes/features/restrict-editor-features.php:308
311
+ msgid "Options"
312
+ msgstr "Options"
313
+
314
+ #: includes/features/restrict-editor-features.php:306
315
+ msgid "Publish / Update"
316
+ msgstr "Publier/mettre à jour"
317
+
318
+ #: includes/features/restrict-editor-features.php:304
319
+ msgid "Switch to draft"
320
+ msgstr "Passer en brouillon"
321
+
322
+ #: includes/features/restrict-editor-features.php:302
323
+ msgid "Top Bar - Right"
324
+ msgstr "Barre supérieure - Droite"
325
+
326
+ #: includes/features/restrict-editor-features.php:299
327
+ msgid "Outline"
328
+ msgstr "Contour"
329
+
330
+ #: includes/features/restrict-editor-features.php:298
331
+ msgid "Details"
332
+ msgstr "Détails"
333
+
334
+ #: includes/features/restrict-editor-features.php:297
335
+ msgid "Redo"
336
+ msgstr "Rétablir"
337
+
338
+ #: includes/features/restrict-editor-features.php:296
339
+ msgid "Undo"
340
+ msgstr "Annuler"
341
+
342
+ #: includes/features/restrict-editor-features.php:295
343
+ msgid "Modes"
344
+ msgstr "Modes"
345
+
346
+ #: includes/features/restrict-editor-features.php:294
347
+ msgid "Add block"
348
+ msgstr "Ajouter un bloc"
349
+
350
+ #: includes/features/restrict-editor-features.php:293
351
+ msgid "Top Bar - Left"
352
+ msgstr "Barre supérieure - Gauche"
353
+
354
+ #: includes/features/restrict-editor-features.php:93
355
+ #: includes/features/restrict-editor-features.php:336
356
+ msgid "Discussion"
357
+ msgstr "Discussion"
358
+
359
+ #: includes/features/restrict-editor-features.php:92
360
+ msgid "Post Slug"
361
+ msgstr "Slug de publication"
362
+
363
+ #: includes/features/restrict-editor-features.php:91
364
+ msgid "Featured Image"
365
+ msgstr "Image mise en avant"
366
+
367
+ #: includes/features/restrict-editor-features.php:90
368
+ msgid "Other Boxes"
369
+ msgstr "Autres cases"
370
+
371
+ #: includes/features/restrict-editor-features.php:87
372
+ msgid "Order"
373
+ msgstr "Tri"
374
+
375
+ #: includes/features/restrict-editor-features.php:86
376
+ msgid "Page Template"
377
+ msgstr "Modèle de page"
378
+
379
+ #: includes/features/restrict-editor-features.php:85
380
+ msgid "Parent"
381
+ msgstr "Parent"
382
+
383
+ #: includes/features/restrict-editor-features.php:84
384
+ msgid "Page Attributes"
385
+ msgstr "Attributs de la page"
386
+
387
+ #: includes/features/restrict-editor-features.php:83
388
+ msgid "Page Boxes"
389
+ msgstr "Cadres de page"
390
+
391
+ #: includes/features/restrict-editor-features.php:71
392
+ #: includes/features/restrict-editor-features.php:320
393
+ msgid "Tags"
394
+ msgstr "Étiquettes"
395
+
396
+ #: includes/features/restrict-editor-features.php:70
397
+ msgid "Add New Category"
398
+ msgstr "Ajouter une nouvelle catégorie"
399
+
400
+ #: includes/features/restrict-editor-features.php:69
401
+ #: includes/features/restrict-editor-features.php:319
402
+ msgid "Categories"
403
+ msgstr "Catégories"
404
+
405
+ #: includes/features/restrict-editor-features.php:68
406
+ msgid "Taxonomy Boxes"
407
+ msgstr "Boîtes de taxonomie"
408
+
409
+ #: includes/features/restrict-editor-features.php:65
410
+ msgid "Publish"
411
+ msgstr "Publier"
412
+
413
+ #: includes/features/restrict-editor-features.php:64
414
+ msgid "Date"
415
+ msgstr "Date"
416
+
417
+ #: includes/features/restrict-editor-features.php:63
418
+ msgid "Publish Schedule"
419
+ msgstr "Calendrier de publication"
420
+
421
+ #: includes/features/restrict-editor-features.php:62
422
+ msgid "Publish Actions"
423
+ msgstr "Actions de publication"
424
+
425
+ #: includes/features/restrict-editor-features.php:61
426
+ msgid "Password Protect This Post"
427
+ msgstr "Mot de passe pour protéger cette publication"
428
+
429
+ #: includes/features/restrict-editor-features.php:60
430
+ msgid "Publish Visibility"
431
+ msgstr "Visibilité de la publication"
432
+
433
+ #: includes/features/restrict-editor-features.php:59
434
+ msgid "Publish Status "
435
+ msgstr "État de la publication "
436
+
437
+ #: includes/features/restrict-editor-features.php:58
438
+ #: includes/features/restrict-editor-features.php:305
439
+ msgid "Preview"
440
+ msgstr "Aperçu"
441
+
442
+ #: includes/features/restrict-editor-features.php:57
443
+ #: includes/features/restrict-editor-features.php:303
444
+ msgid "Save Draft"
445
+ msgstr "Enregistrer le brouillon"
446
+
447
+ #: includes/features/restrict-editor-features.php:55
448
+ #: includes/features/restrict-editor-features.php:56
449
+ msgid "Publish Box"
450
+ msgstr "Boîte de publication"
451
+
452
+ #: includes/features/restrict-editor-features.php:52
453
+ msgid "Word count"
454
+ msgstr "Nombre de mots"
455
+
456
+ #: includes/features/restrict-editor-features.php:51
457
+ msgid "HTML Editor Button"
458
+ msgstr "Bouton de l’éditeur HTML"
459
+
460
+ #: includes/features/restrict-editor-features.php:50
461
+ msgid "Media Buttons (all)"
462
+ msgstr "Boutons multimédia (tous)"
463
+
464
+ #: includes/features/restrict-editor-features.php:49
465
+ #: includes/features/restrict-editor-features.php:318
466
+ msgid "Permalink"
467
+ msgstr "Permalien"
468
+
469
+ #: includes/features/restrict-editor-features.php:47
470
+ msgid "Title"
471
+ msgstr "Titre"
472
+
473
+ #: includes/features/restrict-editor-features.php:45
474
+ #: includes/features/restrict-editor-features.php:48
475
+ msgid "Editor"
476
+ msgstr "Éditeur"
477
+
478
+ #: includes/features/restrict-admin-features.php:81
479
+ #: includes/features/restrict-editor-features.php:42
480
+ msgid "Screen Options"
481
+ msgstr "Options de l’écran"
482
+
483
+ #: includes/features/restrict-admin-features.php:82
484
+ #: includes/features/restrict-editor-features.php:41
485
+ msgid "Help"
486
+ msgstr "Aide"
487
 
488
+ #: includes/features/restrict-editor-features.php:40
489
+ msgid "Top Tabs"
490
+ msgstr "Onglets supérieurs"
 
 
 
 
 
 
491
 
492
+ #: includes/features/editor-features.php:95
493
+ msgid "Classic"
494
+ msgstr "Classique"
 
 
 
 
495
 
496
+ #: includes/features/editor-features.php:92
497
+ msgid "Gutenberg"
498
+ msgstr "Gutenberg"
499
 
500
+ #: includes/features/editor-features.php:48
501
+ msgid "Select editor features to remove. Note that this screen cannot be used to grant additional features to any role."
502
+ msgstr "Sélectionnez les fonctions d’éditeur à supprimer. Notez que cet écran ne peut pas être utilisé pour accorder des fonctionnalités supplémentaires à un rôle."
 
 
 
 
503
 
504
+ #: includes/features/editor-features.php:32
505
+ msgid "Editor Feature Restriction"
506
+ msgstr "Restriction des fonctionnalités de l’éditeur"
 
 
 
 
507
 
508
+ #: includes/features/editor-features-gutenberg.php:29
509
+ msgid "Gutenberg Screen"
510
+ msgstr "Écran Gutenberg"
511
 
512
+ #: includes/features/editor-features-classic.php:35
513
+ #: includes/features/editor-features-gutenberg.php:35
514
+ msgid "Toggle all"
515
+ msgstr "Tout masquer/afficher"
516
 
517
+ #: includes/features/editor-features-classic.php:34
518
+ #: includes/features/editor-features-gutenberg.php:34
519
+ msgid "%s Restrict"
520
+ msgstr "Restriction %s"
 
521
 
522
+ #: includes/features/editor-features-classic.php:29
523
+ msgid "Classic Editor Screen"
524
+ msgstr "Écran éditeur classique"
 
 
 
 
525
 
526
+ #: includes/admin.php:1387
527
+ msgid "sync options to all sites now"
528
+ msgstr "synchroniser les options sur tous les sites maintenant"
 
 
 
 
529
 
530
+ #: includes/admin.php:1387
531
+ msgid "Copy option settings to all sites now"
532
+ msgstr "Copiez les réglages des options sur tous les sites maintenant"
533
 
534
+ #: includes/admin.php:1352
535
+ msgid "Rename"
536
+ msgstr "Renommer"
537
 
538
+ #: includes/admin.php:1349
539
+ msgid "New Role Name"
540
+ msgstr "Nom du nouveau rôle"
541
 
542
+ #: includes/admin.php:1347
543
+ msgid "Rename Role"
544
+ msgstr "Renommer le rôle"
 
 
545
 
546
+ #: includes/admin.php:957
547
+ msgid "The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above."
548
+ msgstr "Les entrées suivantes n’ont aucun effet. Veuillez attribuer les permisions souhaitées dans la grille lire/modifier/supprimer ci-dessus."
 
 
 
 
549
 
550
+ #: includes/handler.php:90 includes/handler.php:118 includes/handler.php:420
551
+ #: includes/manager.php:735
552
+ msgid "The selected role is not editable."
553
+ msgstr "Le rôle sélectionné n’est pas modifiable."
554
 
555
+ #: includes/manager.php:425
556
+ msgid "You do not have permission to manage roles."
557
+ msgstr "Vous n’êtes pas autorisé à gérer les rôles."
558
 
559
+ #: includes/backup.php:267
560
+ msgid "No changes"
561
+ msgstr "Aucun changement"
 
 
562
 
563
+ #: includes/backup.php:198
564
+ msgid "(this role will be removed if you restore backup)"
565
+ msgstr "(ce rôle sera supprimé si vous restaurez la sauvegarde)"
 
 
 
 
566
 
567
+ #: includes/backup.php:157
568
+ msgid "Show changes from current roles only"
569
+ msgstr "Afficher uniquement les changements par rapport aux rôles actuels"
 
 
570
 
571
+ #: includes/backup.php:146
572
+ msgid "Restore Selected Roles"
573
+ msgstr "Restaurer les rôles sélectionnés"
574
 
575
+ #: includes/backup.php:137
576
+ msgid "Initial backup of all roles"
577
+ msgstr "Sauvegarde initiale de tous les rôles"
 
 
 
 
 
 
578
 
579
+ #: includes/backup.php:129
580
+ msgid "Auto-backup of all roles (%s)"
581
+ msgstr "Sauvegarde automatique de tous les rôles (%s)"
 
 
 
 
582
 
583
+ #: includes/backup.php:114
584
+ msgid "Manual backup of all roles (%s)"
585
+ msgstr "Sauvegarde manuelle de tous les rôles (%s)"
 
 
 
 
 
 
586
 
587
+ #: includes/backup.php:100
588
+ msgid "Available Backups:"
589
+ msgstr "Sauvegardes disponibles :"
 
 
 
 
590
 
591
+ #: includes/backup.php:95
592
+ msgid "On this screen, you can restore an earlier version of your roles and capabilities."
593
+ msgstr "Sur cet écran, vous pouvez restaurer une version antérieure de vos rôles et permissions."
 
 
 
 
594
 
595
+ #: includes/backup.php:91
596
+ msgid "PublishPress Capabilities automatically creates a backup on installation and whenever you save changes."
597
+ msgstr "PublishPress Capabilities crée automatiquement une sauvegarde lors de l’installation et à chaque fois que vous enregistrez des modifications."
 
 
 
 
598
 
599
+ #: includes/backup.php:88
600
+ msgid "Restore Previous Roles and Capabilities"
601
+ msgstr "Restaurer les rôles et permissions antérieurs"
 
 
 
 
 
 
 
 
602
 
603
+ #: includes/backup.php:74
604
+ msgid "Manual Backup"
605
+ msgstr "Sauvegarde manuelle"
 
 
 
 
606
 
607
+ #: includes/backup.php:69
608
+ msgid "A backup created on this screen replaces any previous manual backups, but is never automatically replaced."
609
+ msgstr "Le sauvegarde créée sur cet écran remplace toutes les sauvegardes manuelles précédentes, mais n’est jamais remplacée automatiquement."
 
 
 
 
 
 
610
 
611
+ #: includes/backup.php:64
612
+ msgid "PublishPress Capabilities automatically creates a backup on installation and whenever you save changes. The initial backup and last %d auto-backups are kept."
613
+ msgstr "PublishPress Capabilities crée automatiquement une sauvegarde lors de l’installation et à chaque fois que vous enregistrez des modifications. La sauvegarde initiale et les dernières %d sauvegardes automatiques sont conservées."
 
 
 
 
614
 
615
+ #: includes/backup.php:50
616
+ msgid "Reset Roles"
617
+ msgstr "Réinitialiser les rôles"
 
 
 
 
618
 
619
+ #: includes/backup.php:48
620
+ msgid "Restore"
621
+ msgstr "Restaurer"
622
 
623
+ #: includes/admin-load.php:312
624
+ #: includes/features/restrict-editor-features.php:307 includes/manager.php:372
625
+ msgid "Settings"
626
+ msgstr "Réglages"
627
 
628
+ #: includes/roles/roles.php:52
629
+ msgid "Description here."
630
+ msgstr "Description ici."
631
 
632
+ #: includes/roles/roles.php:40
633
+ msgid "Add"
634
+ msgstr "Ajouter"
635
 
636
+ #: includes/roles/roles.php:35
637
+ msgid "The name is how it appears on your site."
638
+ msgstr "Le nom tel qu’il apparaîtra sur votre site."
639
+
640
+ #: includes/manager.php:396 includes/roles/roles.php:33
641
+ msgid "Name"
642
+ msgstr "Nom du rôle"
643
+
644
+ #: includes/roles/roles.php:25
645
+ msgid "Add New Role"
646
+ msgstr "Ajouter un nouveau rôle"
647
+
648
+ #: includes/roles/roles.php:19
649
+ msgid "Search Roles"
650
+ msgstr "Recherche de rôles"
651
+
652
+ #. translators: %s: search keywords
653
+ #: includes/roles/roles.php:8
654
+ msgid "Search results for &#8220;%s&#8221;"
655
+ msgstr "Résultats de la recherche pour &#171; %s &#187;"
656
+
657
+ #: includes/admin-load.php:304 includes/manager.php:351
658
+ #: includes/roles/roles.php:4
659
+ msgid "Roles"
660
+ msgstr "Rôles"
661
+
662
+ #: includes/roles/class/class-pp-roles-list-table.php:239
663
+ msgid "Your Role"
664
+ msgstr "Ton rôle"
665
+
666
+ #: includes/roles/class/class-pp-roles-list-table.php:234
667
+ msgid "Default Role"
668
+ msgstr "Rôle par défaut"
669
+
670
+ #: includes/roles/class/class-pp-roles-list-table.php:183
671
+ msgid "Hide"
672
+ msgstr "Masquer"
673
+
674
+ #: includes-core/editor-features-promo.php:108
675
+ #: includes-core/editor-features-promo.php:122
676
+ #: includes-core/editor-features-promo.php:135
677
+ #: includes/features/admin-features.php:190
678
+ #: includes/features/editor-features-classic.php:78
679
+ #: includes/features/editor-features-gutenberg.php:77
680
+ #: includes/roles/class/class-pp-roles-list-table.php:164
681
+ #: includes/roles/class/class-pp-roles-list-table.php:301
682
+ msgid "Delete"
683
+ msgstr "Supprimer"
684
+
685
+ #: includes/roles/class/class-pp-roles-list-table.php:146
686
+ msgid "Unhide"
687
+ msgstr "Afficher"
688
+
689
+ #: includes/roles/class/class-pp-roles-list-table.php:128
690
+ msgid "(non-editable role)"
691
+ msgstr "(rôle non modifiable)"
692
+
693
+ #: includes/manager.php:398
694
+ #: includes/roles/class/class-pp-roles-list-table.php:78
695
+ msgid "Users"
696
+ msgstr "Utilisateurs"
697
+
698
+ #: includes/manager.php:397
699
+ #: includes/roles/class/class-pp-roles-list-table.php:77
700
+ msgid "Role"
701
+ msgstr "Rôle"
702
+
703
+ #: includes/roles/class/class-pp-roles-actions.php:491
704
+ msgid "The role %1$s was successfully unhidden."
705
+ msgstr "Le rôle %1$s a été affiché avec succès."
706
+
707
+ #: includes/roles/class/class-pp-roles-actions.php:431
708
+ msgid "The role %1$s was successfully hidden."
709
+ msgstr "Le rôle %1$s a été masqué avec succès."
710
+
711
+ #: includes/roles/class/class-pp-roles-actions.php:377
712
+ msgid "The role could not be deleted."
713
+ msgstr "Le rôle n’a pas pu être supprimé."
714
+
715
+ #: includes/roles/class/class-pp-roles-actions.php:364
716
+ msgid "The selected %1$s roles were successfully deleted. %2$s"
717
+ msgstr "Les rôles %1$s sélectionnés ont été supprimés avec succès. %2$s"
718
+
719
+ #: includes/roles/class/class-pp-roles-actions.php:358
720
+ msgid "The role %1$s was successfully deleted. %2$s"
721
+ msgstr "Le rôle %1$s a été supprimé avec succès. %2$s"
722
+
723
+ #: includes/roles/class/class-pp-roles-actions.php:353
724
+ msgid "%1$d users moved to default role %2$s."
725
+ msgstr "%1$d utilisateurs déplacés vers le rôle par défaut %2$s."
726
+
727
+ #: includes/roles/class/class-pp-roles-actions.php:331
728
+ msgid "Deleting a system role is not allowed."
729
+ msgstr "La suppression d’un rôle système n’est pas autorisée."
730
+
731
+ #: includes/roles/class/class-pp-roles-actions.php:217
732
+ msgid "Something went wrong, the system wasn't able to create the role, refresh the page and try again."
733
+ msgstr "Quelque chose s’est mal passé, le système n’a pas été en mesure de créer le rôle, rafraîchissez la page et réessayez."
734
+
735
+ #: includes/roles/class/class-pp-roles-actions.php:177
736
+ #: includes/roles/class/class-pp-roles-actions.php:304
737
+ #: includes/roles/class/class-pp-roles-actions.php:420
738
+ #: includes/roles/class/class-pp-roles-actions.php:481
739
+ msgid "Missing parameters, refresh the page and try again."
740
+ msgstr "Il y a des paramètres manquants, rafraîchissez la page et réessayez."
741
+
742
+ #: includes/roles/class/class-pp-roles-actions.php:157
743
+ msgid "Your link has expired, refresh the page and try again."
744
+ msgstr "Votre lien a expiré, rafraîchissez la page et réessayez."
745
+
746
+ #: includes/roles/class/class-pp-roles-actions.php:142
747
+ msgid "You do not have sufficient permissions to perform this action."
748
+ msgstr "Vous n’avez pas les droits suffisants pour effectuer cette action."
749
+
750
+ #: includes/roles/roles-functions.php:32
751
+ msgid "Are you sure you want to delete this role?"
752
+ msgstr "Confirmez-vous la suppression de ce rôle ?"
753
+
754
+ #: includes/settings.php:34
755
+ msgid "PublishPress Authors"
756
+ msgstr "PublishPress Authors"
757
+
758
+ #: includes/settings.php:14
759
+ msgid "Capabilities Settings"
760
+ msgstr "Réglages des permissions"
761
+
762
+ #: includes-core/CoreAdmin.php:63 includes/admin-load.php:308
763
+ msgid "Nav Menus"
764
+ msgstr "Menus de navigation"
765
+
766
+ #: includes-core/CoreAdmin.php:62 includes/admin-load.php:307
767
+ msgid "Admin Menus"
768
+ msgstr "Menus d’administration"
769
+
770
+ #: includes-core/admin-menus-promo.php:58
771
+ msgid "You can restrict access to admin menu screens. This feature is available in PublishPress Capabilities Pro"
772
+ msgstr "Vous pouvez restreindre l’accès aux écrans du menu d’administration. Cette fonctionnalité est disponible dans PublishPress Capabilities Pro"
773
+
774
+ #: includes-core/admin-menus-promo.php:29
775
+ msgid "Admin Menu Restrictions"
776
+ msgstr "Restrictions du menu d’administration"
777
+
778
+ #: includes-core/nav-menus-promo.php:63
779
+ msgid "You can restrict access to navigation menus. This feature is available in PublishPress Capabilities Pro"
780
+ msgstr "Vous pouvez restreindre l’accès aux menus de navigation. Cette fonctionnalité est disponible dans PublishPress Capabilities Pro"
781
+
782
+ #: includes-core/nav-menus-promo.php:29
783
+ msgid "Navigation Menu Restrictions"
784
+ msgstr "Restrictions du menu de navigation"
785
+
786
+ #: includes/features/restrict-editor-features.php:46
787
+ #: includes/filters-woocommerce.php:33
788
+ msgid "Add New"
789
+ msgstr "Ajouter"
790
 
791
+ #: includes/filters-woocommerce.php:32
792
+ msgid "All %s"
793
+ msgstr "Tous les %s"
794
+
795
+ #: includes/manager.php:923
796
+ msgid "Contact"
797
+ msgstr "Contact"
798
+
799
+ #: includes/manager.php:923
800
+ msgid "Contact the PublishPress team"
801
+ msgstr "Contact de l’équipe de PublishPress"
802
+
803
+ #: includes/manager.php:921
804
+ msgid "Capabilites Documentation"
805
+ msgstr "Documentation de Capabilities"
806
+
807
+ #: includes/manager.php:919
808
+ msgid "About"
809
+ msgstr "À propos"
810
+
811
+ #: includes/manager.php:919
812
+ msgid "About PublishPress Capabilities"
813
+ msgstr "À propos de PublishPress Capabilities"
814
+
815
+ #: includes/manager.php:908
816
+ msgid "If you like %s, please leave us a %s rating. Thank you!"
817
+ msgstr "Si vous appréciez %s, veuillez nous laisser une note de %s. Merci !"
818
+
819
+ #: includes/manager.php:651 includes/manager.php:685 includes/manager.php:703
820
+ msgid "You do not have permission to manage capabilities."
821
+ msgstr "Vous n’avez pas le droit de gérer les permissions."
822
+
823
+ #: includes-core/admin-features-promo.php:79
824
+ #: includes-core/admin-menus-promo.php:62
825
+ #: includes-core/editor-features-promo.php:91
826
+ #: includes-core/nav-menus-promo.php:67 includes/admin-load.php:318
827
+ #: includes/admin-load.php:319 includes/manager.php:378
828
+ #: includes/manager.php:379
829
+ msgid "Upgrade to Pro"
830
+ msgstr "Mettre à niveau en Pro"
831
+
832
+ #: includes/admin-load.php:309 includes/backup.php:49 includes/manager.php:369
833
+ msgid "Backup"
834
+ msgstr "Sauvegarde"
835
+
836
+ #: includes/handler.php:153
837
+ msgid "Type / Taxonomy settings saved."
838
+ msgstr "Réglages de type/taxonomie sauvegardés."
839
+
840
+ #: includes/backup-handler.php:82
841
+ msgid "Roles and Capabilities restored from selected auto-backup."
842
+ msgstr "Rôles et capacités restaurés à partir de la sauvegarde automatique sélectionnée."
843
+
844
+ #: includes/backup-handler.php:64
845
+ msgid "Roles and Capabilities restored from initial backup."
846
+ msgstr "Rôles et capacités restaurés à partir de la sauvegarde initiale."
847
+
848
+ #: includes/pp-ui.php:239
849
+ msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
850
+ msgstr "Appliquez les permissions de modification, de suppression et d’attribution séparément de la gestion des permissions."
851
+
852
+ #: includes/pp-ui.php:236
853
+ msgid "Detailed Taxonomy Capabilities"
854
+ msgstr "Permissions détaillées de la taxonomie"
855
+
856
+ #: includes/pp-ui.php:180
857
+ msgid "Ensure permissions can be controlled separately from other taxonomies."
858
+ msgstr "Cela vous garantit que les droits peuvent être contrôlés séparément des autres taxonomies."
859
+
860
+ #: includes/pp-ui.php:177
861
+ msgid "Taxonomy-Specific Capabilities"
862
+ msgstr "Taxonomies spécifiques aux permissions"
863
+
864
+ #: includes/pp-ui.php:159
865
+ msgid "Make selected post types require a different capability to add new posts."
866
+ msgstr "Faire en sorte que les types de publication sélectionnés nécessitent une permission différente pour ajouter de nouvelles publications."
867
+
868
+ #: includes/pp-ui.php:96
869
+ msgid "Ensure permissions can be controlled separately from other post types."
870
+ msgstr "Assurez-vous que les droits peuvent être contrôlés séparément des autres types de publication."
871
+
872
+ #: includes/pp-ui.php:93
873
+ msgid "Type-Specific Capabilities"
874
+ msgstr "Permissions spécifiques par type"
875
+
876
+ #: includes/pp-ui.php:75
877
+ msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
878
+ msgstr "Les permissions pour les états personnalisés peuvent être ajoutées manuellement ici. (Voir %sPermissions > Afficher les états%s pour les noms applicables). Cependant, les %sRôles supplémentaires spécifiques aux états %s sont généralement plus pratiques, cependant."
879
+
880
+ #: includes/settings.php:48
881
+ msgid "Help / Contact Form"
882
+ msgstr "Aide/Formulaire de contact"
883
+
884
+ #: includes/settings.php:46
885
+ msgid "PublishPress Revisions"
886
+ msgstr "PublishPress Revisions"
887
+
888
+ #: includes/settings.php:24
889
+ msgid "Related Permissions Plugins"
890
+ msgstr "Extensions de droits similaires"
891
+
892
+ #: includes/admin.php:1334
893
+ #: includes/roles/class/class-pp-roles-list-table.php:76
894
+ msgid "Role Name"
895
+ msgstr "Nom du rôle"
896
+
897
+ #: includes/admin.php:1280
898
+ msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
899
+ msgstr "Le niveau de rôle est généralement obsolète. Cependant, il détermine toujours l’éligibilité à l’affectation d’auteur de publication et limite l’application des permissions de modification par l’utilisateur."
900
+
901
+ #: includes/admin.php:481 includes/admin.php:944
902
+ msgid "Invalid Capabilities"
903
+ msgstr "Permissions invalides"
904
+
905
+ #: includes/admin.php:781
906
+ msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
907
+ msgstr "Prévention du verrouillage : pour supprimer la permission de lecture, supprimez d’abord les permissions d’administration/édition de WordPress ou ajoutez la permission « dashboard_lockout_ok »"
908
+
909
+ #: includes/admin.php:643
910
+ msgid "shared capability: %s"
911
+ msgstr "permission partagée : %s"
912
+
913
+ #: includes/admin.php:1189 includes/settings.php:40
914
+ msgid "PublishPress Permissions"
915
+ msgstr "PublishPress Permissions"
916
+
917
+ #: includes/admin.php:128
918
+ msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s."
919
+ msgstr "<strong>Note : </strong>Les changements de permission<strong> restent dans la base de données</strong> après la désactivation de l’extension. Vous pouvez également configurer ce rôle en tant que %sGroupe de droits%s."
920
+
921
+ #: includes/admin.php:136
922
+ msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation."
923
+ msgstr "<strong>Note :</strong> Les changements de permission <strong>restent dans la base de données</strong> après la désactivation du plugin."
924
+
925
+ #: includes/admin.php:40
926
+ msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
927
+ msgstr "Avertissement : ce rôle ne peut accéder au tableau de bord sans la permission de lecture. %1$sCliquez ici pour le corriger%2$s."
928
+
929
+ #: includes/filters.php:263
930
+ msgid "Edit Roles"
931
+ msgstr "Modifier les Rôles"
932
+
933
+ #: includes/backup.php:227
934
+ msgid "%s (level %s)"
935
+ msgstr "%s (niveau %s)"
936
+
937
+ #: includes/backup.php:191
938
+ msgid "%s (%s roles)"
939
+ msgstr "%s (%s rôles)"
940
+
941
+ #: includes/backup.php:84
942
+ msgid "Last Backup"
943
+ msgstr "Dernière sauvegarde"
944
+
945
+ #: includes/backup.php:84
946
+ msgid "Last Manual Backup - %s"
947
+ msgstr "Dernière sauvegarde manuelle - %s"
948
+
949
+ #: includes/backup.php:164
950
+ msgid "Initial Backup"
951
+ msgstr "Sauvegarde initiale"
952
+
953
+ #: includes/backup.php:164
954
+ msgid "Initial Backup - %s"
955
+ msgstr "Sauvegarde initiale - %s"
956
 
957
+ #: includes/backup.php:39
958
+ msgid "Backup Tool for %1$sPublishPress Capabilities%2$s"
959
+ msgstr "Outil de sauvegarde pour %1$sPublishPress Capabilities%2$s"
960
 
961
+ #: capsman-enhanced.php:70
962
+ msgid "<strong>This plugin can be deleted.</strong>"
963
+ msgstr "<strong>Cette extension peut être supprimée.</strong>"
964
 
965
+ #. Author URI of the plugin
966
+ msgid "https://publishpress.com/"
967
+ msgstr "https://publishpress.com/"
968
 
969
+ #. Author of the plugin
970
+ #: includes/settings.php:29
971
+ msgid "PublishPress"
972
+ msgstr "PublishPress"
973
 
974
+ #. Plugin URI of the plugin
975
+ msgid "https://publishpress.com/capability-manager/"
976
+ msgstr "https://publishpress.com/capability-manager/"
977
 
978
+ #. Plugin Name of the plugin
979
+ msgid "PublishPress Capabilities"
980
+ msgstr "PublishPress Capabilities"
981
 
982
+ #. Description of the plugin
983
+ msgid "Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation."
984
+ msgstr "Gérez les définitions de rôles WordPress, par site ou à l’échelle du réseau. Organisez les permissions par type de publication."
985
 
986
+ #: includes/pp-ui.php:167 includes/pp-ui.php:231 includes/pp-ui.php:288
987
+ msgid "Update"
988
+ msgstr "Mettre à jour"
989
 
990
+ #: includes/pp-ui.php:159
991
+ msgid "Use create_posts capability"
992
+ msgstr "Utilisez la permission create_posts"
993
 
994
+ #: includes/pp-ui.php:80
995
+ msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
996
+ msgstr "Les permissions pour les états personnalisés peuvent être ajoutées manuellement à un rôle ici (voir Conditions > États > Mappage des permissions pour les noms applicables). Toutefois, il est généralement plus pratique d’utiliser les groupes de permissions pour attribuer un rôle supplémentaire spécifique à l’etat."
997
 
998
+ #: includes/pp-ui.php:77
999
+ msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
1000
+ msgstr "Les permissions pour les états personnalisés peuvent être ajoutées manuellement ici. Ou activez l’extension PP Custom Post Statuses pour affecter des rôles supplémentaires spécifiques à l’état."
 
1001
 
1002
+ #: includes/pp-ui.php:67
1003
+ msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
1004
+ msgstr "Les permissions de « publications » sélectionnées ici définissent également l’attribution de rôles spécifiques au type pour les groupes de permissions%s."
1005
 
1006
+ #: includes/pp-ui.php:65
1007
+ msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
1008
+ msgstr "Les permissions de « publications » sélectionnées ici définissent également l’attribution de rôles spécifiques au type pour les groupes de permissions%s."
 
 
 
 
1009
 
1010
+ #: includes/pp-ui.php:60
1011
+ msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
1012
+ msgstr "activer %1$sRéglages avancées%2$s, voir Utilisation des rôles"
1013
 
1014
+ #: includes/pp-ui.php:58
1015
+ msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
1016
+ msgstr "voir %1$sUtilisation des rôles%2$s : « Modèle de rôle »."
 
 
1017
 
1018
+ #: includes/manager.php:764
1019
+ msgid "Bad form Received"
1020
+ msgstr "Formulaire reçu incorrect"
 
 
 
 
1021
 
1022
+ #: includes/roles/class/class-pp-roles-actions.php:312
1023
+ msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
1024
+ msgstr "Vous ne pouvez pas modifier le rôle par defaut. Vous devez d’abord <a href=\"%s\">le modifier</a>."
 
 
 
 
1025
 
1026
+ #: includes/handler.php:279
1027
+ msgid "You cannot remove Manage Capabilities from Administrators"
1028
+ msgstr "Vous ne pouvez pas supprimer Gérer les permissions des administrateurs"
1029
 
1030
+ #: includes/handler.php:156
1031
+ msgid "Bad form received."
1032
+ msgstr "Formulaire reçu incorrect."
 
 
1033
 
1034
+ #: includes/handler.php:148
1035
+ msgid "Incorrect capability name."
1036
+ msgstr "Nom de permission incorrect."
1037
 
1038
+ #: includes/manager.php:717
1039
+ msgid "New capability added to role."
1040
+ msgstr "Nouvelle permission ajouté au rôle."
1041
 
1042
+ #: includes/handler.php:51 includes/handler.php:80
1043
+ msgid "Error: Failed creating the new role."
1044
+ msgstr "Erreur : Échec de la création du nouveau rôle."
1045
 
1046
+ #: includes/handler.php:45 includes/handler.php:74
1047
+ msgid "New role created."
1048
+ msgstr "Nouveau rôle créé."
 
 
 
 
1049
 
1050
+ #: includes/backup.php:296
1051
+ msgid "Reset to WordPress defaults"
1052
+ msgstr "Réinitialiser avec les valeurs par défaut de WordPress"
1053
 
1054
+ #: includes/backup.php:296
1055
  msgid ""
1056
+ "You are about to reset Roles and Capabilities to WordPress defaults.\n"
1057
+ " 'Cancel' to stop, 'OK' to reset."
 
1058
  msgstr ""
1059
+ "Vous êtes sur le point de réinitialiser les rôles et les permissions avec les valeurs par défaut de WordPress.\n"
1060
+ "« Annuler » pour arrêter et « OK » pour réinitialiser."
 
 
 
 
 
1061
 
1062
+ #: includes/backup.php:294
1063
+ msgid "Reset Roles and Capabilities to WordPress defaults"
1064
+ msgstr "Réinitialiser les rôles et les permissions avec les valeurs par défaut de WordPress"
 
 
 
 
 
 
1065
 
1066
+ #: includes/backup.php:291
1067
+ msgid "It is recommended to use this only as a last resource!"
1068
+ msgstr "Il est recommandé de ne l’utiliser qu’en dernier recours !"
 
 
 
 
1069
 
1070
+ #: includes/backup.php:289
1071
+ msgid "If you have installed any plugin that adds new roles or capabilities, these will be lost."
1072
+ msgstr "Si vous avez ajouté une extension pour créer de nouveaux rôles ou permissions, celles-ci seront perdues."
 
 
1073
 
1074
+ #: includes/backup.php:285
1075
+ msgid "Reseting default Roles and Capabilities will set them to the WordPress install defaults."
1076
+ msgstr "La réinitialisation des rôles et des capacités par défaut les définira sur les valeurs d’installation par défaut de WordPress."
1077
 
1078
+ #: includes/backup.php:285
1079
+ msgid "WARNING:"
1080
+ msgstr "Avertissement :"
 
 
 
 
 
 
 
 
 
 
1081
 
1082
+ #: includes/backup.php:283
1083
+ msgid "Reset WordPress Defaults"
1084
+ msgstr "Réinitialiser avec les valeurs par défaut de WordPress"
 
 
 
 
1085
 
1086
+ #: includes/backup.php:59
1087
+ msgid "Backup Roles and Capabilities"
1088
+ msgstr "Sauvegarder les rôles et les permissions"
1089
 
1090
+ #: includes/backup-handler.php:115
1091
+ msgid "Roles and Capabilities reset to WordPress defaults"
1092
+ msgstr "Rôles et permissions réinitialisées avec les valeurs par défaut de WordPress"
 
 
 
 
1093
 
1094
+ #: includes/backup-handler.php:102
1095
+ msgid "Needed function to create default roles not found!"
1096
+ msgstr "Fonction nécessaire à la création des rôles par défaut non trouvée !"
 
 
 
 
1097
 
1098
+ #: includes/backup-handler.php:66 includes/backup-handler.php:75
1099
+ #: includes/backup-handler.php:84
1100
+ msgid "Restore failed. No backup found."
1101
+ msgstr "Echec de la restauration. Aucune sauvegarde trouvée."
 
 
 
1102
 
1103
+ #: includes/backup-handler.php:73
1104
+ msgid "Roles and Capabilities restored from last backup."
1105
+ msgstr "Rôles et permissions restaurés à partir de la dernière sauvegarde."
 
 
 
 
1106
 
1107
+ #: includes/backup-handler.php:49
1108
+ msgid "New backup saved."
1109
+ msgstr "Nouvelle sauvegarde enregistrée."
 
 
 
 
1110
 
1111
+ #: includes/backup-handler.php:15 includes/manager.php:878
1112
+ msgid "You do not have permission to restore roles."
1113
+ msgstr "Vous n’avez pas la permission de restaurer les rôles."
 
 
 
 
 
 
1114
 
1115
+ #: includes/admin.php:1384
1116
+ msgid "sync role to all sites now"
1117
+ msgstr "synchroniser le rôle avec tous les sites maintenant"
 
 
 
 
1118
 
1119
+ #: includes/admin.php:1384
1120
+ msgid "Copy / update this role definition to all sites now"
1121
+ msgstr "Copiez/mettez à jour cette définition de rôle sur tous les sites maintenant"
 
 
 
 
1122
 
1123
+ #: includes/admin.php:1381
1124
+ msgid "include in new sites"
1125
+ msgstr "inclure dans les nouveaux sites"
 
 
 
 
1126
 
1127
+ #: includes/admin.php:1381
1128
+ msgid "Create this role definition in new (future) sites"
1129
+ msgstr "Créer cette définition de rôle dans les nouveaux (futurs) sites"
 
 
 
 
1130
 
1131
+ #: includes/admin.php:1319
1132
+ msgid "Add to role"
1133
+ msgstr "Ajouter au rôle"
 
 
 
 
1134
 
1135
+ #: includes/admin.php:1316
1136
+ msgid "Add Capability"
1137
+ msgstr "Ajouter une permission"
 
 
 
 
1138
 
1139
+ #: includes/admin.php:1341
1140
+ msgid "Copy"
1141
+ msgstr "Copier"
1142
 
1143
+ #: includes/admin.php:1331
1144
+ msgid "Copy this role to"
1145
+ msgstr "Copier ce rôle vers"
1146
 
1147
+ #: includes/admin.php:1337
1148
+ msgid "hidden"
1149
+ msgstr "masqué"
 
 
1150
 
1151
+ #: includes/admin.php:1337
1152
+ msgid "Make role available for supplemental assignment to Permission Groups only"
1153
+ msgstr "Rendre ce rôle uniquement disponible aux Permissions de groupe"
 
 
 
 
1154
 
1155
+ #: includes/admin.php:1307
1156
+ msgid "Delete Role"
1157
+ msgstr "Supprimer le rôle"
1158
 
1159
+ #: includes/admin.php:1307
1160
+ msgid ""
1161
+ "You are about to delete the %s role.\n"
1162
+ "\n"
1163
+ " 'Cancel' to stop, 'OK' to delete."
1164
+ msgstr ""
1165
+ "Vous allez supprimer le rôle %s.\n"
1166
+ "\n"
1167
+ " « Annuler » pour arrêter, « OK » pour supprimer."
1168
+
1169
+ #: includes/admin.php:1307
1170
+ msgid "Delete this role"
1171
+ msgstr "Supprimer ce rôle"
1172
+
1173
+ #: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
1174
+ #: includes/admin.php:109 includes/admin.php:1302
1175
+ #: includes/features/admin-features.php:76
1176
+ #: includes/features/admin-features.php:215
1177
+ #: includes/features/editor-features.php:69
1178
+ #: includes/features/editor-features.php:122 includes/settings.php:56
1179
+ msgid "Save Changes"
1180
+ msgstr "Enregistrer les modifications"
1181
+
1182
+ #: includes/admin.php:1282
1183
+ msgid "Level:"
1184
+ msgstr "Niveau :"
1185
+
1186
+ #: includes/admin.php:1042
1187
+ msgid "Additional Capabilities"
1188
+ msgstr "Permissions supplémentaires"
1189
+
1190
+ #: includes/admin.php:824 includes/admin.php:929 includes/admin.php:1162
1191
+ msgid "negate none (add/remove all capabilities normally)"
1192
+ msgstr "ne rien nier (ajouter/supprimer les permissions normalement)"
1193
+
1194
+ #: includes/admin.php:824 includes/admin.php:929 includes/admin.php:1162
1195
+ msgid "negate all (storing as disabled capabilities)"
1196
+ msgstr "nier tout (stockage en tant que permissions désactivées)"
1197
+
1198
+ #: includes/admin.php:824 includes/admin.php:929 includes/admin.php:1162
1199
+ msgid "check / uncheck all"
1200
+ msgstr "sélectionner/désélectionner tout"
1201
+
1202
+ #: includes/admin.php:631 includes/admin.php:762 includes/admin.php:890
1203
+ #: includes/admin.php:1109
1204
+ msgid "%s: assigned by Permission Group"
1205
+ msgstr "%s : attribué par le groupe de permission"
1206
 
1207
+ #: includes/admin.php:233
1208
+ msgid "can delete posts which are currently published with private visibility"
1209
+ msgstr "peut supprimer les publications publiées avec une visibilité privée"
 
 
 
 
1210
 
1211
+ #: includes/admin.php:232
1212
+ msgid "can delete posts which are currently published"
1213
+ msgstr "peut supprimer les publications publiées"
 
 
 
 
1214
 
1215
+ #: includes/admin.php:231
1216
+ msgid "can delete posts which were created by other users"
1217
+ msgstr "peut supprimer les publications créés par d’autres utilisateurs"
 
 
 
 
 
 
1218
 
1219
+ #: includes/admin.php:230
1220
+ msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
1221
+ msgstr "possède la permission de supprimer de base (mais peut nécessiter d’autres permissions basées sur le état ou la propriété de la publication)"
1222
 
1223
+ #: includes/admin.php:229
1224
+ msgid "can make a post publicly visible"
1225
+ msgstr "peut modifier la visibilité d’une publication"
 
 
 
 
1226
 
1227
+ #: includes/admin.php:228
1228
+ msgid "can edit posts which are currently published with private visibility"
1229
+ msgstr "peut modifier les articles publiés avec la visibilité privée"
1230
 
1231
+ #: includes/admin.php:227
1232
+ msgid "can edit posts which are currently published"
1233
+ msgstr "peut modifier les articles publiés"
 
 
 
 
1234
 
1235
+ #: includes/admin.php:226
1236
+ msgid "can edit posts which were created by other users"
1237
+ msgstr "peut modifier les articles créés par d’autres utilisateurs"
 
 
 
 
1238
 
1239
+ #: includes/admin.php:225
1240
+ msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
1241
+ msgstr "possède la permission de modifier de base (mais peut nécessiter d’autres permissions basées sur le état ou la propriété de la publication)"
 
 
 
 
1242
 
1243
+ #: includes/admin.php:224
1244
+ msgid "can read posts which are currently published with private visibility"
1245
+ msgstr "peut lire les articles publiés avec la visibilité privée"
 
 
 
 
1246
 
1247
+ #: includes/admin.php:218
1248
+ msgid "Reading"
1249
+ msgstr "Lecture"
 
 
 
 
1250
 
1251
+ #: includes/admin.php:217
1252
+ msgid "&nbsp;"
1253
+ msgstr "&nbsp;"
 
 
 
 
1254
 
1255
+ #: includes/admin.php:1248
1256
+ msgid "%s info/purchase"
1257
+ msgstr "%s infos/achat"
1258
+
1259
+ #: includes/admin.php:1248
1260
+ msgid "%1$sbuy%2$s %3$s"
1261
+ msgstr "%1$sacheter%2$s %3$s"
1262
+
1263
+ #: includes/admin.php:1246
1264
+ msgid "%s (free install)"
1265
+ msgstr "%s (installation gratuite)"
1266
+
1267
+ #: includes/admin.php:1246
1268
+ msgid "%1$sgrab%2$s %3$s"
1269
+ msgstr "%1$sprendre%2$s %3$s"
1270
+
1271
+ #: includes/admin.php:1239
1272
+ msgid "Member support forum"
1273
+ msgstr "Forum d’assistance aux membres"
1274
+
1275
+ #: includes/admin.php:1235
1276
+ msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
1277
+ msgstr "Intégration WPML pour refléter les droits dans les traductions <em> (Pro)</em>"
1278
+
1279
+ #: includes/admin.php:1231
1280
+ msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
1281
+ msgstr "Autorisez les droits de contenu supplémentaire au groupe BuddyPress <em> (Pro)</em>"
1282
+
1283
+ #: includes/admin.php:1227
1284
+ msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
1285
+ msgstr "Autorisez les visiteurs, participants ou modérateurs à accéder aux forums bbPress <em> (Pro)</em>"
1286
+
1287
+ #: includes/admin.php:1223
1288
+ msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
1289
+ msgstr "Personnaliser la modification modérée de la publication publié avec Revisionary ou Post Forking <em> (Pro)</em>"
1290
+
1291
+ #: includes/admin.php:1219
1292
+ msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
1293
+ msgstr "Réglementez les droits pour modifier les états de publication Edit Flow <em> (Pro)</em>"
1294
+
1295
+ #: includes/admin.php:1215
1296
+ msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
1297
+ msgstr "États de modération personnalisés pour un flux de publication à accès contrôlé et à plusieurs étapes <em> (Pro)</em>"
1298
+
1299
+ #: includes/admin.php:1211
1300
+ msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
1301
+ msgstr "États de visibilité de publication personnalisés, entièrement mis en œuvre dans wp-admin. <em> (Pro)</em>"
1302
+
1303
+ #: includes/admin.php:1207
1304
+ msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
1305
+ msgstr "Personnalisez les droits de modification par catégorie ou par publication <em> (Pro)</em>"
1306
 
1307
+ #: includes/admin.php:1203
1308
+ msgid "Customize reading permissions per-category or per-post"
1309
+ msgstr "Personnalisez les droits de lecture par catégorie ou par article"
1310
 
1311
+ #: includes/admin.php:1199
1312
+ msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
1313
+ msgstr "Assignez des rôles WP personnalisés de manière complémentaire pour un type de publication spécifique <em> (Pro)</em>"
1314
 
1315
+ #: includes/admin.php:1195
1316
+ msgid "Assign standard WP roles supplementally for a specific post type"
1317
+ msgstr "Assignez des rôles WP standard de manière complémentaire pour un type de publication spécifique"
1318
 
1319
+ #: includes/admin.php:1191
1320
+ msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
1321
+ msgstr "Définissez automatiquement les permissions spécifiques à vos types de publication et taxonomies personnalisés"
 
 
 
 
1322
 
1323
+ #: includes/manager.php:921
1324
+ msgid "Documentation"
1325
+ msgstr "Documentation"
 
 
 
 
 
 
1326
 
1327
+ #: framework/lib/formating.php:40
1328
+ msgid "Settings saved."
1329
+ msgstr "Réglages enregistrés."
 
 
 
 
1330
 
1331
+ #: includes/manager.php:197
1332
+ msgid "Add or remove capability from the role normally"
1333
+ msgstr "Ajouter ou supprimer une permission du rôle normalement"
 
 
 
 
1334
 
1335
+ #: includes/manager.php:196
1336
+ msgid "Add or remove this capability from the WordPress role"
1337
+ msgstr "Ajouter ou supprimer une permission au rôle WordPress"
 
 
 
 
1338
 
1339
+ #: includes/manager.php:195
1340
+ msgid "This capability is explicitly negated. Click to add/remove normally."
1341
+ msgstr "Cette permission est explicitement niée. Cliquer pour l’ajouter/supprimer normalement."
 
 
 
 
1342
 
1343
+ #: includes/manager.php:194
1344
+ msgid "Post type registration does not define this capability distinctly"
1345
+ msgstr "L’enregistrement du type de publication ne définit pas cette permission de manière distincte"
1346
 
1347
+ #: includes/manager.php:193
1348
+ msgid "Explicitly negate these capabilities by storing as disabled"
1349
+ msgstr "Annulez explicitement ces permissions en les stockant comme désactivées"
 
 
 
 
1350
 
1351
+ #: includes/manager.php:192
1352
+ msgid "Explicity negate this capability by storing as disabled"
1353
+ msgstr "Annulez explicitement cette permission en la stockant comme désactivée"
 
 
 
 
1354
 
1355
+ #: includes/admin-load.php:282 includes/manager.php:329
1356
+ #: includes/roles/class/class-pp-roles-list-table.php:123
1357
+ msgid "Capabilities"
1358
+ msgstr "Permissions"
1359
+
1360
+ #: includes/admin.php:59
1361
+ msgid "Role Capabilities"
1362
+ msgstr "Permissions du rôle"
1363
+
1364
+ #: capsman-enhanced.php:100
1365
+ msgid "%s is required for this plugin."
1366
+ msgstr "%s est requis pour cette extension."
1367
+
1368
+ #: capsman-enhanced.php:98
1369
+ msgid "The active plugin %s is not compatible with your PHP version."
1370
+ msgstr "L’extension active %s n’est pas compatible avec votre version de PHP."
1371
+
1372
+ #: capsman-enhanced.php:97
1373
+ msgid "Warning:"
1374
+ msgstr "Avertissement :"
1375
+
1376
+ #: capsman-enhanced.php:40
1377
+ msgid "<strong>Error:</strong> PublishPress Capabilities cannot function because another copy of Capability Manager is active."
1378
+ msgstr "<strong>Erreur :</strong> PublishPress Capabilities ne peut être activée car un autre gestionnaire de permission est activé."
languages/capsman-enhanced-it_IT.mo CHANGED
Binary file
languages/capsman-enhanced-it_IT.po CHANGED
@@ -2,17 +2,17 @@
2
  # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2021-12-02 19:25+0100\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: Poedit 3.0\n"
11
- "Language: it\n"
12
  "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
13
  "POT-Creation-Date: \n"
 
14
  "Last-Translator: \n"
15
  "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
 
 
 
 
 
 
16
 
17
  #. Plugin name.
18
  msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
@@ -906,6 +906,66 @@ msgstr "7. Backup e ripristino dei ruoli utente e delle capacità"
906
  msgid "2. Capabilities for any Post Type"
907
  msgstr "2. Capacità per ogni tipo di articolo"
908
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
909
  #. Found in changelog list item.
910
  msgid "Feature : New \"Admin Features\" screen #200"
911
  msgstr "Feature : New \"Admin Features\" screen #200"
2
  # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
 
 
 
 
 
 
 
5
  "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
6
  "POT-Creation-Date: \n"
7
+ "PO-Revision-Date: 2022-02-28 10:45+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
10
+ "Language: it\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
+ "X-Generator: Poedit 3.0.1\n"
16
 
17
  #. Plugin name.
18
  msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
906
  msgid "2. Capabilities for any Post Type"
907
  msgstr "2. Capacità per ogni tipo di articolo"
908
 
909
+ #. Found in changelog list item.
910
+ msgid "Compat : WordPress 5.9 - failure adding / editing posts under some Editor Features configurations (work around WP hooking late-defined function _disable_block_editor_for_navigation_post_type)"
911
+ msgstr "Compatibilità: WordPress 5.9 - mancata aggiunta/modifica di articoli sotto alcune configurazioni di funzioni dell'editor (work around WP hooking late-defined function _disable_block_editor_for_navigation_post_type)"
912
+
913
+ #. Found in changelog list item.
914
+ msgid "Fixed : CSRF vulnerability"
915
+ msgstr "Fixed : CSRF vulnerability"
916
+
917
+ #. Found in changelog list item.
918
+ msgid "Change : Capabilities screen - Tab for PublishPress Capabilities #220"
919
+ msgstr "Change : Capabilities screen - Tab for PublishPress Capabilities #220"
920
+
921
+ #. Found in changelog list item.
922
+ msgid "Change : Admin Features - Captions use dashes, not numbers #229"
923
+ msgstr "Change : Admin Features - Captions use dashes, not numbers #229"
924
+
925
+ #. Found in changelog list item.
926
+ msgid "Feature : Admin Features - More items available for restriction #240"
927
+ msgstr "Feature : Admin Features - More items available for restriction #240"
928
+
929
+ #. Found in changelog list item.
930
+ msgid "Feature : Admin Features - Restrict Admin Bar or individual Admin Bar elements"
931
+ msgstr "Feature : Admin Features - Restrict Admin Bar or individual Admin Bar elements"
932
+
933
+ #. Found in changelog list item.
934
+ msgid "Feature : Editor Features - Restrict editor elements for custom post types"
935
+ msgstr "Feature : Editor Features - Restrict editor elements for custom post types"
936
+
937
+ #. Found in changelog list item.
938
+ msgid "Feature : Filter Capabilities display by post type or text entry"
939
+ msgstr "Feature : Filter Capabilities display by post type or text entry"
940
+
941
+ #. Found in changelog list item.
942
+ msgid "Lang : Spanish, French, Italian"
943
+ msgstr "Lingue: Spagnolo, Francese, Italiano"
944
+
945
+ #. Found in changelog list item.
946
+ msgid "Fixed : Escape output variables"
947
+ msgstr "Fixed : Escape output variables"
948
+
949
+ #. Found in changelog list item.
950
+ msgid "Fixed : Input sanitization consistency"
951
+ msgstr "Fixed : Input sanitization consistency"
952
+
953
+ #. Found in changelog list item.
954
+ msgid "Fixed : After role rename, title in dropdown does not refresh"
955
+ msgstr "Fixed : After role rename, title in dropdown does not refresh"
956
+
957
+ #. Found in changelog list item.
958
+ msgid "Fixed : Capability names with dashes could not be added"
959
+ msgstr "Fixed : Capability names with dashes could not be added"
960
+
961
+ #. Found in changelog list item.
962
+ msgid "Fixed : PHP Notice on Capabilities screen"
963
+ msgstr "Fixed : PHP Notice on Capabilities screen"
964
+
965
+ #. Found in changelog list item.
966
+ msgid "Fixed : Security issue"
967
+ msgstr "Fixed : Security issue"
968
+
969
  #. Found in changelog list item.
970
  msgid "Feature : New \"Admin Features\" screen #200"
971
  msgstr "Feature : New \"Admin Features\" screen #200"
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: user roles, capabilities, permissions, admin menus, post editing, post typ
7
  Requires at least: 4.9.7
8
  Tested up to: 5.9
9
  Requires PHP: 5.6.20
10
- Stable tag: 2.3.4
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
@@ -409,6 +409,15 @@ Fixed : Security issue. Please update.
409
 
410
  == Changelog ==
411
 
 
 
 
 
 
 
 
 
 
412
  = 2.3.4 - 26 Jan 2022 =
413
  * Compat : WordPress 5.9 - failure adding / editing posts under some Editor Features configurations (work around WP hooking late-defined function _disable_block_editor_for_navigation_post_type)
414
 
7
  Requires at least: 4.9.7
8
  Tested up to: 5.9
9
  Requires PHP: 5.6.20
10
+ Stable tag: 2.3.5
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
409
 
410
  == Changelog ==
411
 
412
+ = 2.3.5 - 13 Apr 2022 =
413
+ * Feature : Export / Import for new features
414
+ * Change : Clarify captions on Roles, Backup screens
415
+ * Fixed : Multisite: Don't apply Feature Restrictions to Super Administrators unless constant PP_CAPABILITIES_RESTRICT_SUPER_ADMIN is defined
416
+ * Fixed : Capabilities could not be updated if third party code executes too early. Now support constant PP_CAPABILITIES_COMPAT_MODE to work around conflicts.
417
+ * Fixed : Coding standards - WordPress VIP scan compliance improvements
418
+ * Compat : LoginWP - custom redirect failed
419
+ * Lang : New French, Italian and Spanish translations
420
+
421
  = 2.3.4 - 26 Jan 2022 =
422
  * Compat : WordPress 5.9 - failure adding / editing posts under some Editor Features configurations (work around WP hooking late-defined function _disable_block_editor_for_navigation_post_type)
423
 
vendor/composer/ClassLoader.php CHANGED
@@ -37,57 +37,130 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
 
45
  // PSR-4
 
 
 
 
46
  private $prefixLengthsPsr4 = array();
 
 
 
 
47
  private $prefixDirsPsr4 = array();
 
 
 
 
48
  private $fallbackDirsPsr4 = array();
49
 
50
  // PSR-0
 
 
 
 
51
  private $prefixesPsr0 = array();
 
 
 
 
52
  private $fallbackDirsPsr0 = array();
53
 
 
54
  private $useIncludePath = false;
 
 
 
 
 
55
  private $classMap = array();
 
 
56
  private $classMapAuthoritative = false;
 
 
 
 
 
57
  private $missingClasses = array();
 
 
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
67
  }
68
 
 
 
 
 
69
  public function getPrefixesPsr4()
70
  {
71
  return $this->prefixDirsPsr4;
72
  }
73
 
 
 
 
 
74
  public function getFallbackDirs()
75
  {
76
  return $this->fallbackDirsPsr0;
77
  }
78
 
 
 
 
 
79
  public function getFallbackDirsPsr4()
80
  {
81
  return $this->fallbackDirsPsr4;
82
  }
83
 
 
 
 
 
84
  public function getClassMap()
85
  {
86
  return $this->classMap;
87
  }
88
 
89
  /**
90
- * @param array $classMap Class to filename map
 
 
 
91
  */
92
  public function addClassMap(array $classMap)
93
  {
@@ -102,9 +175,11 @@ class ClassLoader
102
  * Registers a set of PSR-0 directories for a given prefix, either
103
  * appending or prepending to the ones previously set for this prefix.
104
  *
105
- * @param string $prefix The prefix
106
- * @param array|string $paths The PSR-0 root directories
107
- * @param bool $prepend Whether to prepend the directories
 
 
108
  */
109
  public function add($prefix, $paths, $prepend = false)
110
  {
@@ -147,11 +222,13 @@ class ClassLoader
147
  * Registers a set of PSR-4 directories for a given namespace, either
148
  * appending or prepending to the ones previously set for this namespace.
149
  *
150
- * @param string $prefix The prefix/namespace, with trailing '\\'
151
- * @param array|string $paths The PSR-4 base directories
152
- * @param bool $prepend Whether to prepend the directories
153
  *
154
  * @throws \InvalidArgumentException
 
 
155
  */
156
  public function addPsr4($prefix, $paths, $prepend = false)
157
  {
@@ -195,8 +272,10 @@ class ClassLoader
195
  * Registers a set of PSR-0 directories for a given prefix,
196
  * replacing any others previously set for this prefix.
197
  *
198
- * @param string $prefix The prefix
199
- * @param array|string $paths The PSR-0 base directories
 
 
200
  */
201
  public function set($prefix, $paths)
202
  {
@@ -211,10 +290,12 @@ class ClassLoader
211
  * Registers a set of PSR-4 directories for a given namespace,
212
  * replacing any others previously set for this namespace.
213
  *
214
- * @param string $prefix The prefix/namespace, with trailing '\\'
215
- * @param array|string $paths The PSR-4 base directories
216
  *
217
  * @throws \InvalidArgumentException
 
 
218
  */
219
  public function setPsr4($prefix, $paths)
220
  {
@@ -234,6 +315,8 @@ class ClassLoader
234
  * Turns on searching the include path for class files.
235
  *
236
  * @param bool $useIncludePath
 
 
237
  */
238
  public function setUseIncludePath($useIncludePath)
239
  {
@@ -256,6 +339,8 @@ class ClassLoader
256
  * that have not been registered with the class map.
257
  *
258
  * @param bool $classMapAuthoritative
 
 
259
  */
260
  public function setClassMapAuthoritative($classMapAuthoritative)
261
  {
@@ -276,6 +361,8 @@ class ClassLoader
276
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
  *
278
  * @param string|null $apcuPrefix
 
 
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
@@ -296,25 +383,44 @@ class ClassLoader
296
  * Registers this instance as an autoloader.
297
  *
298
  * @param bool $prepend Whether to prepend the autoloader or not
 
 
299
  */
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
306
  * Unregisters this instance as an autoloader.
 
 
307
  */
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
314
  * Loads the given class or interface.
315
  *
316
  * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
  */
319
  public function loadClass($class)
320
  {
@@ -323,6 +429,8 @@ class ClassLoader
323
 
324
  return true;
325
  }
 
 
326
  }
327
 
328
  /**
@@ -367,6 +475,21 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
@@ -438,6 +561,10 @@ class ClassLoader
438
  * Scope isolated include.
439
  *
440
  * Prevents access to $this/self from included files.
 
 
 
 
441
  */
442
  function includeFile($file)
443
  {
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ /** @var ?string */
46
+ private $vendorDir;
47
+
48
  // PSR-4
49
+ /**
50
+ * @var array[]
51
+ * @psalm-var array<string, array<string, int>>
52
+ */
53
  private $prefixLengthsPsr4 = array();
54
+ /**
55
+ * @var array[]
56
+ * @psalm-var array<string, array<int, string>>
57
+ */
58
  private $prefixDirsPsr4 = array();
59
+ /**
60
+ * @var array[]
61
+ * @psalm-var array<string, string>
62
+ */
63
  private $fallbackDirsPsr4 = array();
64
 
65
  // PSR-0
66
+ /**
67
+ * @var array[]
68
+ * @psalm-var array<string, array<string, string[]>>
69
+ */
70
  private $prefixesPsr0 = array();
71
+ /**
72
+ * @var array[]
73
+ * @psalm-var array<string, string>
74
+ */
75
  private $fallbackDirsPsr0 = array();
76
 
77
+ /** @var bool */
78
  private $useIncludePath = false;
79
+
80
+ /**
81
+ * @var string[]
82
+ * @psalm-var array<string, string>
83
+ */
84
  private $classMap = array();
85
+
86
+ /** @var bool */
87
  private $classMapAuthoritative = false;
88
+
89
+ /**
90
+ * @var bool[]
91
+ * @psalm-var array<string, bool>
92
+ */
93
  private $missingClasses = array();
94
+
95
+ /** @var ?string */
96
  private $apcuPrefix;
97
 
98
+ /**
99
+ * @var self[]
100
+ */
101
+ private static $registeredLoaders = array();
102
+
103
+ /**
104
+ * @param ?string $vendorDir
105
+ */
106
+ public function __construct($vendorDir = null)
107
+ {
108
+ $this->vendorDir = $vendorDir;
109
+ }
110
+
111
+ /**
112
+ * @return string[]
113
+ */
114
  public function getPrefixes()
115
  {
116
  if (!empty($this->prefixesPsr0)) {
117
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
118
  }
119
 
120
  return array();
121
  }
122
 
123
+ /**
124
+ * @return array[]
125
+ * @psalm-return array<string, array<int, string>>
126
+ */
127
  public function getPrefixesPsr4()
128
  {
129
  return $this->prefixDirsPsr4;
130
  }
131
 
132
+ /**
133
+ * @return array[]
134
+ * @psalm-return array<string, string>
135
+ */
136
  public function getFallbackDirs()
137
  {
138
  return $this->fallbackDirsPsr0;
139
  }
140
 
141
+ /**
142
+ * @return array[]
143
+ * @psalm-return array<string, string>
144
+ */
145
  public function getFallbackDirsPsr4()
146
  {
147
  return $this->fallbackDirsPsr4;
148
  }
149
 
150
+ /**
151
+ * @return string[] Array of classname => path
152
+ * @psalm-return array<string, string>
153
+ */
154
  public function getClassMap()
155
  {
156
  return $this->classMap;
157
  }
158
 
159
  /**
160
+ * @param string[] $classMap Class to filename map
161
+ * @psalm-param array<string, string> $classMap
162
+ *
163
+ * @return void
164
  */
165
  public function addClassMap(array $classMap)
166
  {
175
  * Registers a set of PSR-0 directories for a given prefix, either
176
  * appending or prepending to the ones previously set for this prefix.
177
  *
178
+ * @param string $prefix The prefix
179
+ * @param string[]|string $paths The PSR-0 root directories
180
+ * @param bool $prepend Whether to prepend the directories
181
+ *
182
+ * @return void
183
  */
184
  public function add($prefix, $paths, $prepend = false)
185
  {
222
  * Registers a set of PSR-4 directories for a given namespace, either
223
  * appending or prepending to the ones previously set for this namespace.
224
  *
225
+ * @param string $prefix The prefix/namespace, with trailing '\\'
226
+ * @param string[]|string $paths The PSR-4 base directories
227
+ * @param bool $prepend Whether to prepend the directories
228
  *
229
  * @throws \InvalidArgumentException
230
+ *
231
+ * @return void
232
  */
233
  public function addPsr4($prefix, $paths, $prepend = false)
234
  {
272
  * Registers a set of PSR-0 directories for a given prefix,
273
  * replacing any others previously set for this prefix.
274
  *
275
+ * @param string $prefix The prefix
276
+ * @param string[]|string $paths The PSR-0 base directories
277
+ *
278
+ * @return void
279
  */
280
  public function set($prefix, $paths)
281
  {
290
  * Registers a set of PSR-4 directories for a given namespace,
291
  * replacing any others previously set for this namespace.
292
  *
293
+ * @param string $prefix The prefix/namespace, with trailing '\\'
294
+ * @param string[]|string $paths The PSR-4 base directories
295
  *
296
  * @throws \InvalidArgumentException
297
+ *
298
+ * @return void
299
  */
300
  public function setPsr4($prefix, $paths)
301
  {
315
  * Turns on searching the include path for class files.
316
  *
317
  * @param bool $useIncludePath
318
+ *
319
+ * @return void
320
  */
321
  public function setUseIncludePath($useIncludePath)
322
  {
339
  * that have not been registered with the class map.
340
  *
341
  * @param bool $classMapAuthoritative
342
+ *
343
+ * @return void
344
  */
345
  public function setClassMapAuthoritative($classMapAuthoritative)
346
  {
361
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362
  *
363
  * @param string|null $apcuPrefix
364
+ *
365
+ * @return void
366
  */
367
  public function setApcuPrefix($apcuPrefix)
368
  {
383
  * Registers this instance as an autoloader.
384
  *
385
  * @param bool $prepend Whether to prepend the autoloader or not
386
+ *
387
+ * @return void
388
  */
389
  public function register($prepend = false)
390
  {
391
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
392
+
393
+ if (null === $this->vendorDir) {
394
+ return;
395
+ }
396
+
397
+ if ($prepend) {
398
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
399
+ } else {
400
+ unset(self::$registeredLoaders[$this->vendorDir]);
401
+ self::$registeredLoaders[$this->vendorDir] = $this;
402
+ }
403
  }
404
 
405
  /**
406
  * Unregisters this instance as an autoloader.
407
+ *
408
+ * @return void
409
  */
410
  public function unregister()
411
  {
412
  spl_autoload_unregister(array($this, 'loadClass'));
413
+
414
+ if (null !== $this->vendorDir) {
415
+ unset(self::$registeredLoaders[$this->vendorDir]);
416
+ }
417
  }
418
 
419
  /**
420
  * Loads the given class or interface.
421
  *
422
  * @param string $class The name of the class
423
+ * @return true|null True if loaded, null otherwise
424
  */
425
  public function loadClass($class)
426
  {
429
 
430
  return true;
431
  }
432
+
433
+ return null;
434
  }
435
 
436
  /**
475
  return $file;
476
  }
477
 
478
+ /**
479
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
480
+ *
481
+ * @return self[]
482
+ */
483
+ public static function getRegisteredLoaders()
484
+ {
485
+ return self::$registeredLoaders;
486
+ }
487
+
488
+ /**
489
+ * @param string $class
490
+ * @param string $ext
491
+ * @return string|false
492
+ */
493
  private function findFileWithExtension($class, $ext)
494
  {
495
  // PSR-4 lookup
561
  * Scope isolated include.
562
  *
563
  * Prevents access to $this/self from included files.
564
+ *
565
+ * @param string $file
566
+ * @return void
567
+ * @private
568
  */
569
  function includeFile($file)
570
  {
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+ /**
19
+ * This class is copied in every Composer installed project and available to all
20
+ *
21
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
+ *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
+ */
25
+ class InstalledVersions
26
+ {
27
+ /**
28
+ * @var mixed[]|null
29
+ * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
30
+ */
31
+ private static $installed;
32
+
33
+ /**
34
+ * @var bool|null
35
+ */
36
+ private static $canGetVendors;
37
+
38
+ /**
39
+ * @var array[]
40
+ * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
41
+ */
42
+ private static $installedByVendor = array();
43
+
44
+ /**
45
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
46
+ *
47
+ * @return string[]
48
+ * @psalm-return list<string>
49
+ */
50
+ public static function getInstalledPackages()
51
+ {
52
+ $packages = array();
53
+ foreach (self::getInstalled() as $installed) {
54
+ $packages[] = array_keys($installed['versions']);
55
+ }
56
+
57
+ if (1 === \count($packages)) {
58
+ return $packages[0];
59
+ }
60
+
61
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
62
+ }
63
+
64
+ /**
65
+ * Returns a list of all package names with a specific type e.g. 'library'
66
+ *
67
+ * @param string $type
68
+ * @return string[]
69
+ * @psalm-return list<string>
70
+ */
71
+ public static function getInstalledPackagesByType($type)
72
+ {
73
+ $packagesByType = array();
74
+
75
+ foreach (self::getInstalled() as $installed) {
76
+ foreach ($installed['versions'] as $name => $package) {
77
+ if (isset($package['type']) && $package['type'] === $type) {
78
+ $packagesByType[] = $name;
79
+ }
80
+ }
81
+ }
82
+
83
+ return $packagesByType;
84
+ }
85
+
86
+ /**
87
+ * Checks whether the given package is installed
88
+ *
89
+ * This also returns true if the package name is provided or replaced by another package
90
+ *
91
+ * @param string $packageName
92
+ * @param bool $includeDevRequirements
93
+ * @return bool
94
+ */
95
+ public static function isInstalled($packageName, $includeDevRequirements = true)
96
+ {
97
+ foreach (self::getInstalled() as $installed) {
98
+ if (isset($installed['versions'][$packageName])) {
99
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
100
+ }
101
+ }
102
+
103
+ return false;
104
+ }
105
+
106
+ /**
107
+ * Checks whether the given package satisfies a version constraint
108
+ *
109
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
110
+ *
111
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
112
+ *
113
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
114
+ * @param string $packageName
115
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
116
+ * @return bool
117
+ */
118
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
119
+ {
120
+ $constraint = $parser->parseConstraints($constraint);
121
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
122
+
123
+ return $provided->matches($constraint);
124
+ }
125
+
126
+ /**
127
+ * Returns a version constraint representing all the range(s) which are installed for a given package
128
+ *
129
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
130
+ * whether a given version of a package is installed, and not just whether it exists
131
+ *
132
+ * @param string $packageName
133
+ * @return string Version constraint usable with composer/semver
134
+ */
135
+ public static function getVersionRanges($packageName)
136
+ {
137
+ foreach (self::getInstalled() as $installed) {
138
+ if (!isset($installed['versions'][$packageName])) {
139
+ continue;
140
+ }
141
+
142
+ $ranges = array();
143
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
144
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
145
+ }
146
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
147
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
148
+ }
149
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
150
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
151
+ }
152
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
153
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
154
+ }
155
+
156
+ return implode(' || ', $ranges);
157
+ }
158
+
159
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
160
+ }
161
+
162
+ /**
163
+ * @param string $packageName
164
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
165
+ */
166
+ public static function getVersion($packageName)
167
+ {
168
+ foreach (self::getInstalled() as $installed) {
169
+ if (!isset($installed['versions'][$packageName])) {
170
+ continue;
171
+ }
172
+
173
+ if (!isset($installed['versions'][$packageName]['version'])) {
174
+ return null;
175
+ }
176
+
177
+ return $installed['versions'][$packageName]['version'];
178
+ }
179
+
180
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
181
+ }
182
+
183
+ /**
184
+ * @param string $packageName
185
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
186
+ */
187
+ public static function getPrettyVersion($packageName)
188
+ {
189
+ foreach (self::getInstalled() as $installed) {
190
+ if (!isset($installed['versions'][$packageName])) {
191
+ continue;
192
+ }
193
+
194
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
195
+ return null;
196
+ }
197
+
198
+ return $installed['versions'][$packageName]['pretty_version'];
199
+ }
200
+
201
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
202
+ }
203
+
204
+ /**
205
+ * @param string $packageName
206
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
207
+ */
208
+ public static function getReference($packageName)
209
+ {
210
+ foreach (self::getInstalled() as $installed) {
211
+ if (!isset($installed['versions'][$packageName])) {
212
+ continue;
213
+ }
214
+
215
+ if (!isset($installed['versions'][$packageName]['reference'])) {
216
+ return null;
217
+ }
218
+
219
+ return $installed['versions'][$packageName]['reference'];
220
+ }
221
+
222
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
223
+ }
224
+
225
+ /**
226
+ * @param string $packageName
227
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
228
+ */
229
+ public static function getInstallPath($packageName)
230
+ {
231
+ foreach (self::getInstalled() as $installed) {
232
+ if (!isset($installed['versions'][$packageName])) {
233
+ continue;
234
+ }
235
+
236
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
237
+ }
238
+
239
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
240
+ }
241
+
242
+ /**
243
+ * @return array
244
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
245
+ */
246
+ public static function getRootPackage()
247
+ {
248
+ $installed = self::getInstalled();
249
+
250
+ return $installed[0]['root'];
251
+ }
252
+
253
+ /**
254
+ * Returns the raw installed.php data for custom implementations
255
+ *
256
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
257
+ * @return array[]
258
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
259
+ */
260
+ public static function getRawData()
261
+ {
262
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
263
+
264
+ if (null === self::$installed) {
265
+ // only require the installed.php file if this file is loaded from its dumped location,
266
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
267
+ if (substr(__DIR__, -8, 1) !== 'C') {
268
+ self::$installed = include __DIR__ . '/installed.php';
269
+ } else {
270
+ self::$installed = array();
271
+ }
272
+ }
273
+
274
+ return self::$installed;
275
+ }
276
+
277
+ /**
278
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
279
+ *
280
+ * @return array[]
281
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
282
+ */
283
+ public static function getAllRawData()
284
+ {
285
+ return self::getInstalled();
286
+ }
287
+
288
+ /**
289
+ * Lets you reload the static array from another file
290
+ *
291
+ * This is only useful for complex integrations in which a project needs to use
292
+ * this class but then also needs to execute another project's autoloader in process,
293
+ * and wants to ensure both projects have access to their version of installed.php.
294
+ *
295
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
296
+ * the data it needs from this class, then call reload() with
297
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
298
+ * the project in which it runs can then also use this class safely, without
299
+ * interference between PHPUnit's dependencies and the project's dependencies.
300
+ *
301
+ * @param array[] $data A vendor/composer/installed.php data set
302
+ * @return void
303
+ *
304
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
305
+ */
306
+ public static function reload($data)
307
+ {
308
+ self::$installed = $data;
309
+ self::$installedByVendor = array();
310
+ }
311
+
312
+ /**
313
+ * @return array[]
314
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
315
+ */
316
+ private static function getInstalled()
317
+ {
318
+ if (null === self::$canGetVendors) {
319
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
320
+ }
321
+
322
+ $installed = array();
323
+
324
+ if (self::$canGetVendors) {
325
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
326
+ if (isset(self::$installedByVendor[$vendorDir])) {
327
+ $installed[] = self::$installedByVendor[$vendorDir];
328
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
329
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
330
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
331
+ self::$installed = $installed[count($installed) - 1];
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ if (null === self::$installed) {
338
+ // only require the installed.php file if this file is loaded from its dumped location,
339
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
340
+ if (substr(__DIR__, -8, 1) !== 'C') {
341
+ self::$installed = require __DIR__ . '/installed.php';
342
+ } else {
343
+ self::$installed = array();
344
+ }
345
+ }
346
+ $installed[] = self::$installed;
347
+
348
+ return $installed;
349
+ }
350
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  );
vendor/composer/autoload_files.php CHANGED
@@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  '41c664bd04a95c2d6a2f2a3e00f06593' => $vendorDir . '/publishpress/wordpress-reviews/ReviewsController.php',
10
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ '0078757fbd019a5f202f2be6585c3626' => $vendorDir . '/publishpress/wordpress-banners/BannersMain.php',
10
  '41c664bd04a95c2d6a2f2a3e00f06593' => $vendorDir . '/publishpress/wordpress-reviews/ReviewsController.php',
11
  );
vendor/composer/autoload_real.php CHANGED
@@ -22,13 +22,15 @@ class ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9
22
  return self::$loader;
23
  }
24
 
 
 
25
  spl_autoload_register(array('ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9', 'loadClassLoader'), true, true);
26
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
  spl_autoload_unregister(array('ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
- require_once __DIR__ . '/autoload_static.php';
32
 
33
  call_user_func(\Composer\Autoload\ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::getInitializer($loader));
34
  } else {
@@ -63,11 +65,16 @@ class ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9
63
  }
64
  }
65
 
 
 
 
 
 
66
  function composerRequire32a3d3886cf8ef146352508e41da4ee9($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
- require $file;
70
-
71
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
 
 
72
  }
73
  }
22
  return self::$loader;
23
  }
24
 
25
+ require __DIR__ . '/platform_check.php';
26
+
27
  spl_autoload_register(array('ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
  spl_autoload_unregister(array('ComposerAutoloaderInit32a3d3886cf8ef146352508e41da4ee9', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
 
35
  call_user_func(\Composer\Autoload\ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::getInitializer($loader));
36
  } else {
65
  }
66
  }
67
 
68
+ /**
69
+ * @param string $fileIdentifier
70
+ * @param string $file
71
+ * @return void
72
+ */
73
  function composerRequire32a3d3886cf8ef146352508e41da4ee9($fileIdentifier, $file)
74
  {
75
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
 
 
76
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
77
+
78
+ require $file;
79
  }
80
  }
vendor/composer/autoload_static.php CHANGED
@@ -7,6 +7,7 @@ namespace Composer\Autoload;
7
  class ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9
8
  {
9
  public static $files = array (
 
10
  '41c664bd04a95c2d6a2f2a3e00f06593' => __DIR__ . '/..' . '/publishpress/wordpress-reviews/ReviewsController.php',
11
  );
12
 
@@ -39,12 +40,17 @@ class ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9
39
  ),
40
  );
41
 
 
 
 
 
42
  public static function getInitializer(ClassLoader $loader)
43
  {
44
  return \Closure::bind(function () use ($loader) {
45
  $loader->prefixLengthsPsr4 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixLengthsPsr4;
46
  $loader->prefixDirsPsr4 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixDirsPsr4;
47
  $loader->prefixesPsr0 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixesPsr0;
 
48
 
49
  }, null, ClassLoader::class);
50
  }
7
  class ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9
8
  {
9
  public static $files = array (
10
+ '0078757fbd019a5f202f2be6585c3626' => __DIR__ . '/..' . '/publishpress/wordpress-banners/BannersMain.php',
11
  '41c664bd04a95c2d6a2f2a3e00f06593' => __DIR__ . '/..' . '/publishpress/wordpress-reviews/ReviewsController.php',
12
  );
13
 
40
  ),
41
  );
42
 
43
+ public static $classMap = array (
44
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
45
+ );
46
+
47
  public static function getInitializer(ClassLoader $loader)
48
  {
49
  return \Closure::bind(function () use ($loader) {
50
  $loader->prefixLengthsPsr4 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixLengthsPsr4;
51
  $loader->prefixDirsPsr4 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixDirsPsr4;
52
  $loader->prefixesPsr0 = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$prefixesPsr0;
53
+ $loader->classMap = ComposerStaticInit32a3d3886cf8ef146352508e41da4ee9::$classMap;
54
 
55
  }, null, ClassLoader::class);
56
  }
vendor/composer/installed.json CHANGED
@@ -1,249 +1,271 @@
1
- [
2
- {
3
- "name": "pimple/pimple",
4
- "version": "v3.2.3",
5
- "version_normalized": "3.2.3.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/silexphp/Pimple.git",
9
- "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
14
- "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "php": ">=5.3.0",
19
- "psr/container": "^1.0"
20
- },
21
- "require-dev": {
22
- "symfony/phpunit-bridge": "^3.2"
23
- },
24
- "time": "2018-01-21T07:42:36+00:00",
25
- "type": "library",
26
- "extra": {
27
- "branch-alias": {
28
- "dev-master": "3.2.x-dev"
29
- }
30
- },
31
- "installation-source": "dist",
32
- "autoload": {
33
- "psr-0": {
34
- "Pimple": "src/"
35
- }
36
- },
37
- "notification-url": "https://packagist.org/downloads/",
38
- "license": [
39
- "MIT"
40
- ],
41
- "authors": [
42
- {
43
- "name": "Fabien Potencier",
44
- "email": "fabien@symfony.com"
45
- }
46
- ],
47
- "description": "Pimple, a simple Dependency Injection Container",
48
- "homepage": "http://pimple.sensiolabs.org",
49
- "keywords": [
50
- "container",
51
- "dependency injection"
52
- ]
53
- },
54
- {
55
- "name": "psr/container",
56
- "version": "1.0.0",
57
- "version_normalized": "1.0.0.0",
58
- "source": {
59
- "type": "git",
60
- "url": "https://github.com/php-fig/container.git",
61
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
62
- },
63
- "dist": {
64
- "type": "zip",
65
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
66
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
67
- "shasum": ""
68
- },
69
- "require": {
70
- "php": ">=5.3.0"
71
- },
72
- "time": "2017-02-14T16:28:37+00:00",
73
- "type": "library",
74
- "extra": {
75
- "branch-alias": {
76
- "dev-master": "1.0.x-dev"
77
- }
78
- },
79
- "installation-source": "dist",
80
- "autoload": {
81
- "psr-4": {
82
- "Psr\\Container\\": "src/"
83
- }
84
- },
85
- "notification-url": "https://packagist.org/downloads/",
86
- "license": [
87
- "MIT"
88
- ],
89
- "authors": [
90
- {
91
- "name": "PHP-FIG",
92
- "homepage": "http://www.php-fig.org/"
93
- }
94
- ],
95
- "description": "Common Container Interface (PHP FIG PSR-11)",
96
- "homepage": "https://github.com/php-fig/container",
97
- "keywords": [
98
- "PSR-11",
99
- "container",
100
- "container-interface",
101
- "container-interop",
102
- "psr"
103
- ]
104
- },
105
- {
106
- "name": "publishpress/wordpress-banners",
107
- "version": "v1.2.4",
108
- "version_normalized": "1.2.4.0",
109
- "source": {
110
- "type": "git",
111
- "url": "https://github.com/publishpress/wordpress-banners.git",
112
- "reference": "76db80ef2166e671fff021fdce20ff4ec206def2"
113
- },
114
- "dist": {
115
- "type": "zip",
116
- "url": "https://api.github.com/repos/publishpress/wordpress-banners/zipball/76db80ef2166e671fff021fdce20ff4ec206def2",
117
- "reference": "76db80ef2166e671fff021fdce20ff4ec206def2",
118
- "shasum": ""
119
- },
120
- "require": {
121
- "php": ">=5.6.20"
122
- },
123
- "time": "2021-11-22T22:01:45+00:00",
124
- "type": "library",
125
- "installation-source": "dist",
126
- "notification-url": "https://packagist.org/downloads/",
127
- "license": [
128
- "GPL-3.0-or-later"
129
- ],
130
- "authors": [
131
- {
132
- "name": "PublishPress",
133
- "email": "help@publishpress.com"
134
- }
135
- ],
136
- "description": "Display banners in admin pages of PublishPress Plugins.",
137
- "homepage": "http://publishpress.com/"
138
- },
139
- {
140
- "name": "publishpress/wordpress-reviews",
141
- "version": "v1.1.16",
142
- "version_normalized": "1.1.16.0",
143
- "source": {
144
- "type": "git",
145
- "url": "https://github.com/publishpress/wordpress-reviews.git",
146
- "reference": "2b647f104d7aa64e0c72c028f86e1875035b7a91"
147
- },
148
- "dist": {
149
- "type": "zip",
150
- "url": "https://api.github.com/repos/publishpress/wordpress-reviews/zipball/2b647f104d7aa64e0c72c028f86e1875035b7a91",
151
- "reference": "2b647f104d7aa64e0c72c028f86e1875035b7a91",
152
- "shasum": ""
153
- },
154
- "require": {
155
- "php": ">=5.6.20"
156
- },
157
- "require-dev": {
158
- "codeception/module-asserts": "^1.0",
159
- "codeception/module-cli": "^1.0",
160
- "codeception/module-db": "^1.0",
161
- "codeception/module-filesystem": "^1.0",
162
- "codeception/module-phpbrowser": "^1.0",
163
- "codeception/module-rest": "^1.3",
164
- "codeception/module-webdriver": "^1.0",
165
- "codeception/util-universalframework": "^1.0",
166
- "lucatume/wp-browser": "^3",
167
- "overtrue/phplint": "^2.1",
168
- "phpmd/phpmd": "^2.8",
169
- "publishpress/publishpress-plugin-builder": "^1.2",
170
- "sebastian/phpcpd": "^5.0",
171
- "squizlabs/php_codesniffer": "^3.5",
172
- "wp-cli/i18n-command": "^2.2",
173
- "wp-cli/wp-cli": "^2.5"
174
- },
175
- "time": "2021-12-01T20:36:26+00:00",
176
- "type": "library",
177
- "installation-source": "dist",
178
- "autoload": {
179
- "files": [
180
- "ReviewsController.php"
181
- ]
182
- },
183
- "notification-url": "https://packagist.org/downloads/",
184
- "license": [
185
- "GPL-3.0-or-later"
186
- ],
187
- "authors": [
188
- {
189
- "name": "PublishPress",
190
- "email": "help@publishpress.com"
191
- },
192
- {
193
- "name": "Daniel Iser",
194
- "homepage": "https://github.com/danieliser/WP-Product-In-Dash-Review-Requests"
195
- }
196
- ],
197
- "description": "Library for showing a five-star review banner.",
198
- "homepage": "http://publishpress.com/",
199
- "keywords": [
200
- "review",
201
- "reviews",
202
- "wordpress plugin"
203
- ]
204
- },
205
- {
206
- "name": "publishpress/wordpress-version-notices",
207
- "version": "1.1.3",
208
- "version_normalized": "1.1.3.0",
209
- "source": {
210
- "type": "git",
211
- "url": "https://github.com/publishpress/WordPress-Version-Notices.git",
212
- "reference": "57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3"
213
- },
214
- "dist": {
215
- "type": "zip",
216
- "url": "https://api.github.com/repos/publishpress/WordPress-Version-Notices/zipball/57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3",
217
- "reference": "57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3",
218
- "shasum": ""
219
  },
220
- "require": {
221
- "php": ">=5.6.20",
222
- "pimple/pimple": "^3"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  },
224
- "require-dev": {
225
- "lucatume/wp-browser": "^2.4"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  },
227
- "time": "2021-07-14T16:15:47+00:00",
228
- "type": "library",
229
- "installation-source": "dist",
230
- "autoload": {
231
- "psr-4": {
232
- "PPVersionNotices\\": "src/"
233
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  },
235
- "notification-url": "https://packagist.org/downloads/",
236
- "license": [
237
- "GPL-3.0-or-later"
238
- ],
239
- "authors": [
240
- {
241
- "name": "PublishPress",
242
- "email": "help@publishpress.com",
243
- "homepage": "https://publishpress.com",
244
- "role": "Developer"
245
- }
246
- ],
247
- "description": "Library for displaying version notices for Pro plugins in WordPress."
248
- }
249
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "pimple/pimple",
5
+ "version": "v3.2.3",
6
+ "version_normalized": "3.2.3.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/silexphp/Pimple.git",
10
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
15
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "php": ">=5.3.0",
20
+ "psr/container": "^1.0"
21
+ },
22
+ "require-dev": {
23
+ "symfony/phpunit-bridge": "^3.2"
24
+ },
25
+ "time": "2018-01-21T07:42:36+00:00",
26
+ "type": "library",
27
+ "extra": {
28
+ "branch-alias": {
29
+ "dev-master": "3.2.x-dev"
30
+ }
31
+ },
32
+ "installation-source": "dist",
33
+ "autoload": {
34
+ "psr-0": {
35
+ "Pimple": "src/"
36
+ }
37
+ },
38
+ "notification-url": "https://packagist.org/downloads/",
39
+ "license": [
40
+ "MIT"
41
+ ],
42
+ "authors": [
43
+ {
44
+ "name": "Fabien Potencier",
45
+ "email": "fabien@symfony.com"
46
+ }
47
+ ],
48
+ "description": "Pimple, a simple Dependency Injection Container",
49
+ "homepage": "http://pimple.sensiolabs.org",
50
+ "keywords": [
51
+ "container",
52
+ "dependency injection"
53
+ ],
54
+ "install-path": "../pimple/pimple"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  },
56
+ {
57
+ "name": "psr/container",
58
+ "version": "1.0.0",
59
+ "version_normalized": "1.0.0.0",
60
+ "source": {
61
+ "type": "git",
62
+ "url": "https://github.com/php-fig/container.git",
63
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
64
+ },
65
+ "dist": {
66
+ "type": "zip",
67
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
68
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
69
+ "shasum": ""
70
+ },
71
+ "require": {
72
+ "php": ">=5.3.0"
73
+ },
74
+ "time": "2017-02-14T16:28:37+00:00",
75
+ "type": "library",
76
+ "extra": {
77
+ "branch-alias": {
78
+ "dev-master": "1.0.x-dev"
79
+ }
80
+ },
81
+ "installation-source": "dist",
82
+ "autoload": {
83
+ "psr-4": {
84
+ "Psr\\Container\\": "src/"
85
+ }
86
+ },
87
+ "notification-url": "https://packagist.org/downloads/",
88
+ "license": [
89
+ "MIT"
90
+ ],
91
+ "authors": [
92
+ {
93
+ "name": "PHP-FIG",
94
+ "homepage": "http://www.php-fig.org/"
95
+ }
96
+ ],
97
+ "description": "Common Container Interface (PHP FIG PSR-11)",
98
+ "homepage": "https://github.com/php-fig/container",
99
+ "keywords": [
100
+ "PSR-11",
101
+ "container",
102
+ "container-interface",
103
+ "container-interop",
104
+ "psr"
105
+ ],
106
+ "install-path": "../psr/container"
107
  },
108
+ {
109
+ "name": "publishpress/wordpress-banners",
110
+ "version": "v1.2.8",
111
+ "version_normalized": "1.2.8.0",
112
+ "source": {
113
+ "type": "git",
114
+ "url": "https://github.com/publishpress/wordpress-banners.git",
115
+ "reference": "79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c"
116
+ },
117
+ "dist": {
118
+ "type": "zip",
119
+ "url": "https://api.github.com/repos/publishpress/wordpress-banners/zipball/79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c",
120
+ "reference": "79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c",
121
+ "shasum": ""
122
+ },
123
+ "require": {
124
+ "php": ">=5.6.20"
125
+ },
126
+ "time": "2022-03-18T14:49:29+00:00",
127
+ "type": "library",
128
+ "installation-source": "dist",
129
+ "autoload": {
130
+ "files": [
131
+ "BannersMain.php"
132
+ ]
133
+ },
134
+ "notification-url": "https://packagist.org/downloads/",
135
+ "license": [
136
+ "GPL-3.0-or-later"
137
+ ],
138
+ "authors": [
139
+ {
140
+ "name": "PublishPress",
141
+ "email": "help@publishpress.com"
142
+ }
143
+ ],
144
+ "description": "Display banners in admin pages of PublishPress Plugins.",
145
+ "homepage": "http://publishpress.com/",
146
+ "support": {
147
+ "issues": "https://github.com/publishpress/wordpress-banners/issues",
148
+ "source": "https://github.com/publishpress/wordpress-banners/tree/v1.2.8"
149
+ },
150
+ "install-path": "../publishpress/wordpress-banners"
151
  },
152
+ {
153
+ "name": "publishpress/wordpress-reviews",
154
+ "version": "v1.1.18",
155
+ "version_normalized": "1.1.18.0",
156
+ "source": {
157
+ "type": "git",
158
+ "url": "https://github.com/publishpress/wordpress-reviews.git",
159
+ "reference": "0020705b8f6a7177fc393c6c42c82171bf9e2fbd"
160
+ },
161
+ "dist": {
162
+ "type": "zip",
163
+ "url": "https://api.github.com/repos/publishpress/wordpress-reviews/zipball/0020705b8f6a7177fc393c6c42c82171bf9e2fbd",
164
+ "reference": "0020705b8f6a7177fc393c6c42c82171bf9e2fbd",
165
+ "shasum": ""
166
+ },
167
+ "require": {
168
+ "php": ">=5.6.20"
169
+ },
170
+ "require-dev": {
171
+ "codeception/module-asserts": "^1.0",
172
+ "codeception/module-cli": "^1.0",
173
+ "codeception/module-db": "^1.0",
174
+ "codeception/module-filesystem": "^1.0",
175
+ "codeception/module-phpbrowser": "^1.0",
176
+ "codeception/module-rest": "^1.3",
177
+ "codeception/module-webdriver": "^1.0",
178
+ "codeception/util-universalframework": "^1.0",
179
+ "lucatume/wp-browser": "^3",
180
+ "overtrue/phplint": "^2.1",
181
+ "phpmd/phpmd": "^2.8",
182
+ "publishpress/publishpress-plugin-builder": "^1.2",
183
+ "sebastian/phpcpd": "^5.0",
184
+ "squizlabs/php_codesniffer": "^3.5",
185
+ "wp-cli/i18n-command": "^2.2",
186
+ "wp-cli/wp-cli": "^2.5"
187
+ },
188
+ "time": "2021-12-15T00:03:53+00:00",
189
+ "type": "library",
190
+ "installation-source": "dist",
191
+ "autoload": {
192
+ "files": [
193
+ "ReviewsController.php"
194
+ ]
195
+ },
196
+ "notification-url": "https://packagist.org/downloads/",
197
+ "license": [
198
+ "GPL-3.0-or-later"
199
+ ],
200
+ "authors": [
201
+ {
202
+ "name": "PublishPress",
203
+ "email": "help@publishpress.com"
204
+ },
205
+ {
206
+ "name": "Daniel Iser",
207
+ "homepage": "https://github.com/danieliser/WP-Product-In-Dash-Review-Requests"
208
+ }
209
+ ],
210
+ "description": "Library for showing a five-star review banner.",
211
+ "homepage": "http://publishpress.com/",
212
+ "keywords": [
213
+ "review",
214
+ "reviews",
215
+ "wordpress plugin"
216
+ ],
217
+ "support": {
218
+ "issues": "https://github.com/publishpress/wordpress-reviews/issues",
219
+ "source": "https://github.com/publishpress/wordpress-reviews/tree/v1.1.18"
220
+ },
221
+ "install-path": "../publishpress/wordpress-reviews"
222
  },
223
+ {
224
+ "name": "publishpress/wordpress-version-notices",
225
+ "version": "1.1.3",
226
+ "version_normalized": "1.1.3.0",
227
+ "source": {
228
+ "type": "git",
229
+ "url": "https://github.com/publishpress/WordPress-Version-Notices.git",
230
+ "reference": "57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3"
231
+ },
232
+ "dist": {
233
+ "type": "zip",
234
+ "url": "https://api.github.com/repos/publishpress/WordPress-Version-Notices/zipball/57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3",
235
+ "reference": "57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3",
236
+ "shasum": ""
237
+ },
238
+ "require": {
239
+ "php": ">=5.6.20",
240
+ "pimple/pimple": "^3"
241
+ },
242
+ "require-dev": {
243
+ "lucatume/wp-browser": "^2.4"
244
+ },
245
+ "time": "2021-07-14T16:15:47+00:00",
246
+ "type": "library",
247
+ "installation-source": "dist",
248
+ "autoload": {
249
+ "psr-4": {
250
+ "PPVersionNotices\\": "src/"
251
+ }
252
+ },
253
+ "notification-url": "https://packagist.org/downloads/",
254
+ "license": [
255
+ "GPL-3.0-or-later"
256
+ ],
257
+ "authors": [
258
+ {
259
+ "name": "PublishPress",
260
+ "email": "help@publishpress.com",
261
+ "homepage": "https://publishpress.com",
262
+ "role": "Developer"
263
+ }
264
+ ],
265
+ "description": "Library for displaying version notices for Pro plugins in WordPress.",
266
+ "install-path": "../publishpress/wordpress-version-notices"
267
+ }
268
+ ],
269
+ "dev": false,
270
+ "dev-package-names": []
271
+ }
vendor/composer/installed.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array(
2
+ 'root' => array(
3
+ 'pretty_version' => '1.0.0+no-version-set',
4
+ 'version' => '1.0.0.0',
5
+ 'type' => 'wordpress-plugin',
6
+ 'install_path' => __DIR__ . '/../../',
7
+ 'aliases' => array(),
8
+ 'reference' => NULL,
9
+ 'name' => 'publishpress/publishpress-capabilities',
10
+ 'dev' => false,
11
+ ),
12
+ 'versions' => array(
13
+ 'pimple/pimple' => array(
14
+ 'pretty_version' => 'v3.2.3',
15
+ 'version' => '3.2.3.0',
16
+ 'type' => 'library',
17
+ 'install_path' => __DIR__ . '/../pimple/pimple',
18
+ 'aliases' => array(),
19
+ 'reference' => '9e403941ef9d65d20cba7d54e29fe906db42cf32',
20
+ 'dev_requirement' => false,
21
+ ),
22
+ 'psr/container' => array(
23
+ 'pretty_version' => '1.0.0',
24
+ 'version' => '1.0.0.0',
25
+ 'type' => 'library',
26
+ 'install_path' => __DIR__ . '/../psr/container',
27
+ 'aliases' => array(),
28
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
29
+ 'dev_requirement' => false,
30
+ ),
31
+ 'publishpress/publishpress-capabilities' => array(
32
+ 'pretty_version' => '1.0.0+no-version-set',
33
+ 'version' => '1.0.0.0',
34
+ 'type' => 'wordpress-plugin',
35
+ 'install_path' => __DIR__ . '/../../',
36
+ 'aliases' => array(),
37
+ 'reference' => NULL,
38
+ 'dev_requirement' => false,
39
+ ),
40
+ 'publishpress/wordpress-banners' => array(
41
+ 'pretty_version' => 'v1.2.8',
42
+ 'version' => '1.2.8.0',
43
+ 'type' => 'library',
44
+ 'install_path' => __DIR__ . '/../publishpress/wordpress-banners',
45
+ 'aliases' => array(),
46
+ 'reference' => '79a02716f89b93daec5b2dc0e8c1bc4d1cf9967c',
47
+ 'dev_requirement' => false,
48
+ ),
49
+ 'publishpress/wordpress-reviews' => array(
50
+ 'pretty_version' => 'v1.1.18',
51
+ 'version' => '1.1.18.0',
52
+ 'type' => 'library',
53
+ 'install_path' => __DIR__ . '/../publishpress/wordpress-reviews',
54
+ 'aliases' => array(),
55
+ 'reference' => '0020705b8f6a7177fc393c6c42c82171bf9e2fbd',
56
+ 'dev_requirement' => false,
57
+ ),
58
+ 'publishpress/wordpress-version-notices' => array(
59
+ 'pretty_version' => '1.1.3',
60
+ 'version' => '1.1.3.0',
61
+ 'type' => 'library',
62
+ 'install_path' => __DIR__ . '/../publishpress/wordpress-version-notices',
63
+ 'aliases' => array(),
64
+ 'reference' => '57e7cbb3e9b9ac366ddd3fd0a80c2e2eabf75ea3',
65
+ 'dev_requirement' => false,
66
+ ),
67
+ ),
68
+ );
vendor/composer/platform_check.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 50620)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 5.6.20". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
vendor/publishpress/wordpress-banners/BannersMain.php CHANGED
@@ -24,98 +24,103 @@ namespace PublishPress\WordPressBanners;
24
 
25
  use Exception;
26
 
27
- define('PP_WP_BANNERS_VERSION', '1.2.4');
28
-
29
- class BannersMain
30
- {
31
-
32
- /**
33
- * HTML output banner inviting to install another PublishPress plugin or advertise a feature
34
- *
35
- * @param string $heading Custom heading; disabled if blank
36
- * @param string $title Custom title; disabled if blank
37
- * @param array $content Content to display. e.g. Feature list or a single paragraph
38
- * @param string $link Link to apply to button and image
39
- * @param string $link_title Link title
40
- * @param string $image A filename from assets/images/ folder; disabled if blank
41
- *
42
- * @return void
43
- */
44
- public function pp_display_banner(
45
- $heading = '',
46
- $title = '',
47
- $contents = array(),
48
- $link = '',
49
- $link_title = '',
50
- $image = ''
51
- ) {
52
- if( !empty($heading) ) {
53
- ?>
54
- <p class="nav-tab-wrapper pp-recommendations-heading">
55
- <?php echo $heading ?>
56
- </p>
57
- <?php
58
- }
59
- ?>
60
 
61
- <div class="pp-sidebar-box">
 
 
62
 
63
- <?php
64
- if( !empty($title) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  ?>
66
- <h3>
67
- <?php echo $title ?>
68
- </h3>
69
  <?php
70
  }
 
71
 
72
- if( count($contents) > 1 ) {
73
- ?>
74
- <ul>
 
 
 
 
 
75
  <?php
76
- foreach($contents as $content) {
77
- ?>
78
- <li>
79
- <?php echo $content; ?>
80
- </li>
81
  <?php
82
- }
 
 
 
 
 
 
 
 
 
 
83
  ?>
84
- </ul>
85
- <?php
86
- } else {
87
  ?>
88
- <p><?php echo $contents[0] ?></p>
89
- <?php
90
- }
91
- ?>
92
 
93
- <p>
94
- <a class="button button-primary" href="<?php echo $link ?>">
95
- <?php echo $link_title ?>
96
- </a>
97
- </p>
98
 
99
- <?php
100
- if(!empty($image) && file_exists(__DIR__ . '/assets/images/' . $image)) {
101
- ?>
102
- <div class="pp-box-banner-image">
103
- <a href="<?php echo $link ?>">
104
- <img src="<?php echo plugin_dir_url(__FILE__) . 'assets/images/' . $image ?>" title="<?php echo $title ?>" />
105
- </a>
106
- </div>
107
  <?php
108
- }
109
- ?>
 
 
 
 
 
 
 
 
 
110
 
111
- </div>
112
 
113
- <?php
114
- wp_enqueue_style(
115
- 'pp-wordpress-banners-style',
116
- plugin_dir_url( __FILE__ ) . 'assets/css/style.css',
117
- false,
118
- PP_WP_BANNERS_VERSION
119
- );
120
- }
 
121
  }
24
 
25
  use Exception;
26
 
27
+ if (! defined('PP_WP_BANNERS_VERSION')) {
28
+ define('PP_WP_BANNERS_VERSION', '1.2.8');
29
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
+ if (! class_exists('\\PublishPress\\WordPressBanners\\BannersMain')) {
32
+ class BannersMain
33
+ {
34
 
35
+ /**
36
+ * HTML output banner inviting to install another PublishPress plugin or advertise a feature
37
+ *
38
+ * @param string $heading Custom heading; disabled if blank
39
+ * @param string $title Custom title; disabled if blank
40
+ * @param array $content Content to display. e.g. Feature list or a single paragraph
41
+ * @param string $link Link to apply to button and image
42
+ * @param string $link_title Link title
43
+ * @param string $image A filename from assets/images/ folder; disabled if blank
44
+ *
45
+ * @return void
46
+ */
47
+ public function pp_display_banner(
48
+ $heading = '',
49
+ $title = '',
50
+ $contents = array(),
51
+ $link = '',
52
+ $link_title = '',
53
+ $image = ''
54
+ ) {
55
+ if (! empty($heading)) {
56
  ?>
57
+ <p class="nav-tab-wrapper pp-recommendations-heading">
58
+ <?php echo $heading ?>
59
+ </p>
60
  <?php
61
  }
62
+ ?>
63
 
64
+ <div class="pp-sidebar-box">
65
+
66
+ <?php
67
+ if (! empty($title)) {
68
+ ?>
69
+ <h3>
70
+ <?php echo $title ?>
71
+ </h3>
72
  <?php
73
+ }
74
+
75
+ if (count($contents) > 1) {
76
+ ?>
77
+ <ul>
78
  <?php
79
+ foreach ($contents as $content) {
80
+ ?>
81
+ <li>
82
+ <?php echo $content; ?>
83
+ </li>
84
+ <?php
85
+ }
86
+ ?>
87
+ </ul>
88
+ <?php
89
+ } else {
90
  ?>
91
+ <p><?php echo $contents[0] ?></p>
92
+ <?php
93
+ }
94
  ?>
 
 
 
 
95
 
96
+ <p>
97
+ <a class="button button-primary" href="<?php echo $link ?>">
98
+ <?php echo $link_title ?>
99
+ </a>
100
+ </p>
101
 
 
 
 
 
 
 
 
 
102
  <?php
103
+ if (! empty($image) && file_exists(__DIR__ . '/assets/images/' . $image)) {
104
+ ?>
105
+ <div class="pp-box-banner-image">
106
+ <a href="<?php echo $link ?>">
107
+ <img src="<?php echo plugin_dir_url(__FILE__) . 'assets/images/' . $image ?>" title="<?php
108
+ echo $title ?>"/>
109
+ </a>
110
+ </div>
111
+ <?php
112
+ }
113
+ ?>
114
 
115
+ </div>
116
 
117
+ <?php
118
+ wp_enqueue_style(
119
+ 'pp-wordpress-banners-style',
120
+ plugin_dir_url(__FILE__) . 'assets/css/style.css',
121
+ false,
122
+ PP_WP_BANNERS_VERSION
123
+ );
124
+ }
125
+ }
126
  }
vendor/publishpress/wordpress-banners/composer.json CHANGED
@@ -13,5 +13,10 @@
13
  "email": "help@publishpress.com"
14
  }
15
  ],
 
 
 
 
 
16
  "minimum-stability": "dev"
17
  }
13
  "email": "help@publishpress.com"
14
  }
15
  ],
16
+ "autoload": {
17
+ "files": [
18
+ "BannersMain.php"
19
+ ]
20
+ },
21
  "minimum-stability": "dev"
22
  }
vendor/publishpress/wordpress-reviews/ReviewsController.php CHANGED
@@ -56,11 +56,6 @@ class ReviewsController
56
  */
57
  private $pluginName;
58
 
59
- /**
60
- * @var string
61
- */
62
- private $apiUrl = '';
63
-
64
  /**
65
  * @var array
66
  */
@@ -265,7 +260,7 @@ class ReviewsController
265
  $selected = [];
266
  }
267
 
268
- if (! isset($selected[$this->pluginSlug])) {
269
  $dismissedTriggers = $this->getDismissedTriggerGroups();
270
 
271
  $triggers = $this->getTriggers();
@@ -283,7 +278,7 @@ class ReviewsController
283
  }
284
  }
285
 
286
- if (isset($selected[$this->pluginSlug])) {
287
  break;
288
  }
289
  }
@@ -332,7 +327,7 @@ class ReviewsController
332
  $triggers = [];
333
  }
334
 
335
- if (! isset($triggers[$this->pluginSlug])) {
336
  $timeMessage = __(
337
  'Hey, you\'ve been using %1$s for %2$s on your site. We hope the plugin has been useful. Please could you quickly leave a 5-star rating on WordPress.org? It really does help to keep %1$s growing.',
338
  $this->pluginSlug
@@ -387,13 +382,14 @@ class ReviewsController
387
  }
388
 
389
  if (isset($group)) {
390
- if (! isset($triggers[$this->pluginSlug][$group])) {
 
391
  return false;
392
  }
393
 
394
  if (! isset($code)) {
395
  $return = $triggers[$this->pluginSlug][$group];
396
- } elseif (isset($triggers[$this->pluginSlug][$group]['triggers'][$code])) {
397
  $return = $triggers[$this->pluginSlug][$group]['triggers'][$code];
398
  } else {
399
  $return = false;
@@ -416,7 +412,7 @@ class ReviewsController
416
  $selected = [];
417
  }
418
 
419
- if (! isset($selected[$this->pluginSlug])) {
420
  $dismissedTriggers = $this->getDismissedTriggerGroups();
421
 
422
  foreach ($this->getTriggers() as $g => $group) {
@@ -432,13 +428,13 @@ class ReviewsController
432
  }
433
  }
434
 
435
- if (isset($selected[$this->pluginSlug])) {
436
  break;
437
  }
438
  }
439
  }
440
 
441
- if (! isset($selected[$this->pluginSlug])) {
442
  return false;
443
  }
444
 
@@ -463,7 +459,7 @@ class ReviewsController
463
 
464
  if (empty($key)) {
465
  $return = $trigger;
466
- } elseif (isset($trigger[$key])) {
467
  $return = $trigger[$key];
468
  } else {
469
  $return = false;
@@ -569,20 +565,6 @@ class ReviewsController
569
  reason: reason
570
  }
571
  });
572
-
573
- <?php if (! empty($this->apiUrl)) : ?>
574
- $.ajax({
575
- method: "POST",
576
- dataType: "json",
577
- url: '<?php echo $this->apiUrl; ?>',
578
- data: {
579
- trigger_group: trigger.group,
580
- trigger_code: trigger.code,
581
- reason: reason,
582
- uuid: '<?php echo $uuid; ?>'
583
- }
584
- });
585
- <?php endif; ?>
586
  }
587
 
588
  $(document)
@@ -616,7 +598,7 @@ class ReviewsController
616
  <img src="<?php
617
  echo $this->iconUrl; ?>" class="notice-icon" alt="<?php
618
  echo $this->pluginName; ?> logo"/>
619
- <?php
620
  endif; ?>
621
 
622
  <p><?php
@@ -626,7 +608,7 @@ class ReviewsController
626
  echo "$this->pluginSlug-dismiss"; ?>"
627
  target="_blank"
628
  href="<?php
629
- echo $trigger['link']; ?>"
630
  data-reason="am_now"
631
  >
632
  <strong><?php
56
  */
57
  private $pluginName;
58
 
 
 
 
 
 
59
  /**
60
  * @var array
61
  */
260
  $selected = [];
261
  }
262
 
263
+ if (! array_key_exists($this->pluginSlug, $selected)) {
264
  $dismissedTriggers = $this->getDismissedTriggerGroups();
265
 
266
  $triggers = $this->getTriggers();
278
  }
279
  }
280
 
281
+ if (array_key_exists($this->pluginSlug, $selected)) {
282
  break;
283
  }
284
  }
327
  $triggers = [];
328
  }
329
 
330
+ if (! array_key_exists($this->pluginSlug, $triggers)) {
331
  $timeMessage = __(
332
  'Hey, you\'ve been using %1$s for %2$s on your site. We hope the plugin has been useful. Please could you quickly leave a 5-star rating on WordPress.org? It really does help to keep %1$s growing.',
333
  $this->pluginSlug
382
  }
383
 
384
  if (isset($group)) {
385
+ if (! array_key_exists($this->pluginSlug, $triggers)
386
+ || ! array_key_exists($group, $triggers[$this->pluginSlug])) {
387
  return false;
388
  }
389
 
390
  if (! isset($code)) {
391
  $return = $triggers[$this->pluginSlug][$group];
392
+ } elseif (array_key_exists($code, $triggers[$this->pluginSlug][$group]['triggers'])) {
393
  $return = $triggers[$this->pluginSlug][$group]['triggers'][$code];
394
  } else {
395
  $return = false;
412
  $selected = [];
413
  }
414
 
415
+ if (! array_key_exists($this->pluginSlug, $selected)) {
416
  $dismissedTriggers = $this->getDismissedTriggerGroups();
417
 
418
  foreach ($this->getTriggers() as $g => $group) {
428
  }
429
  }
430
 
431
+ if (array_key_exists($this->pluginSlug, $selected)) {
432
  break;
433
  }
434
  }
435
  }
436
 
437
+ if (! array_key_exists($this->pluginSlug, $selected)) {
438
  return false;
439
  }
440
 
459
 
460
  if (empty($key)) {
461
  $return = $trigger;
462
+ } elseif (array_key_exists($key, $trigger)) {
463
  $return = $trigger[$key];
464
  } else {
465
  $return = false;
565
  reason: reason
566
  }
567
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
568
  }
569
 
570
  $(document)
598
  <img src="<?php
599
  echo $this->iconUrl; ?>" class="notice-icon" alt="<?php
600
  echo $this->pluginName; ?> logo"/>
601
+ <?php
602
  endif; ?>
603
 
604
  <p><?php
608
  echo "$this->pluginSlug-dismiss"; ?>"
609
  target="_blank"
610
  href="<?php
611
+ echo $trigger['link']; ?>"
612
  data-reason="am_now"
613
  >
614
  <strong><?php
vendor/publishpress/wordpress-reviews/phpcs.xml.dist ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHP_CodeSniffer"
3
+ xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
4
+ <description>The coding standard for PublishPress Authors.</description>
5
+
6
+ <file>ReviewsController.php</file>
7
+
8
+ <arg name="basepath" value="."/>
9
+ <arg name="colors"/>
10
+ <arg name="parallel" value="75"/>
11
+ <arg value="np"/>
12
+
13
+ <!-- Include the whole PEAR standard -->
14
+ <rule ref="PSR12"/>
15
+ </ruleset>