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])$/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])$/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 ""
669
 
670
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:53
 
671
  #, php-format
672
  msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
673
  msgstr ""
674
 
675
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:61
 
676
  #, php-format
677
  msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
678
  msgstr ""
679
 
680
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:63
 
681
  msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
682
  msgstr ""
683
 
684
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:66
 
685
  msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
686
  msgstr ""
687
 
688
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:86
 
689
  msgid "hidden role"
690
  msgstr ""
691
 
692
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:97
 
693
  msgid "Type-Specific Capabilities"
694
  msgstr ""
695
 
696
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:100
 
697
  msgid "Ensure permissions can be controlled separately from other post types."
698
  msgstr ""
699
 
700
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
 
701
  msgid "Make selected post types require a different capability to add new posts."
702
  msgstr ""
703
 
704
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
 
705
  msgid "Use create_posts capability"
706
  msgstr ""
707
 
708
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:160
709
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:221
710
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:277
 
 
 
711
  msgid "Update"
712
  msgstr ""
713
 
714
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:170
 
715
  msgid "Taxonomy-Specific Capabilities"
716
  msgstr ""
717
 
718
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:173
 
719
  msgid "Ensure permissions can be controlled separately from other taxonomies."
720
  msgstr ""
721
 
722
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:226
 
723
  msgid "Detailed Taxonomy Capabilities"
724
  msgstr ""
725
 
726
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:229
 
727
  msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
728
  msgstr ""
729
 
2
  msgstr ""
3
  "Project-Id-Version: Capability Manager Enhanced\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-10-24 16:55-0500\n"
6
+ "PO-Revision-Date: 2019-10-24 16:55-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
  msgid "%s is required for this plugin."
36
  msgstr ""
37
 
38
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:143
39
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:148
40
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:152
41
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:155
42
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:272
43
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:277
44
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:281
45
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:284
46
  msgid "Capability Manager"
47
  msgstr ""
48
 
49
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:147
50
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:151
51
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:155
52
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:276
53
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:280
54
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:284
55
  msgid "Capabilities"
56
  msgstr ""
57
 
60
  msgstr ""
61
 
62
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:36
 
63
  #, php-format
64
  msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
65
  msgstr ""
66
 
67
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:61
 
68
  msgid "Roles and Capabilities"
69
  msgstr ""
70
 
71
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:70
 
72
  #, php-format
73
  msgid "Capabilities for %s"
74
  msgstr ""
75
 
76
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:73
77
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1017
 
 
78
  msgid "Save Changes"
79
  msgstr ""
80
 
81
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:82
82
+ msgid "<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation."
 
83
  msgstr ""
84
 
85
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:84
 
86
  #, php-format
87
  msgid "Thanks for using the %1$sPublishPress%2$s family of professional publishing tools."
88
  msgstr ""
89
 
90
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:110
91
+ msgid "PressPermit Pro"
92
+ msgstr ""
93
+
94
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:112
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:116
 
99
  msgid "Assign standard WP roles supplementally for a specific post type"
100
  msgstr ""
101
 
102
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:120
 
103
  msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
104
  msgstr ""
105
 
106
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:124
 
107
  msgid "Customize reading permissions per-category or per-post"
108
  msgstr ""
109
 
110
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:128
 
111
  msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
112
  msgstr ""
113
 
114
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:132
 
115
  msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
116
  msgstr ""
117
 
118
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:136
 
119
  msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
120
  msgstr ""
121
 
122
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:140
 
123
  msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
124
  msgstr ""
125
 
126
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:144
 
127
  msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
128
  msgstr ""
129
 
130
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:148
 
131
  msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
132
  msgstr ""
133
 
134
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:152
 
135
  msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
136
  msgstr ""
137
 
138
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:156
 
139
  msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
140
  msgstr ""
141
 
142
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:160
 
143
  msgid "Member support forum"
144
  msgstr ""
145
 
146
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:167
 
147
  #, php-format
148
  msgid "%1$sgrab%2$s %3$s"
