Capability Manager Enhanced - Version 1.5

Version Description

  • Feature : Support negative capabilities (storage to wp_roles array with false value)
    • Feature : Multisite - Copy a role definition to all current sites on a network
    • Feature : Multisite - Copy a role definition to new (future) sites on a network
    • Feature : Backup / Restore tool requires "restore_roles" capability or super admin status
    • Fixed : Role reset to WP defaults did not work, caused a PHP error / white screen
    • Change : Clarified English captions on Backup Tool screen
    • Fixed : Term deletion capability was not included in taxonomies grid even if defined
    • Fixed : jQuery notices for deprecated methods on Edit Role screen
    • Compat : Press Permit - if a role is marked as hidden, also default it for use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated and Advanced Settings enabled)
    • Change : Press Permit promotional message includes link to display further info
Download this release

Release Info

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

Code changes from version 1.4.10 to 1.5

admin.css CHANGED
@@ -48,7 +48,7 @@ a.cap_type:hover {
48
49
ul.cme-listhoriz li {
50
text-align: center;
51
- padding-right: 2em;
52
}
53
54
ul.cme-listhoriz li table{
@@ -85,16 +85,92 @@ height: 2em;
85
}
86
87
table .cme-typecaps th {
88
- padding-left: 0.5em;
89
- padding-right: 0.5em;
90
}
91
92
- td.cap_yes {
93
color:green;font-weight:bold;
94
}
95
96
- td.cap_no {
97
- color:red;
98
}
99
100
#akmin input.button {
48
49
ul.cme-listhoriz li {
50
text-align: center;
51
+ padding-right: 1em;
52
}
53
54
ul.cme-listhoriz li table{
85
}
86
87
table .cme-typecaps th {
88
+ padding-left: 0.3em;
89
+ padding-right: 0.3em;
90
}
91
92
+ table.cme-typecaps span.cap-x {
93
+ display: none;
94
+ }
95
+
96
+ a.neg-cap, a.cap-on, a.type-on, a.neg-type-caps, a.cme-neg-all {
97
+ text-decoration: none;
98
+ }
99
+
100
+ span.cap-x, a.cme-neg-all {
101
+ color: red;
102
+ font-size: 1.5em;
103
+ padding-left: 1px;
104
+ padding-right: 1px;
105
+ vertical-align: middle;
106
+ }
107
+
108
+ a.cme-switch-all {
109
+ color: black;
110
+ font-size: 1.5em;
111
+ padding-right: 1px;
112
+ padding-right: 1px;
113
+ vertical-align: middle;
114
+ text-decoration: line-through;
115
+ }
116
+
117
+ td.cap-yes span {
118
color:green;font-weight:bold;
119
}
120
121
+ td.cap-no {
122
+ color:#777;
123
+ }
124
+
125
+ td.cap-neg label span {
126
+ color: red;
127
+ }
128
+
129
+ td.cap-neg input {
130
+ display:none;
131
+ }
132
+
133
+ td.cap-no span.cap-x, td.cap-yes span.cap-x {
134
+ display:none;
135
+ }
136
+
137
+ td.cap-neg span.cap-x {
138
+ display:inline;
139
+ }
140
+
141
+ td.cap-neg a.neg-cap {
142
+ display:none;
143
+ }
144
+
145
+ /*
146
+ span.cme-drop-cap {
147
+ color: #aaa;
148
+ }
149
+ */
150
+
151
+ td.cap-metagroup label span {
152
+ color: #080 !important;
153
+ }
154
+
155
+ td.cap-locked label input {
156
+ display: inline !important;
157
+ }
158
+
159
+ td.cap-locked a.neg-cap {
160
+ display: none !important;
161
+ }
162
+
163
+ a.type-off, a.neg-cap, a.cme-neg-all, a.neg-type-caps {
164
+ color: #800;
165
+ }
166
+
167
+ a.type-on, a.cap-on, a.cme-switch-all {
168
+ color: black;
169
+ }
170
+
171
+ input.cme-check-all, a.cme-neg-all {
172
+ margin-right: 10px;
173
+ padding-right: 10px;
174
}
175
176
#akmin input.button {
admin.dev.js ADDED
@@ -0,0 +1,69 @@
1
+ jQuery(document).ready( function($) {
2
+ $('a.neg-cap').attr('title',cmeAdmin.negationCaption);
3
+ $('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);
4
+ $('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);
5
+ $('a.normal-cap').attr('title',cmeAdmin.switchableCaption);
6
+ $('span.cap-x').attr('title',cmeAdmin.capNegated);
7
+ $('table.cme-checklist input[class!="cme-check-all"]').attr('title',cmeAdmin.chkCaption);
8
+
9
+ $('table.cme-checklist a.neg-cap').click( function(e) {
10
+ $(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
11
+
12
+ var cap_name_attr = $(this).parent().find('input[type="checkbox"]').attr('name');
13
+ $(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
14
+
15
+ return false;
16
+ });
17
+
18
+ //$('table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span').live( 'click', function(e) {
19
+ $(document).on( 'click', 'table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span', function(e) {
20
+ $(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');
21
+ $(this).parent().find('input[type="checkbox"]').prop('checked',false);
22
+ $(this).parent().find('input.cme-negation-input').remove();
23
+
24
+ return false;
25
+ });
26
+
27
+ $('input.cme-check-all').click( function(e) {
28
+ $(this).closest('table').find('input[type="checkbox"][disabled!="disabled"]:visible').prop('checked', $(this).is(":checked") );
29
+ });
30
+
31
+ $('a.cme-neg-all').click( function(e) {
32
+ $(this).closest('table').find('a.neg-cap:visible').click();
33
+ return false;
34
+ });
35
+
36
+ $('a.cme-switch-all').click( function(e) {
37
+ $(this).closest('table').find('td.cap-neg span').click();
38
+ return false;
39
+ });
40
+
41
+ $('table.cme-typecaps a.neg-type-caps').click( function(e) {
42
+ $(this).closest('tr').find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each( function(e) {
43
+ $(this).addClass('cap-neg');
44
+
45
+ var cap_name_attr = $(this).parent().find('input[type="checkbox"]').attr('name');
46
+ $(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');
47
+ });
48
+
49
+ return false;
50
+ });
51
+
52
+ //http://stackoverflow.com/users/803925/nbrooks
53
+ $('table.cme-typecaps th').click(function(){
54
+ var columnNo = $(this).index();
55
+
56
+ var check_val = ! $(this).prop('checked_all');
57
+
58
+ if ( $(this).hasClass('term-cap') )
59
+ var class_sel = '[class*="term-cap"]';
60
+ else
61
+ var class_sel = '[class*="post-cap"]';
62
+
63
+ $(this).closest("table")
64
+ .find("tr td" + class_sel + ":nth-child(" + (columnNo+1) + ') input[type="checkbox"]:visible')
65
+ .prop("checked", check_val);
66
+
67
+ $(this).prop('checked_all',check_val);
68
+ });
69
+ });
admin.js ADDED
@@ -0,0 +1,3 @@
1
+ jQuery(document).ready(function($){$('a.neg-cap').attr('title',cmeAdmin.negationCaption);$('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);$('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);$('a.normal-cap').attr('title',cmeAdmin.switchableCaption);$('span.cap-x').attr('title',cmeAdmin.capNegated);$('table.cme-checklist input[class!="cme-check-all"]').attr('title',cmeAdmin.chkCaption);$('table.cme-checklist a.neg-cap').click(function(e){$(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');var cap_name_attr=$(this).parent().find('input[type="checkbox"]').attr('name');$(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');return false;});$(document).on('click','table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span',function(e){$(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');$(this).parent().find('input[type="checkbox"]').prop('checked',false);$(this).parent().find('input.cme-negation-input').remove();return false;});$('input.cme-check-all').click(function(e){$(this).closest('table').find('input[type="checkbox"][disabled!="disabled"]:visible').prop('checked',$(this).is(":checked"));});$('a.cme-neg-all').click(function(e){$(this).closest('table').find('a.neg-cap:visible').click();return false;});$('a.cme-switch-all').click(function(e){$(this).closest('table').find('td.cap-neg span').click();return false;});$('table.cme-typecaps a.neg-type-caps').click(function(e){$(this).closest('tr').find('td[class!="cap-neg"]').filter('td[class!="cap-unreg"]').each(function(e){$(this).addClass('cap-neg');var cap_name_attr=$(this).parent().find('input[type="checkbox"]').attr('name');$(this).append('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');});return false;});$('table.cme-typecaps th').click(function(){var columnNo=$(this).index();var check_val=!$(this).prop('checked_all');if($(this).hasClass('term-cap'))
2
+ var class_sel='[class*="term-cap"]';else
3
+ var class_sel='[class*="post-cap"]';$(this).closest("table").find("tr td"+class_sel+":nth-child("+(columnNo+1)+') input[type="checkbox"]:visible').prop("checked",check_val);$(this).prop('checked_all',check_val);});});
capsman-enhanced.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Capability Manager Enhanced
4
Plugin URI: http://presspermit.com/capability-manager
5
Description: Manage WordPress role definitions. Organizes available capabilities by post type, status and source.
6
- Version: 1.4.10
7
Author: Jordi Canals, Kevin Behrens
8
Author URI: http://agapetry.net
9
*/
@@ -32,8 +32,8 @@ Author URI: http://agapetry.net
32
*/
33
34
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
35
- define( 'CAPSMAN_VERSION', '1.4.10' );
36
- define( 'CAPSMAN_ENH_VERSION', '1.4.10' );
37
}
38
39
if ( cme_is_plugin_active( 'capsman.php' ) ) {
@@ -41,6 +41,7 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
41
add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade" style="color: black">' . $message . '</div>\';'));
42
return;
43
} else {
44
define ( 'AK_CMAN_PATH', dirname(__FILE__) );
45
define ( 'AK_CMAN_LIB', AK_CMAN_PATH . '/includes' );
46
@@ -82,6 +83,10 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
82
include_once ( AK_CMAN_PATH . '/framework/loader.php' );
83
include ( AK_CMAN_LIB . '/manager.php' );
84
$capsman = new CapabilityManager(__FILE__, 'capsman');
85
} else {
86
load_plugin_textdomain('capsman', false, basename(dirname(__FILE__)) .'/lang');
87
add_action( 'admin_menu', 'cme_submenus' );
@@ -96,6 +101,12 @@ function _cme_act_pp_active() {
96
define( 'PP_ACTIVE', true );
97
}
98
99
// perf enchancement: display submenu links without loading framework and plugin code
100
function cme_submenus() {
101
if ( defined('PP_ACTIVE') ) { // Press Permit integrates into Permissions menu
@@ -105,7 +116,8 @@ function cme_submenus() {
105
add_users_page( __('Capability Manager', 'capsman'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc');
106
}
107
108
- add_management_page(__('Capability Manager', 'capsman'), __('Capability Manager', 'capsman'), 'manage_capabilities', 'capsman' . '-tool', 'cme_fakefunc');
109
}
110
111
function _cme_pp_menu() {
@@ -123,4 +135,18 @@ function cme_is_plugin_active($check_plugin_file) {
123
if ( false !== strpos($plugin_file, $check_plugin_file) )
124
return $plugin_file;
125
}
126
- }
3
Plugin Name: Capability Manager Enhanced
4
Plugin URI: http://presspermit.com/capability-manager
5
Description: Manage WordPress role definitions. Organizes available capabilities by post type, status and source.
6
+ Version: 1.5
7
Author: Jordi Canals, Kevin Behrens
8
Author URI: http://agapetry.net
9
*/
32
*/
33
34
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
35
+ define( 'CAPSMAN_VERSION', '1.5' );
36
+ define( 'CAPSMAN_ENH_VERSION', '1.5' );
37
}
38
39
if ( cme_is_plugin_active( 'capsman.php' ) ) {
41
add_action('admin_notices', create_function('', 'echo \'<div id="message" class="error fade" style="color: black">' . $message . '</div>\';'));
42
return;
43
} else {
44
+ define ( 'CME_FILE', __FILE__ );
45
define ( 'AK_CMAN_PATH', dirname(__FILE__) );
46
define ( 'AK_CMAN_LIB', AK_CMAN_PATH . '/includes' );
47
83
include_once ( AK_CMAN_PATH . '/framework/loader.php' );
84
include ( AK_CMAN_LIB . '/manager.php' );
85
$capsman = new CapabilityManager(__FILE__, 'capsman');
86
+
87
+ if ( isset($_REQUEST['page']) && ( 'capsman' == $_REQUEST['page'] ) ) {
88
+ add_action( 'admin_enqueue_scripts', '_cme_pp_scripts' );
89
+ }
90
} else {
91
load_plugin_textdomain('capsman', false, basename(dirname(__FILE__)) .'/lang');
92
add_action( 'admin_menu', 'cme_submenus' );
101
define( 'PP_ACTIVE', true );
102
}
103
104
+ function _cme_pp_scripts() {
105
+ wp_enqueue_style( 'plugin-install' );
106
+ wp_enqueue_script( 'plugin-install' );
107
+ add_thickbox();
108
+ }
109
+
110
// perf enchancement: display submenu links without loading framework and plugin code
111
function cme_submenus() {
112
if ( defined('PP_ACTIVE') ) { // Press Permit integrates into Permissions menu
116
add_users_page( __('Capability Manager', 'capsman'), $menu_caption, 'manage_capabilities', 'capsman', 'cme_fakefunc');
117
}
118
119
+ $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
120
+ add_management_page(__('Capability Manager', 'capsman'), __('Capability Manager', 'capsman'), $cap_name, 'capsman' . '-tool', 'cme_fakefunc');
121
}
122
123
function _cme_pp_menu() {
135
if ( false !== strpos($plugin_file, $check_plugin_file) )
136
return $plugin_file;
137
}
138
+ }
139
+
140
+ // if a role is marked as hidden, also default it for use by Press Permit as a Pattern Role (when PP Collaborative Editing is activated and Advanced Settings enabled)
141
+ function _cme_pp_default_pattern_role( $role ) {
142
+ if ( ! $pp_role_usage = get_option( 'pp_role_usage' ) )
143
+ $pp_role_usage = array();
144
+
145
+ if ( empty( $pp_role_usage[$role] ) ) {
146
+ $pp_role_usage[$role] = 'pattern';
147
+ update_option( 'pp_role_usage', $pp_role_usage );
148
+ }
149
+ }
150
+
151
+ if ( is_multisite() )
152
+ require_once ( AK_CMAN_PATH . '/includes/network.php' );
framework/classes/abstract/plugin.php CHANGED
@@ -212,6 +212,21 @@ abstract class akPluginAbstract
212
wp_register_style('ak_' . $this->ID . '_admin', $url, array('ak_framework_admin'), $this->version);
213
wp_enqueue_style('ak_' . $this->ID . '_admin');
214
}
215
}
216
217
/**
@@ -222,7 +237,7 @@ abstract class akPluginAbstract
222
*/
223
final private function loadModuleData ( $id )
224
{
225
- $this->mod_url = plugins_url() . '/' . basename(dirname($this->mod_file));
226
227
if ( ! isset($this->ID) )
228
$this->ID = ( empty($id) ) ? strtolower(basename($this->mod_file, '.php')) : trim($id) ;
212
wp_register_style('ak_' . $this->ID . '_admin', $url, array('ak_framework_admin'), $this->version);
213
wp_enqueue_style('ak_' . $this->ID . '_admin');
214
}
215
+
216
+ if ( file_exists(dirname($this->mod_file) . '/admin.js') ) {
217
+ $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
218
+ $url = $this->mod_url . "/admin{$suffix}.js";
219
+ wp_enqueue_script( 'cme_admin', $url, array('jquery'), CAPSMAN_VERSION, true );
220
+ wp_localize_script( 'cme_admin', 'cmeAdmin', array(
221
+ 'negationCaption' => __( 'Explicity negate this capability by storing as disabled', 'capsman' ),
222
+ 'typeCapsNegationCaption' => __( 'Explicitly negate these capabilities by storing as disabled', 'capsman' ),
223
+ 'typeCapUnregistered' => __( 'Post type registration does not define this capability distinctly', 'capsman' ),
224
+ 'capNegated' => __( 'This capability is explicitly negated. Click to add/remove normally.', 'capsman' ),
225
+ 'chkCaption' => __( 'Add or remove this capability from the WordPress role', 'capsman' ),
226
+ 'switchableCaption' => __( 'Add or remove capability from the role normally', 'capsman' ) )
227
+ );
228
+ }
229
+
230
}
231
232
/**
237
*/
238
final private function loadModuleData ( $id )
239
{
240
+ $this->mod_url = plugins_url( '', CME_FILE );
241
242
if ( ! isset($this->ID) )
243
$this->ID = ( empty($id) ) ? strtolower(basename($this->mod_file, '.php')) : trim($id) ;
framework/lib/formating.php CHANGED
@@ -42,3 +42,16 @@ function ak_admin_notify( $message = '' )
42
echo '<div id="message" class="updated fade"><p><strong>' . $message . '</strong></p></div>';
43
}
44
}
42
echo '<div id="message" class="updated fade"><p><strong>' . $message . '</strong></p></div>';
43
}
44
}
45
+
46
+ /**
47
+ * Displays admin ERRORS.
48
+ *
49
+ * @param $message Message to display.
50
+ * @return void
51
+ */
52
+ function ak_admin_error( $message )
53
+ {
54
+ if ( is_admin() ) {
55
+ echo '<div id="error" class="error"><p><strong>' . $message . '</strong></p></div>';
56
+ }
57
+ }
framework/lib/users.php CHANGED
@@ -69,7 +69,7 @@ function ak_level2caps( $level ) {
69
$level = min(10, intval($level));
70
71
for ( $i = $level; $i >= 0; $i--) {
72
- $caps["level_{$i}"] = "Level {$i}";
73
}
74
75
return $caps;
69
$level = min(10, intval($level));
70
71
for ( $i = $level; $i >= 0; $i--) {
72
+ $caps["level_{$i}"] = true;
73
}
74
75
return $caps;
framework/styles/admin.css CHANGED
@@ -117,13 +117,13 @@ table#akmin td.content {
117
118
table#akmin td.content dd {
119
margin: 0;
120
- padding: 10px 20px 10px 20px;
121
}
122
123
/* ====================================================== ADMIN SIDEBAR */
124
125
table#akmin td.sidebar {
126
- width: 275px;
127
padding: 0 0 0 8px;
128
}
129
117
118
table#akmin td.content dd {
119
margin: 0;
120
+ padding: 10px;
121
}
122
123
/* ====================================================== ADMIN SIDEBAR */
124
125
table#akmin td.sidebar {
126
+ width: 250px;
127
padding: 0 0 0 8px;
128
}
129
images/play.png ADDED
Binary file
images/pp-logo.png ADDED
Binary file
includes/admin.php CHANGED
@@ -35,7 +35,6 @@ if( defined('PP_ACTIVE') ) {
35
$pp_metagroup_caps = $pp_ui->get_metagroup_caps( $default );
36
} else
37
$pp_metagroup_caps = array();
38
-
39
?>
40
<div class="wrap">
41
<?php if( defined('PP_ACTIVE') ) :
@@ -60,15 +59,19 @@ if( defined('PP_ACTIVE') ) {
60
<dt><?php printf(__('Capabilities for %s', $this->ID), $roles[$default]); ?></dt>
61
<dd>
62
<div>
63
- <?php _e( 'Use this form to view and modify the capabilities WordPress natively associates with each role. Changes <strong>will remain in your database</strong> even if you deactivate the plugin.', $this->ID ); ?>
64
</div>
65
66
<?php
67
if ( defined( 'PP_ACTIVE' ) ) {
68
$pp_ui->show_capability_hints( $default );
69
} else {
70
- echo '<div>';
71
- _e( "Interested in further customizing editing or viewing access? Consider stepping up to <a href='#pp-more'>Press Permit</a>.", $this->ID );
72
echo '</div>';
73
?>
74
<script type="text/javascript">
@@ -85,50 +88,103 @@ if( defined('PP_ACTIVE') ) {
85
});
86
/* ]]> */
87
</script>
88
<?php
89
- echo '<br /><div style="display:none" id="pp_features"><ul class="ul-disc">';
90
- echo '<li>';
91
- _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", $this->ID );
92
- echo '</li>';
93
- echo '<li>';
94
- _e( "Supplemental per-type, per-category or per-page role assignments", $this->ID );
95
- echo '</li>';
96
- echo '<li>';
97
- _e( "Custom Visibility statuses (require read_member_posts, read_premium_posts, etc.)", $this->ID );
98
- echo '</li>';
99
- echo '<li>';
100
- _e( 'Custom Editability "statuses" - set alongside Visibility in Post and Category edit forms', $this->ID );
101
- echo '</li>';
102
- echo '<li>';
103
- _e( "Custom Moderation statuses, enabling access-limited three tier moderation (Pending / Approved / Published)", $this->ID );
104
- echo '</li>';
105
- echo '<li>';
106
- _e( "Grant Participant or Moderator access to specific bbPress forums or topics", $this->ID );
107
- echo '</li>';
108
- echo '<li>';
109
- _e( "Grant supplemental page or category access to all members of a BuddyPress group", $this->ID );
110
- echo '</li>';
111
- echo '<li>';
112
- _e( "WPML integration to mirror permissions to translations", $this->ID );
113
- echo '</li>';
114
- echo '<li>';
115
- _e( "Professional support available", $this->ID );
116
- echo '</li>';
117
- echo '</ul><div>';
118
- echo '<a href="http://presspermit.com">http://presspermit.com</a> &bull; <a href="#pp-hide">hide</a>';
119
echo '</div></div>';
120
}
121
122
if ( MULTISITE ) {
123
global $wp_roles;
124
- if ( method_exists( $wp_roles, 'reinit' ) )
125
$wp_roles->reinit();
126
}
127
128
global $capsman;
129
$capsman->reinstate_db_roles();
130
131
$current = get_role($default);
132
$rcaps = $current->capabilities;
133
134
// ========= Begin Kevin B mod ===========
@@ -141,9 +197,8 @@ if( defined('PP_ACTIVE') ) {
141
$defined['type'] = get_post_types( array( 'public' => true ), 'object' );
142
$defined['taxonomy'] = get_taxonomies( array( 'public' => true ), 'object' );
143
144
- $unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array() );
145
- $unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status' ) ); // avoid confusion with Edit Flow administrative taxonomy
146
-
147
/*
148
if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
149
$cap_properties[''] = array();
@@ -214,8 +269,8 @@ if( defined('PP_ACTIVE') ) {
214
);
215
$type_caps = array();
216
217
- // Press Permit grants attachment capabilities based on user's capabilities for the parent post
218
- if ( defined( 'PP_ACTIVE' ) || defined('SCOPER_VERSION') )
219
unset( $defined['type']['attachment'] );
220
221
echo '<ul class="cme-listhoriz">';
@@ -227,8 +282,21 @@ if( defined('PP_ACTIVE') ) {
227
echo '<table class="cme-typecaps">';
228
229
foreach( array_keys($defined) as $item_type ) {
230
- if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) )
231
- continue;
232
233
//if ( ! $cap_type ) {
234
@@ -245,7 +313,8 @@ if( defined('PP_ACTIVE') ) {
245
$prop = str_replace( '_terms', '', $prop );
246
$tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
247
$prop = str_replace( '_', '<br />', $prop );
248
- echo "<th $tip>";
249
echo ucwords($prop);
250
echo '</th>';
251
}
@@ -254,32 +323,39 @@ if( defined('PP_ACTIVE') ) {
254
if ( in_array( $key, $unfiltered[$item_type] ) )
255
continue;
256
257
- $row = '<tr>';
258
259
if ( $cap_type ) {
260
if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
261
continue;
262
263
- $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a></td>';
264
265
$display_row = ! empty($force_distinct_ui);
266
267
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
268
- $td_class = '';
269
$checkbox = '';
270
271
if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
272
|| ! in_array( $type_obj->cap->$prop, $default_caps )
273
|| ( ( 'manage_categories' == $type_obj->cap->$prop ) && ( 'manage_terms' == $prop ) && ( 'category' == $type_obj->name ) ) ) ) {
274
-
275
// if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
276
if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
277
&& ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
278
) {
279
$cap_name = $type_obj->cap->$prop;
280
281
if ( ! empty($pp_metagroup_caps[$cap_name]) )
282
- $td_class = 'class="cm-has-via-pp"';
283
284
if ( $is_administrator || current_user_can($cap_name) ) {
285
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
@@ -294,10 +370,23 @@ if( defined('PP_ACTIVE') ) {
294
$checkbox = '<input id=caps[' . $cap_name . '] type="checkbox" title="' . $title_text . '" name="caps[' . $cap_name . ']" value="1" ' . $checked . $disabled . ' />';
295
$type_caps [$cap_name] = true;
296
$display_row = true;
297
- }
298
- }
299
- }
300
- $row .= "<td $td_class>$checkbox</td>";
301
}
302
}
303
@@ -324,7 +413,7 @@ if( defined('PP_ACTIVE') ) {
324
jQuery(document).ready( function($) {
325
$('a[href="#toggle_type_caps"]').click( function() {
326
var chks = $(this).closest('tr').find('input');
327
- $(chks).attr( 'checked', ! $(chks).first().attr('checked') );
328
return false;
329
});
330
});
@@ -340,11 +429,11 @@ if( defined('PP_ACTIVE') ) {
340
ksort( $core_caps );
341
342
echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', $this->ID ) . '</h3>';
343
- echo '<table width="100%" class="form-table"><tr>';
344
345
346
$checks_per_row = get_option( 'cme_form-rows', 5 );
347
- $i = 0;
348
349
foreach( array_keys($core_caps) as $cap_name ) {
350
if ( ! $is_administrator && ! current_user_can($cap_name) )
@@ -355,7 +444,13 @@ if( defined('PP_ACTIVE') ) {
355
$i = 0;
356
}
357
358
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
359
$title_text = sprintf( __( '%s: assigned by Permission Group', 'pp' ), $cap_name );
360
} else {
361
$title_text = $cap_name;
@@ -363,23 +458,48 @@ if( defined('PP_ACTIVE') ) {
363
364
$disabled = '';
365
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
366
-
367
- $class = ( ! empty($rcaps[$cap_name]) || ! empty($pp_metagroup_caps[$cap_name]) ) ? 'cap_yes' : 'cap_no';
368
-
369
?>
370
- <td class="<?php echo $class; ?>"><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;?> />
371
<?php
372
echo str_replace( '_', ' ', $cap_name );
373
- echo '</td>';
374
- $i++;
375
}
376
377
- echo '</table>';
378
379
echo '<p>&nbsp;</p><h3>' . __( 'Additional Capabilities', $this->ID ) . '</h3>';
380
381
?>
382
- <table width='100%' class="form-table">
383
<tr>
384
<?php
385
$i = 0; $first_row = true;
@@ -402,9 +522,14 @@ if( defined('PP_ACTIVE') ) {
402
echo '</tr><tr>';
403
$i = 0; $first_row = false;
404
}
405
- $class = ( ! empty($rcaps[$cap_name]) || ! empty($pp_metagroup_caps[$cap_name]) ) ? 'cap_yes' : 'cap_no';
406
407
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
408
$title_text = sprintf( __( '%s: assigned by Permission Group', 'pp' ), $cap_name );
409
} else {
410
$title_text = $cap_name;
@@ -417,15 +542,22 @@ if( defined('PP_ACTIVE') ) {
417
if ( ! current_user_can('administrator') ) {
418
continue;
419
} elseif ( 'administrator' == $default ) {
420
$lock_manage_caps_capability = true;
421
$disabled = 'disabled="disabled"';
422
}
423
}
424
?>
425
- <td class="<?php echo $class; ?>"><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;?> />
426
- <?php
427
- echo $cap;
428
- ?></label></td>
429
<?php
430
$i++;
431
endforeach;
@@ -437,26 +569,36 @@ if( defined('PP_ACTIVE') ) {
437
if ( $i == $checks_per_row ) {
438
echo '</tr><tr>';
439
$i = 0;
440
- }
441
-
442
- $level = ak_caps2level($rcaps);
443
- ?>
444
- <td><?php _e('Level:', $this->ID) ;?><select name="level">
445
- <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
446
- <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
447
- <?php }
448
- ++$i;
449
-
450
if ( ! $first_row ) {
451
// Now close a wellformed table
452
for ( $i; $i < $checks_per_row; $i++ ){
453
echo '<td>&nbsp;</td>';
454
}
455
}
456
?>
457
</select>
458
-
459
- </tr>
460
</table>
461
462
<br />
@@ -472,6 +614,7 @@ if( defined('PP_ACTIVE') ) {
472
473
<?php
474
$support_pp_only_roles = ( defined('PP_ACTIVE') ) ? $pp_ui->pp_only_roles_ui( $default ) : false;
475
?>
476
477
<p class="submit">
@@ -486,6 +629,7 @@ if( defined('PP_ACTIVE') ) {
486
487
<br />
488
<?php agp_admin_footer(); ?>
489
490
</td>
491
<td class="sidebar">
@@ -511,7 +655,7 @@ if( defined('PP_ACTIVE') ) {
511
<p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Name of new role', $this->ID) ?>" />
512
513
<?php if( $support_pp_only_roles ) : ?>
514
- <label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permit Groups only', 'pp');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1" checked="checked"> <?php _e('supplemental', 'pp'); ?> </label>
515
<?php endif; ?>
516
517
<br />
@@ -527,7 +671,7 @@ if( defined('PP_ACTIVE') ) {
527
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Name of copied role', $this->ID) ?>" />
528
529
<?php if( $support_pp_only_roles ) : ?>
530
- <label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permit Groups only', 'pp');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1" checked="checked"> <?php _e('supplemental', 'pp'); ?> </label>
531
<?php endif; ?>
532
533
<br />
@@ -553,3 +697,32 @@ if( defined('PP_ACTIVE') ) {
553
</fieldset>
554
</form>
555
</div>
35
$pp_metagroup_caps = $pp_ui->get_metagroup_caps( $default );
36
} else
37
$pp_metagroup_caps = array();
38
?>
39
<div class="wrap">
40
<?php if( defined('PP_ACTIVE') ) :
59
<dt><?php printf(__('Capabilities for %s', $this->ID), $roles[$default]); ?></dt>
60
<dd>
61
<div>
62
+ <?php _e( 'View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin.', $this->ID ); ?>
63
</div>
64
65
<?php
66
if ( defined( 'PP_ACTIVE' ) ) {
67
$pp_ui->show_capability_hints( $default );
68
} else {
69
+ global $capsman;
70
+ $img_url = $capsman->mod_url . '/images/';
71
+ $lang_id = $this->ID;
72
+
73
+ echo '<div style="margin-top:5px">';
74
+ _e( "To further customize editing or viewing access, consider stepping up to <a href='#pp-more'>Press Permit</a>.", $this->ID );
75
echo '</div>';
76
?>
77
<script type="text/javascript">
88
});
89
/* ]]> */
90
</script>
91
+ <style>
92
+ #pp_features {display:none;border:1px solid #eee;padding:5px;text-align:center;min-width:600px}
93
+ div.pp-logo { text-align: center }
94
+ div.features-wrap { margin-left: auto; margin-right: auto; text-align: center; width: 540px; }
95
+ ul.pp-features { list-style: none; padding-top:10px; text-align:left; margin-left: auto }
96
+ ul.pp-features li:before { content: "\2713\0020"; }
97
+ ul.pp-features li { padding-bottom: 5px }
98
+ img.cme-play { margin-bottom: -3px; margin-left: 5px;}
99
+ </style>
100
+
101
+ <?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
102
+
103
+ <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">
104
+ <li>
105
+ <?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", $lang_id );?>
106
+ <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>
107
+
108
+ <li>
109
+ <?php _e( "Assign standard WP roles supplementally for a specific post type", $lang_id );?>
110
+ <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>
111
+
112
+ <li>
113
+ <?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", $lang_id );?>
114
+ <a href="http://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
115
+
116
+ <li>
117
+ <?php _e( "Customize reading permissions per-category or per-post", $lang_id );?>
118
+ <a href="http://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
119
+
120
+ <li>
121
+ <?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", $lang_id );?>
122
+ <a href="http://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
123
+
124
+ <li>
125
+ <?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", $lang_id );?>
126
+ <a href="http://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
127
+
128
+ <li>
129
+ <?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", $lang_id );?>
130
+ <a href="http://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
131
+
132
+ <li>
133
+ <?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", $lang_id );?>
134
+ <a href="http://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
135
+
136
+ <li>
137
+ <?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", $lang_id );?>
138
+ <a href="http://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
139
+
140
+ <li>
141
+ <?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", $lang_id );?>
142
+ <a href="http://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
143
+
144
+ <li>
145
+ <?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", $lang_id );?>
146
+ <a href="http://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
147
+
148
+ <li>
149
+ <?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", $lang_id );?>
150
+ </li>
151
+
152
+ <li>
153
+ <?php _e( "Member support forum", $lang_id );?>
154
+ </li>
155
+
156
+ </ul></div>
157
<?php
158
+ echo '<div>';
159
+ printf( __('%1$sgrab%2$s %3$s', 'capsman'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman'), 'Press Permit Core' ) . '">Press&nbsp;Permit&nbsp;Core</a></span>' );
160
+ echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
161
+ printf( __('%1$sbuy%2$s %3$s', 'capsman'), '<strong>', '</strong>', '<a href="http://presspermit.com" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman'), 'Press Permit Pro' ) . '">Press&nbsp;Permit&nbsp;Pro</a>' );
162
+ echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
163
+ echo '<a href="#pp-hide">hide</a>';
164
echo '</div></div>';
165
}
166
167
if ( MULTISITE ) {
168
global $wp_roles;
169
+ if ( method_exists( $wp_roles, 'reinit' ) ) {
170
+ global $wpdb;
171
+
172
+ if ( ! empty($_REQUEST['cme_net_sync_role'] ) ) {
173
+ switch_to_blog(1);
174
+ wp_cache_delete( $wpdb->prefix . 'user_roles', 'options' );
175
+ }
176
+
177
$wp_roles->reinit();
178
+ }
179
}
180
181
global $capsman;
182
$capsman->reinstate_db_roles();
183
184
$current = get_role($default);
185
+
186
+ //print_r($current);
187
+
188
$rcaps = $current->capabilities;
189
190
// ========= Begin Kevin B mod ===========
197
$defined['type'] = get_post_types( array( 'public' => true ), 'object' );
198
$defined['taxonomy'] = get_taxonomies( array( 'public' => true ), 'object' );
199
200
+ $unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array('forum','topic','reply') ); // bbPress' dynamic role def requires additional code to enforce stored caps
201
+ $unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
202
/*
203
if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
204
$cap_properties[''] = array();
269
);
270
$type_caps = array();
271
272
+ // Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
273
+ if ( defined('SCOPER_VERSION') || ( defined( 'PP_ACTIVE' ) && ! defined( 'PPC_VERSION' ) ) )
274
unset( $defined['type']['attachment'] );
275
276
echo '<ul class="cme-listhoriz">';
282
echo '<table class="cme-typecaps">';
283
284
foreach( array_keys($defined) as $item_type ) {
285
+ if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
286
+ if ( defined('SCOPER_VERSION') || defined('PP_ACTIVE') )
287
+ continue;
288
+
289
+ $any_term_deletion_caps = false;
290
+ foreach( array_keys($defined['taxonomy']) as $_tax ) {
291
+ if ( isset( $defined['taxonomy'][$_tax]->cap->delete_terms ) && ( 'manage_categories' != $defined['taxonomy'][$_tax]->cap->delete_terms ) && ! in_array( $_tax, $unfiltered['taxonomy'] ) ) {
292
+ $any_term_deletion_caps = true;
293
+ break;
294
+ }
295
+ }
296
+
297
+ if ( ! $any_term_deletion_caps )
298
+ continue;
299
+ }
300
301
//if ( ! $cap_type ) {
302
313
$prop = str_replace( '_terms', '', $prop );
314
$tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
315
$prop = str_replace( '_', '<br />', $prop );
316
+ $th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
317
+ echo "<th $tip{$th_class}>";
318
echo ucwords($prop);
319
echo '</th>';
320
}
323
if ( in_array( $key, $unfiltered[$item_type] ) )
324
continue;
325
326
+ $row = "<tr class='cme_type_{$key}'>";
327
328
if ( $cap_type ) {
329
if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
330
continue;
331
332
+ $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a>';
333
+ $row .= '<a href="#" class="neg-type-caps">&nbsp;x&nbsp;</a>';
334
+ $row .= '</td>';
335
336
$display_row = ! empty($force_distinct_ui);
337
338
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
339
+ $td_classes = array();
340
$checkbox = '';
341
342
if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
343
|| ! in_array( $type_obj->cap->$prop, $default_caps )
344
|| ( ( 'manage_categories' == $type_obj->cap->$prop ) && ( 'manage_terms' == $prop ) && ( 'category' == $type_obj->name ) ) ) ) {
345
+
346
// if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
347
if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
348
&& ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
349
) {
350
$cap_name = $type_obj->cap->$prop;
351
352
+ if ( 'taxonomy' == $item_type )
353
+ $td_classes []= "term-cap";
354
+ else
355
+ $td_classes []= "post-cap";
356
+
357
if ( ! empty($pp_metagroup_caps[$cap_name]) )
358
+ $td_classes []='cm-has-via-pp';
359
360
if ( $is_administrator || current_user_can($cap_name) ) {
361
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
370
$checkbox = '<input id=caps[' . $cap_name . '] type="checkbox" title="' . $title_text . '" name="caps[' . $cap_name . ']" value="1" ' . $checked . $disabled . ' />';
371
$type_caps [$cap_name] = true;
372
$display_row = true;
373
+ }
374
+ } else
375
+ $td_classes []= "cap-unreg";
376
+
377
+ if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) )
378
+ $td_classes []= "cap-neg";
379
+ } else
380
+ $td_classes []= "cap-unreg";
381
+
382
+ $td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
383
+
384
+ $row .= "<td $td_class><span class='cap-x'>X</span>$checkbox";
385
+
386
+ if ( false !== strpos( $td_class, 'cap-neg' ) )
387
+ $row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
388
+
389
+ $row .= "</td>";
390
}
391
}
392
413
jQuery(document).ready( function($) {
414
$('a[href="#toggle_type_caps"]').click( function() {
415
var chks = $(this).closest('tr').find('input');
416
+ $(chks).prop( 'checked', ! $(chks).first().is(':checked') );
417
return false;
418
});
419
});
429
ksort( $core_caps );
430
431
echo '<p>&nbsp;</p><h3>' . __( 'Other WordPress Core Capabilities', $this->ID ) . '</h3>';
432
+ echo '<table width="100%" class="form-table cme-checklist"><tr>';
433
434
435
$checks_per_row = get_option( 'cme_form-rows', 5 );
436
+ $i = 0; $first_row = true;
437
438
foreach( array_keys($core_caps) as $cap_name ) {
439
if ( ! $is_administrator && ! current_user_can($cap_name) )
444
$i = 0;
445
}
446
447
+ if ( ! isset( $rcaps[$cap_name] ) )
448
+ $class = 'cap-no';
449
+ else
450
+ $class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
451
+
452
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
453
+ $class .= ' cap-metagroup';
454
$title_text = sprintf( __( '%s: assigned by Permission Group', 'pp' ), $cap_name );
455
} else {
456
$title_text = $cap_name;
458
459
$disabled = '';
460
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
461
?>
462
+ <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;?> />
463
+ <span>
464
<?php
465
echo str_replace( '_', ' ', $cap_name );
466
+ ?>
467
+ </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
468
+ <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
469
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
470
+ <?php endif; ?>
471
+ </td>
472
+
473
+ <?php
474
+ ++$i;
475
+ }
476
+
477
+ if ( $i == $checks_per_row ) {
478
+ echo '</tr><tr>';
479
+ $i = 0;
480
+ } elseif ( ! $first_row ) {
481
+ // Now close a wellformed table
482
+ for ( $i; $i < $checks_per_row; $i++ ){
483
+ echo '<td>&nbsp;</td>';
484
+ }
485
+ echo '</tr>';
486
}
487
+ ?>
488
+
489
+ <tr class="cme-bulk-select">
490
+ <td colspan="<?php echo $checks_per_row;?>">
491
+ <span style="float:right">
492
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman');?>">X</a>
493
+ </span>
494
+ </td></tr>
495
496
+ </table>
497
498
+ <?php
499
echo '<p>&nbsp;</p><h3>' . __( 'Additional Capabilities', $this->ID ) . '</h3>';
500
501
?>
502
+ <table width='100%' class="form-table cme-checklist">
503
<tr>
504
<?php
505
$i = 0; $first_row = true;
522
echo '</tr><tr>';
523
$i = 0; $first_row = false;
524
}
525
+
526
+ if ( ! isset( $rcaps[$cap_name] ) )
527
+ $class = 'cap-no';
528
+ else
529
+ $class = ( $rcaps[$cap_name] ) ? 'cap-yes' : 'cap-neg';
530
531
if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
532
+ $class .= ' cap-metagroup';
533
$title_text = sprintf( __( '%s: assigned by Permission Group', 'pp' ), $cap_name );
534
} else {
535
$title_text = $cap_name;
542
if ( ! current_user_can('administrator') ) {
543
continue;
544
} elseif ( 'administrator' == $default ) {
545
+ $class .= ' cap-locked';
546
$lock_manage_caps_capability = true;
547
$disabled = 'disabled="disabled"';
548
}
549
}
550
?>
551
+ <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;?> />
552
+ <span>
553
+ <?php
554
+ echo str_replace( '_', ' ', $cap );
555
+ ?>
556
+ </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
557
+ <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
558
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
559
+ <?php endif; ?>
560
+ </td>
561
<?php
562
$i++;
563
endforeach;
569
if ( $i == $checks_per_row ) {
570
echo '</tr><tr>';
571
$i = 0;
572
+ } else {
573
if ( ! $first_row ) {
574
// Now close a wellformed table
575
for ( $i; $i < $checks_per_row; $i++ ){
576
echo '<td>&nbsp;</td>';
577
}
578
+ echo '</tr>';
579
}
580
+ }
581
+ ?>
582
+
583
+ <tr class="cme-bulk-select">
584
+ <td colspan="<?php echo $checks_per_row;?>">
585
+ <span>
586
+ <?php
587
+ $level = ak_caps2level($rcaps);
588
+ ?>
589
+ <?php _e('Level:', $this->ID) ;?><select name="level">
590
+ <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
591
+ <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
592
+ <?php }
593
?>
594
</select>
595
+ </span>
596
+
597
+ <span style="float:right">
598
+ <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman');?>">X</a>
599
+ </span>
600
+ </td></tr>
601
+
602
</table>
603
604
<br />
614
615
<?php
616
$support_pp_only_roles = ( defined('PP_ACTIVE') ) ? $pp_ui->pp_only_roles_ui( $default ) : false;
617
+ cme_network_role_ui( $default );
618
?>
619
620
<p class="submit">
629
630
<br />
631
<?php agp_admin_footer(); ?>
632
+ <br />
633
634
</td>
635
<td class="sidebar">
655
<p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Name of new role', $this->ID) ?>" />
656
657
<?php if( $support_pp_only_roles ) : ?>
658
+ <label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'pp');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'pp'); ?> </label>
659
<?php endif; ?>
660
661
<br />
671
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Name of copied role', $this->ID) ?>" />
672
673
<?php if( $support_pp_only_roles ) : ?>
674
+ <label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'pp');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1"> <?php _e('hidden', 'pp'); ?> </label>
675
<?php endif; ?>
676
677
<br />
697
</fieldset>
698
</form>
699
</div>
700
+
701
+ <?php
702
+ function cme_network_role_ui( $default ) {
703
+ if ( ! is_multisite() || ! is_super_admin() || ( 1 != get_current_blog_id() ) )
704
+ return false;
705
+ ?>
706
+
707
+ <div style="float:right;margin:left:10px;margin-right:10px">
708
+ <?php
709
+ if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
710
+ $autocreate_roles = array();
711
+
712
+ $checked = ( in_array( $default, $autocreate_roles ) ) ? 'checked="checked"': '';
713
+ ?>
714
+ <div style="margin-bottom: 5px">
715
+ <label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" value="1" <?php echo $checked;?>> <?php _e('include in new sites', 'capsman'); ?> </label>
716
+ </div>
717
+ <div>
718
+ <label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" value="1"> <?php _e('sync role to all sites now', 'capsman'); ?> </label>
719
+ </div>
720
+ </div>
721
+ <?php
722
+ return true;
723
+ }
724
+
725
+ function cme_plugin_info_url( $plugin_slug ) {
726
+ return self_admin_url( "plugin-install.php?tab=plugin-information&plugin=$plugin_slug&TB_iframe=true&width=640&height=678" );
727
+ }
728
+ ?>
includes/backup-handler.php CHANGED
@@ -5,6 +5,9 @@ class Capsman_BackupHandler
5
var $cm;
6
7
function __construct( $manager_obj ) {
8
$this->cm = $manager_obj;
9
}
10
@@ -57,7 +60,8 @@ class Capsman_BackupHandler
57
return;
58
}
59
60
- $roles = array_keys($this->cm->roles);
61
foreach ( $roles as $role) {
62
remove_role($role);
63
}
5
var $cm;
6
7
function __construct( $manager_obj ) {
8
+ if ( ! is_super_admin() && ! current_user_can( 'restore_roles' ) )
9
+ wp_die( __( 'You do not have permission to restore roles.', 'capsman' ) );
10
+
11
$this->cm = $manager_obj;
12
}
13
60
return;
61
}
62
63
+ $roles = array_keys( ak_get_roles(true) );
64
+
65
foreach ( $roles as $role) {
66
remove_role($role);
67
}
includes/backup.php CHANGED
@@ -57,11 +57,13 @@
57
</dl>
58
59
<dl>
60
- <dt><?php _e('Reset WordPress Defaults', $this->ID)?></dt>
61
<dd>
62
- <p style="text-align:center;"><strong><span style="color:red;"><?php _e('WARNING:', $this->ID); ?></span> <?php _e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', $this->ID); ?></strong><br />
63
- <?php _e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', $this->ID)?><br />
64
- <strong><?php _e('It is recommended to use this only as a last resource!')?></strong></p>
65
<p style="text-align:center;"><a class="ak-delete" title="<?php echo esc_attr(__('Reset Roles and Capabilities to WordPress defaults', $this->ID)) ?>" href="<?php echo wp_nonce_url("tools.php?page={$this->ID}-tool&amp;action=reset-defaults", 'capsman-reset-defaults'); ?>" onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", $this->ID)); ?>') ) { return true;}return false;"><?php _e('Reset to WordPress defaults', $this->ID)?></a>
66
67
</dd>
57
</dl>
58
59
<dl>
60
+ <dt><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reset WordPress Defaults', $this->ID); else echo 'Reset Roles to WordPress Defaults';?></dt>
61
<dd>
62
+ <p style="text-align:center;"><strong><span style="color:red;"><?php _e('WARNING:', $this->ID); ?></span> <?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', $this->ID); else echo 'This will delete and/or modify stored role definitions.'; ?></strong><br />
63
+ <br />
64
+ <?php
65
+ _e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', $this->ID)?><br />
66
+ <strong><?php if ( defined('WPLANG') && WPLANG && ( 'en_EN' != WPLANG ) ) _e('It is recommended to use this only as a last resource!'); else echo('It is recommended to use this only as a last resort!');?></strong></p>
67
<p style="text-align:center;"><a class="ak-delete" title="<?php echo esc_attr(__('Reset Roles and Capabilities to WordPress defaults', $this->ID)) ?>" href="<?php echo wp_nonce_url("tools.php?page={$this->ID}-tool&amp;action=reset-defaults", 'capsman-reset-defaults'); ?>" onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", $this->ID)); ?>') ) { return true;}return false;"><?php _e('Reset to WordPress defaults', $this->ID)?></a>
68
69
</dd>
includes/handler.php CHANGED
@@ -52,7 +52,7 @@ class CapsmanHandler
52
if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
53
$customized_roles = array();
54
55
- $customized_roles[$post['role']] = (object) array( 'caps' => array_map( 'intval', $post['caps'] ), 'plugins' => $plugins );
56
update_option( 'pp_customized_roles', $customized_roles );
57
58
global $wpdb;
@@ -104,6 +104,7 @@ class CapsmanHandler
104
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
105
$pp_only[]= $newrole;
106
pp_update_option( 'supplemental_role_defs', $pp_only );
107
pp_refresh_options();
108
}
109
}
@@ -185,13 +186,21 @@ class CapsmanHandler
185
$stored_role_caps = ( ! empty($role->capabilities) && is_array($role->capabilities) ) ? array_intersect( $role->capabilities, array(true, 1) ) : array();
186
187
$old_caps = array_intersect_key( $stored_role_caps, $this->cm->capabilities);
188
- $new_caps = ( is_array($caps) ) ? array_map('intval', $caps) : array();
189
$new_caps = array_merge($new_caps, ak_level2caps($level));
190
191
// Find caps to add and remove
192
$add_caps = array_diff_key($new_caps, $old_caps);
193
$del_caps = array_diff_key($old_caps, $new_caps);
194
195
if ( ! $is_administrator = current_user_can('administrator') ) {
196
unset($add_caps['manage_capabilities']);
197
unset($del_caps['manage_capabilities']);
@@ -204,7 +213,7 @@ class CapsmanHandler
204
// Add new capabilities to role
205
foreach ( $add_caps as $cap => $grant ) {
206
if ( $is_administrator || current_user_can($cap) )
207
- $role->add_cap($cap);
208
}
209
210
// Remove capabilities from role
@@ -212,6 +221,74 @@ class CapsmanHandler
212
if ( $is_administrator || current_user_can($cap) )
213
$role->remove_cap($cap);
214
}
215
}
216
217
@@ -266,4 +343,9 @@ class CapsmanHandler
266
}
267
}
268
269
?>
52
if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
53
$customized_roles = array();
54
55
+ $customized_roles[$post['role']] = (object) array( 'caps' => array_map( 'boolval', $post['caps'] ), 'plugins' => $plugins );
56
update_option( 'pp_customized_roles', $customized_roles );
57
58
global $wpdb;
104
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
105
$pp_only[]= $newrole;
106
pp_update_option( 'supplemental_role_defs', $pp_only );
107
+ _cme_pp_default_pattern_role( $newrole );
108
pp_refresh_options();
109
}
110
}
186
$stored_role_caps = ( ! empty($role->capabilities) && is_array($role->capabilities) ) ? array_intersect( $role->capabilities, array(true, 1) ) : array();
187
188
$old_caps = array_intersect_key( $stored_role_caps, $this->cm->capabilities);
189
+ $new_caps = ( is_array($caps) ) ? array_map('boolval', $caps) : array();
190
$new_caps = array_merge($new_caps, ak_level2caps($level));
191
192
// Find caps to add and remove
193
$add_caps = array_diff_key($new_caps, $old_caps);
194
$del_caps = array_diff_key($old_caps, $new_caps);
195
196
+ $changed_caps = array();
197
+ foreach( array_intersect_key( $new_caps, $old_caps ) as $cap_name => $cap_val ) {
198
+ if ( $new_caps[$cap_name] != $old_caps[$cap_name] )
199
+ $changed_caps[$cap_name] = $cap_val;
200
+ }
201
+
202
+ $add_caps = array_merge( $add_caps, $changed_caps );
203
+
204
if ( ! $is_administrator = current_user_can('administrator') ) {
205
unset($add_caps['manage_capabilities']);
206
unset($del_caps['manage_capabilities']);
213
// Add new capabilities to role
214
foreach ( $add_caps as $cap => $grant ) {
215
if ( $is_administrator || current_user_can($cap) )
216
+ $role->add_cap( $cap, $grant );
217
}
218
219
// Remove capabilities from role
221
if ( $is_administrator || current_user_can($cap) )
222
$role->remove_cap($cap);
223
}
224
+
225
+ if ( is_multisite() && is_super_admin() && ( 1 == get_current_blog_id() ) ) {
226
+ if ( ! $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) )
227
+ $autocreate_roles = array();
228
+
229
+ $this_role_autocreate = ! empty($_REQUEST['cme_autocreate_role']);
230
+
231
+ if ( $this_role_autocreate && ! in_array( $role_name, $autocreate_roles ) ) {
232
+ $autocreate_roles []= $role_name;
233
+ update_site_option( 'cme_autocreate_roles', $autocreate_roles );
234
+ }
235
+
236
+ if ( ! $this_role_autocreate && in_array( $role_name, $autocreate_roles ) ) {
237
+ $autocreate_roles = array_diff( $autocreate_roles, array( $role_name ) );
238
+ update_site_option( 'cme_autocreate_roles', $autocreate_roles );
239
+ }
240
+
241
+ if ( ! empty($_REQUEST['cme_net_sync_role']) ) {
242
+ // loop through all sites on network, creating or updating role def
243
+
244
+ global $wpdb, $wp_roles, $blog_id;
245
+ $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs ORDER BY blog_id" );
246
+ $orig_blog_id = $blog_id;
247
+
248
+ $role_caption = $wp_roles->role_names[$role_name];
249
+
250
+ $new_caps = ( is_array($caps) ) ? array_map('boolval', $caps) : array();
251
+ $new_caps = array_merge($new_caps, ak_level2caps($level) );
252
+
253
+ $admin_role = $wp_roles->get_role('administrator');
254
+ $main_admin_caps = array_merge( $admin_role->capabilities, ak_level2caps(10) );
255
+
256
+ foreach ( $blog_ids as $id ) {
257
+ if ( 1 == $id )
258
+ continue;
259
+
260
+ switch_to_blog( $id );
261
+ $wp_roles->reinit();
262
+
263
+ if ( $blog_role = $wp_roles->get_role( $role_name ) ) {
264
+ $stored_role_caps = ( ! empty($blog_role->capabilities) && is_array($blog_role->capabilities) ) ? array_intersect( $blog_role->capabilities, array(true, 1) ) : array();
265
+
266
+ $old_caps = array_intersect_key( $stored_role_caps, $this->cm->capabilities);
267
+
268
+ // Find caps to add and remove
269
+ $add_caps = array_diff_key($new_caps, $old_caps);
270
+ $del_caps = array_intersect_key( array_diff_key($old_caps, $new_caps), $main_admin_caps ); // don't mess with caps that are totally unused on main site
271
+
272
+ // Add new capabilities to role
273
+ foreach ( $add_caps as $cap => $grant ) {
274
+ $blog_role->add_cap( $cap, $grant );
275
+ }
276
+
277
+ // Remove capabilities from role
278
+ foreach ( $del_caps as $cap => $grant) {
279
+ $blog_role->remove_cap($cap);
280
+ }
281
+
282
+ } else {
283
+ $wp_roles->add_role( $role_name, $role_caption, $new_caps );
284
+ }
285
+
286
+ restore_current_blog();
287
+ }
288
+
289
+ $wp_roles->reinit();
290
+ }
291
+ } // endif multisite installation with super admin editing a main site role
292
}
293
294
343
}
344
}
345
346
+ if ( ! function_exists('boolval') ) {
347
+ function boolval( $val ) {
348
+ return (bool) $val;
349
+ }
350
+ }
351
?>
includes/manager.php CHANGED
@@ -177,7 +177,8 @@ class CapabilityManager extends akPluginAbstract
177
add_users_page( __('Capability Manager', $this->ID), __('Capabilities', $this->ID), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
178
}
179
180
- add_management_page(__('Capability Manager', $this->ID), __('Capability Manager', $this->ID), 'manage_capabilities', $this->ID . '-tool', array($this, 'backupTool'));
181
}
182
183
public function pp_menu() {
@@ -191,7 +192,7 @@ class CapabilityManager extends akPluginAbstract
191
*
192
* @return void
193
*/
194
- private function setAdminCapability ()
195
{
196
$admin = get_role('administrator');
197
$admin->add_cap('manage_capabilities');
@@ -432,7 +433,7 @@ class CapabilityManager extends akPluginAbstract
432
*/
433
function backupTool ()
434
{
435
- if ( ! current_user_can('manage_capabilities') && ! current_user_can('administrator') ) {
436
// TODO: Implement exceptions.
437
wp_die('<strong>' .__('What do you think you\'re doing?!?', $this->ID) . '</strong>');
438
}
177
add_users_page( __('Capability Manager', $this->ID), __('Capabilities', $this->ID), 'manage_capabilities', $this->ID, array($this, 'generalManager'));
178
}
179
180
+ $cap_name = ( is_super_admin() ) ? 'manage_capabilities' : 'restore_roles';
181
+ add_management_page(__('Capability Manager', $this->ID), __('Capability Manager', $this->ID), $cap_name, $this->ID . '-tool', array($this, 'backupTool'));
182
}
183
184
public function pp_menu() {
192
*
193
* @return void
194
*/
195
+ public function setAdminCapability ()
196
{
197
$admin = get_role('administrator');
198
$admin->add_cap('manage_capabilities');
433
*/
434
function backupTool ()
435
{
436
+ if ( ! current_user_can('restore_roles') && ! is_super_admin() ) {
437
// TODO: Implement exceptions.
438
wp_die('<strong>' .__('What do you think you\'re doing?!?', $this->ID) . '</strong>');
439
}
includes/modify.php CHANGED
@@ -101,6 +101,7 @@ class CapsmanHandler
101
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
102
$pp_only[]= $newrole;
103
pp_update_option( 'supplemental_role_defs', $pp_only );
104
pp_refresh_options();
105
}
106
}
101
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
102
$pp_only[]= $newrole;
103
pp_update_option( 'supplemental_role_defs', $pp_only );
104
+ _cme_pp_default_pattern_role( $newrole );
105
pp_refresh_options();
106
}
107
}
includes/network.php ADDED
@@ -0,0 +1,74 @@
1
+ <?php
2
+ add_action( 'wpmu_new_blog', '_cme_new_blog' );
3
+ function _cme_new_blog( $new_blog_id ) {
4
+ if ( $autocreate_roles = get_site_option( 'cme_autocreate_roles' ) ) {
5
+ global $wp_roles, $blog_id;
6
+
7
+ $restore_blog_id = $blog_id;
8
+
9
+ switch_to_blog( 1 );
10
+ $wp_roles->reinit();
11
+
12
+ $main_site_caps = array();
13
+ $role_captions = array();
14
+
15
+ $admin_role = $wp_roles->get_role('administrator');
16
+ $main_admin_caps = $admin_role->capabilities;
17
+
18
+ if ( defined('PP_ACTIVE') )
19
+ $main_pp_only = (array) pp_get_option( 'supplemental_role_defs' );
20
+ //$pp_only[]= $newrole;
21
+
22
+ foreach( $autocreate_roles as $role_name ) {
23
+ if ( $role = get_role( $role_name ) ) {
24
+ $main_site_caps[$role_name] = $role->capabilities;
25
+ $role_captions[$role_name] = $wp_roles->role_names[$role_name];
26
+ }
27
+ }
28
+
29
+ switch_to_blog($new_blog_id);
30
+ $wp_roles->reinit();
31
+
32
+ if ( defined('PP_ACTIVE') ) {
33
+ pp_refresh_options();
34
+ $blog_pp_only = (array) pp_get_option( 'supplemental_role_defs' );
35
+ }
36
+
37
+ foreach( $main_site_caps as $role_name => $caps ) {
38
+ if ( $blog_role = $wp_roles->get_role( $role_name ) ) {
39
+ $stored_role_caps = ( ! empty($blog_role->capabilities) && is_array($blog_role->capabilities) ) ? array_intersect( $blog_role->capabilities, array(true, 1) ) : array();
40
+
41
+ // Find caps to add and remove
42
+ $add_caps = array_diff_key($caps, $stored_role_caps);
43
+ $del_caps = array_intersect_key( array_diff_key($stored_role_caps, $caps), $main_admin_caps ); // don't mess with caps that are totally unused on main site
44
+
45
+ // Add new capabilities to role
46
+ foreach ( $add_caps as $cap => $grant )
47
+ $blog_role->add_cap($cap);
48
+
49
+ // Remove capabilities from role
50
+ foreach ( $del_caps as $cap => $grant)
51
+ $blog_role->remove_cap($cap);
52
+ } else {
53
+ $wp_roles->add_role( $role_name, $role_captions[$role_name], $caps );
54
+ }
55
+
56
+ if ( in_array( $role_name, $main_pp_only ) ) {
57
+ _cme_pp_default_pattern_role( $role_name );
58
+ $blog_pp_only []= $role_name;
59
+ } else
60
+ array_diff( $blog_pp_only, array( $role_name ) );
61
+ }
62
+
63
+ if ( defined('PP_ACTIVE') )
64
+ pp_update_option( 'supplemental_role_defs', $blog_pp_only );
65
+
66
+ switch_to_blog($restore_blog_id);
67
+ $wp_roles->reinit();
68
+
69
+ if ( defined('PP_ACTIVE') )
70
+ pp_refresh_options();
71
+ }
72
+ }
73
+
74
+ ?>
includes/pp-handler.php CHANGED
@@ -51,6 +51,7 @@ function _cme_update_pp_usage() {
51
$pp_only[]= $_REQUEST['role'];
52
53
pp_update_option( 'supplemental_role_defs', array_unique($pp_only) );
54
}
55
}
56
51
$pp_only[]= $_REQUEST['role'];
52
53
pp_update_option( 'supplemental_role_defs', array_unique($pp_only) );
54
+ _cme_pp_default_pattern_role( $_REQUEST['role'] );
55
}
56
}
57
includes/pp-ui.php CHANGED
@@ -50,18 +50,23 @@ class Capsman_PP_UI {
50
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', $cme_id ), $parenthetical ) ;
51
else
52
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', $cme_id ), $parenthetical ) ;
53
- echo '</li><li>';
54
}
55
56
if ( defined( 'PPC_VERSION' ) )
57
if ( defined( 'PPS_VERSION' ) )
58
- printf( __( 'Capabilities for custom statuses can be manually added to a role here (see Post Statuses > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permission Groups to assign a supplemental status-specific role.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
59
- else
60
- printf( __( 'Capabilities for custom statuses can be manually added to a role here (see Post Statuses > Status > Capability Mapping for applicable names). However, by activating the PP Custom Post Statuses extension, you can assign a supplemental status-specific role easily using Permission Groups.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
61
elseif ( defined( 'PP_VERSION' ) )
62
- printf( __( '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.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
63
64
- echo '</li></ul>';
65
}
66
}
67
@@ -69,14 +74,14 @@ class Capsman_PP_UI {
69
$support_pp_only_roles = defined('PPC_VERSION') || version_compare( PP_VERSION, '1.0-beta1.4', '>=');
70
?>
71
72
- <?php if ( $support_pp_only_roles && ! in_array( $default, array( 'subscriber', 'contributor', 'author', 'editor', 'administrator' ) ) ) : ?>
73
<div style="float:right">
74
<?php
75
pp_refresh_options();
76
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
77
$checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
78
?>
79
- <label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permit Groups only', 'pp');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('supplemental assignment only', 'pp'); ?> </label>
80
</div>
81
<?php endif; ?>
82
<?php
@@ -90,10 +95,18 @@ class Capsman_PP_UI {
90
<dd style="text-align:center;">
91
<?php
92
$caption = __( 'Force unique capability names for:', 'capsman' );
93
- echo "<p>$caption</p><table style='width:100%'><tr>";
94
95
- $unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array() );
96
- $unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status' ) ); // avoid confusion with Edit Flow administrative taxonomy
97
$hidden['type'] = apply_filters( 'pp_hidden_post_types', array() );
98
$hidden['taxonomy'] = apply_filters( 'pp_hidden_taxonomies', array() );
99
@@ -133,7 +146,8 @@ class Capsman_PP_UI {
133
echo '</td>';
134
}
135
?>
136
- </tr></table>
137
138
<?php if( pp_wp_ver( '3.5' ) ) :
139
$define_create_posts_cap = pp_get_option( 'define_create_posts_cap' );
@@ -145,14 +159,6 @@ class Capsman_PP_UI {
145
</div>
146
<?php endif; ?>
147
148
- <div class="cme-subtext">
149
- <?php
150
- if ( pp_get_option( 'display_hints' ) ) {
151
- _e( '(PP Filtered Post Types, Taxonomies)', 'capsman' );
152
- }
153
- ?>
154
- </div>
155
-
156
<input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman') ?>" class="button" />
157
</dd>
158
</dl>
50
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', $cme_id ), $parenthetical ) ;
51
else
52
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', $cme_id ), $parenthetical ) ;
53
+ echo '</li>';
54
}
55
56
+ $status_hint = '';
57
if ( defined( 'PPC_VERSION' ) )
58
if ( defined( 'PPS_VERSION' ) )
59
+ $status_hint = sprintf( __( 'Capabilities for custom statuses can be manually added here (see Post Statuses > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permission Groups to assign a supplemental status-specific role.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
60
+ elseif ( pp_get_option( 'display_extension_hints' ) )
61
+ $status_hint = sprintf( __( 'Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
62
+
63
elseif ( defined( 'PP_VERSION' ) )
64
+ $status_hint = sprintf( __( '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.', $cme_id ), "<a href='" . admin_url('?page=pp-role-usage') . "'>", '</a>' ) ;
65
66
+ if ( $status_hint )
67
+ echo "<li>$status_hint</li>";
68
+
69
+ echo '</ul>';
70
}
71
}
72
74
$support_pp_only_roles = defined('PPC_VERSION') || version_compare( PP_VERSION, '1.0-beta1.4', '>=');
75
?>
76
77
+ <?php if ( $support_pp_only_roles && ! in_array( $default, array( /*'subscriber', 'contributor', 'author', 'editor',*/ 'administrator' ) ) ) : ?>
78
<div style="float:right">
79
<?php
80
pp_refresh_options();
81
$pp_only = (array) pp_get_option( 'supplemental_role_defs' );
82
$checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
83
?>
84
+ <label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'pp');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'pp'); ?> </label>
85
</div>
86
<?php endif; ?>
87
<?php
95
<dd style="text-align:center;">
96
<?php
97
$caption = __( 'Force unique capability names for:', 'capsman' );
98
+ echo "<p>$caption</p>";
99
+
100
+ if ( pp_get_option( 'display_hints' ) ) :?>
101
+ <div class="cme-subtext" style="margin-top:0">
102
+ <?php _e( '(PP Filtered Post Types, Taxonomies)', 'capsman' );?>
103
+ </div>
104
+ <?php endif;
105
+
106
+ echo "<table style='width:100%'><tr>";
107
108
+ $unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array('forum','topic','reply') ); // bbPress' dynamic role def requires additional code to enforce stored caps
109
+ $unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
110
$hidden['type'] = apply_filters( 'pp_hidden_post_types', array() );
111
$hidden['taxonomy'] = apply_filters( 'pp_hidden_taxonomies', array() );
112
146
echo '</td>';
147
}
148
?>
149
+ </tr>
150
+ </table>
151
152
<?php if( pp_wp_ver( '3.5' ) ) :
153
$define_create_posts_cap = pp_get_option( 'define_create_posts_cap' );
159
</div>
160
<?php endif; ?>
161
162
<input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman') ?>" class="button" />
163
</dd>
164
</dl>
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: 2013-02-23 19:51-0500\n"
6
- "PO-Revision-Date: 2013-02-23 19:51-0500\n"
7
"Last-Translator: Kevin Behrens <kevin@agapetry.net>\n"
8
"Language-Team: Agapetry Creations LLC <kevin@agapetry.net>\n"
9
"MIME-Version: 1.0\n"
@@ -21,559 +21,579 @@ msgstr ""
21
msgid "<strong>Error:</strong> Capability Manager Extended cannot function because another copy of Capability Manager is active."
22
msgstr ""
23
24
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:57
25
msgid "Warning:"
26
msgstr ""
27
28
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:58
29
#, php-format
30
msgid "The active plugin %s is not compatible with your PHP version."
31
msgstr ""
32
33
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:60
34
#, php-format
35
msgid "%s is required for this plugin."
36
msgstr ""
37
38
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:97
39
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:247
40
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:255
41
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:247
42
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:255
43
msgid "Capabilities"
44
msgstr ""
45
46
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:98
47
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:101
48
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:106
49
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:247
50
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:250
51
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:256
52
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:247
53
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:250
54
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:256
55
msgid "Capability Manager"
56
msgstr ""
57
58
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:106
59
msgid "Role Capabilities"
60
msgstr ""
61
62
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/formating.php:40
63
msgid "Settings saved."
64
msgstr ""
65
66
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:49
67
msgid "Plugin Homepage"
68
msgstr ""
69
70
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:50
71
msgid "Documentation"
72
msgstr ""
73
74
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:51
75
msgid "Support Forum"
76
msgstr ""
77
78
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:52
79
msgid "Author Homepage"
80
msgstr ""
81
82
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:53
83
msgid "Help donating"
84
msgstr ""
85
86
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:73
87
#, php-format
88
msgid "Capability Manager Enhanced %s"
89
msgstr ""
90
91
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:74
92
msgid "Copyright 2010 Jordi Canals"
93
msgstr ""
94
95
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes.php:77
96
#, php-format
97
msgid "Modifications &copy; Copyright %1$s %2$s"
98
msgstr ""
99
100
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:69
101
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:69
102
msgid "Roles and Capabilities"
103
msgstr ""
104
105
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:78
106
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:78
107
#, php-format
108
msgid "Capabilities for %s"
109
msgstr ""
110
111
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:84
112
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:84
113
- msgid "Use this form to view and modify the capabilities WordPress natively associates with each role. Note:"
114
msgstr ""
115
116
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:89
117
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:89
118
- #, php-format
119
- msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
120
msgstr ""
121
122
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:91
123
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:91
124
- #, php-format
125
- msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
126
msgstr ""
127
128
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:93
129
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:93
130
- #, php-format
131
- msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups (%s)."
132
msgstr ""
133
134
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:95
135
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:95
136
- msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
137
msgstr ""
138
139
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:100
140
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:100
141
- msgid "Interested in further customizing editing or viewing access? Consider stepping up to <a href='#pp-more'>Press Permit</a>."
142
msgstr ""
143
144
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:120
145
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:120
146
- msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
147
msgstr ""
148
149
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:123
150
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:123
151
- msgid "Supplemental per-type, per-category or per-page role assignments"
152
msgstr ""
153
154
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:126
155
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:126
156
- msgid "Custom Visibility statuses (require read_member_posts, read_premium_posts, etc.)"
157
msgstr ""
158
159
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:129
160
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:129
161
- msgid "Custom Editability \"statuses\" - set alongside Visibility in Post and Category edit forms"
162
msgstr ""
163
164
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:132
165
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:132
166
- msgid "Custom Moderation statuses, enabling access-limited three tier moderation (Pending / Approved / Published)"
167
msgstr ""
168
169
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:135
170
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:135
171
- msgid "Grant Participant or Moderator access to specific bbPress forums or topics"
172
msgstr ""
173
174
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:138
175
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:138
176
- msgid "Grant supplemental page or category access to all members of a BuddyPress group"
177
msgstr ""
178
179
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:141
180
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:141
181
- msgid "WPML integration to mirror permissions to translations"
182
msgstr ""
183
184
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:144
185
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:144
186
- msgid "Professional support available"
187
msgstr ""
188
189
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:214
190
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:214
191
msgid "&nbsp;"
192
msgstr ""
193
194
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:215
195
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:215
196
msgid "Reading"
197
msgstr ""
198
199
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:216
200
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:216
201
msgid "Editing Capabilities"
202
msgstr ""
203
204
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:217
205
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:217
206
msgid "Deletion Capabilities"
207
msgstr ""
208
209
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:225
210
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:225
211
msgid "can read posts which are currently published with private visibility"
212
msgstr ""
213
214
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:226
215
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:226
216
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
217
msgstr ""
218
219
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:227
220
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:227
221
msgid "can edit posts which were created by other users"
222
msgstr ""
223
224
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:228
225
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:228
226
msgid "can edit posts which are currently published"
227
msgstr ""
228
229
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:229
230
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:229
231
msgid "can edit posts which are currently published with private visibility"
232
msgstr ""
233
234
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:230
235
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:230
236
msgid "can make a post publicly visible"
237
msgstr ""
238
239
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:231
240
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:231
241
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
242
msgstr ""
243
244
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:232
245
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:232
246
msgid "can delete posts which were created by other users"
247
msgstr ""
248
249
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:233
250
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:233
251
msgid "can delete posts which are currently published"
252
msgstr ""
253
254
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:234
255
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:234
256
msgid "can delete posts which are currently published with private visibility"
257
msgstr ""
258
259
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:304
260
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:377
261
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:426
262
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:304
263
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:377
264
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:426
265
#, php-format
266
- msgid "%s: assigned by Permit Group"
267
msgstr ""
268
269
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:360
270
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:360
271
msgid "Other WordPress Core Capabilities"
272
msgstr ""
273
274
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:397
275
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:397
276
- msgid "Additional Capabilities"
277
msgstr ""
278
279
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:462
280
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:462
281
- msgid "Level:"
282
msgstr ""
283
284
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:483
285
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:483
286
- msgid "Note: Underscores replace spaces in stored capability name (\"edit users\" => \"edit_users\")."
287
msgstr ""
288
289
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:502
290
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:543
291
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:559
292
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:502
293
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:543
294
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:559
295
- msgid "Make role available for supplemental assignment to Permit Groups only"
296
msgstr ""
297
298
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:502
299
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:502
300
- msgid "supplemental assignment only"
301
msgstr ""
302
303
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:509
304
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:509
305
msgid "Save Changes"
306
msgstr ""
307
308
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:512
309
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:512
310
msgid "Delete this role"
311
msgstr ""
312
313
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:512
314
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:512
315
#, php-format
316
msgid ""
317
"You are about to delete the %s role.\n"
318
" 'Cancel' to stop, 'OK' to delete."
319
msgstr ""
320
321
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:512
322
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:512
323
msgid "Delete Role"
324
msgstr ""
325
326
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:524
327
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:524
328
msgid "Select New Role"
329
msgstr ""
330
331
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:532
332
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:532
333
msgid "Change"
334
msgstr ""
335
336
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:537
337
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:537
338
msgid "Create New Role"
339
msgstr ""
340
341
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:540
342
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:540
343
msgid "Name of new role"
344
msgstr ""
345
346
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:543
347
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:559
348
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:543
349
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:559
350
- msgid "supplemental"
351
msgstr ""
352
353
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:547
354
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:547
355
msgid "Create"
356
msgstr ""
357
358
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:553
359
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:553
360
msgid "Copy this role to"
361
msgstr ""
362
363
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:556
364
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:556
365
msgid "Name of copied role"
366
msgstr ""
367
368
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:563
369
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:563
370
msgid "Copy"
371
msgstr ""
372
373
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:569
374
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:569
375
msgid "Add Capability"
376
msgstr ""
377
378
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:571
379
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:571
380
msgid "capability name"
381
msgstr ""
382
383
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:572
384
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:572
385
msgid "Add to role"
386
msgstr ""
387
388
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:578
389
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:578
390
- msgid "Force Type-Specific Capabilities"
391
msgstr ""
392
393
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:581
394
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:581
395
- msgid "Force unique capability names for:"
396
msgstr ""
397
398
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:624
399
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:624
400
- msgid "Use create_posts capability"
401
msgstr ""
402
403
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:632
404
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:632
405
- msgid "(PP Filtered Post Types, Taxonomies)"
406
msgstr ""
407
408
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:637
409
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/admin.php:637
410
- msgid "Update"
411
msgstr ""
412
413
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:33
414
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:33
415
msgid "Backup Tool for Capability Manager"
416
msgstr ""
417
418
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:42
419
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:42
420
msgid "Backup and Restore"
421
msgstr ""
422
423
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:46
424
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:46
425
msgid "Select action:"
426
msgstr ""
427
428
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:49
429
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:49
430
msgid "Backup roles and capabilities"
431
msgstr ""
432
433
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:50
434
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:50
435
msgid "Restore last saved backup"
436
msgstr ""
437
438
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:52
439
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:52
440
msgid "Do Action"
441
msgstr ""
442
443
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:60
444
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:60
445
msgid "Reset WordPress Defaults"
446
msgstr ""
447
448
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:62
449
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:62
450
msgid "WARNING:"
451
msgstr ""
452
453
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:62
454
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:62
455
msgid "Reseting default Roles and Capabilities will set them to the WordPress install defaults."
456
msgstr ""
457
458
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:63
459
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:63
460
msgid "If you have installed any plugin that adds new roles or capabilities, these will be lost."
461
msgstr ""
462
463
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:64
464
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:64
465
msgid "It is recommended to use this only as a last resource!"
466
msgstr ""
467
468
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:65
469
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:65
470
msgid "Reset Roles and Capabilities to WordPress defaults"
471
msgstr ""
472
473
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:65
474
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:65
475
msgid ""
476
"You are about to reset Roles and Capabilities to WordPress defaults.\n"
477
" 'Cancel' to stop, 'OK' to reset."
478
msgstr ""
479
480
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/backup.php:65
481
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/backup.php:65
482
msgid "Reset to WordPress defaults"
483
msgstr ""
484
485
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:332
486
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:351
487
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:390
488
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:332
489
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:351
490
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:390
491
- msgid "What do you think you're doing?!?"
492
- msgstr ""
493
-
494
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:417
495
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:417
496
- msgid "Bad form Received"
497
- msgstr ""
498
-
499
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:435
500
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:448
501
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:435
502
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:448
503
msgid "New role created."
504
msgstr ""
505
506
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:441
507
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:454
508
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:441
509
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:454
510
msgid "Error: Failed creating the new role."
511
msgstr ""
512
513
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:493
514
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:493
515
msgid "New capability added to role."
516
msgstr ""
517
518
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:507
519
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:507
520
msgid "Incorrect capability name."
521
msgstr ""
522
523
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:512
524
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:512
525
msgid "Capability settings saved."
526
msgstr ""
527
528
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:514
529
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:514
530
msgid "Error saving capability settings."
531
msgstr ""
532
533
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:518
534
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:518
535
msgid "Bad form received."
536
msgstr ""
537
538
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:547
539
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:547
540
- msgid "New backup saved."
541
msgstr ""
542
543
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:553
544
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:553
545
- msgid "Roles and Capabilities restored from last backup."
546
msgstr ""
547
548
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:555
549
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:555
550
- msgid "Restore failed. No backup found."
551
msgstr ""
552
553
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:577
554
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:577
555
#, php-format
556
- msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
557
msgstr ""
558
559
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:605
560
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:605
561
#, php-format
562
- msgid "Role has been deleted. %1$d users moved to default role %2$s."
563
msgstr ""
564
565
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:619
566
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:619
567
- msgid "Needed function to create default roles not found!"
568
msgstr ""
569
570
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:631
571
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:631
572
- msgid "Roles and Capabilities reset to WordPress defaults"
573
msgstr ""
574
575
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:824
576
- #: E:\www\wp35\wp-content\plugins\capsman-enhanced\includes/manager.php:824
577
- msgid "You cannot remove Manage Capabilities from Administrators"
578
msgstr ""
579
2
msgstr ""
3
"Project-Id-Version: Capability Manager Enhanced\n"
4
"Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2013-09-21 01:35-0500\n"
6
+ "PO-Revision-Date: 2013-09-21 01:35-0500\n"
7
"Last-Translator: Kevin Behrens <kevin@agapetry.net>\n"
8
"Language-Team: Agapetry Creations LLC <kevin@agapetry.net>\n"
9
"MIME-Version: 1.0\n"
21
msgid "<strong>Error:</strong> Capability Manager Extended cannot function because another copy of Capability Manager is active."
22
msgstr ""
23
24
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:58
25
msgid "Warning:"
26
msgstr ""
27
28
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:59
29
#, php-format
30
msgid "The active plugin %s is not compatible with your PHP version."
31
msgstr ""
32
33
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:61
34
#, php-format
35
msgid "%s is required for this plugin."
36
msgstr ""
37
38
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:115
39
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:177
40
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:186
41
msgid "Capabilities"
42
msgstr ""
43
44
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:116
45
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:120
46
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:125
47
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:177
48
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:181
49
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/manager.php:187
50
msgid "Capability Manager"
51
msgstr ""
52
53
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/capsman-enhanced.php:125
54
msgid "Role Capabilities"
55
msgstr ""
56
57
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:221
58
+ msgid "Explicity negate this capability by storing as disabled"
59
+ msgstr ""
60
+
61
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:222
62
+ msgid "Explicitly negate these capabilities by storing as disabled"
63
+ msgstr ""
64
+
65
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:223
66
+ msgid "Post type registration does not define this capability distinctly"
67
+ msgstr ""
68
+
69
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:224
70
+ msgid "This capability is explicitly negated. Click to add/remove normally."
71
+ msgstr ""
72
+
73
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:225
74
+ msgid "Add or remove this capability from the WordPress role"
75
+ msgstr ""
76
+
77
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/classes/abstract/plugin.php:226
78
+ msgid "Add or remove capability from the role normally"
79
+ msgstr ""
80
+
81
#: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/formating.php:40
82
msgid "Settings saved."
83
msgstr ""
84
85
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:9
86
msgid "Plugin Homepage"
87
msgstr ""
88
89
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:10
90
msgid "Documentation"
91
msgstr ""
92
93
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:11
94
msgid "Support Forum"
95
msgstr ""
96
97
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:12
98
msgid "Author Homepage"
99
msgstr ""
100
101
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:13
102
msgid "Help donating"
103
msgstr ""
104
105
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:23
106
#, php-format
107
msgid "Capability Manager Enhanced %s"
108
msgstr ""
109
110
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:24
111
msgid "Copyright 2010 Jordi Canals"
112
msgstr ""
113
114
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/framework/lib/themes-agapetry.php:27
115
#, php-format
116
msgid "Modifications &copy; Copyright %1$s %2$s"
117
msgstr ""
118
119
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:50
120
msgid "Roles and Capabilities"
121
msgstr ""
122
123
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:59
124
#, php-format
125
msgid "Capabilities for %s"
126
msgstr ""
127
128
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:62
129
+ msgid "Use this form to view and modify the capabilities WordPress natively associates with each role. Changes <strong>will remain in your database</strong> even if you deactivate the plugin."
130
msgstr ""
131
132
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:74
133
+ msgid "To further customize editing or viewing access, consider stepping up to <a href='#pp-more'>Press Permit</a>."
134
msgstr ""
135
136
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:105
137
+ msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
138
msgstr ""
139
140
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:109
141
+ msgid "Assign standard WP roles supplementally for a specific post type"
142
msgstr ""
143
144
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:113
145
+ msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
146
msgstr ""
147
148
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:117
149
+ msgid "Customize reading permissions per-category or per-post"
150
msgstr ""
151
152
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:121
153
+ msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
154
msgstr ""
155
156
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:125
157
+ msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
158
msgstr ""
159
160
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:129
161
+ msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
162
msgstr ""
163
164
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:133
165
+ msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
166
msgstr ""
167
168
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:137
169
+ msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
170
msgstr ""
171
172
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:141
173
+ msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
174
msgstr ""
175
176
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:145
177
+ msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
178
msgstr ""
179
180
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:149
181
+ msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
182
+ msgstr ""
183
+
184
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:153
185
+ msgid "Member support forum"
186
+ msgstr ""
187
+
188
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:159
189
+ #, php-format
190
+ msgid "%1$sgrab%2$s %3$s"
191
msgstr ""
192
193
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:159
194
+ #, php-format
195
+ msgid "%s (free install)"
196
+ msgstr ""
197
+
198
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:161
199
+ #, php-format
200
+ msgid "%1$sbuy%2$s %3$s"
201
msgstr ""
202
203
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:161
204
+ #, php-format
205
+ msgid "%s info/purchase"
206
+ msgstr ""
207
+
208
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:244
209
msgid "&nbsp;"
210
msgstr ""
211
212
+ #: E:\www\wp35\wp-content\plugins\capsman-enhanced/includes/admin.php:245
213
msgid "Reading"
214