Version Description
- 24 Jun 2021 =
- Feature : Editor Features restriction (new screen to block editor elements per-role)
- Fixed : If Media "Create" capability is selected / unselected by clicking Media caption or Create caption, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure
- Fixed : If Media "Create" capability is negated or un-negated, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure
- Fixed : PHP Warning if a role is stored without a valid capabilities array
Download this release
Release Info
Developer | publishpress |
Plugin | Capability Manager Enhanced |
Version | 2.1 |
Comparing to | |
See all releases |
Code changes from version 2.0.2 to 2.1
- capsman-enhanced.php +5 -5
- common/css/admin.css +6 -0
- common/js/admin.dev.js +20 -3
- common/js/admin.js +3 -2
- framework/lib/users.php +4 -0
- includes/admin.php +12 -9
- includes/features/editor-features-classic.php +69 -0
- includes/features/editor-features-gutenberg.php +66 -0
- includes/features/editor-features.php +231 -0
- includes/features/features-block-script.js +32 -0
- includes/features/restrict-editor-features.php +356 -0
- includes/filters.php +16 -16
- includes/functions-admin.php +204 -5
- includes/functions.php +59 -1
- includes/handler.php +0 -1
- includes/manager.php +60 -7
- includes/pp-ui.php +0 -18
- includes/publishpress-roles.php +1 -1
- includes/roles/class/class-pp-roles-list-table.php +3 -1
- languages/capsman-enhanced-en_US.mo +0 -0
- languages/capsman-enhanced-en_US.po +499 -167
- languages/capsman-enhanced.pot +357 -77
- readme.txt +280 -44
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.
|
7 |
* Author: PublishPress
|
8 |
* Author URI: https://publishpress.com/
|
9 |
* Text Domain: capsman-enhanced
|
@@ -25,13 +25,13 @@
|
|
25 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
|
26 |
* @license GNU General Public License version 3
|
27 |
* @link https://publishpress.com/
|
28 |
-
* @version 2.
|
29 |
*/
|
30 |
|
31 |
if (!defined('CAPSMAN_VERSION')) {
|
32 |
-
define('CAPSMAN_VERSION', '2.
|
33 |
-
define('CAPSMAN_ENH_VERSION', '2.
|
34 |
-
define('PUBLISHPRESS_CAPS_VERSION', '2.
|
35 |
}
|
36 |
|
37 |
foreach (get_option('active_plugins') as $plugin_file) {
|
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.1
|
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) 2020 PublishPress
|
26 |
* @license GNU General Public License version 3
|
27 |
* @link https://publishpress.com/
|
28 |
+
* @version 2.1
|
29 |
*/
|
30 |
|
31 |
if (!defined('CAPSMAN_VERSION')) {
|
32 |
+
define('CAPSMAN_VERSION', '2.1');
|
33 |
+
define('CAPSMAN_ENH_VERSION', '2.1');
|
34 |
+
define('PUBLISHPRESS_CAPS_VERSION', '2.1');
|
35 |
}
|
36 |
|
37 |
foreach (get_option('active_plugins') as $plugin_file) {
|
common/css/admin.css
CHANGED
@@ -78,10 +78,16 @@ height: 2em;
|
|
78 |
table .cme-typecaps th {
|
79 |
padding-left: 0.3em;
|
80 |
padding-right: 0.3em;
|
|
|
81 |
}
|
82 |
|
83 |
table.cme-typecaps span.cap-x {
|
84 |
display: none;
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
87 |
h3.cme-cap-section {
|
78 |
table .cme-typecaps th {
|
79 |
padding-left: 0.3em;
|
80 |
padding-right: 0.3em;
|
81 |
+
cursor: pointer;
|
82 |
}
|
83 |
|
84 |
table.cme-typecaps span.cap-x {
|
85 |
display: none;
|
86 |
+
cursor: pointer;
|
87 |
+
}
|
88 |
+
|
89 |
+
table.cme-checklist span.cap-x {
|
90 |
+
cursor: pointer;
|
91 |
}
|
92 |
|
93 |
h3.cme-cap-section {
|
common/js/admin.dev.js
CHANGED
@@ -12,6 +12,8 @@ jQuery(document).ready( function($) {
|
|
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 |
return false;
|
16 |
});
|
17 |
|
@@ -21,6 +23,16 @@ jQuery(document).ready( function($) {
|
|
21 |
$(this).parent().find('input[type="checkbox"]').prop('checked',false);
|
22 |
$(this).parent().find('input.cme-negation-input').remove();
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
return false;
|
25 |
});
|
26 |
|
@@ -51,6 +63,8 @@ jQuery(document).ready( function($) {
|
|
51 |
|
52 |
var cap_name_attr = $(this).find('input[type="checkbox"]').attr('name');
|
53 |
$(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
|
|
|
|
|
54 |
});
|
55 |
|
56 |
return false;
|
@@ -67,9 +81,12 @@ jQuery(document).ready( function($) {
|
|
67 |
else
|
68 |
var class_sel = '[class*="post-cap"]';
|
69 |
|
70 |
-
$(this).closest("table")
|
71 |
-
.find("tr td" + class_sel + ":nth-child(" + (columnNo+1) + ') input[type="checkbox"]:visible')
|
72 |
-
|
|
|
|
|
|
|
73 |
|
74 |
$(this).prop('checked_all',check_val);
|
75 |
});
|
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 |
|
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 |
|
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;
|
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 |
});
|
common/js/admin.js
CHANGED
@@ -1,3 +1,4 @@
|
|
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="" />');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();
|
|
|
2 |
var class_sel='[class*="term-cap"]';else
|
3 |
-
var class_sel='[class*="post-cap"]'
|
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;});});
|
framework/lib/users.php
CHANGED
@@ -85,6 +85,10 @@ function ak_level2caps( $level ) {
|
|
85 |
* @return int Level found, if no level found, will return 0.
|
86 |
*/
|
87 |
function ak_caps2level( $caps ) {
|
|
|
|
|
|
|
|
|
88 |
$level = array_reduce( array_keys( $caps ), '_ak_caps2level_CB', 0);
|
89 |
return $level;
|
90 |
}
|
85 |
* @return int Level found, if no level found, will return 0.
|
86 |
*/
|
87 |
function ak_caps2level( $caps ) {
|
88 |
+
if (!is_array($caps)) {
|
89 |
+
return 0;
|
90 |
+
}
|
91 |
+
|
92 |
$level = array_reduce( array_keys( $caps ), '_ak_caps2level_CB', 0);
|
93 |
return $level;
|
94 |
}
|
includes/admin.php
CHANGED
@@ -240,16 +240,16 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
|
|
240 |
$custom_types = get_post_types( array( '_builtin' => false ), 'names' );
|
241 |
$custom_tax = get_taxonomies( array( '_builtin' => false ), 'names' );
|
242 |
|
243 |
-
$defined =
|
244 |
-
$defined['type'] = apply_filters('cme_filterable_post_types', get_post_types(
|
245 |
-
$defined['taxonomy'] =
|
246 |
|
247 |
// bbPress' dynamic role def requires additional code to enforce stored caps
|
248 |
$unfiltered['type'] = apply_filters('presspermit_unfiltered_post_types', ['forum','topic','reply','wp_block']);
|
249 |
$unfiltered['type'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['type'] : apply_filters('pp_unfiltered_post_types', $unfiltered['type']);
|
250 |
|
251 |
$unfiltered['taxonomy'] = apply_filters('presspermit_unfiltered_post_types', ['post_status', 'topic-tag']); // avoid confusion with Edit Flow administrative taxonomy
|
252 |
-
$unfiltered['taxonomy'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['taxonomy'] : apply_filters('
|
253 |
|
254 |
$enabled_taxonomies = cme_get_assisted_taxonomies();
|
255 |
|
@@ -387,7 +387,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
|
|
387 |
if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
|
388 |
continue;
|
389 |
|
390 |
-
$type_label = (!empty($type_obj->labels->menu_name)) ? $type_obj->labels->menu_name : $type_obj->labels->name;
|
391 |
|
392 |
$row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_label . '</a>';
|
393 |
$row .= '<a href="#" class="neg-type-caps"> x </a>';
|
@@ -520,7 +520,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
|
|
520 |
jQuery(document).ready( function($) {
|
521 |
$('a[href="#toggle_type_caps"]').click( function() {
|
522 |
var chks = $(this).closest('tr').find('input');
|
523 |
-
|
|
|
|
|
|
|
|
|
|
|
524 |
return false;
|
525 |
});
|
526 |
|
@@ -1161,11 +1166,9 @@ function cme_network_role_ui( $default ) {
|
|
1161 |
<?php
|
1162 |
if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
|
1163 |
$autocreate_roles = array();
|
1164 |
-
|
1165 |
-
$checked = ( in_array( $default, $autocreate_roles ) ) ? 'checked="checked"': '';
|
1166 |
?>
|
1167 |
<div style="margin-bottom: 5px">
|
1168 |
-
<label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo $
|
1169 |
</div>
|
1170 |
<div>
|
1171 |
<label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
|
240 |
$custom_types = get_post_types( array( '_builtin' => false ), 'names' );
|
241 |
$custom_tax = get_taxonomies( array( '_builtin' => false ), 'names' );
|
242 |
|
243 |
+
$defined = [];
|
244 |
+
$defined['type'] = apply_filters('cme_filterable_post_types', get_post_types(['public' => true, 'show_ui' => true], 'object', 'or'));
|
245 |
+
$defined['taxonomy'] = apply_filters('cme_filterable_taxonomies', get_taxonomies(['public' => true, 'show_ui' => true], 'object', 'or'));
|
246 |
|
247 |
// bbPress' dynamic role def requires additional code to enforce stored caps
|
248 |
$unfiltered['type'] = apply_filters('presspermit_unfiltered_post_types', ['forum','topic','reply','wp_block']);
|
249 |
$unfiltered['type'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['type'] : apply_filters('pp_unfiltered_post_types', $unfiltered['type']);
|
250 |
|
251 |
$unfiltered['taxonomy'] = apply_filters('presspermit_unfiltered_post_types', ['post_status', 'topic-tag']); // avoid confusion with Edit Flow administrative taxonomy
|
252 |
+
$unfiltered['taxonomy'] = (defined('PP_CAPABILITIES_NO_LEGACY_FILTERS')) ? $unfiltered['taxonomy'] : apply_filters('pp_unfiltered_taxonomies', $unfiltered['taxonomy']);
|
253 |
|
254 |
$enabled_taxonomies = cme_get_assisted_taxonomies();
|
255 |
|
387 |
if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
|
388 |
continue;
|
389 |
|
390 |
+
$type_label = (defined('CME_LEGACY_MENU_NAME_LABEL') && !empty($type_obj->labels->menu_name)) ? $type_obj->labels->menu_name : $type_obj->labels->name;
|
391 |
|
392 |
$row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_label . '</a>';
|
393 |
$row .= '<a href="#" class="neg-type-caps"> x </a>';
|
520 |
jQuery(document).ready( function($) {
|
521 |
$('a[href="#toggle_type_caps"]').click( function() {
|
522 |
var chks = $(this).closest('tr').find('input');
|
523 |
+
var set_checked = ! $(chks).first().is(':checked');
|
524 |
+
|
525 |
+
$(chks).each(function(i,e) {
|
526 |
+
$('input[name="' + $(this).attr('name') + '"]').prop('checked', set_checked);
|
527 |
+
});
|
528 |
+
|
529 |
return false;
|
530 |
});
|
531 |
|
1166 |
<?php
|
1167 |
if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
|
1168 |
$autocreate_roles = array();
|
|
|
|
|
1169 |
?>
|
1170 |
<div style="margin-bottom: 5px">
|
1171 |
+
<label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo checked(in_array($default, $autocreate_roles));?>> <?php _e('include in new sites', 'capsman-enhanced'); ?> </label>
|
1172 |
</div>
|
1173 |
<div>
|
1174 |
<label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
|
includes/features/editor-features-classic.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$ce_elements = PP_Capabilities_Post_Features::elementsLayoutClassic();
|
3 |
+
|
4 |
+
$ce_post_disabled = [];
|
5 |
+
|
6 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
7 |
+
|
8 |
+
foreach($def_post_types as $post_type) {
|
9 |
+
$_disabled = get_option("capsman_feature_restrict_classic_{$post_type}", []);
|
10 |
+
$ce_post_disabled[$post_type] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
|
11 |
+
}
|
12 |
+
?>
|
13 |
+
|
14 |
+
<table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-classic" <?php if (empty($_REQUEST['ppc-tab']) || ('classic' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
|
15 |
+
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
+
<<?php echo $tag;?>>
|
17 |
+
<tr>
|
18 |
+
<th class="menu-column"><?php _e('Classic Editor Screen', 'capsman-enhanced') ?></th>
|
19 |
+
|
20 |
+
<?php foreach($def_post_types as $post_type) :
|
21 |
+
$type_obj = get_post_type_object($post_type);
|
22 |
+
?>
|
23 |
+
<th class="restrict-column ppc-menu-row"><?php printf(__('%s Restrict', 'capsman-enhanced'), $type_obj->labels->singular_name);?><br />
|
24 |
+
<input class="check-item classic check-all-menu-item" type="checkbox" title="<?php _e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo $post_type;?>" />
|
25 |
+
</th>
|
26 |
+
<?php endforeach;?>
|
27 |
+
</tr>
|
28 |
+
</<?php echo $tag;?>>
|
29 |
+
<?php endforeach;?>
|
30 |
+
|
31 |
+
<tbody>
|
32 |
+
<?php
|
33 |
+
foreach ($ce_elements as $section_title => $arr) {
|
34 |
+
?>
|
35 |
+
<tr class="ppc-menu-row parent-menu">
|
36 |
+
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
37 |
+
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
38 |
+
</td>
|
39 |
+
</tr>
|
40 |
+
|
41 |
+
<?php
|
42 |
+
foreach ($arr as $feature_slug => $arr_feature) {
|
43 |
+
if (!$feature_slug) {
|
44 |
+
continue;
|
45 |
+
}
|
46 |
+
?>
|
47 |
+
<tr class="ppc-menu-row parent-menu">
|
48 |
+
<td class="menu-column ppc-menu-item">
|
49 |
+
<span class="classic menu-item-link<?php echo (in_array($feature_slug, $ce_post_disabled['post'])) ? ' restricted' : ''; ?>">
|
50 |
+
<strong><i class="dashicons dashicons-arrow-right"></i>
|
51 |
+
<?php echo $arr_feature['label']; ?>
|
52 |
+
</strong></span>
|
53 |
+
</td>
|
54 |
+
|
55 |
+
<?php foreach($def_post_types as $post_type) :?>
|
56 |
+
<td class="restrict-column ppc-menu-checkbox">
|
57 |
+
<input id="cb_<?php echo $post_type . '-' . str_replace(['#', '.'], '_', $feature_slug);?>" class="check-item" type="checkbox"
|
58 |
+
name="capsman_feature_restrict_classic_<?php echo $post_type;?>[]"
|
59 |
+
value="<?php echo $feature_slug; ?>" <?php checked(in_array($feature_slug, $ce_post_disabled[$post_type]));?> />
|
60 |
+
</td>
|
61 |
+
<?php endforeach;?>
|
62 |
+
</tr>
|
63 |
+
<?php
|
64 |
+
}
|
65 |
+
}
|
66 |
+
?>
|
67 |
+
|
68 |
+
</tbody>
|
69 |
+
</table>
|
includes/features/editor-features-gutenberg.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$gutenberg_elements = PP_Capabilities_Post_Features::elementsLayout();
|
3 |
+
|
4 |
+
$gutenberg_post_disabled = [];
|
5 |
+
|
6 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
7 |
+
|
8 |
+
foreach($def_post_types as $post_type) {
|
9 |
+
$_disabled = get_option("capsman_feature_restrict_{$post_type}", []);
|
10 |
+
$gutenberg_post_disabled[$post_type] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
|
11 |
+
}
|
12 |
+
?>
|
13 |
+
|
14 |
+
<table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-gutenberg" <?php if (!empty($_REQUEST['ppc-tab']) && ('gutenberg' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
|
15 |
+
<?php foreach(['thead', 'tfoot'] as $tag):?>
|
16 |
+
<<?php echo $tag;?>>
|
17 |
+
<tr>
|
18 |
+
<th class="menu-column"><?php _e('Gutenberg Screen', 'capsman-enhanced') ?></th>
|
19 |
+
|
20 |
+
<?php foreach($def_post_types as $post_type) :
|
21 |
+
$type_obj = get_post_type_object($post_type);
|
22 |
+
?>
|
23 |
+
<th class="restrict-column ppc-menu-row"><?php printf(__('%s Restrict', 'capsman-enhanced'), $type_obj->labels->singular_name);?><br />
|
24 |
+
<input class="check-item gutenberg check-all-menu-item" type="checkbox" title="<?php _e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo $post_type;?>" />
|
25 |
+
</th>
|
26 |
+
<?php endforeach;?>
|
27 |
+
</tr>
|
28 |
+
</<?php echo $tag;?>>
|
29 |
+
<?php endforeach;?>
|
30 |
+
|
31 |
+
<tbody>
|
32 |
+
<?php
|
33 |
+
foreach ($gutenberg_elements as $section_title => $arr) {
|
34 |
+
?>
|
35 |
+
<tr class="ppc-menu-row parent-menu">
|
36 |
+
<td colspan="<?php echo (count($def_post_types) + 1);?>">
|
37 |
+
<h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
|
38 |
+
</td>
|
39 |
+
</tr>
|
40 |
+
|
41 |
+
<?php
|
42 |
+
foreach ($arr as $feature_slug => $arr_feature) {
|
43 |
+
?>
|
44 |
+
<tr class="ppc-menu-row parent-menu">
|
45 |
+
<td class="menu-column ppc-menu-item">
|
46 |
+
<span class="gutenberg menu-item-link<?php checked(in_array($feature_slug, $gutenberg_post_disabled['post']), true, 'restricted');?>">
|
47 |
+
<strong><i class="dashicons dashicons-arrow-right"></i>
|
48 |
+
<?php echo $arr_feature['label']; ?>
|
49 |
+
</strong></span>
|
50 |
+
</td>
|
51 |
+
|
52 |
+
<?php foreach($def_post_types as $post_type) :?>
|
53 |
+
<td class="restrict-column ppc-menu-checkbox">
|
54 |
+
<input id="check-item-<?php echo "{$post_type}-{$feature_slug}";?>" class="check-item" type="checkbox"
|
55 |
+
name="capsman_feature_restrict_<?php echo $post_type;?>[]"
|
56 |
+
value="<?php echo $feature_slug;?>"<?php checked(in_array($feature_slug, $gutenberg_post_disabled[$post_type]));?> />
|
57 |
+
</td>
|
58 |
+
<?php endforeach;?>
|
59 |
+
</tr>
|
60 |
+
<?php
|
61 |
+
}
|
62 |
+
}
|
63 |
+
?>
|
64 |
+
|
65 |
+
</tbody>
|
66 |
+
</table>
|
includes/features/editor-features.php
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Capability Manager Edit Posts Permission.
|
4 |
+
* Edit Posts permission and visibility per roles.
|
5 |
+
*
|
6 |
+
* Copyright 2021, PublishPress <help@publishpress.com>
|
7 |
+
*
|
8 |
+
* This program is free software; you can redistribute it and/or
|
9 |
+
* modify it under the terms of the GNU General Public License
|
10 |
+
* version 2 as published by the Free Software Foundation.
|
11 |
+
*
|
12 |
+
* This program is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
* GNU General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU General Public License
|
18 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19 |
+
*/
|
20 |
+
|
21 |
+
require_once (dirname(CME_FILE) . '/includes/features/restrict-editor-features.php');
|
22 |
+
|
23 |
+
global $capsman;
|
24 |
+
$roles = $capsman->roles;
|
25 |
+
$default_role = $capsman->current;
|
26 |
+
|
27 |
+
$classic_editor = pp_capabilities_is_classic_editor_available();
|
28 |
+
?>
|
29 |
+
<div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
|
30 |
+
<div id="icon-capsman-admin" class="icon32"></div>
|
31 |
+
<h2><?php _e('Editor Feature Restriction', 'capsman-enhanced'); ?></h2>
|
32 |
+
|
33 |
+
<form method="post" id="ppc-editor-features-form"
|
34 |
+
action="admin.php?page=pp-capabilities-editor-features">
|
35 |
+
<?php wp_nonce_field('pp-capabilities-editor-features'); ?>
|
36 |
+
|
37 |
+
<table id="akmin">
|
38 |
+
<tr>
|
39 |
+
<td class="content">
|
40 |
+
|
41 |
+
<div class="publishpress-headline">
|
42 |
+
<span class="cme-subtext">
|
43 |
+
<span class='pp-capability-role-caption'>
|
44 |
+
<?php
|
45 |
+
_e('Select editor features to remove. Note that this screen cannot be used to grant additional features to any role.', 'capabilities-pro');
|
46 |
+
?>
|
47 |
+
</span>
|
48 |
+
</span>
|
49 |
+
</div>
|
50 |
+
|
51 |
+
<div class="publishpress-filters">
|
52 |
+
<select name="ppc-editor-features-role" class="ppc-editor-features-role">
|
53 |
+
<?php
|
54 |
+
foreach ($roles as $role => $name) :
|
55 |
+
$name = translate_user_role($name);
|
56 |
+
?>
|
57 |
+
<option value="<?php echo $role;?>" <?php selected($default_role, $role);?>><?php echo $name;?></option>
|
58 |
+
<?php
|
59 |
+
endforeach;
|
60 |
+
?>
|
61 |
+
</select>
|
62 |
+
|
63 |
+
<img class="loading" src="<?php echo $capsman->mod_url; ?>/images/wpspin_light.gif" style="display: none">
|
64 |
+
|
65 |
+
<input type="submit" name="editor-features-submit"
|
66 |
+
value="<?php _e('Save Changes', 'capabilities-pro') ?>"
|
67 |
+
class="button-primary ppc-editor-features-submit" style="float:right" />
|
68 |
+
|
69 |
+
<input type="hidden" name="ppc-tab" value="<?php echo (!empty($_REQUEST['ppc-tab'])) ? sanitize_key($_REQUEST['ppc-tab']) : 'gutenberg';?>" />
|
70 |
+
</div>
|
71 |
+
|
72 |
+
<script type="text/javascript">
|
73 |
+
/* <![CDATA[ */
|
74 |
+
jQuery(document).ready(function($) {
|
75 |
+
$('li.gutenberg-tab').click(function() {
|
76 |
+
$('div.publishpress-filters input[name=ppc-tab]').val('gutenberg');
|
77 |
+
});
|
78 |
+
|
79 |
+
$('li.classic-tab').click(function() {
|
80 |
+
$('div.publishpress-filters input[name=ppc-tab]').val('classic');
|
81 |
+
});
|
82 |
+
});
|
83 |
+
/* ]]> */
|
84 |
+
</script>
|
85 |
+
|
86 |
+
<?php if ($classic_editor) { ?>
|
87 |
+
<ul class="nav-tab-wrapper">
|
88 |
+
<li class="editor-features-tab gutenberg-tab nav-tab <?php if (empty($_REQUEST['ppc-tab']) || ('gutenberg' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
|
89 |
+
data-tab=".editor-features-gutenberg"><a href="#"><?php _e('Gutenberg', 'capsman-enhanced') ?></a></li>
|
90 |
+
|
91 |
+
<li class="editor-features-tab classic-tab nav-tab <?php if (!empty($_REQUEST['ppc-tab']) && ('classic' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
|
92 |
+
data-tab=".editor-features-classic"><a href="#"><?php _e('Classic', 'capsman-enhanced') ?></a></li>
|
93 |
+
</ul>
|
94 |
+
<?php } ?>
|
95 |
+
|
96 |
+
<div id="pp-capability-menu-wrapper" class="postbox">
|
97 |
+
<div class="pp-capability-menus">
|
98 |
+
|
99 |
+
<div class="pp-capability-menus-wrap">
|
100 |
+
<div id="pp-capability-menus-general"
|
101 |
+
class="pp-capability-menus-content editable-role"
|
102 |
+
style="display: block;">
|
103 |
+
<?php
|
104 |
+
$sn = 0;
|
105 |
+
include(dirname(__FILE__) . '/editor-features-gutenberg.php');
|
106 |
+
|
107 |
+
if ($classic_editor) {
|
108 |
+
include(dirname(__FILE__) . '/editor-features-classic.php');
|
109 |
+
}
|
110 |
+
?>
|
111 |
+
|
112 |
+
</div>
|
113 |
+
</div>
|
114 |
+
|
115 |
+
</div>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<input type="submit" name="editor-features-submit"
|
119 |
+
value="<?php _e('Save Changes', 'capsman-enhanced') ?>"
|
120 |
+
class="button-primary ppc-editor-features-submit"/>
|
121 |
+
|
122 |
+
|
123 |
+
</td>
|
124 |
+
</tr>
|
125 |
+
</table>
|
126 |
+
|
127 |
+
</form>
|
128 |
+
|
129 |
+
<?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
|
130 |
+
cme_publishpressFooter();
|
131 |
+
}
|
132 |
+
?>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
<style>
|
136 |
+
span.menu-item-link {
|
137 |
+
webkit-user-select: none; /* Safari */
|
138 |
+
-moz-user-select: none; /* Firefox */
|
139 |
+
-ms-user-select: none; /* IE10+/Edge */
|
140 |
+
user-select: none; /* Standard */
|
141 |
+
}
|
142 |
+
|
143 |
+
input.check-all-menu-item {margin-top: 5px !important;}
|
144 |
+
</style>
|
145 |
+
|
146 |
+
<script type="text/javascript">
|
147 |
+
/* <![CDATA[ */
|
148 |
+
jQuery(document).ready(function ($) {
|
149 |
+
|
150 |
+
// -------------------------------------------------------------
|
151 |
+
// Set form action attribute to include role
|
152 |
+
// -------------------------------------------------------------
|
153 |
+
$('#ppc-editor-features-form').attr('action', '<?php echo admin_url('admin.php?page=pp-capabilities-editor-features&role=' . $default_role . ''); ?>');
|
154 |
+
|
155 |
+
// -------------------------------------------------------------
|
156 |
+
// Instant restricted item class
|
157 |
+
// -------------------------------------------------------------
|
158 |
+
$(document).on('change', '.pp-capability-menus-wrapper .ppc-menu-row .check-item', function () {
|
159 |
+
var current_tab;
|
160 |
+
|
161 |
+
<?php if ($classic_editor) { ?>
|
162 |
+
if ($('.nav-tab-wrapper .classic-tab').hasClass('nav-tab-active')) {
|
163 |
+
current_tab = 'classic';
|
164 |
+
} else {
|
165 |
+
current_tab = 'gutenberg';
|
166 |
+
}
|
167 |
+
<?php } else { ?>
|
168 |
+
current_tab = 'gutenberg';
|
169 |
+
<?php } ?>
|
170 |
+
|
171 |
+
//add class if feature is restricted for any post type
|
172 |
+
var anyRestricted = $(this).closest('tr').find('input:checked').length > 0;
|
173 |
+
$(this).closest('tr').find('.menu-item-link').toggleClass('restricted', anyRestricted);
|
174 |
+
|
175 |
+
var isChecked = $(this).is(':checked');
|
176 |
+
|
177 |
+
//toggle all checkbox
|
178 |
+
if ($(this).hasClass('check-all-menu-item')) {
|
179 |
+
var suffix = ('gutenberg' == current_tab) ? '' : current_tab + '_';
|
180 |
+
$("input[type='checkbox'][name='capsman_feature_restrict_" + suffix + $(this).data('pp_type') + "[]']").prop('checked', isChecked);
|
181 |
+
|
182 |
+
$('.' + current_tab + '.menu-item-link').each(function(i,e) {
|
183 |
+
$(this).toggleClass('restricted', $(this).closest('tr').find('input:checked').length > 0);
|
184 |
+
});
|
185 |
+
} else {
|
186 |
+
$('.' + current_tab + '.check-all-menu-link').removeClass('restricted').prop('checked', false);
|
187 |
+
}
|
188 |
+
});
|
189 |
+
|
190 |
+
$('span.menu-item-link').click(function(e) {
|
191 |
+
var chks = $(this).closest('tr').find('input');
|
192 |
+
$(chks).prop('checked', !$(this).hasClass('restricted'));
|
193 |
+
$(this).toggleClass('restricted', $(chks).filter(':checked').length);
|
194 |
+
});
|
195 |
+
|
196 |
+
// -------------------------------------------------------------
|
197 |
+
// Load selected roles menu
|
198 |
+
// -------------------------------------------------------------
|
199 |
+
$(document).on('change', '.pp-capability-menus-wrapper .ppc-editor-features-role', function () {
|
200 |
+
|
201 |
+
//disable select
|
202 |
+
$('.pp-capability-menus-wrapper .ppc-editor-features-role').attr('disabled', true);
|
203 |
+
|
204 |
+
//hide button
|
205 |
+
$('.pp-capability-menus-wrapper .ppc-editor-features-submit').hide();
|
206 |
+
|
207 |
+
//show loading
|
208 |
+
$('#pp-capability-menu-wrapper').hide();
|
209 |
+
$('div.publishpress-caps-manage img.loading').show();
|
210 |
+
|
211 |
+
//go to url
|
212 |
+
window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-editor-features&role='); ?>' + $(this).val() + '';
|
213 |
+
|
214 |
+
});
|
215 |
+
|
216 |
+
|
217 |
+
// -------------------------------------------------------------
|
218 |
+
// Editor features tab
|
219 |
+
// -------------------------------------------------------------
|
220 |
+
$('.editor-features-tab').click(function (e) {
|
221 |
+
e.preventDefault();
|
222 |
+
$('.editor-features-tab').removeClass('nav-tab-active');
|
223 |
+
$(this).addClass('nav-tab-active');
|
224 |
+
$('.pp-capability-menus-select').hide();
|
225 |
+
$($(this).attr('data-tab')).show();
|
226 |
+
});
|
227 |
+
|
228 |
+
});
|
229 |
+
/* ]]> */
|
230 |
+
</script>
|
231 |
+
<?php
|
includes/features/features-block-script.js
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
if(ppc_features.disabled_panel){
|
2 |
+
var disabled_panel = ppc_features.disabled_panel;
|
3 |
+
var disabled_panel = disabled_panel.split(',');
|
4 |
+
|
5 |
+
var taxs = ppc_features.taxonomies;
|
6 |
+
taxs = taxs.split(',');
|
7 |
+
|
8 |
+
taxs.forEach ((tax) => {
|
9 |
+
if(disabled_panel.includes("taxonomy-panel-" + tax)){
|
10 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel('taxonomy-panel-' + tax); // category / tag / custom taxonomy
|
11 |
+
}
|
12 |
+
});
|
13 |
+
|
14 |
+
if(disabled_panel.includes("featured-image")){
|
15 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel( 'featured-image' ); // featured image
|
16 |
+
}
|
17 |
+
if(disabled_panel.includes("post-link")){
|
18 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel( 'post-link' ); // permalink
|
19 |
+
}
|
20 |
+
if(disabled_panel.includes("page-attributes")){
|
21 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel( 'page-attributes' ); // page attributes
|
22 |
+
}
|
23 |
+
if(disabled_panel.includes("post-excerpt")){
|
24 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel( 'post-excerpt' ); // Excerpt
|
25 |
+
}
|
26 |
+
if(disabled_panel.includes("discussion-panel")){
|
27 |
+
wp.data.dispatch('core/edit-post').removeEditorPanel( 'discussion-panel' ); // Discussion
|
28 |
+
}
|
29 |
+
if(disabled_panel.includes("post-status")){
|
30 |
+
wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'post-status' ) ;// Post status
|
31 |
+
}
|
32 |
+
}
|
includes/features/restrict-editor-features.php
ADDED
@@ -0,0 +1,356 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class PP_Capabilities_Post_Features {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Recursive search in array.
|
7 |
+
*
|
8 |
+
* @param string $needle
|
9 |
+
* @param array $haystack
|
10 |
+
*
|
11 |
+
* @return bool
|
12 |
+
*/
|
13 |
+
private static function recursiveInArray($needle, $haystack)
|
14 |
+
{
|
15 |
+
if ('' === $haystack) {
|
16 |
+
return false;
|
17 |
+
}
|
18 |
+
|
19 |
+
if (!$haystack) {
|
20 |
+
return false;
|
21 |
+
}
|
22 |
+
|
23 |
+
foreach ($haystack as $stalk) {
|
24 |
+
if ($needle === $stalk
|
25 |
+
|| (is_array($stalk)
|
26 |
+
&& self::recursiveInArray($needle, $stalk)
|
27 |
+
)
|
28 |
+
) {
|
29 |
+
return true;
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
return false;
|
34 |
+
}
|
35 |
+
|
36 |
+
public static function elementsLayoutClassic()
|
37 |
+
{
|
38 |
+
$elements = [];
|
39 |
+
|
40 |
+
$elements[__('Top Tabs', 'capsman-enhanced')] = [
|
41 |
+
'#contextual-help-link-wrap' => ['label' => __('Help', 'capsman-enhanced')],
|
42 |
+
'#screen-options-link-wrap' => ['label' => __('Screen Options', 'capsman-enhanced')],
|
43 |
+
];
|
44 |
+
|
45 |
+
$elements[__('Editor', 'capsman-enhanced')] = [
|
46 |
+
'.page-title-action' => ['label' => __('Add New', 'capsman-enhanced')],
|
47 |
+
'#title' => ['label' => __('Title', 'capsman-enhanced'), 'elements' => '#titlediv, #title, #titlewrap'],
|
48 |
+
'#postdivrich' => ['label' => __('Editor', 'capsman-enhanced')],
|
49 |
+
'#pageslugdiv' => ['label' => __('Permalink', 'capsman-enhanced')],
|
50 |
+
'#media_buttons' => ['label' => __('Media Buttons (all)', 'capsman-enhanced'), 'elements' => '#media-buttons, #wp-content-media-buttons'],
|
51 |
+
'#html_editor_button' => ['label' => __('HTML Editor Button', 'capsman-enhanced'),'elements' => '#editor-toolbar #edButtonHTML, #quicktags, #content-html, .wp-switch-editor.switch-html'],
|
52 |
+
'#wp-word-count' => ['label' => __('Word count', 'capsman-enhanced')],
|
53 |
+
];
|
54 |
+
|
55 |
+
$elements[__('Publish Box', 'capsman-enhanced')] = [
|
56 |
+
'#submitdiv' => ['label' => __('Publish Box', 'capsman-enhanced')],
|
57 |
+
'#save-post' => ['label' => __('Save Draft', 'capsman-enhanced')],
|
58 |
+
'#post-preview' => ['label' => __('Preview', 'capsman-enhanced')],
|
59 |
+
'.misc-pub-post-status' => ['label' => __('Publish Status ', 'capsman-enhanced')],
|
60 |
+
'.misc-pub-visibility' => ['label' => __('Publish Visibility', 'capsman-enhanced')],
|
61 |
+
'#passworddiv' => ['label' => __('Password Protect This Post', 'capsman-enhanced')],
|
62 |
+
'#misc-publishing-actions' => ['label' => __('Publish Actions', 'capsman-enhanced')],
|
63 |
+
'.misc-pub-curtime' => ['label' => __('Publish Schedule', 'capsman-enhanced')],
|
64 |
+
'#date' => ['label' => __('Date', 'capsman-enhanced'), 'elements' => '#date, #datediv, th.column-date, td.date, div.curtime'],
|
65 |
+
'#publish' => ['label' => __('Publish', 'capsman-enhanced')],
|
66 |
+
];
|
67 |
+
|
68 |
+
$elements[__('Taxonomy Boxes', 'capsman-enhanced')] = [
|
69 |
+
'#category' => ['label' => __('Categories', 'capsman-enhanced'), 'elements' => '#categories, #categorydiv, #categorydivsb, th.column-categories, td.categories'],
|
70 |
+
'#category-add-toggle' => ['label' => __('Add New Category', 'capsman-enhanced')],
|
71 |
+
'#post_tag' => ['label' => __('Tags', 'capsman-enhanced'), 'elements' => '#tags, #tagsdiv,#tagsdivsb,#tagsdiv-post_tag, th.column-tags, td.tags'],
|
72 |
+
];
|
73 |
+
|
74 |
+
end($elements);
|
75 |
+
$k = key($elements);
|
76 |
+
|
77 |
+
foreach (get_taxonomies(['show_ui' => true], 'object') as $taxonomy => $tx_obj) {
|
78 |
+
if (!in_array($taxonomy, ['category', 'post_tag', 'link_category'])) {
|
79 |
+
$elements[$k]["#{$tx_obj->name}div"] = ['label' => $tx_obj->label];
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
$elements[__('Page Boxes', 'capsman-enhanced')] = [
|
84 |
+
'#pageparentdiv' => ['label' => __('Page Attributes', 'capsman-enhanced')],
|
85 |
+
'#parent_id' => ['label' => __('Parent', 'capsman-enhanced'), 'elements' => 'p.parent-id-label-wrapper, #parent_id'],
|
86 |
+
'#page_template' => ['label' => __('Page Template', 'capsman-enhanced')],
|
87 |
+
'p.menu-order-label-wrapper' => ['label' => __('Order', 'capsman-enhanced')],
|
88 |
+
];
|
89 |
+
|
90 |
+
$elements[__('Other Boxes', 'capsman-enhanced')] = [
|
91 |
+
'#postimagediv' => ['label' => __('Featured Image', 'capsman-enhanced')],
|
92 |
+
'#slug' => ['label' => __('Post Slug', 'capsman-enhanced'), 'elements' => '#slugdiv,#edit-slug-box'],
|
93 |
+
'#commentstatusdiv' => ['label' => __('Discussion', 'capsman-enhanced')],
|
94 |
+
];
|
95 |
+
|
96 |
+
end($elements);
|
97 |
+
$k = key($elements);
|
98 |
+
|
99 |
+
/*
|
100 |
+
__('Related, Shortcuts', 'capsman-enhanced') => '.side-info',
|
101 |
+
__('Messages', 'capsman-enhanced') => '#notice',
|
102 |
+
__('h2: Advanced Options', 'capsman-enhanced') => '#post-body h2',
|
103 |
+
*/
|
104 |
+
|
105 |
+
$post_type_supports = [];
|
106 |
+
|
107 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
108 |
+
|
109 |
+
foreach($def_post_types as $post_type) {
|
110 |
+
$post_type_supports = array_merge($post_type_supports, get_all_post_type_supports($post_type));
|
111 |
+
}
|
112 |
+
|
113 |
+
foreach (array_keys($post_type_supports) as $feature) {
|
114 |
+
$label = ucfirst(str_replace(['-', '_'], ' ', $feature));
|
115 |
+
|
116 |
+
switch ($feature) {
|
117 |
+
case 'excerpt' :
|
118 |
+
$id = 'postexcerpt';
|
119 |
+
break;
|
120 |
+
|
121 |
+
case 'custom-fields' :
|
122 |
+
$id = 'postcustom';
|
123 |
+
break;
|
124 |
+
|
125 |
+
case 'post-formats' :
|
126 |
+
$id = 'format';
|
127 |
+
break;
|
128 |
+
|
129 |
+
case 'author':
|
130 |
+
case 'excerpt':
|
131 |
+
case 'trackbacks':
|
132 |
+
case 'comments':
|
133 |
+
case 'revisions':
|
134 |
+
//default:
|
135 |
+
$id = $feature;
|
136 |
+
break;
|
137 |
+
|
138 |
+
default:
|
139 |
+
continue 2;
|
140 |
+
}
|
141 |
+
|
142 |
+
$elements[$k][$feature] = [
|
143 |
+
'label' => $label,
|
144 |
+
'elements' => '#' . $id
|
145 |
+
. ', #' . $id . 'div'
|
146 |
+
. ', th.column-' . $id
|
147 |
+
. ', td.' . $id
|
148 |
+
]; //th and td for raw in edit screen
|
149 |
+
}
|
150 |
+
|
151 |
+
return apply_filters('pp_capabilities_post_feature_elements_classic', $elements);
|
152 |
+
}
|
153 |
+
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Classic Editor screen: Output Styles to Hide UI elements for Editor Features configured as restricted
|
157 |
+
*/
|
158 |
+
public static function applyRestrictionsClassic()
|
159 |
+
{
|
160 |
+
$restrict_elements = [];
|
161 |
+
|
162 |
+
if (!$post_type = pp_capabilities_get_post_type()) {
|
163 |
+
return;
|
164 |
+
}
|
165 |
+
|
166 |
+
// Only restrictions associated with this user's role(s) will be applied
|
167 |
+
$role_restrictions = array_intersect_key(
|
168 |
+
get_option("capsman_feature_restrict_classic_{$post_type}", []),
|
169 |
+
array_fill_keys(wp_get_current_user()->roles, true)
|
170 |
+
);
|
171 |
+
|
172 |
+
foreach($role_restrictions as $features) {
|
173 |
+
$restrict_elements = array_merge($restrict_elements, self::getElements($features, ['editor_type' => 'classic']));
|
174 |
+
}
|
175 |
+
|
176 |
+
// apply the stored restrictions by css
|
177 |
+
if ($restrict_elements = array_unique($restrict_elements)) {
|
178 |
+
echo '<style>' . implode(',', $restrict_elements) . ' {display:none !important;}</style>';
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Classic Editor: Apply / Queue editor feature restrictions
|
184 |
+
*/
|
185 |
+
public static function adminInitClassic($post_type)
|
186 |
+
{
|
187 |
+
// Get all user roles.
|
188 |
+
$user_roles = wp_get_current_user()->roles;
|
189 |
+
$ce_post_disabled = get_option("capsman_feature_restrict_classic_{$post_type}", []);
|
190 |
+
|
191 |
+
$disabled_elements_post_ = [];
|
192 |
+
$disabled_elements_post_all = [];
|
193 |
+
|
194 |
+
foreach ($user_roles as $role) {
|
195 |
+
if (!empty($ce_post_disabled[$role])) {
|
196 |
+
$disabled_elements_post_[$role] = (array)$ce_post_disabled[$role];
|
197 |
+
}
|
198 |
+
|
199 |
+
if (!empty($disabled_elements_post_[$role])) {
|
200 |
+
$disabled_elements_post_all[] = $disabled_elements_post_[$role];
|
201 |
+
}
|
202 |
+
}
|
203 |
+
|
204 |
+
// Set default editor tinymce
|
205 |
+
if (self::recursiveInArray(
|
206 |
+
'#editor-toolbar #edButtonHTML, #quicktags, #content-html',
|
207 |
+
$disabled_elements_post_all
|
208 |
+
)
|
209 |
+
) {
|
210 |
+
add_filter('wp_default_editor', function($default) {
|
211 |
+
return 'tinymce';
|
212 |
+
});
|
213 |
+
}
|
214 |
+
|
215 |
+
// Remove media buttons
|
216 |
+
if (self::recursiveInArray('media_buttons', $disabled_elements_post_all)
|
217 |
+
) {
|
218 |
+
remove_action('media_buttons', 'media_buttons');
|
219 |
+
}
|
220 |
+
|
221 |
+
// set meta-box post option
|
222 |
+
add_action('admin_head', ['PP_Capabilities_Post_Features', 'applyRestrictionsClassic'], 1);
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Gutenberg Editor: Hide UI elements for editor features configured as restricted
|
227 |
+
*/
|
228 |
+
public static function applyRestrictions($post_type)
|
229 |
+
{
|
230 |
+
$restrict_elements = [];
|
231 |
+
|
232 |
+
// Only restrictions associated with this user's role(s) will be applied
|
233 |
+
$role_restrictions = array_intersect_key(
|
234 |
+
get_option("capsman_feature_restrict_{$post_type}", []),
|
235 |
+
array_fill_keys(wp_get_current_user()->roles, true)
|
236 |
+
);
|
237 |
+
|
238 |
+
foreach($role_restrictions as $features) {
|
239 |
+
$restrict_elements = array_merge($restrict_elements, self::getElements($features));
|
240 |
+
}
|
241 |
+
|
242 |
+
// apply the stored restrictions by js and css
|
243 |
+
if ($restrict_elements = array_unique($restrict_elements)) {
|
244 |
+
|
245 |
+
// script file
|
246 |
+
wp_register_script(
|
247 |
+
'ppc-features-block-script',
|
248 |
+
plugin_dir_url(CME_FILE) . 'includes/features/features-block-script.js',
|
249 |
+
['wp-blocks', 'wp-edit-post']
|
250 |
+
);
|
251 |
+
|
252 |
+
//localize script
|
253 |
+
wp_localize_script(
|
254 |
+
'ppc-features-block-script',
|
255 |
+
'ppc_features',
|
256 |
+
[
|
257 |
+
'disabled_panel' => implode(',', $restrict_elements),
|
258 |
+
'taxonomies' => implode(",", get_taxonomies())
|
259 |
+
]
|
260 |
+
);
|
261 |
+
|
262 |
+
// register block editor script
|
263 |
+
register_block_type(
|
264 |
+
'ppc/features-block-script',
|
265 |
+
['editor_script' => 'ppc-features-block-script']
|
266 |
+
);
|
267 |
+
|
268 |
+
echo '<style>' . implode(',', $restrict_elements) . ' {display:none !important;}</style>';
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
private static function getElements($feature_names, $args = []) {
|
273 |
+
$is_classic = (!empty($args['editor_type']) && ('classic' == $args['editor_type']));
|
274 |
+
|
275 |
+
$feature_names = (array) $feature_names;
|
276 |
+
|
277 |
+
$arr = ($is_classic) ? self::elementsLayoutClassic() : self::elementsLayout();
|
278 |
+
|
279 |
+
$elements = [];
|
280 |
+
|
281 |
+
foreach($arr as $section_features) {
|
282 |
+
foreach($section_features as $_feature_name => $feature_info) {
|
283 |
+
if (in_array($_feature_name, $feature_names)) {
|
284 |
+
if (!empty($feature_info['elements'])) {
|
285 |
+
$elements = array_merge($elements, explode(',', $feature_info['elements']));
|
286 |
+
} else {
|
287 |
+
$elements[]= $_feature_name;
|
288 |
+
}
|
289 |
+
}
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
return $elements;
|
294 |
+
}
|
295 |
+
|
296 |
+
public static function elementsLayout()
|
297 |
+
{
|
298 |
+
$elements = [
|
299 |
+
__('Top Bar - Left', 'capabilities-pro') => [
|
300 |
+
'add_block' => ['label' => __('Add block', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .edit-post-header-toolbar__inserter-toggle.has-icon'],
|
301 |
+
'modes' => ['label' => __('Modes', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .components-dropdown:first-of-type'],
|
302 |
+
'undo' => ['label' => __('Undo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__undo'],
|
303 |
+
'redo' => ['label' => __('Redo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__redo'],
|
304 |
+
'details' => ['label' => __('Details', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .table-of-contents'],
|
305 |
+
'outline' => ['label' => __('Outline', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .block-editor-block-navigation'],
|
306 |
+
],
|
307 |
+
|
308 |
+
__('Top Bar - Right', 'capabilities-pro') => [
|
309 |
+
'save_draft' => ['label' => __('Save Draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-save-draft'],
|
310 |
+
'switch_to_draft' => ['label' => __('Switch to draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-switch-to-draft'],
|
311 |
+
'preview' => ['label' => __('Preview', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .block-editor-post-preview__dropdown'],
|
312 |
+
'publish' => ['label' => __('Publish / Update', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .editor-post-publish-button__button'],
|
313 |
+
'settings' => ['label' => __('Settings', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .interface-pinned-items button'],
|
314 |
+
'options' => ['label' => __('Options', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .edit-post-more-menu .components-button'],
|
315 |
+
],
|
316 |
+
|
317 |
+
__('Body', 'capabilities-pro') => [
|
318 |
+
'edit_title' => ['label' => __('Edit title', 'capsman-enhanced'), 'elements' => '.wp-block.editor-post-title__block'],
|
319 |
+
'content' => ['label' => __('Content', 'capsman-enhanced'), 'elements' => '.block-editor-block-list__layout'],
|
320 |
+
],
|
321 |
+
|
322 |
+
__('Document Panel', 'capabilities-pro') => [
|
323 |
+
'status_visibility' => ['label' => __('Status & visibility', 'capsman-enhanced'), 'elements' => 'post-status'],
|
324 |
+
'permalink' => ['label' => __('Permalink', 'capsman-enhanced'), 'elements' => 'post-link'],
|
325 |
+
'categories' => ['label' => __('Categories', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-category'],
|
326 |
+
'tags' => ['label' => __('Tags', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-post_tag'],
|
327 |
+
]
|
328 |
+
];
|
329 |
+
|
330 |
+
end($elements);
|
331 |
+
$k = key($elements);
|
332 |
+
|
333 |
+
foreach (get_taxonomies(['show_ui' => true], 'object') as $taxonomy => $tx_obj) {
|
334 |
+
if (!in_array($taxonomy, ['category', 'post_tag', 'link_category'])) {
|
335 |
+
$elements[$k][$tx_obj->name] = ['label' => $tx_obj->label, 'elements' => "taxonomy-panel-$taxonomy"];
|
336 |
+
}
|
337 |
+
}
|
338 |
+
|
339 |
+
$elements[$k] = array_merge($elements[$k], [
|
340 |
+
'featured_image' => ['label' => __('Featured image', 'capsman-enhanced'), 'elements' => 'featured-image'],
|
341 |
+
'excerpt' => ['label' => __('Excerpt', 'capsman-enhanced'), 'elements' => 'post-excerpt'],
|
342 |
+
'discussion' => ['label' => __('Discussion', 'capsman-enhanced'), 'elements' => 'discussion-panel'],
|
343 |
+
'post_attributes' => ['label' => __('Post Attributes', 'capsman-enhanced'), 'elements' => 'page-attributes'],
|
344 |
+
]);
|
345 |
+
|
346 |
+
$elements[__('Block Panel', 'capabilities-pro')] = [
|
347 |
+
'block_panel' => ['label' => __('Block Panel', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector'],
|
348 |
+
'paragraph' => ['label' => __('Paragraph', 'capsman-enhanced'), 'elements' => '.block-editor-block-card'],
|
349 |
+
'typography' => ['label' => __('Typography', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector .components-panel__body:first-of-type'],
|
350 |
+
'color' => ['label' => __('Color settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings'],
|
351 |
+
'text_settings' => ['label' => __('Text settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings + .components-panel__body'],
|
352 |
+
];
|
353 |
+
|
354 |
+
return apply_filters('pp_capabilities_post_feature_elements', $elements);
|
355 |
+
}
|
356 |
+
}
|
includes/filters.php
CHANGED
@@ -31,8 +31,8 @@ if ( defined( 'WC_PLUGIN_FILE' ) ) {
|
|
31 |
if (!defined('CME_DISABLE_WP_EDIT_PUBLISHED_WORKAROUND')) {
|
32 |
global $wp_version;
|
33 |
if (version_compare($wp_version, '4.9.7', '>=')) { // avoid any issues with old REST API implementations
|
34 |
-
|
35 |
-
|
36 |
}
|
37 |
}
|
38 |
|
@@ -261,31 +261,31 @@ function cme_get_assisted_post_types() {
|
|
261 |
// Note: this intentionally does NOT share Press Permit' option name, for back compat reasons
|
262 |
// Enabling filtered taxonomies in PP previously did not cause the edit_terms, delete_terms, assign_terms capabilities to be enforced
|
263 |
function cme_get_assisted_taxonomies() {
|
264 |
-
$tx_args =
|
265 |
-
|
266 |
-
$taxonomies =
|
267 |
-
|
268 |
-
if (
|
269 |
-
$taxonomies =
|
270 |
}
|
271 |
|
272 |
$option_name = (defined('PPC_VERSION') && !defined('PRESSPERMIT_VERSION')) ? 'pp_enabled_taxonomies' : 'presspermit_enabled_taxonomies';
|
273 |
-
$enabled = (array) get_option( $option_name,
|
274 |
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
275 |
|
276 |
return apply_filters( 'cme_assisted_taxonomies', $taxonomies, $tx_args );
|
277 |
}
|
278 |
|
279 |
function cme_get_detailed_taxonomies() {
|
280 |
-
$tx_args =
|
281 |
-
|
282 |
-
$taxonomies =
|
283 |
-
|
284 |
-
if (
|
285 |
-
$taxonomies =
|
286 |
}
|
287 |
|
288 |
-
$enabled = (array) get_option(
|
289 |
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
290 |
|
291 |
return apply_filters( 'cme_detailed_taxonomies', $taxonomies, $tx_args );
|
31 |
if (!defined('CME_DISABLE_WP_EDIT_PUBLISHED_WORKAROUND')) {
|
32 |
global $wp_version;
|
33 |
if (version_compare($wp_version, '4.9.7', '>=')) { // avoid any issues with old REST API implementations
|
34 |
+
require_once (dirname(__FILE__) . '/filters-wp_rest_workarounds.php');
|
35 |
+
new PublishPress\Capabilities\WP_REST_Workarounds();
|
36 |
}
|
37 |
}
|
38 |
|
261 |
// Note: this intentionally does NOT share Press Permit' option name, for back compat reasons
|
262 |
// Enabling filtered taxonomies in PP previously did not cause the edit_terms, delete_terms, assign_terms capabilities to be enforced
|
263 |
function cme_get_assisted_taxonomies() {
|
264 |
+
$tx_args = ['public' => true, 'show_ui' => true];
|
265 |
+
$taxonomies = apply_filters('cme_filterable_taxonomies', get_taxonomies($tx_args, 'object', 'or'));
|
266 |
+
$taxonomies = array_combine(array_keys($taxonomies), array_keys($taxonomies));
|
267 |
+
|
268 |
+
if ($omit_taxonomies = apply_filters('pp_unfiltered_taxonomies', [])) {
|
269 |
+
$taxonomies = array_diff($taxonomies, (array) $omit_taxonomies);
|
270 |
}
|
271 |
|
272 |
$option_name = (defined('PPC_VERSION') && !defined('PRESSPERMIT_VERSION')) ? 'pp_enabled_taxonomies' : 'presspermit_enabled_taxonomies';
|
273 |
+
$enabled = (array) get_option( $option_name, []);
|
274 |
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
275 |
|
276 |
return apply_filters( 'cme_assisted_taxonomies', $taxonomies, $tx_args );
|
277 |
}
|
278 |
|
279 |
function cme_get_detailed_taxonomies() {
|
280 |
+
$tx_args = ['public' => true, 'show_ui' => true];
|
281 |
+
$taxonomies = apply_filters('cme_filterable_taxonomies', get_taxonomies($tx_args, 'object', 'or'));
|
282 |
+
$taxonomies = array_combine(array_keys($taxonomies), array_keys($taxonomies));
|
283 |
+
|
284 |
+
if ($omit_taxonomies = apply_filters('pp_unfiltered_taxonomies', [])) {
|
285 |
+
$taxonomies = array_diff($taxonomies, (array) $omit_taxonomies);
|
286 |
}
|
287 |
|
288 |
+
$enabled = (array) get_option('cme_detailed_taxonomies', []);
|
289 |
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
290 |
|
291 |
return apply_filters( 'cme_detailed_taxonomies', $taxonomies, $tx_args );
|
includes/functions-admin.php
CHANGED
@@ -9,7 +9,13 @@ class PP_Capabilities_Admin_UI {
|
|
9 |
*/
|
10 |
require_once (dirname(CME_FILE) . '/classes/pp-capabilities-notices.php');
|
11 |
|
12 |
-
add_action('
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
add_action('admin_print_scripts', [$this, 'adminPrintScripts']);
|
14 |
|
15 |
add_action('profile_update', [$this, 'action_profile_update'], 10, 2);
|
@@ -20,7 +26,7 @@ class PP_Capabilities_Admin_UI {
|
|
20 |
add_action('user_register', [$this, 'action_profile_update'], 9);
|
21 |
}
|
22 |
|
23 |
-
if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-nav-menus', 'pp-capabilities-settings']))
|
24 |
|| (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
|
25 |
|| ( ! empty($_SERVER['SCRIPT_NAME']) && strpos( $_SERVER['SCRIPT_NAME'], 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
|
26 |
|| ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
|
@@ -39,13 +45,60 @@ class PP_Capabilities_Admin_UI {
|
|
39 |
}
|
40 |
}
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
function adminScripts() {
|
43 |
global $publishpress;
|
44 |
|
45 |
if (function_exists('get_current_screen') && (!defined('PUBLISHPRESS_VERSION') || empty($publishpress) || empty($publishpress->modules) || empty($publishpress->modules->roles))) {
|
46 |
$screen = get_current_screen();
|
47 |
|
48 |
-
if ('user-edit' === $screen->base || ('user' === $screen->base && 'add' === $screen->action)) {
|
49 |
// Check if we are on the user's profile page
|
50 |
wp_enqueue_script(
|
51 |
'pp-capabilities-chosen-js',
|
@@ -74,13 +127,17 @@ class PP_Capabilities_Admin_UI {
|
|
74 |
CAPSMAN_VERSION
|
75 |
);
|
76 |
|
77 |
-
$
|
|
|
|
|
|
|
|
|
78 |
|
79 |
wp_localize_script(
|
80 |
'pp-capabilities-roles-profile-js',
|
81 |
'ppCapabilitiesProfileData',
|
82 |
[
|
83 |
-
'selected_roles' =>
|
84 |
]
|
85 |
);
|
86 |
}
|
@@ -188,6 +245,7 @@ class PP_Capabilities_Admin_UI {
|
|
188 |
);
|
189 |
|
190 |
add_submenu_page('pp-capabilities', __('Roles', 'capsman-enhanced'), __('Roles', 'capsman-enhanced'), $cap_name, 'pp-capabilities-roles', 'cme_fakefunc');
|
|
|
191 |
add_submenu_page('pp-capabilities', __('Admin Menus', 'capsman-enhanced'), __('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', 'cme_fakefunc');
|
192 |
add_submenu_page('pp-capabilities', __('Nav Menus', 'capsman-enhanced'), __('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', 'cme_fakefunc');
|
193 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', 'cme_fakefunc');
|
@@ -212,3 +270,144 @@ class PP_Capabilities_Admin_UI {
|
|
212 |
|
213 |
function cme_fakefunc() {
|
214 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
*/
|
10 |
require_once (dirname(CME_FILE) . '/classes/pp-capabilities-notices.php');
|
11 |
|
12 |
+
add_action('init', [$this, 'featureRestrictionsGutenberg']);
|
13 |
+
|
14 |
+
if (is_admin()) {
|
15 |
+
add_action('admin_init', [$this, 'featureRestrictionsClassic']);
|
16 |
+
}
|
17 |
+
|
18 |
+
add_action('admin_enqueue_scripts', [$this, 'adminScripts'], 100);
|
19 |
add_action('admin_print_scripts', [$this, 'adminPrintScripts']);
|
20 |
|
21 |
add_action('profile_update', [$this, 'action_profile_update'], 10, 2);
|
26 |
add_action('user_register', [$this, 'action_profile_update'], 9);
|
27 |
}
|
28 |
|
29 |
+
if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-editor-features', 'pp-capabilities-nav-menus', 'pp-capabilities-settings']))
|
30 |
|| (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
|
31 |
|| ( ! empty($_SERVER['SCRIPT_NAME']) && strpos( $_SERVER['SCRIPT_NAME'], 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
|
32 |
|| ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
|
45 |
}
|
46 |
}
|
47 |
|
48 |
+
private function applyFeatureRestrictions($editor = 'gutenberg') {
|
49 |
+
global $pagenow;
|
50 |
+
|
51 |
+
// Return if not a post editor request
|
52 |
+
if (!in_array($pagenow, ['post.php', 'post-new.php'])) {
|
53 |
+
return;
|
54 |
+
}
|
55 |
+
|
56 |
+
static $def_post_types; // avoid redundant filter application
|
57 |
+
|
58 |
+
if (!isset($def_post_types)) {
|
59 |
+
//$def_post_types = apply_filters('pp_capabilities_feature_post_types', get_post_types(['public' => true]));
|
60 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
61 |
+
}
|
62 |
+
|
63 |
+
$post_type = pp_capabilities_get_post_type();
|
64 |
+
|
65 |
+
// Return if not a supported post type
|
66 |
+
if (!in_array($post_type, $def_post_types)) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
|
70 |
+
switch ($editor) {
|
71 |
+
case 'gutenberg':
|
72 |
+
if (_pp_capabilities_is_block_editor_active()) {
|
73 |
+
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
74 |
+
PP_Capabilities_Post_Features::applyRestrictions($post_type);
|
75 |
+
}
|
76 |
+
|
77 |
+
break;
|
78 |
+
|
79 |
+
case 'classic':
|
80 |
+
if (!_pp_capabilities_is_block_editor_active()) {
|
81 |
+
require_once ( dirname(CME_FILE) . '/includes/features/restrict-editor-features.php' );
|
82 |
+
PP_Capabilities_Post_Features::adminInitClassic($post_type);
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
function featureRestrictionsGutenberg() {
|
88 |
+
$this->applyFeatureRestrictions();
|
89 |
+
}
|
90 |
+
|
91 |
+
function featureRestrictionsClassic() {
|
92 |
+
$this->applyFeatureRestrictions('classic');
|
93 |
+
}
|
94 |
+
|
95 |
function adminScripts() {
|
96 |
global $publishpress;
|
97 |
|
98 |
if (function_exists('get_current_screen') && (!defined('PUBLISHPRESS_VERSION') || empty($publishpress) || empty($publishpress->modules) || empty($publishpress->modules->roles))) {
|
99 |
$screen = get_current_screen();
|
100 |
|
101 |
+
if ('user-edit' === $screen->base || ('user' === $screen->base && 'add' === $screen->action && defined('PP_CAPABILITIES_ADD_USER_MULTI_ROLES'))) {
|
102 |
// Check if we are on the user's profile page
|
103 |
wp_enqueue_script(
|
104 |
'pp-capabilities-chosen-js',
|
127 |
CAPSMAN_VERSION
|
128 |
);
|
129 |
|
130 |
+
$roles = !empty($_GET['user_id']) ?$this->getUsersRoles($_GET['user_id']) : [];
|
131 |
+
|
132 |
+
if (empty($roles)) {
|
133 |
+
$roles = (array) get_option('default_role');
|
134 |
+
}
|
135 |
|
136 |
wp_localize_script(
|
137 |
'pp-capabilities-roles-profile-js',
|
138 |
'ppCapabilitiesProfileData',
|
139 |
[
|
140 |
+
'selected_roles' => $roles
|
141 |
]
|
142 |
);
|
143 |
}
|
245 |
);
|
246 |
|
247 |
add_submenu_page('pp-capabilities', __('Roles', 'capsman-enhanced'), __('Roles', 'capsman-enhanced'), $cap_name, 'pp-capabilities-roles', 'cme_fakefunc');
|
248 |
+
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', 'cme_fakefunc');
|
249 |
add_submenu_page('pp-capabilities', __('Admin Menus', 'capsman-enhanced'), __('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', 'cme_fakefunc');
|
250 |
add_submenu_page('pp-capabilities', __('Nav Menus', 'capsman-enhanced'), __('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', 'cme_fakefunc');
|
251 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', 'cme_fakefunc');
|
270 |
|
271 |
function cme_fakefunc() {
|
272 |
}
|
273 |
+
|
274 |
+
function pp_capabilities_get_post_id()
|
275 |
+
{
|
276 |
+
global $post;
|
277 |
+
|
278 |
+
if (defined('REST_REQUEST') && REST_REQUEST) {
|
279 |
+
if ($_post_id = apply_filters('presspermit_rest_post_id', 0)) {
|
280 |
+
return $_post_id;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
if (!empty($post) && is_object($post)) {
|
285 |
+
if ('auto-draft' == $post->post_status) {
|
286 |
+
return 0;
|
287 |
+
} else {
|
288 |
+
return $post->ID;
|
289 |
+
}
|
290 |
+
|
291 |
+
} elseif (isset($_REQUEST['post'])) {
|
292 |
+
return (int)$_REQUEST['post'];
|
293 |
+
|
294 |
+
} elseif (isset($_REQUEST['post_ID'])) {
|
295 |
+
return (int)$_REQUEST['post_ID'];
|
296 |
+
|
297 |
+
} elseif (isset($_REQUEST['post_id'])) {
|
298 |
+
return (int)$_REQUEST['post_id'];
|
299 |
+
|
300 |
+
} elseif (defined('WOOCOMMERCE_VERSION') && !empty($_REQUEST['product_id'])) {
|
301 |
+
return (int)$_REQUEST['product_id'];
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Based on Edit Flow's \Block_Editor_Compatible::should_apply_compat method.
|
307 |
+
*
|
308 |
+
* @return bool
|
309 |
+
*/
|
310 |
+
function _pp_capabilities_is_block_editor_active($post_type = '', $args = [])
|
311 |
+
{
|
312 |
+
global $current_user, $wp_version;
|
313 |
+
|
314 |
+
$defaults = ['suppress_filter' => false, 'force_refresh' => false];
|
315 |
+
$args = array_merge($defaults, $args);
|
316 |
+
$suppress_filter = $args['suppress_filter'];
|
317 |
+
|
318 |
+
// Check if Revisionary lower than v1.3 is installed. It disables Gutenberg.
|
319 |
+
if (defined('REVISIONARY_VERSION') && version_compare(REVISIONARY_VERSION, '1.3-beta', '<')) {
|
320 |
+
return false;
|
321 |
+
}
|
322 |
+
|
323 |
+
static $buffer;
|
324 |
+
if (!isset($buffer)) {
|
325 |
+
$buffer = [];
|
326 |
+
}
|
327 |
+
|
328 |
+
if (!$post_type = pp_capabilities_get_post_type()) {
|
329 |
+
return true;
|
330 |
+
}
|
331 |
+
|
332 |
+
if ($post_type_obj = get_post_type_object($post_type)) {
|
333 |
+
if (!$post_type_obj->show_in_rest) {
|
334 |
+
return false;
|
335 |
+
}
|
336 |
+
}
|
337 |
+
|
338 |
+
if (isset($buffer[$post_type]) && empty($args['force_refresh']) && !$suppress_filter) {
|
339 |
+
return $buffer[$post_type];
|
340 |
+
}
|
341 |
+
|
342 |
+
if (class_exists('Classic_Editor')) {
|
343 |
+
if (isset($_REQUEST['classic-editor__forget']) && (isset($_REQUEST['classic']) || isset($_REQUEST['classic-editor']))) {
|
344 |
+
return false;
|
345 |
+
} elseif (isset($_REQUEST['classic-editor__forget']) && !isset($_REQUEST['classic']) && !isset($_REQUEST['classic-editor'])) {
|
346 |
+
return true;
|
347 |
+
} elseif (get_option('classic-editor-allow-users') === 'allow') {
|
348 |
+
if ($post_id = pp_capabilities_get_post_id()) {
|
349 |
+
$which = get_post_meta( $post_id, 'classic-editor-remember', true );
|
350 |
+
|
351 |
+
if ('block-editor' == $which) {
|
352 |
+
return true;
|
353 |
+
} elseif ('classic-editor' == $which) {
|
354 |
+
return false;
|
355 |
+
}
|
356 |
+
} else {
|
357 |
+
$use_block = ('block' == get_user_meta($current_user->ID, 'wp_classic-editor-settings'));
|
358 |
+
return $use_block && apply_filters('use_block_editor_for_post_type', $use_block, $post_type, PHP_INT_MAX);
|
359 |
+
}
|
360 |
+
}
|
361 |
+
}
|
362 |
+
|
363 |
+
$pluginsState = array(
|
364 |
+
'classic-editor' => class_exists( 'Classic_Editor' ), // is_plugin_active('classic-editor/classic-editor.php'),
|
365 |
+
'gutenberg' => function_exists( 'the_gutenberg_project' ), //is_plugin_active('gutenberg/gutenberg.php'),
|
366 |
+
'gutenberg-ramp' => class_exists('Gutenberg_Ramp'),
|
367 |
+
);
|
368 |
+
|
369 |
+
$conditions = [];
|
370 |
+
|
371 |
+
if ($suppress_filter) remove_filter('use_block_editor_for_post_type', $suppress_filter, 10, 2);
|
372 |
+
|
373 |
+
/**
|
374 |
+
* 5.0:
|
375 |
+
*
|
376 |
+
* Classic editor either disabled or enabled (either via an option or with GET argument).
|
377 |
+
* It's a hairy conditional :(
|
378 |
+
*/
|
379 |
+
// phpcs:ignore WordPress.VIP.SuperGlobalInputUsage.AccessDetected, WordPress.Security.NonceVerification.NoNonceVerification
|
380 |
+
$conditions[] = (version_compare($wp_version, '5.0', '>=') || $pluginsState['gutenberg'])
|
381 |
+
&& ! $pluginsState['classic-editor']
|
382 |
+
&& ! $pluginsState['gutenberg-ramp']
|
383 |
+
&& apply_filters('use_block_editor_for_post_type', true, $post_type, PHP_INT_MAX);
|
384 |
+
|
385 |
+
$conditions[] = version_compare($wp_version, '5.0', '>=')
|
386 |
+
&& $pluginsState['classic-editor']
|
387 |
+
&& (get_option('classic-editor-replace') === 'block'
|
388 |
+
&& ! isset($_GET['classic-editor__forget']));
|
389 |
+
|
390 |
+
$conditions[] = version_compare($wp_version, '5.0', '>=')
|
391 |
+
&& $pluginsState['classic-editor']
|
392 |
+
&& (get_option('classic-editor-replace') === 'classic'
|
393 |
+
&& isset($_GET['classic-editor__forget']));
|
394 |
+
|
395 |
+
$conditions[] = $pluginsState['gutenberg-ramp']
|
396 |
+
&& apply_filters('use_block_editor_for_post', true, get_post(pp_capabilities_get_post_id()), PHP_INT_MAX);
|
397 |
+
|
398 |
+
// Returns true if at least one condition is true.
|
399 |
+
$result = count(
|
400 |
+
array_filter($conditions,
|
401 |
+
function ($c) {
|
402 |
+
return (bool)$c;
|
403 |
+
}
|
404 |
+
)
|
405 |
+
) > 0;
|
406 |
+
|
407 |
+
if (!$suppress_filter) {
|
408 |
+
$buffer[$post_type] = $result;
|
409 |
+
}
|
410 |
+
|
411 |
+
// Returns true if at least one condition is true.
|
412 |
+
return $result;
|
413 |
+
}
|
includes/functions.php
CHANGED
@@ -8,7 +8,7 @@ function pp_capabilities_is_editable_role($role_name, $args = []) {
|
|
8 |
|
9 |
if (!isset($editable_roles) || !empty($args['force_refresh'])) {
|
10 |
$all_roles = wp_roles()->roles;
|
11 |
-
$editable_roles = apply_filters('editable_roles', $all_roles);
|
12 |
}
|
13 |
|
14 |
return apply_filters('pp_capabilities_editable_role', isset($editable_roles[$role_name]), $role_name);
|
@@ -121,3 +121,61 @@ function pp_capabilities_update_permissions_option($option_basename, $option_val
|
|
121 |
{
|
122 |
function_exists('presspermit') ? presspermit()->updateOption($option_basename, $option_val) : pp_update_option($option_basename, $option_val);
|
123 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
if (!isset($editable_roles) || !empty($args['force_refresh'])) {
|
10 |
$all_roles = wp_roles()->roles;
|
11 |
+
$editable_roles = apply_filters('editable_roles', $all_roles, $args);
|
12 |
}
|
13 |
|
14 |
return apply_filters('pp_capabilities_editable_role', isset($editable_roles[$role_name]), $role_name);
|
121 |
{
|
122 |
function_exists('presspermit') ? presspermit()->updateOption($option_basename, $option_val) : pp_update_option($option_basename, $option_val);
|
123 |
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Get post type.
|
127 |
+
*
|
128 |
+
* @return null|string String of the post type.
|
129 |
+
*/
|
130 |
+
function pp_capabilities_get_post_type()
|
131 |
+
{
|
132 |
+
global $post, $typenow, $current_screen;
|
133 |
+
|
134 |
+
// We have a post so we can just get the post type from that.
|
135 |
+
if ($post && $post->post_type) {
|
136 |
+
return $post->post_type;
|
137 |
+
}
|
138 |
+
|
139 |
+
// Check the global $typenow - set in admin.php
|
140 |
+
if ($typenow) {
|
141 |
+
return $typenow;
|
142 |
+
}
|
143 |
+
|
144 |
+
// Check the global $current_screen object - set in screen.php
|
145 |
+
if ($current_screen && $current_screen->post_type) {
|
146 |
+
return $current_screen->post_type;
|
147 |
+
}
|
148 |
+
|
149 |
+
if (isset($_GET['post']) && !is_array($_GET['post'])) {
|
150 |
+
$post_id = (int) esc_attr($_GET['post']);
|
151 |
+
|
152 |
+
} elseif (isset($_POST['post_ID'])) {
|
153 |
+
$post_id = (int) esc_attr($_POST['post_ID']);
|
154 |
+
}
|
155 |
+
|
156 |
+
if (!empty($post_id)) {
|
157 |
+
return get_post_type($post_id);
|
158 |
+
}
|
159 |
+
|
160 |
+
// lastly check the post_type querystring
|
161 |
+
if (isset($_REQUEST['post_type'])) {
|
162 |
+
return sanitize_key($_REQUEST['post_type']);
|
163 |
+
}
|
164 |
+
|
165 |
+
return 'post';
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Check if Classic Editor plugin is available.
|
170 |
+
*
|
171 |
+
* @return bool
|
172 |
+
*/
|
173 |
+
function pp_capabilities_is_classic_editor_available()
|
174 |
+
{
|
175 |
+
global $wp_version;
|
176 |
+
|
177 |
+
return class_exists('Classic_Editor')
|
178 |
+
|| function_exists( 'the_gutenberg_project' )
|
179 |
+
|| class_exists('Gutenberg_Ramp')
|
180 |
+
|| version_compare($wp_version, '5.0', '<');
|
181 |
+
}
|
includes/handler.php
CHANGED
@@ -357,7 +357,6 @@ class CapsmanHandler
|
|
357 |
foreach ( $del_caps as $cap => $grant) {
|
358 |
$blog_role->remove_cap($cap);
|
359 |
}
|
360 |
-
|
361 |
} else {
|
362 |
$wp_roles->add_role( $role_name, $role_caption, $new_caps );
|
363 |
}
|
357 |
foreach ( $del_caps as $cap => $grant) {
|
358 |
$blog_role->remove_cap($cap);
|
359 |
}
|
|
|
360 |
} else {
|
361 |
$wp_roles->add_role( $role_name, $role_caption, $new_caps );
|
362 |
}
|
includes/manager.php
CHANGED
@@ -168,16 +168,16 @@ class CapabilityManager
|
|
168 |
*/
|
169 |
function adminStyles()
|
170 |
{
|
171 |
-
if ( empty( $_REQUEST['page'] ) || ! in_array( $_REQUEST['page'], array( 'pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-nav-menus', 'pp-capabilities-backup', 'pp-capabilities-settings' ) ) )
|
172 |
return;
|
173 |
|
174 |
wp_enqueue_style('cme-admin-common', $this->mod_url . '/common/css/pressshack-admin.css', [], PUBLISHPRESS_CAPS_VERSION);
|
175 |
|
176 |
wp_register_style( $this->ID . 'framework_admin', $this->mod_url . '/framework/styles/admin.css', false, PUBLISHPRESS_CAPS_VERSION);
|
177 |
-
|
178 |
|
179 |
-
|
180 |
-
|
181 |
|
182 |
$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
|
183 |
$url = $this->mod_url . "/common/js/admin{$suffix}.js";
|
@@ -331,7 +331,9 @@ class CapabilityManager
|
|
331 |
}
|
332 |
);
|
333 |
}
|
334 |
-
|
|
|
|
|
335 |
do_action('pp-capabilities-admin-submenus');
|
336 |
|
337 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', array($this, 'backupTool'));
|
@@ -360,8 +362,8 @@ class CapabilityManager
|
|
360 |
|
361 |
function($arr) {
|
362 |
return [
|
363 |
-
|
364 |
-
|
365 |
'role' => __('Role', 'capsman-enhanced'),
|
366 |
'count' => __('Users', 'capsman-enhanced'),
|
367 |
];
|
@@ -404,6 +406,57 @@ class CapabilityManager
|
|
404 |
require_once ( dirname(CME_FILE) . '/includes/roles/roles.php' );
|
405 |
}
|
406 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
407 |
/**
|
408 |
* Sets the 'manage_capabilities' cap to the administrator role.
|
409 |
*
|
168 |
*/
|
169 |
function adminStyles()
|
170 |
{
|
171 |
+
if ( empty( $_REQUEST['page'] ) || ! in_array( $_REQUEST['page'], array( 'pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-nav-menus', 'pp-capabilities-editor-features', 'pp-capabilities-backup', 'pp-capabilities-settings' ) ) )
|
172 |
return;
|
173 |
|
174 |
wp_enqueue_style('cme-admin-common', $this->mod_url . '/common/css/pressshack-admin.css', [], PUBLISHPRESS_CAPS_VERSION);
|
175 |
|
176 |
wp_register_style( $this->ID . 'framework_admin', $this->mod_url . '/framework/styles/admin.css', false, PUBLISHPRESS_CAPS_VERSION);
|
177 |
+
wp_enqueue_style( $this->ID . 'framework_admin');
|
178 |
|
179 |
+
wp_register_style( $this->ID . '_admin', $this->mod_url . '/common/css/admin.css', false, PUBLISHPRESS_CAPS_VERSION);
|
180 |
+
wp_enqueue_style( $this->ID . '_admin');
|
181 |
|
182 |
$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
|
183 |
$url = $this->mod_url . "/common/js/admin{$suffix}.js";
|
331 |
}
|
332 |
);
|
333 |
}
|
334 |
+
|
335 |
+
add_submenu_page('pp-capabilities', __('Editor Features', 'capsman-enhanced'), __('Editor Features', 'capsman-enhanced'), $cap_name, 'pp-capabilities-editor-features', [$this, 'ManageEditorFeatures']);
|
336 |
+
|
337 |
do_action('pp-capabilities-admin-submenus');
|
338 |
|
339 |
add_submenu_page('pp-capabilities', __('Backup', 'capsman-enhanced'), __('Backup', 'capsman-enhanced'), $cap_name, 'pp-capabilities-backup', array($this, 'backupTool'));
|
362 |
|
363 |
function($arr) {
|
364 |
return [
|
365 |
+
'cb' => '<input type="checkbox"/>',
|
366 |
+
'name' => __('Name', 'capsman-enhanced'),
|
367 |
'role' => __('Role', 'capsman-enhanced'),
|
368 |
'count' => __('Users', 'capsman-enhanced'),
|
369 |
];
|
406 |
require_once ( dirname(CME_FILE) . '/includes/roles/roles.php' );
|
407 |
}
|
408 |
|
409 |
+
public function ManageEditorFeatures() {
|
410 |
+
if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
|
411 |
+
// TODO: Implement exceptions.
|
412 |
+
wp_die('<strong>' .__('You do not have permission to manage editor features.', 'capabilities-pro') . '</strong>');
|
413 |
+
}
|
414 |
+
|
415 |
+
$this->generateNames();
|
416 |
+
$roles = array_keys($this->roles);
|
417 |
+
|
418 |
+
if (!isset($this->current)) {
|
419 |
+
if (empty($_POST) && !empty($_REQUEST['role'])) {
|
420 |
+
$this->current = $_REQUEST['role'];
|
421 |
+
}
|
422 |
+
}
|
423 |
+
|
424 |
+
if (!isset($this->current) || !get_role($this->current)) {
|
425 |
+
$this->current = get_option('default_role');
|
426 |
+
}
|
427 |
+
|
428 |
+
if (!in_array($this->current, $roles)) {
|
429 |
+
$this->current = array_shift($roles);
|
430 |
+
}
|
431 |
+
|
432 |
+
if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-editor-features-role'])) {
|
433 |
+
$this->current = $_POST['ppc-editor-features-role'];
|
434 |
+
|
435 |
+
$classic_editor = pp_capabilities_is_classic_editor_available();
|
436 |
+
|
437 |
+
//$def_post_types = apply_filters('pp_capabilities_feature_post_types', get_post_types(['public' => true]));
|
438 |
+
$def_post_types = apply_filters('pp_capabilities_feature_post_types', ['post', 'page']);
|
439 |
+
|
440 |
+
foreach ($def_post_types as $post_type) {
|
441 |
+
if ($classic_editor) {
|
442 |
+
$posted_settings = (isset($_POST["capsman_feature_restrict_classic_{$post_type}"])) ? $_POST["capsman_feature_restrict_classic_{$post_type}"] : [];
|
443 |
+
$post_features_option = get_option("capsman_feature_restrict_classic_{$post_type}", []);
|
444 |
+
$post_features_option[$_POST['ppc-editor-features-role']] = $posted_settings;
|
445 |
+
update_option("capsman_feature_restrict_classic_{$post_type}", $post_features_option, false);
|
446 |
+
}
|
447 |
+
|
448 |
+
$posted_settings = (isset($_POST["capsman_feature_restrict_{$post_type}"])) ? $_POST["capsman_feature_restrict_{$post_type}"] : [];
|
449 |
+
$post_features_option = get_option("capsman_feature_restrict_{$post_type}", []);
|
450 |
+
$post_features_option[$_POST['ppc-editor-features-role']] = $posted_settings;
|
451 |
+
update_option("capsman_feature_restrict_{$post_type}", $post_features_option, false);
|
452 |
+
}
|
453 |
+
|
454 |
+
ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
|
455 |
+
}
|
456 |
+
|
457 |
+
include(dirname(CME_FILE) . '/includes/features/editor-features.php');
|
458 |
+
}
|
459 |
+
|
460 |
/**
|
461 |
* Sets the 'manage_capabilities' cap to the administrator role.
|
462 |
*
|
includes/pp-ui.php
CHANGED
@@ -70,24 +70,6 @@ class Capsman_PP_UI {
|
|
70 |
}
|
71 |
}
|
72 |
|
73 |
-
function pp_only_roles_ui( $default ) {
|
74 |
-
$support_pp_only_roles = defined('PRESSPERMIT_ACTIVE') || version_compare( PP_VERSION, '1.0-beta1.4', '>=');
|
75 |
-
?>
|
76 |
-
|
77 |
-
<?php if ( $support_pp_only_roles && ! in_array( $default, array( /*'subscriber', 'contributor', 'author', 'editor',*/ 'administrator' ) ) ) : ?>
|
78 |
-
<div style="float:right">
|
79 |
-
<?php
|
80 |
-
pp_refresh_options();
|
81 |
-
$pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
|
82 |
-
$checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
|
83 |
-
?>
|
84 |
-
<label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" autocomplete="off" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'capsman-enhanced'); ?> </label>
|
85 |
-
</div>
|
86 |
-
<?php endif; ?>
|
87 |
-
<?php
|
88 |
-
return $support_pp_only_roles;
|
89 |
-
}
|
90 |
-
|
91 |
// Note: CME can now impose type-specific capabilities without Press Permit Core active
|
92 |
function pp_types_ui( $defined_types ) {
|
93 |
?>
|
70 |
}
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
// Note: CME can now impose type-specific capabilities without Press Permit Core active
|
74 |
function pp_types_ui( $defined_types ) {
|
75 |
?>
|
includes/publishpress-roles.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
class CME_PublishPressRoles {
|
3 |
-
function scripts() {
|
4 |
?>
|
5 |
<script type="text/javascript">
|
6 |
/* <![CDATA[ */
|
1 |
<?php
|
2 |
class CME_PublishPressRoles {
|
3 |
+
public static function scripts() {
|
4 |
?>
|
5 |
<script type="text/javascript">
|
6 |
/* <![CDATA[ */
|
includes/roles/class/class-pp-roles-list-table.php
CHANGED
@@ -261,7 +261,9 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
|
|
261 |
['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
|
262 |
admin_url('admin.php')
|
263 |
),
|
264 |
-
esc_html($item['name']),
|
|
|
|
|
265 |
} else {
|
266 |
$out = esc_html($item['name']);
|
267 |
}
|
261 |
['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
|
262 |
admin_url('admin.php')
|
263 |
),
|
264 |
+
esc_html($item['name']),
|
265 |
+
$role_states
|
266 |
+
);
|
267 |
} else {
|
268 |
$out = esc_html($item['name']);
|
269 |
}
|
languages/capsman-enhanced-en_US.mo
CHANGED
Binary file
|
languages/capsman-enhanced-en_US.po
CHANGED
@@ -2,8 +2,8 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: PublishPress Capabilities\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2021-
|
6 |
-
"PO-Revision-Date: 2021-
|
7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
9 |
"Language: en_US\n"
|
@@ -13,7 +13,7 @@ msgstr ""
|
|
13 |
"X-Poedit-KeywordsList: __;_e;_c;__ngettext;_n;pp_po_trigger;_x\n"
|
14 |
"X-Poedit-Basepath: F:/snapshot/capability-manager-enhanced\n"
|
15 |
"X-Poedit-SourceCharset: utf-8\n"
|
16 |
-
"X-Generator: Poedit 2.4.
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
"X-Poedit-KeywordsList: __;_e;_c;_x;__ngettext\n"
|
19 |
"X-Poedit-Basepath: ..\n"
|
@@ -31,16 +31,16 @@ msgstr ""
|
|
31 |
msgid "<strong>This plugin can be deleted.</strong>"
|
32 |
msgstr ""
|
33 |
|
34 |
-
#: capsman-enhanced.php:
|
35 |
msgid "Warning:"
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: capsman-enhanced.php:
|
39 |
#, php-format
|
40 |
msgid "The active plugin %s is not compatible with your PHP version."
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: capsman-enhanced.php:
|
44 |
#, php-format
|
45 |
msgid "%s is required for this plugin."
|
46 |
msgstr ""
|
@@ -49,11 +49,11 @@ msgstr ""
|
|
49 |
msgid "Settings saved."
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: includes-core/CoreAdmin.php:
|
53 |
msgid "Admin Menus"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: includes-core/CoreAdmin.php:
|
57 |
msgid "Nav Menus"
|
58 |
msgstr ""
|
59 |
|
@@ -62,7 +62,9 @@ msgid "Admin Menu Restrictions"
|
|
62 |
msgstr ""
|
63 |
|
64 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
65 |
-
#: includes/admin.php:
|
|
|
|
|
66 |
msgid "Save Changes"
|
67 |
msgstr ""
|
68 |
|
@@ -73,8 +75,8 @@ msgid ""
|
|
73 |
msgstr ""
|
74 |
|
75 |
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
76 |
-
#: includes/functions-admin.php:
|
77 |
-
#: includes/manager.php:
|
78 |
msgid "Upgrade to Pro"
|
79 |
msgstr ""
|
80 |
|
@@ -95,17 +97,17 @@ msgid ""
|
|
95 |
"%1$sClick here to fix this now%2$s."
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: includes/admin.php:
|
99 |
msgid "Role Capabilities"
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: includes/admin.php:
|
103 |
msgid ""
|
104 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
105 |
"strong> after plugin deactivation."
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: includes/admin.php:
|
109 |
#, php-format
|
110 |
msgid ""
|
111 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
@@ -113,225 +115,222 @@ msgid ""
|
|
113 |
"%sPermission Group%s."
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: includes/admin.php:
|
117 |
msgid "PublishPress Permissions"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: includes/admin.php:
|
121 |
msgid ""
|
122 |
"Automatically define type-specific capabilities for your custom post types "
|
123 |
"and taxonomies"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: includes/admin.php:
|
127 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/admin.php:
|
131 |
msgid ""
|
132 |
"Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/admin.php:
|
136 |
msgid "Customize reading permissions per-category or per-post"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/admin.php:
|
140 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/admin.php:
|
144 |
msgid ""
|
145 |
"Custom Post Visibility statuses, fully implemented throughout wp-admin "
|
146 |
"<em>(Pro)</em>"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: includes/admin.php:
|
150 |
msgid ""
|
151 |
"Custom Moderation statuses for access-controlled, multi-step publishing "
|
152 |
"workflow <em>(Pro)</em>"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: includes/admin.php:
|
156 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: includes/admin.php:
|
160 |
msgid ""
|
161 |
"Customize the moderated editing of published content with Revisionary or "
|
162 |
"Post Forking <em>(Pro)</em>"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/admin.php:
|
166 |
msgid ""
|
167 |
"Grant Spectator, Participant or Moderator access to specific bbPress forums "
|
168 |
"<em>(Pro)</em>"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: includes/admin.php:
|
172 |
msgid ""
|
173 |
"Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: includes/admin.php:
|
177 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: includes/admin.php:
|
181 |
msgid "Member support forum"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: includes/admin.php:
|
185 |
#, php-format
|
186 |
msgid "%1$sgrab%2$s %3$s"
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: includes/admin.php:
|
190 |
#, php-format
|
191 |
msgid "%s (free install)"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: includes/admin.php:
|
195 |
#, php-format
|
196 |
msgid "%1$sbuy%2$s %3$s"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: includes/admin.php:
|
200 |
#, php-format
|
201 |
msgid "%s info/purchase"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/admin.php:
|
205 |
msgid " "
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/admin.php:
|
209 |
msgid "Reading"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/admin.php:
|
213 |
msgid "Editing Capabilities"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/admin.php:
|
217 |
msgid "Deletion Capabilities"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/admin.php:
|
221 |
msgid "can read posts which are currently published with private visibility"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/admin.php:
|
225 |
msgid ""
|
226 |
"has basic editing capability (but may need other capabilities based on post "
|
227 |
"status and ownership)"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: includes/admin.php:
|
231 |
msgid "can edit posts which were created by other users"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: includes/admin.php:
|
235 |
msgid "can edit posts which are currently published"
|
236 |
msgstr ""
|
237 |
|
238 |
-
#: includes/admin.php:
|
239 |
msgid "can edit posts which are currently published with private visibility"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: includes/admin.php:
|
243 |
msgid "can make a post publicly visible"
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: includes/admin.php:
|
247 |
msgid ""
|
248 |
"has basic deletion capability (but may need other capabilities based on post "
|
249 |
"status and ownership)"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/admin.php:
|
253 |
msgid "can delete posts which were created by other users"
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: includes/admin.php:
|
257 |
msgid "can delete posts which are currently published"
|
258 |
msgstr ""
|
259 |
|
260 |
-
#: includes/admin.php:
|
261 |
msgid "can delete posts which are currently published with private visibility"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: includes/admin.php:
|
265 |
-
#: includes/admin.php:
|
266 |
#, php-format
|
267 |
msgid "%s: assigned by Permission Group"
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: includes/admin.php:
|
271 |
#, php-format
|
272 |
msgid "shared capability: %s"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: includes/admin.php:
|
276 |
msgid "Other WordPress Core Capabilities"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: includes/admin.php:
|
280 |
msgid ""
|
281 |
"Lockout Prevention: To remove read capability, first remove WordPress "
|
282 |
"admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/admin.php:
|
286 |
-
#: includes/admin.php:1044
|
287 |
msgid "check/uncheck all"
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: includes/admin.php:
|
291 |
-
#: includes/admin.php:1044
|
292 |
msgid "negate all (storing as disabled capabilities)"
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: includes/admin.php:
|
296 |
-
#: includes/admin.php:1044
|
297 |
msgid "negate none (add/remove all capabilities normally)"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: includes/admin.php:
|
301 |
#, php-format
|
302 |
msgid "%s Capabilities"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/admin.php:
|
306 |
-
msgid "
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/admin.php:
|
310 |
msgid ""
|
311 |
-
"
|
312 |
-
"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: includes/admin.php:
|
316 |
-
msgid "
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: includes/admin.php:
|
320 |
msgid ""
|
321 |
"Role level is mostly deprecated. However, it still determines eligibility "
|
322 |
"for Post Author assignment and limits the application of user editing "
|
323 |
"capabilities."
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: includes/admin.php:
|
327 |
msgid "Level:"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: includes/admin.php:
|
331 |
msgid "Delete this role"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/admin.php:
|
335 |
#, php-format
|
336 |
msgid ""
|
337 |
"You are about to delete the %s role.\n"
|
@@ -339,68 +338,77 @@ msgid ""
|
|
339 |
" 'Cancel' to stop, 'OK' to delete."
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/admin.php:
|
343 |
msgid "Delete Role"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: includes/admin.php:
|
347 |
msgid "Add Capability"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: includes/admin.php:
|
351 |
msgid "Add to role"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: includes/admin.php:
|
355 |
msgid "Copy this role to"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/admin.php:
|
|
|
359 |
msgid "Role Name"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: includes/admin.php:
|
363 |
msgid ""
|
364 |
"Make role available for supplemental assignment to Permission Groups only"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: includes/admin.php:
|
368 |
msgid "hidden"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: includes/admin.php:
|
372 |
msgid "Copy"
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: includes/admin.php:
|
376 |
msgid "Rename Role"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/admin.php:
|
380 |
msgid "New Role Name"
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: includes/admin.php:
|
384 |
msgid "Rename"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: includes/admin.php:
|
388 |
msgid "Create this role definition in new (future) sites"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: includes/admin.php:
|
392 |
msgid "include in new sites"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: includes/admin.php:
|
396 |
msgid "Copy / update this role definition to all sites now"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: includes/admin.php:
|
400 |
msgid "sync role to all sites now"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
msgid "You do not have permission to restore roles."
|
405 |
msgstr ""
|
406 |
|
@@ -442,8 +450,8 @@ msgstr ""
|
|
442 |
msgid "Restore"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: includes/backup.php:47 includes/functions-admin.php:
|
446 |
-
#: includes/manager.php:
|
447 |
msgid "Backup"
|
448 |
msgstr ""
|
449 |
|
@@ -547,193 +555,472 @@ msgstr ""
|
|
547 |
msgid "%s (level %s)"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: includes/backup.php:
|
|
|
|
|
|
|
|
|
551 |
msgid "Reset WordPress Defaults"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: includes/backup.php:
|
555 |
msgid "WARNING:"
|
556 |
msgstr ""
|
557 |
|
558 |
-
#: includes/backup.php:
|
559 |
msgid ""
|
560 |
"Reseting default Roles and Capabilities will set them to the WordPress "
|
561 |
"install defaults."
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: includes/backup.php:
|
565 |
msgid ""
|
566 |
"If you have installed any plugin that adds new roles or capabilities, these "
|
567 |
"will be lost."
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: includes/backup.php:
|
571 |
msgid "It is recommended to use this only as a last resource!"
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: includes/backup.php:
|
575 |
msgid "Reset Roles and Capabilities to WordPress defaults"
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: includes/backup.php:
|
579 |
msgid ""
|
580 |
"You are about to reset Roles and Capabilities to WordPress defaults.\n"
|
581 |
" 'Cancel' to stop, 'OK' to reset."
|
582 |
msgstr ""
|
583 |
|
584 |
-
#: includes/backup.php:
|
585 |
msgid "Reset to WordPress defaults"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
589 |
#, php-format
|
590 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
591 |
msgstr ""
|
592 |
|
|
|
593 |
#: includes/filters-woocommerce.php:33
|
594 |
msgid "Add New"
|
595 |
msgstr ""
|
596 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
597 |
#: includes/filters.php:312
|
598 |
msgid "Edit Roles"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: includes/functions-admin.php:
|
602 |
-
#: includes/roles/class/class-pp-roles-list-table.php:
|
603 |
msgid "Capabilities"
|
604 |
msgstr ""
|
605 |
|
606 |
-
#: includes/functions-admin.php:
|
607 |
#: includes/roles/roles.php:4
|
608 |
msgid "Roles"
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: includes/functions-admin.php:
|
612 |
-
msgid "
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: includes/handler.php:
|
616 |
msgid "New role created."
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: includes/handler.php:
|
620 |
msgid "Error: Failed creating the new role."
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: includes/handler.php:
|
624 |
#, php-format
|
625 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: includes/handler.php:
|
629 |
msgid "Incorrect capability name."
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: includes/handler.php:
|
633 |
msgid "Type / Taxonomy settings saved."
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: includes/handler.php:
|
637 |
msgid "Bad form received."
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: includes/handler.php:
|
641 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: includes/
|
645 |
-
#, php-format
|
646 |
-
msgid ""
|
647 |
-
"Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
|
648 |
-
msgstr ""
|
649 |
-
|
650 |
-
#: includes/handler.php:404
|
651 |
-
#, php-format
|
652 |
-
msgid "Role has been deleted. %1$d users moved to default role %2$s."
|
653 |
-
msgstr ""
|
654 |
-
|
655 |
-
#: includes/manager.php:174
|
656 |
msgid "Explicity negate this capability by storing as disabled"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/manager.php:
|
660 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: includes/manager.php:
|
664 |
msgid "Post type registration does not define this capability distinctly"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: includes/manager.php:
|
668 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: includes/manager.php:
|
672 |
msgid "Add or remove this capability from the WordPress role"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: includes/manager.php:
|
676 |
msgid "Add or remove capability from the role normally"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/manager.php:
|
680 |
-
|
681 |
-
msgid "Role"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: includes/manager.php:
|
685 |
-
#: includes/roles/class/class-pp-roles-list-table.php:
|
686 |
-
|
687 |
-
msgid "Name"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: includes/manager.php:
|
691 |
-
#: includes/roles/class/class-pp-roles-list-table.php:
|
692 |
msgid "Users"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/manager.php:
|
696 |
msgid "You do not have permission to manage roles."
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/manager.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
700 |
msgid "You do not have permission to manage capabilities."
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/manager.php:
|
704 |
msgid "New capability added to role."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/manager.php:
|
|
|
|
|
|
|
|
|
708 |
msgid "Bad form Received"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/manager.php:
|
712 |
#, php-format
|
713 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: includes/manager.php:
|
717 |
msgid "About PublishPress Capabilities"
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: includes/manager.php:
|
721 |
msgid "About"
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: includes/manager.php:
|
725 |
msgid "Capabilites Documentation"
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: includes/manager.php:
|
729 |
msgid "Documentation"
|
730 |
msgstr ""
|
731 |
|
732 |
-
#: includes/manager.php:
|
733 |
msgid "Contact the PublishPress team"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: includes/manager.php:
|
737 |
msgid "Contact"
|
738 |
msgstr ""
|
739 |
|
@@ -784,77 +1071,122 @@ msgid ""
|
|
784 |
"status-specific role."
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/pp-ui.php:
|
788 |
-
msgid "hidden role"
|
789 |
-
msgstr ""
|
790 |
-
|
791 |
-
#: includes/pp-ui.php:95
|
792 |
msgid "Type-Specific Capabilities"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/pp-ui.php:
|
796 |
msgid "Ensure permissions can be controlled separately from other post types."
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/pp-ui.php:
|
800 |
msgid ""
|
801 |
"Make selected post types require a different capability to add new posts."
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: includes/pp-ui.php:
|
805 |
msgid "Use create_posts capability"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: includes/pp-ui.php:
|
809 |
msgid "Update"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: includes/pp-ui.php:
|
813 |
msgid "Taxonomy-Specific Capabilities"
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: includes/pp-ui.php:
|
817 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: includes/pp-ui.php:
|
821 |
msgid "Detailed Taxonomy Capabilities"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: includes/pp-ui.php:
|
825 |
msgid ""
|
826 |
"Enforce Edit, Delete and Assign capabilities separately from Management "
|
827 |
"capability."
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
831 |
msgid "You do not have sufficient permissions to perform this action."
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
835 |
msgid "Your link has expired, refresh the page and try again."
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
839 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
|
|
|
|
840 |
msgid "Missing parameters, refresh the page and try again."
|
841 |
msgstr ""
|
842 |
|
843 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
844 |
msgid ""
|
845 |
"Something went wrong, the system wasn't able to create the role, refresh the "
|
846 |
"page and try again."
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: includes/roles/class/class-pp-roles-actions.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
850 |
msgid "Deleting a system role is not allowed."
|
851 |
msgstr ""
|
852 |
|
853 |
-
#: includes/roles/class/class-pp-roles-
|
854 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
855 |
msgid "Delete"
|
856 |
msgstr ""
|
857 |
|
|
|
|
|
|
|
|
|
858 |
#: includes/roles/roles-functions.php:32
|
859 |
msgid "Are you sure you want to delete this role?"
|
860 |
msgstr ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: PublishPress Capabilities\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2021-06-23 13:17-0400\n"
|
6 |
+
"PO-Revision-Date: 2021-06-23 13:17-0400\n"
|
7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
9 |
"Language: en_US\n"
|
13 |
"X-Poedit-KeywordsList: __;_e;_c;__ngettext;_n;pp_po_trigger;_x\n"
|
14 |
"X-Poedit-Basepath: F:/snapshot/capability-manager-enhanced\n"
|
15 |
"X-Poedit-SourceCharset: utf-8\n"
|
16 |
+
"X-Generator: Poedit 2.4.3\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
"X-Poedit-KeywordsList: __;_e;_c;_x;__ngettext\n"
|
19 |
"X-Poedit-Basepath: ..\n"
|
31 |
msgid "<strong>This plugin can be deleted.</strong>"
|
32 |
msgstr ""
|
33 |
|
34 |
+
#: capsman-enhanced.php:98
|
35 |
msgid "Warning:"
|
36 |
msgstr ""
|
37 |
|
38 |
+
#: capsman-enhanced.php:99
|
39 |
#, php-format
|
40 |
msgid "The active plugin %s is not compatible with your PHP version."
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: capsman-enhanced.php:101
|
44 |
#, php-format
|
45 |
msgid "%s is required for this plugin."
|
46 |
msgstr ""
|
49 |
msgid "Settings saved."
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: includes-core/CoreAdmin.php:53 includes/functions-admin.php:249
|
53 |
msgid "Admin Menus"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: includes-core/CoreAdmin.php:54 includes/functions-admin.php:250
|
57 |
msgid "Nav Menus"
|
58 |
msgstr ""
|
59 |
|
62 |
msgstr ""
|
63 |
|
64 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
65 |
+
#: includes/admin.php:107 includes/admin.php:1094
|
66 |
+
#: includes/features/editor-features.php:66
|
67 |
+
#: includes/features/editor-features.php:119 includes/settings.php:54
|
68 |
msgid "Save Changes"
|
69 |
msgstr ""
|
70 |
|
75 |
msgstr ""
|
76 |
|
77 |
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
78 |
+
#: includes/functions-admin.php:260 includes/functions-admin.php:261
|
79 |
+
#: includes/manager.php:348 includes/manager.php:349
|
80 |
msgid "Upgrade to Pro"
|
81 |
msgstr ""
|
82 |
|
97 |
"%1$sClick here to fix this now%2$s."
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: includes/admin.php:66
|
101 |
msgid "Role Capabilities"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: includes/admin.php:117
|
105 |
msgid ""
|
106 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
107 |
"strong> after plugin deactivation."
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: includes/admin.php:122
|
111 |
#, php-format
|
112 |
msgid ""
|
113 |
"<strong>Note:</strong> Capability changes <strong>remain in the database</"
|
115 |
"%sPermission Group%s."
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: includes/admin.php:156 includes/settings.php:38
|
119 |
msgid "PublishPress Permissions"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: includes/admin.php:158
|
123 |
msgid ""
|
124 |
"Automatically define type-specific capabilities for your custom post types "
|
125 |
"and taxonomies"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: includes/admin.php:162
|
129 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: includes/admin.php:166
|
133 |
msgid ""
|
134 |
"Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
135 |
msgstr ""
|
136 |
|
137 |
+
#: includes/admin.php:170
|
138 |
msgid "Customize reading permissions per-category or per-post"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: includes/admin.php:174
|
142 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: includes/admin.php:178
|
146 |
msgid ""
|
147 |
"Custom Post Visibility statuses, fully implemented throughout wp-admin "
|
148 |
"<em>(Pro)</em>"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/admin.php:182
|
152 |
msgid ""
|
153 |
"Custom Moderation statuses for access-controlled, multi-step publishing "
|
154 |
"workflow <em>(Pro)</em>"
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: includes/admin.php:186
|
158 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/admin.php:190
|
162 |
msgid ""
|
163 |
"Customize the moderated editing of published content with Revisionary or "
|
164 |
"Post Forking <em>(Pro)</em>"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: includes/admin.php:194
|
168 |
msgid ""
|
169 |
"Grant Spectator, Participant or Moderator access to specific bbPress forums "
|
170 |
"<em>(Pro)</em>"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: includes/admin.php:198
|
174 |
msgid ""
|
175 |
"Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: includes/admin.php:202
|
179 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: includes/admin.php:206
|
183 |
msgid "Member support forum"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: includes/admin.php:213
|
187 |
#, php-format
|
188 |
msgid "%1$sgrab%2$s %3$s"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: includes/admin.php:213
|
192 |
#, php-format
|
193 |
msgid "%s (free install)"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/admin.php:215
|
197 |
#, php-format
|
198 |
msgid "%1$sbuy%2$s %3$s"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: includes/admin.php:215
|
202 |
#, php-format
|
203 |
msgid "%s info/purchase"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/admin.php:296
|
207 |
msgid " "
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: includes/admin.php:297
|
211 |
msgid "Reading"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: includes/admin.php:298
|
215 |
msgid "Editing Capabilities"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: includes/admin.php:299
|
219 |
msgid "Deletion Capabilities"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: includes/admin.php:303
|
223 |
msgid "can read posts which are currently published with private visibility"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: includes/admin.php:304
|
227 |
msgid ""
|
228 |
"has basic editing capability (but may need other capabilities based on post "
|
229 |
"status and ownership)"
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: includes/admin.php:305
|
233 |
msgid "can edit posts which were created by other users"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: includes/admin.php:306
|
237 |
msgid "can edit posts which are currently published"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: includes/admin.php:307
|
241 |
msgid "can edit posts which are currently published with private visibility"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: includes/admin.php:308
|
245 |
msgid "can make a post publicly visible"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: includes/admin.php:309
|
249 |
msgid ""
|
250 |
"has basic deletion capability (but may need other capabilities based on post "
|
251 |
"status and ownership)"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/admin.php:310
|
255 |
msgid "can delete posts which were created by other users"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/admin.php:311
|
259 |
msgid "can delete posts which are currently published"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: includes/admin.php:312
|
263 |
msgid "can delete posts which are currently published with private visibility"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: includes/admin.php:446 includes/admin.php:563 includes/admin.php:823
|
267 |
+
#: includes/admin.php:1009
|
268 |
#, php-format
|
269 |
msgid "%s: assigned by Permission Group"
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: includes/admin.php:461
|
273 |
#, php-format
|
274 |
msgid "shared capability: %s"
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/admin.php:540
|
278 |
msgid "Other WordPress Core Capabilities"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/admin.php:582
|
282 |
msgid ""
|
283 |
"Lockout Prevention: To remove read capability, first remove WordPress "
|
284 |
"admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
|
|
288 |
msgid "check/uncheck all"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
|
|
292 |
msgid "negate all (storing as disabled capabilities)"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
|
|
296 |
msgid "negate none (add/remove all capabilities normally)"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/admin.php:797
|
300 |
#, php-format
|
301 |
msgid "%s Capabilities"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: includes/admin.php:873
|
305 |
+
msgid "Invalid Capabilities"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/admin.php:878
|
309 |
msgid ""
|
310 |
+
"The following entries have no effect. Please assign desired capabilities in "
|
311 |
+
"the Read / Edit / Delete grid above."
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: includes/admin.php:955
|
315 |
+
msgid "Additional Capabilities"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: includes/admin.php:1072
|
319 |
msgid ""
|
320 |
"Role level is mostly deprecated. However, it still determines eligibility "
|
321 |
"for Post Author assignment and limits the application of user editing "
|
322 |
"capabilities."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/admin.php:1074
|
326 |
msgid "Level:"
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/admin.php:1097
|
330 |
msgid "Delete this role"
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/admin.php:1097
|
334 |
#, php-format
|
335 |
msgid ""
|
336 |
"You are about to delete the %s role.\n"
|
338 |
" 'Cancel' to stop, 'OK' to delete."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/admin.php:1097
|
342 |
msgid "Delete Role"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: includes/admin.php:1106
|
346 |
msgid "Add Capability"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: includes/admin.php:1109
|
350 |
msgid "Add to role"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: includes/admin.php:1121
|
354 |
msgid "Copy this role to"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/admin.php:1124
|
358 |
+
#: includes/roles/class/class-pp-roles-list-table.php:80
|
359 |
msgid "Role Name"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: includes/admin.php:1127
|
363 |
msgid ""
|
364 |
"Make role available for supplemental assignment to Permission Groups only"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: includes/admin.php:1127
|
368 |
msgid "hidden"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: includes/admin.php:1131
|
372 |
msgid "Copy"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/admin.php:1137
|
376 |
msgid "Rename Role"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/admin.php:1139
|
380 |
msgid "New Role Name"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: includes/admin.php:1142
|
384 |
msgid "Rename"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: includes/admin.php:1171
|
388 |
msgid "Create this role definition in new (future) sites"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: includes/admin.php:1171
|
392 |
msgid "include in new sites"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: includes/admin.php:1174
|
396 |
msgid "Copy / update this role definition to all sites now"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/admin.php:1174
|
400 |
msgid "sync role to all sites now"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: includes/admin.php:1177
|
404 |
+
msgid "Copy option settings to all sites now"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: includes/admin.php:1177
|
408 |
+
msgid "sync options to all sites now"
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: includes/backup-handler.php:9 includes/manager.php:776
|
412 |
msgid "You do not have permission to restore roles."
|
413 |
msgstr ""
|
414 |
|
450 |
msgid "Restore"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: includes/backup.php:47 includes/functions-admin.php:251
|
454 |
+
#: includes/manager.php:339
|
455 |
msgid "Backup"
|
456 |
msgstr ""
|
457 |
|
555 |
msgid "%s (level %s)"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: includes/backup.php:264
|
559 |
+
msgid "No changes"
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
#: includes/backup.php:281
|
563 |
msgid "Reset WordPress Defaults"
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: includes/backup.php:283
|
567 |
msgid "WARNING:"
|
568 |
msgstr ""
|
569 |
|
570 |
+
#: includes/backup.php:283
|
571 |
msgid ""
|
572 |
"Reseting default Roles and Capabilities will set them to the WordPress "
|
573 |
"install defaults."
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: includes/backup.php:287
|
577 |
msgid ""
|
578 |
"If you have installed any plugin that adds new roles or capabilities, these "
|
579 |
"will be lost."
|
580 |
msgstr ""
|
581 |
|
582 |
+
#: includes/backup.php:289
|
583 |
msgid "It is recommended to use this only as a last resource!"
|
584 |
msgstr ""
|
585 |
|
586 |
+
#: includes/backup.php:292
|
587 |
msgid "Reset Roles and Capabilities to WordPress defaults"
|
588 |
msgstr ""
|
589 |
|
590 |
+
#: includes/backup.php:294
|
591 |
msgid ""
|
592 |
"You are about to reset Roles and Capabilities to WordPress defaults.\n"
|
593 |
" 'Cancel' to stop, 'OK' to reset."
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: includes/backup.php:294
|
597 |
msgid "Reset to WordPress defaults"
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: includes/features/editor-features-classic.php:18
|
601 |
+
msgid "Classic Editor Screen"
|
602 |
+
msgstr ""
|
603 |
+
|
604 |
+
#: includes/features/editor-features-classic.php:23
|
605 |
+
#: includes/features/editor-features-gutenberg.php:23
|
606 |
#, php-format
|
607 |
+
msgid "%s Restrict"
|
608 |
+
msgstr ""
|
609 |
+
|
610 |
+
#: includes/features/editor-features-classic.php:24
|
611 |
+
#: includes/features/editor-features-gutenberg.php:24
|
612 |
+
msgid "Toggle all"
|
613 |
+
msgstr ""
|
614 |
+
|
615 |
+
#: includes/features/editor-features-gutenberg.php:18
|
616 |
+
msgid "Gutenberg Screen"
|
617 |
+
msgstr ""
|
618 |
+
|
619 |
+
#: includes/features/editor-features.php:31
|
620 |
+
msgid "Editor Feature Restriction"
|
621 |
+
msgstr ""
|
622 |
+
|
623 |
+
#: includes/features/editor-features.php:45
|
624 |
+
msgid ""
|
625 |
+
"Select editor features to remove. Note that this screen cannot be used to "
|
626 |
+
"grant additional features to any role."
|
627 |
+
msgstr ""
|
628 |
+
|
629 |
+
#: includes/features/editor-features.php:89
|
630 |
+
msgid "Gutenberg"
|
631 |
+
msgstr ""
|
632 |
+
|
633 |
+
#: includes/features/editor-features.php:92
|
634 |
+
msgid "Classic"
|
635 |
+
msgstr ""
|
636 |
+
|
637 |
+
#: includes/features/restrict-editor-features.php:40
|
638 |
+
msgid "Top Tabs"
|
639 |
+
msgstr ""
|
640 |
+
|
641 |
+
#: includes/features/restrict-editor-features.php:41
|
642 |
+
msgid "Help"
|
643 |
+
msgstr ""
|
644 |
+
|
645 |
+
#: includes/features/restrict-editor-features.php:42
|
646 |
+
msgid "Screen Options"
|
647 |
+
msgstr ""
|
648 |
+
|
649 |
+
#: includes/features/restrict-editor-features.php:45
|
650 |
+
#: includes/features/restrict-editor-features.php:48
|
651 |
+
msgid "Editor"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: includes/features/restrict-editor-features.php:46
|
655 |
#: includes/filters-woocommerce.php:33
|
656 |
msgid "Add New"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: includes/features/restrict-editor-features.php:47
|
660 |
+
msgid "Title"
|
661 |
+
msgstr ""
|
662 |
+
|
663 |
+
#: includes/features/restrict-editor-features.php:49
|
664 |
+
#: includes/features/restrict-editor-features.php:324
|
665 |
+
msgid "Permalink"
|
666 |
+
msgstr ""
|
667 |
+
|
668 |
+
#: includes/features/restrict-editor-features.php:50
|
669 |
+
msgid "Media Buttons (all)"
|
670 |
+
msgstr ""
|
671 |
+
|
672 |
+
#: includes/features/restrict-editor-features.php:51
|
673 |
+
msgid "HTML Editor Button"
|
674 |
+
msgstr ""
|
675 |
+
|
676 |
+
#: includes/features/restrict-editor-features.php:52
|
677 |
+
msgid "Word count"
|
678 |
+
msgstr ""
|
679 |
+
|
680 |
+
#: includes/features/restrict-editor-features.php:55
|
681 |
+
#: includes/features/restrict-editor-features.php:56
|
682 |
+
msgid "Publish Box"
|
683 |
+
msgstr ""
|
684 |
+
|
685 |
+
#: includes/features/restrict-editor-features.php:57
|
686 |
+
#: includes/features/restrict-editor-features.php:309
|
687 |
+
msgid "Save Draft"
|
688 |
+
msgstr ""
|
689 |
+
|
690 |
+
#: includes/features/restrict-editor-features.php:58
|
691 |
+
#: includes/features/restrict-editor-features.php:311
|
692 |
+
msgid "Preview"
|
693 |
+
msgstr ""
|
694 |
+
|
695 |
+
#: includes/features/restrict-editor-features.php:59
|
696 |
+
msgid "Publish Status "
|
697 |
+
msgstr ""
|
698 |
+
|
699 |
+
#: includes/features/restrict-editor-features.php:60
|
700 |
+
msgid "Publish Visibility"
|
701 |
+
msgstr ""
|
702 |
+
|
703 |
+
#: includes/features/restrict-editor-features.php:61
|
704 |
+
msgid "Password Protect This Post"
|
705 |
+
msgstr ""
|
706 |
+
|
707 |
+
#: includes/features/restrict-editor-features.php:62
|
708 |
+
msgid "Publish Actions"
|
709 |
+
msgstr ""
|
710 |
+
|
711 |
+
#: includes/features/restrict-editor-features.php:63
|
712 |
+
msgid "Publish Schedule"
|
713 |
+
msgstr ""
|
714 |
+
|
715 |
+
#: includes/features/restrict-editor-features.php:64
|
716 |
+
msgid "Date"
|
717 |
+
msgstr ""
|
718 |
+
|
719 |
+
#: includes/features/restrict-editor-features.php:65
|
720 |
+
msgid "Publish"
|
721 |
+
msgstr ""
|
722 |
+
|
723 |
+
#: includes/features/restrict-editor-features.php:68
|
724 |
+
msgid "Taxonomy Boxes"
|
725 |
+
msgstr ""
|
726 |
+
|
727 |
+
#: includes/features/restrict-editor-features.php:69
|
728 |
+
#: includes/features/restrict-editor-features.php:325
|
729 |
+
msgid "Categories"
|
730 |
+
msgstr ""
|
731 |
+
|
732 |
+
#: includes/features/restrict-editor-features.php:70
|
733 |
+
msgid "Add New Category"
|
734 |
+
msgstr ""
|
735 |
+
|
736 |
+
#: includes/features/restrict-editor-features.php:71
|
737 |
+
#: includes/features/restrict-editor-features.php:326
|
738 |
+
msgid "Tags"
|
739 |
+
msgstr ""
|
740 |
+
|
741 |
+
#: includes/features/restrict-editor-features.php:83
|
742 |
+
msgid "Page Boxes"
|
743 |
+
msgstr ""
|
744 |
+
|
745 |
+
#: includes/features/restrict-editor-features.php:84
|
746 |
+
msgid "Page Attributes"
|
747 |
+
msgstr ""
|
748 |
+
|
749 |
+
#: includes/features/restrict-editor-features.php:85
|
750 |
+
msgid "Parent"
|
751 |
+
msgstr ""
|
752 |
+
|
753 |
+
#: includes/features/restrict-editor-features.php:86
|
754 |
+
msgid "Page Template"
|
755 |
+
msgstr ""
|
756 |
+
|
757 |
+
#: includes/features/restrict-editor-features.php:87
|
758 |
+
msgid "Order"
|
759 |
+
msgstr ""
|
760 |
+
|
761 |
+
#: includes/features/restrict-editor-features.php:90
|
762 |
+
msgid "Other Boxes"
|
763 |
+
msgstr ""
|
764 |
+
|
765 |
+
#: includes/features/restrict-editor-features.php:91
|
766 |
+
msgid "Featured Image"
|
767 |
+
msgstr ""
|
768 |
+
|
769 |
+
#: includes/features/restrict-editor-features.php:92
|
770 |
+
msgid "Post Slug"
|
771 |
+
msgstr ""
|
772 |
+
|
773 |
+
#: includes/features/restrict-editor-features.php:93
|
774 |
+
#: includes/features/restrict-editor-features.php:342
|
775 |
+
msgid "Discussion"
|
776 |
+
msgstr ""
|
777 |
+
|
778 |
+
#: includes/features/restrict-editor-features.php:299
|
779 |
+
msgid "Top Bar - Left"
|
780 |
+
msgstr ""
|
781 |
+
|
782 |
+
#: includes/features/restrict-editor-features.php:300
|
783 |
+
msgid "Add block"
|
784 |
+
msgstr ""
|
785 |
+
|
786 |
+
#: includes/features/restrict-editor-features.php:301
|
787 |
+
msgid "Modes"
|
788 |
+
msgstr ""
|
789 |
+
|
790 |
+
#: includes/features/restrict-editor-features.php:302
|
791 |
+
msgid "Undo"
|
792 |
+
msgstr ""
|
793 |
+
|
794 |
+
#: includes/features/restrict-editor-features.php:303
|
795 |
+
msgid "Redo"
|
796 |
+
msgstr ""
|
797 |
+
|
798 |
+
#: includes/features/restrict-editor-features.php:304
|
799 |
+
msgid "Details"
|
800 |
+
msgstr ""
|
801 |
+
|
802 |
+
#: includes/features/restrict-editor-features.php:305
|
803 |
+
msgid "Outline"
|
804 |
+
msgstr ""
|
805 |
+
|
806 |
+
#: includes/features/restrict-editor-features.php:308
|
807 |
+
msgid "Top Bar - Right"
|
808 |
+
msgstr ""
|
809 |
+
|
810 |
+
#: includes/features/restrict-editor-features.php:310
|
811 |
+
msgid "Switch to draft"
|
812 |
+
msgstr ""
|
813 |
+
|
814 |
+
#: includes/features/restrict-editor-features.php:312
|
815 |
+
msgid "Publish / Update"
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
#: includes/features/restrict-editor-features.php:313
|
819 |
+
#: includes/functions-admin.php:254 includes/manager.php:342
|
820 |
+
msgid "Settings"
|
821 |
+
msgstr ""
|
822 |
+
|
823 |
+
#: includes/features/restrict-editor-features.php:314
|
824 |
+
msgid "Options"
|
825 |
+
msgstr ""
|
826 |
+
|
827 |
+
#: includes/features/restrict-editor-features.php:317
|
828 |
+
msgid "Body"
|
829 |
+
msgstr ""
|
830 |
+
|
831 |
+
#: includes/features/restrict-editor-features.php:318
|
832 |
+
msgid "Edit title"
|
833 |
+
msgstr ""
|
834 |
+
|
835 |
+
#: includes/features/restrict-editor-features.php:319
|
836 |
+
msgid "Content"
|
837 |
+
msgstr ""
|
838 |
+
|
839 |
+
#: includes/features/restrict-editor-features.php:322
|
840 |
+
msgid "Document Panel"
|
841 |
+
msgstr ""
|
842 |
+
|
843 |
+
#: includes/features/restrict-editor-features.php:323
|
844 |
+
msgid "Status & visibility"
|
845 |
+
msgstr ""
|
846 |
+
|
847 |
+
#: includes/features/restrict-editor-features.php:340
|
848 |
+
msgid "Featured image"
|
849 |
+
msgstr ""
|
850 |
+
|
851 |
+
#: includes/features/restrict-editor-features.php:341
|
852 |
+
msgid "Excerpt"
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
+
#: includes/features/restrict-editor-features.php:343
|
856 |
+
msgid "Post Attributes"
|
857 |
+
msgstr ""
|
858 |
+
|
859 |
+
#: includes/features/restrict-editor-features.php:346
|
860 |
+
#: includes/features/restrict-editor-features.php:347
|
861 |
+
msgid "Block Panel"
|
862 |
+
msgstr ""
|
863 |
+
|
864 |
+
#: includes/features/restrict-editor-features.php:348
|
865 |
+
msgid "Paragraph"
|
866 |
+
msgstr ""
|
867 |
+
|
868 |
+
#: includes/features/restrict-editor-features.php:349
|
869 |
+
msgid "Typography"
|
870 |
+
msgstr ""
|
871 |
+
|
872 |
+
#: includes/features/restrict-editor-features.php:350
|
873 |
+
msgid "Color settings"
|
874 |
+
msgstr ""
|
875 |
+
|
876 |
+
#: includes/features/restrict-editor-features.php:351
|
877 |
+
msgid "Text settings"
|
878 |
+
msgstr ""
|
879 |
+
|
880 |
+
#: includes/filters-woocommerce.php:32
|
881 |
+
#, php-format
|
882 |
+
msgid "All %s"
|
883 |
+
msgstr ""
|
884 |
+
|
885 |
#: includes/filters.php:312
|
886 |
msgid "Edit Roles"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: includes/functions-admin.php:225 includes/manager.php:301
|
890 |
+
#: includes/roles/class/class-pp-roles-list-table.php:125
|
891 |
msgid "Capabilities"
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/functions-admin.php:247 includes/manager.php:323
|
895 |
#: includes/roles/roles.php:4
|
896 |
msgid "Roles"
|
897 |
msgstr ""
|
898 |
|
899 |
+
#: includes/functions-admin.php:248 includes/manager.php:335
|
900 |
+
msgid "Editor Features"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: includes/handler.php:28 includes/handler.php:54
|
904 |
msgid "New role created."
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: includes/handler.php:34 includes/handler.php:60
|
908 |
msgid "Error: Failed creating the new role."
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: includes/handler.php:47
|
912 |
#, php-format
|
913 |
msgid "Role \"%s\" (id %s) renamed to \"%s\""
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: includes/handler.php:126
|
917 |
msgid "Incorrect capability name."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/handler.php:131
|
921 |
msgid "Type / Taxonomy settings saved."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: includes/handler.php:137
|
925 |
msgid "Bad form received."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/handler.php:260
|
929 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/manager.php:186
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
933 |
msgid "Explicity negate this capability by storing as disabled"
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: includes/manager.php:187
|
937 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: includes/manager.php:188
|
941 |
msgid "Post type registration does not define this capability distinctly"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/manager.php:189
|
945 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: includes/manager.php:190
|
949 |
msgid "Add or remove this capability from the WordPress role"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: includes/manager.php:191
|
953 |
msgid "Add or remove capability from the role normally"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/manager.php:366 includes/roles/roles.php:33
|
957 |
+
msgid "Name"
|
|
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: includes/manager.php:367
|
961 |
+
#: includes/roles/class/class-pp-roles-list-table.php:81
|
962 |
+
msgid "Role"
|
|
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/manager.php:368
|
966 |
+
#: includes/roles/class/class-pp-roles-list-table.php:82
|
967 |
msgid "Users"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: includes/manager.php:395
|
971 |
msgid "You do not have permission to manage roles."
|
972 |
msgstr ""
|
973 |
|
974 |
+
#: includes/manager.php:412
|
975 |
+
msgid "You do not have permission to manage editor features."
|
976 |
+
msgstr ""
|
977 |
+
|
978 |
+
#: includes/manager.php:454
|
979 |
+
msgid "Settings updated."
|
980 |
+
msgstr ""
|
981 |
+
|
982 |
+
#: includes/manager.php:556 includes/manager.php:597
|
983 |
msgid "You do not have permission to manage capabilities."
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: includes/manager.php:611
|
987 |
msgid "New capability added to role."
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: includes/manager.php:629
|
991 |
+
msgid "The selected role is not editable."
|
992 |
+
msgstr ""
|
993 |
+
|
994 |
+
#: includes/manager.php:656
|
995 |
msgid "Bad form Received"
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: includes/manager.php:806
|
999 |
#, php-format
|
1000 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: includes/manager.php:817
|
1004 |
msgid "About PublishPress Capabilities"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: includes/manager.php:817
|
1008 |
msgid "About"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: includes/manager.php:819
|
1012 |
msgid "Capabilites Documentation"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: includes/manager.php:819
|
1016 |
msgid "Documentation"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/manager.php:821
|
1020 |
msgid "Contact the PublishPress team"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/manager.php:821
|
1024 |
msgid "Contact"
|
1025 |
msgstr ""
|
1026 |
|
1071 |
"status-specific role."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/pp-ui.php:77
|
|
|
|
|
|
|
|
|
1075 |
msgid "Type-Specific Capabilities"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: includes/pp-ui.php:80
|
1079 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/pp-ui.php:143
|
1083 |
msgid ""
|
1084 |
"Make selected post types require a different capability to add new posts."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: includes/pp-ui.php:143
|
1088 |
msgid "Use create_posts capability"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: includes/pp-ui.php:151 includes/pp-ui.php:214 includes/pp-ui.php:270
|
1092 |
msgid "Update"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
+
#: includes/pp-ui.php:161
|
1096 |
msgid "Taxonomy-Specific Capabilities"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: includes/pp-ui.php:164
|
1100 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: includes/pp-ui.php:219
|
1104 |
msgid "Detailed Taxonomy Capabilities"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: includes/pp-ui.php:222
|
1108 |
msgid ""
|
1109 |
"Enforce Edit, Delete and Assign capabilities separately from Management "
|
1110 |
"capability."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: includes/roles/class/class-pp-roles-actions.php:143
|
1114 |
msgid "You do not have sufficient permissions to perform this action."
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: includes/roles/class/class-pp-roles-actions.php:159
|
1118 |
msgid "Your link has expired, refresh the page and try again."
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: includes/roles/class/class-pp-roles-actions.php:180
|
1122 |
+
#: includes/roles/class/class-pp-roles-actions.php:298
|
1123 |
+
#: includes/roles/class/class-pp-roles-actions.php:412
|
1124 |
+
#: includes/roles/class/class-pp-roles-actions.php:473
|
1125 |
msgid "Missing parameters, refresh the page and try again."
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: includes/roles/class/class-pp-roles-actions.php:214
|
1129 |
msgid ""
|
1130 |
"Something went wrong, the system wasn't able to create the role, refresh the "
|
1131 |
"page and try again."
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: includes/roles/class/class-pp-roles-actions.php:306
|
1135 |
+
#, php-format
|
1136 |
+
msgid ""
|
1137 |
+
"Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
|
1138 |
+
msgstr ""
|
1139 |
+
|
1140 |
+
#: includes/roles/class/class-pp-roles-actions.php:322
|
1141 |
msgid "Deleting a system role is not allowed."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
+
#: includes/roles/class/class-pp-roles-actions.php:345
|
1145 |
+
#, php-format
|
1146 |
+
msgid "%1$d users moved to default role %2$s."
|
1147 |
+
msgstr ""
|
1148 |
+
|
1149 |
+
#: includes/roles/class/class-pp-roles-actions.php:350
|
1150 |
+
#, php-format
|
1151 |
+
msgid "The role %1$s was successfully deleted. %2$s"
|
1152 |
+
msgstr ""
|
1153 |
+
|
1154 |
+
#: includes/roles/class/class-pp-roles-actions.php:356
|
1155 |
+
#, php-format
|
1156 |
+
msgid "The selected %1$s roles were successfully deleted. %2$s"
|
1157 |
+
msgstr ""
|
1158 |
+
|
1159 |
+
#: includes/roles/class/class-pp-roles-actions.php:369
|
1160 |
+
msgid "The role could not be deleted."
|
1161 |
+
msgstr ""
|
1162 |
+
|
1163 |
+
#: includes/roles/class/class-pp-roles-actions.php:423
|
1164 |
+
#, php-format
|
1165 |
+
msgid "The role %1$s was successfully hidden."
|
1166 |
+
msgstr ""
|
1167 |
+
|
1168 |
+
#: includes/roles/class/class-pp-roles-actions.php:484
|
1169 |
+
#, php-format
|
1170 |
+
msgid "The role %1$s was successfully unhidden."
|
1171 |
+
msgstr ""
|
1172 |
+
|
1173 |
+
#: includes/roles/class/class-pp-roles-list-table.php:130
|
1174 |
+
msgid "(non-editable role)"
|
1175 |
+
msgstr ""
|
1176 |
+
|
1177 |
+
#: includes/roles/class/class-pp-roles-list-table.php:150
|
1178 |
+
msgid "Unhide"
|
1179 |
+
msgstr ""
|
1180 |
+
|
1181 |
+
#: includes/roles/class/class-pp-roles-list-table.php:168
|
1182 |
+
#: includes/roles/class/class-pp-roles-list-table.php:307
|
1183 |
msgid "Delete"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: includes/roles/class/class-pp-roles-list-table.php:189
|
1187 |
+
msgid "Hide"
|
1188 |
+
msgstr ""
|
1189 |
+
|
1190 |
#: includes/roles/roles-functions.php:32
|
1191 |
msgid "Are you sure you want to delete this role?"
|
1192 |
msgstr ""
|
languages/capsman-enhanced.pot
CHANGED
@@ -3,7 +3,7 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: PublishPress Capabilities\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
-
"POT-Creation-Date: 2021-
|
7 |
"PO-Revision-Date: 2020-10-08 11:17-0500\n"
|
8 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
9 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
@@ -14,7 +14,7 @@ msgstr ""
|
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"Language: en_US\n"
|
17 |
-
"X-Generator: Poedit 2.4.
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPath-1: includes\n"
|
20 |
"X-Poedit-SearchPath-2: includes-core\n"
|
@@ -45,11 +45,11 @@ msgstr ""
|
|
45 |
msgid "Settings saved."
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: includes-core/CoreAdmin.php:53 includes/functions-admin.php:
|
49 |
msgid "Admin Menus"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: includes-core/CoreAdmin.php:54 includes/functions-admin.php:
|
53 |
msgid "Nav Menus"
|
54 |
msgstr ""
|
55 |
|
@@ -58,7 +58,9 @@ msgid "Admin Menu Restrictions"
|
|
58 |
msgstr ""
|
59 |
|
60 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
61 |
-
#: includes/admin.php:107 includes/admin.php:
|
|
|
|
|
62 |
msgid "Save Changes"
|
63 |
msgstr ""
|
64 |
|
@@ -67,8 +69,8 @@ msgid "You can restrict access to admin menu screens. This feature is available
|
|
67 |
msgstr ""
|
68 |
|
69 |
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
70 |
-
#: includes/functions-admin.php:
|
71 |
-
#: includes/manager.php:
|
72 |
msgid "Upgrade to Pro"
|
73 |
msgstr ""
|
74 |
|
@@ -230,8 +232,8 @@ msgstr ""
|
|
230 |
msgid "can delete posts which are currently published with private visibility"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: includes/admin.php:446 includes/admin.php:
|
234 |
-
#: includes/admin.php:
|
235 |
#, php-format
|
236 |
msgid "%s: assigned by Permission Group"
|
237 |
msgstr ""
|
@@ -241,56 +243,56 @@ msgstr ""
|
|
241 |
msgid "shared capability: %s"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: includes/admin.php:
|
245 |
msgid "Other WordPress Core Capabilities"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: includes/admin.php:
|
249 |
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: includes/admin.php:
|
253 |
msgid "check/uncheck all"
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: includes/admin.php:
|
257 |
msgid "negate all (storing as disabled capabilities)"
|
258 |
msgstr ""
|
259 |
|
260 |
-
#: includes/admin.php:
|
261 |
msgid "negate none (add/remove all capabilities normally)"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: includes/admin.php:
|
265 |
#, php-format
|
266 |
msgid "%s Capabilities"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/admin.php:
|
270 |
msgid "Invalid Capabilities"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: includes/admin.php:
|
274 |
msgid "The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/admin.php:
|
278 |
msgid "Additional Capabilities"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/admin.php:
|
282 |
msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/admin.php:
|
286 |
msgid "Level:"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/admin.php:
|
290 |
msgid "Delete this role"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/admin.php:
|
294 |
#, php-format
|
295 |
msgid ""
|
296 |
"You are about to delete the %s role.\n"
|
@@ -298,76 +300,76 @@ msgid ""
|
|
298 |
" 'Cancel' to stop, 'OK' to delete."
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/admin.php:
|
302 |
msgid "Delete Role"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/admin.php:
|
306 |
msgid "Add Capability"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/admin.php:
|
310 |
msgid "Add to role"
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: includes/admin.php:
|
314 |
msgid "Copy this role to"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/admin.php:
|
318 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
319 |
msgid "Role Name"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: includes/admin.php:
|
323 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: includes/admin.php:
|
327 |
msgid "hidden"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: includes/admin.php:
|
331 |
msgid "Copy"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/admin.php:
|
335 |
msgid "Rename Role"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: includes/admin.php:
|
339 |
msgid "New Role Name"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: includes/admin.php:
|
343 |
msgid "Rename"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: includes/admin.php:
|
347 |
msgid "Create this role definition in new (future) sites"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: includes/admin.php:
|
351 |
msgid "include in new sites"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: includes/admin.php:
|
355 |
msgid "Copy / update this role definition to all sites now"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/admin.php:
|
359 |
msgid "sync role to all sites now"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: includes/admin.php:
|
363 |
msgid "Copy option settings to all sites now"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: includes/admin.php:
|
367 |
msgid "sync options to all sites now"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: includes/backup-handler.php:9 includes/manager.php:
|
371 |
msgid "You do not have permission to restore roles."
|
372 |
msgstr ""
|
373 |
|
@@ -409,8 +411,8 @@ msgstr ""
|
|
409 |
msgid "Restore"
|
410 |
msgstr ""
|
411 |
|
412 |
-
#: includes/backup.php:47 includes/functions-admin.php:
|
413 |
-
#: includes/manager.php:
|
414 |
msgid "Backup"
|
415 |
msgstr ""
|
416 |
|
@@ -543,31 +545,305 @@ msgstr ""
|
|
543 |
msgid "Reset to WordPress defaults"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: includes/
|
|
|
|
|
|
|
|
|
|
|
547 |
#, php-format
|
548 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
549 |
msgstr ""
|
550 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
551 |
#: includes/filters-woocommerce.php:33
|
552 |
msgid "Add New"
|
553 |
msgstr ""
|
554 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
#: includes/filters.php:312
|
556 |
msgid "Edit Roles"
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/functions-admin.php:
|
560 |
#: includes/roles/class/class-pp-roles-list-table.php:125
|
561 |
msgid "Capabilities"
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: includes/functions-admin.php:
|
565 |
#: includes/roles/roles.php:4
|
566 |
msgid "Roles"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: includes/functions-admin.php:
|
570 |
-
msgid "
|
571 |
msgstr ""
|
572 |
|
573 |
#: includes/handler.php:28 includes/handler.php:54
|
@@ -623,66 +899,74 @@ msgstr ""
|
|
623 |
msgid "Add or remove capability from the role normally"
|
624 |
msgstr ""
|
625 |
|
626 |
-
#: includes/manager.php:
|
627 |
msgid "Name"
|
628 |
msgstr ""
|
629 |
|
630 |
-
#: includes/manager.php:
|
631 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
632 |
msgid "Role"
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/manager.php:
|
636 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
637 |
msgid "Users"
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: includes/manager.php:
|
641 |
msgid "You do not have permission to manage roles."
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: includes/manager.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
645 |
msgid "You do not have permission to manage capabilities."
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: includes/manager.php:
|
649 |
msgid "New capability added to role."
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: includes/manager.php:
|
653 |
msgid "The selected role is not editable."
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: includes/manager.php:
|
657 |
msgid "Bad form Received"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: includes/manager.php:
|
661 |
#, php-format
|
662 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: includes/manager.php:
|
666 |
msgid "About PublishPress Capabilities"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: includes/manager.php:
|
670 |
msgid "About"
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: includes/manager.php:
|
674 |
msgid "Capabilites Documentation"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: includes/manager.php:
|
678 |
msgid "Documentation"
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: includes/manager.php:
|
682 |
msgid "Contact the PublishPress team"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: includes/manager.php:
|
686 |
msgid "Contact"
|
687 |
msgstr ""
|
688 |
|
@@ -719,43 +1003,39 @@ msgstr ""
|
|
719 |
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."
|
720 |
msgstr ""
|
721 |
|
722 |
-
#: includes/pp-ui.php:
|
723 |
-
msgid "hidden role"
|
724 |
-
msgstr ""
|
725 |
-
|
726 |
-
#: includes/pp-ui.php:95
|
727 |
msgid "Type-Specific Capabilities"
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: includes/pp-ui.php:
|
731 |
msgid "Ensure permissions can be controlled separately from other post types."
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: includes/pp-ui.php:
|
735 |
msgid "Make selected post types require a different capability to add new posts."
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: includes/pp-ui.php:
|
739 |
msgid "Use create_posts capability"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: includes/pp-ui.php:
|
743 |
msgid "Update"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: includes/pp-ui.php:
|
747 |
msgid "Taxonomy-Specific Capabilities"
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: includes/pp-ui.php:
|
751 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: includes/pp-ui.php:
|
755 |
msgid "Detailed Taxonomy Capabilities"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: includes/pp-ui.php:
|
759 |
msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
|
760 |
msgstr ""
|
761 |
|
@@ -825,7 +1105,7 @@ msgid "Unhide"
|
|
825 |
msgstr ""
|
826 |
|
827 |
#: includes/roles/class/class-pp-roles-list-table.php:168
|
828 |
-
#: includes/roles/class/class-pp-roles-list-table.php:
|
829 |
msgid "Delete"
|
830 |
msgstr ""
|
831 |
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: PublishPress Capabilities\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2021-06-23 13:16-0400\n"
|
7 |
"PO-Revision-Date: 2020-10-08 11:17-0500\n"
|
8 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
9 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"Language: en_US\n"
|
17 |
+
"X-Generator: Poedit 2.4.3\n"
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPath-1: includes\n"
|
20 |
"X-Poedit-SearchPath-2: includes-core\n"
|
45 |
msgid "Settings saved."
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: includes-core/CoreAdmin.php:53 includes/functions-admin.php:249
|
49 |
msgid "Admin Menus"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: includes-core/CoreAdmin.php:54 includes/functions-admin.php:250
|
53 |
msgid "Nav Menus"
|
54 |
msgstr ""
|
55 |
|
58 |
msgstr ""
|
59 |
|
60 |
#: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
|
61 |
+
#: includes/admin.php:107 includes/admin.php:1094
|
62 |
+
#: includes/features/editor-features.php:66
|
63 |
+
#: includes/features/editor-features.php:119 includes/settings.php:54
|
64 |
msgid "Save Changes"
|
65 |
msgstr ""
|
66 |
|
69 |
msgstr ""
|
70 |
|
71 |
#: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
|
72 |
+
#: includes/functions-admin.php:260 includes/functions-admin.php:261
|
73 |
+
#: includes/manager.php:348 includes/manager.php:349
|
74 |
msgid "Upgrade to Pro"
|
75 |
msgstr ""
|
76 |
|
232 |
msgid "can delete posts which are currently published with private visibility"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: includes/admin.php:446 includes/admin.php:563 includes/admin.php:823
|
236 |
+
#: includes/admin.php:1009
|
237 |
#, php-format
|
238 |
msgid "%s: assigned by Permission Group"
|
239 |
msgstr ""
|
243 |
msgid "shared capability: %s"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/admin.php:540
|
247 |
msgid "Other WordPress Core Capabilities"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: includes/admin.php:582
|
251 |
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
255 |
msgid "check/uncheck all"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
259 |
msgid "negate all (storing as disabled capabilities)"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: includes/admin.php:625 includes/admin.php:862 includes/admin.php:1062
|
263 |
msgid "negate none (add/remove all capabilities normally)"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: includes/admin.php:797
|
267 |
#, php-format
|
268 |
msgid "%s Capabilities"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: includes/admin.php:873
|
272 |
msgid "Invalid Capabilities"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: includes/admin.php:878
|
276 |
msgid "The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above."
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: includes/admin.php:955
|
280 |
msgid "Additional Capabilities"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: includes/admin.php:1072
|
284 |
msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin.php:1074
|
288 |
msgid "Level:"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: includes/admin.php:1097
|
292 |
msgid "Delete this role"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: includes/admin.php:1097
|
296 |
#, php-format
|
297 |
msgid ""
|
298 |
"You are about to delete the %s role.\n"
|
300 |
" 'Cancel' to stop, 'OK' to delete."
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: includes/admin.php:1097
|
304 |
msgid "Delete Role"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: includes/admin.php:1106
|
308 |
msgid "Add Capability"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: includes/admin.php:1109
|
312 |
msgid "Add to role"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: includes/admin.php:1121
|
316 |
msgid "Copy this role to"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: includes/admin.php:1124
|
320 |
#: includes/roles/class/class-pp-roles-list-table.php:80
|
321 |
msgid "Role Name"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: includes/admin.php:1127
|
325 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: includes/admin.php:1127
|
329 |
msgid "hidden"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: includes/admin.php:1131
|
333 |
msgid "Copy"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: includes/admin.php:1137
|
337 |
msgid "Rename Role"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: includes/admin.php:1139
|
341 |
msgid "New Role Name"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: includes/admin.php:1142
|
345 |
msgid "Rename"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: includes/admin.php:1171
|
349 |
msgid "Create this role definition in new (future) sites"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: includes/admin.php:1171
|
353 |
msgid "include in new sites"
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: includes/admin.php:1174
|
357 |
msgid "Copy / update this role definition to all sites now"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: includes/admin.php:1174
|
361 |
msgid "sync role to all sites now"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: includes/admin.php:1177
|
365 |
msgid "Copy option settings to all sites now"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/admin.php:1177
|
369 |
msgid "sync options to all sites now"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: includes/backup-handler.php:9 includes/manager.php:776
|
373 |
msgid "You do not have permission to restore roles."
|
374 |
msgstr ""
|
375 |
|
411 |
msgid "Restore"
|
412 |
msgstr ""
|
413 |
|
414 |
+
#: includes/backup.php:47 includes/functions-admin.php:251
|
415 |
+
#: includes/manager.php:339
|
416 |
msgid "Backup"
|
417 |
msgstr ""
|
418 |
|
545 |
msgid "Reset to WordPress defaults"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/features/editor-features-classic.php:18
|
549 |
+
msgid "Classic Editor Screen"
|
550 |
+
msgstr ""
|
551 |
+
|
552 |
+
#: includes/features/editor-features-classic.php:23
|
553 |
+
#: includes/features/editor-features-gutenberg.php:23
|
554 |
#, php-format
|
555 |
+
msgid "%s Restrict"
|
556 |
+
msgstr ""
|
557 |
+
|
558 |
+
#: includes/features/editor-features-classic.php:24
|
559 |
+
#: includes/features/editor-features-gutenberg.php:24
|
560 |
+
msgid "Toggle all"
|
561 |
+
msgstr ""
|
562 |
+
|
563 |
+
#: includes/features/editor-features-gutenberg.php:18
|
564 |
+
msgid "Gutenberg Screen"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/features/editor-features.php:31
|
568 |
+
msgid "Editor Feature Restriction"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: includes/features/editor-features.php:45
|
572 |
+
msgid "Select editor features to remove. Note that this screen cannot be used to grant additional features to any role."
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: includes/features/editor-features.php:89
|
576 |
+
msgid "Gutenberg"
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: includes/features/editor-features.php:92
|
580 |
+
msgid "Classic"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
#: includes/features/restrict-editor-features.php:40
|
584 |
+
msgid "Top Tabs"
|
585 |
+
msgstr ""
|
586 |
+
|
587 |
+
#: includes/features/restrict-editor-features.php:41
|
588 |
+
msgid "Help"
|
589 |
+
msgstr ""
|
590 |
+
|
591 |
+
#: includes/features/restrict-editor-features.php:42
|
592 |
+
msgid "Screen Options"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: includes/features/restrict-editor-features.php:45
|
596 |
+
#: includes/features/restrict-editor-features.php:48
|
597 |
+
msgid "Editor"
|
598 |
+
msgstr ""
|
599 |
+
|
600 |
+
#: includes/features/restrict-editor-features.php:46
|
601 |
#: includes/filters-woocommerce.php:33
|
602 |
msgid "Add New"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: includes/features/restrict-editor-features.php:47
|
606 |
+
msgid "Title"
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: includes/features/restrict-editor-features.php:49
|
610 |
+
#: includes/features/restrict-editor-features.php:324
|
611 |
+
msgid "Permalink"
|
612 |
+
msgstr ""
|
613 |
+
|
614 |
+
#: includes/features/restrict-editor-features.php:50
|
615 |
+
msgid "Media Buttons (all)"
|
616 |
+
msgstr ""
|
617 |
+
|
618 |
+
#: includes/features/restrict-editor-features.php:51
|
619 |
+
msgid "HTML Editor Button"
|
620 |
+
msgstr ""
|
621 |
+
|
622 |
+
#: includes/features/restrict-editor-features.php:52
|
623 |
+
msgid "Word count"
|
624 |
+
msgstr ""
|
625 |
+
|
626 |
+
#: includes/features/restrict-editor-features.php:55
|
627 |
+
#: includes/features/restrict-editor-features.php:56
|
628 |
+
msgid "Publish Box"
|
629 |
+
msgstr ""
|
630 |
+
|
631 |
+
#: includes/features/restrict-editor-features.php:57
|
632 |
+
#: includes/features/restrict-editor-features.php:309
|
633 |
+
msgid "Save Draft"
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
#: includes/features/restrict-editor-features.php:58
|
637 |
+
#: includes/features/restrict-editor-features.php:311
|
638 |
+
msgid "Preview"
|
639 |
+
msgstr ""
|
640 |
+
|
641 |
+
#: includes/features/restrict-editor-features.php:59
|
642 |
+
msgid "Publish Status "
|
643 |
+
msgstr ""
|
644 |
+
|
645 |
+
#: includes/features/restrict-editor-features.php:60
|
646 |
+
msgid "Publish Visibility"
|
647 |
+
msgstr ""
|
648 |
+
|
649 |
+
#: includes/features/restrict-editor-features.php:61
|
650 |
+
msgid "Password Protect This Post"
|
651 |
+
msgstr ""
|
652 |
+
|
653 |
+
#: includes/features/restrict-editor-features.php:62
|
654 |
+
msgid "Publish Actions"
|
655 |
+
msgstr ""
|
656 |
+
|
657 |
+
#: includes/features/restrict-editor-features.php:63
|
658 |
+
msgid "Publish Schedule"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
+
#: includes/features/restrict-editor-features.php:64
|
662 |
+
msgid "Date"
|
663 |
+
msgstr ""
|
664 |
+
|
665 |
+
#: includes/features/restrict-editor-features.php:65
|
666 |
+
msgid "Publish"
|
667 |
+
msgstr ""
|
668 |
+
|
669 |
+
#: includes/features/restrict-editor-features.php:68
|
670 |
+
msgid "Taxonomy Boxes"
|
671 |
+
msgstr ""
|
672 |
+
|
673 |
+
#: includes/features/restrict-editor-features.php:69
|
674 |
+
#: includes/features/restrict-editor-features.php:325
|
675 |
+
msgid "Categories"
|
676 |
+
msgstr ""
|
677 |
+
|
678 |
+
#: includes/features/restrict-editor-features.php:70
|
679 |
+
msgid "Add New Category"
|
680 |
+
msgstr ""
|
681 |
+
|
682 |
+
#: includes/features/restrict-editor-features.php:71
|
683 |
+
#: includes/features/restrict-editor-features.php:326
|
684 |
+
msgid "Tags"
|
685 |
+
msgstr ""
|
686 |
+
|
687 |
+
#: includes/features/restrict-editor-features.php:83
|
688 |
+
msgid "Page Boxes"
|
689 |
+
msgstr ""
|
690 |
+
|
691 |
+
#: includes/features/restrict-editor-features.php:84
|
692 |
+
msgid "Page Attributes"
|
693 |
+
msgstr ""
|
694 |
+
|
695 |
+
#: includes/features/restrict-editor-features.php:85
|
696 |
+
msgid "Parent"
|
697 |
+
msgstr ""
|
698 |
+
|
699 |
+
#: includes/features/restrict-editor-features.php:86
|
700 |
+
msgid "Page Template"
|
701 |
+
msgstr ""
|
702 |
+
|
703 |
+
#: includes/features/restrict-editor-features.php:87
|
704 |
+
msgid "Order"
|
705 |
+
msgstr ""
|
706 |
+
|
707 |
+
#: includes/features/restrict-editor-features.php:90
|
708 |
+
msgid "Other Boxes"
|
709 |
+
msgstr ""
|
710 |
+
|
711 |
+
#: includes/features/restrict-editor-features.php:91
|
712 |
+
msgid "Featured Image"
|
713 |
+
msgstr ""
|
714 |
+
|
715 |
+
#: includes/features/restrict-editor-features.php:92
|
716 |
+
msgid "Post Slug"
|
717 |
+
msgstr ""
|
718 |
+
|
719 |
+
#: includes/features/restrict-editor-features.php:93
|
720 |
+
#: includes/features/restrict-editor-features.php:342
|
721 |
+
msgid "Discussion"
|
722 |
+
msgstr ""
|
723 |
+
|
724 |
+
#: includes/features/restrict-editor-features.php:299
|
725 |
+
msgid "Top Bar - Left"
|
726 |
+
msgstr ""
|
727 |
+
|
728 |
+
#: includes/features/restrict-editor-features.php:300
|
729 |
+
msgid "Add block"
|
730 |
+
msgstr ""
|
731 |
+
|
732 |
+
#: includes/features/restrict-editor-features.php:301
|
733 |
+
msgid "Modes"
|
734 |
+
msgstr ""
|
735 |
+
|
736 |
+
#: includes/features/restrict-editor-features.php:302
|
737 |
+
msgid "Undo"
|
738 |
+
msgstr ""
|
739 |
+
|
740 |
+
#: includes/features/restrict-editor-features.php:303
|
741 |
+
msgid "Redo"
|
742 |
+
msgstr ""
|
743 |
+
|
744 |
+
#: includes/features/restrict-editor-features.php:304
|
745 |
+
msgid "Details"
|
746 |
+
msgstr ""
|
747 |
+
|
748 |
+
#: includes/features/restrict-editor-features.php:305
|
749 |
+
msgid "Outline"
|
750 |
+
msgstr ""
|
751 |
+
|
752 |
+
#: includes/features/restrict-editor-features.php:308
|
753 |
+
msgid "Top Bar - Right"
|
754 |
+
msgstr ""
|
755 |
+
|
756 |
+
#: includes/features/restrict-editor-features.php:310
|
757 |
+
msgid "Switch to draft"
|
758 |
+
msgstr ""
|
759 |
+
|
760 |
+
#: includes/features/restrict-editor-features.php:312
|
761 |
+
msgid "Publish / Update"
|
762 |
+
msgstr ""
|
763 |
+
|
764 |
+
#: includes/features/restrict-editor-features.php:313
|
765 |
+
#: includes/functions-admin.php:254 includes/manager.php:342
|
766 |
+
msgid "Settings"
|
767 |
+
msgstr ""
|
768 |
+
|
769 |
+
#: includes/features/restrict-editor-features.php:314
|
770 |
+
msgid "Options"
|
771 |
+
msgstr ""
|
772 |
+
|
773 |
+
#: includes/features/restrict-editor-features.php:317
|
774 |
+
msgid "Body"
|
775 |
+
msgstr ""
|
776 |
+
|
777 |
+
#: includes/features/restrict-editor-features.php:318
|
778 |
+
msgid "Edit title"
|
779 |
+
msgstr ""
|
780 |
+
|
781 |
+
#: includes/features/restrict-editor-features.php:319
|
782 |
+
msgid "Content"
|
783 |
+
msgstr ""
|
784 |
+
|
785 |
+
#: includes/features/restrict-editor-features.php:322
|
786 |
+
msgid "Document Panel"
|
787 |
+
msgstr ""
|
788 |
+
|
789 |
+
#: includes/features/restrict-editor-features.php:323
|
790 |
+
msgid "Status & visibility"
|
791 |
+
msgstr ""
|
792 |
+
|
793 |
+
#: includes/features/restrict-editor-features.php:340
|
794 |
+
msgid "Featured image"
|
795 |
+
msgstr ""
|
796 |
+
|
797 |
+
#: includes/features/restrict-editor-features.php:341
|
798 |
+
msgid "Excerpt"
|
799 |
+
msgstr ""
|
800 |
+
|
801 |
+
#: includes/features/restrict-editor-features.php:343
|
802 |
+
msgid "Post Attributes"
|
803 |
+
msgstr ""
|
804 |
+
|
805 |
+
#: includes/features/restrict-editor-features.php:346
|
806 |
+
#: includes/features/restrict-editor-features.php:347
|
807 |
+
msgid "Block Panel"
|
808 |
+
msgstr ""
|
809 |
+
|
810 |
+
#: includes/features/restrict-editor-features.php:348
|
811 |
+
msgid "Paragraph"
|
812 |
+
msgstr ""
|
813 |
+
|
814 |
+
#: includes/features/restrict-editor-features.php:349
|
815 |
+
msgid "Typography"
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
#: includes/features/restrict-editor-features.php:350
|
819 |
+
msgid "Color settings"
|
820 |
+
msgstr ""
|
821 |
+
|
822 |
+
#: includes/features/restrict-editor-features.php:351
|
823 |
+
msgid "Text settings"
|
824 |
+
msgstr ""
|
825 |
+
|
826 |
+
#: includes/filters-woocommerce.php:32
|
827 |
+
#, php-format
|
828 |
+
msgid "All %s"
|
829 |
+
msgstr ""
|
830 |
+
|
831 |
#: includes/filters.php:312
|
832 |
msgid "Edit Roles"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/functions-admin.php:225 includes/manager.php:301
|
836 |
#: includes/roles/class/class-pp-roles-list-table.php:125
|
837 |
msgid "Capabilities"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: includes/functions-admin.php:247 includes/manager.php:323
|
841 |
#: includes/roles/roles.php:4
|
842 |
msgid "Roles"
|
843 |
msgstr ""
|
844 |
|
845 |
+
#: includes/functions-admin.php:248 includes/manager.php:335
|
846 |
+
msgid "Editor Features"
|
847 |
msgstr ""
|
848 |
|
849 |
#: includes/handler.php:28 includes/handler.php:54
|
899 |
msgid "Add or remove capability from the role normally"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: includes/manager.php:366 includes/roles/roles.php:33
|
903 |
msgid "Name"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: includes/manager.php:367
|
907 |
#: includes/roles/class/class-pp-roles-list-table.php:81
|
908 |
msgid "Role"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: includes/manager.php:368
|
912 |
#: includes/roles/class/class-pp-roles-list-table.php:82
|
913 |
msgid "Users"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: includes/manager.php:395
|
917 |
msgid "You do not have permission to manage roles."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/manager.php:412
|
921 |
+
msgid "You do not have permission to manage editor features."
|
922 |
+
msgstr ""
|
923 |
+
|
924 |
+
#: includes/manager.php:454
|
925 |
+
msgid "Settings updated."
|
926 |
+
msgstr ""
|
927 |
+
|
928 |
+
#: includes/manager.php:556 includes/manager.php:597
|
929 |
msgid "You do not have permission to manage capabilities."
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/manager.php:611
|
933 |
msgid "New capability added to role."
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: includes/manager.php:629
|
937 |
msgid "The selected role is not editable."
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: includes/manager.php:656
|
941 |
msgid "Bad form Received"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/manager.php:806
|
945 |
#, php-format
|
946 |
msgid "If you like %s, please leave us a %s rating. Thank you!"
|
947 |
msgstr ""
|
948 |
|
949 |
+
#: includes/manager.php:817
|
950 |
msgid "About PublishPress Capabilities"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: includes/manager.php:817
|
954 |
msgid "About"
|
955 |
msgstr ""
|
956 |
|
957 |
+
#: includes/manager.php:819
|
958 |
msgid "Capabilites Documentation"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/manager.php:819
|
962 |
msgid "Documentation"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/manager.php:821
|
966 |
msgid "Contact the PublishPress team"
|
967 |
msgstr ""
|
968 |
|
969 |
+
#: includes/manager.php:821
|
970 |
msgid "Contact"
|
971 |
msgstr ""
|
972 |
|
1003 |
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."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: includes/pp-ui.php:77
|
|
|
|
|
|
|
|
|
1007 |
msgid "Type-Specific Capabilities"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: includes/pp-ui.php:80
|
1011 |
msgid "Ensure permissions can be controlled separately from other post types."
|
1012 |
msgstr ""
|
1013 |
|
1014 |
+
#: includes/pp-ui.php:143
|
1015 |
msgid "Make selected post types require a different capability to add new posts."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
+
#: includes/pp-ui.php:143
|
1019 |
msgid "Use create_posts capability"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: includes/pp-ui.php:151 includes/pp-ui.php:214 includes/pp-ui.php:270
|
1023 |
msgid "Update"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: includes/pp-ui.php:161
|
1027 |
msgid "Taxonomy-Specific Capabilities"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: includes/pp-ui.php:164
|
1031 |
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: includes/pp-ui.php:219
|
1035 |
msgid "Detailed Taxonomy Capabilities"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: includes/pp-ui.php:222
|
1039 |
msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
|
1040 |
msgstr ""
|
1041 |
|
1105 |
msgstr ""
|
1106 |
|
1107 |
#: includes/roles/class/class-pp-roles-list-table.php:168
|
1108 |
+
#: includes/roles/class/class-pp-roles-list-table.php:307
|
1109 |
msgid "Delete"
|
1110 |
msgstr ""
|
1111 |
|
readme.txt
CHANGED
@@ -1,60 +1,71 @@
|
|
1 |
-
===
|
2 |
|
3 |
Contributors: publishpress, kevinB, stevejburge, andergmartins
|
4 |
Author: PublishPress
|
5 |
Author URI: https://publishpress.com
|
6 |
-
Tags: user roles, capabilities, permissions,
|
7 |
Requires at least: 4.9.7
|
8 |
-
Tested up to: 5.
|
9 |
Requires PHP: 5.6.20
|
10 |
-
Stable tag: 2.
|
11 |
License: GPLv3
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
13 |
|
14 |
-
|
15 |
|
16 |
== Description ==
|
17 |
|
18 |
[PublishPress Capabilities](https://publishpress.com/capabilities/) gives you control over all the permissions on your WordPress site. We built this user role editor plugin so you have an EASY and POWERFUL way to manage users.
|
19 |
|
20 |
-
You can customize all
|
21 |
|
22 |
-
|
23 |
|
24 |
-
|
25 |
|
26 |
-
|
27 |
-
- **Works for all post types**: Choose who can Publish, Read, Edit and Delete content for any post type.
|
28 |
-
- **Works for all taxonomies**: Choose who can Manage, Edit and Assign terms in any taxonomy.
|
29 |
-
- **Safe backups**: Every time you change your permissions, PublishPress Capabilities saves a backup.
|
30 |
-
- **Create or copy user roles**: Add new roles, or clone existing roles.
|
31 |
-
- **Frontend menus (Pro version)**: Stop users from accessing any frontend menu link.
|
32 |
-
- **Admin menus (Pro version)**: Stop users from accessing any admin menu link.
|
33 |
-
- **Media library permissions**: Decide who can upload, edit and delete files.
|
34 |
-
- **WooCommerce permissions**: Control access to WooCommerce products, orders, coupons and more.
|
35 |
-
- **Multisite support**: Manage permissions on a single site or across your whole network.
|
36 |
|
37 |
-
=
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
-
|
|
|
|
|
|
|
|
|
42 |
|
43 |
[Click here for your quick start guide to PublishPress Capabilities](https://publishpress.com/knowledge-base/permissions-start/).
|
44 |
|
45 |
-
= Capabilities for any Post Type =
|
46 |
|
47 |
Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type.
|
48 |
|
49 |
[Click here to see how to control post type permissions](https://publishpress.com/knowledge-base/custom-post-types-capability/).
|
50 |
|
51 |
-
= Capabilities for any Taxonomy =
|
52 |
|
53 |
-
|
54 |
|
55 |
[Click here to learn about taxonomy permissions](https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/).
|
56 |
|
57 |
-
=
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions.
|
60 |
|
@@ -62,56 +73,50 @@ Every time you change your permissions, the PublishPress Capabilities plugin wil
|
|
62 |
|
63 |
[Click here to see how to backup permissions](https://publishpress.com/knowledge-base/backup-restore-permissions/).
|
64 |
|
65 |
-
= Create or Copy User Roles =
|
66 |
|
67 |
With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network.
|
68 |
|
69 |
[Click here to see how to create or copy user roles](https://publishpress.com/knowledge-base/create-or-copy-user-roles/).
|
70 |
|
71 |
-
= Frontend Menu Restrictions (Pro version) =
|
72 |
|
73 |
PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links.
|
74 |
|
75 |
[Click to see how to block frontend menu access](https://publishpress.com/knowledge-base/nav-menus/).
|
76 |
|
77 |
-
= Admin Menu Restrictions (Pro version) =
|
78 |
|
79 |
With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens.
|
80 |
|
81 |
[Click to see how to block Admin menu access](https://publishpress.com/knowledge-base/admin-menus/).
|
82 |
|
83 |
-
= Support for Media Library Permissions =
|
84 |
|
85 |
PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box.
|
86 |
|
87 |
[Click here to learn about Media Library permissions](https://publishpress.com/knowledge-base/control-media-library-access/).
|
88 |
|
89 |
-
= Support for WooCommerce Permissions =
|
90 |
|
91 |
We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons.
|
92 |
|
93 |
[Click here to learn about WooCommerce permissions](https://publishpress.com/knowledge-base/woocommerce-permissons/).
|
94 |
|
95 |
-
= WordPress Multisite support =
|
96 |
|
97 |
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.
|
98 |
|
99 |
[Click here to learn about multisite permissions](https://publishpress.com/knowledge-base/multisite-network/).
|
100 |
|
101 |
-
= Permissions for Custom Statuses =
|
102 |
-
|
103 |
-
This option will appear if you have the [PublishPress](https://publishpress.com/publishpress) plugin installed to create and configure custom statuses. With Capabilities Pro, you can decide which user roles are able to send posts to each status. For status-specific editing control, also activate [PublishPress Permissions Pro](https://publishpress.com/presspermit) and its Status Control module.
|
104 |
-
|
105 |
-
[Click here to see how to manage permissions for statuses](https://publishpress.com/knowledge-base/permissions-for-custom-statuses/).
|
106 |
-
|
107 |
-
|
108 |
= Join PublishPress and get the Pro plugins =
|
109 |
|
110 |
The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. [Click here to join PublishPress](https://publishpress.com/pricing/).
|
111 |
|
112 |
-
Join PublishPress and you'll get access to these
|
113 |
|
114 |
* [PublishPress Authors Pro](https://publishpress.com/authors) allows you to add multiple authors and guest authors to WordPress posts.
|
|
|
115 |
* [PublishPress Capabilities Pro](https://publishpress.com/capabilities) is the plugin to manage your WordPress user roles, permissions, and capabilities.
|
116 |
* [PublishPress Checklists Pro](https://publishpress.com/checklists) enables you to define tasks that must be completed before content is published.
|
117 |
* [PublishPress Permissions Pro](https://publishpress.com/permissions) is the plugin for advanced WordPress permissions.
|
@@ -128,6 +133,236 @@ Bug reports for PublishPress Capabilities are welcomed in our [repository on Git
|
|
128 |
|
129 |
Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitter](https://www.twitter.com/publishpresscom) and [YouTube](https://www.youtube.com/publishpress).
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
== Screenshots ==
|
132 |
|
133 |
1. Control user permissions
|
@@ -142,13 +377,14 @@ Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitt
|
|
142 |
10. PublishPress Permission integration (showing capabilities from supplemental roles)
|
143 |
11. Multisite support
|
144 |
|
145 |
-
== Upgrade Notice ==
|
146 |
-
|
147 |
-
= 1.5.1 =
|
148 |
-
Fixed : Non-administrators with user editing capabilities could add new Administrators
|
149 |
-
|
150 |
== Changelog ==
|
151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
= 2.0.2 - 6 May 2021 =
|
153 |
* Feature : Multisite - "sync options to all sites" checkbox. Copies "use create_posts capability", Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities settings
|
154 |
* Fixed : Multisite - "sync role to all sites" did not work if main site ID is not 1
|
1 |
+
=== WordPress Permissions Plugin and User Role Editor - PublishPress Capabilities ===
|
2 |
|
3 |
Contributors: publishpress, kevinB, stevejburge, andergmartins
|
4 |
Author: PublishPress
|
5 |
Author URI: https://publishpress.com
|
6 |
+
Tags: user roles, capabilities, permissions, admin menus, user role editor
|
7 |
Requires at least: 4.9.7
|
8 |
+
Tested up to: 5.8
|
9 |
Requires PHP: 5.6.20
|
10 |
+
Stable tag: 2.1
|
11 |
License: GPLv3
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
13 |
|
14 |
+
The best permissions plugin allows you to customize user roles, editor features and admin menus. You control who has access to your WordPress site.
|
15 |
|
16 |
== Description ==
|
17 |
|
18 |
[PublishPress Capabilities](https://publishpress.com/capabilities/) gives you control over all the permissions on your WordPress site. We built this user role editor plugin so you have an EASY and POWERFUL way to manage users.
|
19 |
|
20 |
+
You can **customize all your WordPress user roles**, from Administrators and Editors to Authors, Contributors, Subscribers and custom roles. Each use role can have the exact permissions that your site needs.
|
21 |
|
22 |
+
You can use PublishPress Capabilities to clean up the post editing screen. You can decide what authors see when they're writing posts. You can **hide any features on the Gutenberg or Classic Editor screens**.
|
23 |
|
24 |
+
The Pro version of PublishPress Capabilities enables you to stop users from accessing any admin menu link and any frontend menu link.
|
25 |
|
26 |
+
PublishPress Capabilities is **safe to use**. Every time you change your site's permissions, this plugin will take a backup that you can restore if anything goes wrong. You can use these backups to migrate your roles and permissions from one site to another.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
= The Key Features of PublishPress Capabilities =
|
29 |
|
30 |
+
1. **User role editor**: You can change the capabilities for any role.
|
31 |
+
2. **Works for all post types**: Choose who can Publish, Read, Edit and Delete content for any post type.
|
32 |
+
3. **Works for all taxonomies**: Choose who can Manage, Edit and Assign terms in any taxonomy.
|
33 |
+
4. **Hide editor features**: Decide what users see when they're writing posts in Gutenberg or the Classic Editor.
|
34 |
+
5. **Safe backups**: Every time you change your permissions, PublishPress Capabilities saves a backup.
|
35 |
+
6. **Create or copy user roles**: Add new roles, or clone existing roles.
|
36 |
+
7. **Frontend menus (Pro version)**: Stop users from accessing any frontend menu link.
|
37 |
+
8. **Admin menus (Pro version)**: Stop users from accessing any admin menu link.
|
38 |
+
9. **Media library permissions**: Decide who can upload, edit and delete files.
|
39 |
+
10. **WooCommerce permissions**: Control access to WooCommerce products, orders, coupons and more.
|
40 |
+
11. **Multisite support**: Manage permissions on a single site or across your whole network.
|
41 |
|
42 |
+
= #1. WordPress User Role Editor =
|
43 |
+
|
44 |
+
PublishPress Capabilities gives you detailed control over all the permission levelsss on your WordPress site. You can edit user roles on your site, from Administrator and Editor to Contributor and Subscriber.
|
45 |
+
|
46 |
+
With the Capabilities plugin, you can choose who can Publish, Read, Edit and Delete content. You can choose permissions for posts, pages, custom content types, categories, tags, and more.
|
47 |
|
48 |
[Click here for your quick start guide to PublishPress Capabilities](https://publishpress.com/knowledge-base/permissions-start/).
|
49 |
|
50 |
+
= #2. Capabilities for any Post Type =
|
51 |
|
52 |
Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type.
|
53 |
|
54 |
[Click here to see how to control post type permissions](https://publishpress.com/knowledge-base/custom-post-types-capability/).
|
55 |
|
56 |
+
= #3. Capabilities for any WordPress Taxonomy =
|
57 |
|
58 |
+
PublishPress Capabilities enables you to add extra permissions to the taxonomies on your site. This feature includes the default Categories and Tags, but also applies to other taxonomies. For example, in WooCommerce you can apply custom permissions to Product categories, Product tags, and Product shipping classes. You can enforce and assign "Manage", "Edit" and "Assign" distinct capabilities for all your taxonomies.
|
59 |
|
60 |
[Click here to learn about taxonomy permissions](https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/).
|
61 |
|
62 |
+
= #4. Hide Gutenberg and Classic Editor Features =
|
63 |
+
|
64 |
+
PublishPress Capabilities has an option called "Editor Features" allows you to clean up the post editing screen. You can decide what users see when they're writing posts. You can hide anything on the Gutenberg or Classic Editor screens. You can hide boxes inside the sidebadd such Tags, Categories, or Excerpt. You can the "Publish" button. You can even hide the post title, body, or permalink. This is a great alternative to plugins such as Adminimize.
|
65 |
+
|
66 |
+
[Click here to learn about hiding editor features](https://publishpress.com/knowledge-base/editor-features/).
|
67 |
+
|
68 |
+
= #5. Backup and Restore User Roles and Capabilities =
|
69 |
|
70 |
PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions.
|
71 |
|
73 |
|
74 |
[Click here to see how to backup permissions](https://publishpress.com/knowledge-base/backup-restore-permissions/).
|
75 |
|
76 |
+
= #6. Create New User Roles or Copy User Roles =
|
77 |
|
78 |
With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network.
|
79 |
|
80 |
[Click here to see how to create or copy user roles](https://publishpress.com/knowledge-base/create-or-copy-user-roles/).
|
81 |
|
82 |
+
= #7. Frontend Menu Restrictions (Pro version) =
|
83 |
|
84 |
PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links.
|
85 |
|
86 |
[Click to see how to block frontend menu access](https://publishpress.com/knowledge-base/nav-menus/).
|
87 |
|
88 |
+
= #8. WordPress Admin Menu Restrictions (Pro version) =
|
89 |
|
90 |
With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens.
|
91 |
|
92 |
[Click to see how to block Admin menu access](https://publishpress.com/knowledge-base/admin-menus/).
|
93 |
|
94 |
+
= #9. Support for Media Library Permissions =
|
95 |
|
96 |
PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box.
|
97 |
|
98 |
[Click here to learn about Media Library permissions](https://publishpress.com/knowledge-base/control-media-library-access/).
|
99 |
|
100 |
+
= #10. Support for WooCommerce Permissions =
|
101 |
|
102 |
We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons.
|
103 |
|
104 |
[Click here to learn about WooCommerce permissions](https://publishpress.com/knowledge-base/woocommerce-permissons/).
|
105 |
|
106 |
+
= #11. WordPress Multisite support =
|
107 |
|
108 |
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.
|
109 |
|
110 |
[Click here to learn about multisite permissions](https://publishpress.com/knowledge-base/multisite-network/).
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
= Join PublishPress and get the Pro plugins =
|
113 |
|
114 |
The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. [Click here to join PublishPress](https://publishpress.com/pricing/).
|
115 |
|
116 |
+
Join PublishPress and you'll get access to these Pro plugins:
|
117 |
|
118 |
* [PublishPress Authors Pro](https://publishpress.com/authors) allows you to add multiple authors and guest authors to WordPress posts.
|
119 |
+
* [PublishPress Blocks Pro](https://publishpress.com/blocks) is the plugin that gives you more control over the WordPress block editor.
|
120 |
* [PublishPress Capabilities Pro](https://publishpress.com/capabilities) is the plugin to manage your WordPress user roles, permissions, and capabilities.
|
121 |
* [PublishPress Checklists Pro](https://publishpress.com/checklists) enables you to define tasks that must be completed before content is published.
|
122 |
* [PublishPress Permissions Pro](https://publishpress.com/permissions) is the plugin for advanced WordPress permissions.
|
133 |
|
134 |
Follow PublishPress on [Facebook](https://www.facebook.com/publishpress), [Twitter](https://www.twitter.com/publishpresscom) and [YouTube](https://www.youtube.com/publishpress).
|
135 |
|
136 |
+
== Frequently Asked Questions ==
|
137 |
+
|
138 |
+
= How do I Backup and Restore WordPress User Permissions? =
|
139 |
+
|
140 |
+
PublishPress Capabilities offers you the ability to backup and restore your WordPress user permissions. This feature is very helpful if you want to test out changes on your site, or you've installed a new plugin that has changed your site's permissions.
|
141 |
+
|
142 |
+
Changing permissions in WordPress can be a tricky task. It's possible to lock yourself or others out of some important features. So, we've built a way to keep your site safe.
|
143 |
+
|
144 |
+
Every time you change your permissions, the PublishPress Capabilities plugin will automatically create a backup. If you make a mistake, go to the “Backup” menu link and click the “Restore” tab. Here you can browse through the most recent 20 automatic backups. The plugin also saves a backup from you first installed PublishPress Capabilities. And you can click the “Backup” tab to manually create backups.
|
145 |
+
|
146 |
+
Click the yellow “Restore Selected Roles” button and you'll be able to roll back to a previous version.
|
147 |
+
|
148 |
+
Whenever you choose a backup, the plugin will show all the permissions in that backup. Important changes in permissions are highlighted:
|
149 |
+
|
150 |
+
* A green role title means the role does not exist in your current set.
|
151 |
+
* A green capability is set in the role backup, but not the current role.
|
152 |
+
* A stuck-through capability is set in the current role, but not the role backup.
|
153 |
+
|
154 |
+
= How Do I Restore Permissions to the WordPress Defaults? =
|
155 |
+
|
156 |
+
If you really need to clean up and refresh your site, PublishPress Capabilities does allow you to restore the default WordPress permissions. Go to Capabilities > Backup and dlick the “Reset Roles” tab. Before you take next step, make sure to read this warning:
|
157 |
+
|
158 |
+
“WARNING: This will delete and/or modify stored role definitions. If you have installed any plugin that adds new roles or capabilities, these will be lost. It is recommended to use this only as a last resort!”
|
159 |
+
|
160 |
+
If you want to proceed, click the “Reset to WordPress defaults” link. PublishPress Capabilities will ask you if you're really sure you want to do this. Click “OK” to continue. Once the process is complete, you'll see the message, “Roles and Capabilities reset to WordPress defaults”.
|
161 |
+
|
162 |
+
= How Do I Control WooCommerce Menu Link Permissions? =
|
163 |
+
|
164 |
+
WooCommerce is the most popular WordPress eCommerce plugin. You can create beautiful store with themes customized to your brand and industry and you'll find 1,000's of tools and popular integrations.
|
165 |
+
|
166 |
+
The PublishPress Capabilities plugin enables you to control permissions for the WooCommerce plugin and also WooCommerce user rols. Go to the “Capabilities” link in your WordPress admin menu. In the main area of your screen will see options for WooCommerce Products, Orders and Coupons. These permissions cover editing, deleting and reading.
|
167 |
+
|
168 |
+
In the right sidebar, you can also enable permissions for WooCommerce taxonomies. Check the boxes for Product categories, Product tags, and Product shipping classes. After you check those boxes and refresh your screen, you will see Manager, Edit, Assign and Delete options for Product categories, Product tags, and Product shipping classes.
|
169 |
+
|
170 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in WooCommerce. This is useful because WooCommerce has very limited options for controlling who can access the admin screens. When you first install WooCommerce, you'll see four top-level menu links, plus sub-menus. All of these links are available to users in the Administrator and Shop Manager roles:
|
171 |
+
|
172 |
+
* WooCommerce
|
173 |
+
* Products
|
174 |
+
* Analytics
|
175 |
+
* Marketing
|
176 |
+
|
177 |
+
It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. n the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in that role to access. This is a great way to customize a WooCommerce role such as Shop Manager. This approach works for the core WooCommerce plugin and can also be used for WooCommerce add-on plugins such as WooCommerce Subscriptions, WooCommerce Shipping, and WooCommerce Bookings. PublishPress Capabilities can help you manage WooCommerce permissisons.
|
178 |
+
|
179 |
+
[Click here to learn about WooCommerce menu permissions](https://publishpress.com/knowledge-base/control-access-woocommerce-admin-menus/).
|
180 |
+
|
181 |
+
= How Do I Control Contact Form 7 Permissions? =
|
182 |
+
|
183 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Contact Form 7 plugin. This is useful because Contact Form 7 has very limited options for controlling who can access the admin screens.
|
184 |
+
|
185 |
+
Contact Form 7 is the most popular contact form plugin for WordPress. You can manage multiple contact forms, and easily customize each form and the emails it sends. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, Akismet spam filtering and much more.
|
186 |
+
|
187 |
+
When you first install Contact Form 7, you'll see one top-level menu link, plus three sub-menus. All of these links are available to users in the Administrator role:
|
188 |
+
|
189 |
+
* Contact Forms
|
190 |
+
* Add New
|
191 |
+
* Integration
|
192 |
+
|
193 |
+
It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in the Editor role to access. This approach works for the core Contact Form 7 plugin and can also be used for add-on plugins such as Flamingo which records entries for Contact Form 7 forms.
|
194 |
+
|
195 |
+
[Click here to learn about Contact Form 7 menu permissions](https://publishpress.com/knowledge-base/control-access-contact-form-7-admin-menus/).
|
196 |
+
|
197 |
+
= How Do I Control Yoast SEO User Roles and Permissions? =
|
198 |
+
|
199 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Yoast SEO plugin. This is useful because Yoast SEO has limited options for managing who can access the admin screens and important features.
|
200 |
+
|
201 |
+
Yoast SEO is the most popular WordPress SEO plugin and contains everything that you need to manage your SEO. Yoast SEO is packed full of feature that help search engines to find and understand your website.
|
202 |
+
|
203 |
+
When you first install Yoast SEO, you'll see one top-level menu link, plus at least 5 sub-menus:
|
204 |
+
|
205 |
+
* General
|
206 |
+
* Search Appearance
|
207 |
+
* Social
|
208 |
+
* Tools
|
209 |
+
* Premium
|
210 |
+
|
211 |
+
It is possible to control who can access these Yoast SEO links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Yoast SEO access for the “SEO Manager” role. Scroll down and you can enter a red X for any menu link that you don't want users in the SEO Manager role to access.
|
212 |
+
|
213 |
+
This approach works for the core Yoast SEO plugin and can also be used for add-on plugins such as Local SEO, WooCommerce SEO, Google News, and more.
|
214 |
+
|
215 |
+
[Click here to learn about Yoast SEO menu permissions](https://publishpress.com/knowledge-base/control-access-yoast-seo-admin-menus/).
|
216 |
+
|
217 |
+
= How Do I Control Elementor User Roles and Permissions? =
|
218 |
+
|
219 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Elementor plugin. This is useful because Elementor has limited options for managing who can access the admin screens and important features.
|
220 |
+
|
221 |
+
The Elementor plugin is one of the most popular drag-and-drop page builders. With Elementor, you’re editing the site live, and simultaneously see exactly how it looks like. Elementor designs are full-responsive and come with over 40 powerful widgets. PublishPress Capabilities can help you manage Elementor permissisons.
|
222 |
+
|
223 |
+
When you first install Elementor, you'll see one top-level menu link, plus at least 9 sub-menus:
|
224 |
+
|
225 |
+
* Settings
|
226 |
+
* Role Manager
|
227 |
+
* Tools
|
228 |
+
* System Info
|
229 |
+
* Getting Started
|
230 |
+
* Get Help
|
231 |
+
* Custom Fonts
|
232 |
+
* Custom Icons
|
233 |
+
* Go Pro
|
234 |
+
|
235 |
+
It is possible to control who can access Elementor menu links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area.
|
236 |
+
|
237 |
+
In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Elementor access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Elementor access. Scroll down and you can enter a red X for any Elementor menu link that you don't want users in the Administrator role to access.
|
238 |
+
|
239 |
+
This approach works for the core Elementor plugin and can also be used for add-on plugins such as Essential Addons, Premium Addons, and others.
|
240 |
+
|
241 |
+
[Click here to learn about Elementor menu permissions](https://publishpress.com/knowledge-base/control-access-elementor-admin-menus/).
|
242 |
+
|
243 |
+
= How Do I Control Jetpack User Roles and Permissions? =
|
244 |
+
|
245 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Jetpack plugin. This is useful because Jetpack has limited options for managing who can access the admin screens and important features.
|
246 |
+
|
247 |
+
Jetpack is a plugin built by Automattic, the company behind WordPress.com. This plugin offers many different services including backups, spam blocking, analytics, malware scans, contact forms, and more. PublishPress Capabilities can help you manage Jetpack permissisons.
|
248 |
+
|
249 |
+
When you first install the Jetpack plugin, you'll see one top-level menu link, plus at least 2 sub-menus:
|
250 |
+
|
251 |
+
* Dashboard
|
252 |
+
* Settings
|
253 |
+
|
254 |
+
It is possible to control who can access these Jetpack links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Jetpack access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Jetpack access. Scroll down and you can enter a red X for any Jetpack menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the Jetpack menu links that you have blocked. This approach works for the core Jetpack plugin and can also be used for add-on plugins such as Jetpack CRM and others.
|
255 |
+
|
256 |
+
[Click here to learn about Jetpack menu permissions](https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/).
|
257 |
+
|
258 |
+
= How Do I Control WPForms User Roles and Permissions? =
|
259 |
+
|
260 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the WP Forms plugin. This is useful because WPForms has limited options for managing who can access the admin screens and important features.
|
261 |
+
|
262 |
+
WPForms is one of the most popular WordPress contact form plugin with millions of active installs. WPForms allows you to create beautiful contact forms, feedback forms, subscription forms, payment forms, and more.
|
263 |
+
|
264 |
+
When you first install the WPForms plugin, you'll see one top-level menu link, plus at least 10 sub-menus:
|
265 |
+
|
266 |
+
* All Forms
|
267 |
+
* Add New
|
268 |
+
* Entries
|
269 |
+
* Settings
|
270 |
+
* Tools
|
271 |
+
* Addons
|
272 |
+
* Analytics
|
273 |
+
* SMTP
|
274 |
+
* About Us
|
275 |
+
* Community
|
276 |
+
|
277 |
+
It is possible to control who can access these WPForms plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict WPForms access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full WPForms access.
|
278 |
+
|
279 |
+
Scroll down and you can enter a red X for any WPForms menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the WPForms menu links that you have blocked.
|
280 |
+
|
281 |
+
This approach works for the core WPForms plugin and can also be used for add-on plugins such as Form Abandonment, Form Locker, Offline Forms, and more.
|
282 |
+
|
283 |
+
[Click here to learn about WPForms menu permissions](https://publishpress.com/knowledge-base/control-access-wpforms-admin-menus/).
|
284 |
+
|
285 |
+
= How Do I Control The Events Calendar User Roles and Permissions? =
|
286 |
+
|
287 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in The Events Calendar plugin. This is useful because The Events Calendar has limited options for managing who can access the admin screens and important features.
|
288 |
+
|
289 |
+
With The Events Calendar, you can easily create and manage an events calendar on your WordPress site. The plugin supports both in-person and virtual events. There are also many ways to extend the plugin for recurring events, ticket sales, user-submitted events and more.
|
290 |
+
|
291 |
+
When you first install the The Events Calendar plugin, you'll see one top-level menu link, plus at least 10 sub-menus:
|
292 |
+
|
293 |
+
* Events
|
294 |
+
* Add New
|
295 |
+
* Tag
|
296 |
+
* Events Categories
|
297 |
+
* Venues
|
298 |
+
* Organizers
|
299 |
+
* Import
|
300 |
+
* Settings
|
301 |
+
* Help
|
302 |
+
* Event Add-Ons
|
303 |
+
|
304 |
+
It is possible to control who can access these The Events Calendar plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict The Events Calendar access for the “Editor” role. Scroll down and you can enter a red X for any The Events Calendar menu link that you don't want users in the Editor role to access. Now when an Administrator logs in to your site, they will not be able to see the Events Calendar menu links that you have blocked:
|
305 |
+
|
306 |
+
This approach works for the core The Events Calendar plugin and can also be used for add-on plugins such as Virtual Events, Events Tickets, and more.
|
307 |
+
|
308 |
+
[Click here to learn about The Events Calendar menu permissions](https://publishpress.com/knowledge-base/control-access-the-events-calendar-admin-menus/).
|
309 |
+
|
310 |
+
= How Do I Control The Gravity Forms User Roles and Permissions? =
|
311 |
+
|
312 |
+
The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Gravity Forms plugin. This is useful because Gravity Forms has limited options for controlling who can access the admin screens.
|
313 |
+
|
314 |
+
Gravity Forms is perhaps the most popular contact form plugin for WordPress. You can build and publish your WordPress forms in just minutes. Choose your fields, configure your options and easily embed forms on your WordPress-powered site. Gravity Forms allows you to easily integrate with third party services such as PayPal, Mailchimp, and Zapier.
|
315 |
+
|
316 |
+
When you first install Gravity Forms, you'll see one top-level menu link, plus eight sub-menus.
|
317 |
+
|
318 |
+
* Forms
|
319 |
+
* New Form
|
320 |
+
* Entries
|
321 |
+
* Settings
|
322 |
+
* Import/Export
|
323 |
+
* Add-ons
|
324 |
+
* System Status
|
325 |
+
* Help
|
326 |
+
|
327 |
+
It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict access for the “Editor” role. By default, Editors aren't given access to Gravity Forms, but site administrators often do they give them some access. Scroll down and you can enter a red X for any Gravity Forms menu link that you don't want users in the Editor role to access. Now when an Editor logs in to your site, they will not be able to see the blocked Gravity Forms menu links.
|
328 |
+
|
329 |
+
This approach works for the core Gravity Forms plugin and can also be used for add-on plugins from the official site, or third-party sites.
|
330 |
+
|
331 |
+
[Click here to learn about Gravity Forms menu permissions](https://publishpress.com/knowledge-base/control-access-gravity-forms-admin-menus/).
|
332 |
+
|
333 |
+
= What’s the Difference Between PublishPress Capabilities and PublishPress Permissions? =
|
334 |
+
|
335 |
+
We provide two plugins that allow you to control who can access what on your WordPress site. This is simple way to understand the difference:
|
336 |
+
|
337 |
+
* PublishPress Capabilities: Easy.
|
338 |
+
* PublishPress Permissions: Advanced.
|
339 |
+
|
340 |
+
OK, that's maybe too simple, so here's more detail:
|
341 |
+
|
342 |
+
* PublishPress Permissions allows you to customize the default WordPress permissions.
|
343 |
+
* PublishPress Permissions allows you to customize advanced permissions that go far beyond the scope of the WordPress core.
|
344 |
+
|
345 |
+
Here's an contrasting example when it comes to Post:
|
346 |
+
|
347 |
+
* PublishPress Capabilities allows you to control who can publish all your Posts.
|
348 |
+
* PublishPress Permissions allows you to control who can publish Posts with a particular Status, Category or Tag, or even Posts without a specific Category or Tag.
|
349 |
+
|
350 |
+
Here's another comparison:
|
351 |
+
|
352 |
+
* PublishPress Capabilities allows you to control who can read all your Pages.
|
353 |
+
* PublishPress Permissions allows you to control who can read Pages with a specific Status, Category or Tag, or even Pages with a particular parent Page.
|
354 |
+
|
355 |
+
= What's the correct way to spell PublishPress Capabilities? =
|
356 |
+
|
357 |
+
PublishPress is the official brandname. When writing about this user role editor plugin, please make sure to uppercase the Ps.
|
358 |
+
|
359 |
+
* PublishPress Capabilities (correct)
|
360 |
+
* Publish Press Capabilities (incorrect)
|
361 |
+
* publishpress capabilities (incorrect)
|
362 |
+
* publish press cpabilities (incorrect)
|
363 |
+
|
364 |
+
Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, Calabilities.
|
365 |
+
|
366 |
== Screenshots ==
|
367 |
|
368 |
1. Control user permissions
|
377 |
10. PublishPress Permission integration (showing capabilities from supplemental roles)
|
378 |
11. Multisite support
|
379 |
|
|
|
|
|
|
|
|
|
|
|
380 |
== Changelog ==
|
381 |
|
382 |
+
= 2.1 - 24 Jun 2021 =
|
383 |
+
* Feature : Editor Features restriction (new screen to block editor elements per-role)
|
384 |
+
* Fixed : If Media "Create" capability is selected / unselected by clicking Media caption or Create caption, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure
|
385 |
+
* Fixed : If Media "Create" capability is negated or un-negated, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure
|
386 |
+
* Fixed : PHP Warning if a role is stored without a valid capabilities array
|
387 |
+
|
388 |
= 2.0.2 - 6 May 2021 =
|
389 |
* Feature : Multisite - "sync options to all sites" checkbox. Copies "use create_posts capability", Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities settings
|
390 |
* Fixed : Multisite - "sync role to all sites" did not work if main site ID is not 1
|