149
  msgstr ""
150
 
151
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:167
 
152
  #, php-format
153
  msgid "%s (free install)"
154
  msgstr ""
155
 
156
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:169
 
157
  #, php-format
158
  msgid "%1$sbuy%2$s %3$s"
159
  msgstr ""
160
 
161
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:169
 
162
  #, php-format
163
  msgid "%s info/purchase"
164
  msgstr ""
165
 
166
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:245
 
167
  msgid "&nbsp;"
168
  msgstr ""
169
 
170
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:246
 
171
  msgid "Reading"
172
  msgstr ""
173
 
174
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:247
 
175
  msgid "Editing Capabilities"
176
  msgstr ""
177
 
178
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:248
 
179
  msgid "Deletion Capabilities"
180
  msgstr ""
181
 
182
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:252
 
183
  msgid "can read posts which are currently published with private visibility"
184
  msgstr ""
185
 
186
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:253
 
187
  msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
188
  msgstr ""
189
 
190
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:254
 
191
  msgid "can edit posts which were created by other users"
192
  msgstr ""
193
 
194
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:255
 
195
  msgid "can edit posts which are currently published"
196
  msgstr ""
197
 
198
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:256
 
199
  msgid "can edit posts which are currently published with private visibility"
200
  msgstr ""
201
 
202
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:257
 
203
  msgid "can make a post publicly visible"
204
  msgstr ""
205
 
206
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:258
 
207
  msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
208
  msgstr ""
209
 
210
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:259
 
211
  msgid "can delete posts which were created by other users"
212
  msgstr ""
213
 
214
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:260
 
215
  msgid "can delete posts which are currently published"
216
  msgstr ""
217
 
218
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:261
 
219
  msgid "can delete posts which are currently published with private visibility"
220
  msgstr ""
221
 
222
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:393
223
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:493
224
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:744
225
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:837
226
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:934
 
227
  #, php-format
228
  msgid "%s: assigned by Permission Group"
229
  msgstr ""
230
 
231
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:408
 
232
  #, php-format
233
  msgid "shared capability: %s"
234
  msgstr ""
235
 
236
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:470
 
237
  msgid "Other WordPress Core Capabilities"
238
  msgstr ""
239
 
240
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:512
 
241
  msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
242
  msgstr ""
243
 
244
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:555
245
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:783
246
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:890
247
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:977
248
  msgid "check/uncheck all"
249
  msgstr ""
250
 
251
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:555
252
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:783
253
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:890
254
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:977
255
  msgid "negate all (storing as disabled capabilities)"
256
  msgstr ""
257
 
258
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:555
259
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:783
260
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:890
261
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:977
262
  msgid "negate none (add/remove all capabilities normally)"
263
  msgstr ""
264
 
265
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:718
266
+ #, php-format
267
+ msgid "%s Capabilities"
268
+ msgstr ""
269
+
270
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:791
271
  msgid "Additional Capabilities"
272
  msgstr ""
273
 
274
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:899
275
+ msgid "Meta capabilities are used in code as placeholders for other capabilities. Assiging to a role has no effect."
276
+ msgstr ""
277
+
278
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:900
279
+ msgid "Invalid Capabilities"
280
+ msgstr ""
281
+
282
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:990
283
+ msgid "Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities."
284
+ msgstr ""
285
+
286
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:991
287
+ msgid "Role Level:"
288
  msgstr ""
289
 
290
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1001
 
291
  msgid "Note: Underscores replace spaces in stored capability name (\"edit users\" => \"edit_users\")."
292
  msgstr ""
293
 
294
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1020
 
295
  msgid "Delete this role"
296
  msgstr ""
297
 
298
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1020
 
299
  #, php-format
300
  msgid ""
301
  "You are about to delete the %s role.\n"
302
+ "\n"
303
  " 'Cancel' to stop, 'OK' to delete."
304
  msgstr ""
305
 
306
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1020
 
307
  msgid "Delete Role"
308
  msgstr ""
309
 
310
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1027
 
311
  msgid "Select New Role"
