Version Description
- 28 Mar 2019
Download this release
Release Info
| Developer | kevinB |
| Plugin | |
| Version | 1.7 |
| Comparing to | |
| See all releases | |
Code changes from version 1.6.1 to 1.7
- admin.css +14 -1
- admin.dev.js +1 -1
- admin.js +1 -1
- capsman-enhanced.php +46 -7
- framework/styles/admin.css +4 -0
- includes/admin.php +201 -165
- includes/cap-helper.php +348 -0
- includes/filters-woocommerce.php +17 -0
- includes/filters.php +136 -1
- includes/handler.php +10 -10
- includes/inflect-cme.php +136 -0
- includes/manager.php +40 -8
- includes/network.php +7 -7
- includes/pp-handler.php +48 -26
- includes/pp-ui.php +179 -69
- lang/capsman.mo +0 -0
- lang/capsman.po +240 -244
- readme.txt +33 -24
admin.css
CHANGED
|
@@ -158,10 +158,18 @@ padding-right: 10px;
|
|
| 158 |
margin-top: 5px;
|
| 159 |
}
|
| 160 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
#akmin td.sidebar {
|
| 162 |
width: 300px;
|
| 163 |
}
|
| 164 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 165 |
#akmin input.regular-text {
|
| 166 |
width: 200px;
|
| 167 |
}
|
|
@@ -180,4 +188,9 @@ td.cm-has-via-pp {
|
|
| 180 |
background-color: #7f7;
|
| 181 |
}
|
| 182 |
|
| 183 |
-
#akmin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
margin-top: 5px;
|
| 159 |
}
|
| 160 |
|
| 161 |
+
#akmin input.button-primary {
|
| 162 |
+
margin: 5px;
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
#akmin td.sidebar {
|
| 166 |
width: 300px;
|
| 167 |
}
|
| 168 |
|
| 169 |
+
#akmin .cme-backup-tool a {
|
| 170 |
+
padding-left:0;
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
#akmin input.regular-text {
|
| 174 |
width: 200px;
|
| 175 |
}
|
| 188 |
background-color: #7f7;
|
| 189 |
}
|
| 190 |
|
| 191 |
+
#akmin div.publishpress-headline {line-height:25px}
|
| 192 |
+
#akmin span.publishpress-thanks{margin-left:5px;color:#655997;white-space:nowrap}
|
| 193 |
+
#akmin span.publishpress-thanks,#akmin span.publishpress-thanks a,#akmin span.publishpress-thanks a:visited {color:#655997;font-weight:bold;}
|
| 194 |
+
|
| 195 |
+
table#akmin td.sidebar li.publishpress-contact{text-align:center}
|
| 196 |
+
table#akmin td.sidebar li.publishpress-contact a{padding:5px 0 5px 0;}
|
admin.dev.js
CHANGED
|
@@ -4,7 +4,7 @@ jQuery(document).ready( function($) {
|
|
| 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');
|
| 4 |
$('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);
|
| 5 |
$('a.normal-cap').attr('title',cmeAdmin.switchableCaption);
|
| 6 |
$('span.cap-x').attr('title',cmeAdmin.capNegated);
|
| 7 |
+
$('table.cme-checklist input[class!="cme-check-all"]').not(':disabled').attr('title',cmeAdmin.chkCaption);
|
| 8 |
|
| 9 |
$('table.cme-checklist a.neg-cap').click( function(e) {
|
| 10 |
$(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');
|
admin.js
CHANGED
|
@@ -1,3 +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);});$('a.cme-fix-read-cap').click(function(){$('input[name="caps[read]"]').prop('checked',true);$('input[name="SaveRole"]').trigger('click');return false;});});
|
| 1 |
+
jQuery(document).ready(function($){$('a.neg-cap').attr('title',cmeAdmin.negationCaption);$('a.neg-type-caps').attr('title',cmeAdmin.typeCapsNegationCaption);$('td.cap-unreg').attr('title',cmeAdmin.typeCapUnregistered);$('a.normal-cap').attr('title',cmeAdmin.switchableCaption);$('span.cap-x').attr('title',cmeAdmin.capNegated);$('table.cme-checklist input[class!="cme-check-all"]').not(':disabled').attr('title',cmeAdmin.chkCaption);$('table.cme-checklist a.neg-cap').click(function(e){$(this).closest('td').removeClass('cap-yes').removeClass('cap-no').addClass('cap-neg');var cap_name_attr=$(this).parent().find('input[type="checkbox"]').attr('name');$(this).after('<input type="hidden" class="cme-negation-input" name="'+cap_name_attr+'" value="" />');return false;});$(document).on('click','table.cme-typecaps span.cap-x,table.cme-checklist span.cap-x,table.cme-checklist td.cap-neg span',function(e){$(this).closest('td').removeClass('cap-neg').removeClass('cap-yes').addClass('cap-no');$(this).parent().find('input[type="checkbox"]').prop('checked',false);$(this).parent().find('input.cme-negation-input').remove();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);});$('a.cme-fix-read-cap').click(function(){$('input[name="caps[read]"]').prop('checked',true);$('input[name="SaveRole"]').trigger('click');return false;});});
|
capsman-enhanced.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
* Plugin Name: Capability Manager Enhanced
|
| 4 |
* Plugin URI: https://publishpress.com
|
| 5 |
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
|
| 6 |
-
* Version: 1.
|
| 7 |
* Author: PublishPress
|
| 8 |
* Author URI: https://publishpress.com
|
| 9 |
* Text Domain: capsman-enhanced
|
|
@@ -23,12 +23,12 @@
|
|
| 23 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2019 PublishPress
|
| 24 |
* @license GNU General Public License version 3
|
| 25 |
* @link https://publishpress.com
|
| 26 |
-
* @version 1.
|
| 27 |
*/
|
| 28 |
|
| 29 |
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
|
| 30 |
-
define( 'CAPSMAN_VERSION', '1.
|
| 31 |
-
define( 'CAPSMAN_ENH_VERSION', '1.
|
| 32 |
}
|
| 33 |
|
| 34 |
if ( cme_is_plugin_active( 'capsman.php' ) ) {
|
|
@@ -95,13 +95,48 @@ if ( cme_is_plugin_active( 'capsman.php' ) ) {
|
|
| 95 |
add_action( 'init', '_cme_init' );
|
| 96 |
add_action( 'plugins_loaded', '_cme_act_pp_active', 1 );
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
function _cme_act_pp_active() {
|
| 99 |
-
if ( defined('
|
| 100 |
-
define( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
}
|
| 102 |
|
| 103 |
function _cme_init() {
|
| 104 |
-
require_once ( dirname(__FILE__) . '/includes/filters.php' );
|
| 105 |
|
| 106 |
load_plugin_textdomain('capsman-enhanced', false, dirname(__FILE__) . '/lang');
|
| 107 |
}
|
|
@@ -149,5 +184,9 @@ function _cme_pp_default_pattern_role( $role ) {
|
|
| 149 |
}
|
| 150 |
}
|
| 151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 152 |
if ( is_multisite() )
|
| 153 |
require_once ( dirname(__FILE__) . '/includes/network.php' );
|
| 3 |
* Plugin Name: Capability Manager Enhanced
|
| 4 |
* Plugin URI: https://publishpress.com
|
| 5 |
* Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
|
| 6 |
+
* Version: 1.7
|
| 7 |
* Author: PublishPress
|
| 8 |
* Author URI: https://publishpress.com
|
| 9 |
* Text Domain: capsman-enhanced
|
| 23 |
* @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2019 PublishPress
|
| 24 |
* @license GNU General Public License version 3
|
| 25 |
* @link https://publishpress.com
|
| 26 |
+
* @version 1.7
|
| 27 |
*/
|
| 28 |
|
| 29 |
if ( ! defined( 'CAPSMAN_VERSION' ) ) {
|
| 30 |
+
define( 'CAPSMAN_VERSION', '1.7' );
|
| 31 |
+
define( 'CAPSMAN_ENH_VERSION', '1.7' );
|
| 32 |
}
|
| 33 |
|
| 34 |
if ( cme_is_plugin_active( 'capsman.php' ) ) {
|
| 95 |
add_action( 'init', '_cme_init' );
|
| 96 |
add_action( 'plugins_loaded', '_cme_act_pp_active', 1 );
|
| 97 |
|
| 98 |
+
add_action( 'init', '_cme_cap_helper', 49 ); // Press Permit Cap Helper, registered at 50, will leave caps which we've already defined
|
| 99 |
+
//add_action( 'wp_loaded', '_cme_cap_helper_late_init', 99 ); // now instead adding registered_post_type, registered_taxonomy action handlers for latecomers
|
| 100 |
+
// @todo: do this in PP Core also
|
| 101 |
+
|
| 102 |
function _cme_act_pp_active() {
|
| 103 |
+
if ( defined('PRESSPERMIT_VERSION') || ( defined('PPC_VERSION') && function_exists( 'pp_init_cap_caster' ) ) ) {
|
| 104 |
+
define( 'PRESSPERMIT_ACTIVE', true );
|
| 105 |
+
} else {
|
| 106 |
+
if ( defined('SCOPER_VERSION') || ( defined('PP_VERSION') && function_exists('pp_init_users_interceptor') ) ) {
|
| 107 |
+
define( 'OLD_PRESSPERMIT_ACTIVE', true );
|
| 108 |
+
}
|
| 109 |
+
}
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
function _cme_cap_helper() {
|
| 113 |
+
global $cme_cap_helper;
|
| 114 |
+
|
| 115 |
+
require_once ( dirname(__FILE__) . '/includes/cap-helper.php' );
|
| 116 |
+
$cme_cap_helper = new CME_Cap_Helper();
|
| 117 |
+
|
| 118 |
+
add_action( 'registered_post_type', '_cme_post_type_late_reg', 5, 2 );
|
| 119 |
+
add_action( 'registered_taxonomy', '_cme_taxonomy_late_reg', 5, 2 );
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
function _cme_post_type_late_reg( $post_type, $type_obj ) {
|
| 123 |
+
global $cme_cap_helper;
|
| 124 |
+
|
| 125 |
+
if ( ! empty( $type_obj->public ) || ! empty( $type_obj->show_ui ) ) {
|
| 126 |
+
$cme_cap_helper->refresh();
|
| 127 |
+
}
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
function _cme_taxonomy_late_reg( $taxonomy, $tx_obj ) {
|
| 131 |
+
global $cme_cap_helper;
|
| 132 |
+
|
| 133 |
+
if ( ! empty( $tx_obj->public ) ) {
|
| 134 |
+
$cme_cap_helper->refresh();
|
| 135 |
+
}
|
| 136 |
}
|
| 137 |
|
| 138 |
function _cme_init() {
|
| 139 |
+
require_once ( dirname(__FILE__) . '/includes/filters.php' );
|
| 140 |
|
| 141 |
load_plugin_textdomain('capsman-enhanced', false, dirname(__FILE__) . '/lang');
|
| 142 |
}
|
| 184 |
}
|
| 185 |
}
|
| 186 |
|
| 187 |
+
function capsman_get_pp_option( $option_basename ) {
|
| 188 |
+
return ( function_exists( 'presspermit_get_option') ) ? presspermit_get_option($option_basename) : capsman_get_pp_option($option_basename);
|
| 189 |
+
}
|
| 190 |
+
|
| 191 |
if ( is_multisite() )
|
| 192 |
require_once ( dirname(__FILE__) . '/includes/network.php' );
|
framework/styles/admin.css
CHANGED
|
@@ -113,6 +113,10 @@ table#akmin td.sidebar a {
|
|
| 113 |
border: 0 none;
|
| 114 |
display: block;
|
| 115 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
|
| 117 |
table#akmin td.sidebar ul li {
|
| 118 |
margin: 0;
|
| 113 |
border: 0 none;
|
| 114 |
display: block;
|
| 115 |
}
|
| 116 |
+
|
| 117 |
+
table#akmin td.sidebar .cme-backup-tool a {
|
| 118 |
+
padding-left: 0;
|
| 119 |
+
}
|
| 120 |
|
| 121 |
table#akmin td.sidebar ul li {
|
| 122 |
margin: 0;
|
includes/admin.php
CHANGED
|
@@ -8,43 +8,47 @@
|
|
| 8 |
* @license GNU General Public License version 2
|
| 9 |
* @link https://publishpress.com
|
| 10 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
-
|
| 13 |
-
Modifications Copyright 2019, PublishPress <help@publishpress.com>
|
| 14 |
-
|
| 15 |
-
This program is free software; you can redistribute it and/or
|
| 16 |
-
modify it under the terms of the GNU General Public License
|
| 17 |
-
version 2 as published by the Free Software Foundation.
|
| 18 |
-
|
| 19 |
-
This program is distributed in the hope that it will be useful,
|
| 20 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 21 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 22 |
-
GNU General Public License for more details.
|
| 23 |
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
*/
|
| 27 |
|
| 28 |
-
if (
|
| 29 |
-
$
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
}
|
| 34 |
}
|
| 35 |
-
|
| 36 |
-
$roles = $this->roles;
|
| 37 |
-
$default = $this->current;
|
| 38 |
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
|
|
|
| 42 |
$pp_metagroup_caps = $pp_ui->get_metagroup_caps( $default );
|
| 43 |
-
} else
|
| 44 |
$pp_metagroup_caps = array();
|
|
|
|
| 45 |
?>
|
| 46 |
<div class="wrap">
|
| 47 |
-
<?php if( defined('
|
| 48 |
pp_icon();
|
| 49 |
$style = 'style="height:60px;"';
|
| 50 |
?>
|
|
@@ -68,111 +72,112 @@ if( defined('PP_ACTIVE') ) {
|
|
| 68 |
<div style="float:right">
|
| 69 |
<input type="submit" name="SaveRole" value="<?php _e('Save Changes', 'capsman-enhanced') ?>" class="button-primary" />
|
| 70 |
</div>
|
| 71 |
-
|
| 72 |
-
<div>
|
| 73 |
-
<?php _e( 'View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin.', 'capsman-enhanced' ); ?>
|
| 74 |
-
</div>
|
| 75 |
|
| 76 |
<?php
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
$pp_ui->show_capability_hints( $default );
|
| 79 |
-
}
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
<script type="text/javascript">
|
| 89 |
-
/* <![CDATA[ */
|
| 90 |
-
jQuery(document).ready( function($) {
|
| 91 |
-
$('a[href="#pp-more"]').click( function() {
|
| 92 |
-
$('#pp_features').show();
|
| 93 |
-
return false;
|
| 94 |
-
});
|
| 95 |
-
$('a[href="#pp-hide"]').click( function() {
|
| 96 |
-
$('#pp_features').hide();
|
| 97 |
-
return false;
|
| 98 |
-
});
|
| 99 |
});
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
|
| 177 |
if ( MULTISITE ) {
|
| 178 |
global $wp_roles;
|
|
@@ -185,26 +190,26 @@ if( defined('PP_ACTIVE') ) {
|
|
| 185 |
|
| 186 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 187 |
}
|
| 188 |
-
|
| 189 |
-
global $capsman;
|
| 190 |
$capsman->reinstate_db_roles();
|
| 191 |
|
| 192 |
$current = get_role($default);
|
| 193 |
|
| 194 |
$rcaps = $current->capabilities;
|
| 195 |
|
| 196 |
-
// ========= Begin Kevin B mod ===========
|
| 197 |
$is_administrator = current_user_can( 'administrator' );
|
| 198 |
|
| 199 |
$custom_types = get_post_types( array( '_builtin' => false ), 'names' );
|
| 200 |
$custom_tax = get_taxonomies( array( '_builtin' => false ), 'names' );
|
| 201 |
|
| 202 |
$defined = array();
|
| 203 |
-
$defined['type'] = get_post_types( array( 'public' => true ), 'object' );
|
| 204 |
$defined['taxonomy'] = get_taxonomies( array( 'public' => true ), 'object' );
|
| 205 |
|
| 206 |
-
$unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array('forum','topic','reply') ); // bbPress' dynamic role def requires additional code to enforce stored caps
|
| 207 |
$unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
|
|
|
|
|
|
|
|
|
|
| 208 |
/*
|
| 209 |
if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
|
| 210 |
$cap_properties[''] = array();
|
|
@@ -228,13 +233,13 @@ if( defined('PP_ACTIVE') ) {
|
|
| 228 |
|
| 229 |
$cap_properties['edit']['taxonomy'] = array( 'manage_terms' );
|
| 230 |
|
| 231 |
-
if ( ! defined( '
|
| 232 |
$cap_properties['edit']['taxonomy'] = array_merge( $cap_properties['edit']['taxonomy'], array( 'edit_terms', 'assign_terms' ) );
|
| 233 |
|
| 234 |
$cap_properties['delete']['type'] = array( 'delete_posts', 'delete_others_posts' );
|
| 235 |
$cap_properties['delete']['type'] = array_merge( $cap_properties['delete']['type'], array( 'delete_published_posts', 'delete_private_posts' ) );
|
| 236 |
|
| 237 |
-
if ( ! defined( '
|
| 238 |
$cap_properties['delete']['taxonomy'] = array( 'delete_terms' );
|
| 239 |
else
|
| 240 |
$cap_properties['delete']['taxonomy'] = array();
|
|
@@ -271,9 +276,10 @@ if( defined('PP_ACTIVE') ) {
|
|
| 271 |
$type_caps = array();
|
| 272 |
|
| 273 |
// Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
|
| 274 |
-
if ( defined('
|
| 275 |
unset( $defined['type']['attachment'] );
|
| 276 |
-
|
|
|
|
| 277 |
echo '<ul class="cme-listhoriz">';
|
| 278 |
|
| 279 |
// cap_types: read, edit, deletion
|
|
@@ -284,8 +290,9 @@ if( defined('PP_ACTIVE') ) {
|
|
| 284 |
|
| 285 |
foreach( array_keys($defined) as $item_type ) {
|
| 286 |
if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
|
| 287 |
-
if ( defined('
|
| 288 |
continue;
|
|
|
|
| 289 |
|
| 290 |
$any_term_deletion_caps = false;
|
| 291 |
foreach( array_keys($defined['taxonomy']) as $_tax ) {
|
|
@@ -316,14 +323,18 @@ if( defined('PP_ACTIVE') ) {
|
|
| 316 |
$prop = str_replace( '_', '<br />', $prop );
|
| 317 |
$th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
|
| 318 |
echo "<th $tip{$th_class}>";
|
| 319 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 320 |
echo '</th>';
|
| 321 |
}
|
| 322 |
|
| 323 |
foreach( $defined[$item_type] as $key => $type_obj ) {
|
| 324 |
if ( in_array( $key, $unfiltered[$item_type] ) )
|
| 325 |
continue;
|
| 326 |
-
|
| 327 |
$row = "<tr class='cme_type_{$key}'>";
|
| 328 |
|
| 329 |
if ( $cap_type ) {
|
|
@@ -333,12 +344,13 @@ if( defined('PP_ACTIVE') ) {
|
|
| 333 |
$row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a>';
|
| 334 |
$row .= '<a href="#" class="neg-type-caps"> x </a>';
|
| 335 |
$row .= '</td>';
|
| 336 |
-
|
| 337 |
$display_row = ! empty($force_distinct_ui);
|
| 338 |
|
| 339 |
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
|
| 340 |
$td_classes = array();
|
| 341 |
$checkbox = '';
|
|
|
|
| 342 |
|
| 343 |
if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
|
| 344 |
|| ! in_array( $type_obj->cap->$prop, $default_caps )
|
|
@@ -347,7 +359,28 @@ if( defined('PP_ACTIVE') ) {
|
|
| 347 |
// if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
|
| 348 |
if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
|
| 349 |
&& ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 350 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 351 |
$cap_name = $type_obj->cap->$prop;
|
| 352 |
|
| 353 |
if ( 'taxonomy' == $item_type )
|
|
@@ -372,17 +405,21 @@ if( defined('PP_ACTIVE') ) {
|
|
| 372 |
$type_caps [$cap_name] = true;
|
| 373 |
$display_row = true;
|
| 374 |
}
|
| 375 |
-
} else
|
| 376 |
-
|
|
|
|
|
|
|
| 377 |
|
| 378 |
-
if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) )
|
| 379 |
$td_classes []= "cap-neg";
|
| 380 |
-
|
|
|
|
| 381 |
$td_classes []= "cap-unreg";
|
|
|
|
| 382 |
|
| 383 |
$td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
|
| 384 |
|
| 385 |
-
$row .= "<td $td_class><span class='cap-x'>X</span>$checkbox";
|
| 386 |
|
| 387 |
if ( false !== strpos( $td_class, 'cap-neg' ) )
|
| 388 |
$row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
|
|
@@ -421,21 +458,14 @@ if( defined('PP_ACTIVE') ) {
|
|
| 421 |
/* ]]> */
|
| 422 |
</script>
|
| 423 |
<?php
|
| 424 |
-
|
| 425 |
-
$core_caps = array_fill_keys( array( 'switch_themes', 'edit_themes', 'activate_plugins', 'edit_plugins', 'edit_users', 'edit_files', 'manage_options', 'moderate_comments',
|
| 426 |
-
'manage_links', 'upload_files', 'import', 'unfiltered_html', 'read', 'delete_users', 'create_users', 'unfiltered_upload', 'edit_dashboard',
|
| 427 |
-
'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
|
| 428 |
-
'update_core', 'list_users', 'remove_users', 'add_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
|
| 429 |
-
|
| 430 |
-
ksort( $core_caps );
|
| 431 |
|
| 432 |
echo '<p> </p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
|
| 433 |
echo '<table width="100%" class="form-table cme-checklist"><tr>';
|
| 434 |
|
| 435 |
-
|
| 436 |
$checks_per_row = get_option( 'cme_form-rows', 5 );
|
| 437 |
$i = 0; $first_row = true;
|
| 438 |
|
|
|
|
| 439 |
foreach( array_keys($core_caps) as $cap_name ) {
|
| 440 |
if ( ! $is_administrator && ! current_user_can($cap_name) )
|
| 441 |
continue;
|
|
@@ -460,22 +490,26 @@ if( defined('PP_ACTIVE') ) {
|
|
| 460 |
$disabled = '';
|
| 461 |
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
| 462 |
$lock_capability = false;
|
|
|
|
| 463 |
|
| 464 |
if ( 'read' == $cap_name ) {
|
| 465 |
-
if (
|
| 466 |
// prevent the read capability from being removed from a core role, but don't force it to be added
|
| 467 |
if ( $checked || apply_filters( 'pp_caps_force_capability_storage', false, 'read', $default ) ) {
|
| 468 |
if ( apply_filters( 'pp_caps_lock_capability', true, 'read', $default ) ) {
|
| 469 |
$lock_capability = true;
|
| 470 |
$class .= ' cap-locked';
|
| 471 |
$disabled = 'disabled="disabled"';
|
|
|
|
|
|
|
|
|
|
| 472 |
}
|
| 473 |
}
|
| 474 |
}
|
| 475 |
}
|
| 476 |
|
| 477 |
?>
|
| 478 |
-
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label for="caps[<?php echo $cap_name; ?>]" title="<?php echo $
|
| 479 |
<span>
|
| 480 |
<?php
|
| 481 |
echo str_replace( '_', ' ', $cap_name );
|
|
@@ -633,7 +667,7 @@ if( defined('PP_ACTIVE') ) {
|
|
| 633 |
</table>
|
| 634 |
|
| 635 |
<br />
|
| 636 |
-
<?php if ( ! defined('
|
| 637 |
<div class="cme-subtext">
|
| 638 |
<?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman-enhanced' ); ?>
|
| 639 |
</div>
|
|
@@ -644,7 +678,7 @@ if( defined('PP_ACTIVE') ) {
|
|
| 644 |
</dl>
|
| 645 |
|
| 646 |
<?php
|
| 647 |
-
$support_pp_only_roles = ( defined('
|
| 648 |
cme_network_role_ui( $default );
|
| 649 |
?>
|
| 650 |
|
|
@@ -654,7 +688,7 @@ if( defined('PP_ACTIVE') ) {
|
|
| 654 |
<input type="submit" name="SaveRole" value="<?php _e('Save Changes', 'capsman-enhanced') ?>" class="button-primary" />
|
| 655 |
|
| 656 |
<?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
|
| 657 |
-
<a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&action=delete&role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', 'capsman-enhanced')?></a>
|
| 658 |
<?php endif; ?>
|
| 659 |
</p>
|
| 660 |
|
|
@@ -685,7 +719,7 @@ if( defined('PP_ACTIVE') ) {
|
|
| 685 |
<dt><?php _e('Create New Role', 'capsman-enhanced'); ?></dt>
|
| 686 |
<dd style="text-align:center;">
|
| 687 |
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
| 688 |
-
<p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Name
|
| 689 |
|
| 690 |
<?php if( $support_pp_only_roles ) : ?>
|
| 691 |
<label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
|
@@ -701,7 +735,7 @@ if( defined('PP_ACTIVE') ) {
|
|
| 701 |
<dt><?php defined('WPLANG') && WPLANG ? _e('Copy this role to', 'capsman-enhanced') : printf( 'Copy %s Role', $roles[$default] ); ?></dt>
|
| 702 |
<dd style="text-align:center;">
|
| 703 |
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
| 704 |
-
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Name
|
| 705 |
|
| 706 |
<?php if( $support_pp_only_roles ) : ?>
|
| 707 |
<label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
|
@@ -716,12 +750,12 @@ if( defined('PP_ACTIVE') ) {
|
|
| 716 |
<dl>
|
| 717 |
<dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
|
| 718 |
<dd style="text-align:center;">
|
| 719 |
-
<p><input type="text" name="capability-name" class="regular-text" placeholder="<?php
|
| 720 |
<input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
|
| 721 |
</dd>
|
| 722 |
</dl>
|
| 723 |
|
| 724 |
-
<dl>
|
| 725 |
<dt><?php _e('Backup Tool', 'capsman-enhanced'); ?></dt>
|
| 726 |
<dd style="text-align:center;">
|
| 727 |
<p><a href="tools.php?page=capsman-tool"><?php _e('Backup / Restore Roles', 'capsman-enhanced');?></a></p>
|
|
@@ -743,11 +777,13 @@ if( defined('PP_ACTIVE') ) {
|
|
| 743 |
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
|
| 744 |
?>
|
| 745 |
<li><a class="thickbox" href="<?php echo $url;?>"><?php _e('Revisionary', 'capsman-enhanced');?></a></li>
|
|
|
|
| 746 |
</ul>
|
| 747 |
</dl>
|
| 748 |
|
| 749 |
-
<?php
|
| 750 |
-
$pp_ui->pp_types_ui( $defined );
|
|
|
|
| 751 |
?>
|
| 752 |
</td>
|
| 753 |
</tr>
|
| 8 |
* @license GNU General Public License version 2
|
| 9 |
* @link https://publishpress.com
|
| 10 |
*
|
| 11 |
+
*
|
| 12 |
+
* Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
|
| 13 |
+
* Modifications Copyright 2019, PublishPress <help@publishpress.com>
|
| 14 |
+
*
|
| 15 |
+
* This program is free software; you can redistribute it and/or
|
| 16 |
+
* modify it under the terms of the GNU General Public License
|
| 17 |
+
* version 2 as published by the Free Software Foundation.
|
| 18 |
+
*
|
| 19 |
+
* This program is distributed in the hope that it will be useful,
|
| 20 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 21 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 22 |
+
* GNU General Public License for more details.
|
| 23 |
+
*
|
| 24 |
+
* You should have received a copy of the GNU General Public License
|
| 25 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
| 26 |
+
**/
|
| 27 |
|
| 28 |
+
global $capsman, $cme_cap_helper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
+
$roles = $this->roles;
|
| 31 |
+
$default = $this->current;
|
|
|
|
| 32 |
|
| 33 |
+
if ( $block_read_removal = _cme_is_read_removal_blocked( $this->current ) ) {
|
| 34 |
+
if ( $current = get_role($default) ) {
|
| 35 |
+
if ( empty( $current->capabilities['read'] ) ) {
|
| 36 |
+
ak_admin_error( sprintf( __( 'Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s.', 'capsman-enhanced' ), '<a href="javascript:void(0)" class="cme-fix-read-cap">', '</a>' ) );
|
| 37 |
+
}
|
| 38 |
}
|
| 39 |
}
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
+
require_once( dirname(__FILE__).'/pp-ui.php' );
|
| 42 |
+
$pp_ui = new Capsman_PP_UI();
|
| 43 |
+
|
| 44 |
+
if( defined('PRESSPERMIT_ACTIVE') ) {
|
| 45 |
$pp_metagroup_caps = $pp_ui->get_metagroup_caps( $default );
|
| 46 |
+
} else {
|
| 47 |
$pp_metagroup_caps = array();
|
| 48 |
+
}
|
| 49 |
?>
|
| 50 |
<div class="wrap">
|
| 51 |
+
<?php if( defined('PRESSPERMIT_ACTIVE') ) :
|
| 52 |
pp_icon();
|
| 53 |
$style = 'style="height:60px;"';
|
| 54 |
?>
|
| 72 |
<div style="float:right">
|
| 73 |
<input type="submit" name="SaveRole" value="<?php _e('Save Changes', 'capsman-enhanced') ?>" class="button-primary" />
|
| 74 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
<?php
|
| 77 |
+
global $capsman;
|
| 78 |
+
$img_url = $capsman->mod_url . '/images/';
|
| 79 |
+
?>
|
| 80 |
+
<div class="publishpress-headline">
|
| 81 |
+
<span class="cme-subtext">
|
| 82 |
+
<?php _e( '<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation.', 'capsman-enhanced' ); ?>
|
| 83 |
+
</span>
|
| 84 |
+
<span class="publishpress-thanks"> <?php printf( __( 'Thanks for using the %1$sPublishPress%2$s family of professional publishing tools.', 'capsman-enhanced'), '<a href="https://publishpress.com/" target="_blank">', '</a>' );?></span>
|
| 85 |
+
</div>
|
| 86 |
+
|
| 87 |
+
<?php
|
| 88 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
|
| 89 |
$pp_ui->show_capability_hints( $default );
|
| 90 |
+
}
|
| 91 |
+
?>
|
| 92 |
+
|
| 93 |
+
<script type="text/javascript">
|
| 94 |
+
/* <![CDATA[ */
|
| 95 |
+
jQuery(document).ready( function($) {
|
| 96 |
+
$('a[href="#pp-more"]').click( function() {
|
| 97 |
+
$('#pp_features').show();
|
| 98 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
});
|
| 100 |
+
$('a[href="#pp-hide"]').click( function() {
|
| 101 |
+
$('#pp_features').hide();
|
| 102 |
+
return false;
|
| 103 |
+
});
|
| 104 |
+
});
|
| 105 |
+
/* ]]> */
|
| 106 |
+
</script>
|
| 107 |
+
<style>
|
| 108 |
+
#pp_features {display:none;border:1px solid #eee;padding:5px;text-align:center;min-width:600px}
|
| 109 |
+
div.pp-logo { text-align: center }
|
| 110 |
+
div.features-wrap { margin-left: auto; margin-right: auto; text-align: center; width: 540px; }
|
| 111 |
+
ul.pp-features { list-style: none; padding-top:10px; text-align:left; margin-left: auto }
|
| 112 |
+
ul.pp-features li:before { content: "\2713\0020"; }
|
| 113 |
+
ul.pp-features li { padding-bottom: 5px }
|
| 114 |
+
img.cme-play { margin-bottom: -3px; margin-left: 5px;}
|
| 115 |
+
</style>
|
| 116 |
+
|
| 117 |
+
<?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
|
| 118 |
+
|
| 119 |
+
<br /><div id="pp_features"><div class="pp-logo"><a href="http://presspermit.com"><img src="<?php echo $img_url;?>pp-logo.png" /></a></div><div class="features-wrap"><ul class="pp-features">
|
| 120 |
+
<li>
|
| 121 |
+
<?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
|
| 122 |
+
<a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 123 |
+
|
| 124 |
+
<li>
|
| 125 |
+
<?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
|
| 126 |
+
<a href="http://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 127 |
+
|
| 128 |
+
<li>
|
| 129 |
+
<?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 130 |
+
<a href="http://presspermit.com/tutorial/custom-role-usage" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 131 |
+
|
| 132 |
+
<li>
|
| 133 |
+
<?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
|
| 134 |
+
<a href="http://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 135 |
+
|
| 136 |
+
<li>
|
| 137 |
+
<?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 138 |
+
<a href="http://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 139 |
+
|
| 140 |
+
<li>
|
| 141 |
+
<?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 142 |
+
<a href="http://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 143 |
+
|
| 144 |
+
<li>
|
| 145 |
+
<?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 146 |
+
<a href="http://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 147 |
+
|
| 148 |
+
<li>
|
| 149 |
+
<?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 150 |
+
<a href="http://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 151 |
+
|
| 152 |
+
<li>
|
| 153 |
+
<?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 154 |
+
<a href="http://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 155 |
+
|
| 156 |
+
<li>
|
| 157 |
+
<?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 158 |
+
<a href="http://presspermit.com/tutorial/bbpress-exceptions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 159 |
+
|
| 160 |
+
<li>
|
| 161 |
+
<?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 162 |
+
<a href="http://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" src="<?php echo $img_url;?>play.png" /></a></li>
|
| 163 |
+
|
| 164 |
+
<li>
|
| 165 |
+
<?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
|
| 166 |
+
</li>
|
| 167 |
+
|
| 168 |
+
<li>
|
| 169 |
+
<?php _e( "Member support forum", 'capsman-enhanced' );?>
|
| 170 |
+
</li>
|
| 171 |
+
|
| 172 |
+
</ul></div>
|
| 173 |
+
<?php
|
| 174 |
+
echo '<div>';
|
| 175 |
+
printf( __('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . cme_plugin_info_url('press-permit-core') . '" class="thickbox" title="' . sprintf( __('%s (free install)', 'capsman-enhanced'), 'Press Permit Core' ) . '">Press Permit Core</a></span>' );
|
| 176 |
+
echo ' • ';
|
| 177 |
+
printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="http://presspermit.com" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Press Permit Pro' ) . '">Press Permit Pro</a>' );
|
| 178 |
+
echo ' • ';
|
| 179 |
+
echo '<a href="#pp-hide">hide</a>';
|
| 180 |
+
echo '</div></div>';
|
| 181 |
|
| 182 |
if ( MULTISITE ) {
|
| 183 |
global $wp_roles;
|
| 190 |
|
| 191 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 192 |
}
|
|
|
|
|
|
|
| 193 |
$capsman->reinstate_db_roles();
|
| 194 |
|
| 195 |
$current = get_role($default);
|
| 196 |
|
| 197 |
$rcaps = $current->capabilities;
|
| 198 |
|
|
|
|
| 199 |
$is_administrator = current_user_can( 'administrator' );
|
| 200 |
|
| 201 |
$custom_types = get_post_types( array( '_builtin' => false ), 'names' );
|
| 202 |
$custom_tax = get_taxonomies( array( '_builtin' => false ), 'names' );
|
| 203 |
|
| 204 |
$defined = array();
|
| 205 |
+
$defined['type'] = get_post_types( array( 'public' => true, 'show_ui' => true ), 'object', 'or' );
|
| 206 |
$defined['taxonomy'] = get_taxonomies( array( 'public' => true ), 'object' );
|
| 207 |
|
| 208 |
+
$unfiltered['type'] = apply_filters( 'pp_unfiltered_post_types', array( 'forum','topic','reply','wp_block' ) ); // bbPress' dynamic role def requires additional code to enforce stored caps
|
| 209 |
$unfiltered['taxonomy'] = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
|
| 210 |
+
|
| 211 |
+
$enabled_taxonomies = cme_get_assisted_taxonomies();
|
| 212 |
+
|
| 213 |
/*
|
| 214 |
if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
|
| 215 |
$cap_properties[''] = array();
|
| 233 |
|
| 234 |
$cap_properties['edit']['taxonomy'] = array( 'manage_terms' );
|
| 235 |
|
| 236 |
+
if ( ! defined( 'OLD_PRESSPERMIT_ACTIVE' ) )
|
| 237 |
$cap_properties['edit']['taxonomy'] = array_merge( $cap_properties['edit']['taxonomy'], array( 'edit_terms', 'assign_terms' ) );
|
| 238 |
|
| 239 |
$cap_properties['delete']['type'] = array( 'delete_posts', 'delete_others_posts' );
|
| 240 |
$cap_properties['delete']['type'] = array_merge( $cap_properties['delete']['type'], array( 'delete_published_posts', 'delete_private_posts' ) );
|
| 241 |
|
| 242 |
+
if ( ! defined( 'OLD_PRESSPERMIT_ACTIVE' ) )
|
| 243 |
$cap_properties['delete']['taxonomy'] = array( 'delete_terms' );
|
| 244 |
else
|
| 245 |
$cap_properties['delete']['taxonomy'] = array();
|
| 276 |
$type_caps = array();
|
| 277 |
|
| 278 |
// Role Scoper and PP1 adjust attachment access based only on user's capabilities for the parent post
|
| 279 |
+
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
|
| 280 |
unset( $defined['type']['attachment'] );
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
echo '<ul class="cme-listhoriz">';
|
| 284 |
|
| 285 |
// cap_types: read, edit, deletion
|
| 290 |
|
| 291 |
foreach( array_keys($defined) as $item_type ) {
|
| 292 |
if ( ( 'delete' == $cap_type ) && ( 'taxonomy' == $item_type ) ) {
|
| 293 |
+
if ( defined('OLD_PRESSPERMIT_ACTIVE') ) {
|
| 294 |
continue;
|
| 295 |
+
}
|
| 296 |
|
| 297 |
$any_term_deletion_caps = false;
|
| 298 |
foreach( array_keys($defined['taxonomy']) as $_tax ) {
|
| 323 |
$prop = str_replace( '_', '<br />', $prop );
|
| 324 |
$th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
|
| 325 |
echo "<th $tip{$th_class}>";
|
| 326 |
+
|
| 327 |
+
if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
|
| 328 |
+
echo ucwords($prop);
|
| 329 |
+
}
|
| 330 |
+
|
| 331 |
echo '</th>';
|
| 332 |
}
|
| 333 |
|
| 334 |
foreach( $defined[$item_type] as $key => $type_obj ) {
|
| 335 |
if ( in_array( $key, $unfiltered[$item_type] ) )
|
| 336 |
continue;
|
| 337 |
+
|
| 338 |
$row = "<tr class='cme_type_{$key}'>";
|
| 339 |
|
| 340 |
if ( $cap_type ) {
|
| 344 |
$row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_obj->labels->name . '</a>';
|
| 345 |
$row .= '<a href="#" class="neg-type-caps"> x </a>';
|
| 346 |
$row .= '</td>';
|
| 347 |
+
|
| 348 |
$display_row = ! empty($force_distinct_ui);
|
| 349 |
|
| 350 |
foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
|
| 351 |
$td_classes = array();
|
| 352 |
$checkbox = '';
|
| 353 |
+
$title = '';
|
| 354 |
|
| 355 |
if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
|
| 356 |
|| ! in_array( $type_obj->cap->$prop, $default_caps )
|
| 359 |
// if edit_published or edit_private cap is same as edit_posts cap, don't display a checkbox for it
|
| 360 |
if ( ( ! in_array( $prop, array( 'edit_published_posts', 'edit_private_posts', 'create_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->edit_posts ) )
|
| 361 |
&& ( ! in_array( $prop, array( 'delete_published_posts', 'delete_private_posts' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->delete_posts ) )
|
| 362 |
+
&& ( ! in_array( $prop, array( 'edit_terms', 'delete_terms' ) ) || ( $type_obj->cap->$prop != $type_obj->cap->manage_terms ) )
|
| 363 |
+
|
| 364 |
+
&& ( ! in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
|
| 365 |
+
|| ( $cme_cap_helper->all_taxonomy_caps[ $type_obj->cap->$prop ] <= 1 )
|
| 366 |
+
|| $type_obj->cap->$prop == str_replace( '_terms', "_{$type_obj->name}s", $prop )
|
| 367 |
+
|| $type_obj->cap->$prop == str_replace( '_terms', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
| 368 |
+
)
|
| 369 |
+
|
| 370 |
+
&& ( in_array( $prop, array( 'manage_terms', 'edit_terms', 'delete_terms', 'assign_terms' ) )
|
| 371 |
+
|| ( $cme_cap_helper->all_type_caps[ $type_obj->cap->$prop ] <= 1 )
|
| 372 |
+
|| $type_obj->cap->$prop == 'upload_files' && 'create_posts' == $prop && 'attachment' == $type_obj->name
|
| 373 |
+
|| $type_obj->cap->$prop == str_replace( '_posts', "_{$type_obj->name}s", $prop )
|
| 374 |
+
|| $type_obj->cap->$prop == str_replace( '_pages', "_{$type_obj->name}s", $prop )
|
| 375 |
+
|| $type_obj->cap->$prop == str_replace( '_posts', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
| 376 |
+
|| $type_obj->cap->$prop == str_replace( '_pages', "_" . _cme_get_plural($type_obj->name, $type_obj), $prop )
|
| 377 |
+
)
|
| 378 |
) {
|
| 379 |
+
// only present these term caps up top if we are ensuring that they get enforced separately from manage_terms
|
| 380 |
+
if ( in_array( $prop, array( 'edit_terms', 'delete_terms', 'assign_terms' ) ) && ( ! in_array( $type_obj->name, cme_get_detailed_taxonomies() ) || defined( 'OLD_PRESSPERMIT_ACTIVE' ) ) ) {
|
| 381 |
+
continue;
|
| 382 |
+
}
|
| 383 |
+
|
| 384 |
$cap_name = $type_obj->cap->$prop;
|
| 385 |
|
| 386 |
if ( 'taxonomy' == $item_type )
|
| 405 |
$type_caps [$cap_name] = true;
|
| 406 |
$display_row = true;
|
| 407 |
}
|
| 408 |
+
} else {
|
| 409 |
+
//$td_classes []= "cap-unreg";
|
| 410 |
+
$title = 'title="' . sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) ) . '"';
|
| 411 |
+
}
|
| 412 |
|
| 413 |
+
if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
|
| 414 |
$td_classes []= "cap-neg";
|
| 415 |
+
}
|
| 416 |
+
} else {
|
| 417 |
$td_classes []= "cap-unreg";
|
| 418 |
+
}
|
| 419 |
|
| 420 |
$td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
|
| 421 |
|
| 422 |
+
$row .= "<td $td_class $title><span class='cap-x'>X</span>$checkbox";
|
| 423 |
|
| 424 |
if ( false !== strpos( $td_class, 'cap-neg' ) )
|
| 425 |
$row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
|
| 458 |
/* ]]> */
|
| 459 |
</script>
|
| 460 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 461 |
|
| 462 |
echo '<p> </p><h3>' . __( 'Other WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
|
| 463 |
echo '<table width="100%" class="form-table cme-checklist"><tr>';
|
| 464 |
|
|
|
|
| 465 |
$checks_per_row = get_option( 'cme_form-rows', 5 );
|
| 466 |
$i = 0; $first_row = true;
|
| 467 |
|
| 468 |
+
$core_caps = _cme_core_caps();
|
| 469 |
foreach( array_keys($core_caps) as $cap_name ) {
|
| 470 |
if ( ! $is_administrator && ! current_user_can($cap_name) )
|
| 471 |
continue;
|
| 490 |
$disabled = '';
|
| 491 |
$checked = checked(1, ! empty($rcaps[$cap_name]), false );
|
| 492 |
$lock_capability = false;
|
| 493 |
+
$title = $title_text;
|
| 494 |
|
| 495 |
if ( 'read' == $cap_name ) {
|
| 496 |
+
if ( ! empty( $block_read_removal ) ) {
|
| 497 |
// prevent the read capability from being removed from a core role, but don't force it to be added
|
| 498 |
if ( $checked || apply_filters( 'pp_caps_force_capability_storage', false, 'read', $default ) ) {
|
| 499 |
if ( apply_filters( 'pp_caps_lock_capability', true, 'read', $default ) ) {
|
| 500 |
$lock_capability = true;
|
| 501 |
$class .= ' cap-locked';
|
| 502 |
$disabled = 'disabled="disabled"';
|
| 503 |
+
if ( 'administrator' != $this->current ) {
|
| 504 |
+
$title = esc_attr( __('Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add "dashboard_lockout_ok" capability', 'capsman-enhanced' ) );
|
| 505 |
+
}
|
| 506 |
}
|
| 507 |
}
|
| 508 |
}
|
| 509 |
}
|
| 510 |
|
| 511 |
?>
|
| 512 |
+
<td class="<?php echo $class; ?>"><span class="cap-x">X</span><label for="caps[<?php echo $cap_name; ?>]" title="<?php echo $title;?>"><input id=caps[<?php echo $cap_name; ?>] type="checkbox" name="caps[<?php echo $cap_name; ?>]" value="1" <?php echo $checked . $disabled;?> />
|
| 513 |
<span>
|
| 514 |
<?php
|
| 515 |
echo str_replace( '_', ' ', $cap_name );
|
| 667 |
</table>
|
| 668 |
|
| 669 |
<br />
|
| 670 |
+
<?php if ( ! defined('PRESSPERMIT_ACTIVE') || capsman_get_pp_option('display_hints') ) :?>
|
| 671 |
<div class="cme-subtext">
|
| 672 |
<?php _e( 'Note: Underscores replace spaces in stored capability name ("edit users" => "edit_users").', 'capsman-enhanced' ); ?>
|
| 673 |
</div>
|
| 678 |
</dl>
|
| 679 |
|
| 680 |
<?php
|
| 681 |
+
$support_pp_only_roles = ( defined('PRESSPERMIT_ACTIVE') ) ? $pp_ui->pp_only_roles_ui( $default ) : false;
|
| 682 |
cme_network_role_ui( $default );
|
| 683 |
?>
|
| 684 |
|
| 688 |
<input type="submit" name="SaveRole" value="<?php _e('Save Changes', 'capsman-enhanced') ?>" class="button-primary" />
|
| 689 |
|
| 690 |
<?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
|
| 691 |
+
<a class="ak-delete" title="<?php echo esc_attr(__('Delete this role', 'capsman-enhanced')) ?>" href="<?php echo wp_nonce_url("admin.php?page={$this->ID}&action=delete&role={$default}", 'delete-role_' . $default); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete the %s role.\n\n 'Cancel' to stop, 'OK' to delete.", 'capsman-enhanced'), $roles[$default])); ?>') ) { return true;}return false;"><?php _e('Delete Role', 'capsman-enhanced')?></a>
|
| 692 |
<?php endif; ?>
|
| 693 |
</p>
|
| 694 |
|
| 719 |
<dt><?php _e('Create New Role', 'capsman-enhanced'); ?></dt>
|
| 720 |
<dd style="text-align:center;">
|
| 721 |
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
| 722 |
+
<p><input type="text" name="create-name"" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
|
| 723 |
|
| 724 |
<?php if( $support_pp_only_roles ) : ?>
|
| 725 |
<label for="new_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="new_role_pp_only" id="new_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
| 735 |
<dt><?php defined('WPLANG') && WPLANG ? _e('Copy this role to', 'capsman-enhanced') : printf( 'Copy %s Role', $roles[$default] ); ?></dt>
|
| 736 |
<dd style="text-align:center;">
|
| 737 |
<?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
|
| 738 |
+
<p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
|
| 739 |
|
| 740 |
<?php if( $support_pp_only_roles ) : ?>
|
| 741 |
<label for="copy_role_pp_only" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"> <input type="checkbox" name="copy_role_pp_only" id="copy_role_pp_only" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
|
| 750 |
<dl>
|
| 751 |
<dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
|
| 752 |
<dd style="text-align:center;">
|
| 753 |
+
<p><input type="text" name="capability-name" class="regular-text" placeholder="<?php echo 'capability_name';?>" /><br />
|
| 754 |
<input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
|
| 755 |
</dd>
|
| 756 |
</dl>
|
| 757 |
|
| 758 |
+
<dl class="cme-backup-tool">
|
| 759 |
<dt><?php _e('Backup Tool', 'capsman-enhanced'); ?></dt>
|
| 760 |
<dd style="text-align:center;">
|
| 761 |
<p><a href="tools.php?page=capsman-tool"><?php _e('Backup / Restore Roles', 'capsman-enhanced');?></a></p>
|
| 777 |
$url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
|
| 778 |
?>
|
| 779 |
<li><a class="thickbox" href="<?php echo $url;?>"><?php _e('Revisionary', 'capsman-enhanced');?></a></li>
|
| 780 |
+
<li class="publishpress-contact"><a href="https://publishpress.com/contact" target="_blank"><?php _e('Help / Contact Form', 'capsman-enhanced');?></a></li>
|
| 781 |
</ul>
|
| 782 |
</dl>
|
| 783 |
|
| 784 |
+
<?php
|
| 785 |
+
$pp_ui->pp_types_ui( $defined['type'] );
|
| 786 |
+
$pp_ui->pp_taxonomies_ui( $defined['taxonomy'] );
|
| 787 |
?>
|
| 788 |
</td>
|
| 789 |
</tr>
|
includes/cap-helper.php
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
| 3 |
+
|
| 4 |
+
// @todo: port improvements back to PP Core
|
| 5 |
+
|
| 6 |
+
class CME_Cap_Helper {
|
| 7 |
+
var $all_taxonomy_caps = array(); // $all_taxonomy_caps = array of capability names
|
| 8 |
+
var $all_type_caps = array(); // $all_type_caps = array of capability names
|
| 9 |
+
var $processed_types = array();
|
| 10 |
+
var $processed_taxonomies = array();
|
| 11 |
+
|
| 12 |
+
function __construct() {
|
| 13 |
+
$this->refresh();
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
function refresh() {
|
| 17 |
+
$this->force_distinct_post_caps();
|
| 18 |
+
|
| 19 |
+
// Work around bug in More Taxonomies (and possibly other plugins) where category taxonomy is overriden without setting it public
|
| 20 |
+
foreach( array( 'category', 'post_tag' ) as $taxonomy ) {
|
| 21 |
+
global $wp_taxonomies;
|
| 22 |
+
if ( isset( $wp_taxonomies[$taxonomy] ) )
|
| 23 |
+
$wp_taxonomies[$taxonomy]->public = true;
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
$this->force_distinct_taxonomy_caps();
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
function force_distinct_post_caps() { // for selected post types (as stored in option array pp_enabled_post_types)
|
| 30 |
+
global $wp_post_types, $wp_roles;
|
| 31 |
+
|
| 32 |
+
$core_meta_caps = array_fill_keys( array( 'read_post', 'edit_post', 'delete_post' ), true );
|
| 33 |
+
|
| 34 |
+
$append_caps = array( 'edit_published_posts' => 'edit_posts', 'edit_private_posts' => 'edit_posts', 'delete_posts' => 'edit_posts', 'delete_others_posts' => 'delete_posts', 'delete_published_posts' => 'delete_posts', 'delete_private_posts' => 'delete_posts', 'read' => 'read' );
|
| 35 |
+
|
| 36 |
+
if ( get_option('pp_define_create_posts_cap') ) {
|
| 37 |
+
foreach( array( 'post', 'page' ) as $post_type ) {
|
| 38 |
+
if ( $wp_post_types[$post_type]->cap->create_posts == $wp_post_types[$post_type]->cap->edit_posts ) {
|
| 39 |
+
$wp_post_types[$post_type]->cap->create_posts = "create_{$post_type}s";
|
| 40 |
+
}
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
foreach( cme_get_assisted_post_types() as $post_type ) {
|
| 44 |
+
if ( ! in_array( $post_type, array( 'post', 'page' ) ) ) {
|
| 45 |
+
if ( $wp_post_types[$post_type]->cap->create_posts == $wp_post_types[$post_type]->cap->edit_posts ) {
|
| 46 |
+
$wp_post_types[$post_type]->cap->create_posts = str_replace( 'edit_', 'create_', $wp_post_types[$post_type]->cap->edit_posts );
|
| 47 |
+
}
|
| 48 |
+
}
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
$append_caps['create_posts'] = 'create_posts';
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
// count the number of post types that use each capability
|
| 55 |
+
foreach( $wp_post_types as $post_type => $type_obj ) {
|
| 56 |
+
foreach( array_unique( (array) $type_obj->cap ) as $cap_name ) {
|
| 57 |
+
if ( ! isset( $this->all_type_caps[$cap_name] ) ) {
|
| 58 |
+
$this->all_type_caps[$cap_name] = 1;
|
| 59 |
+
} else {
|
| 60 |
+
$this->all_type_caps[$cap_name]++;
|
| 61 |
+
}
|
| 62 |
+
}
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
$post_caps = (array) $wp_post_types['post']->cap;
|
| 66 |
+
$page_caps = ( isset( $wp_post_types['page'] ) ) ? (array) $wp_post_types['page']->cap : array();
|
| 67 |
+
|
| 68 |
+
$enabled_types = array_diff( cme_get_assisted_post_types(), $this->processed_types );
|
| 69 |
+
|
| 70 |
+
// post types which are enabled for PP filtering must have distinct type-related cap definitions
|
| 71 |
+
foreach( $enabled_types as $post_type ) {
|
| 72 |
+
// append missing capability definitions
|
| 73 |
+
foreach( $append_caps as $prop => $default ) {
|
| 74 |
+
if ( ! isset( $wp_post_types[$post_type]->cap->$prop ) ) {
|
| 75 |
+
$wp_post_types[$post_type]->cap->$prop = ( 'read' == $prop ) ? 'read' : $wp_post_types[$post_type]->cap->$default;
|
| 76 |
+
}
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
$wp_post_types[$post_type]->map_meta_cap = true;
|
| 80 |
+
|
| 81 |
+
$type_caps = array_diff_key( (array) $wp_post_types[$post_type]->cap, $core_meta_caps );
|
| 82 |
+
|
| 83 |
+
$cap_base = ( 'attachment' == $post_type ) ? 'file' : $post_type;
|
| 84 |
+
|
| 85 |
+
$cap_properties = array_keys( $type_caps );
|
| 86 |
+
|
| 87 |
+
if ( 'attachment' == $post_type ) {
|
| 88 |
+
$cap_properties = array_diff( $cap_properties, array( 'publish_posts', 'edit_published_posts', 'delete_published_posts', 'edit_private_posts', 'delete_private_posts', 'read_private_posts' ) );
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
// 'read' is not converted to a type-specific equivalent, so disregard it for perf.
|
| 92 |
+
$cap_properties = array_diff( $cap_properties, array( 'read' ) );
|
| 93 |
+
|
| 94 |
+
foreach( $cap_properties as $k => $cap_property ) {
|
| 95 |
+
// If a cap property is set to one of the generic post type's caps, we will replace it
|
| 96 |
+
if ( ( 'post' != $post_type ) && in_array( $type_caps[$cap_property], $post_caps ) ) {
|
| 97 |
+
continue;
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
if ( ( 'page' != $post_type ) && in_array( $type_caps[$cap_property], $page_caps ) ) {
|
| 101 |
+
continue;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
// If a cap property is non-generic and not used by any other post types, keep it as is
|
| 105 |
+
if ( $this->all_type_caps[ $type_caps[$cap_property] ] <= 1 ) {
|
| 106 |
+
unset( $cap_properties[$k] );
|
| 107 |
+
|
| 108 |
+
// If a cap property is used by any other post types, still keep it if it is the standard type-specific capability form for this post type
|
| 109 |
+
} elseif ( ( $type_caps[$cap_property] == str_replace( "_posts", "_{$post_type}s", $cap_property ) )
|
| 110 |
+
|| ( $type_caps[$cap_property] == str_replace( "_pages", "_{$post_type}s", $cap_property ) ) ) {
|
| 111 |
+
|
| 112 |
+
unset( $cap_properties[$k] );
|
| 113 |
+
|
| 114 |
+
// If a cap property is used by any other post types, still keep it if it is the custom pluralized type-specific capability form for this post type
|
| 115 |
+
} else {
|
| 116 |
+
$plural_type = _cme_get_plural( $post_type, $wp_post_types[$post_type] );
|
| 117 |
+
if ( ( $type_caps[$cap_property] == str_replace( "_posts", "_{$plural_type}", $cap_property ) )
|
| 118 |
+
|| ( $type_caps[$cap_property] == str_replace( "_pages", "_{$plural_type}", $cap_property ) ) ) {
|
| 119 |
+
|
| 120 |
+
unset( $cap_properties[$k] );
|
| 121 |
+
}
|
| 122 |
+
}
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
if ( ! $cap_properties ) {
|
| 126 |
+
// This post type has no defaulted cap properties that need to be made type-specific.
|
| 127 |
+
continue;
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
// Default plural slug
|
| 131 |
+
//$plural_type = "{$cap_base}s";
|
| 132 |
+
|
| 133 |
+
$plural_type = _cme_get_plural( $post_type, $wp_post_types[$post_type] );
|
| 134 |
+
|
| 135 |
+
if ( "{$cap_base}s" != $plural_type ) {
|
| 136 |
+
// If any role already has capabilities based on simple plural form, keep using that instead
|
| 137 |
+
foreach ( $wp_roles as $role ) {
|
| 138 |
+
foreach( array_keys( $type_caps ) as $cap_property ) {
|
| 139 |
+
$generic_type = ( strpos( $cap_property, '_pages' ) ) ? 'page' : 'post';
|
| 140 |
+
|
| 141 |
+
$simple_plural = str_replace( "_{$generic_type}s", "_{$cap_base}s", $cap_property );
|
| 142 |
+
|
| 143 |
+
if ( isset( $role->capabilities[$simple_plural] ) ) {
|
| 144 |
+
// A simple plural capability was manually stored to a role, so stick with that form
|
| 145 |
+
$plural_type = "{$cap_base}s";
|
| 146 |
+
break 2;
|
| 147 |
+
}
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
// Replace "edit_posts" and other post type caps with an equivalent for this post type, using pluralization determined above.
|
| 153 |
+
// If a this is a problem, register the post type with an array capability_type arg including the desired plural form.
|
| 154 |
+
// It is also possible to modify existing $wp_post_types[$post_type]->cap values by hooking to the init action at priority 40.
|
| 155 |
+
foreach( $cap_properties as $cap_property ) {
|
| 156 |
+
// create_posts capability may be defaulted to "edit_posts" / "edit_pages"
|
| 157 |
+
$generic_type = ( strpos( $cap_property, '_pages' ) ) ? 'page' : 'post';
|
| 158 |
+
|
| 159 |
+
$target_cap_property = ( 'create_posts' == $cap_property ) ? $wp_post_types[$generic_type]->cap->$cap_property : $cap_property;
|
| 160 |
+
|
| 161 |
+
if ( $plural_type != "{$cap_base}s" ) {
|
| 162 |
+
// Since plural form is not simple, first replace plurals ('edit_posts' > 'edit_doohickies')
|
| 163 |
+
$wp_post_types[$post_type]->cap->$cap_property = str_replace( "_{$generic_type}s", "_{$plural_type}", $target_cap_property );
|
| 164 |
+
} else {
|
| 165 |
+
// Replace based on simple plural ('edit_posts' > 'edit_doohickys')
|
| 166 |
+
$wp_post_types[$post_type]->cap->$cap_property = str_replace( "_{$generic_type}", "_{$cap_base}", $target_cap_property );
|
| 167 |
+
}
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
// Force distinct capability_type. This may be an array with plural form in second element (but not useful here if set as default 'post' / 'posts' ).
|
| 171 |
+
// Some caution here against changing the variable data type. Although array is supported, other plugin code may assume string.
|
| 172 |
+
if ( is_array( $wp_post_types[$post_type]->capability_type ) ) {
|
| 173 |
+
$wp_post_types[$post_type]->capability_type = array( $post_type, $plural_type );
|
| 174 |
+
|
| 175 |
+
} elseif ( in_array( $wp_post_types[$post_type]->capability_type, array('post','page') ) ) {
|
| 176 |
+
$wp_post_types[$post_type]->capability_type = $post_type;
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
$type_caps = array_diff_key( (array) $wp_post_types[$post_type]->cap, $core_meta_caps );
|
| 180 |
+
|
| 181 |
+
$wp_post_types[$post_type]->cap = (object) array_merge( (array) $wp_post_types[$post_type]->cap, $type_caps );
|
| 182 |
+
|
| 183 |
+
//$this->all_type_caps = array_merge( $this->all_type_caps, array_fill_keys( $type_caps, true ) );
|
| 184 |
+
|
| 185 |
+
foreach( array_unique( (array) $wp_post_types[$post_type]->cap ) as $cap_name ) {
|
| 186 |
+
if ( ! isset( $this->all_type_caps[$cap_name] ) ) {
|
| 187 |
+
$this->all_type_caps[$cap_name] = 1;
|
| 188 |
+
} else {
|
| 189 |
+
$this->all_type_caps[$cap_name]++;
|
| 190 |
+
}
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
} // end foreach post type
|
| 194 |
+
|
| 195 |
+
$this->processed_types = array_merge( $this->processed_types, $enabled_types );
|
| 196 |
+
|
| 197 |
+
// need this for casting to other types even if "post" type is not enabled for PP filtering
|
| 198 |
+
$wp_post_types['post']->cap->set_posts_status = 'set_posts_status';
|
| 199 |
+
|
| 200 |
+
if ( current_user_can( 'administrator' ) || current_user_can( 'pp_administer_content' ) ) { // @ todo: support restricted administrator
|
| 201 |
+
global $current_user;
|
| 202 |
+
$current_user->allcaps = array_merge( $current_user->allcaps, array_fill_keys( array_keys( $this->all_type_caps ), true ) );
|
| 203 |
+
|
| 204 |
+
global $pp_current_user;
|
| 205 |
+
if ( ! empty( $pp_current_user ) ) {
|
| 206 |
+
$pp_current_user->allcaps = array_merge( $pp_current_user->allcaps, array_fill_keys( array_keys( $this->all_type_caps ), true ) );
|
| 207 |
+
}
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
do_action( 'cme_distinct_post_capabilities', $enabled_types );
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
function force_distinct_taxonomy_caps() {
|
| 214 |
+
global $wp_taxonomies, $wp_roles;
|
| 215 |
+
|
| 216 |
+
$use_taxonomies = array_diff( cme_get_assisted_taxonomies(), $this->processed_taxonomies );
|
| 217 |
+
$detailed_taxonomies = cme_get_detailed_taxonomies();
|
| 218 |
+
|
| 219 |
+
$tx_specific_caps = array( 'manage_terms' => 'manage_terms', 'edit_terms' => 'manage_terms', 'delete_terms' => 'manage_terms' );
|
| 220 |
+
$tx_detail_caps = array( 'edit_terms' => 'edit_terms', 'delete_terms' => 'delete_terms', 'assign_terms' => 'assign_terms' );
|
| 221 |
+
|
| 222 |
+
$core_tx_caps = array();
|
| 223 |
+
$this->all_taxonomy_caps = array();
|
| 224 |
+
|
| 225 |
+
// currently, disallow category and post_tag cap use by selected custom taxonomies, but don't require category and post_tag to have different caps
|
| 226 |
+
$core_taxonomies = array( 'category' );
|
| 227 |
+
foreach( $core_taxonomies as $taxonomy ) {
|
| 228 |
+
foreach( array_keys($tx_specific_caps) as $cap_property ) {
|
| 229 |
+
$core_tx_caps[ $wp_taxonomies[$taxonomy]->cap->$cap_property ] = true;
|
| 230 |
+
}
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
// count the number of taxonomies that use each capability
|
| 234 |
+
foreach( $wp_taxonomies as $taxonomy => $tx_obj ) {
|
| 235 |
+
$this_tx_caps = array_unique( (array) $tx_obj->cap );
|
| 236 |
+
|
| 237 |
+
foreach( $this_tx_caps as $cap_name ) {
|
| 238 |
+
if ( ! isset( $this->all_taxonomy_caps[$cap_name] ) ) {
|
| 239 |
+
$this->all_taxonomy_caps[$cap_name] = 1;
|
| 240 |
+
} else {
|
| 241 |
+
$this->all_taxonomy_caps[$cap_name]++;
|
| 242 |
+
}
|
| 243 |
+
}
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
foreach( array_keys($wp_taxonomies) as $taxonomy ) {
|
| 247 |
+
if ( 'yes' == $wp_taxonomies[$taxonomy]->public ) { // clean up a GD Taxonomies quirk (otherwise wp_get_taxonomy_object will fail when filtering for public => true)
|
| 248 |
+
$wp_taxonomies[$taxonomy]->public = true;
|
| 249 |
+
|
| 250 |
+
} elseif ( ( '' === $wp_taxonomies[$taxonomy]->public ) && ( ! empty( $wp_taxonomies[$taxonomy]->query_var_bool ) ) ) { // clean up a More Taxonomies quirk (otherwise wp_get_taxonomy_object will fail when filtering for public => true)
|
| 251 |
+
$wp_taxonomies[$taxonomy]->public = true;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
|
| 255 |
+
|
| 256 |
+
if ( ( ! in_array($taxonomy, $use_taxonomies) || empty( $wp_taxonomies[$taxonomy]->public ) ) && ( 'nav_menu' != $taxonomy ) )
|
| 257 |
+
continue;
|
| 258 |
+
|
| 259 |
+
if ( ! in_array( $taxonomy, $core_taxonomies ) ) {
|
| 260 |
+
// Default plural slug
|
| 261 |
+
//$plural_type = "{$taxonomy}s";
|
| 262 |
+
|
| 263 |
+
$plural_type = _cme_get_plural( $taxonomy, $wp_taxonomies[$taxonomy] );
|
| 264 |
+
|
| 265 |
+
if ( "{$taxonomy}s" != $plural_type ) {
|
| 266 |
+
// ... unless any role already has capabilities based on simple plural form
|
| 267 |
+
foreach ( $wp_roles as $role ) {
|
| 268 |
+
foreach( array_keys( $tx_caps ) as $cap_property ) {
|
| 269 |
+
$simple_plural = str_replace( "_terms", "_{$taxonomy}s", $cap_property );
|
| 270 |
+
|
| 271 |
+
if ( isset( $role->capabilities[$simple_plural] ) ) {
|
| 272 |
+
// A simple plural capability was manually stored to a role, so stick with that form
|
| 273 |
+
$plural_type = "{$taxonomy}s";
|
| 274 |
+
break 2;
|
| 275 |
+
}
|
| 276 |
+
}
|
| 277 |
+
}
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
// First, force taxonomy-specific capabilities.
|
| 281 |
+
// (Don't allow any capability defined for this taxonomy to match any capability defined for category or post tag (unless this IS category or post tag)
|
| 282 |
+
foreach( $tx_specific_caps as $cap_property => $replacement_cap_format ) {
|
| 283 |
+
// If this capability is also defined as another taxonomy cap, replace it
|
| 284 |
+
if ( ! empty($tx_caps[$cap_property]) && ( $this->all_taxonomy_caps[ $tx_caps[$cap_property] ] > 1 ) ) { // note: greater than check is on array value, not count
|
| 285 |
+
|
| 286 |
+
// ... but leave it alone if it is a standard taxonomy-specific cap for this taxonomy
|
| 287 |
+
if ( ( $tx_caps[$cap_property] != str_replace( '_terms', "_{$plural_type}", $cap_property ) )
|
| 288 |
+
&& ( $tx_caps[$cap_property] != str_replace( '_terms', "_{$taxonomy}s", $cap_property ) ) ) {
|
| 289 |
+
|
| 290 |
+
$wp_taxonomies[$taxonomy]->cap->$cap_property = str_replace( '_terms', "_{$plural_type}", $replacement_cap_format );
|
| 291 |
+
}
|
| 292 |
+
}
|
| 293 |
+
}
|
| 294 |
+
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
|
| 295 |
+
|
| 296 |
+
// Optionally, also force edit_terms and delete_terms to be distinct from manage_terms, and force a distinct assign_terms capability
|
| 297 |
+
if ( in_array( $taxonomy, $detailed_taxonomies ) ) {
|
| 298 |
+
foreach( $tx_detail_caps as $cap_property => $replacement_cap_format ) {
|
| 299 |
+
if ( ! empty( $this->all_taxonomy_caps[ $tx_caps[$cap_property] ] ) ) {
|
| 300 |
+
// assign_terms is otherwise not forced taxonomy-distinct
|
| 301 |
+
$wp_taxonomies[$taxonomy]->cap->$cap_property = str_replace( '_terms', "_{$plural_type}", $replacement_cap_format );
|
| 302 |
+
break;
|
| 303 |
+
}
|
| 304 |
+
|
| 305 |
+
foreach( $tx_caps as $other_cap_property => $other_cap ) {
|
| 306 |
+
if ( $other_cap_property == $cap_property ) {
|
| 307 |
+
continue;
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
if ( $other_cap == $tx_caps[$cap_property] ) {
|
| 311 |
+
$wp_taxonomies[$taxonomy]->cap->$cap_property = str_replace( '_terms', "_{$plural_type}", $replacement_cap_format );
|
| 312 |
+
break;
|
| 313 |
+
}
|
| 314 |
+
}
|
| 315 |
+
}
|
| 316 |
+
}
|
| 317 |
+
|
| 318 |
+
$tx_caps = (array) $wp_taxonomies[$taxonomy]->cap;
|
| 319 |
+
}
|
| 320 |
+
|
| 321 |
+
foreach( array_unique( $tx_caps ) as $cap_name ) {
|
| 322 |
+
if ( ! isset( $this->all_taxonomy_caps[$cap_name] ) ) {
|
| 323 |
+
$this->all_taxonomy_caps[$cap_name] = 1;
|
| 324 |
+
} else {
|
| 325 |
+
$this->all_taxonomy_caps[$cap_name]++;
|
| 326 |
+
}
|
| 327 |
+
}
|
| 328 |
+
}
|
| 329 |
+
|
| 330 |
+
$this->all_taxonomy_caps = array_merge( $this->all_taxonomy_caps, array( 'assign_term' => true ) );
|
| 331 |
+
|
| 332 |
+
if ( current_user_can( 'administrator' ) || current_user_can( 'pp_administer_content' ) ) { // @ todo: support restricted administrator
|
| 333 |
+
global $current_user;
|
| 334 |
+
$current_user->allcaps = array_merge( $current_user->allcaps, array_fill_keys( array_keys( $this->all_taxonomy_caps ), true ) );
|
| 335 |
+
|
| 336 |
+
global $pp_current_user;
|
| 337 |
+
if ( ! empty( $pp_current_user ) ) {
|
| 338 |
+
$pp_current_user->allcaps = array_merge( $pp_current_user->allcaps, array_fill_keys( array_keys( $this->all_taxonomy_caps ), true ) );
|
| 339 |
+
}
|
| 340 |
+
}
|
| 341 |
+
|
| 342 |
+
// make sure Nav Menu Managers can also add menu items
|
| 343 |
+
global $wp_taxonomies;
|
| 344 |
+
$wp_taxonomies['nav_menu']->cap->assign_terms = 'manage_nav_menus';
|
| 345 |
+
|
| 346 |
+
$this->processed_taxonomies = array_merge( $this->processed_taxonomies, $use_taxonomies );
|
| 347 |
+
}
|
| 348 |
+
} // end class CME_Cap_Helper
|
includes/filters-woocommerce.php
CHANGED
|
@@ -11,9 +11,26 @@ class CME_WooCommerce {
|
|
| 11 |
if ( ! empty( $current_user->allcaps['duplicate_products'] ) ) {
|
| 12 |
add_filter( 'woocommerce_duplicate_product_capability', array( &$this, 'implement_duplicate_product_cap' ) );
|
| 13 |
}
|
|
|
|
|
|
|
|
|
|
| 14 |
}
|
| 15 |
|
| 16 |
function implement_duplicate_product_cap( $cap ) {
|
| 17 |
return 'duplicate_products';
|
| 18 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
}
|
| 11 |
if ( ! empty( $current_user->allcaps['duplicate_products'] ) ) {
|
| 12 |
add_filter( 'woocommerce_duplicate_product_capability', array( &$this, 'implement_duplicate_product_cap' ) );
|
| 13 |
}
|
| 14 |
+
|
| 15 |
+
// Ensure orders can be edited or added based the edit_orders / create_orders capability
|
| 16 |
+
add_action( '_admin_menu', array( &$this, 'support_order_caps' ), 1 );
|
| 17 |
}
|
| 18 |
|
| 19 |
function implement_duplicate_product_cap( $cap ) {
|
| 20 |
return 'duplicate_products';
|
| 21 |
}
|
| 22 |
+
|
| 23 |
+
function support_order_caps() {
|
| 24 |
+
global $submenu;
|
| 25 |
+
|
| 26 |
+
if ( $type_obj = get_post_type_object( 'shop_order' ) ) {
|
| 27 |
+
$key = 'edit.php?post_type=shop_order';
|
| 28 |
+
if ( ! isset( $submenu[$key] ) ) {
|
| 29 |
+
$submenu[$key] = array();
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
$submenu[$key][5] = array( 0 => sprintf( __( 'All %s' ), $type_obj->labels->name ), 1 => $type_obj->cap->edit_posts, 2 => 'edit.php' );
|
| 33 |
+
$submenu[$key][10] = array( __('Add New'), 1 => $type_obj->cap->create_posts, 2 => 'post-new.php?post_type=shop_order' );
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
}
|
includes/filters.php
CHANGED
|
@@ -19,7 +19,142 @@ class CME_Extensions {
|
|
| 19 |
global $cme_extensions;
|
| 20 |
$cme_extensions = new CME_Extensions();
|
| 21 |
|
|
|
|
|
|
|
| 22 |
if ( defined( 'WC_PLUGIN_FILE' ) ) {
|
| 23 |
require_once ( dirname(__FILE__) . '/filters-woocommerce.php' );
|
| 24 |
$cme_extensions->add( new CME_WooCommerce() );
|
| 25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
global $cme_extensions;
|
| 20 |
$cme_extensions = new CME_Extensions();
|
| 21 |
|
| 22 |
+
add_filter( 'map_meta_cap', '_cme_remap_term_meta_cap', 5, 4 );
|
| 23 |
+
|
| 24 |
if ( defined( 'WC_PLUGIN_FILE' ) ) {
|
| 25 |
require_once ( dirname(__FILE__) . '/filters-woocommerce.php' );
|
| 26 |
$cme_extensions->add( new CME_WooCommerce() );
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
// allow edit_terms, delete_terms, assign_terms capabilities to function separately from manage_terms
|
| 30 |
+
function _cme_remap_term_meta_cap ( $caps, $cap, $user_id, $args ) {
|
| 31 |
+
global $current_user, $cme_cap_helper;
|
| 32 |
+
|
| 33 |
+
if ( ! empty( $cme_cap_helper ) ) {
|
| 34 |
+
$cap_helper = $cme_cap_helper;
|
| 35 |
+
} else {
|
| 36 |
+
global $ppce_cap_helper;
|
| 37 |
+
if ( ! empty( $ppce_cap_helper ) ) {
|
| 38 |
+
$cap_helper = $ppce_cap_helper;
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
if ( empty($cap_helper) || empty( $cap_helper->all_taxonomy_caps[$cap] ) ) {
|
| 43 |
+
return $caps;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
if ( ! $enabled_taxonomies = array_intersect( cme_get_assisted_taxonomies(), cme_get_detailed_taxonomies() ) ) {
|
| 47 |
+
return $caps;
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
// meta caps
|
| 51 |
+
switch ( $cap ) {
|
| 52 |
+
case 'edit_term':
|
| 53 |
+
case 'delete_term':
|
| 54 |
+
case 'assign_term':
|
| 55 |
+
$tx_cap = $cap . 's';
|
| 56 |
+
|
| 57 |
+
if ( ! is_array($args) || empty($args[0]) ) {
|
| 58 |
+
return $caps;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
if ( $term = get_term( $args[0] ) ) {
|
| 62 |
+
if ( in_array( $term->taxonomy, $enabled_taxonomies ) ) {
|
| 63 |
+
if ( $tx_obj = get_taxonomy( $term->taxonomy ) ) {
|
| 64 |
+
|
| 65 |
+
// If this taxonomy is set for distinct capabilities, we don't want manage_terms capability to be implicitly assigned.
|
| 66 |
+
if ( empty( $current_user->allcaps[$tx_obj->cap->manage_terms] ) ) {
|
| 67 |
+
$caps = array_diff( $caps, (array) $tx_obj->cap->manage_terms );
|
| 68 |
+
}
|
| 69 |
+
$caps[]= $tx_obj->cap->$tx_cap;
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
break;
|
| 74 |
+
default:
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
// primitive caps
|
| 78 |
+
foreach( $enabled_taxonomies as $taxonomy ) {
|
| 79 |
+
if ( ! $tx_obj = get_taxonomy( $taxonomy ) ) {
|
| 80 |
+
continue;
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
foreach( array( 'edit_terms', 'delete_terms', 'assign_terms' ) as $cap_prop ) {
|
| 84 |
+
if ( $cap == $tx_obj->cap->$cap_prop ) {
|
| 85 |
+
|
| 86 |
+
// If this taxonomy is set for distinct capabilities, we don't want manage_terms capability to be implicitly assigned.
|
| 87 |
+
if ( empty( $current_user->allcaps[$tx_obj->cap->manage_terms] ) ) {
|
| 88 |
+
$caps = array_diff( $caps, (array) $tx_obj->cap->manage_terms );
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
$caps[]= $tx_obj->cap->$cap_prop;
|
| 92 |
+
return $caps;
|
| 93 |
+
}
|
| 94 |
+
}
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
return $caps;
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
// Note: this intentionally shares "pp_enabled_post_types" option with Press Permit
|
| 101 |
+
function cme_get_assisted_post_types() {
|
| 102 |
+
$type_args = array( 'public' => true, 'show_ui' => true );
|
| 103 |
+
|
| 104 |
+
$types = get_post_types( $type_args, 'names', 'or' );
|
| 105 |
+
|
| 106 |
+
if ( $omit_types = apply_filters( 'pp_unfiltered_post_types', array( 'wp_block' ) ) ) {
|
| 107 |
+
$post_types = array_diff_key( $types, array_fill_keys( (array) $omit_types, true ) );
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
$enabled = (array) get_option( 'pp_enabled_post_types', array( 'post' => true, 'page' => true ) );
|
| 111 |
+
$post_types = array_intersect( $post_types, array_keys( array_filter( $enabled ) ) );
|
| 112 |
+
|
| 113 |
+
return apply_filters( 'cme_assisted_post_types', $post_types, $type_args );
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
// Note: this intentionally does NOT share Press Permit' option name, for back compat reasons
|
| 117 |
+
// Enabling filtered taxonomies in PP previously did not cause the edit_terms, delete_terms, assign_terms capabilities to be enforced
|
| 118 |
+
function cme_get_assisted_taxonomies() {
|
| 119 |
+
$tx_args = array( 'public' => true );
|
| 120 |
+
|
| 121 |
+
$taxonomies = get_taxonomies( $tx_args );
|
| 122 |
+
|
| 123 |
+
if ( $omit_taxonomies = apply_filters( 'pp_unfiltered_taxonomies', array() ) ) {
|
| 124 |
+
$taxonomies = array_diff_key( $taxonomies, array_fill_keys( (array) $omit_taxonomies, true ) );
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
$enabled = (array) get_option( 'pp_enabled_taxonomies', array() );
|
| 128 |
+
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
| 129 |
+
|
| 130 |
+
return apply_filters( 'cme_assisted_taxonomies', $taxonomies, $tx_args );
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
function cme_get_detailed_taxonomies() {
|
| 134 |
+
$tx_args = array( 'public' => true );
|
| 135 |
+
|
| 136 |
+
$taxonomies = get_taxonomies( $tx_args );
|
| 137 |
+
|
| 138 |
+
if ( $omit_taxonomies = apply_filters( 'pp_unfiltered_taxonomies', array() ) ) {
|
| 139 |
+
$taxonomies = array_diff_key( $taxonomies, array_fill_keys( (array) $omit_taxonomies, true ) );
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
$enabled = (array) get_option( 'cme_detailed_taxonomies', array() );
|
| 143 |
+
$taxonomies = array_intersect( $taxonomies, array_keys( array_filter( $enabled ) ) );
|
| 144 |
+
|
| 145 |
+
return apply_filters( 'cme_detailed_taxonomies', $taxonomies, $tx_args );
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
function _cme_get_plural( $slug, $type_obj = false ) {
|
| 149 |
+
if ( $type_obj && ! empty( $type_obj->rest_base ) && ( $type_obj->rest_base != $slug ) && ( $type_obj->rest_base != "{$slug}s" ) ) {
|
| 150 |
+
// Use plural form from rest_base
|
| 151 |
+
if ( $pos = strpos( $type_obj->rest_base, '/' ) ) {
|
| 152 |
+
return sanitize_key( substr( $type_obj->rest_base, 0, $pos + 1 ) );
|
| 153 |
+
} else {
|
| 154 |
+
return sanitize_key( $type_obj->rest_base );
|
| 155 |
+
}
|
| 156 |
+
} else {
|
| 157 |
+
require_once ( dirname(__FILE__) . '/inflect-cme.php' );
|
| 158 |
+
return sanitize_key( CME_Inflect::pluralize( $slug ) );
|
| 159 |
+
}
|
| 160 |
+
}
|
includes/handler.php
CHANGED
|
@@ -44,7 +44,7 @@ class CapsmanHandler
|
|
| 44 |
|
| 45 |
$this->saveRoleCapabilities($post['current'], $post['caps'], $post['level']);
|
| 46 |
|
| 47 |
-
if ( defined( '
|
| 48 |
// for bbPress < 2.2, need to log customization of roles following bbPress activation
|
| 49 |
$plugins = ( function_exists( 'bbp_get_version' ) && version_compare( bbp_get_version(), '2.2', '<' ) ) ? array( 'bbpress.php' ) : array(); // back compat
|
| 50 |
|
|
@@ -86,20 +86,20 @@ class CapsmanHandler
|
|
| 86 |
$this->cm->message = __('Incorrect capability name.');
|
| 87 |
}
|
| 88 |
|
| 89 |
-
} elseif ( ! empty($post['update_filtered_types']) ) {
|
| 90 |
-
if (
|
| 91 |
-
ak_admin_notify(__('
|
| 92 |
-
} else {
|
| 93 |
-
|
| 94 |
-
}
|
| 95 |
} else {
|
| 96 |
// TODO: Implement exceptions. This must be a fatal error.
|
| 97 |
ak_admin_error(__('Bad form received.', 'capsman-enhanced'));
|
| 98 |
}
|
| 99 |
|
| 100 |
-
if ( ! empty($newrole) && defined('
|
| 101 |
if ( ( ! empty($post['CreateRole']) && ! empty( $_REQUEST['new_role_pp_only'] ) ) || ( ! empty($post['CopyRole']) && ! empty( $_REQUEST['copy_role_pp_only'] ) ) ) {
|
| 102 |
-
$pp_only = (array)
|
| 103 |
$pp_only[]= $newrole;
|
| 104 |
pp_update_option( 'supplemental_role_defs', $pp_only );
|
| 105 |
_cme_pp_default_pattern_role( $newrole );
|
|
@@ -210,7 +210,7 @@ class CapsmanHandler
|
|
| 210 |
}
|
| 211 |
|
| 212 |
// additional safeguard against removal of read capability
|
| 213 |
-
if ( isset( $del_caps['read'] ) &&
|
| 214 |
unset( $del_caps['read'] );
|
| 215 |
}
|
| 216 |
|
| 44 |
|
| 45 |
$this->saveRoleCapabilities($post['current'], $post['caps'], $post['level']);
|
| 46 |
|
| 47 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) ) { // log customized role caps for subsequent restoration
|
| 48 |
// for bbPress < 2.2, need to log customization of roles following bbPress activation
|
| 49 |
$plugins = ( function_exists( 'bbp_get_version' ) && version_compare( bbp_get_version(), '2.2', '<' ) ) ? array( 'bbpress.php' ) : array(); // back compat
|
| 50 |
|
| 86 |
$this->cm->message = __('Incorrect capability name.');
|
| 87 |
}
|
| 88 |
|
| 89 |
+
} elseif ( ! empty($post['update_filtered_types']) || ! empty($post['update_filtered_taxonomies']) || ! empty($post['update_detailed_taxonomies']) ) {
|
| 90 |
+
//if ( /* settings saved successfully on plugins_loaded action */ ) {
|
| 91 |
+
ak_admin_notify(__('Type / Taxonomy settings saved.', 'capsman-enhanced'));
|
| 92 |
+
//} else {
|
| 93 |
+
// ak_admin_error(__('Error saving capability settings.', 'capsman-enhanced'));
|
| 94 |
+
//}
|
| 95 |
} else {
|
| 96 |
// TODO: Implement exceptions. This must be a fatal error.
|
| 97 |
ak_admin_error(__('Bad form received.', 'capsman-enhanced'));
|
| 98 |
}
|
| 99 |
|
| 100 |
+
if ( ! empty($newrole) && defined('PRESSPERMIT_ACTIVE') ) {
|
| 101 |
if ( ( ! empty($post['CreateRole']) && ! empty( $_REQUEST['new_role_pp_only'] ) ) || ( ! empty($post['CopyRole']) && ! empty( $_REQUEST['copy_role_pp_only'] ) ) ) {
|
| 102 |
+
$pp_only = (array) capsman_get_pp_option( 'supplemental_role_defs' );
|
| 103 |
$pp_only[]= $newrole;
|
| 104 |
pp_update_option( 'supplemental_role_defs', $pp_only );
|
| 105 |
_cme_pp_default_pattern_role( $newrole );
|
| 210 |
}
|
| 211 |
|
| 212 |
// additional safeguard against removal of read capability
|
| 213 |
+
if ( isset( $del_caps['read'] ) && _cme_is_read_removal_blocked( $role_name ) ) {
|
| 214 |
unset( $del_caps['read'] );
|
| 215 |
}
|
| 216 |
|
includes/inflect-cme.php
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
/* Inflect class by T. Brian Jones
|
| 5 |
+
/* https://gist.github.com/tbrianjones/ba0460cc1d55f357e00b
|
| 6 |
+
/*
|
| 7 |
+
/* original source: http://kuwamoto.org/2007/12/17/improved-pluralizing-in-php-actionscript-and-ror/
|
| 8 |
+
*/
|
| 9 |
+
|
| 10 |
+
/*
|
| 11 |
+
The MIT License (MIT)
|
| 12 |
+
|
| 13 |
+
Copyright (c) 2015
|
| 14 |
+
|
| 15 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 16 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 17 |
+
in the Software without restriction, including without limitation the rights
|
| 18 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 19 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 20 |
+
furnished to do so, subject to the following conditions:
|
| 21 |
+
|
| 22 |
+
The above copyright notice and this permission notice shall be included in
|
| 23 |
+
all copies or substantial portions of the Software.
|
| 24 |
+
|
| 25 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 26 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 27 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 28 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 29 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 30 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| 31 |
+
THE SOFTWARE.
|
| 32 |
+
*/
|
| 33 |
+
|
| 34 |
+
// ORIGINAL NOTES
|
| 35 |
+
//
|
| 36 |
+
// Thanks to http://www.eval.ca/articles/php-pluralize (MIT license)
|
| 37 |
+
// http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/inflections.rb (MIT license)
|
| 38 |
+
// http://www.fortunecity.com/bally/durrus/153/gramch13.html
|
| 39 |
+
// http://www2.gsu.edu/~wwwesl/egw/crump.htm
|
| 40 |
+
//
|
| 41 |
+
// Changes (12/17/07)
|
| 42 |
+
// Major changes
|
| 43 |
+
// --
|
| 44 |
+
// Fixed irregular noun algorithm to use regular expressions just like the original Ruby source.
|
| 45 |
+
// (this allows for things like fireman -> firemen
|
| 46 |
+
// Fixed the order of the singular array, which was backwards.
|
| 47 |
+
//
|
| 48 |
+
// Minor changes
|
| 49 |
+
// --
|
| 50 |
+
// Removed incorrect pluralization rule for /([^aeiouy]|qu)ies$/ => $1y
|
| 51 |
+
// Expanded on the list of exceptions for *o -> *oes, and removed rule for buffalo -> buffaloes
|
| 52 |
+
// Removed dangerous singularization rule for /([^f])ves$/ => $1fe
|
| 53 |
+
// Added more specific rules for singularizing lives, wives, knives, sheaves, loaves, and leaves and thieves
|
| 54 |
+
// Added exception to /(us)es$/ => $1 rule for houses => house and blouses => blouse
|
| 55 |
+
// Added excpetions for feet, geese and teeth
|
| 56 |
+
// Added rule for deer -> deer
|
| 57 |
+
|
| 58 |
+
// Changes:
|
| 59 |
+
// Removed rule for virus -> viri
|
| 60 |
+
// Added rule for potato -> potatoes
|
| 61 |
+
// Added rule for *us -> *uses
|
| 62 |
+
|
| 63 |
+
// Kevin Behrens : removed singularization code (not needed for CME)
|
| 64 |
+
class CME_Inflect
|
| 65 |
+
{
|
| 66 |
+
static $plural = array(
|
| 67 |
+
'/(quiz)$/i' => "$1zes",
|
| 68 |
+
'/^(ox)$/i' => "$1en",
|
| 69 |
+
'/([m|l])ouse$/i' => "$1ice",
|
| 70 |
+
'/(matr|vert|ind)ix|ex$/i' => "$1ices",
|
| 71 |
+
'/(x|ch|ss|sh)$/i' => "$1es",
|
| 72 |
+
'/([^aeiouy]|qu)y$/i' => "$1ies",
|
| 73 |
+
'/(hive)$/i' => "$1s",
|
| 74 |
+
'/(?:([^f])fe|([lr])f)$/i' => "$1$2ves",
|
| 75 |
+
'/(shea|lea|loa|thie)f$/i' => "$1ves",
|
| 76 |
+
'/sis$/i' => "ses",
|
| 77 |
+
'/([ti])um$/i' => "$1a",
|
| 78 |
+
'/(tomat|potat|ech|her|vet)o$/i'=> "$1oes",
|
| 79 |
+
'/(bu)s$/i' => "$1ses",
|
| 80 |
+
'/(alias)$/i' => "$1es",
|
| 81 |
+
'/(octop)us$/i' => "$1i",
|
| 82 |
+
'/(ax|test)is$/i' => "$1es",
|
| 83 |
+
'/(us)$/i' => "$1es",
|
| 84 |
+
'/s$/i' => "s",
|
| 85 |
+
'/$/' => "s"
|
| 86 |
+
);
|
| 87 |
+
|
| 88 |
+
static $irregular = array(
|
| 89 |
+
'move' => 'moves',
|
| 90 |
+
'foot' => 'feet',
|
| 91 |
+
'goose' => 'geese',
|
| 92 |
+
'sex' => 'sexes',
|
| 93 |
+
'child' => 'children',
|
| 94 |
+
'man' => 'men',
|
| 95 |
+
'tooth' => 'teeth',
|
| 96 |
+
'person' => 'people',
|
| 97 |
+
'valve' => 'valves'
|
| 98 |
+
);
|
| 99 |
+
|
| 100 |
+
static $uncountable = array(
|
| 101 |
+
'sheep',
|
| 102 |
+
'fish',
|
| 103 |
+
'deer',
|
| 104 |
+
'series',
|
| 105 |
+
'species',
|
| 106 |
+
'money',
|
| 107 |
+
'rice',
|
| 108 |
+
'information',
|
| 109 |
+
'equipment'
|
| 110 |
+
);
|
| 111 |
+
|
| 112 |
+
public static function pluralize( $string ) {
|
| 113 |
+
// save some time in the case that singular and plural are the same
|
| 114 |
+
if ( in_array( strtolower( $string ), self::$uncountable ) ) {
|
| 115 |
+
return $string;
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
// check for irregular singular forms
|
| 119 |
+
foreach ( self::$irregular as $pattern => $result ) {
|
| 120 |
+
$pattern = '/' . $pattern . '$/i';
|
| 121 |
+
|
| 122 |
+
if ( preg_match( $pattern, $string ) ) {
|
| 123 |
+
return preg_replace( $pattern, $result, $string);
|
| 124 |
+
}
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
// check for matches using regular expressions
|
| 128 |
+
foreach ( self::$plural as $pattern => $result ) {
|
| 129 |
+
if ( preg_match( $pattern, $string ) ) {
|
| 130 |
+
return preg_replace( $pattern, $result, $string );
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
return $string;
|
| 135 |
+
}
|
| 136 |
+
}
|
includes/manager.php
CHANGED
|
@@ -28,12 +28,51 @@
|
|
| 28 |
add_action( 'init', 'cme_update_pp_usage' ); // update early so resulting post type cap changes are applied for this request's UI construction
|
| 29 |
|
| 30 |
function cme_update_pp_usage() {
|
| 31 |
-
if (
|
| 32 |
require_once( dirname(__FILE__).'/pp-handler.php' );
|
| 33 |
return _cme_update_pp_usage();
|
| 34 |
}
|
| 35 |
}
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
/**
|
| 39 |
* Class CapabilityManager.
|
|
@@ -58,11 +97,6 @@ class CapabilityManager
|
|
| 58 |
*/
|
| 59 |
var $roles = array();
|
| 60 |
|
| 61 |
-
/**
|
| 62 |
-
* Roles to monitor for removal of essential capabilities
|
| 63 |
-
*/
|
| 64 |
-
var $core_roles = array();
|
| 65 |
-
|
| 66 |
/**
|
| 67 |
* Current role we are managing
|
| 68 |
* @var string
|
|
@@ -91,8 +125,6 @@ class CapabilityManager
|
|
| 91 |
$this->ID = 'capsman';
|
| 92 |
$this->mod_url = plugins_url( '', CME_FILE );
|
| 93 |
|
| 94 |
-
$this->core_roles = apply_filters( 'pp_caps_core_roles', array( 'administrator', 'editor', 'revisor', 'author', 'contributor', 'subscriber' ) );
|
| 95 |
-
|
| 96 |
$this->moduleLoad();
|
| 97 |
|
| 98 |
add_action('admin_menu', array($this, 'adminMenus'), 5); // execute prior to PP, to use menu hook
|
| 28 |
add_action( 'init', 'cme_update_pp_usage' ); // update early so resulting post type cap changes are applied for this request's UI construction
|
| 29 |
|
| 30 |
function cme_update_pp_usage() {
|
| 31 |
+
if ( ! empty($_REQUEST['update_filtered_types']) || ! empty($_REQUEST['update_filtered_taxonomies']) || ! empty($_REQUEST['update_detailed_taxonomies']) || ! empty($_REQUEST['SaveRole']) ) {
|
| 32 |
require_once( dirname(__FILE__).'/pp-handler.php' );
|
| 33 |
return _cme_update_pp_usage();
|
| 34 |
}
|
| 35 |
}
|
| 36 |
|
| 37 |
+
// Core WP roles to apply safeguard preventing accidental lockout from dashboard
|
| 38 |
+
function _cme_core_roles() {
|
| 39 |
+
return apply_filters( 'pp_caps_core_roles', array( 'administrator', 'editor', 'revisor', 'author', 'contributor', 'subscriber' ) );
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
function _cme_core_caps() {
|
| 43 |
+
$core_caps = array_fill_keys( array( 'switch_themes', 'edit_themes', 'activate_plugins', 'edit_plugins', 'edit_users', 'edit_files', 'manage_options', 'moderate_comments',
|
| 44 |
+
'manage_links', 'upload_files', 'import', 'unfiltered_html', 'read', 'delete_users', 'create_users', 'unfiltered_upload', 'edit_dashboard',
|
| 45 |
+
'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
|
| 46 |
+
'update_core', 'list_users', 'remove_users', 'add_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
|
| 47 |
+
|
| 48 |
+
ksort( $core_caps );
|
| 49 |
+
return $core_caps;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
function _cme_is_read_removal_blocked( $role_name ) {
|
| 53 |
+
$role = get_role($role_name);
|
| 54 |
+
$rcaps = $role->capabilities;
|
| 55 |
+
|
| 56 |
+
$core_caps = array_diff_key( _cme_core_caps(), array_fill_keys( array( 'unfiltered_html', 'unfiltered_upload', 'upload_files', 'edit_files', 'read' ), true ) );
|
| 57 |
+
|
| 58 |
+
if ( empty( $rcaps['dashboard_lockout_ok'] ) ) {
|
| 59 |
+
$edit_caps = array();
|
| 60 |
+
foreach ( get_post_types( array( 'public' => true ), 'object' ) as $type_obj ) {
|
| 61 |
+
$edit_caps = array_merge( $edit_caps, array_values( array_diff_key( (array) $type_obj->cap, array( 'read_private_posts' => true ) ) ) );
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
$edit_caps = array_fill_keys( $edit_caps, true );
|
| 65 |
+
unset( $edit_caps['read'] );
|
| 66 |
+
unset( $edit_caps['upload_files'] );
|
| 67 |
+
unset( $edit_caps['edit_files'] );
|
| 68 |
+
|
| 69 |
+
if ( $role_has_admin_caps = in_array( $role_name, _cme_core_roles() ) && ( array_intersect_key( $rcaps, array_diff_key( $core_caps, array( 'read' => true ) ) ) || array_intersect_key( $rcaps, $edit_caps ) ) ) {
|
| 70 |
+
return true;
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
return false;
|
| 75 |
+
}
|
| 76 |
|
| 77 |
/**
|
| 78 |
* Class CapabilityManager.
|
| 97 |
*/
|
| 98 |
var $roles = array();
|
| 99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
/**
|
| 101 |
* Current role we are managing
|
| 102 |
* @var string
|
| 125 |
$this->ID = 'capsman';
|
| 126 |
$this->mod_url = plugins_url( '', CME_FILE );
|
| 127 |
|
|
|
|
|
|
|
| 128 |
$this->moduleLoad();
|
| 129 |
|
| 130 |
add_action('admin_menu', array($this, 'adminMenus'), 5); // execute prior to PP, to use menu hook
|
includes/network.php
CHANGED
|
@@ -15,8 +15,8 @@ function _cme_new_blog( $new_blog_id ) {
|
|
| 15 |
$admin_role = $wp_roles->get_role('administrator');
|
| 16 |
$main_admin_caps = $admin_role->capabilities;
|
| 17 |
|
| 18 |
-
if ( defined('
|
| 19 |
-
$main_pp_only = (array)
|
| 20 |
//$pp_only[]= $newrole;
|
| 21 |
|
| 22 |
foreach( $autocreate_roles as $role_name ) {
|
|
@@ -29,9 +29,9 @@ function _cme_new_blog( $new_blog_id ) {
|
|
| 29 |
switch_to_blog($new_blog_id);
|
| 30 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 31 |
|
| 32 |
-
if ( defined('
|
| 33 |
pp_refresh_options();
|
| 34 |
-
$blog_pp_only = (array)
|
| 35 |
}
|
| 36 |
|
| 37 |
foreach( $main_site_caps as $role_name => $caps ) {
|
|
@@ -53,7 +53,7 @@ function _cme_new_blog( $new_blog_id ) {
|
|
| 53 |
$wp_roles->add_role( $role_name, $role_captions[$role_name], $caps );
|
| 54 |
}
|
| 55 |
|
| 56 |
-
if ( defined('
|
| 57 |
if ( in_array( $role_name, $main_pp_only ) ) {
|
| 58 |
_cme_pp_default_pattern_role( $role_name );
|
| 59 |
$blog_pp_only []= $role_name;
|
|
@@ -62,13 +62,13 @@ function _cme_new_blog( $new_blog_id ) {
|
|
| 62 |
}
|
| 63 |
}
|
| 64 |
|
| 65 |
-
if ( defined('
|
| 66 |
pp_update_option( 'supplemental_role_defs', $blog_pp_only );
|
| 67 |
|
| 68 |
restore_current_blog();
|
| 69 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 70 |
|
| 71 |
-
if ( defined('
|
| 72 |
pp_refresh_options();
|
| 73 |
}
|
| 74 |
}
|
| 15 |
$admin_role = $wp_roles->get_role('administrator');
|
| 16 |
$main_admin_caps = $admin_role->capabilities;
|
| 17 |
|
| 18 |
+
if ( defined('PRESSPERMIT_ACTIVE') )
|
| 19 |
+
$main_pp_only = (array) capsman_get_pp_option( 'supplemental_role_defs' );
|
| 20 |
//$pp_only[]= $newrole;
|
| 21 |
|
| 22 |
foreach( $autocreate_roles as $role_name ) {
|
| 29 |
switch_to_blog($new_blog_id);
|
| 30 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 31 |
|
| 32 |
+
if ( defined('PRESSPERMIT_ACTIVE') ) {
|
| 33 |
pp_refresh_options();
|
| 34 |
+
$blog_pp_only = (array) capsman_get_pp_option( 'supplemental_role_defs' );
|
| 35 |
}
|
| 36 |
|
| 37 |
foreach( $main_site_caps as $role_name => $caps ) {
|
| 53 |
$wp_roles->add_role( $role_name, $role_captions[$role_name], $caps );
|
| 54 |
}
|
| 55 |
|
| 56 |
+
if ( defined('PRESSPERMIT_ACTIVE') ) {
|
| 57 |
if ( in_array( $role_name, $main_pp_only ) ) {
|
| 58 |
_cme_pp_default_pattern_role( $role_name );
|
| 59 |
$blog_pp_only []= $role_name;
|
| 62 |
}
|
| 63 |
}
|
| 64 |
|
| 65 |
+
if ( defined('PRESSPERMIT_ACTIVE') )
|
| 66 |
pp_update_option( 'supplemental_role_defs', $blog_pp_only );
|
| 67 |
|
| 68 |
restore_current_blog();
|
| 69 |
( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
|
| 70 |
|
| 71 |
+
if ( defined('PRESSPERMIT_ACTIVE') )
|
| 72 |
pp_refresh_options();
|
| 73 |
}
|
| 74 |
}
|
includes/pp-handler.php
CHANGED
|
@@ -3,60 +3,82 @@
|
|
| 3 |
function _cme_update_pp_usage() {
|
| 4 |
static $updated;
|
| 5 |
if ( ! empty($updated) ) { return true; }
|
| 6 |
-
|
| 7 |
-
if ( ! current_user_can( '
|
| 8 |
return false;
|
|
|
|
| 9 |
|
| 10 |
-
if ( ! empty( $_REQUEST['update_filtered_types']) ) {
|
| 11 |
// update Press Permit "Filtered Post Types". This determines whether type-specific capability definitions are forced
|
| 12 |
-
$options = array( 'enabled_post_types', 'enabled_taxonomies' );
|
|
|
|
|
|
|
| 13 |
|
| 14 |
foreach( $options as $option_basename ) {
|
| 15 |
-
if ( ! isset( $
|
| 16 |
continue;
|
| 17 |
|
| 18 |
$unselected = array();
|
| 19 |
$value = array();
|
| 20 |
|
| 21 |
-
foreach( $
|
| 22 |
-
if ( empty( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
$unselected[$key] = true;
|
| 24 |
-
|
|
|
|
|
|
|
| 25 |
$value[$key] = true;
|
|
|
|
| 26 |
}
|
| 27 |
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
| 29 |
if ( $current = array_diff_key( $current, $unselected ) )
|
| 30 |
$value = array_merge( $current, $value ); // retain setting for any types which were previously enabled for filtering but are currently not registered
|
| 31 |
}
|
| 32 |
|
| 33 |
$value = stripslashes_deep($value);
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
$updated = true;
|
| 37 |
}
|
| 38 |
|
| 39 |
-
if (
|
| 40 |
-
|
| 41 |
}
|
| 42 |
}
|
| 43 |
|
| 44 |
-
if (
|
| 45 |
-
if ( ! empty( $_REQUEST['
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
|
|
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
}
|
| 56 |
-
}
|
| 57 |
-
|
| 58 |
-
if ( $updated ) {
|
| 59 |
-
pp_refresh_options();
|
| 60 |
}
|
| 61 |
|
| 62 |
return $updated;
|
| 3 |
function _cme_update_pp_usage() {
|
| 4 |
static $updated;
|
| 5 |
if ( ! empty($updated) ) { return true; }
|
| 6 |
+
|
| 7 |
+
if ( ! current_user_can( 'manage_capabilities' ) ) {
|
| 8 |
return false;
|
| 9 |
+
}
|
| 10 |
|
| 11 |
+
if ( ! empty( $_REQUEST['update_filtered_types']) || ! empty( $_REQUEST['update_filtered_taxonomies']) || ! empty($_REQUEST['update_detailed_taxonomies']) || ! empty( $_REQUEST['SaveRole']) ) {
|
| 12 |
// update Press Permit "Filtered Post Types". This determines whether type-specific capability definitions are forced
|
| 13 |
+
$options = array( 'enabled_post_types', 'enabled_taxonomies', 'detailed_taxonomies' );
|
| 14 |
+
|
| 15 |
+
$posted = $_POST;
|
| 16 |
|
| 17 |
foreach( $options as $option_basename ) {
|
| 18 |
+
if ( ! isset( $posted["{$option_basename}-options"] ) )
|
| 19 |
continue;
|
| 20 |
|
| 21 |
$unselected = array();
|
| 22 |
$value = array();
|
| 23 |
|
| 24 |
+
foreach( $posted["{$option_basename}-options"] as $key ) {
|
| 25 |
+
if ( ( 'enabled_taxonomies' == $option_basename ) && ! empty( $posted["detailed_taxonomies-{$key}"] ) && ! empty( $posted['update_detailed_taxonomies']) ) {
|
| 26 |
+
// if Detailed is selected, also select Type-Specific
|
| 27 |
+
$posted["enabled_taxonomies-{$key}"] = true;
|
| 28 |
+
$value[$key] = true;
|
| 29 |
+
} elseif ( ( 'detailed_taxonomies' == $option_basename ) && empty( $posted["enabled_taxonomies-{$key}"] ) && ! empty( $posted['update_filtered_taxonomies']) ) {
|
| 30 |
+
// if Enabled is deselected, also deselect Type-Specific
|
| 31 |
$unselected[$key] = true;
|
| 32 |
+
} elseif ( empty( $posted["{$option_basename}-$key"] ) ) {
|
| 33 |
+
$unselected[$key] = true;
|
| 34 |
+
} else {
|
| 35 |
$value[$key] = true;
|
| 36 |
+
}
|
| 37 |
}
|
| 38 |
|
| 39 |
+
//$option_name = ( ( 'detailed_taxonomies' == $option_basename ) || ! defined( 'PRESSPERMIT_ACTIVE' ) ) ? 'cme_' . $option_basename : 'pp_' . $option_basename;
|
| 40 |
+
$option_name = ( 'detailed_taxonomies' == $option_basename ) ? 'cme_' . $option_basename : 'pp_' . $option_basename;
|
| 41 |
+
|
| 42 |
+
if ( $current = get_option( $option_name ) ) {
|
| 43 |
if ( $current = array_diff_key( $current, $unselected ) )
|
| 44 |
$value = array_merge( $current, $value ); // retain setting for any types which were previously enabled for filtering but are currently not registered
|
| 45 |
}
|
| 46 |
|
| 47 |
$value = stripslashes_deep($value);
|
| 48 |
+
|
| 49 |
+
update_option( $option_name, $value );
|
| 50 |
+
|
| 51 |
+
if ( 'pp_enabled_post_types' == $option_name ) {
|
| 52 |
+
// ensure smooth transition if Press Permit Core is deactivated
|
| 53 |
+
update_option( 'cme_enabled_post_types', $value );
|
| 54 |
+
}
|
| 55 |
|
| 56 |
$updated = true;
|
| 57 |
}
|
| 58 |
|
| 59 |
+
if ( ! empty( $_REQUEST['update_filtered_types']) ) {
|
| 60 |
+
update_option( 'pp_' . 'define_create_posts_cap', ! empty($_REQUEST['pp_define_create_posts_cap']) );
|
| 61 |
}
|
| 62 |
}
|
| 63 |
|
| 64 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
|
| 65 |
+
if ( ! empty( $_REQUEST['SaveRole']) ) {
|
| 66 |
+
if ( ! empty( $_REQUEST['role'] ) ) {
|
| 67 |
+
$pp_only = (array) capsman_get_pp_option( 'supplemental_role_defs' );
|
| 68 |
+
|
| 69 |
+
if ( empty($_REQUEST['pp_only_role']) )
|
| 70 |
+
$pp_only = array_diff( $pp_only, array($_REQUEST['role']) );
|
| 71 |
+
else
|
| 72 |
+
$pp_only[]= $_REQUEST['role'];
|
| 73 |
|
| 74 |
+
pp_update_option( 'supplemental_role_defs', array_unique($pp_only) );
|
| 75 |
+
_cme_pp_default_pattern_role( $_REQUEST['role'] );
|
| 76 |
+
}
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
if ( $updated ) {
|
| 80 |
+
pp_refresh_options();
|
| 81 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
}
|
| 83 |
|
| 84 |
return $updated;
|
includes/pp-ui.php
CHANGED
|
@@ -1,15 +1,10 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
class Capsman_PP_UI {
|
| 4 |
-
|
| 5 |
-
function __construct() {
|
| 6 |
-
|
| 7 |
-
}
|
| 8 |
-
|
| 9 |
function get_metagroup_caps( $default ) {
|
| 10 |
global $wpdb;
|
| 11 |
|
| 12 |
-
if ( defined( '
|
| 13 |
$query = $wpdb->prepare( "SELECT role_name FROM $wpdb->ppc_roles AS r INNER JOIN $wpdb->pp_groups AS g ON g.ID = r.agent_id AND r.agent_type = 'pp_group' WHERE g.metagroup_type = 'wp_role' AND g.metagroup_id = %s", $default );
|
| 14 |
$pp_supplemental_roles = $wpdb->get_col( $query );
|
| 15 |
} else {
|
|
@@ -35,22 +30,24 @@ class Capsman_PP_UI {
|
|
| 35 |
}
|
| 36 |
|
| 37 |
function show_capability_hints( $default ) {
|
| 38 |
-
if (
|
| 39 |
$cme_id = 'capsman';
|
| 40 |
|
| 41 |
echo '<ul class="ul-disc" style="margin-top:10px">';
|
| 42 |
|
| 43 |
-
|
|
|
|
|
|
|
| 44 |
echo '<li>';
|
| 45 |
-
if ( defined( 'PPCE_VERSION' ) || ! defined( '
|
| 46 |
-
if (
|
| 47 |
-
$parenthetical = ' (' . sprintf( __( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman-enhanced' ), "<a href='" . admin_url(
|
| 48 |
else
|
| 49 |
-
$parenthetical = ' (' . sprintf( __( 'activate %1$sAdvanced settings%2$s, see Role Usage', 'capsman-enhanced' ), "<a href='" . admin_url(
|
| 50 |
} else
|
| 51 |
$parenthetical = '';
|
| 52 |
|
| 53 |
-
if ( defined( '
|
| 54 |
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', $cme_id ), $parenthetical ) ;
|
| 55 |
else
|
| 56 |
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', $cme_id ), $parenthetical ) ;
|
|
@@ -59,14 +56,14 @@ class Capsman_PP_UI {
|
|
| 59 |
}
|
| 60 |
|
| 61 |
$status_hint = '';
|
| 62 |
-
if ( defined( '
|
| 63 |
if ( defined( 'PPS_VERSION' ) )
|
| 64 |
-
$status_hint = sprintf( __( 'Capabilities for custom statuses can be manually added here (
|
| 65 |
-
elseif (
|
| 66 |
-
$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(
|
| 67 |
|
| 68 |
elseif ( defined( 'PP_VERSION' ) )
|
| 69 |
-
$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(
|
| 70 |
|
| 71 |
if ( $status_hint )
|
| 72 |
echo "<li>$status_hint</li>";
|
|
@@ -76,14 +73,14 @@ class Capsman_PP_UI {
|
|
| 76 |
}
|
| 77 |
|
| 78 |
function pp_only_roles_ui( $default ) {
|
| 79 |
-
$support_pp_only_roles = defined('
|
| 80 |
?>
|
| 81 |
|
| 82 |
<?php if ( $support_pp_only_roles && ! in_array( $default, array( /*'subscriber', 'contributor', 'author', 'editor',*/ 'administrator' ) ) ) : ?>
|
| 83 |
<div style="float:right">
|
| 84 |
<?php
|
| 85 |
pp_refresh_options();
|
| 86 |
-
$pp_only = (array)
|
| 87 |
$checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
|
| 88 |
?>
|
| 89 |
<label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'capsman-enhanced'); ?> </label>
|
|
@@ -93,81 +90,194 @@ class Capsman_PP_UI {
|
|
| 93 |
return $support_pp_only_roles;
|
| 94 |
}
|
| 95 |
|
| 96 |
-
|
| 97 |
-
|
|
|
|
| 98 |
<dl>
|
| 99 |
-
<dt><?php _e('
|
| 100 |
<dd style="text-align:center;">
|
| 101 |
<?php
|
| 102 |
-
$caption = __( '
|
| 103 |
-
echo "<p>$caption</p>";
|
| 104 |
|
| 105 |
-
if (
|
| 106 |
<div class="cme-subtext" style="margin-top:0">
|
| 107 |
-
<?php _e( '(PP Filtered Post Types, Taxonomies)', 'capsman-enhanced' )
|
| 108 |
</div>
|
| 109 |
<?php endif;
|
| 110 |
|
| 111 |
echo "<table style='width:100%'><tr>";
|
| 112 |
|
| 113 |
-
$unfiltered
|
| 114 |
-
$
|
| 115 |
-
|
| 116 |
-
|
| 117 |
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
|
|
|
|
|
|
|
|
|
| 121 |
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
foreach( $defined[$item_type] as $key => $type_obj ) {
|
| 125 |
-
if ( ! $key )
|
| 126 |
-
continue;
|
| 127 |
-
|
| 128 |
-
if ( in_array( $key, $unfiltered[$item_type] ) )
|
| 129 |
-
continue;
|
| 130 |
-
|
| 131 |
-
$id = "$option_name-" . $key;
|
| 132 |
-
?>
|
| 133 |
-
<div style="text-align:left">
|
| 134 |
-
<?php if ( ! empty( $hidden[$item_type][$key] ) ) :?>
|
| 135 |
-
<input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
|
| 136 |
-
<input name="<?php echo("{$option_name}-options[]");?>" type="hidden" value="<?php echo($key)?>" />
|
| 137 |
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
|
|
|
|
|
|
| 148 |
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
|
|
|
|
|
|
|
|
|
| 152 |
}
|
|
|
|
| 153 |
?>
|
| 154 |
</tr>
|
| 155 |
</table>
|
| 156 |
|
| 157 |
-
<?php
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
<div>
|
| 161 |
<label for="pp_define_create_posts_cap">
|
| 162 |
-
<input name="pp_define_create_posts_cap" type="checkbox" id="pp_define_create_posts_cap" value="1" <?php checked('1', $define_create_posts_cap );?> /> <?php _e('Use create_posts capability');?>
|
| 163 |
</label>
|
| 164 |
</div>
|
| 165 |
-
|
| 166 |
|
| 167 |
<input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
|
| 168 |
</dd>
|
| 169 |
</dl>
|
| 170 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
}
|
| 172 |
}
|
| 173 |
|
| 1 |
<?php
|
| 2 |
|
| 3 |
class Capsman_PP_UI {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
function get_metagroup_caps( $default ) {
|
| 5 |
global $wpdb;
|
| 6 |
|
| 7 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
|
| 8 |
$query = $wpdb->prepare( "SELECT role_name FROM $wpdb->ppc_roles AS r INNER JOIN $wpdb->pp_groups AS g ON g.ID = r.agent_id AND r.agent_type = 'pp_group' WHERE g.metagroup_type = 'wp_role' AND g.metagroup_id = %s", $default );
|
| 9 |
$pp_supplemental_roles = $wpdb->get_col( $query );
|
| 10 |
} else {
|
| 30 |
}
|
| 31 |
|
| 32 |
function show_capability_hints( $default ) {
|
| 33 |
+
if ( capsman_get_pp_option('display_hints') ) {
|
| 34 |
$cme_id = 'capsman';
|
| 35 |
|
| 36 |
echo '<ul class="ul-disc" style="margin-top:10px">';
|
| 37 |
|
| 38 |
+
$pp_prefix = ( defined( 'PRESSPERMIT_VERSION') ) ? 'presspermit' : 'pp';
|
| 39 |
+
|
| 40 |
+
if ( defined( 'PPCE_VERSION' ) || ! defined( 'PRESSPERMIT_ACTIVE' ) || in_array( $default, array( 'subscriber', 'contributor', 'author', 'editor' ) ) ) {
|
| 41 |
echo '<li>';
|
| 42 |
+
if ( defined( 'PPCE_VERSION' ) || ! defined( 'PRESSPERMIT_ACTIVE' ) ) {
|
| 43 |
+
if ( capsman_get_pp_option( 'advanced_options' ) )
|
| 44 |
+
$parenthetical = ' (' . sprintf( __( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) . ')';
|
| 45 |
else
|
| 46 |
+
$parenthetical = ' (' . sprintf( __( 'activate %1$sAdvanced settings%2$s, see Role Usage', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-settings&pp_tab=advanced") . "'>", '</a>' ). ')';
|
| 47 |
} else
|
| 48 |
$parenthetical = '';
|
| 49 |
|
| 50 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) )
|
| 51 |
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', $cme_id ), $parenthetical ) ;
|
| 52 |
else
|
| 53 |
printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', $cme_id ), $parenthetical ) ;
|
| 56 |
}
|
| 57 |
|
| 58 |
$status_hint = '';
|
| 59 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) )
|
| 60 |
if ( defined( 'PPS_VERSION' ) )
|
| 61 |
+
$status_hint = sprintf( __( 'Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though.', $cme_id ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-statuses&show_caps=1") . "'>", '</a>', "<a href='" . admin_url("admin.php?page={$pp_prefix}-groups") . "'>", '</a>' ) ;
|
| 62 |
+
elseif ( capsman_get_pp_option( 'display_extension_hints' ) )
|
| 63 |
+
$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("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) ;
|
| 64 |
|
| 65 |
elseif ( defined( 'PP_VERSION' ) )
|
| 66 |
+
$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("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) ;
|
| 67 |
|
| 68 |
if ( $status_hint )
|
| 69 |
echo "<li>$status_hint</li>";
|
| 73 |
}
|
| 74 |
|
| 75 |
function pp_only_roles_ui( $default ) {
|
| 76 |
+
$support_pp_only_roles = defined('PRESSPERMIT_ACTIVE') || version_compare( PP_VERSION, '1.0-beta1.4', '>=');
|
| 77 |
?>
|
| 78 |
|
| 79 |
<?php if ( $support_pp_only_roles && ! in_array( $default, array( /*'subscriber', 'contributor', 'author', 'editor',*/ 'administrator' ) ) ) : ?>
|
| 80 |
<div style="float:right">
|
| 81 |
<?php
|
| 82 |
pp_refresh_options();
|
| 83 |
+
$pp_only = (array) capsman_get_pp_option( 'supplemental_role_defs' );
|
| 84 |
$checked = ( in_array( $default, $pp_only ) ) ? 'checked="checked"': '';
|
| 85 |
?>
|
| 86 |
<label for="pp_only_role" title="<?php _e('Make role available for supplemental assignment to Permission Groups only', 'capsman-enhanced');?>"><input type="checkbox" name="pp_only_role" id="pp_only_role" value="1" <?php echo $checked;?>> <?php _e('hidden role', 'capsman-enhanced'); ?> </label>
|
| 90 |
return $support_pp_only_roles;
|
| 91 |
}
|
| 92 |
|
| 93 |
+
// Note: CME can now impose type-specific capabilities without Press Permit Core active
|
| 94 |
+
function pp_types_ui( $defined_types ) {
|
| 95 |
+
?>
|
| 96 |
<dl>
|
| 97 |
+
<dt><?php _e('Type-Specific Capabilities', 'capsman-enhanced'); ?></dt>
|
| 98 |
<dd style="text-align:center;">
|
| 99 |
<?php
|
| 100 |
+
$caption = __( 'Ensure permissions can be controlled separately from other post types.', 'capsman-enhanced' );
|
| 101 |
+
echo "<p class='cme-hint'>$caption</p>";
|
| 102 |
|
| 103 |
+
if ( defined( 'PRESSPERMIT_ACTIVE' ) && capsman_get_pp_option( 'display_hints' ) ) :?>
|
| 104 |
<div class="cme-subtext" style="margin-top:0">
|
| 105 |
+
<?php /*_e( '(PP Filtered Post Types, Taxonomies)', 'capsman-enhanced' ); */?>
|
| 106 |
</div>
|
| 107 |
<?php endif;
|
| 108 |
|
| 109 |
echo "<table style='width:100%'><tr>";
|
| 110 |
|
| 111 |
+
$unfiltered = apply_filters( 'pp_unfiltered_post_types', array('forum','topic','reply','wp_block') ); // bbPress' dynamic role def requires additional code to enforce stored caps
|
| 112 |
+
$hidden = apply_filters( 'pp_hidden_post_types', array() );
|
| 113 |
+
|
| 114 |
+
echo '<td style="width:50%">';
|
| 115 |
|
| 116 |
+
$option_basename = 'enabled_post_types';
|
| 117 |
+
$enabled = get_option( 'pp_' . $option_basename, array( 'post' => true, 'page' => true ) );
|
| 118 |
+
|
| 119 |
+
foreach( $defined_types as $key => $type_obj ) {
|
| 120 |
+
if ( ! $key )
|
| 121 |
+
continue;
|
| 122 |
|
| 123 |
+
if ( in_array( $key, $unfiltered ) )
|
| 124 |
+
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
+
$id = "$option_basename-" . $key;
|
| 127 |
+
?>
|
| 128 |
+
<div style="text-align:left">
|
| 129 |
+
<?php if ( ! empty( $hidden[$key] ) ) :?>
|
| 130 |
+
<input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
|
| 131 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($key)?>" />
|
| 132 |
+
|
| 133 |
+
<?php else: ?>
|
| 134 |
+
<div class="agp-vspaced_input">
|
| 135 |
+
<label for="<?php echo($id);?>" title="<?php echo($key);?>">
|
| 136 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($key)?>" />
|
| 137 |
+
<input name="<?php echo($id);?>" type="checkbox" id="<?php echo($id);?>" value="1" <?php checked('1', ! empty($enabled[$key]) );?> /> <?php echo($type_obj->label);?>
|
| 138 |
|
| 139 |
+
<?php
|
| 140 |
+
echo ('</label></div>');
|
| 141 |
+
|
| 142 |
+
endif; // displaying checkbox UI
|
| 143 |
+
|
| 144 |
+
echo '</div>';
|
| 145 |
}
|
| 146 |
+
echo '</td>';
|
| 147 |
?>
|
| 148 |
</tr>
|
| 149 |
</table>
|
| 150 |
|
| 151 |
+
<?php $define_create_posts_cap = get_option( 'pp_define_create_posts_cap' );?>
|
| 152 |
+
|
| 153 |
+
<div style="margin-top:10px;margin-bottom:10px">
|
|
|
|
| 154 |
<label for="pp_define_create_posts_cap">
|
| 155 |
+
<input name="pp_define_create_posts_cap" type="checkbox" id="pp_define_create_posts_cap" value="1" <?php checked('1', $define_create_posts_cap );?> title="<?php esc_attr( _e( 'Make selected post types require a different capability to add new posts.', 'capsman-enhanced') );?>" /> <?php _e('Use create_posts capability');?>
|
| 156 |
</label>
|
| 157 |
</div>
|
| 158 |
+
|
| 159 |
|
| 160 |
<input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
|
| 161 |
</dd>
|
| 162 |
</dl>
|
| 163 |
+
<?php
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
// Note: CME can now impose type-specific capabilities without Press Permit Core active
|
| 167 |
+
function pp_taxonomies_ui( $defined_taxonomies ) {
|
| 168 |
+
?>
|
| 169 |
+
<dl>
|
| 170 |
+
<dt><?php _e('Taxonomy-Specific Capabilities', 'capsman-enhanced'); ?></dt>
|
| 171 |
+
<dd style="text-align:center;">
|
| 172 |
+
<?php
|
| 173 |
+
$caption = __( 'Ensure permissions can be controlled separately from other taxonomies.', 'capsman-enhanced' );
|
| 174 |
+
echo "<p class='cme-hint'>$caption</p>";
|
| 175 |
+
|
| 176 |
+
echo "<table style='width:100%'><tr>";
|
| 177 |
+
|
| 178 |
+
$unfiltered = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
|
| 179 |
+
$hidden = apply_filters( 'pp_hidden_taxonomies', array() );
|
| 180 |
+
|
| 181 |
+
echo '<td style="width:50%">';
|
| 182 |
+
|
| 183 |
+
$option_basename = 'enabled_taxonomies';
|
| 184 |
+
$option_name = 'pp_' . $option_basename;
|
| 185 |
+
|
| 186 |
+
$enabled = get_option( $option_name, array() );
|
| 187 |
+
|
| 188 |
+
foreach( $defined_taxonomies as $taxonomy => $type_obj ) {
|
| 189 |
+
if ( ! $taxonomy )
|
| 190 |
+
continue;
|
| 191 |
+
|
| 192 |
+
if ( in_array( $taxonomy, $unfiltered ) )
|
| 193 |
+
continue;
|
| 194 |
+
|
| 195 |
+
$id = "$option_basename-" . $taxonomy;
|
| 196 |
+
?>
|
| 197 |
+
<div style="text-align:left">
|
| 198 |
+
<?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
|
| 199 |
+
<input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
|
| 200 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
|
| 201 |
+
|
| 202 |
+
<?php else: ?>
|
| 203 |
+
<div class="agp-vspaced_input">
|
| 204 |
+
<label for="<?php echo($id);?>" title="<?php echo($taxonomy);?>">
|
| 205 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
|
| 206 |
+
<input name="<?php echo($id);?>" type="checkbox" id="<?php echo($id);?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo($type_obj->label);?>
|
| 207 |
+
|
| 208 |
+
<?php
|
| 209 |
+
echo ('</label></div>');
|
| 210 |
+
|
| 211 |
+
endif; // displaying checkbox UI
|
| 212 |
+
|
| 213 |
+
echo '</div>';
|
| 214 |
+
}
|
| 215 |
+
echo '</td>';
|
| 216 |
+
|
| 217 |
+
?>
|
| 218 |
+
</tr>
|
| 219 |
+
</table>
|
| 220 |
+
|
| 221 |
+
<input type="submit" name="update_filtered_taxonomies" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
|
| 222 |
+
</dd>
|
| 223 |
+
</dl>
|
| 224 |
+
|
| 225 |
+
<dl>
|
| 226 |
+
<dt><?php _e('Detailed Taxonomy Capabilities', 'capsman-enhanced'); ?></dt>
|
| 227 |
+
<dd style="text-align:center;">
|
| 228 |
+
<?php
|
| 229 |
+
$caption = __( 'Enforce Edit, Delete and Assign capabilities separately from Management capability.', 'capsman-enhanced' );
|
| 230 |
+
echo "<p class='cme-hint'>$caption</p>";
|
| 231 |
+
|
| 232 |
+
echo "<table style='width:100%'><tr>";
|
| 233 |
+
|
| 234 |
+
$unfiltered = apply_filters( 'pp_unfiltered_taxonomies', array( 'post_status', 'topic-tag' ) ); // avoid confusion with Edit Flow administrative taxonomy
|
| 235 |
+
$hidden = apply_filters( 'pp_hidden_taxonomies', array() );
|
| 236 |
+
|
| 237 |
+
echo '<td style="width:50%">';
|
| 238 |
+
|
| 239 |
+
$option_basename = 'detailed_taxonomies';
|
| 240 |
+
$option_name = 'cme_' . $option_basename;
|
| 241 |
+
|
| 242 |
+
$enabled = get_option( $option_name, array() );
|
| 243 |
+
|
| 244 |
+
foreach( $defined_taxonomies as $taxonomy => $type_obj ) {
|
| 245 |
+
if ( ! $taxonomy )
|
| 246 |
+
continue;
|
| 247 |
+
|
| 248 |
+
if ( in_array( $taxonomy, $unfiltered ) )
|
| 249 |
+
continue;
|
| 250 |
+
|
| 251 |
+
$id = "$option_basename-" . $taxonomy;
|
| 252 |
+
?>
|
| 253 |
+
<div style="text-align:left">
|
| 254 |
+
<?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
|
| 255 |
+
<input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
|
| 256 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
|
| 257 |
+
|
| 258 |
+
<?php else: ?>
|
| 259 |
+
<div class="agp-vspaced_input">
|
| 260 |
+
<label for="<?php echo($id);?>" title="<?php echo($taxonomy);?>">
|
| 261 |
+
<input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
|
| 262 |
+
<input name="<?php echo($id);?>" type="checkbox" id="<?php echo($id);?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo($type_obj->label);?>
|
| 263 |
+
|
| 264 |
+
<?php
|
| 265 |
+
echo ('</label></div>');
|
| 266 |
+
|
| 267 |
+
endif; // displaying checkbox UI
|
| 268 |
+
|
| 269 |
+
echo '</div>';
|
| 270 |
+
}
|
| 271 |
+
echo '</td>';
|
| 272 |
+
|
| 273 |
+
?>
|
| 274 |
+
</tr>
|
| 275 |
+
</table>
|
| 276 |
+
|
| 277 |
+
<input type="submit" name="update_detailed_taxonomies" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
|
| 278 |
+
</dd>
|
| 279 |
+
</dl>
|
| 280 |
+
<?php
|
| 281 |
}
|
| 282 |
}
|
| 283 |
|
lang/capsman.mo
CHANGED
|
Binary file
|
lang/capsman.po
CHANGED
|
@@ -2,8 +2,8 @@ msgid ""
|
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: Capability Manager Enhanced\n"
|
| 4 |
"Report-Msgid-Bugs-To: \n"
|
| 5 |
-
"POT-Creation-Date: 2019-
|
| 6 |
-
"PO-Revision-Date: 2019-
|
| 7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
| 8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
| 9 |
"MIME-Version: 1.0\n"
|
|
@@ -35,19 +35,19 @@ msgstr ""
|
|
| 35 |
msgid "%s is required for this plugin."
|
| 36 |
msgstr ""
|
| 37 |
|
| 38 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:
|
| 39 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:
|
| 40 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:
|
| 41 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 42 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 43 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 44 |
msgid "Capability Manager"
|
| 45 |
msgstr ""
|
| 46 |
|
| 47 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:
|
| 48 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:
|
| 49 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 50 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 51 |
msgid "Capabilities"
|
| 52 |
msgstr ""
|
| 53 |
|
|
@@ -55,548 +55,529 @@ msgstr ""
|
|
| 55 |
msgid "Settings saved."
|
| 56 |
msgstr ""
|
| 57 |
|
| 58 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 59 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 60 |
#, php-format
|
| 61 |
-
msgid "Warning: This role
|
| 62 |
msgstr ""
|
| 63 |
|
| 64 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 65 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 66 |
msgid "Roles and Capabilities"
|
| 67 |
msgstr ""
|
| 68 |
|
| 69 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 70 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 71 |
#, php-format
|
| 72 |
msgid "Capabilities for %s"
|
| 73 |
msgstr ""
|
| 74 |
|
| 75 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 76 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 77 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 78 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 79 |
msgid "Save Changes"
|
| 80 |
msgstr ""
|
| 81 |
|
| 82 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 83 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 84 |
msgid "View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin."
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 88 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 89 |
#, php-format
|
| 90 |
msgid "Thanks for using the %1$sPublishPress%2$s family of professional publishing tools."
|
| 91 |
msgstr ""
|
| 92 |
|
| 93 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 94 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 95 |
msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
|
| 96 |
msgstr ""
|
| 97 |
|
| 98 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 99 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 100 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
| 101 |
msgstr ""
|
| 102 |
|
| 103 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 104 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 105 |
msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
| 106 |
msgstr ""
|
| 107 |
|
| 108 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 109 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 110 |
msgid "Customize reading permissions per-category or per-post"
|
| 111 |
msgstr ""
|
| 112 |
|
| 113 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 114 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 115 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
| 116 |
msgstr ""
|
| 117 |
|
| 118 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 119 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 120 |
msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 124 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 125 |
msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
|
| 126 |
msgstr ""
|
| 127 |
|
| 128 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 129 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 130 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
| 131 |
msgstr ""
|
| 132 |
|
| 133 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 134 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 135 |
msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
|
| 136 |
msgstr ""
|
| 137 |
|
| 138 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 139 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 140 |
msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
|
| 141 |
msgstr ""
|
| 142 |
|
| 143 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 144 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 145 |
msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
| 146 |
msgstr ""
|
| 147 |
|
| 148 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 149 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 150 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
| 151 |
msgstr ""
|
| 152 |
|
| 153 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 154 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 155 |
msgid "Member support forum"
|
| 156 |
msgstr ""
|
| 157 |
|
| 158 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 159 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 160 |
#, php-format
|
| 161 |
msgid "%1$sgrab%2$s %3$s"
|
| 162 |
msgstr ""
|
| 163 |
|
| 164 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 165 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 166 |
#, php-format
|
| 167 |
msgid "%s (free install)"
|
| 168 |
msgstr ""
|
| 169 |
|
| 170 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 171 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 172 |
#, php-format
|
| 173 |
msgid "%1$sbuy%2$s %3$s"
|
| 174 |
msgstr ""
|
| 175 |
|
| 176 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 177 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 178 |
#, php-format
|
| 179 |
msgid "%s info/purchase"
|
| 180 |
msgstr ""
|
| 181 |
|
| 182 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 183 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 184 |
msgid " "
|
| 185 |
msgstr ""
|
| 186 |
|
| 187 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 188 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 189 |
msgid "Reading"
|
| 190 |
msgstr ""
|
| 191 |
|
| 192 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 193 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 194 |
msgid "Editing Capabilities"
|
| 195 |
msgstr ""
|
| 196 |
|
| 197 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 198 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 199 |
msgid "Deletion Capabilities"
|
| 200 |
msgstr ""
|
| 201 |
|
| 202 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 203 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 204 |
msgid "can read posts which are currently published with private visibility"
|
| 205 |
msgstr ""
|
| 206 |
|
| 207 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 208 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 209 |
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
|
| 210 |
msgstr ""
|
| 211 |
|
| 212 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 213 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 214 |
msgid "can edit posts which were created by other users"
|
| 215 |
msgstr ""
|
| 216 |
|
| 217 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 218 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 219 |
msgid "can edit posts which are currently published"
|
| 220 |
msgstr ""
|
| 221 |
|
| 222 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 223 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 224 |
msgid "can edit posts which are currently published with private visibility"
|
| 225 |
msgstr ""
|
| 226 |
|
| 227 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 228 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 229 |
msgid "can make a post publicly visible"
|
| 230 |
msgstr ""
|
| 231 |
|
| 232 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 233 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 234 |
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
|
| 235 |
msgstr ""
|
| 236 |
|
| 237 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 238 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 239 |
msgid "can delete posts which were created by other users"
|
| 240 |
msgstr ""
|
| 241 |
|
| 242 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 243 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 244 |
msgid "can delete posts which are currently published"
|
| 245 |
msgstr ""
|
| 246 |
|
| 247 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 248 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 249 |
msgid "can delete posts which are currently published with private visibility"
|
| 250 |
msgstr ""
|
| 251 |
|
| 252 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 253 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 254 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 255 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 256 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 257 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 258 |
#, php-format
|
| 259 |
msgid "%s: assigned by Permission Group"
|
| 260 |
msgstr ""
|
| 261 |
|
| 262 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 263 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 264 |
msgid "Other WordPress Core Capabilities"
|
| 265 |
msgstr ""
|
| 266 |
|
| 267 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 268 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced
|
| 269 |
-
|
| 270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
msgid "check/uncheck all"
|
| 272 |
msgstr ""
|
| 273 |
|
| 274 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 275 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 276 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 277 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 278 |
msgid "negate all (storing as disabled capabilities)"
|
| 279 |
msgstr ""
|
| 280 |
|
| 281 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 282 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 283 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 284 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 285 |
msgid "negate none (add/remove all capabilities normally)"
|
| 286 |
msgstr ""
|
| 287 |
|
| 288 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 289 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 290 |
msgid "Additional Capabilities"
|
| 291 |
msgstr ""
|
| 292 |
|
| 293 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 294 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 295 |
msgid "Level:"
|
| 296 |
msgstr ""
|
| 297 |
|
| 298 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 299 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 300 |
msgid "Note: Underscores replace spaces in stored capability name (\"edit users\" => \"edit_users\")."
|
| 301 |
msgstr ""
|
| 302 |
|
| 303 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 304 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 305 |
msgid "Delete this role"
|
| 306 |
msgstr ""
|
| 307 |
|
| 308 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 309 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 310 |
#, php-format
|
| 311 |
msgid ""
|
| 312 |
"You are about to delete the %s role.\n"
|
| 313 |
" 'Cancel' to stop, 'OK' to delete."
|
| 314 |
msgstr ""
|
| 315 |
|
| 316 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 317 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 318 |
msgid "Delete Role"
|
| 319 |
msgstr ""
|
| 320 |
|
| 321 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 322 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 323 |
msgid "Select New Role"
|
| 324 |
msgstr ""
|
| 325 |
|
| 326 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 327 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 328 |
msgid "Change"
|
| 329 |
msgstr ""
|
| 330 |
|
| 331 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 332 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 333 |
msgid "Create New Role"
|
| 334 |
msgstr ""
|
| 335 |
|
| 336 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 337 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced
|
| 338 |
-
|
|
|
|
|
|
|
| 339 |
msgstr ""
|
| 340 |
|
| 341 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 342 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 343 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 344 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 345 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 346 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
| 347 |
msgstr ""
|
| 348 |
|
| 349 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 350 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 351 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 352 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 353 |
msgid "hidden"
|
| 354 |
msgstr ""
|
| 355 |
|
| 356 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 357 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 358 |
msgid "Create"
|
| 359 |
msgstr ""
|
| 360 |
|
| 361 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 362 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 363 |
msgid "Copy this role to"
|
| 364 |
msgstr ""
|
| 365 |
|
| 366 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 367 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 368 |
-
msgid "Name of copied role"
|
| 369 |
-
msgstr ""
|
| 370 |
-
|
| 371 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:708
|
| 372 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:708
|
| 373 |
msgid "Copy"
|
| 374 |
msgstr ""
|
| 375 |
|
| 376 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 377 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 378 |
msgid "Add Capability"
|
| 379 |
msgstr ""
|
| 380 |
|
| 381 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 382 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 383 |
-
msgid "capability name"
|
| 384 |
-
msgstr ""
|
| 385 |
-
|
| 386 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:717
|
| 387 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:717
|
| 388 |
msgid "Add to role"
|
| 389 |
msgstr ""
|
| 390 |
|
| 391 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 392 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 393 |
msgid "Backup Tool"
|
| 394 |
msgstr ""
|
| 395 |
|
| 396 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 397 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 398 |
msgid "Backup / Restore Roles"
|
| 399 |
msgstr ""
|
| 400 |
|
| 401 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 402 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 403 |
msgid "Related Permissions Plugins"
|
| 404 |
msgstr ""
|
| 405 |
|
| 406 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 407 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 408 |
msgid "PublishPress"
|
| 409 |
msgstr ""
|
| 410 |
|
| 411 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 412 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 413 |
msgid "Press Permit"
|
| 414 |
msgstr ""
|
| 415 |
|
| 416 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 417 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 418 |
msgid "Revisionary"
|
| 419 |
msgstr ""
|
| 420 |
|
| 421 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 422 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 423 |
msgid "Create this role definition in new (future) sites"
|
| 424 |
msgstr ""
|
| 425 |
|
| 426 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 427 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 428 |
msgid "include in new sites"
|
| 429 |
msgstr ""
|
| 430 |
|
| 431 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 432 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 433 |
msgid "Copy / update this role definition to all sites now"
|
| 434 |
msgstr ""
|
| 435 |
|
| 436 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:
|
| 437 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:
|
| 438 |
msgid "sync role to all sites now"
|
| 439 |
msgstr ""
|
| 440 |
|
| 441 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:9
|
| 442 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:9
|
| 443 |
msgid "You do not have permission to restore roles."
|
| 444 |
msgstr ""
|
| 445 |
|
| 446 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:44
|
| 447 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:44
|
| 448 |
msgid "New backup saved."
|
| 449 |
msgstr ""
|
| 450 |
|
| 451 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:51
|
| 452 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:51
|
| 453 |
msgid "Roles and Capabilities restored from initial backup."
|
| 454 |
msgstr ""
|
| 455 |
|
| 456 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:53
|
| 457 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:63
|
| 458 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:53
|
| 459 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:63
|
| 460 |
msgid "Restore failed. No backup found."
|
| 461 |
msgstr ""
|
| 462 |
|
| 463 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:61
|
| 464 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:61
|
| 465 |
msgid "Roles and Capabilities restored from last backup."
|
| 466 |
msgstr ""
|
| 467 |
|
| 468 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:82
|
| 469 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:82
|
| 470 |
msgid "Needed function to create default roles not found!"
|
| 471 |
msgstr ""
|
| 472 |
|
| 473 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:95
|
| 474 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup-handler.php:95
|
| 475 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
| 476 |
msgstr ""
|
| 477 |
|
| 478 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:33
|
| 479 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:33
|
| 480 |
#, php-format
|
| 481 |
msgid "Backup Tool for %1$sCapability Manager%2$s"
|
| 482 |
msgstr ""
|
| 483 |
|
| 484 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:42
|
| 485 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:42
|
| 486 |
msgid "Backup and Restore"
|
| 487 |
msgstr ""
|
| 488 |
|
| 489 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:46
|
| 490 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:46
|
| 491 |
msgid "Select action:"
|
| 492 |
msgstr ""
|
| 493 |
|
| 494 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:49
|
| 495 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:49
|
| 496 |
msgid "Backup roles and capabilities"
|
| 497 |
msgstr ""
|
| 498 |
|
| 499 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:53
|
| 500 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:53
|
| 501 |
msgid "Restore initial backup"
|
| 502 |
msgstr ""
|
| 503 |
|
| 504 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:56
|
| 505 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:56
|
| 506 |
msgid "Restore last saved backup"
|
| 507 |
msgstr ""
|
| 508 |
|
| 509 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:58
|
| 510 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:58
|
| 511 |
msgid "Do Action"
|
| 512 |
msgstr ""
|
| 513 |
|
| 514 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:66
|
| 515 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:66
|
| 516 |
msgid "Show initial backup"
|
| 517 |
msgstr ""
|
| 518 |
|
| 519 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:68
|
| 520 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:68
|
| 521 |
msgid "Show last backup"
|
| 522 |
msgstr ""
|
| 523 |
|
| 524 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:89
|
| 525 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:89
|
| 526 |
#, php-format
|
| 527 |
msgid "Initial Backup - %s"
|
| 528 |
msgstr ""
|
| 529 |
|
| 530 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:89
|
| 531 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:89
|
| 532 |
msgid "Initial Backup"
|
| 533 |
msgstr ""
|
| 534 |
|
| 535 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:90
|
| 536 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:90
|
| 537 |
#, php-format
|
| 538 |
msgid "Last Backup - %s"
|
| 539 |
msgstr ""
|
| 540 |
|
| 541 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:90
|
| 542 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:90
|
| 543 |
msgid "Last Backup"
|
| 544 |
msgstr ""
|
| 545 |
|
| 546 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:100
|
| 547 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:100
|
| 548 |
#, php-format
|
| 549 |
msgid "%s (%s roles)"
|
| 550 |
msgstr ""
|
| 551 |
|
| 552 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:116
|
| 553 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:116
|
| 554 |
#, php-format
|
| 555 |
msgid "%s (level %s)"
|
| 556 |
msgstr ""
|
| 557 |
|
| 558 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:137
|
| 559 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:137
|
| 560 |
msgid "Reset WordPress Defaults"
|
| 561 |
msgstr ""
|
| 562 |
|
| 563 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:139
|
| 564 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:139
|
| 565 |
msgid "WARNING:"
|
| 566 |
msgstr ""
|
| 567 |
|
| 568 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:139
|
| 569 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:139
|
| 570 |
msgid "Reseting default Roles and Capabilities will set them to the WordPress install defaults."
|
| 571 |
msgstr ""
|
| 572 |
|
| 573 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:142
|
| 574 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:142
|
| 575 |
msgid "If you have installed any plugin that adds new roles or capabilities, these will be lost."
|
| 576 |
msgstr ""
|
| 577 |
|
| 578 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:143
|
| 579 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:143
|
| 580 |
msgid "It is recommended to use this only as a last resource!"
|
| 581 |
msgstr ""
|
| 582 |
|
| 583 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
| 584 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:144
|
| 585 |
msgid "Reset Roles and Capabilities to WordPress defaults"
|
| 586 |
msgstr ""
|
| 587 |
|
| 588 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
| 589 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:144
|
| 590 |
msgid ""
|
| 591 |
"You are about to reset Roles and Capabilities to WordPress defaults.\n"
|
| 592 |
" 'Cancel' to stop, 'OK' to reset."
|
| 593 |
msgstr ""
|
| 594 |
|
| 595 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
| 596 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/backup.php:144
|
| 597 |
msgid "Reset to WordPress defaults"
|
| 598 |
msgstr ""
|
| 599 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 600 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:16
|
| 601 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:29
|
| 602 |
msgid "New role created."
|
|
@@ -616,11 +597,7 @@ msgid "Incorrect capability name."
|
|
| 616 |
msgstr ""
|
| 617 |
|
| 618 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:91
|
| 619 |
-
msgid "
|
| 620 |
-
msgstr ""
|
| 621 |
-
|
| 622 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:93
|
| 623 |
-
msgid "Error saving capability settings."
|
| 624 |
msgstr ""
|
| 625 |
|
| 626 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:97
|
|
@@ -631,103 +608,122 @@ msgstr ""
|
|
| 631 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
| 632 |
msgstr ""
|
| 633 |
|
| 634 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:
|
| 635 |
#, php-format
|
| 636 |
msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
|
| 637 |
msgstr ""
|
| 638 |
|
| 639 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:
|
| 640 |
#, php-format
|
| 641 |
msgid "Role has been deleted. %1$d users moved to default role %2$s."
|
| 642 |
msgstr ""
|
| 643 |
|
| 644 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 645 |
msgid "Explicity negate this capability by storing as disabled"
|
| 646 |
msgstr ""
|
| 647 |
|
| 648 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 649 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
| 650 |
msgstr ""
|
| 651 |
|
| 652 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 653 |
msgid "Post type registration does not define this capability distinctly"
|
| 654 |
msgstr ""
|
| 655 |
|
| 656 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 657 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
| 658 |
msgstr ""
|
| 659 |
|
| 660 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 661 |
msgid "Add or remove this capability from the WordPress role"
|
| 662 |
msgstr ""
|
| 663 |
|
| 664 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 665 |
msgid "Add or remove capability from the role normally"
|
| 666 |
msgstr ""
|
| 667 |
|
| 668 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 669 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 670 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 671 |
msgid "What do you think you're doing?!?"
|
| 672 |
msgstr ""
|
| 673 |
|
| 674 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:
|
| 675 |
msgid "Bad form Received"
|
| 676 |
msgstr ""
|
| 677 |
|
| 678 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 679 |
#, php-format
|
| 680 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
| 681 |
msgstr ""
|
| 682 |
|
| 683 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 684 |
#, php-format
|
| 685 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
| 686 |
msgstr ""
|
| 687 |
|
| 688 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 689 |
#, php-format
|
| 690 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
|
| 691 |
msgstr ""
|
| 692 |
|
| 693 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 694 |
#, php-format
|
| 695 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
|
| 696 |
msgstr ""
|
| 697 |
|
| 698 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 699 |
-
|
|
|
|
| 700 |
msgstr ""
|
| 701 |
|
| 702 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 703 |
msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
|
| 704 |
msgstr ""
|
| 705 |
|
| 706 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 707 |
msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
|
| 708 |
msgstr ""
|
| 709 |
|
| 710 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 711 |
msgid "hidden role"
|
| 712 |
msgstr ""
|
| 713 |
|
| 714 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 715 |
-
msgid "
|
| 716 |
msgstr ""
|
| 717 |
|
| 718 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 719 |
-
msgid "
|
| 720 |
msgstr ""
|
| 721 |
|
| 722 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 723 |
-
msgid "
|
| 724 |
msgstr ""
|
| 725 |
|
| 726 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
| 727 |
msgid "Use create_posts capability"
|
| 728 |
msgstr ""
|
| 729 |
|
| 730 |
-
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:
|
|
|
|
|
|
|
| 731 |
msgid "Update"
|
| 732 |
msgstr ""
|
| 733 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: Capability Manager Enhanced\n"
|
| 4 |
"Report-Msgid-Bugs-To: \n"
|
| 5 |
+
"POT-Creation-Date: 2019-03-28 17:59-0500\n"
|
| 6 |
+
"PO-Revision-Date: 2019-03-28 17:59-0500\n"
|
| 7 |
"Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
|
| 8 |
"Language-Team: PublishPress <help@publishpress.com>\n"
|
| 9 |
"MIME-Version: 1.0\n"
|
| 35 |
msgid "%s is required for this plugin."
|
| 36 |
msgstr ""
|
| 37 |
|
| 38 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:153
|
| 39 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:158
|
| 40 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:160
|
| 41 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:255
|
| 42 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:260
|
| 43 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:262
|
| 44 |
msgid "Capability Manager"
|
| 45 |
msgstr ""
|
| 46 |
|
| 47 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:157
|
| 48 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/capsman-enhanced.php:160
|
| 49 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:259
|
| 50 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:262
|
| 51 |
msgid "Capabilities"
|
| 52 |
msgstr ""
|
| 53 |
|
| 55 |
msgid "Settings saved."
|
| 56 |
msgstr ""
|
| 57 |
|
| 58 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:36
|
| 59 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:36
|
| 60 |
#, php-format
|
| 61 |
+
msgid "Warning: This role cannot access the dashboard without the read capability. %1$sClick here to fix this now%2$s."
|
| 62 |
msgstr ""
|
| 63 |
|
| 64 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:61
|
| 65 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:61
|
| 66 |
msgid "Roles and Capabilities"
|
| 67 |
msgstr ""
|
| 68 |
|
| 69 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:70
|
| 70 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:70
|
| 71 |
#, php-format
|
| 72 |
msgid "Capabilities for %s"
|
| 73 |
msgstr ""
|
| 74 |
|
| 75 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:73
|
| 76 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:687
|
| 77 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:73
|
| 78 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:687
|
| 79 |
msgid "Save Changes"
|
| 80 |
msgstr ""
|
| 81 |
|
| 82 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:77
|
| 83 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:77
|
| 84 |
msgid "View and modify capabilities WordPress associates with each role. Changes <strong>remain in the database</strong> even if you deactivate this plugin."
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:89
|
| 88 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:89
|
| 89 |
#, php-format
|
| 90 |
msgid "Thanks for using the %1$sPublishPress%2$s family of professional publishing tools."
|
| 91 |
msgstr ""
|
| 92 |
|
| 93 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:120
|
| 94 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:120
|
| 95 |
msgid "Automatically define type-specific capabilities for your custom post types and taxonomies"
|
| 96 |
msgstr ""
|
| 97 |
|
| 98 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:124
|
| 99 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:124
|
| 100 |
msgid "Assign standard WP roles supplementally for a specific post type"
|
| 101 |
msgstr ""
|
| 102 |
|
| 103 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:128
|
| 104 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:128
|
| 105 |
msgid "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
|
| 106 |
msgstr ""
|
| 107 |
|
| 108 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:132
|
| 109 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:132
|
| 110 |
msgid "Customize reading permissions per-category or per-post"
|
| 111 |
msgstr ""
|
| 112 |
|
| 113 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:136
|
| 114 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:136
|
| 115 |
msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
|
| 116 |
msgstr ""
|
| 117 |
|
| 118 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:140
|
| 119 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:140
|
| 120 |
msgid "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>"
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:144
|
| 124 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:144
|
| 125 |
msgid "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>"
|
| 126 |
msgstr ""
|
| 127 |
|
| 128 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:148
|
| 129 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:148
|
| 130 |
msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
|
| 131 |
msgstr ""
|
| 132 |
|
| 133 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:152
|
| 134 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:152
|
| 135 |
msgid "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>"
|
| 136 |
msgstr ""
|
| 137 |
|
| 138 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:156
|
| 139 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:156
|
| 140 |
msgid "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>"
|
| 141 |
msgstr ""
|
| 142 |
|
| 143 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:160
|
| 144 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:160
|
| 145 |
msgid "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
|
| 146 |
msgstr ""
|
| 147 |
|
| 148 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:164
|
| 149 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:164
|
| 150 |
msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
|
| 151 |
msgstr ""
|
| 152 |
|
| 153 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:168
|
| 154 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:168
|
| 155 |
msgid "Member support forum"
|
| 156 |
msgstr ""
|
| 157 |
|
| 158 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:174
|
| 159 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:174
|
| 160 |
#, php-format
|
| 161 |
msgid "%1$sgrab%2$s %3$s"
|
| 162 |
msgstr ""
|
| 163 |
|
| 164 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:174
|
| 165 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:174
|
| 166 |
#, php-format
|
| 167 |
msgid "%s (free install)"
|
| 168 |
msgstr ""
|
| 169 |
|
| 170 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:176
|
| 171 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:176
|
| 172 |
#, php-format
|
| 173 |
msgid "%1$sbuy%2$s %3$s"
|
| 174 |
msgstr ""
|
| 175 |
|
| 176 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:176
|
| 177 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:176
|
| 178 |
#, php-format
|
| 179 |
msgid "%s info/purchase"
|
| 180 |
msgstr ""
|
| 181 |
|
| 182 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:252
|
| 183 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:252
|
| 184 |
msgid " "
|
| 185 |
msgstr ""
|
| 186 |
|
| 187 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:253
|
| 188 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:253
|
| 189 |
msgid "Reading"
|
| 190 |
msgstr ""
|
| 191 |
|
| 192 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:254
|
| 193 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:254
|
| 194 |
msgid "Editing Capabilities"
|
| 195 |
msgstr ""
|
| 196 |
|
| 197 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:255
|
| 198 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:255
|
| 199 |
msgid "Deletion Capabilities"
|
| 200 |
msgstr ""
|
| 201 |
|
| 202 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:259
|
| 203 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:259
|
| 204 |
msgid "can read posts which are currently published with private visibility"
|
| 205 |
msgstr ""
|
| 206 |
|
| 207 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:260
|
| 208 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:260
|
| 209 |
msgid "has basic editing capability (but may need other capabilities based on post status and ownership)"
|
| 210 |
msgstr ""
|
| 211 |
|
| 212 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:261
|
| 213 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:261
|
| 214 |
msgid "can edit posts which were created by other users"
|
| 215 |
msgstr ""
|
| 216 |
|
| 217 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:262
|
| 218 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:262
|
| 219 |
msgid "can edit posts which are currently published"
|
| 220 |
msgstr ""
|
| 221 |
|
| 222 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:263
|
| 223 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:263
|
| 224 |
msgid "can edit posts which are currently published with private visibility"
|
| 225 |
msgstr ""
|
| 226 |
|
| 227 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:264
|
| 228 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:264
|
| 229 |
msgid "can make a post publicly visible"
|
| 230 |
msgstr ""
|
| 231 |
|
| 232 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:265
|
| 233 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:265
|
| 234 |
msgid "has basic deletion capability (but may need other capabilities based on post status and ownership)"
|
| 235 |
msgstr ""
|
| 236 |
|
| 237 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:266
|
| 238 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:266
|
| 239 |
msgid "can delete posts which were created by other users"
|
| 240 |
msgstr ""
|
| 241 |
|
| 242 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:267
|
| 243 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:267
|
| 244 |
msgid "can delete posts which are currently published"
|
| 245 |
msgstr ""
|
| 246 |
|
| 247 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:268
|
| 248 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:268
|
| 249 |
msgid "can delete posts which are currently published with private visibility"
|
| 250 |
msgstr ""
|
| 251 |
|
| 252 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:395
|
| 253 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:484
|
| 254 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:597
|
| 255 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:395
|
| 256 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:484
|
| 257 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:597
|
| 258 |
#, php-format
|
| 259 |
msgid "%s: assigned by Permission Group"
|
| 260 |
msgstr ""
|
| 261 |
|
| 262 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:409
|
| 263 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:409
|
| 264 |
+
#, php-format
|
| 265 |
+
msgid "shared capability: %s"
|
| 266 |
+
msgstr ""
|
| 267 |
+
|
| 268 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:461
|
| 269 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:461
|
| 270 |
msgid "Other WordPress Core Capabilities"
|
| 271 |
msgstr ""
|
| 272 |
|
| 273 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:503
|
| 274 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:503
|
| 275 |
+
msgid "Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
|
| 276 |
+
msgstr ""
|
| 277 |
+
|
| 278 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
|
| 279 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
|
| 280 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
|
| 281 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
|
| 282 |
msgid "check/uncheck all"
|
| 283 |
msgstr ""
|
| 284 |
|
| 285 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
|
| 286 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
|
| 287 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
|
| 288 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
|
| 289 |
msgid "negate all (storing as disabled capabilities)"
|
| 290 |
msgstr ""
|
| 291 |
|
| 292 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:546
|
| 293 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:662
|
| 294 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:546
|
| 295 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:662
|
| 296 |
msgid "negate none (add/remove all capabilities normally)"
|
| 297 |
msgstr ""
|
| 298 |
|
| 299 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:553
|
| 300 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:553
|
| 301 |
msgid "Additional Capabilities"
|
| 302 |
msgstr ""
|
| 303 |
|
| 304 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:653
|
| 305 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:653
|
| 306 |
msgid "Level:"
|
| 307 |
msgstr ""
|
| 308 |
|
| 309 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:671
|
| 310 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:671
|
| 311 |
msgid "Note: Underscores replace spaces in stored capability name (\"edit users\" => \"edit_users\")."
|
| 312 |
msgstr ""
|
| 313 |
|
| 314 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
|
| 315 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
|
| 316 |
msgid "Delete this role"
|
| 317 |
msgstr ""
|
| 318 |
|
| 319 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
|
| 320 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
|
| 321 |
#, php-format
|
| 322 |
msgid ""
|
| 323 |
"You are about to delete the %s role.\n"
|
| 324 |
" 'Cancel' to stop, 'OK' to delete."
|
| 325 |
msgstr ""
|
| 326 |
|
| 327 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:690
|
| 328 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:690
|
| 329 |
msgid "Delete Role"
|
| 330 |
msgstr ""
|
| 331 |
|
| 332 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:697
|
| 333 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:697
|
| 334 |
msgid "Select New Role"
|
| 335 |
msgstr ""
|
| 336 |
|
| 337 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:705
|
| 338 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:705
|
| 339 |
msgid "Change"
|
| 340 |
msgstr ""
|
| 341 |
|
| 342 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:718
|
| 343 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:718
|
| 344 |
msgid "Create New Role"
|
| 345 |
msgstr ""
|
| 346 |
|
| 347 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:721
|
| 348 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:737
|
| 349 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:721
|
| 350 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:737
|
| 351 |
+
msgid "Role Name"
|
| 352 |
msgstr ""
|
| 353 |
|
| 354 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:724
|
| 355 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:740
|
| 356 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:86
|
| 357 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:724
|
| 358 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:740
|
| 359 |
msgid "Make role available for supplemental assignment to Permission Groups only"
|
| 360 |
msgstr ""
|
| 361 |
|
| 362 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:724
|
| 363 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:740
|
| 364 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:724
|
| 365 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:740
|
| 366 |
msgid "hidden"
|
| 367 |
msgstr ""
|
| 368 |
|
| 369 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:728
|
| 370 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:728
|
| 371 |
msgid "Create"
|
| 372 |
msgstr ""
|
| 373 |
|
| 374 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:734
|
| 375 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:734
|
| 376 |
msgid "Copy this role to"
|
| 377 |
msgstr ""
|
| 378 |
|
| 379 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:744
|
| 380 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:744
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 381 |
msgid "Copy"
|
| 382 |
msgstr ""
|
| 383 |
|
| 384 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:750
|
| 385 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:750
|
| 386 |
msgid "Add Capability"
|
| 387 |
msgstr ""
|
| 388 |
|
| 389 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:753
|
| 390 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:753
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 391 |
msgid "Add to role"
|
| 392 |
msgstr ""
|
| 393 |
|
| 394 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:758
|
| 395 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:758
|
| 396 |
msgid "Backup Tool"
|
| 397 |
msgstr ""
|
| 398 |
|
| 399 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:760
|
| 400 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:760
|
| 401 |
msgid "Backup / Restore Roles"
|
| 402 |
msgstr ""
|
| 403 |
|
| 404 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:765
|
| 405 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:765
|
| 406 |
msgid "Related Permissions Plugins"
|
| 407 |
msgstr ""
|
| 408 |
|
| 409 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:770
|
| 410 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:770
|
| 411 |
msgid "PublishPress"
|
| 412 |
msgstr ""
|
| 413 |
|
| 414 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:772
|
| 415 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:772
|
| 416 |
msgid "Press Permit"
|
| 417 |
msgstr ""
|
| 418 |
|
| 419 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:778
|
| 420 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:778
|
| 421 |
msgid "Revisionary"
|
| 422 |
msgstr ""
|
| 423 |
|
| 424 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:807
|
| 425 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:807
|
| 426 |
msgid "Create this role definition in new (future) sites"
|
| 427 |
msgstr ""
|
| 428 |
|
| 429 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:807
|
| 430 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:807
|
| 431 |
msgid "include in new sites"
|
| 432 |
msgstr ""
|
| 433 |
|
| 434 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:810
|
| 435 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:810
|
| 436 |
msgid "Copy / update this role definition to all sites now"
|
| 437 |
msgstr ""
|
| 438 |
|
| 439 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/admin.php:810
|
| 440 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced\includes/admin.php:810
|
| 441 |
msgid "sync role to all sites now"
|
| 442 |
msgstr ""
|
| 443 |
|
| 444 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:9
|
|
|
|
| 445 |
msgid "You do not have permission to restore roles."
|
| 446 |
msgstr ""
|
| 447 |
|
| 448 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:44
|
|
|
|
| 449 |
msgid "New backup saved."
|
| 450 |
msgstr ""
|
| 451 |
|
| 452 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:51
|
|
|
|
| 453 |
msgid "Roles and Capabilities restored from initial backup."
|
| 454 |
msgstr ""
|
| 455 |
|
| 456 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:53
|
| 457 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:63
|
|
|
|
|
|
|
| 458 |
msgid "Restore failed. No backup found."
|
| 459 |
msgstr ""
|
| 460 |
|
| 461 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:61
|
|
|
|
| 462 |
msgid "Roles and Capabilities restored from last backup."
|
| 463 |
msgstr ""
|
| 464 |
|
| 465 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:82
|
|
|
|
| 466 |
msgid "Needed function to create default roles not found!"
|
| 467 |
msgstr ""
|
| 468 |
|
| 469 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup-handler.php:95
|
|
|
|
| 470 |
msgid "Roles and Capabilities reset to WordPress defaults"
|
| 471 |
msgstr ""
|
| 472 |
|
| 473 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:33
|
|
|
|
| 474 |
#, php-format
|
| 475 |
msgid "Backup Tool for %1$sCapability Manager%2$s"
|
| 476 |
msgstr ""
|
| 477 |
|
| 478 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:42
|
|
|
|
| 479 |
msgid "Backup and Restore"
|
| 480 |
msgstr ""
|
| 481 |
|
| 482 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:46
|
|
|
|
| 483 |
msgid "Select action:"
|
| 484 |
msgstr ""
|
| 485 |
|
| 486 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:49
|
|
|
|
| 487 |
msgid "Backup roles and capabilities"
|
| 488 |
msgstr ""
|
| 489 |
|
| 490 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:53
|
|
|
|
| 491 |
msgid "Restore initial backup"
|
| 492 |
msgstr ""
|
| 493 |
|
| 494 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:56
|
|
|
|
| 495 |
msgid "Restore last saved backup"
|
| 496 |
msgstr ""
|
| 497 |
|
| 498 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:58
|
|
|
|
| 499 |
msgid "Do Action"
|
| 500 |
msgstr ""
|
| 501 |
|
| 502 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:66
|
|
|
|
| 503 |
msgid "Show initial backup"
|
| 504 |
msgstr ""
|
| 505 |
|
| 506 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:68
|
|
|
|
| 507 |
msgid "Show last backup"
|
| 508 |
msgstr ""
|
| 509 |
|
| 510 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:89
|
|
|
|
| 511 |
#, php-format
|
| 512 |
msgid "Initial Backup - %s"
|
| 513 |
msgstr ""
|
| 514 |
|
| 515 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:89
|
|
|
|
| 516 |
msgid "Initial Backup"
|
| 517 |
msgstr ""
|
| 518 |
|
| 519 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:90
|
|
|
|
| 520 |
#, php-format
|
| 521 |
msgid "Last Backup - %s"
|
| 522 |
msgstr ""
|
| 523 |
|
| 524 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:90
|
|
|
|
| 525 |
msgid "Last Backup"
|
| 526 |
msgstr ""
|
| 527 |
|
| 528 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:100
|
|
|
|
| 529 |
#, php-format
|
| 530 |
msgid "%s (%s roles)"
|
| 531 |
msgstr ""
|
| 532 |
|
| 533 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:116
|
|
|
|
| 534 |
#, php-format
|
| 535 |
msgid "%s (level %s)"
|
| 536 |
msgstr ""
|
| 537 |
|
| 538 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:137
|
|
|
|
| 539 |
msgid "Reset WordPress Defaults"
|
| 540 |
msgstr ""
|
| 541 |
|
| 542 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:139
|
|
|
|
| 543 |
msgid "WARNING:"
|
| 544 |
msgstr ""
|
| 545 |
|
| 546 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:139
|
|
|
|
| 547 |
msgid "Reseting default Roles and Capabilities will set them to the WordPress install defaults."
|
| 548 |
msgstr ""
|
| 549 |
|
| 550 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:142
|
|
|
|
| 551 |
msgid "If you have installed any plugin that adds new roles or capabilities, these will be lost."
|
| 552 |
msgstr ""
|
| 553 |
|
| 554 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:143
|
|
|
|
| 555 |
msgid "It is recommended to use this only as a last resource!"
|
| 556 |
msgstr ""
|
| 557 |
|
| 558 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
|
|
|
| 559 |
msgid "Reset Roles and Capabilities to WordPress defaults"
|
| 560 |
msgstr ""
|
| 561 |
|
| 562 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
|
|
|
| 563 |
msgid ""
|
| 564 |
"You are about to reset Roles and Capabilities to WordPress defaults.\n"
|
| 565 |
" 'Cancel' to stop, 'OK' to reset."
|
| 566 |
msgstr ""
|
| 567 |
|
| 568 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/backup.php:144
|
|
|
|
| 569 |
msgid "Reset to WordPress defaults"
|
| 570 |
msgstr ""
|
| 571 |
|
| 572 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/filters-woocommerce.php:32
|
| 573 |
+
#, php-format
|
| 574 |
+
msgid "All %s"
|
| 575 |
+
msgstr ""
|
| 576 |
+
|
| 577 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/filters-woocommerce.php:33
|
| 578 |
+
msgid "Add New"
|
| 579 |
+
msgstr ""
|
| 580 |
+
|
| 581 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:16
|
| 582 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:29
|
| 583 |
msgid "New role created."
|
| 597 |
msgstr ""
|
| 598 |
|
| 599 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:91
|
| 600 |
+
msgid "Type / Taxonomy settings saved."
|
|
|
|
|
|
|
|
|
|
|
|
|
| 601 |
msgstr ""
|
| 602 |
|
| 603 |
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:97
|
| 608 |
msgid "You cannot remove Manage Capabilities from Administrators"
|
| 609 |
msgstr ""
|
| 610 |
|
| 611 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:317
|
| 612 |
#, php-format
|
| 613 |
msgid "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
|
| 614 |
msgstr ""
|
| 615 |
|
| 616 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/handler.php:364
|
| 617 |
#, php-format
|
| 618 |
msgid "Role has been deleted. %1$d users moved to default role %2$s."
|
| 619 |
msgstr ""
|
| 620 |
|
| 621 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:158
|
| 622 |
msgid "Explicity negate this capability by storing as disabled"
|
| 623 |
msgstr ""
|
| 624 |
|
| 625 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:159
|
| 626 |
msgid "Explicitly negate these capabilities by storing as disabled"
|
| 627 |
msgstr ""
|
| 628 |
|
| 629 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:160
|
| 630 |
msgid "Post type registration does not define this capability distinctly"
|
| 631 |
msgstr ""
|
| 632 |
|
| 633 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:161
|
| 634 |
msgid "This capability is explicitly negated. Click to add/remove normally."
|
| 635 |
msgstr ""
|
| 636 |
|
| 637 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:162
|
| 638 |
msgid "Add or remove this capability from the WordPress role"
|
| 639 |
msgstr ""
|
| 640 |
|
| 641 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:163
|
| 642 |
msgid "Add or remove capability from the role normally"
|
| 643 |
msgstr ""
|
| 644 |
|
| 645 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:359
|
| 646 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:378
|
| 647 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:537
|
| 648 |
msgid "What do you think you're doing?!?"
|
| 649 |
msgstr ""
|
| 650 |
|
| 651 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/manager.php:417
|
| 652 |
msgid "Bad form Received"
|
| 653 |
msgstr ""
|
| 654 |
|
| 655 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:44
|
| 656 |
#, php-format
|
| 657 |
msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
|
| 658 |
msgstr ""
|
| 659 |
|
| 660 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:46
|
| 661 |
#, php-format
|
| 662 |
msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
|
| 663 |
msgstr ""
|
| 664 |
|
| 665 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:51
|
| 666 |
#, php-format
|
| 667 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permission Groups%s."
|
| 668 |
msgstr ""
|
| 669 |
|
| 670 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:53
|
| 671 |
#, php-format
|
| 672 |
msgid "\"Posts\" capabilities selected here also define type-specific role assignment for Permit Groups%s."
|
| 673 |
msgstr ""
|
| 674 |
|
| 675 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:61
|
| 676 |
+
#, php-format
|
| 677 |
+
msgid "Capabilities for custom statuses can be manually added here. (See %sPermissions > Post Statuses%s for applicable names). %sSupplemental status-specific roles%s are usually more convenient, though."
|
| 678 |
msgstr ""
|
| 679 |
|
| 680 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:63
|
| 681 |
msgid "Capabilities for custom statuses can be manually added here. Or activate the PP Custom Post Statuses extension to assign status-specific supplemental roles."
|
| 682 |
msgstr ""
|
| 683 |
|
| 684 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:66
|
| 685 |
msgid "Capabilities for custom statuses can be manually added to a role here (see Conditions > Status > Capability Mapping for applicable names). However, it is usually more convenient to use Permit Groups to assign a supplemental status-specific role."
|
| 686 |
msgstr ""
|
| 687 |
|
| 688 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:86
|
| 689 |
msgid "hidden role"
|
| 690 |
msgstr ""
|
| 691 |
|
| 692 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:97
|
| 693 |
+
msgid "Type-Specific Capabilities"
|
| 694 |
msgstr ""
|
| 695 |
|
| 696 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:100
|
| 697 |
+
msgid "Ensure permissions can be controlled separately from other post types."
|
| 698 |
msgstr ""
|
| 699 |
|
| 700 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
|
| 701 |
+
msgid "Make selected post types require a different capability to add new posts."
|
| 702 |
msgstr ""
|
| 703 |
|
| 704 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:155
|
| 705 |
msgid "Use create_posts capability"
|
| 706 |
msgstr ""
|
| 707 |
|
| 708 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:160
|
| 709 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:221
|
| 710 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:277
|
| 711 |
msgid "Update"
|
| 712 |
msgstr ""
|
| 713 |
|
| 714 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:170
|
| 715 |
+
msgid "Taxonomy-Specific Capabilities"
|
| 716 |
+
msgstr ""
|
| 717 |
+
|
| 718 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:173
|
| 719 |
+
msgid "Ensure permissions can be controlled separately from other taxonomies."
|
| 720 |
+
msgstr ""
|
| 721 |
+
|
| 722 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:226
|
| 723 |
+
msgid "Detailed Taxonomy Capabilities"
|
| 724 |
+
msgstr ""
|
| 725 |
+
|
| 726 |
+
#: F:\www\wp50\wp-content\plugins\capability-manager-enhanced/includes/pp-ui.php:229
|
| 727 |
+
msgid "Enforce Edit, Delete and Assign capabilities separately from Management capability."
|
| 728 |
+
msgstr ""
|
| 729 |
+
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: publishpress, kevinB, stevejburge, andergmartins
|
|
| 3 |
Tags: roles, capabilities, manager, editor, rights, role, capability, types, taxonomies, network, multisite, default
|
| 4 |
Requires at least: 4.1
|
| 5 |
Tested up to: 5.1
|
| 6 |
-
Stable tag: 1.
|
| 7 |
License: GPLv3
|
| 8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
|
@@ -11,43 +11,44 @@ A simple way to manage WordPress roles and capabilities.
|
|
| 11 |
|
| 12 |
== Description ==
|
| 13 |
|
| 14 |
-
|
| 15 |
|
| 16 |
= Features: =
|
| 17 |
|
| 18 |
-
* Create
|
| 19 |
-
* Manage
|
| 20 |
-
*
|
| 21 |
-
*
|
| 22 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
* Backup and restore Roles and Capabilities to revert your last changes.
|
| 24 |
-
* Revert Roles and Capabilities to WordPress defaults.
|
| 25 |
-
|
| 26 |
Capability Manager Enhanced is professionally developed and supported by the experienced <a href="https://publishpress.com">PublishPress</a> team.
|
| 27 |
|
| 28 |
It has been a reliable tool since 2012, when PublishPress team member Kevin Behrens forked it from Jordi Canals' abandoned Capability Manager plugin.
|
| 29 |
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
* easily specify which post types require type-specific capability definitions
|
| 33 |
-
* show capabilities which Press Permit adds to the role by supplemental type-specific role assignment
|
| 34 |
|
| 35 |
Role management can also be delegated:
|
| 36 |
|
| 37 |
-
* Only
|
| 38 |
-
* Administrator
|
| 39 |
-
* Non-administrators can only
|
| 40 |
|
| 41 |
== Screenshots ==
|
| 42 |
|
| 43 |
-
1. Users Menu
|
| 44 |
-
2. View or
|
| 45 |
-
3. Network: copy
|
| 46 |
-
4.
|
| 47 |
-
5. Permissions Menu (Press Permit integration)
|
| 48 |
-
6.
|
| 49 |
-
7.
|
| 50 |
-
8. Backup/Restore tool
|
| 51 |
|
| 52 |
== Frequently Asked Questions ==
|
| 53 |
|
|
@@ -69,6 +70,14 @@ Keep in mind that this plugin's main purpose is to expose switches (defined capa
|
|
| 69 |
|
| 70 |
== Changelog ==
|
| 71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
= 1.6.1 =
|
| 73 |
* Feature : Prevent read capability from being removed from a standard role
|
| 74 |
* Feature : If read capability is missing from a standard role, display warning and instant fix link
|
| 3 |
Tags: roles, capabilities, manager, editor, rights, role, capability, types, taxonomies, network, multisite, default
|
| 4 |
Requires at least: 4.1
|
| 5 |
Tested up to: 5.1
|
| 6 |
+
Stable tag: 1.7
|
| 7 |
License: GPLv3
|
| 8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
| 9 |
|
| 11 |
|
| 12 |
== Description ==
|
| 13 |
|
| 14 |
+
Control permissions requirements for your post types, and assign those capabilities to any WordPress role.
|
| 15 |
|
| 16 |
= Features: =
|
| 17 |
|
| 18 |
+
* Create Roles
|
| 19 |
+
* Manage Role Capabilities
|
| 20 |
+
* Cause type-specific Capabilities to be required and applied for any Post Type
|
| 21 |
+
* Cause distinct edit, delete and assign Capabilities to be required and applied for any Taxonomy
|
| 22 |
+
* Some specialized support for WooCommerce Post Types
|
| 23 |
+
* Supports negation: set any Capability to granted, not granted, or blocked
|
| 24 |
+
* Integration with Press Permit and PublishPress for comprehensive publishing solutions
|
| 25 |
+
* Copy any Role to all network sites
|
| 26 |
+
* Mark any Role for auto-copy to future network sites
|
| 27 |
* Backup and restore Roles and Capabilities to revert your last changes.
|
| 28 |
+
* Revert Roles and Capabilities to WordPress defaults.
|
| 29 |
+
|
| 30 |
Capability Manager Enhanced is professionally developed and supported by the experienced <a href="https://publishpress.com">PublishPress</a> team.
|
| 31 |
|
| 32 |
It has been a reliable tool since 2012, when PublishPress team member Kevin Behrens forked it from Jordi Canals' abandoned Capability Manager plugin.
|
| 33 |
|
| 34 |
+
For additional versatility and convenience, enjoy <a href="https://wordpress.org/plugins/press-permit-core">Press Permit</a> plugin integration. Capability Manager Enhanced will show which capabilities have been added indirectly (as a pre-defined subset) by supplemental Type-Specific Roles (Page Contributor, Media Author, Product Editor, etc.)
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
Role management can also be delegated:
|
| 37 |
|
| 38 |
+
* Only Users with 'manage_capabilities' can manage them. This Capability is created at install time and assigned to Administrators.
|
| 39 |
+
* Administrator Role cannot be deleted.
|
| 40 |
+
* Non-administrators can only manager Roles or Users with same or lower capabilities.
|
| 41 |
|
| 42 |
== Screenshots ==
|
| 43 |
|
| 44 |
+
1. Users Menu
|
| 45 |
+
2. View or modify Capabilities for any Role
|
| 46 |
+
3. Network: copy Role to existing or future Sites
|
| 47 |
+
4. Role operations
|
| 48 |
+
5. Permissions Menu (Press Permit integration)
|
| 49 |
+
6. Shading of Capabilities granted by supplemental Type-Specific Roles
|
| 50 |
+
7. Enforce Type-Specific Capabilities (Press Permit no longer required)
|
| 51 |
+
8. Backup / Restore tool
|
| 52 |
|
| 53 |
== Frequently Asked Questions ==
|
| 54 |
|
| 70 |
|
| 71 |
== Changelog ==
|
| 72 |
|
| 73 |
+
= 1.7 - 28 Mar 2019 =
|
| 74 |
+
* Feature : New right sidebar setting: "Type-Specific Capabilities" for selected post types (without activating Press Permit Core).
|
| 75 |
+
* Feature : New right sidebar setting: "Taxonomy-Specific Capabilities" ensures a distinct manage capability for selected taxonomies
|
| 76 |
+
* Feature : New right sidebar setting: "Detailed Taxonomy Capabilities" causes term assign, edit and deletion capabilities to be required and credited separate from management capability
|
| 77 |
+
* Feature : WooCommerce - Ensure orders can be edited or added based on edit_shop_orders / create_shop_orders capability
|
| 78 |
+
* Change : Lockout safeguard (preventing read capability removal) is bypassed if role has no WP admin / edit capabilities, or if it has "dashboard_lockout_ok" capability
|
| 79 |
+
* Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7
|
| 80 |
+
|
| 81 |
= 1.6.1 =
|
| 82 |
* Feature : Prevent read capability from being removed from a standard role
|
| 83 |
* Feature : If read capability is missing from a standard role, display warning and instant fix link
|
