Capability Manager Enhanced - Version 1.8.1

Version Description

  • 25 Oct 2019 =
    • Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save with incorrect post status (since 1.8)
Download this release

Release Info

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

Code changes from version 1.7.5 to 1.8.1

admin.css CHANGED
@@ -66,7 +66,7 @@ div.cme-listhoriz h3 {
66
margin: 0.2em;
67
}
68
69
- table .cme-typecaps {
70
border: 1px solid black;
71
}
72
@@ -84,6 +84,10 @@ table.cme-typecaps span.cap-x {
84
display: none;
85
}
86
87
a.neg-cap, a.cap-on, a.type-on, a.neg-type-caps, a.cme-neg-all {
88
text-decoration: none;
89
}
@@ -188,9 +192,21 @@ td.cm-has-via-pp {
188
background-color: #7f7;
189
}
190
191
#akmin div.publishpress-headline {line-height:25px}
192
#akmin span.publishpress-thanks{margin-left:5px;color:#655997;white-space:nowrap}
193
#akmin span.publishpress-thanks,#akmin span.publishpress-thanks a,#akmin span.publishpress-thanks a:visited {color:#655997;font-weight:bold;}
194
195
table#akmin td.sidebar li.publishpress-contact{text-align:center}
196
- table#akmin td.sidebar li.publishpress-contact a{padding:5px 0 5px 0;}
66
margin: 0.2em;
67
}
68
69
+ div.cme-cap-type-tables {
70
border: 1px solid black;
71
}
72
84
display: none;
85
}
86
87
+ h3.cme-cap-section {
88
+ margin-top:0;
89
+ }
90
+
91
a.neg-cap, a.cap-on, a.type-on, a.neg-type-caps, a.cme-neg-all {
92
text-decoration: none;
93
}
192
background-color: #7f7;
193
}
194
195
+ div.pressshack-admin-wrapper footer {
196
+ padding-right: 270px;
197
+ }
198
+
199
#akmin div.publishpress-headline {line-height:25px}
200
#akmin span.publishpress-thanks{margin-left:5px;color:#655997;white-space:nowrap}
201
#akmin span.publishpress-thanks,#akmin span.publishpress-thanks a,#akmin span.publishpress-thanks a:visited {color:#655997;font-weight:bold;}
202
203
table#akmin td.sidebar li.publishpress-contact{text-align:center}
204
+ table#akmin td.sidebar li.publishpress-contact a{padding:5px 0 5px 0;}
205
+
206
+ #pp_features {display:none;border:1px solid #eee;padding:5px;text-align:center;min-width:600px}
207
+ #pp_features div.pp-logo { text-align: center }
208
+ #pp_features div.features-wrap { margin-left: auto; margin-right: auto; text-align: center; width: 600px; }
209
+ #pp_features ul.pp-features { list-style: none; padding-top:10px; text-align:left; margin-left: auto }
210
+ #pp_features ul.pp-features li:before { content: "\2713\0020"; }
211
+ #pp_features ul.pp-features li { padding-bottom: 5px }
212
+ #pp_features img.cme-play { margin-bottom: -3px; margin-left: 5px;}
capsman-enhanced.php CHANGED
@@ -3,7 +3,7 @@
3
* Plugin Name: Capability Manager Enhanced
4
* Plugin URI: https://publishpress.com
5
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
- * Version: 1.7.5
7
* Author: PublishPress
8
* Author URI: https://publishpress.com
9
* Text Domain: capsman-enhanced
@@ -23,12 +23,12 @@
23
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2019 PublishPress
24
* @license GNU General Public License version 3
25
* @link https://publishpress.com
26
- * @version 1.7.5
27
*/
28
29
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
30
- define( 'CAPSMAN_VERSION', '1.7.5' );
31
- define( 'CAPSMAN_ENH_VERSION', '1.7.5' );
32
}
33
34
if ( cme_is_plugin_active( 'capsman.php' ) ) {
@@ -81,10 +81,6 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
81
82
require_once ( dirname(__FILE__) . '/includes/manager.php' );
83
$capsman = new CapabilityManager();
84
-
85
- if ( isset($_REQUEST['page']) && ( 'capsman' == $_REQUEST['page'] ) ) {
86
- add_action( 'admin_enqueue_scripts', '_cme_pp_scripts' );
87
- }
88
} else {
89
load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/lang');
90
add_action( 'admin_menu', 'cme_submenus', 20 );
@@ -141,21 +137,20 @@ function _cme_init() {
141
load_plugin_textdomain('capsman-enhanced', false, dirname(__FILE__) . '/lang');
142
}
143
144
- function _cme_pp_scripts() {
145
- wp_enqueue_style( 'plugin-install' );
146
- wp_enqueue_script( 'plugin-install' );
147
- add_thickbox();
148
- }
149
-
150
// perf enchancement: display submenu links without loading framework and plugin code
151
function cme_submenus() {
152
$cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
153
add_management_page(__('Capability Manager', 'capsman-enhanced'), __('Capability Manager', 'capsman-enhanced'), $cap_name, 'capsman' . '-tool', 'cme_fakefunc');
154
155
- if ( did_action( 'pp_admin_menu' ) ) { // Put Capabilities link on Permissions menu if Press Permit is active and user has access to it
156
global $pp_admin;
157
$menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
158
add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc' );
159
} else {
160
add_users_page( __('Capability Manager', 'capsman-enhanced'), __('Capabilities', 'capsman-enhanced'), 'manage_capabilities', 'capsman', 'cme_fakefunc');
161
}
3
* Plugin Name: Capability Manager Enhanced
4
* Plugin URI: https://publishpress.com
5
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
+ * Version: 1.8.1
7
* Author: PublishPress
8
* Author URI: https://publishpress.com
9
* Text Domain: capsman-enhanced
23
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2019 PublishPress
24
* @license GNU General Public License version 3
25
* @link https://publishpress.com
26
+ * @version 1.8
27
*/
28
29
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
30
+ define( 'CAPSMAN_VERSION', '1.8.1' );
31
+ define( 'CAPSMAN_ENH_VERSION', '1.8.1' );
32
}
33
34
if ( cme_is_plugin_active( 'capsman.php' ) ) {
81
82
require_once ( dirname(__FILE__) . '/includes/manager.php' );
83
$capsman = new CapabilityManager();
84
} else {
85
load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/lang');
86
add_action( 'admin_menu', 'cme_submenus', 20 );
137
load_plugin_textdomain('capsman-enhanced', false, dirname(__FILE__) . '/lang');
138
}
139
140
// perf enchancement: display submenu links without loading framework and plugin code
141
function cme_submenus() {
142
$cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
143
add_management_page(__('Capability Manager', 'capsman-enhanced'), __('Capability Manager', 'capsman-enhanced'), $cap_name, 'capsman' . '-tool', 'cme_fakefunc');
144
145
+ if (did_action('pp_admin_menu')) { // Put Capabilities link on Permissions menu if Press Permit is active and user has access to it
146
global $pp_admin;
147
$menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
148
add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc' );
149
+
150
+ } elseif(did_action('presspermit_admin_menu') && function_exists('presspermit')) {
151
+ $menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
152
+ add_submenu_page( presspermit()->admin()->getMenuParams('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc' );
153
+
154
} else {
155
add_users_page( __('Capability Manager', 'capsman-enhanced'), __('Capabilities', 'capsman-enhanced'), 'manage_capabilities', 'capsman', 'cme_fakefunc');
156
}
common/css/pressshack-admin.css ADDED
@@ -0,0 +1,191 @@
1
+ /**
2
+ * @package PublishPress
3
+ * @author PublishPress
4
+ *
5
+ * Copyright (c) 2018 PublishPress
6
+ *
7
+ * ------------------------------------------------------------------------------
8
+ * Based on Edit Flow
9
+ * Author: Daniel Bachhuber, Scott Bressler, Mohammad Jangda, Automattic, and
10
+ * others
11
+ * Copyright (c) 2009-2016 Mohammad Jangda, Daniel Bachhuber, et al.
12
+ * ------------------------------------------------------------------------------
13
+ *
14
+ * This file is part of PublishPress
15
+ *
16
+ * PublishPress is free software: you can redistribute it and/or modify
17
+ * it under the terms of the GNU General Public License as published by
18
+ * the Free Software Foundation, either version 3 of the License, or
19
+ * (at your option) any later version.
20
+ *
21
+ * PublishPress is distributed in the hope that it will be useful,
22
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
+ * GNU General Public License for more details.
25
+ *
26
+ * You should have received a copy of the GNU General Public License
27
+ * along with PublishPress. If not, see <http://www.gnu.org/licenses/>.
28
+ */
29
+
30
+ .pressshack-admin-wrapper a:link,
31
+ .pressshack-admin-wrapper a:visited,
32
+ .pressshack-admin-wrapper a:active,
33
+ .pressshack-admin-wrapper a:hover {
34
+ text-decoration: none;
35
+ }
36
+
37
+ .pressshack-admin-wrapper a,
38
+ .pressshack-admin-wrapper button,
39
+ .pressshack-admin-wrapper button::before {
40
+ -webkit-transition: all 200ms ease-in-out;
41
+ -moz-transition: all 200ms ease-in-out;
42
+ -o-transition: all 200ms ease-in-out;
43
+ transition: all 200ms ease-in-out;
44
+ }
45
+
46
+ .pressshack-admin-wrapper a,
47
+ .pressshack-admin-wrapper a div,
48
+ .pressshack-admin-wrapper a p {
49
+ color: #655997;
50
+ }
51
+
52
+ .pressshack-admin-wrapper a:hover,
53
+ .pressshack-admin-wrapper a:focus,
54
+ .pressshack-admin-wrapper a:active,
55
+ .pressshack-admin-wrapper a:hover div,
56
+ .pressshack-admin-wrapper a:focus div,
57
+ .pressshack-admin-wrapper a:active div,
58
+ .pressshack-admin-wrapper a:hover p,
59
+ .pressshack-admin-wrapper a:focus p,
60
+ .pressshack-admin-wrapper a:active p,
61
+ .pressshack-admin-wrapper a:hover .dashicons:before,
62
+ .pressshack-admin-wrapper a:focus .dashicons:before,
63
+ .pressshack-admin-wrapper a:active .dashicons:before {
64
+ color: #5A4F87;
65
+ box-shadow: none;
66
+ -moz-box-shadow: none;
67
+ -webkit-box-shadow: none;
68
+ -o-box-shadow: none;
69
+ }
70
+
71
+ .pressshack-admin-wrapper > header h1 a,
72
+ .pressshack-admin-wrapper > header h1 a:hover,
73
+ .pressshack-admin-wrapper > header h1 a:focus,
74
+ .pressshack-admin-wrapper > header h1 a:active {
75
+ color: #23282d;
76
+ }
77
+
78
+ .pressshack-admin-wrapper .nav-tab-wrapper .nav-tab {
79
+ color: inherit;
80
+ }
81
+
82
+ .pressshack-admin-wrapper .nav-tab-wrapper .nav-tab-active,
83
+ .pressshack-admin-wrapper .nav-tab-wrapper .nav-tab:hover,
84
+ .pressshack-admin-wrapper .nav-tab-wrapper .nav-tab:active,
85
+ .pressshack-admin-wrapper .nav-tab-wrapper .nav-tab:focus {
86
+ border-top-color: #655997;
87
+ color: #655997;
88
+ }
89
+
90
+ .pressshack-admin-wrapper > footer {
91
+ text-align: center;
92
+ }
93
+
94
+ .pressshack-admin-wrapper > footer > div.pp-rating {
95
+ font-size: 12px;
96
+ margin-bottom: 10px;
97
+ margin-top: 30px;
98
+ }
99
+
100
+ .pressshack-admin-wrapper > footer * {
101
+ color: #777;
102
+ }
103
+
104
+ .pressshack-admin-wrapper > footer > nav ul {
105
+ list-style: none;
106
+ }
107
+
108
+ .pressshack-admin-wrapper > footer > nav ul > li {
109
+ display: inline-block;
110
+ }
111
+
112
+ .pressshack-admin-wrapper > footer > nav ul > li:not(:first-child) {
113
+ margin-left: 15px;
114
+ }
115
+
116
+ .pressshack-admin-wrapper > footer > nav ul > li > a {
117
+ font-weight: bold;
118
+ }
119
+
120
+ .pressshack-admin-wrapper > footer .dashicons.dashicons-star-filled {
121
+ line-height: 18px;
122
+ font-size: 12px;
123
+ width: 12px;
124
+ height: 12px;
125
+ color: #FFB300;
126
+ -webkit-transition: color 200ms ease-in-out;
127
+ -moz-transition: color 200ms ease-in-out;
128
+ -o-transition: color 200ms ease-in-out;
129
+ transition: color 200ms ease-in-out;
130
+ }
131
+
132
+ .pressshack-admin-wrapper button:not(.notice-dismiss),
133
+ .pressshack-admin-wrapper .button:not(.notice-dismiss) {
134
+ -webkit-border-radius: 5px;
135
+ -moz-border-radius: 5px;
136
+ border-radius: 5px;
137
+ text-shadow: initial;
138
+ -webkit-box-shadow: initial;
139
+ -moz-box-shadow: initial;
140
+ box-shadow: initial;
141
+ vertical-align: middle;
142
+ line-height: 0;
143
+ min-height: 28px;
144
+ text-decoration: none;
145
+ padding: 15px 10px;
146
+ border-width: 2px;
147
+ border-style: solid;
148
+ }
149
+
150
+ .pressshack-admin-wrapper .button-primary {
151
+ background-color: #FFB300;
152
+ border-color: #C58C07;
153
+ color: #754D26;
154
+
155
+ text-shadow: none;
156
+ }
157
+
158
+ .pressshack-admin-wrapper .button-primary:hover,
159
+ .pressshack-admin-wrapper .button-primary:active,
160
+ .pressshack-admin-wrapper .button-primary:focus {
161
+ background-color: #F3AC04;
162
+ border-color: #C58C07;
163
+ color: #333;
164
+ outline: none;
165
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
166
+ -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
167
+ -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
168
+ -o-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
169
+ }
170
+
171
+ .pressshack-admin-wrapper .button:not(.notice-dismiss):hover,
172
+ .pressshack-admin-wrapper .button:not(.notice-dismiss):active,
173
+ .pressshack-admin-wrapper .button:not(.notice-dismiss):focus {
174
+ outline: none;
175
+ -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
176
+ -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
177
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
178
+ }
179
+
180
+ .pressshack-admin-wrapper .pp-pressshack-logo img {
181
+ width: 170px;
182
+ }
183
+
184
+ /**
185
+ * Fremius tweaks
186
+ */
187
+
188
+ #piframe,
189
+ .fs-secure-notice {
190
+ display: none;
191
+ }
common/img/publishpress-logo-icon.png ADDED
Binary file
common/img/publishpress-logo.png ADDED
Binary file
includes/admin.php CHANGED
@@ -47,7 +47,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
47
$pp_metagroup_caps = array();
48
}
49
?>
50
- <div class="wrap">
51
<?php if( defined('PRESSPERMIT_ACTIVE') ) :
52
pp_icon();
53
$style = 'style="height:60px;"';
@@ -104,62 +104,53 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
104
});
105
/* ]]> */
106
</script>
107
- <style>
108
- #pp_features {display:none;border:1px solid #eee;padding:5px;text-align:center;min-width:600px}
109
- div.pp-logo { text-align: center }
110
- div.features-wrap { margin-left: auto; margin-right: auto; text-align: center; width: 540px; }
111
- ul.pp-features { list-style: none; padding-top:10px; text-align:left; margin-left: auto }
112
- ul.pp-features li:before { content: "\2713\0020"; }
113
- ul.pp-features li { padding-bottom: 5px }
114
- img.cme-play { margin-bottom: -3px; margin-left: 5px;}
115
- </style>
116
117
<?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
118
119
- <br /><div id="pp_features"><div class="pp-logo"><a href="http://presspermit.com"><img src="<?php echo $img_url;?>pp-logo.png" /></a></div><div class="features-wrap"><ul class="pp-features">
120
<li>
121
<?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
122
- <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
123
124
<li>
125
<?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
126
- <a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
127
128
<li>
129
<?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
130
- <a href="http://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
131
132
<li>
133
<?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
134
- <a href="http://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
135
136
<li>
137
<?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
138
- <a href="http://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
139
140
<li>
141
<?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
142
- <a href="http://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
143
144
<li>
145
<?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
146
- <a href="http://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
147
148
<li>
149
<?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
150
- <a href="http://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
151
152
<li>
153
<?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
154
- <a href="http://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
155
156
<li>
157
<?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
158
- <a href="http://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
159
160
<li>
161
<?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
162
- <a href="http://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
163
164
<li>
165
<?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
@@ -170,11 +161,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
170
</li>
171
172
</ul></div>
173
<?php
174
echo '<div>';
175
- printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'Press Permit Core' ) . '">Press&nbsp;Permit&nbsp;Core</a></span>' );
176
echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
177
- printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="http://presspermit.com" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Press Permit Pro' ) . '">Press&nbsp;Permit&nbsp;Pro</a>' );
178
echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
179
echo '<a href="#pp-hide">hide</a>';
180
echo '</div></div>';
@@ -274,7 +266,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
274
'manage_categories'
275
);
276
$type_caps = array();
277
-
278
// Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
279
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
280
unset( $defined['type']['attachment'] );
@@ -286,8 +279,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
286
foreach( array_keys($cap_properties) as $cap_type ) {
287
echo '<li>';
288
echo '<h3>' . $cap_type_names[$cap_type] . '</h3>';
289
- echo '<table class="cme-typecaps">';
290
291
foreach( array_keys($defined) as $item_type ) {
292
if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
293
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
@@ -305,139 +299,153 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
305
if ( ! $any_term_deletion_caps )
306
continue;
307
}
308
-
309
- //if ( ! $cap_type ) {
310
311
- //} else {
312
- echo '<th></th>';
313
314
- if ( ! count( $cap_properties[$cap_type][$item_type] ) )
315
- continue;
316
-
317
- // label cap properties
318
- foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
319
- $prop = str_replace( '_posts', '', $prop );
320
- $prop = str_replace( '_pages', '', $prop );
321
- $prop = str_replace( '_terms', '', $prop );
322
- $tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
323
- $prop = str_replace( '_', '<br />', $prop );
324
- $th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
325
- echo "<th $tip{$th_class}>";
326
-
327
- if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
328
- echo ucwords($prop);
329
- }
330
-
331
- echo '</th>';
332
}
333
334
- foreach( $defined[$item_type] as $key => $type_obj ) {
335
- if ( in_array( $key, $unfiltered[$item_type] ) )
336
- continue;
337
338
- $row = "<tr class='cme_type_{$key}'>";
339
-
340
- if ( $cap_type ) {
341
- if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
342
- continue;
343
344
- $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a>';
345
- $row .= '<a href="#" class="neg-type-caps">&nbsp;x&nbsp;</a>';
346
- $row .= '</td>';
347
-
348
- $display_row = ! empty($force_distinct_ui);
349
350
- foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
351
- $td_classes = array();
352
- $checkbox = '';
353
- $title = '';
354
355
- if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
356
- || ! in_array( $type_obj->cap->$prop, $default_caps )
357
- || ( ( 'manage_categories' == $type_obj->cap->$prop ) && ( 'manage_terms' == $prop ) && ( 'category' == $type_obj->name ) ) ) ) {
358
-
359
- // if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
360
- if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
361
- && ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
362
- && ( ! in_array( $prop, array( 'edit_terms', 'delete_terms' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->manage_terms ) )
363
364
- && ( ! in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
365
- || ( $cme_cap_helper->all_taxonomy_caps[ $type_obj->cap->$prop ] <= 1 )
366
- || $type_obj->cap->$prop == str_replace( '_terms', "_{$type_obj->name}s", $prop )
367
- || $type_obj->cap->$prop == str_replace( '_terms', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
368
- )
369
370
- && ( in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
371
- || ( $cme_cap_helper->all_type_caps[ $type_obj->cap->$prop ] <= 1 )
372
- || $type_obj->cap->$prop == 'upload_files' && 'create_posts' == $prop && 'attachment' == $type_obj->name
373
- || $type_obj->cap->$prop == str_replace( '_posts', "_{$type_obj->name}s", $prop )
374
- || $type_obj->cap->$prop == str_replace( '_pages', "_{$type_obj->name}s", $prop )
375
- || $type_obj->cap->$prop == str_replace( '_posts', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
376
- || $type_obj->cap->$prop == str_replace( '_pages', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
377
- )
378
- ) {
379
- // only present these term caps up top if we are ensuring that they get enforced separately from manage_terms
380
- if ( in_array( $prop, array( 'edit_terms', 'delete_terms', 'assign_terms' ) ) && ( ! in_array( $type_obj->name, cme_get_detailed_taxonomies() ) || defined( 'OLD_PRESSPERMIT_ACTIVE' ) ) ) {
381
- continue;
382
}
383
384
- $cap_name = $type_obj->cap->$prop;
385
386
- if ( 'taxonomy' == $item_type )
387
- $td_classes []= "term-cap";
388
- else
389
- $td_classes []= "post-cap";
390
391
- if ( ! empty($pp_metagroup_caps[$cap_name]) )
392
- $td_classes []='cm-has-via-pp';
393
-
394
- if ( $is_administrator || current_user_can($cap_name) ) {
395
- if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
396
- $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
397
- } else {
398
- $title_text = $cap_name;
399
- }
400
-
401
- $disabled = '';
402
- $checked = checked(1, ! empty($rcaps[$cap_name]), false );
403
-
404
- $checkbox = '<input id=caps[' . $cap_name . '] type="checkbox" title="' . $title_text . '" name="caps[' . $cap_name . ']" value="1" ' . $checked . $disabled . ' />';
405
- $type_caps [$cap_name] = true;
406
- $display_row = true;
407
- }
408
- } else {
409
- //$td_classes []= "cap-unreg";
410
- $title = 'title="' . sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) ) . '"';
411
- }
412
-
413
- if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
414
- $td_classes []= "cap-neg";
415
- }
416
} else {
417
- $td_classes []= "cap-unreg";
418
}
419
420
- $td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
421
-
422
- $row .= "<td $td_class $title><span class='cap-x'>X</span>$checkbox";
423
-
424
- if ( false !== strpos( $td_class, 'cap-neg' ) )
425
- $row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
426
-
427
- $row .= "</td>";
428
}
429
}
430
-
431
- if ( $display_row ) {
432
- $row .= '</tr>';
433
- echo $row;
434
}
435
}
436
- //} // endif this iteration is for type caps checkbox display
437
-
438
} // end foreach item type
439
440
- echo '</table>';
441
442
echo '</li>';
443
}
@@ -460,7 +468,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
460
<?php
461
462
echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
463
- echo '<table width="100%" class="form-table cme-checklist"><tr>';
464
465
$checks_per_row = get_option( 'cme_form-rows', 5 );
466
$i = 0; $first_row = true;
@@ -509,7 +517,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
509
}
510
511
?>
512
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label for="caps[<?php echo $cap_name; ?>]" title="<?php echo $title;?>"><input id=caps[<?php echo $cap_name; ?>] type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
513
<span>
514
<?php
515
echo str_replace( '_', ' ', $cap_name );
@@ -530,7 +538,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
530
}
531
532
if ( $i == $checks_per_row ) {
533
- echo '</tr><tr>';
534
$i = 0;
535
} elseif ( ! $first_row ) {
536
// Now close a wellformed table
@@ -549,36 +557,266 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
549
</td></tr>
550
551
</table>
552
-
553
<?php
554
- echo '<p>&nbsp;</p><h3>' . __( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
555
556
?>
557
- <table width='100%' class="form-table cme-checklist">
558
<tr>
559
<?php
560
$i = 0; $first_row = true;
561
562
- $all_capabilities = apply_filters( 'capsman_get_capabilities', array_keys( $this->capabilities ), $this->ID );
563
- $all_capabilities = apply_filters( 'members_get_capabilities', $all_capabilities );
564
-
565
foreach( $all_capabilities as $cap_name ) {
566
if ( ! isset($this->capabilities[$cap_name]) )
567
$this->capabilities[$cap_name] = str_replace( '_', ' ', $cap_name );
568
}
569
570
uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
571
-
572
foreach ( $this->capabilities as $cap_name => $cap ) :
573
- if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) )
574
continue;
575
-
576
if ( ! $is_administrator && empty( $current_user->allcaps[$cap_name] ) ) {
577
continue;
578
}
579
580
- // ============ End Kevin B mod ===============
581
-
582
// Levels are not shown.
583
if ( preg_match( '/^level_(10|[0-9])#x2F;i', $cap_name ) ) {
584
continue;
@@ -614,7 +852,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
614
}
615
}
616
?>
617
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label for="caps[<?php echo $cap_name; ?>]" title="<?php echo $title_text;?>"><input id=caps[<?php echo $cap_name; ?>] type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
618
<span>
619
<?php
620
echo str_replace( '_', ' ', $cap );
@@ -648,32 +886,122 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
648
649
<tr class="cme-bulk-select">
650
<td colspan="<?php echo $checks_per_row;?>">
651
- <span>
652
<?php
653
- $level = ak_caps2level($rcaps);
654
?>
655
- <?php _e('Level:', 'capsman-enhanced') ;?><select name="level">
656
- <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
657
- <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
658
- <?php }
659
?>
660
- </select>
661
- </span>
662
663
<span style="float:right">
664
<input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
665
</span>
666
</td></tr>
667
-
668
</table>
669
-
670
- <br />
671
<?php if ( ! defined('PRESSPERMIT_ACTIVE') || capsman_get_pp_option('display_hints') ) :?>
672
- <div class="cme-subtext">
673
<?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman-enhanced' ); ?>
674
- </div>
675
- <?php endif;?>
676
</span>
677
678
</dd>
679
</dl>
@@ -720,7 +1048,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
720
<dt><?php _e('Create New Role', 'capsman-enhanced'); ?></dt>
721
<dd style="text-align:center;">
722
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
723
- <p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
724
725
<?php if( $support_pp_only_roles ) : ?>
726
<label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
@@ -765,21 +1093,28 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
765
766
<dl>
767
<dt><?php _e('Related Permissions Plugins', 'capsman-enhanced'); ?></dt>
768
<ul>
769
<?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress&TB_iframe=true&width=640&height=678";
770
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
771
?>
772
<li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress', 'capsman-enhanced');?></a></li>
773
774
- <li><a href="#pp-more"><?php _e('Press Permit', 'capsman-enhanced');?></a>
775
- </li>
776
-
777
<?php $_url = "plugin-install.php?tab=plugin-information&plugin=revisionary&TB_iframe=true&width=640&height=678";
778
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
779
?>
780
- <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('Revisionary', 'capsman-enhanced');?></a></li>
781
<li class="publishpress-contact"><a href="https://publishpress.com/contact" target="_blank"><?php _e('Help / Contact Form', 'capsman-enhanced');?></a></li>
782
</ul>
783
</dl>
784
785
<?php
@@ -791,6 +1126,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
791
</table>
792
</fieldset>
793
</form>
794
</div>
795
796
<?php
@@ -820,4 +1157,46 @@ function cme_network_role_ui( $default ) {
820
function cme_plugin_info_url( $plugin_slug ) {
821
$_url = "plugin-install.php?tab=plugin-information&plugin=$plugin_slug&TB_iframe=true&width=640&height=678";
822
return ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
823
- }
47
$pp_metagroup_caps = array();
48
}
49
?>
50
+ <div class="wrap pressshack-admin-wrapper">
51
<?php if( defined('PRESSPERMIT_ACTIVE') ) :
52
pp_icon();
53
$style = 'style="height:60px;"';
104
});
105
/* ]]> */
106
</script>
107
108
<?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
109
110
+ <br /><div id="pp_features" style="display:none"><div class="pp-logo"><a href="https://publishpress.com/presspermit/"><img src="<?php echo $img_url;?>pp-logo.png" alt="<?php _e('PressPermit Pro', 'capsman-enhanced');?>" /></a></div><div class="features-wrap"><ul class="pp-features">
111
<li>
112
<?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
113
+ <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
114
115
<li>
116
<?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
117
+ <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
118
119
<li>
120
<?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
121
+ <a href="https://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
122
123
<li>
124
<?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
125
+ <a href="https://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
126
127
<li>
128
<?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
129
+ <a href="https://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
130
131
<li>
132
<?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
133
+ <a href="https://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
134
135
<li>
136
<?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
137
+ <a href="https://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
138
139
<li>
140
<?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
141
+ <a href="https://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
142
143
<li>
144
<?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
145
+ <a href="https://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
146
147
<li>
148
<?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
149
+ <a href="https://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
150
151
<li>
152
<?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
153
+ <a href="https://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
154
155
<li>
156
<?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
161
</li>
162
163
</ul></div>
164
+
165
<?php
166
echo '<div>';
167
+ printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'PressPermit' ) . '">PressPermit</a></span>' );
168
echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
169
+ printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="https://publishpress.com/presspermit/" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'PressPermit Pro' ) . '">PressPermit&nbsp;Pro</a>' );
170
echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
171
echo '<a href="#pp-hide">hide</a>';
172
echo '</div></div>';
266
'manage_categories'
267
);
268
$type_caps = array();
269
+ $type_metacaps = array();
270
+
271
// Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
272
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
273
unset( $defined['type']['attachment'] );
279
foreach( array_keys($cap_properties) as $cap_type ) {
280
echo '<li>';
281
echo '<h3>' . $cap_type_names[$cap_type] . '</h3>';
282
283
+ echo '<div class="cme-cap-type-tables">';
284
+
285
foreach( array_keys($defined) as $item_type ) {
286
if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
287
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
299
if ( ! $any_term_deletion_caps )
300
continue;
301
}
302
+
303
+ if ( ! count( $cap_properties[$cap_type][$item_type] ) )
304
+ continue;
305
+
306
+ echo '<table class="cme-typecaps">';
307
308
+ echo '<tr><th></th>';
309
310
+ // label cap properties
311
+ foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
312
+ $prop = str_replace( '_posts', '', $prop );
313
+ $prop = str_replace( '_pages', '', $prop );
314
+ $prop = str_replace( '_terms', '', $prop );
315
+ $tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
316
+ $prop = str_replace( '_', '<br />', $prop );
317
+ $th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
318
+ echo "<th $tip{$th_class}>";
319
+
320
+ if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
321
+ echo ucwords($prop);
322
}
323
+
324
+ echo '</th>';
325
+ }
326
327
+ echo '</tr>';
328
329
+ foreach( $defined[$item_type] as $key => $type_obj ) {
330
+ if ( in_array( $key, $unfiltered[$item_type] ) )
331
+ continue;
332
+
333
+ $row = "<tr class='cme_type_{$key}'>";
334
+
335
+ if ( $cap_type ) {
336
+ if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
337
+ continue;
338
+
339
+ $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a>';
340
+ $row .= '<a href="#" class="neg-type-caps">&nbsp;x&nbsp;</a>';
341
+ $row .= '</td>';
342
343
+ $display_row = ! empty($force_distinct_ui);
344
345
+ foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
346
+ $td_classes = array();
347
+ $checkbox = '';
348
+ $title = '';
349
+
350
+ if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
351
+ || ! in_array( $type_obj->cap->$prop, $default_caps )
352
+ || ( ( 'manage_categories' == $type_obj->cap->$prop ) && ( 'manage_terms' == $prop ) && ( 'category' == $type_obj->name ) ) ) ) {
353
+
354
+ // if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
355
+ if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
356
+ && ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
357
+ && ( ! in_array( $prop, array( 'edit_terms', 'delete_terms' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->manage_terms ) )
358
359
+ && ( ! in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
360
+ || empty($cme_cap_helper->all_taxonomy_caps[$type_obj->cap->$prop])
361
+ || ( $cme_cap_helper->all_taxonomy_caps[ $type_obj->cap->$prop ] <= 1 )
362
+ || $type_obj->cap->$prop == str_replace( '_terms', "_{$type_obj->name}s", $prop )
363
+ || $type_obj->cap->$prop == str_replace( '_terms', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
364
+ )
365
+
366
+ && ( in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
367
+ || empty($cme_cap_helper->all_type_caps[$type_obj->cap->$prop])
368
+ || ( $cme_cap_helper->all_type_caps[ $type_obj->cap->$prop ] <= 1 )
369
+ || $type_obj->cap->$prop == 'upload_files' && 'create_posts' == $prop && 'attachment' == $type_obj->name
370
+ || $type_obj->cap->$prop == str_replace( '_posts', "_{$type_obj->name}s", $prop )
371
+ || $type_obj->cap->$prop == str_replace( '_pages', "_{$type_obj->name}s", $prop )
372
+ || $type_obj->cap->$prop == str_replace( '_posts', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
373
+ || $type_obj->cap->$prop == str_replace( '_pages', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
374
+ )
375
+ ) {
376
+ // only present these term caps up top if we are ensuring that they get enforced separately from manage_terms
377
+ if ( in_array( $prop, array( 'edit_terms', 'delete_terms', 'assign_terms' ) ) && ( ! in_array( $type_obj->name, cme_get_detailed_taxonomies() ) || defined( 'OLD_PRESSPERMIT_ACTIVE' ) ) ) {
378
+ continue;
379
+ }
380
+
381
+ $cap_name = $type_obj->cap->$prop;
382
383
+ if ( 'taxonomy' == $item_type )
384
+ $td_classes []= "term-cap";
385
+ else
386
+ $td_classes []= "post-cap";
387
388
+ if ( ! empty($pp_metagroup_caps[$cap_name]) )
389
+ $td_classes []='cm-has-via-pp';
390
+
391
+ if ( $is_administrator || current_user_can($cap_name) ) {
392
+ if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
393
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
394
+ } else {
395
+ $title_text = $cap_name;
396
}
397
398
+ $disabled = '';
399
+ $checked = checked(1, ! empty($rcaps[$cap_name]), false );
400
401
+ $checkbox = '<input type="checkbox" title="' . $title_text . '" name="caps[' . $cap_name . ']" value="1" ' . $checked . $disabled . ' />';
402
403
+ $type_caps [$cap_name] = true;
404
+ $display_row = true;
405
+ }
406
} else {
407
+ //$td_classes []= "cap-unreg";
408
+ $title = 'title="' . sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) ) . '"';
409
}
410
411
+ if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
412
+ $td_classes []= "cap-neg";
413
+ }
414
+ } else {
415
+ $td_classes []= "cap-unreg";
416
}
417
+
418
+ $td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
419
+
420
+ $row .= "<td $td_class $title><span class='cap-x'>X</span>$checkbox";
421
+
422
+ if ( false !== strpos( $td_class, 'cap-neg' ) )
423
+ $row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
424
+
425
+ $row .= "</td>";
426
}
427
+
428
+ if ('type' == $item_type) {
429
+ $type_metacaps[$type_obj->cap->read_post] = true;
430
+ $type_metacaps[$type_obj->cap->edit_post] = true;
431
+ $type_metacaps[$type_obj->cap->delete_post] = true;
432
+ } elseif ('taxonomy' == $item_type && !empty($type_obj->cap->edit_term) && !empty($type_obj->cap->delete_term)) {
433
+ $type_metacaps[$type_obj->cap->edit_term] = true;
434
+ $type_metacaps[$type_obj->cap->delete_term] = true;
435
}
436
}
437
+
438
+ if ( $display_row ) {
439
+ $row .= '</tr>';
440
+ echo $row;
441
+ }
442
+ }
443
+
444
+ echo '</table>';
445
+
446
} // end foreach item type
447
448
+ echo '</div>';
449
450
echo '</li>';
451
}
468
<?php
469
470
echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
471
+ echo '<table class="form-table cme-checklist"><tr>';
472
473
$checks_per_row = get_option( 'cme_form-rows', 5 );
474
$i = 0; $first_row = true;
517
}
518
519
?>
520
+ <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
521
<span>
522
<?php
523
echo str_replace( '_', ' ', $cap_name );
538
}
539
540
if ( $i == $checks_per_row ) {
541
+ echo '</tr>';
542
$i = 0;
543
} elseif ( ! $first_row ) {
544
// Now close a wellformed table
557
</td></tr>
558
559
</table>
560
<?php
561
+ $all_capabilities = apply_filters( 'capsman_get_capabilities', array_keys( $this->capabilities ), $this->ID );
562
+ $all_capabilities = apply_filters( 'members_get_capabilities', $all_capabilities );
563
+
564
+ $publishpress_status_change_caps = array();
565
+ foreach( $all_capabilities as $cap_name ) {
566
+ if (0 === strpos($cap_name, 'status_change_')) {
567
+ $publishpress_status_change_caps []= $cap_name;
568
+ }
569
+ }
570
+
571
+ $plugin_caps = apply_filters('cme_plugin_capabilities',
572
+ array(
573
+ 'PressPermit' => apply_filters('cme_presspermit_capabilities',
574
+ array(
575
+ 'edit_own_attachments',
576
+ 'list_others_unattached_files',
577
+ 'pp_administer_content',
578
+ 'pp_assign_roles',
579
+ 'pp_associate_any_page',
580
+ 'pp_create_groups',
581
+ 'pp_create_network_groups',
582
+ 'pp_define_moderation',
583
+ 'pp_define_post_status',
584
+ 'pp_define_privacy',
585
+ 'pp_delete_groups',
586
+ 'pp_edit_groups',
587
+ 'pp_exempt_edit_circle',
588
+ 'pp_exempt_read_circle',
589
+ 'pp_force_quick_edit',
590
+ 'pp_list_all_files',
591
+ 'pp_manage_capabilities',
592
+ 'pp_manage_members',
593
+ 'pp_manage_network_members',
594
+ 'pp_manage_roles',
595
+ 'pp_manage_settings',
596
+ 'pp_moderate_any',
597
+ 'pp_set_associate_exceptions',
598
+ 'pp_set_edit_exceptions',
599
+ 'pp_set_notification_channel',
600
+ 'pp_set_read_exceptions',
601
+ 'pp_set_revise_exceptions',
602
+ 'pp_set_term_assign_exceptions',
603
+ 'pp_set_term_associate_exceptions',
604
+ 'pp_set_term_manage_exceptions',
605
+ 'pp_unfiltered',
606
+ 'set_posts_status',
607
+ )
608
+ ),
609
+ 'PublishPress' => apply_filters('cme_publishpress_capabilities',
610
+ array_merge(
611
+ array(
612
+ 'edit_post_subscriptions',
613
+ 'ppma_edit_orphan_post',
614
+ 'pp_manage_roles',
615
+ 'pp_set_notification_channel',
616
+ 'pp_view_calendar',
617
+ 'pp_view_content_overview',
618
+ 'status_change',
619
+ ),
620
+ $publishpress_status_change_caps
621
+ )
622
+ ),
623
+ 'WooCommerce' => apply_filters('cme_woocommerce_capabilities',
624
+ array(
625
+ 'assign_product_terms',
626
+ 'assign_shop_coupon_terms',
627
+ 'assign_shop_discount_terms',
628
+ 'assign_shop_order_terms',
629
+ 'assign_shop_payment_terms',
630
+ 'create_shop_orders',
631
+ 'delete_others_products',
632
+ 'delete_others_shop_coupons',
633
+ 'delete_others_shop_discounts',
634
+ 'delete_others_shop_orders',
635
+ 'delete_others_shop_payments',
636
+ 'delete_private_products',
637
+ 'delete_private_shop_coupons',
638
+ 'delete_private_shop_orders',
639
+ 'delete_private_shop_discounts',
640
+ 'delete_private_shop_payments',
641
+ 'delete_product_terms',
642
+ 'delete_products',
643
+ 'delete_published_products',
644
+ 'delete_published_shop_coupons',
645
+ 'delete_published_shop_discounts',
646
+ 'delete_published_shop_orders',
647
+ 'delete_published_shop_payments',
648
+ 'delete_shop_coupons',
649
+ 'delete_shop_coupon_terms',
650
+ 'delete_shop_discount_terms',
651
+ 'delete_shop_discounts',
652
+ 'delete_shop_order_terms',
653
+ 'delete_shop_orders',
654
+ 'delete_shop_payments',
655
+ 'delete_shop_payment_terms',
656
+ 'edit_others_products',
657
+ 'edit_others_shop_coupons',
658
+ 'edit_others_shop_discounts',
659
+ 'edit_others_shop_orders',
660
+ 'edit_others_shop_payments',
661
+ 'edit_private_products',
662
+ 'edit_private_shop_coupons',
663
+ 'edit_private_shop_discounts',
664
+ 'edit_private_shop_orders',
665
+ 'edit_private_shop_payments',
666
+ 'edit_product_terms',
667
+ 'edit_products',
668
+ 'edit_published_products',
669
+ 'edit_published_shop_coupons',
670
+ 'edit_published_shop_discounts',
671
+ 'edit_published_shop_orders',
672
+ 'edit_published_shop_payments',
673
+ 'edit_shop_coupon_terms',
674
+ 'edit_shop_coupons',
675
+ 'edit_shop_discounts',
676
+ 'edit_shop_discount_terms',
677
+ 'edit_shop_order_terms',
678
+ 'edit_shop_orders',
679
+ 'edit_shop_payments',
680
+ 'edit_shop_payment_terms',
681
+ 'export_shop_payments',
682
+ 'export_shop_reports',
683
+ 'import_shop_discounts',
684
+ 'import_shop_payments',
685
+ 'manage_product_terms',
686
+ 'manage_shop_coupon_terms',
687
+ 'manage_shop_discounts',
688
+ 'manage_shop_discount_terms',
689
+ 'manage_shop_payment_terms',
690
+ 'manage_shop_order_terms',
691
+ 'manage_shop_settings',
692
+ 'manage_woocommerce',
693
+ 'publish_products',
694
+ 'publish_shop_coupons',
695
+ 'publish_shop_discounts',
696
+ 'publish_shop_orders',
697
+ 'publish_shop_payments',
698
+ 'read_private_products',
699
+ 'read_private_shop_coupons',
700
+ 'read_private_shop_discounts',
701
+ 'read_private_shop_payments',
702
+ 'read_private_shop_orders',
703
+ 'view_admin_dashboard',
704
+ 'view_shop_discount_stats',
705
+ 'view_shop_payment_stats',
706
+ 'view_shop_reports',
707
+ 'view_shop_sensitive_data',
708
+ 'view_woocommerce_reports',
709
+ )
710
+ ),
711
+ ));
712
+
713
+ foreach($plugin_caps as $plugin => $__plugin_caps) {
714
+ if (!$_plugin_caps = array_fill_keys( array_intersect($__plugin_caps, $all_capabilities), true )) {
715
+ continue;
716
+ }
717
+
718
+ echo '<h3 class="cme-cap-section">' . sprintf(__( '%s Capabilities', 'capsman-enhanced' ), str_replace('_', ' ', $plugin )) . '</h3>';
719
+ echo '<table class="form-table cme-checklist"><tr>';
720
+
721
+ $checks_per_row = get_option( 'cme_form-rows', 5 );
722
+ $i = 0; $first_row = true;
723
+
724
+ foreach( array_keys($_plugin_caps) as $cap_name ) {
725
+ if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) || isset($type_metacaps[$cap_name]) ) {
726
+ continue;
727
+ }
728
+
729
+ if ( ! $is_administrator && ! current_user_can($cap_name) )
730
+ continue;
731
+
732
+ if ( $i == $checks_per_row ) {
733
+ echo '</tr><tr>';
734
+ $i = 0;
735
+ }
736
+
737
+ if ( ! isset( $rcaps[$cap_name] ) )
738
+ $class = 'cap-no';
739
+ else
740
+ $class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
741
+
742
+ if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
743
+ $class .= ' cap-metagroup';
744
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
745
+ } else {
746
+ $title_text = $cap_name;
747
+ }
748
+
749
+ $disabled = '';
750
+ $checked = checked(1, ! empty($rcaps[$cap_name]), false );
751
+ $title = $title_text;
752
+ ?>
753
+ <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
754
+ <span>
755
+ <?php
756
+ echo str_replace( '_', ' ', $cap_name );
757
+ ?>
758
+ </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
759
+ <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
760
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
761
+ <?php endif; ?>
762
+ </td>
763
+
764
+ <?php
765
+ ++$i;
766
+ }
767
+
768
+ if ( $i == $checks_per_row ) {
769
+ echo '</tr>';
770
+ $i = 0;
771
+ } elseif ( ! $first_row ) {
772
+ // Now close a wellformed table
773
+ for ( $i; $i < $checks_per_row; $i++ ){
774
+ echo '<td>&nbsp;</td>';
775
+ }
776
+ echo '</tr>';
777
+ }
778
+ ?>
779
+
780
+ <tr class="cme-bulk-select">
781
+ <td colspan="<?php echo $checks_per_row;?>">
782
+ <span style="float:right">
783
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
784
+ </span>
785
+ </td></tr>
786
+
787
+ </table>
788
+ <?php
789
+ }
790
+
791
+ echo '<p>&nbsp;</p><h3 class="cme-cap-section">' . __( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
792
793
?>
794
+ <table class="form-table cme-checklist">
795
<tr>
796
<?php
797
$i = 0; $first_row = true;
798
799
foreach( $all_capabilities as $cap_name ) {
800
if ( ! isset($this->capabilities[$cap_name]) )
801
$this->capabilities[$cap_name] = str_replace( '_', ' ', $cap_name );
802
}
803
804
uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
805
+
806
foreach ( $this->capabilities as $cap_name => $cap ) :
807
+ if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) || isset($type_metacaps[$cap_name]) )
808
continue;
809
+
810
+ foreach(array_keys($plugin_caps) as $plugin) {
811
+ if ( in_array( $cap_name, $plugin_caps[$plugin]) ) {
812
+ continue 2;
813
+ }
814
+ }
815
+
816
if ( ! $is_administrator && empty( $current_user->allcaps[$cap_name] ) ) {
817
continue;
818
}
819
820
// Levels are not shown.
821
if ( preg_match( '/^level_(10|[0-9])#x2F;i', $cap_name ) ) {
822
continue;
852
}
853
}
854
?>
855
+ <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
856
<span>
857
<?php
858
echo str_replace( '_', ' ', $cap );
886
887
<tr class="cme-bulk-select">
888
<td colspan="<?php echo $checks_per_row;?>">
889
+ <span style="float:right">
890
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
891
+ </span>
892
+ </td></tr>
893
+
894
+ </table>
895
+
896
<?php
897
+ if (array_intersect(array_keys($type_metacaps), $all_capabilities)) {
898
+
899
+ $_title = esc_attr(__('Meta capabilities are used in code as placeholders for other capabilities. Assiging to a role has no effect.'));
900
+ echo '<p>&nbsp;</p><h3 class="cme-cap-section" title="' . $_title . '">' . __( 'Invalid Capabilities', 'capsman-enhanced' ) . '</h3>';
901
?>
902
+ <table class="form-table cme-checklist">
903
+ <tr>
904
+ <?php
905
+ $i = 0; $first_row = true;
906
+
907
+ foreach( $all_capabilities as $cap_name ) {
908
+ if ( ! isset($this->capabilities[$cap_name]) )
909
+ $this->capabilities[$cap_name] = str_replace( '_', ' ', $cap_name );
910
+ }
911
+
912
+ uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
913
+
914
+ foreach ( $this->capabilities as $cap_name => $cap ) :
915
+ if ( ! isset( $type_metacaps[$cap_name] ) )
916
+ continue;
917
+
918
+ if ( ! $is_administrator && empty( $current_user->allcaps[$cap_name] ) ) {
919
+ continue;
920
+ }
921
+
922
+ if ( $i == $checks_per_row ) {
923
+ echo '</tr><tr>';
924
+ $i = 0; $first_row = false;
925
+ }
926
+
927
+ if ( ! isset( $rcaps[$cap_name] ) )
928
+ $class = 'cap-no';
929
+ else
930
+ $class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
931
+
932
+ if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
933
+ $class .= ' cap-metagroup';
934
+ $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
935
+ } else {
936
+ $title_text = $cap_name;
937
+ }
938
+
939
+ $disabled = '';
940
+ $checked = checked(1, ! empty($rcaps[$cap_name]), false );
941
+ ?>
942
+ <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
943
+ <span>
944
+ <?php
945
+ echo str_replace( '_', ' ', $cap );
946
?>
947
+ </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
948
+ <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
949
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
950
+ <?php endif; ?>
951
+ </td>
952
+ <?php
953
+ $i++;
954
+ endforeach;
955
+
956
+ if ( ! empty($lock_manage_caps_capability) ) {
957
+ echo '<input type="hidden" name="caps[manage_capabilities]" value="1" />';
958
+ }
959
960
+ if ( $i == $checks_per_row ) {
961
+ echo '</tr><tr>';
962
+ $i = 0;
963
+ } else {
964
+ if ( ! $first_row ) {
965
+ // Now close a wellformed table
966
+ for ( $i; $i < $checks_per_row; $i++ ){
967
+ echo '<td>&nbsp;</td>';
968
+ }
969
+ echo '</tr>';
970
+ }
971
+ }
972
+ ?>
973
+
974
+ <tr class="cme-bulk-select">
975
+ <td colspan="<?php echo $checks_per_row;?>">
976
<span style="float:right">
977
<input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
978
</span>
979
</td></tr>
980
+
981
</table>
982
+ <?php
983
+ } // endif any invalid caps
984
+ ?>
985
+
986
+ <div>
987
+ <?php
988
+ $level = ak_caps2level($rcaps);
989
+ ?>
990
+ <span title="<?php _e('Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities.', 'capsman-enhanced');?>">
991
+ <?php _e('Role Level:', 'capsman-enhanced');?> <select name="level">
992
+ <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
993
+ <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
994
+ <?php }
995
+ ?>
996
+ </select>
997
+ </span>
998
+
999
<?php if ( ! defined('PRESSPERMIT_ACTIVE') || capsman_get_pp_option('display_hints') ) :?>
1000
+ <span class="cme-subtext" style="float:right">
1001
<?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman-enhanced' ); ?>
1002
</span>
1003
+ <?php endif;?>
1004
+ </div>
1005
1006
</dd>
1007
</dl>
1048
<dt><?php _e('Create New Role', 'capsman-enhanced'); ?></dt>
1049
<dd style="text-align:center;">
1050
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
1051
+ <p><input type="text" name="create-name" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
1052
1053
<?php if( $support_pp_only_roles ) : ?>
1054
<label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
1093
1094
<dl>
1095
<dt><?php _e('Related Permissions Plugins', 'capsman-enhanced'); ?></dt>
1096
+ <dd>
1097
<ul>
1098
+ <li><a href="https://publishpress.com/ma/" target="_blank"><?php _e('Multiple Authors', 'capsman-enhanced');?></a></li>
1099
+ </li>
1100
+
1101
+ <li><a href="#pp-more"><?php _e('PressPermit', 'capsman-enhanced');?></a>
1102
+ </li>
1103
+
1104
<?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress&TB_iframe=true&width=640&height=678";
1105
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
1106
?>
1107
<li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress', 'capsman-enhanced');?></a></li>
1108
1109
<?php $_url = "plugin-install.php?tab=plugin-information&plugin=revisionary&TB_iframe=true&width=640&height=678";
1110
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
1111
?>
1112
+ <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress Revisions', 'capsman-enhanced');?></a></li>
1113
+
1114
<li class="publishpress-contact"><a href="https://publishpress.com/contact" target="_blank"><?php _e('Help / Contact Form', 'capsman-enhanced');?></a></li>
1115
+
1116
</ul>
1117
+ </dd>
1118
</dl>
1119
1120
<?php
1126
</table>
1127
</fieldset>
1128
</form>
1129
+
1130
+ <?php cme_publishpressFooter(); ?>
1131
</div>
1132
1133
<?php
1157
function cme_plugin_info_url( $plugin_slug ) {
1158
$_url = "plugin-install.php?tab=plugin-information&plugin=$plugin_slug&TB_iframe=true&width=640&height=678";
1159
return ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
1160
+ }
1161
+
1162
+ function cme_publishpressFooter() {
1163
+ ?>
1164
+ <footer>
1165
+
1166
+ <div class="pp-rating">
1167
+ <a href="https://wordpress.org/support/plugin/capability-manager-enhanced/reviews/#new-post" target="_blank" rel="noopener noreferrer">
1168
+ <?php printf(
1169
+ __('If you like %s, please leave us a %s rating. Thank you!', 'capsman-enhanced'),
1170
+ '<strong>Capability Manager Enhanced</strong>',
1171
+ '<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>'
1172
+ );
1173
+ ?>
1174
+ </a>
1175
+ </div>
1176
+
1177
+ <hr>
1178
+ <nav>
1179
+ <ul>
1180
+ <li><a href="https://publishpress.com/capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php _e('About Capability Manager Enhanced', 'capsman-enhanced');?>"><?php _e('About', 'capsman-enhanced');?>
1181
+ </a></li>
1182
+ <li><a href="https://publishpress.com/knowledge-base/how-to-use-capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php _e('Capability Manager Enhanced Documentation', 'capsman-enhanced');?>"><?php _e('Documentation', 'capsman-enhanced');?>
1183
+ </a></li>
1184
+ <li><a href="https://publishpress.com/contact" target="_blank" rel="noopener noreferrer" title="<?php _e('Contact the PublishPress team', 'capsman-enhanced');?>"><?php _e('Contact', 'capsman-enhanced');?>
1185
+ </a></li>
1186
+ <li><a href="https://twitter.com/publishpresscom" target="_blank" rel="noopener noreferrer"><span class="dashicons dashicons-twitter"></span>
1187
+ </a></li>
1188
+ <li><a href="https://facebook.com/publishpress" target="_blank" rel="noopener noreferrer"><span class="dashicons dashicons-facebook"></span>
1189
+ </a></li>
1190
+ </ul>
1191
+ </nav>
1192
+
1193
+ <div class="pp-pressshack-logo">
1194
+ <a href="https://publishpress.com" target="_blank" rel="noopener noreferrer">
1195
+
1196
+ <img src="<?php echo plugins_url('', CME_FILE) . '/common/img/publishpress-logo.png';?>" />
1197
+ </a>
1198
+ </div>
1199
+
1200
+ </footer>
1201
+ <?php
1202
+ }
includes/cap-helper.php CHANGED
@@ -232,8 +232,9 @@ class CME_Cap_Helper {
232
233
// count the number of taxonomies that use each capability
234
foreach( $wp_taxonomies as $taxonomy => $tx_obj ) {
235
- $this_tx_caps = array_unique( (array) $tx_obj->cap );
236
-
237
foreach( $this_tx_caps as $cap_name ) {
238
if ( ! isset( $this->all_taxonomy_caps[$cap_name] ) ) {
239
$this->all_taxonomy_caps[$cap_name] = 1;
@@ -292,10 +293,36 @@ class CME_Cap_Helper {
292
}
293
}
294
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
295
-
296
// Optionally, also force edit_terms and delete_terms to be distinct from manage_terms, and force a distinct assign_terms capability
297
if ( in_array( $taxonomy, $detailed_taxonomies ) ) {
298
foreach( $tx_detail_caps as $cap_property => $replacement_cap_format ) {
299
if ( ! empty( $this->all_taxonomy_caps[ $tx_caps[$cap_property] ] ) ) {
300
// assign_terms is otherwise not forced taxonomy-distinct
301
$wp_taxonomies[$taxonomy]->cap->$cap_property = str_replace( '_terms', "_{$plural_type}", $replacement_cap_format );
@@ -313,6 +340,10 @@ class CME_Cap_Helper {
313
}
314
}
315
}
316
}
317
318
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
232
233
// count the number of taxonomies that use each capability
234
foreach( $wp_taxonomies as $taxonomy => $tx_obj ) {
235
+ //$this_tx_caps = array_unique( (array) $tx_obj->cap );
236
+ $this_tx_caps = (array) $tx_obj->cap;
237
+
238
foreach( $this_tx_caps as $cap_name ) {
239
if ( ! isset( $this->all_taxonomy_caps[$cap_name] ) ) {
240
$this->all_taxonomy_caps[$cap_name] = 1;
293
}
294
}
295
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
296
+
297
+
298
// Optionally, also force edit_terms and delete_terms to be distinct from manage_terms, and force a distinct assign_terms capability
299
if ( in_array( $taxonomy, $detailed_taxonomies ) ) {
300
foreach( $tx_detail_caps as $cap_property => $replacement_cap_format ) {
301
+ $tx_cap_usage = array_count_values($tx_caps);
302
+
303
+ // If a unique edit/delete capability is already defined, don't change the definition
304
+ if (!empty($tx_caps[$cap_property])
305
+ && (empty($this->all_taxonomy_caps[$tx_caps[$cap_property]]) || $this->all_taxonomy_caps[$tx_caps[$cap_property]] == 1)
306
+ && ($tx_cap_usage[$tx_caps[$cap_property]] == 1)
307
+ && !defined('CAPSMAN_LEGACY_DETAILED_TAX_CAPS')
308
+ ) {
309
+ // If roles were already configured with generated capability name, migrate to custom predefined capability name
310
+ $custom_detailed_taxonomy_caps = true;
311
+ $generated_cap_name = str_replace('_terms', "_{$plural_type}", $replacement_cap_format);
312
+
313
+ if (!get_option("cme_migrated_taxonomy_caps")) {
314
+ foreach ($wp_roles->roles as $role_name => $role) {
315
+ if (!empty($role['capabilities'][$generated_cap_name])) {
316
+ $_role = get_role($role_name);
317
+ $_role->add_cap($tx_caps[$cap_property]);
318
+ $_role->remove_cap($generated_cap_name);
319
+ }
320
+ }
321
+ }
322
+
323
+ continue;
324
+ }
325
+
326
if ( ! empty( $this->all_taxonomy_caps[ $tx_caps[$cap_property] ] ) ) {
327
// assign_terms is otherwise not forced taxonomy-distinct
328
$wp_taxonomies[$taxonomy]->cap->$cap_property = str_replace( '_terms', "_{$plural_type}", $replacement_cap_format );
340
}
341
}
342
}
343
+
344
+ if (!empty($custom_detailed_taxonomy_caps)) {
345
+ update_option("cme_migrated_taxonomy_caps", true);
346
+ }
347
}
348
349
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
includes/filters-admin.php CHANGED
@@ -8,8 +8,8 @@ class CME_AdminMenuNoPrivWorkaround {
8
if ( 'edit.php' == $pagenow ) {
9
// Prevent lack of create_posts capability from completely blocking admin menu access to a post type.
10
// The "Add New" page is already successfully blocked by other means.
11
- add_action( '_admin_menu', array( $this, 'menu_nopriv_workaround_enable' ), PHP_INT_MAX );
12
- add_action( 'admin_menu', array( $this, 'menu_nopriv_workaround_disable' ), PHP_INT_MIN );
13
}
14
}
15
8
if ( 'edit.php' == $pagenow ) {
9
// Prevent lack of create_posts capability from completely blocking admin menu access to a post type.
10
// The "Add New" page is already successfully blocked by other means.
11
+ add_action( '_admin_menu', array( $this, 'menu_nopriv_workaround_enable' ), PHP_INT_MAX );
12
+ add_action( 'admin_menu', array( $this, 'menu_nopriv_workaround_disable' ), - PHP_INT_MAX );
13
}
14
}
15
includes/filters-wp_rest_workarounds.php ADDED
@@ -0,0 +1,146 @@
1
+ <?php
2
+ namespace PublishPress\Capabilities;
3
+
4
+ /**
5
+ * PublishPress\Capabilities\WP_REST_Workarounds class
6
+ *
7
+ * @author Kevin Behrens
8
+ * @copyright Copyright (c) 2019, PublishPress
9
+ * @link https://publishpress.com
10
+ *
11
+ */
12
+ class WP_REST_Workarounds
13
+ {
14
+ var $post_id = 0;
15
+ var $is_posts_request = false;
16
+
17
+ function __construct() {
18
+ add_filter('rest_pre_dispatch', [$this, 'fltRestPreDispatch'], 10, 3);
19
+ add_filter('user_has_cap', [$this, 'fltPublishCapReplacement'], 5, 3);
20
+
21
+ add_filter('pre_post_status', [$this, 'fltPostStatus'], 10, 1);
22
+ }
23
+
24
+ /**
25
+ * Work around Gutenberg editor enforcing publish_posts capability instead of edit_published_posts.
26
+ *
27
+ * Allow edit_published capability to satisfy publish capability requirement if:
28
+ * - The query pertains to a specific post
29
+ * - The post type and its capabilities are defined and match the current publish capability requirement
30
+ * - The post is already published with a public status, or scheduled
31
+ *
32
+ * @author Kevin Behrens
33
+ * @link https://core.trac.wordpress.org/ticket/47443
34
+ * @link https://github.com/WordPress/gutenberg/issues/13342
35
+ * @param array $wp_sitecaps Array of user capabilities acknowledged for this request.
36
+ * @param array $reqd_caps Capability requirements
37
+ * @param array $args Additional arguments passed into user_has_cap filter
38
+ */
39
+ public function fltPublishCapReplacement($wp_sitecaps, $reqd_caps, $args)
40
+ {
41
+ if ($reqd_cap = reset($reqd_caps)) {
42
+ // slight compromise for perf: apply this workaround only when publish_posts capability for post type follows typical pattern (publish_*)
43
+ if (0 === strpos($reqd_cap, 'publish_')) {
44
+ if (!empty($wp_sitecaps[$reqd_cap])) {
45
+ return $wp_sitecaps;
46
+ }
47
+
48
+ if (!$_post = get_post($this->getPostID())) {
49
+ return $wp_sitecaps;
50
+ }
51
+
52
+ $type_obj = get_post_type_object($_post->post_type);
53
+ $status_obj = get_post_status_object($_post->post_status);
54
+
55
+ if ($type_obj && !empty($type_obj->cap)
56
+ && !empty($type_obj->cap->publish_posts) && !empty($type_obj->cap->edit_published_posts)
57
+ && $type_obj->cap->publish_posts == $reqd_cap
58
+ && $status_obj && (!empty($status_obj->public) || 'future' == $_post->post_status)
59
+ ) {
60
+ if (!empty($wp_sitecaps[$type_obj->cap->edit_published_posts])) {
61
+ $wp_sitecaps[$reqd_cap] = true;
62
+ }
63
+ }
64
+ }
65
+ }
66
+
67
+ return $wp_sitecaps;
68
+ }
69
+
70
+ /**
71
+ * If the post is already published, prevent the workaround from allowing status to be changed via "Switch to Draft" (or by any other means).
72
+ *
73
+ * This will also prevent users with edit_published capability but not publish capability from unpublishing via Quick Edit.
74
+ *
75
+ * @param string $post_status New post status about to be saved
76
+ */
77
+ function fltPostStatus($post_status) {
78
+ global $current_user;
79
+
80
+ if ($_post = get_post($this->getPostID())) {
81
+ $type_obj = get_post_type_object($_post->post_type);
82
+ $status_obj = get_post_status_object($_post->post_status);
83
+
84
+ if ($type_obj && $status_obj && (!empty($status_obj->public) || !empty($status_obj->private) || 'future' == $_post->post_status)) {
85
+ if (empty($current_user->allcaps[$type_obj->cap->publish_posts])) {
86
+ $post_status = $_post->post_status;
87
+ }
88
+ }
89
+ }
90
+
91
+ return $post_status;
92
+ }
93
+
94
+ private function getPostID()
95
+ {
96
+ global $post;
97
+
98
+ if (defined('REST_REQUEST') && REST_REQUEST && $this->is_posts_request) {
99
+ return $this->post_id;
100
+ }
101
+
102
+ if (!empty($post) && is_object($post)) {
103
+ return ('auto-draft' == $post->post_status) ? 0 : $post->ID;
104
+ } elseif (isset($_REQUEST['post'])) {
105
+ return (int)$_REQUEST['post'];
106
+ } elseif (isset($_REQUEST['post_ID'])) {
107
+ return (int)$_REQUEST['post_ID'];
108
+ } elseif (isset($_REQUEST['post_id'])) {
109
+ return (int)$_REQUEST['post_id'];
110
+ }
111
+ }
112
+
113
+ public function fltRestPreDispatch($rest_response, $rest_server, $request)
114
+ {
115
+ $method = $request->get_method();
116
+ $path = $request->get_route();
117
+
118
+ foreach ($rest_server->get_routes() as $route => $handlers) {
119
+ if (!$match = preg_match( '@^' . $route . '$@i', $path, $matches )) {
120
+ continue;
121
+ }
122
+
123
+ $args = [];
124
+ foreach ($matches as $param => $value) {
125
+ if (!is_int($param)) {
126
+ $args[ $param ] = $value;
127
+ }
128
+ }
129
+
130
+ foreach ($handlers as $handler) {
131
+ if (is_array($handler['callback']) && isset($handler['callback'][0]) && is_object($handler['callback'][0])
132
+ && 'WP_REST_Posts_Controller' == get_class($handler['callback'][0])
133
+ ) {
134
+ if ( ! $this->post_id = (!empty($args['id'])) ? $args['id'] : 0) {
135
+ $this->post_id = (!empty($this->params['id'])) ? $this->params['id'] : 0;
136
+ }
137
+
138
+ $this->is_posts_request = true;
139
+ break 2;
140
+ }
141
+ }
142
+ }
143
+
144
+ return $rest_response;
145
+ }
146
+ }
includes/filters.php CHANGED
@@ -34,6 +34,8 @@ if ( is_admin() ) {
34
}
35
}
36
37
// allow edit_terms, delete_terms, assign_terms capabilities to function separately from manage_terms
38
function _cme_remap_term_meta_cap ( $caps, $cap, $user_id, $args ) {
39
global $current_user, $cme_cap_helper;
@@ -166,3 +168,14 @@ function _cme_get_plural( $slug, $type_obj = false ) {
166
return sanitize_key( CME_Inflect::pluralize( $slug ) );
167
}
168
}
34
}
35
}
36
37
+ add_filter('plugin_action_links_' . plugin_basename(CME_FILE), '_cme_fltPluginActionLinks', 10, 2);
38
+
39
// allow edit_terms, delete_terms, assign_terms capabilities to function separately from manage_terms
40
function _cme_remap_term_meta_cap ( $caps, $cap, $user_id, $args ) {
41
global $current_user, $cme_cap_helper;
168
return sanitize_key( CME_Inflect::pluralize( $slug ) );
169
}
170
}
171
+
172
+ function _cme_fltPluginActionLinks($links, $file)
173
+ {
174
+ if ($file == plugin_basename(CME_FILE)) {
175
+ if (!is_network_admin()) {
176
+ $links[] = "<a href='" . admin_url("admin.php?page=capsman") . "'>" . __('Edit Roles', 'capsman-enhanced') . "</a>";
177
+ }
178
+ }
179
+
180
+ return $links;
181
+ }
includes/manager.php CHANGED
@@ -43,7 +43,7 @@ function _cme_core_caps() {
43
$core_caps = array_fill_keys( array( 'switch_themes', 'edit_themes', 'activate_plugins', 'edit_plugins', 'edit_users', 'edit_files', 'manage_options', 'moderate_comments',
44
'manage_links', 'upload_files', 'import', 'unfiltered_html', 'read', 'delete_users', 'create_users', 'unfiltered_upload', 'edit_dashboard',
45
'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
46
- 'update_core', 'list_users', 'remove_users', 'add_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
47
48
ksort( $core_caps );
49
return $core_caps;
@@ -131,6 +131,10 @@ class CapabilityManager
131
132
// Load styles
133
add_action('admin_print_styles', array($this, 'adminStyles'));
134
}
135
136
/**
@@ -145,6 +149,8 @@ class CapabilityManager
145
if ( empty( $_REQUEST['page'] ) || ! in_array( $_REQUEST['page'], array( 'capsman', 'capsman-tool' ) ) )
146
return;
147
148
wp_register_style( $this->ID . 'framework_admin', $this->mod_url . '/framework/styles/admin.css', false, CAPSMAN_ENH_VERSION);
149
wp_enqueue_style( $this->ID . 'framework_admin');
150
@@ -164,6 +170,12 @@ class CapabilityManager
164
);
165
}
166
167
/**
168
* Creates some filters at module load time.
169
*
@@ -263,6 +275,11 @@ class CapabilityManager
263
global $pp_admin;
264
$menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
265
add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', $this->ID, array($this, 'generalManager') );
266
} else {
267
add_users_page( __('Capability Manager', 'capsman-enhanced'), __('Capabilities', 'capsman-enhanced'), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
268
}
43
$core_caps = array_fill_keys( array( 'switch_themes', 'edit_themes', 'activate_plugins', 'edit_plugins', 'edit_users', 'edit_files', 'manage_options', 'moderate_comments',
44
'manage_links', 'upload_files', 'import', 'unfiltered_html', 'read', 'delete_users', 'create_users', 'unfiltered_upload', 'edit_dashboard',
45
'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
46
+ 'update_core', 'list_users', 'remove_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
47
48
ksort( $core_caps );
49
return $core_caps;
131
132
// Load styles
133
add_action('admin_print_styles', array($this, 'adminStyles'));
134
+
135
+ if ( isset($_REQUEST['page']) && ( 'capsman' == $_REQUEST['page'] ) ) {
136
+ add_action('admin_enqueue_scripts', array($this, 'adminScriptsPP'));
137
+ }
138
}
139
140
/**
149
if ( empty( $_REQUEST['page'] ) || ! in_array( $_REQUEST['page'], array( 'capsman', 'capsman-tool' ) ) )
150
return;
151
152
+ wp_enqueue_style('revisionary-admin-common', $this->mod_url . '/common/css/pressshack-admin.css', [], CAPSMAN_ENH_VERSION);
153
+
154
wp_register_style( $this->ID . 'framework_admin', $this->mod_url . '/framework/styles/admin.css', false, CAPSMAN_ENH_VERSION);
155
wp_enqueue_style( $this->ID . 'framework_admin');
156
170
);
171
}
172
173
+ function adminScriptsPP() {
174
+ wp_enqueue_style( 'plugin-install' );
175
+ wp_enqueue_script( 'plugin-install' );
176
+ add_thickbox();
177
+ }
178
+
179
/**
180
* Creates some filters at module load time.
181
*
275
global $pp_admin;
276
$menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
277
add_submenu_page( $pp_admin->get_menu('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', $this->ID, array($this, 'generalManager') );
278
+
279
+ } elseif(did_action('presspermit_admin_menu') && function_exists('presspermit')) {
280
+ $menu_caption = ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) ? __('Capabilities', 'capsman-enhanced') : 'Role Capabilities';
281
+ add_submenu_page( presspermit()->admin()->getMenuParams('options'), __('Capability Manager', 'capsman-enhanced'), $menu_caption, 'manage_capabilities', $this->ID, array($this, 'generalManager') );
282
+
283
} else {
284
add_users_page( __('Capability Manager', 'capsman-enhanced'), __('Capabilities', 'capsman-enhanced'), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
285
}
lang/capsman.mo CHANGED
Binary file
lang/capsman.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
msgstr ""
3
"Project-Id-Version: Capability Manager Enhanced\n"
4
"Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-03-28 17:59-0500\n"
6
- "PO-Revision-Date: 2019-03-28 17:59-0500\n"
7
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
8
"Language-Team: PublishPress <help@publishpress.com>\n"
9
"MIME-Version: 1.0\n"
@@ -35,19 +35,23 @@ msgstr ""
35
msgid "%s is required for this plugin."
36
msgstr ""
37
38
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:153
39
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:158
40
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:160
41
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:255
42
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:260
43
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:262
44
msgid "Capability Manager"
45
msgstr ""
46
47
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:157
48
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:160
49
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:259
50
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:262
51
msgid "Capabilities"
52
msgstr ""
53
@@ -56,391 +60,377 @@ msgid "Settings saved."
56
msgstr ""
57
58
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:36
59
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:36
60
#, php-format
61
msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
62
msgstr ""
63
64
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:61
65
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:61
66
msgid "Roles and Capabilities"
67
msgstr ""
68
69
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:70
70
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:70
71
#, php-format
72
msgid "Capabilities for %s"
73
msgstr ""
74
75
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:73
76
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:687
77
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:73
78
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:687
79
msgid "Save Changes"
80
msgstr ""
81
82
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:77
83
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:77
84
- msgid "View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin."
85
msgstr ""
86
87
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:89
88
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:89
89
#, php-format
90
msgid "Thanks for using the %1$sPublishPress%2$s family of professional publishing tools."
91
msgstr ""
92
93
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:120
94
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:120
95
msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
96
msgstr ""
97
98
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:124
99
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:124
100
msgid "Assign standard WP roles supplementally for a specific post type"
101
msgstr ""
102
103
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:128
104
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:128
105
msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
106
msgstr ""
107
108
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:132
109
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:132
110
msgid "Customize reading permissions per-category or per-post"
111
msgstr ""
112
113
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:136
114
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:136
115
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
116
msgstr ""
117
118
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:140
119
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:140
120
msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
121
msgstr ""
122
123
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:144
124
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:144
125
msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
126
msgstr ""
127
128
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:148
129
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:148
130
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
131
msgstr ""
132
133
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:152
134
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:152
135
msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
136
msgstr ""
137
138
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:156
139
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:156
140
msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
141
msgstr ""
142
143
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:160
144
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:160
145
msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
146
msgstr ""
147
148
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:164
149
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:164
150
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
151
msgstr ""
152
153
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:168
154
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:168
155
msgid "Member support forum"
156
msgstr ""
157
158
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:174
159
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:174
160
#, php-format
161
msgid "%1$sgrab%2$s %3$s"
162
msgstr ""
163
164
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:174
165
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:174
166
#, php-format
167
msgid "%s (free install)"
168
msgstr ""
169
170
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:176
171
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:176
172
#, php-format
173
msgid "%1$sbuy%2$s %3$s"
174
msgstr ""
175
176
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:176
177
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:176
178
#, php-format
179
msgid "%s info/purchase"
180
msgstr ""
181
182
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:252
183
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:252
184
msgid "&nbsp;"
185
msgstr ""
186
187
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:253
188
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:253
189
msgid "Reading"
190
msgstr ""
191
192
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:254
193
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:254
194
msgid "Editing Capabilities"
195
msgstr ""
196
197
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:255
198
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:255
199
msgid "Deletion Capabilities"
200
msgstr ""
201
202
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:259
203
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:259
204
msgid "can read posts which are currently published with private visibility"
205
msgstr ""
206
207
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:260
208
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:260
209
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
210
msgstr ""
211
212
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:261
213
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:261
214
msgid "can edit posts which were created by other users"
215
msgstr ""
216
217
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:262
218
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:262
219
msgid "can edit posts which are currently published"
220
msgstr ""
221
222
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:263
223
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:263
224
msgid "can edit posts which are currently published with private visibility"
225
msgstr ""
226
227
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:264
228
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:264
229
msgid "can make a post publicly visible"
230
msgstr ""
231
232
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:265
233
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:265
234
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
235
msgstr ""
236
237
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:266
238
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:266
239
msgid "can delete posts which were created by other users"
240
msgstr ""
241
242
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:267
243
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:267
244
msgid "can delete posts which are currently published"
245
msgstr ""
246
247
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:268
248
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:268
249
msgid "can delete posts which are currently published with private visibility"
250
msgstr ""
251
252
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:395
253
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:484
254
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:597
255
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:395
256
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:484
257
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:597
258
#, php-format
259
msgid "%s: assigned by Permission Group"
260
msgstr ""
261
262
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:409
263
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:409
264
#, php-format
265
msgid "shared capability: %s"
266
msgstr ""
267
268
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:461
269
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:461
270
msgid "Other WordPress Core Capabilities"
271
msgstr ""
272
273
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:503
274
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:503
275
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
276
msgstr ""
277
278
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
279
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
280
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
281
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
282
msgid "check/uncheck all"
283
msgstr ""
284
285
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
286
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
287
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
288
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
289
msgid "negate all (storing as disabled capabilities)"
290
msgstr ""
291
292
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
293
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
294
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
295
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
296
msgid "negate none (add/remove all capabilities normally)"
297
msgstr ""
298
299
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:553
300
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:553
301
msgid "Additional Capabilities"
302
msgstr ""
303
304
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:653
305
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:653
306
- msgid "Level:"
307
msgstr ""
308
309
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:671
310
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:671
311
msgid "Note: Underscores replace spaces in stored capability name (\"edit users\" => \"edit_users\")."
312
msgstr ""
313
314
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
315
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
316
msgid "Delete this role"
317
msgstr ""
318
319
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
320
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
321
#, php-format
322
msgid ""
323
"You are about to delete the %s role.\n"
324
" 'Cancel' to stop, 'OK' to delete."
325
msgstr ""
326
327
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
328
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
329
msgid "Delete Role"
330
msgstr ""
331
332
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:697
333
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:697
334
msgid "Select New Role"
335
msgstr ""
336
337
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:705
338
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:705
339
msgid "Change"
340
msgstr ""
341
342
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:718
343
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:718
344
msgid "Create New Role"
345
msgstr ""
346
347
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:721
348
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:737
349
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:721
350
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:737
351
msgid "Role Name"
352
msgstr ""
353
354
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:724
355
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:740
356
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:86
357
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:724
358
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:740
359
msgid "Make role available for supplemental assignment to Permission Groups only"
360
msgstr ""
361
362
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:724
363
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:740
364
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:724
365
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:740
366
msgid "hidden"
367
msgstr ""
368
369
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:728
370
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:728
371
msgid "Create"
372
msgstr ""
373
374
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:734
375
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:734
376
msgid "Copy this role to"
377
msgstr ""
378
379
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:744
380
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:744
381
msgid "Copy"
382
msgstr ""
383
384
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:750
385
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:750
386
msgid "Add Capability"
387
msgstr ""
388
389
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:753
390
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:753
391
msgid "Add to role"
392
msgstr ""
393
394
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:758
395
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:758
396
msgid "Backup Tool"
397
msgstr ""
398
399
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:760
400
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:760
401
msgid "Backup / Restore Roles"
402
msgstr ""
403
404
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:765
405
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:765
406
msgid "Related Permissions Plugins"
407
msgstr ""
408
409
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:770
410
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:770
411
msgid "PublishPress"
412
msgstr ""
413
414
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:772
415
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:772
416
- msgid "Press Permit"
417
msgstr ""
418
419
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:778
420
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:778
421
- msgid "Revisionary"
422
msgstr ""
423
424
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:807
425
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:807
426
msgid "Create this role definition in new (future) sites"
427
msgstr ""
428
429
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:807
430
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:807
431
msgid "include in new sites"
432
msgstr ""
433
434
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:810
435
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:810
436
msgid "Copy / update this role definition to all sites now"
437
msgstr ""
438
439
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:810
440
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:810
441
msgid "sync role to all sites now"
442
msgstr ""
443
444
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:9
445
msgid "You do not have permission to restore roles."
446
msgstr ""
@@ -578,6 +568,10 @@ msgstr ""
578
msgid "Add New"
579
msgstr ""
580
581
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:16
582
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:29
583
msgid "New role created."
@@ -604,126 +598,145 @@ msgstr ""
604
msgid "Bad form received."
605
msgstr ""
606
607
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:209
608
msgid "You cannot remove Manage Capabilities from Administrators"
609
msgstr ""
610
611
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:317
612
#, php-format
613
msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
614
msgstr ""
615
616
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:364
617
#, php-format
618
msgid "Role has been deleted. %1$d users moved to default role %2$s."
619
msgstr ""
620
621
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:158
622
msgid "Explicity negate this capability by storing as disabled"
623
msgstr ""
624
625
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:159
626
msgid "Explicitly negate these capabilities by storing as disabled"
627
msgstr ""
628
629
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:160
630
msgid "Post type registration does not define this capability distinctly"
631
msgstr ""
632
633
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:161
634
msgid "This capability is explicitly negated. Click to add/remove normally."
635
msgstr ""
636
637
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:162
638
msgid "Add or remove this capability from the WordPress role"
639
msgstr ""
640
641
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:163
642
msgid "Add or remove capability from the role normally"
643
msgstr ""
644
645
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:359
646
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:378
647
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:537
648
msgid "What do you think you're doing?!?"
649
msgstr ""
650
651
- #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:417
652
msgid "Bad form Received"
653
msgstr ""
654
655
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:44
656
#, php-format
657
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
658
msgstr ""
659
660
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:46
661
#, php-format
662
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
663
msgstr ""
664
665
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:51
666
#, php-format
667
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
668
msgstr ""