312
  msgstr ""
313
 
314
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1035
 
315
  msgid "Change"
316
  msgstr ""
317
 
318
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1048
 
319
  msgid "Create New Role"
320
  msgstr ""
321
 
322
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1051
323
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1067
 
 
324
  msgid "Role Name"
325
  msgstr ""
326
 
327
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1054
328
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1070
 
 
 
329
  msgid "Make role available for supplemental assignment to Permission Groups only"
330
  msgstr ""
331
 
332
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1054
333
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1070
 
 
334
  msgid "hidden"
335
  msgstr ""
336
 
337
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1058
 
338
  msgid "Create"
339
  msgstr ""
340
 
341
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1064
 
342
  msgid "Copy this role to"
343
  msgstr ""
344
 
345
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1074
 
346
  msgid "Copy"
347
  msgstr ""
348
 
349
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1080
 
350
  msgid "Add Capability"
351
  msgstr ""
352
 
353
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1083
 
354
  msgid "Add to role"
355
  msgstr ""
356
 
357
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1088
 
358
  msgid "Backup Tool"
359
  msgstr ""
360
 
361
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1090
 
362
  msgid "Backup / Restore Roles"
363
  msgstr ""
364
 
365
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1095
 
366
  msgid "Related Permissions Plugins"
367
  msgstr ""
368
 
369
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1098
370
+ msgid "Multiple Authors"
371
+ msgstr ""
372
+
373
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1101
374
+ msgid "PressPermit"
375
+ msgstr ""
376
+
377
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1107
378
  msgid "PublishPress"
379
  msgstr ""
380
 
381
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1112
382
+ msgid "PublishPress Revisions"
 
383
  msgstr ""
384
 
385
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1114
386
+ msgid "Help / Contact Form"
 
387
  msgstr ""
388
 
389
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1147
 
390
  msgid "Create this role definition in new (future) sites"
391
  msgstr ""
392
 
393
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1147
 
394
  msgid "include in new sites"
395
  msgstr ""
396
 
397
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1150
 
398
  msgid "Copy / update this role definition to all sites now"
399
  msgstr ""
400
 
401
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1150
 
402
  msgid "sync role to all sites now"
403
  msgstr ""
404
 
405
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1169
406
+ #, php-format
407
+ msgid "If you like %s, please leave us a %s rating. Thank you!"
408
+ msgstr ""
409
+
410
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1180
411
+ msgid "About Capability Manager Enhanced"
412
+ msgstr ""
413
+
414
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1180
415
+ msgid "About"
416
+ msgstr ""
417
+
418
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1182
419
+ msgid "Capability Manager Enhanced Documentation"
420
+ msgstr ""
421
+
422
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1182
423
+ msgid "Documentation"
424
+ msgstr ""
425
+
426
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1184
427
+ msgid "Contact the PublishPress team"
428
+ msgstr ""
429
+
430
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:1184
431
+ msgid "Contact"
432
+ msgstr ""
433
+
434
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:9
435
  msgid "You do not have permission to restore roles."
436
  msgstr ""
568
  msgid "Add New"
569
  msgstr ""
570
 
571
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/filters.php:179
572
+ msgid "Edit Roles"
573
+ msgstr ""
574
+
575
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:16
576
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:29
577
  msgid "New role created."
598
  msgid "Bad form received."
599
  msgstr ""
600
 
601
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:210
602
  msgid "You cannot remove Manage Capabilities from Administrators"
603
  msgstr ""
604
 
605
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:320
606
  #, php-format
607
  msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
608
  msgstr ""
609
 
610
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:367
611
  #, php-format
612
  msgid "Role has been deleted. %1$d users moved to default role %2$s."
613
  msgstr ""
614
 
615
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:164
616
  msgid "Explicity negate this capability by storing as disabled"
617
  msgstr ""
618
 
619
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:165
620
  msgid "Explicitly negate these capabilities by storing as disabled"
621
  msgstr ""
622
 
623
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:166
624
  msgid "Post type registration does not define this capability distinctly"
625
  msgstr ""
626
 
627
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:167
628
  msgid "This capability is explicitly negated. Click to add/remove normally."
629
  msgstr ""
630
 
631
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:168
632
  msgid "Add or remove this capability from the WordPress role"
633
  msgstr ""
634
 
635
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:169
636
  msgid "Add or remove capability from the role normally"
637
  msgstr ""
638
 
639
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:379
640
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:420
641
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:583
642
  msgid "What do you think you're doing?!?"
643
  msgstr ""
644
 
645
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:463
646
  msgid "Bad form Received"
647
  msgstr ""
648
 
649
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:44
650
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:44
651
  #, php-format
652
  msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
653
  msgstr ""
654
 
655
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:46
656
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:46
657
  #, php-format
658
  msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
659
  msgstr ""
660
 
661
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:51
662
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:51
663
  #, php-format
664
  msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
665
  msgstr ""
666
 
667
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:53
668
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:53
669
  #, php-format
670
  msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
671
  msgstr ""
672
 
673
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:61
674
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:61
675
  #, php-format
676
  msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
677
  msgstr ""
678
 
679
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:63
680
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:63
681
  msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
682
  msgstr ""
683
 
684
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:66
685
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:66
686
  msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
687
  msgstr ""
688
 
689
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:86
690
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:86
691
  msgid "hidden role"
692
  msgstr ""
693
 
694
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:97
695
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:97
696
  msgid "Type-Specific Capabilities"
697
  msgstr ""
698
 
699
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:100
700
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:100
701
  msgid "Ensure permissions can be controlled separately from other post types."
702
  msgstr ""
703
 
704
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
705
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:155
706
  msgid "Make selected post types require a different capability to add new posts."
707
  msgstr ""
708
 
709
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
710
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:155
711
  msgid "Use create_posts capability"
712
  msgstr ""
713
 
714
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:160
715
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:221
716
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:277
717
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:160
718
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:221
719
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:277
720
  msgid "Update"
721
  msgstr ""
722
 
723
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:170
724
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:170
725
  msgid "Taxonomy-Specific Capabilities"
726
  msgstr ""
727
 
728
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:173
729
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:173
730
  msgid "Ensure permissions can be controlled separately from other taxonomies."
731
  msgstr ""
732
 
733
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:226
734
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:226
735
  msgid "Detailed Taxonomy Capabilities"
736
  msgstr ""
737
 
738
  #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:229
739
+ #: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/pp-ui.php:229
740
  msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
741
  msgstr ""
742
 
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Capability Manager Enhanced===
2
  Contributors: publishpress, kevinB, stevejburge, andergmartins
3
- Tags: role, capabilities, post types, taxonomies, editor, network, multisite
4
  Requires at least: 4.1
5
- Tested up to: 5.2
6
- Stable tag: 1.7.5
7
  License: GPLv3
8
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -15,44 +15,38 @@ Control permissions requirements for your post types, and assign those capabilit
15
 
16
  = Features: =
17
 
18
- * Create Roles
19
  * Manage Role Capabilities
20
- * Cause type-specific Capabilities to be required and applied for any Post Type
21
- * Cause distinct edit, delete and assign Capabilities to be required and applied for any Taxonomy
22
  * Some specialized support for WooCommerce Post Types
23
- * Supports negation: set any Capability to granted, not granted, or blocked
24
- * Integration with Press Permit and PublishPress for comprehensive publishing solutions
25
- * Copy any Role to all network sites
26
- * Mark any Role for auto-copy to future network sites
27
- * Backup and restore Roles and Capabilities to revert your last changes.
28
- * Revert Roles and Capabilities to WordPress defaults.
29
 
30
  Capability Manager Enhanced is professionally developed and supported by the experienced <a href="https://publishpress.com">PublishPress</a> team.
31
 
32
  It has been a reliable tool since 2012, when PublishPress team member Kevin Behrens forked it from Jordi Canals' abandoned Capability Manager plugin.
33
 
34
- For additional versatility and convenience, enjoy <a href="https://wordpress.org/plugins/press-permit-core">Press Permit</a> plugin integration. Capability Manager Enhanced will show which capabilities have been added indirectly (as a pre-defined subset) by supplemental Type-Specific Roles (Page Contributor, Media Author, Product Editor, etc.)
35
-
36
- Role management can also be delegated:
37
-
38
- * Only Users with 'manage_capabilities' can manage them. This Capability is created at install time and assigned to Administrators.
39
- * Administrator Role cannot be deleted.
40
- * Non-administrators can only manager Roles or Users with same or lower capabilities.
41
 
42
  == Screenshots ==
43
 
44
- 1. Users Menu
45
- 2. View or modify Capabilities for any Role
46
  3. Network: copy Role to existing or future Sites
47
  4. Role operations
48
- 5. Permissions Menu (Press Permit integration)
49
  6. Shading of Capabilities granted by supplemental Type-Specific Roles
50
- 7. Enforce Type-Specific Capabilities (Press Permit no longer required)
51
- 8. Backup / Restore tool
 
 
52
 
53
  == Frequently Asked Questions ==
54
 
55
- = How can I grant capabilities for a custom post type =
56
 
57
  The custom post type must be defined to impose type-specific capability requirements. This is normally done by setting the "capability type" property equal to the post type name.
58
 
@@ -60,18 +54,42 @@ The custom post type must be defined to impose type-specific capability requirem
60
 
61
  You may need to adjust your custom post type definition by enabling the map_meta_cap property. If you are calling register_post_type manually, just add this property to the options array.
62
 
63
- = Even after I added capabilities, WordPress is not working the way I want =
64
 
65
  Keep in mind that this plugin's main purpose is to expose switches (defined capabilities). The wiring of those switches is up to the WordPress core or other plugins. If granting or removing a capability does not cause the expected results, your issue is probably with the other package. With that context in mind, you are still welcome to <a href="https://publishpress.com/contact/">contact us</a> about it.
66
 
 
 
 
 
67
  = Where can I find more information about this plugin, usage and support ? =
68
 
69
- * Feel free to <a href="https://publishpress.com/contact/">submit a help ticket</a> if you can't find an answer in the documentation or forum here.
70
 
71
  == Changelog ==
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  = 1.7.5 - 24 May 2019 =
74
- * Fixed : Users' inclusion or non-inclusion in Authors dropdown was not updated based on role edit (non-zero level setting)
75
 
76
  = 1.7.4 - 1 May 2019 =
77
  * Fixed : On some sites, capabilities added dynamically by other code were forced into stored role definition (and could not be removed).
1
  === Capability Manager Enhanced===
2
  Contributors: publishpress, kevinB, stevejburge, andergmartins
3
+ Tags: role, capabilities, post types, taxonomies, editor, network, woocommerce
4
  Requires at least: 4.1
5
+ Tested up to: 5.3
6
+ Stable tag: 1.8.1
7
  License: GPLv3
8
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
9
 
15
 
16
  = Features: =
17
 
18
+ * Create or Copy Roles
19
  * Manage Role Capabilities
20
+ * Enable type-specific capability requirements and assignments for any Post Type
21
+ * Enable distinct edit, delete and assign capabilities for any Taxonomy
22
  * Some specialized support for WooCommerce Post Types
23
+ * Negation: any capability can be granted, not granted, or blocked
24
+ * Integration with PressPermit and PublishPress for comprehensive publishing solutions
25
+ * Network: Copy any role to all sites, or auto-copy to future sites
26
+ * Backup (automatic / manual) and restore roles and capabilities to revert your changes
 
 
27
 
28
  Capability Manager Enhanced is professionally developed and supported by the experienced <a href="https://publishpress.com">PublishPress</a> team.
29
 
30
  It has been a reliable tool since 2012, when PublishPress team member Kevin Behrens forked it from Jordi Canals' abandoned Capability Manager plugin.
31
 
32
+ For additional versatility and convenience, try <a href="https://wordpress.org/plugins/press-permit-core">PressPermit</a> plugin integration. Capabilities added indirectly by supplemental type-specific roles (Page Contributor, Product Editor, etc.) will be highlighted in the CME role editor.
 
 
 
 
 
 
33
 
34
  == Screenshots ==
35
 
36
+ 1. View or modify Capabilities for any Role
37
+ 2. Users Menu
38
  3. Network: copy Role to existing or future Sites
39
  4. Role operations
40
+ 5. Permissions Menu (PressPermit integration)
41
  6. Shading of Capabilities granted by supplemental Type-Specific Roles
42
+ 7. Enforce Type-Specific Capabilities
43
+ 8. Enforce Taxonomy-Specific Capabilities
44
+ 9. Detailed Taxonomy Capabilities
45
+ 10. Backup / Restore tool
46
 
47
  == Frequently Asked Questions ==
48
 
49
+ = How can I grant capabilities for a custom post type? =
50
 
51
  The custom post type must be defined to impose type-specific capability requirements. This is normally done by setting the "capability type" property equal to the post type name.
52
 
54
 
55
  You may need to adjust your custom post type definition by enabling the map_meta_cap property. If you are calling register_post_type manually, just add this property to the options array.
56
 
57
+ = Even after I added capabilities, WordPress is not working the way I want. =
58
 
59
  Keep in mind that this plugin's main purpose is to expose switches (defined capabilities). The wiring of those switches is up to the WordPress core or other plugins. If granting or removing a capability does not cause the expected results, your issue is probably with the other package. With that context in mind, you are still welcome to <a href="https://publishpress.com/contact/">contact us</a> about it.
60
 
61
+ = Can role management be delegated? =
62
+
63
+ Yes. Users with the 'manage_capabilities' capability can edit roles. This Capability is created at install time and assigned to Administrators. You can add it to any role, but non-administrators cannot manage roles or users that have a higher role level than their own.
64
+
65
  = Where can I find more information about this plugin, usage and support ? =
66
 
67
+ * Feel free to <a href="https://publishpress.com/contact/">submit a help ticket</a> if you can't find an answer in the <a href="https://publishpress.com/knowledge-base/how-to-use-capability-manager/">documentation</a>.
68
 
69
  == Changelog ==
70
 
71
+ = 1.8.2-beta =
72
+ * Change : Reinstate support for users who can edit_published_posts but not publish_posts (with correct status filtering)
73
+
74
+ = 1.8.1 - 25 Oct 2019 =
75
+ * Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save with incorrect post status (since 1.8)
76
+
77
+ = 1.8 - 24 Oct 2019 =
78
+ * Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in sections on role editor screen
79
+ * Feature : Plugin API - plugins can hook into "cme_plugin_capabilities" filter to register their capabilities
80
+ * Feature : Work around WordPress issue preventing users with edit_published_posts (but not publish_posts) capability from updating published posts (https://core.trac.wordpress.org/ticket/47443)
81
+ * Feature : Work around WordPress issue allowing users with edit_published_posts (but not publish_posts) to unpublish published posts
82
+ * Fixed : If a unique edit/delete capability is already defined, don't change the definition
83
+ * Fixed : Removed add_users from the Core WordPress Capabilities section because it is was replaced by promote_users
84
+ * Fixed : PHP Notices on Role Capabilities screen for undefined index, under some configurations
85
+ * Fixed : HTML validation errors on Manage Capabilities screen
86
+ * Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin Posts / Pages listing
87
+ * Change : Move Role Capabilities menu item to Permissions menu if PressPermit plugin is active (restoring previous behavior with Press Permit Core)
88
+ * Change : Edit Roles link in CME row of Plugins list
89
+ * Change : PublishPress icon, footer on Roles and Capabilities screen
90
+
91
  = 1.7.5 - 24 May 2019 =
92
+ * Fixed : Users' inclusion or non-inclusion in Authors dropdown was not updated based on role edit
93
 
94
  = 1.7.4 - 1 May 2019 =
95
  * Fixed : On some sites, capabilities added dynamically by other code were forced into stored role definition (and could not be removed).