Capability Manager Enhanced - Version 2.3.3

Version Description

  • 13 Jan 2022 =
    • Fixed : Capability names with dashes could not be added
    • Fixed : After role rename, title in dropdown does not refresh
    • Fixed : Input sanitization consistency
    • Fixed : Escape output variables
    • Lang : Spanish, French, Italian
Download this release

Release Info

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

Code changes from version 2.3.2 to 2.3.3

Files changed (59) hide show
  1. capsman-enhanced.php +13 -14
  2. classes/pp-capabilities-notices.php +3 -5
  3. common/libs/chosen-v1.8.3/chosen.jquery.min.js +0 -3
  4. common/libs/chosen-v1.8.3/chosen.proto.min.js +0 -3
  5. common/libs/chosen-v1.8.3/package.json +0 -46
  6. common/libs/chosen-v1.8.7/LICENSE.md +23 -0
  7. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen-sprite.png +0 -0
  8. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen-sprite@2x.png +0 -0
  9. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.css +9 -9
  10. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.jquery.js +23 -74
  11. common/libs/chosen-v1.8.7/chosen.jquery.min.js +3 -0
  12. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.min.css +2 -2
  13. common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.proto.js +23 -98
  14. common/libs/chosen-v1.8.7/chosen.proto.min.js +3 -0
  15. common/libs/{chosen-v1.8.3/bower.json → chosen-v1.8.7/composer.json} +17 -25
  16. framework/lib/formating.php +3 -3
  17. framework/lib/users.php +2 -5
  18. includes-core/CoreAdmin.php +3 -3
  19. includes-core/admin-features-promo.php +2 -2
  20. includes-core/admin-menus-promo.php +12 -13
  21. includes-core/editor-features-promo.php +13 -13
  22. includes-core/nav-menus-promo.php +8 -8
  23. includes-core/pp-capabilities-permissions.php +0 -445
  24. includes/admin-load.php +7 -7
  25. includes/admin.php +202 -203
  26. includes/backup-handler.php +6 -6
  27. includes/backup.php +382 -380
  28. includes/cap-helper.php +0 -10
  29. includes/features/admin-features.php +37 -30
  30. includes/features/editor-features-classic.php +24 -17
  31. includes/features/editor-features-gutenberg.php +26 -17
  32. includes/features/editor-features.php +17 -17
  33. includes/features/restrict-admin-features.php +21 -21
  34. includes/features/restrict-editor-features.php +69 -75
  35. includes/filters-woocommerce.php +2 -2
  36. includes/filters.php +2 -2
  37. includes/functions-admin.php +2 -2
  38. includes/functions.php +35 -9
  39. includes/handler.php +68 -54
  40. includes/manager.php +63 -60
  41. includes/network.php +3 -3
  42. includes/pp-handler.php +12 -7
  43. includes/pp-ui.php +49 -39
  44. includes/publishpress-roles.php +1 -1
  45. includes/roles/class/class-pp-roles-actions.php +45 -38
  46. includes/roles/class/class-pp-roles-admin.php +3 -3
  47. includes/roles/class/class-pp-roles-list-table.php +19 -25
  48. includes/roles/class/class-pp-roles-manager.php +9 -6
  49. includes/roles/roles-functions.php +0 -3
  50. includes/roles/roles.php +12 -12
  51. includes/settings-handler.php +6 -9
  52. includes/settings.php +9 -9
  53. languages/capsman-enhanced-es_ES.mo +0 -0
  54. languages/capsman-enhanced-es_ES.po +1433 -910
  55. languages/capsman-enhanced-fr_FR.mo +0 -0
  56. languages/capsman-enhanced-fr_FR.po +3317 -0
  57. languages/capsman-enhanced-it_IT.mo +0 -0
  58. languages/capsman-enhanced-it_IT.po +1476 -794
  59. readme.txt +8 -1
capsman-enhanced.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
- * Version: 2.3.2
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
@@ -25,20 +25,19 @@
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
- * @version 2.3.2
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
- define('CAPSMAN_VERSION', '2.3.2');
33
- define('CAPSMAN_ENH_VERSION', '2.3.2');
34
- define('PUBLISHPRESS_CAPS_VERSION', '2.3.2');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
38
  if ( false !== strpos($plugin_file, 'capsman.php') ) {
39
  add_action('admin_notices', function() {
40
- $message = __( '<strong>Error:</strong> PublishPress Capabilities cannot function because another copy of Capability Manager is active.', 'capsman-enhanced' );
41
- echo '<div id="message" class="error fade" style="color: black">' . $message . '</div>';
42
  });
43
  return;
44
  }
@@ -68,7 +67,7 @@ if ($pro_active) {
68
  function($links, $file)
69
  {
70
  if ($file == plugin_basename(__FILE__)) {
71
- $links[]= __('<strong>This plugin can be deleted.</strong>', 'press-permit-core');
72
  }
73
 
74
  return $links;
@@ -95,10 +94,10 @@ if ( version_compare(PHP_VERSION, '5.4.0', '<') ) {
95
  $data = get_plugin_data(__FILE__);
96
  load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/languages');
97
 
98
- echo '<div class="error"><p><strong>' . __('Warning:', 'capsman-enhanced') . '</strong> '
99
- . sprintf(__('The active plugin %s is not compatible with your PHP version.', 'capsman-enhanced') .'</p><p>',
100
- '&laquo;' . $data['Name'] . ' ' . $data['Version'] . '&raquo;')
101
- . sprintf(__('%s is required for this plugin.', 'capsman-enhanced'), 'PHP-5 ')
102
  . '</p></div>';
103
  });
104
  } else {
@@ -107,8 +106,8 @@ if ( version_compare(PHP_VERSION, '5.4.0', '<') ) {
107
  // redirect legacy URLs
108
  if (!empty($_REQUEST['page'])) {
109
  foreach(['capsman' => 'pp-capabilities', 'capsman-tool' => 'pp-capabilities-backup'] as $find => $replace) {
110
- if (isset($_REQUEST['page']) && ($find == $_REQUEST['page'])) {
111
- $location = str_replace("page=$find", "page=$replace", $_SERVER['REQUEST_URI']);
112
  header( "Location: $location", true);
113
  exit;
114
  }
3
  * Plugin Name: PublishPress Capabilities
4
  * Plugin URI: https://publishpress.com/capability-manager/
5
  * Description: Manage WordPress role definitions, per-site or network-wide. Organizes post capabilities by post type and operation.
6
+ * Version: 2.3.3
7
  * Author: PublishPress
8
  * Author URI: https://publishpress.com/
9
  * Text Domain: capsman-enhanced
25
  * @copyright Copyright (C) 2009, 2010 Jordi Canals; modifications Copyright (C) 2020 PublishPress
26
  * @license GNU General Public License version 3
27
  * @link https://publishpress.com/
28
+ * @version 2.3.3
29
  */
30
 
31
  if (!defined('CAPSMAN_VERSION')) {
32
+ define('CAPSMAN_VERSION', '2.3.3');
33
+ define('CAPSMAN_ENH_VERSION', '2.3.3');
34
+ define('PUBLISHPRESS_CAPS_VERSION', '2.3.3');
35
  }
36
 
37
  foreach (get_option('active_plugins') as $plugin_file) {
38
  if ( false !== strpos($plugin_file, 'capsman.php') ) {
39
  add_action('admin_notices', function() {
40
+ echo '<div id="message" class="error fade" style="color: black">' . esc_html__( '<strong>Error:</strong> PublishPress Capabilities cannot function because another copy of Capability Manager is active.', 'capsman-enhanced' ) . '</div>';
 
41
  });
42
  return;
43
  }
67
  function($links, $file)
68
  {
69
  if ($file == plugin_basename(__FILE__)) {
70
+ $links[]= esc_html__('<strong>This plugin can be deleted.</strong>', 'press-permit-core');
71
  }
72
 
73
  return $links;
94
  $data = get_plugin_data(__FILE__);
95
  load_plugin_textdomain('capsman-enhanced', false, basename(dirname(__FILE__)) .'/languages');
96
 
97
+ echo '<div class="error"><p><strong>' . esc_html__('Warning:', 'capsman-enhanced') . '</strong> '
98
+ . sprintf(esc_html__('The active plugin %s is not compatible with your PHP version.', 'capsman-enhanced') .'</p><p>',
99
+ '&laquo;' . esc_html($data['Name']) . ' ' . esc_html($data['Version']) . '&raquo;')
100
+ . sprintf(esc_html__('%s is required for this plugin.', 'capsman-enhanced'), 'PHP-5 ')
101
  . '</p></div>';
102
  });
103
  } else {
106
  // redirect legacy URLs
107
  if (!empty($_REQUEST['page'])) {
108
  foreach(['capsman' => 'pp-capabilities', 'capsman-tool' => 'pp-capabilities-backup'] as $find => $replace) {
109
+ if (isset($_REQUEST['page']) && ($find == $_REQUEST['page']) && !empty($_SERVER['REQUEST_URI'])) {
110
+ $location = str_replace("page=$find", "page=$replace", esc_url_raw($_SERVER['REQUEST_URI']));
111
  header( "Location: $location", true);
112
  exit;
113
  }
classes/pp-capabilities-notices.php CHANGED
@@ -33,10 +33,10 @@ class PP_Capabilities_Notices
33
  * Read cookie if exist
34
  */
35
  if (isset($_COOKIE[$this->cookie])) {
36
- $messages = $_COOKIE[$this->cookie];
37
  $messages = @json_decode($messages, true);
38
  if (is_array($messages)) {
39
- $this->messages = $messages;
40
  }
41
 
42
  /**
@@ -59,12 +59,10 @@ class PP_Capabilities_Notices
59
  $messages = $this->get($type);
60
  foreach ($messages as $message) {
61
  if (is_string($message)) {
62
- $html .= sprintf('<div class="notice notice-%s is-dismissible"><p>%s</p></div>', $type, urldecode($message));
63
  }
64
  }
65
  }
66
-
67
- return $html;
68
  }
69
 
70
  /**
33
  * Read cookie if exist
34
  */
35
  if (isset($_COOKIE[$this->cookie])) {
36
+ $messages = sanitize_text_field($_COOKIE[$this->cookie]);
37
  $messages = @json_decode($messages, true);
38
  if (is_array($messages)) {
39
+ $this->messages = array_map('esc_html', $messages);
40
  }
41
 
42
  /**
59
  $messages = $this->get($type);
60
  foreach ($messages as $message) {
61
  if (is_string($message)) {
62
+ printf('<div class="notice notice-%s is-dismissible"><p>%s</p></div>', esc_attr($type), urldecode($message));
63
  }
64
  }
65
  }
 
 
66
  }
67
 
68
  /**
common/libs/chosen-v1.8.3/chosen.jquery.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* Chosen v1.8.3 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
-
3
- (function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},o=function(t,e){function s(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},r={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,o,r;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),r=[],s=0,i=(o=t.childNodes).length;s<i;s++)n=o[s],r.push(this.add_option(n,e,t.disabled));return r},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var e,s,n,o,r;for(o=new i,s=0,n=(r=t.childNodes).length;s<n;s++)e=r[s],o.add_node(e);return o.parsed},e=function(){function t(e,s){this.form_field=e,this.options=null!=s?s:{},this.label_click_handler=n(this.label_click_handler,this),t.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return t.prototype.set_default_values=function(){return this.click_test_action=function(t){return function(e){return t.test_active_click(e)}}(this),this.activate_action=function(t){return function(e){return t.activate_field(e)}}(this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||Infinity,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select,this.create_option=this.options.create_option||!1,this.persistent_create_option=this.options.persistent_create_option||!1,this.skip_no_results=this.options.skip_no_results||!1},t.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||t.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||t.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||t.default_no_result_text,this.create_option_text=this.form_field.getAttribute("data-create_option_text")||this.options.create_option_text||t.default_create_option_text},t.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+t.group_label+"</b>"+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,o,r,h;for(e="",h=0,n=0,o=(r=this.results_data).length;n<o&&(s=r[n],i="",""!==(i=s.group?this.result_add_group(s):this.result_add_option(s))&&(h++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(h>=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.style.cssText=t.style,s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.append_option=function(t){return this.select_append_option(t)},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?n.push(i.selected=!1):n.push(void 0);return n},t.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},t.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},t.prototype.winnow_results=function(){var t,e,s,i,n,o,r,h,l,c,_,a,u,d,p,f,g;for(this.no_results_clear(),a=0,s=!1,t=(l=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),_=this.get_search_regex(t),e=new RegExp("^"+t+"$"),n=0,o=(c=this.results_data).length;n<o;n++)(r=c[n]).search_match=!1,u=null,d=null,r.highlighted_html="",this.include_option_in_results(r)&&(r.group&&(r.group_match=!1,r.active_options=0),null!=r.group_array_index&&this.results_data[r.group_array_index]&&(0===(u=this.results_data[r.group_array_index]).active_options&&u.search_match&&(a+=1),u.active_options+=1),g=r.group?r.label:r.text,r.group&&!this.group_search||(d=this.search_string_match(g,_),r.search_match=null!=d,r.search_match&&!r.group&&(a+=1),s=s||e.test(r.html),r.search_match?(l.length&&(p=d.index,h=g.slice(0,p),i=g.slice(p,p+l.length),f=g.slice(p+l.length),r.highlighted_html=this.escape_html(h)+"<em>"+this.escape_html(i)+"</em>"+this.escape_html(f)),null!=u&&(u.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));if(this.result_clear_highlight(),a<1&&l.length?(this.update_results_content(""),this.create_option&&this.skip_no_results||this.no_results(l)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight()),this.create_option&&(a<1||!s&&this.persistent_create_option)&&l.length)return this.show_create_option(l)},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},t.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},t.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},t.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n </div>\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t.default_create_option_text="Add Option",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,o;o=(n=t(this)).data("chosen"),"destroy"!==i?o instanceof s||n.data("chosen",new s(this,i)):o instanceof s&&o.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return o(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("<div />",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on("click.chosen",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold&&!this.create_option?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,o;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),o=this.search_results.scrollTop(),n=i+o,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s<o)return this.search_results.scrollTop(s)}},n.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},n.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple||this.search_container.append(this.search_field),this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},n.prototype.update_results_content=function(t){return this.search_results.html(t)},n.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.is_multiple||(this.selected_item.prepend(this.search_field),this.search_field.focus()),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},n.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},n.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("<li />",{"class":"search-choice"}).html("<span>"+this.choice_label(e)+"</span>"),e.disabled?s.addClass("search-choice-disabled"):((i=t("<a />",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return(e=this.result_highlight).hasClass("create-option")?(this.select_create_option(this.search_field.val()),this.results_hide()):(this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.search_field.val(""),this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?this.winnow_results():(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale()))},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("<div/>").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.show_create_option=function(e){var s;return s=t('<li class="create-option active-result"><a>'+this.create_option_text+'</a>: "'+e+'"</li>'),this.search_results.append(s)},n.prototype.create_option_clear=function(){return this.search_results.find(".create-option").remove()},n.prototype.select_create_option=function(e){return t.isFunction(this.create_option)?this.create_option.call(this,e):this.select_append_option({value:e,text:e})},n.prototype.select_append_option=function(e){var s;return s=t("<option />",e).attr("selected","selected"),this.form_field_jq.append(s),this.form_field_jq.trigger("chosen:updated"),this.form_field_jq.trigger("change"),this.search_field.trigger("focus")},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_showing&&this.create_option?this.result_do_highlight(this.search_results.find(".create-option")):this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,o,r,h;if(this.is_multiple){for(o={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(r=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s<i;s++)o[n=r[s]]=this.search_field.css(n);return(e=t("<div />").css(o)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this);
 
 
 
common/libs/chosen-v1.8.3/chosen.proto.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* Chosen v1.8.3 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
-
3
- (function(){var t,e,s=function(t,e){return function(){return t.apply(e,arguments)}},i=function(t,e){function s(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},r={}.hasOwnProperty;(e=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,r,o,n;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),n=[],s=0,i=(o=t.childNodes).length;s<i;s++)r=o[s],n.push(this.add_option(r,e,t.disabled));return n},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var s,i,r,o,n;for(o=new e,i=0,r=(n=t.childNodes).length;i<r;i++)s=n[i],o.add_node(s);return o.parsed},t=function(){function t(e,i){this.form_field=e,this.options=null!=i?i:{},this.label_click_handler=s(this.label_click_handler,this),t.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return t.prototype.set_default_values=function(){return this.click_test_action=function(t){return function(e){return t.test_active_click(e)}}(this),this.activate_action=function(t){return function(e){return t.activate_field(e)}}(this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select,this.create_option=this.options.create_option||!1,this.persistent_create_option=this.options.persistent_create_option||!1,this.skip_no_results=this.options.skip_no_results||!1},t.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||t.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||t.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||t.default_no_result_text,this.create_option_text=this.form_field.getAttribute("data-create_option_text")||this.options.create_option_text||t.default_create_option_text},t.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+t.group_label+"</b>"+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,r,o,n,l;for(e="",l=0,r=0,o=(n=this.results_data).length;r<o&&(s=n[r],i="",""!==(i=s.group?this.result_add_group(s):this.result_add_option(s))&&(l++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(l>=this.max_shown_results));r++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.style.cssText=t.style,s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.append_option=function(t){return this.select_append_option(t)},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,r;for(r=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?r.push(i.selected=!1):r.push(void 0);return r},t.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},t.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},t.prototype.winnow_results=function(){var t,e,s,i,r,o,n,l,h,c,a,_,u,d,p,f,m;for(this.no_results_clear(),_=0,s=!1,t=(h=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),a=this.get_search_regex(t),e=new RegExp("^"+t+"$"),r=0,o=(c=this.results_data).length;r<o;r++)(n=c[r]).search_match=!1,u=null,d=null,n.highlighted_html="",this.include_option_in_results(n)&&(n.group&&(n.group_match=!1,n.active_options=0),null!=n.group_array_index&&this.results_data[n.group_array_index]&&(0===(u=this.results_data[n.group_array_index]).active_options&&u.search_match&&(_+=1),u.active_options+=1),m=n.group?n.label:n.text,n.group&&!this.group_search||(d=this.search_string_match(m,a),n.search_match=null!=d,n.search_match&&!n.group&&(_+=1),s=s||e.test(n.html),n.search_match?(h.length&&(p=d.index,l=m.slice(0,p),i=m.slice(p,p+h.length),f=m.slice(p+h.length),n.highlighted_html=this.escape_html(l)+"<em>"+this.escape_html(i)+"</em>"+this.escape_html(f)),null!=u&&(u.group_match=!0)):null!=n.group_array_index&&this.results_data[n.group_array_index].search_match&&(n.search_match=!0)));if(this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.create_option&&this.skip_no_results||this.no_results(h)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight()),this.create_option&&(_<1||!s&&this.persistent_create_option)&&h.length)return this.show_create_option(h)},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},t.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},t.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},t.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n </div>\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t.default_create_option_text="Add Option",t}(),this.Chosen=function(s){function r(){return r.__super__.constructor.apply(this,arguments)}var o;return i(r,t),r.prototype.setup=function(){return this.current_selectedIndex=this.form_field.selectedIndex},r.prototype.set_default_values=function(){return r.__super__.set_default_values.call(this),this.new_option_temp=new Template('<option value="#{value}">#{text}</option>'),this.create_option_temp=new Template('<li class="create-option active-result"><a>#{text}</a>: "#{terms}"</li>')},r.prototype.set_up_html=function(){var t,e;return(t=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&t.push(this.form_field.className),this.is_rtl&&t.push("chosen-rtl"),e={class:t.join(" "),title:this.form_field.title},this.form_field.id.length&&(e.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=new Element("div",e),this.container.setStyle({width:this.container_width()}),this.is_multiple?this.container.update(this.get_multi_html()):this.container.update(this.get_single_html()),this.form_field.hide().insert({after:this.container}),this.dropdown=this.container.down("div.chosen-drop"),this.search_field=this.container.down("input"),this.search_results=this.container.down("ul.chosen-results"),this.search_field_scale(),this.search_no_results=this.container.down("li.no-results"),this.is_multiple?(this.search_choices=this.container.down("ul.chosen-choices"),this.search_container=this.container.down("li.search-field")):(this.search_container=this.container.down("div.chosen-search"),this.selected_item=this.container.down(".chosen-single")),this.results_build(),this.set_tab_index(),this.set_label_behavior()},r.prototype.on_ready=function(){return this.form_field.fire("chosen:ready",{chosen:this})},r.prototype.register_observers=function(){return this.container.observe("touchstart",function(t){return function(e){return t.container_mousedown(e)}}(this)),this.container.observe("touchend",function(t){return function(e){return t.container_mouseup(e)}}(this)),this.container.observe("mousedown",function(t){return function(e){return t.container_mousedown(e)}}(this)),this.container.observe("mouseup",function(t){return function(e){return t.container_mouseup(e)}}(this)),this.container.observe("mouseenter",function(t){return function(e){return t.mouse_enter(e)}}(this)),this.container.observe("mouseleave",function(t){return function(e){return t.mouse_leave(e)}}(this)),this.search_results.observe("mouseup",function(t){return function(e){return t.search_results_mouseup(e)}}(this)),this.search_results.observe("mouseover",function(t){return function(e){return t.search_results_mouseover(e)}}(this)),this.search_results.observe("mouseout",function(t){return function(e){return t.search_results_mouseout(e)}}(this)),this.search_results.observe("mousewheel",function(t){return function(e){return t.search_results_mousewheel(e)}}(this)),this.search_results.observe("DOMMouseScroll",function(t){return function(e){return t.search_results_mousewheel(e)}}(this)),this.search_results.observe("touchstart",function(t){return function(e){return t.search_results_touchstart(e)}}(this)),this.search_results.observe("touchmove",function(t){return function(e){return t.search_results_touchmove(e)}}(this)),this.search_results.observe("touchend",function(t){return function(e){return t.search_results_touchend(e)}}(this)),this.form_field.observe("chosen:updated",function(t){return function(e){return t.results_update_field(e)}}(this)),this.form_field.observe("chosen:activate",function(t){return function(e){return t.activate_field(e)}}(this)),this.form_field.observe("chosen:open",function(t){return function(e){return t.container_mousedown(e)}}(this)),this.form_field.observe("chosen:close",function(t){return function(e){return t.close_field(e)}}(this)),this.search_field.observe("blur",function(t){return function(e){return t.input_blur(e)}}(this)),this.search_field.observe("keyup",function(t){return function(e){return t.keyup_checker(e)}}(this)),this.search_field.observe("keydown",function(t){return function(e){return t.keydown_checker(e)}}(this)),this.search_field.observe("focus",function(t){return function(e){return t.input_focus(e)}}(this)),this.search_field.observe("cut",function(t){return function(e){return t.clipboard_event_checker(e)}}(this)),this.search_field.observe("paste",function(t){return function(e){return t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.observe("click",function(t){return function(e){return t.choices_click(e)}}(this)):this.container.observe("click",function(t){return t.preventDefault()})},r.prototype.destroy=function(){var t,e,s,i;for(this.container.ownerDocument.stopObserving("click",this.click_test_action),e=0,s=(i=["chosen:updated","chosen:activate","chosen:open","chosen:close"]).length;e<s;e++)t=i[e],this.form_field.stopObserving(t);return this.container.stopObserving(),this.search_results.stopObserving(),this.search_field.stopObserving(),null!=this.form_field_label&&this.form_field_label.stopObserving(),this.is_multiple?(this.search_choices.stopObserving(),this.container.select(".search-choice-close").each(function(t){return t.stopObserving()})):this.selected_item.stopObserving(),this.search_field.tabIndex&&(this.form_field.tabIndex=this.search_field.tabIndex),this.container.remove(),this.form_field.show()},r.prototype.search_field_disabled=function(){var t;return this.is_disabled=this.form_field.disabled||(null!=(t=this.form_field.up("fieldset"))?t.disabled:void 0)||!1,this.is_disabled?this.container.addClassName("chosen-disabled"):this.container.removeClassName("chosen-disabled"),this.search_field.disabled=this.is_disabled,this.is_multiple||this.selected_item.stopObserving("focus",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.observe("focus",this.activate_field)},r.prototype.container_mousedown=function(t){var e;if(!this.is_disabled)return!t||"mousedown"!==(e=t.type)&&"touchstart"!==e||this.results_showing||t.preventDefault(),null!=t&&t.target.hasClassName("search-choice-close")?void 0:(this.active_field?this.is_multiple||!t||t.target!==this.selected_item&&!t.target.up("a.chosen-single")||this.results_toggle():(this.is_multiple&&this.search_field.clear(),this.container.ownerDocument.observe("click",this.click_test_action),this.results_show()),this.activate_field())},r.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},r.prototype.search_results_mousewheel=function(t){var e;if(null!=(e=t.deltaY||-t.wheelDelta||t.detail))return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop=e+this.search_results.scrollTop},r.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClassName("chosen-container-active"))return this.close_field()},r.prototype.close_field=function(){return this.container.ownerDocument.stopObserving("click",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClassName("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},r.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClassName("chosen-container-active"),this.active_field=!0,this.search_field.value=this.get_search_field_value(),this.search_field.focus()},r.prototype.test_active_click=function(t){return t.target.up(".chosen-container")===this.container?this.active_field=!0:this.close_field()},r.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=e.select_to_array(this.form_field),this.is_multiple?this.search_choices.select("li.search-choice").invoke("remove"):(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold&&!this.create_option?(this.search_field.readOnly=!0,this.container.addClassName("chosen-container-single-nosearch")):(this.search_field.readOnly=!1,this.container.removeClassName("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},r.prototype.result_do_highlight=function(t){var e,s,i,r,o;return this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClassName("highlighted"),i=parseInt(this.search_results.getStyle("maxHeight"),10),o=this.search_results.scrollTop,r=i+o,s=this.result_highlight.positionedOffset().top,(e=s+this.result_highlight.getHeight())>=r?this.search_results.scrollTop=e-i>0?e-i:0:s<o?this.search_results.scrollTop=s:void 0},r.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClassName("highlighted"),this.result_highlight=null},r.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field.fire("chosen:maxselected",{chosen:this}),!1):(this.is_multiple||this.search_container.insert(this.search_field),this.container.addClassName("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.value=this.get_search_field_value(),this.winnow_results(),this.form_field.fire("chosen:showing_dropdown",{chosen:this}))},r.prototype.update_results_content=function(t){return this.search_results.update(t)},r.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.is_multiple||(this.selected_item.insert({top:this.search_field}),this.search_field.focus()),this.container.removeClassName("chosen-with-drop"),this.form_field.fire("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},r.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field.tabIndex=e},r.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field.up("label"),null==this.form_field_label&&(this.form_field_label=$$("label[for='"+this.form_field.id+"']").first()),null!=this.form_field_label)return this.form_field_label.observe("click",this.label_click_handler)},r.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.value=this.default_text,this.search_field.addClassName("default")):(this.search_field.value="",this.search_field.removeClassName("default"))},r.prototype.search_results_mouseup=function(t){var e;if(e=t.target.hasClassName("active-result")?t.target:t.target.up(".active-result"))return this.result_highlight=e,this.result_select(t),this.search_field.focus()},r.prototype.search_results_mouseover=function(t){var e;if(e=t.target.hasClassName("active-result")?t.target:t.target.up(".active-result"))return this.result_do_highlight(e)},r.prototype.search_results_mouseout=function(t){if(t.target.hasClassName("active-result")||t.target.up(".active-result"))return this.result_clear_highlight()},r.prototype.choice_build=function(t){var e,s;return e=new Element("li",{class:"search-choice"}).update("<span>"+this.choice_label(t)+"</span>"),t.disabled?e.addClassName("search-choice-disabled"):((s=new Element("a",{href:"#",class:"search-choice-close",rel:t.array_index})).observe("click",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),e.insert(s)),this.search_container.insert({before:e})},r.prototype.choice_destroy_link_click=function(t){if(t.preventDefault(),t.stopPropagation(),!this.is_disabled)return this.choice_destroy(t.target)},r.prototype.choice_destroy=function(t){if(this.result_deselect(t.readAttribute("rel")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.up("li").remove(),this.search_field_scale()},r.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},r.prototype.results_reset_cleanup=function(){var t;if(this.current_selectedIndex=this.form_field.selectedIndex,t=this.selected_item.down("abbr"))return t.remove()},r.prototype.result_select=function(t){var e,s;if(this.result_highlight)return(e=this.result_highlight).hasClassName("create-option")?(this.select_create_option(this.search_field.value),this.results_hide()):(this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field.fire("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClassName("active-result"):this.reset_single_select_options(),e.addClassName("result-selected"),s=this.results_data[e.getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.search_field.value="",this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?this.winnow_results():(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change(),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale()))},r.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClassName("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClassName("chosen-default")),this.selected_item.down("span").update(t)},r.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change(),this.search_field_scale(),!0)},r.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.down("abbr")||this.selected_item.down("span").insert({after:'<abbr class="search-choice-close"></abbr>'}),this.selected_item.addClassName("chosen-single-with-deselect")},r.prototype.get_search_field_value=function(){return this.search_field.value},r.prototype.get_search_text=function(){return this.get_search_field_value().strip()},r.prototype.escape_html=function(t){return t.escapeHTML()},r.prototype.winnow_results_set_highlight=function(){var t;if(this.is_multiple||(t=this.search_results.down(".result-selected.active-result")),null==t&&(t=this.search_results.down(".active-result")),null!=t)return this.result_do_highlight(t)},r.prototype.no_results=function(t){return this.search_results.insert(this.get_no_results_html(t)),this.form_field.fire("chosen:no_results",{chosen:this})},r.prototype.show_create_option=function(t){var e;return e=this.create_option_temp.evaluate({terms:t,text:this.create_option_text}),this.search_results.insert(e),this.search_results.down(".create-option").observe("click",function(e){return function(s){return e.select_create_option(t)}}(this))},r.prototype.create_option_clear=function(){var t,e;for(t=null,e=[];t=this.search_results.down(".create-option");)e.push(t.remove());return e},r.prototype.select_create_option=function(t){return Object.isFunction(this.create_option)?this.create_option.call(this,t):this.select_append_option({value:t,text:t})},r.prototype.select_append_option=function(t){var e;if(e=this.new_option_temp.evaluate(t),this.form_field.insert(e),Event.fire(this.form_field,"chosen:updated"),"function"==typeof Event.simulate)return this.form_field.simulate("change"),this.search_field.simulate("focus")},r.prototype.no_results_clear=function(){var t,e;for(t=null,e=[];t=this.search_results.down(".no-results");)e.push(t.remove());return e},r.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.next(".active-result"))?this.result_do_highlight(t):void 0:this.results_showing&&this.create_option?this.result_do_highlight(this.search_results.select(".create-option").first()):this.results_show()},r.prototype.keyup_arrow=function(){var t,e,s;return this.results_showing||this.is_multiple?this.result_highlight?(s=this.result_highlight.previousSiblings(),t=this.search_results.select("li.active-result"),(e=s.intersect(t)).length?this.result_do_highlight(e.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},r.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.down("a")),this.clear_backstroke()):(t=this.search_container.siblings().last())&&t.hasClassName("search-choice")&&!t.hasClassName("search-choice-disabled")?(this.pending_backstroke=t,this.pending_backstroke&&this.pending_backstroke.addClassName("search-choice-focus"),this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClassName("search-choice-focus")):void 0},r.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClassName("search-choice-focus"),this.pending_backstroke=null},r.prototype.search_field_scale=function(){var t,e,s,i,r,o,n,l;if(this.is_multiple){for(o={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(n=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s<i;s++)o[r=n[s]]=this.search_field.getStyle(r);return(e=new Element("div").update(this.escape_html(this.get_search_field_value()))).setStyle(o),document.body.appendChild(e),l=e.measure("width")+25,e.remove(),(t=this.container.getWidth())&&(l=Math.min(t-10,l)),this.search_field.setStyle({width:l+"px"})}},r.prototype.trigger_form_field_change=function(){return o(this.form_field,"input"),o(this.form_field,"change")},o=function(t,e){var s;if(t.dispatchEvent){try{s=new Event(e,{bubbles:!0,cancelable:!0})}catch(t){(s=document.createEvent("HTMLEvents")).initEvent(e,!0,!0)}return t.dispatchEvent(s)}return t.fireEvent("on"+e,document.createEventObject())},r}()}).call(this);
 
 
 
common/libs/chosen-v1.8.3/package.json DELETED
@@ -1,46 +0,0 @@
1
- {
2
- "name": "chosen-js",
3
- "version": "1.7.0",
4
- "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
5
- "keywords": [
6
- "select",
7
- "multiselect",
8
- "dropdown",
9
- "form",
10
- "input",
11
- "ui"
12
- ],
13
- "homepage": "https://harvesthq.github.io/chosen/",
14
- "bugs": "https://github.com/harvesthq/chosen/issues",
15
- "license": "MIT",
16
- "contributors": [
17
- {
18
- "name": "Patrick Filler",
19
- "url": "https://github.com/pfiller"
20
- },
21
- {
22
- "name": "Christophe Coevoet",
23
- "url": "https://github.com/stof"
24
- },
25
- {
26
- "name": "Ken Earley",
27
- "url": "https://github.com/kenearley"
28
- },
29
- {
30
- "name": "Koen Punt",
31
- "url": "https://github.com/koenpunt"
32
- }
33
- ],
34
- "dependencies": {},
35
- "files": [
36
- "chosen.jquery.js",
37
- "chosen.css",
38
- "chosen-sprite@2x.png",
39
- "chosen-sprite.png"
40
- ],
41
- "main": "chosen.jquery.js",
42
- "repository": {
43
- "type": "git",
44
- "url": "https://github.com/harvesthq/chosen.git"
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/libs/chosen-v1.8.7/LICENSE.md ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Chosen
2
+ - by Patrick Filler for [Harvest](http://getharvest.com)
3
+ - Copyright (c) 2011-2016 by Harvest
4
+
5
+ Available for use under the [MIT License](http://en.wikipedia.org/wiki/MIT_License)
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen-sprite.png RENAMED
File without changes
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen-sprite@2x.png RENAMED
File without changes
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.css RENAMED
@@ -2,7 +2,7 @@
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
- Version 1.8.3
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
@@ -37,11 +37,15 @@ This file is generated by `grunt build`, do not edit it by hand.
37
  background: #fff;
38
  -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
39
  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
40
- display: none;
 
 
41
  }
42
 
43
  .chosen-container.chosen-with-drop .chosen-drop {
44
- display: block;
 
 
45
  }
46
 
47
  .chosen-container a {
@@ -85,12 +89,6 @@ This file is generated by `grunt build`, do not edit it by hand.
85
  line-height: 24px;
86
  }
87
 
88
- .chosen-container-single .chosen-single input[type="text"] {
89
- cursor: pointer;
90
- opacity: 0;
91
- position: absolute;
92
- }
93
-
94
  .chosen-container-single .chosen-default {
95
  color: #999;
96
  }
@@ -173,6 +171,8 @@ This file is generated by `grunt build`, do not edit it by hand.
173
  .chosen-container-single.chosen-container-single-nosearch .chosen-search {
174
  position: absolute;
175
  clip: rect(0, 0, 0, 0);
 
 
176
  }
177
 
178
  /* @end */
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
+ Version 1.8.7
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
37
  background: #fff;
38
  -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
39
  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
40
+ clip: rect(0, 0, 0, 0);
41
+ -webkit-clip-path: inset(100% 100%);
42
+ clip-path: inset(100% 100%);
43
  }
44
 
45
  .chosen-container.chosen-with-drop .chosen-drop {
46
+ clip: auto;
47
+ -webkit-clip-path: none;
48
+ clip-path: none;
49
  }
50
 
51
  .chosen-container a {
89
  line-height: 24px;
90
  }
91
 
 
 
 
 
 
 
92
  .chosen-container-single .chosen-default {
93
  color: #999;
94
  }
171
  .chosen-container-single.chosen-container-single-nosearch .chosen-search {
172
  position: absolute;
173
  clip: rect(0, 0, 0, 0);
174
+ -webkit-clip-path: inset(100% 100%);
175
+ clip-path: inset(100% 100%);
176
  }
177
 
178
  /* @end */
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.jquery.js RENAMED
@@ -2,7 +2,7 @@
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
- Version 1.8.3
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
@@ -144,10 +144,7 @@ This file is generated by `grunt build`, do not edit it by hand.
144
  this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145
  this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146
  this.case_sensitive_search = this.options.case_sensitive_search || false;
147
- this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
148
- this.create_option = this.options.create_option || false;
149
- this.persistent_create_option = this.options.persistent_create_option || false;
150
- return this.skip_no_results = this.options.skip_no_results || false;
151
  };
152
 
153
  AbstractChosen.prototype.set_default_text = function() {
@@ -159,13 +156,12 @@ This file is generated by `grunt build`, do not edit it by hand.
159
  this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
160
  }
161
  this.default_text = this.escape_html(this.default_text);
162
- this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
163
- return this.create_option_text = this.form_field.getAttribute("data-create_option_text") || this.options.create_option_text || AbstractChosen.default_create_option_text;
164
  };
165
 
166
  AbstractChosen.prototype.choice_label = function(item) {
167
  if (this.include_group_label_in_selected && (item.group_label != null)) {
168
- return "<b class='group-name'>" + item.group_label + "</b>" + item.html;
169
  } else {
170
  return item.html;
171
  }
@@ -271,7 +267,9 @@ This file is generated by `grunt build`, do not edit it by hand.
271
  }
272
  option_el = document.createElement("li");
273
  option_el.className = classes.join(" ");
274
- option_el.style.cssText = option.style;
 
 
275
  option_el.setAttribute("data-option-array-index", option.array_index);
276
  option_el.innerHTML = option.highlighted_html || option.html;
277
  if (option.title) {
@@ -302,10 +300,6 @@ This file is generated by `grunt build`, do not edit it by hand.
302
  return this.outerHTML(group_el);
303
  };
304
 
305
- AbstractChosen.prototype.append_option = function(option) {
306
- return this.select_append_option(option);
307
- };
308
-
309
  AbstractChosen.prototype.results_update_field = function() {
310
  this.set_default_text();
311
  if (!this.is_multiple) {
@@ -349,15 +343,13 @@ This file is generated by `grunt build`, do not edit it by hand.
349
  }
350
  };
351
 
352
- AbstractChosen.prototype.winnow_results = function() {
353
- var escapedQuery, exactRegex, exact_result, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
354
  this.no_results_clear();
355
  results = 0;
356
- exact_result = false;
357
  query = this.get_search_text();
358
  escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
359
  regex = this.get_search_regex(escapedQuery);
360
- exactRegex = new RegExp("^" + escapedQuery + "$");
361
  ref = this.results_data;
362
  for (i = 0, len = ref.length; i < len; i++) {
363
  option = ref[i];
@@ -384,7 +376,6 @@ This file is generated by `grunt build`, do not edit it by hand.
384
  if (option.search_match && !option.group) {
385
  results += 1;
386
  }
387
- exact_result = exact_result || exactRegex.test(option.html);
388
  if (option.search_match) {
389
  if (query.length) {
390
  startpos = search_match.index;
@@ -405,15 +396,12 @@ This file is generated by `grunt build`, do not edit it by hand.
405
  this.result_clear_highlight();
406
  if (results < 1 && query.length) {
407
  this.update_results_content("");
408
- if (!(this.create_option && this.skip_no_results)) {
409
- this.no_results(query);
410
- }
411
  } else {
412
  this.update_results_content(this.results_option_build());
413
- this.winnow_results_set_highlight();
414
- }
415
- if (this.create_option && (results < 1 || (!exact_result && this.persistent_create_option)) && query.length) {
416
- return this.show_create_option(query);
417
  }
418
  };
419
 
@@ -600,7 +588,7 @@ This file is generated by `grunt build`, do not edit it by hand.
600
  };
601
 
602
  AbstractChosen.prototype.get_single_html = function() {
603
- return "<a class=\"chosen-single chosen-default\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n <span>" + this.default_text + "</span>\n <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n <div class=\"chosen-search\">\n </div>\n <ul class=\"chosen-results\"></ul>\n</div>";
604
  };
605
 
606
  AbstractChosen.prototype.get_multi_html = function() {
@@ -627,8 +615,6 @@ This file is generated by `grunt build`, do not edit it by hand.
627
 
628
  AbstractChosen.default_no_result_text = "No results match";
629
 
630
- AbstractChosen.default_create_option_text = "Add Option";
631
-
632
  return AbstractChosen;
633
 
634
  })();
@@ -961,7 +947,7 @@ This file is generated by `grunt build`, do not edit it by hand.
961
  this.search_choices.find("li.search-choice").remove();
962
  } else {
963
  this.single_set_selected_text();
964
- if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold && !this.create_option) {
965
  this.search_field[0].readOnly = true;
966
  this.container.addClass("chosen-container-single-nosearch");
967
  } else {
@@ -1011,9 +997,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1011
  });
1012
  return false;
1013
  }
1014
- if (!this.is_multiple) {
1015
- this.search_container.append(this.search_field);
1016
- }
1017
  this.container.addClass("chosen-with-drop");
1018
  this.results_showing = true;
1019
  this.search_field.focus();
@@ -1031,10 +1014,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1031
  Chosen.prototype.results_hide = function() {
1032
  if (this.results_showing) {
1033
  this.result_clear_highlight();
1034
- if (!this.is_multiple) {
1035
- this.selected_item.prepend(this.search_field);
1036
- this.search_field.focus();
1037
- }
1038
  this.container.removeClass("chosen-with-drop");
1039
  this.form_field_jq.trigger("chosen:hiding_dropdown", {
1040
  chosen: this
@@ -1162,10 +1141,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1162
  var high, item;
1163
  if (this.result_highlight) {
1164
  high = this.result_highlight;
1165
- if (high.hasClass("create-option")) {
1166
- this.select_create_option(this.search_field.val());
1167
- return this.results_hide();
1168
- }
1169
  this.result_clear_highlight();
1170
  if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1171
  this.form_field_jq.trigger("chosen:maxselected", {
@@ -1183,14 +1158,20 @@ This file is generated by `grunt build`, do not edit it by hand.
1183
  item.selected = true;
1184
  this.form_field.options[item.options_index].selected = true;
1185
  this.selected_option_count = null;
1186
- this.search_field.val("");
1187
  if (this.is_multiple) {
1188
  this.choice_build(item);
1189
  } else {
1190
  this.single_set_selected_text(this.choice_label(item));
1191
  }
1192
  if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1193
- this.winnow_results();
 
 
 
 
 
 
 
1194
  } else {
1195
  this.results_hide();
1196
  this.show_search_field_default();
@@ -1280,36 +1261,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1280
  });
1281
  };
1282
 
1283
- Chosen.prototype.show_create_option = function(terms) {
1284
- var create_option_html;
1285
- create_option_html = $('<li class="create-option active-result"><a>' + this.create_option_text + '</a>: "' + terms + '"</li>');
1286
- return this.search_results.append(create_option_html);
1287
- };
1288
-
1289
- Chosen.prototype.create_option_clear = function() {
1290
- return this.search_results.find(".create-option").remove();
1291
- };
1292
-
1293
- Chosen.prototype.select_create_option = function(terms) {
1294
- if ($.isFunction(this.create_option)) {
1295
- return this.create_option.call(this, terms);
1296
- } else {
1297
- return this.select_append_option({
1298
- value: terms,
1299
- text: terms
1300
- });
1301
- }
1302
- };
1303
-
1304
- Chosen.prototype.select_append_option = function(options) {
1305
- var option;
1306
- option = $('<option />', options).attr('selected', 'selected');
1307
- this.form_field_jq.append(option);
1308
- this.form_field_jq.trigger("chosen:updated");
1309
- this.form_field_jq.trigger("change");
1310
- return this.search_field.trigger("focus");
1311
- };
1312
-
1313
  Chosen.prototype.no_results_clear = function() {
1314
  return this.search_results.find(".no-results").remove();
1315
  };
@@ -1321,8 +1272,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1321
  if (next_sib) {
1322
  return this.result_do_highlight(next_sib);
1323
  }
1324
- } else if (this.results_showing && this.create_option) {
1325
- return this.result_do_highlight(this.search_results.find('.create-option'));
1326
  } else {
1327
  return this.results_show();
1328
  }
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
+ Version 1.8.7
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
144
  this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145
  this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146
  this.case_sensitive_search = this.options.case_sensitive_search || false;
147
+ return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
 
 
 
148
  };
149
 
150
  AbstractChosen.prototype.set_default_text = function() {
156
  this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
157
  }
158
  this.default_text = this.escape_html(this.default_text);
159
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
 
160
  };
161
 
162
  AbstractChosen.prototype.choice_label = function(item) {
163
  if (this.include_group_label_in_selected && (item.group_label != null)) {
164
+ return "<b class='group-name'>" + (this.escape_html(item.group_label)) + "</b>" + item.html;
165
  } else {
166
  return item.html;
167
  }
267
  }
268
  option_el = document.createElement("li");
269
  option_el.className = classes.join(" ");
270
+ if (option.style) {
271
+ option_el.style.cssText = option.style;
272
+ }
273
  option_el.setAttribute("data-option-array-index", option.array_index);
274
  option_el.innerHTML = option.highlighted_html || option.html;
275
  if (option.title) {
300
  return this.outerHTML(group_el);
301
  };
302
 
 
 
 
 
303
  AbstractChosen.prototype.results_update_field = function() {
304
  this.set_default_text();
305
  if (!this.is_multiple) {
343
  }
344
  };
345
 
346
+ AbstractChosen.prototype.winnow_results = function(options) {
347
+ var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
348
  this.no_results_clear();
349
  results = 0;
 
350
  query = this.get_search_text();
351
  escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
352
  regex = this.get_search_regex(escapedQuery);
 
353
  ref = this.results_data;
354
  for (i = 0, len = ref.length; i < len; i++) {
355
  option = ref[i];
376
  if (option.search_match && !option.group) {
377
  results += 1;
378
  }
 
379
  if (option.search_match) {
380
  if (query.length) {
381
  startpos = search_match.index;
396
  this.result_clear_highlight();
397
  if (results < 1 && query.length) {
398
  this.update_results_content("");
399
+ return this.no_results(query);
 
 
400
  } else {
401
  this.update_results_content(this.results_option_build());
402
+ if (!(options != null ? options.skip_highlight : void 0)) {
403
+ return this.winnow_results_set_highlight();
404
+ }
 
405
  }
406
  };
407
 
588
  };
589
 
590
  AbstractChosen.prototype.get_single_html = function() {
591
+ return "<a class=\"chosen-single chosen-default\">\n <span>" + this.default_text + "</span>\n <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n <div class=\"chosen-search\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n </div>\n <ul class=\"chosen-results\"></ul>\n</div>";
592
  };
593
 
594
  AbstractChosen.prototype.get_multi_html = function() {
615
 
616
  AbstractChosen.default_no_result_text = "No results match";
617
 
 
 
618
  return AbstractChosen;
619
 
620
  })();
947
  this.search_choices.find("li.search-choice").remove();
948
  } else {
949
  this.single_set_selected_text();
950
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
951
  this.search_field[0].readOnly = true;
952
  this.container.addClass("chosen-container-single-nosearch");
953
  } else {
997
  });
998
  return false;
999
  }
 
 
 
1000
  this.container.addClass("chosen-with-drop");
1001
  this.results_showing = true;
1002
  this.search_field.focus();
1014
  Chosen.prototype.results_hide = function() {
1015
  if (this.results_showing) {
1016
  this.result_clear_highlight();
 
 
 
 
1017
  this.container.removeClass("chosen-with-drop");
1018
  this.form_field_jq.trigger("chosen:hiding_dropdown", {
1019
  chosen: this
1141
  var high, item;
1142
  if (this.result_highlight) {
1143
  high = this.result_highlight;
 
 
 
 
1144
  this.result_clear_highlight();
1145
  if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1146
  this.form_field_jq.trigger("chosen:maxselected", {
1158
  item.selected = true;
1159
  this.form_field.options[item.options_index].selected = true;
1160
  this.selected_option_count = null;
 
1161
  if (this.is_multiple) {
1162
  this.choice_build(item);
1163
  } else {
1164
  this.single_set_selected_text(this.choice_label(item));
1165
  }
1166
  if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1167
+ if (evt.metaKey || evt.ctrlKey) {
1168
+ this.winnow_results({
1169
+ skip_highlight: true
1170
+ });
1171
+ } else {
1172
+ this.search_field.val("");
1173
+ this.winnow_results();
1174
+ }
1175
  } else {
1176
  this.results_hide();
1177
  this.show_search_field_default();
1261
  });
1262
  };
1263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1264
  Chosen.prototype.no_results_clear = function() {
1265
  return this.search_results.find(".no-results").remove();
1266
  };
1272
  if (next_sib) {
1273
  return this.result_do_highlight(next_sib);
1274
  }
 
 
1275
  } else {
1276
  return this.results_show();
1277
  }
common/libs/chosen-v1.8.7/chosen.jquery.min.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ /* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
+
3
+ (function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},o={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s<i;s++)n=r[s],o.push(this.add_option(n,e,t.disabled));return o},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var e,s,n,r,o;for(r=new i,s=0,n=(o=t.childNodes).length;s<n;s++)e=o[s],r.add_node(e);return r.parsed},e=function(){function t(e,s){this.form_field=e,this.options=null!=s?s:{},this.label_click_handler=n(this.label_click_handler,this),t.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return t.prototype.set_default_values=function(){return this.click_test_action=function(t){return function(e){return t.test_active_click(e)}}(this),this.activate_action=function(t){return function(e){return t.activate_field(e)}}(this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||Infinity,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},t.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||t.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||t.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||t.default_no_result_text},t.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+this.escape_html(t.group_label)+"</b>"+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",h=0,n=0,r=(o=this.results_data).length;n<r&&(s=o[n],i="",""!==(i=s.group?this.result_add_group(s):this.result_add_option(s))&&(h++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(h>=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?n.push(i.selected=!1):n.push(void 0);return n},t.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},t.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},t.prototype.winnow_results=function(t){var e,s,i,n,r,o,h,l,c,_,a,u,d,p,f;for(this.no_results_clear(),_=0,e=(h=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),c=this.get_search_regex(e),i=0,n=(l=this.results_data).length;i<n;i++)(r=l[i]).search_match=!1,a=null,u=null,r.highlighted_html="",this.include_option_in_results(r)&&(r.group&&(r.group_match=!1,r.active_options=0),null!=r.group_array_index&&this.results_data[r.group_array_index]&&(0===(a=this.results_data[r.group_array_index]).active_options&&a.search_match&&(_+=1),a.active_options+=1),f=r.group?r.label:r.text,r.group&&!this.group_search||(u=this.search_string_match(f,c),r.search_match=null!=u,r.search_match&&!r.group&&(_+=1),r.search_match?(h.length&&(d=u.index,o=f.slice(0,d),s=f.slice(d,d+h.length),p=f.slice(d+h.length),r.highlighted_html=this.escape_html(o)+"<em>"+this.escape_html(s)+"</em>"+this.escape_html(p)),null!=a&&(a.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},t.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},t.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},t.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n </div>\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},t.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,r;r=(n=t(this)).data("chosen"),"destroy"!==i?r instanceof s||n.data("chosen",new s(this,i)):r instanceof s&&r.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return r(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("<div />",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on("click.chosen",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,r;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),r=this.search_results.scrollTop(),n=i+r,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s<r)return this.search_results.scrollTop(s)}},n.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},n.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},n.prototype.update_results_content=function(t){return this.search_results.html(t)},n.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},n.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},n.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("<li />",{"class":"search-choice"}).html("<span>"+this.choice_label(e)+"</span>"),e.disabled?s.addClass("search-choice-disabled"):((i=t("<a />",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("<div/>").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,r,o,h;if(this.is_multiple){for(r={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s<i;s++)r[n=o[s]]=this.search_field.css(n);return(e=t("<div />").css(r)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this);
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.min.css RENAMED
@@ -2,10 +2,10 @@
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
- Version 1.8.3
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
9
  MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
  This file is generated by `grunt build`, do not edit it by hand.
11
- */.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15);display:none}.chosen-container.chosen-with-drop .chosen-drop{display:block}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),to(#f4f4f4));background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;-webkit-box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-single input[type=text]{cursor:pointer;opacity:0;position:absolute}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(1%,#eee),color-stop(15%,#fff));background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#eee),color-stop(80%,#fff));background-image:linear-gradient(#eee 20%,#fff 80%);-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
+ Version 1.8.7
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
9
  MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
  This file is generated by `grunt build`, do not edit it by hand.
11
+ */.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15);clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container.chosen-with-drop .chosen-drop{clip:auto;-webkit-clip-path:none;clip-path:none}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),to(#f4f4f4));background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;-webkit-box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip:rect(0,0,0,0);-webkit-clip-path:inset(100% 100%);clip-path:inset(100% 100%)}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(1%,#eee),color-stop(15%,#fff));background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:0 0!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width:25px}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),to(#eee));background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(20%,#eee),color-stop(80%,#fff));background-image:linear-gradient(#eee 20%,#fff 80%);-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
common/libs/{chosen-v1.8.3 → chosen-v1.8.7}/chosen.proto.js RENAMED
@@ -2,7 +2,7 @@
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
- Version 1.8.3
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
@@ -144,10 +144,7 @@ This file is generated by `grunt build`, do not edit it by hand.
144
  this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145
  this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146
  this.case_sensitive_search = this.options.case_sensitive_search || false;
147
- this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
148
- this.create_option = this.options.create_option || false;
149
- this.persistent_create_option = this.options.persistent_create_option || false;
150
- return this.skip_no_results = this.options.skip_no_results || false;
151
  };
152
 
153
  AbstractChosen.prototype.set_default_text = function() {
@@ -159,13 +156,12 @@ This file is generated by `grunt build`, do not edit it by hand.
159
  this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
160
  }
161
  this.default_text = this.escape_html(this.default_text);
162
- this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
163
- return this.create_option_text = this.form_field.getAttribute("data-create_option_text") || this.options.create_option_text || AbstractChosen.default_create_option_text;
164
  };
165
 
166
  AbstractChosen.prototype.choice_label = function(item) {
167
  if (this.include_group_label_in_selected && (item.group_label != null)) {
168
- return "<b class='group-name'>" + item.group_label + "</b>" + item.html;
169
  } else {
170
  return item.html;
171
  }
@@ -271,7 +267,9 @@ This file is generated by `grunt build`, do not edit it by hand.
271
  }
272
  option_el = document.createElement("li");
273
  option_el.className = classes.join(" ");
274
- option_el.style.cssText = option.style;
 
 
275
  option_el.setAttribute("data-option-array-index", option.array_index);
276
  option_el.innerHTML = option.highlighted_html || option.html;
277
  if (option.title) {
@@ -302,10 +300,6 @@ This file is generated by `grunt build`, do not edit it by hand.
302
  return this.outerHTML(group_el);
303
  };
304
 
305
- AbstractChosen.prototype.append_option = function(option) {
306
- return this.select_append_option(option);
307
- };
308
-
309
  AbstractChosen.prototype.results_update_field = function() {
310
  this.set_default_text();
311
  if (!this.is_multiple) {
@@ -349,15 +343,13 @@ This file is generated by `grunt build`, do not edit it by hand.
349
  }
350
  };
351
 
352
- AbstractChosen.prototype.winnow_results = function() {
353
- var escapedQuery, exactRegex, exact_result, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
354
  this.no_results_clear();
355
  results = 0;
356
- exact_result = false;
357
  query = this.get_search_text();
358
  escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
359
  regex = this.get_search_regex(escapedQuery);
360
- exactRegex = new RegExp("^" + escapedQuery + "$");
361
  ref = this.results_data;
362
  for (i = 0, len = ref.length; i < len; i++) {
363
  option = ref[i];
@@ -384,7 +376,6 @@ This file is generated by `grunt build`, do not edit it by hand.
384
  if (option.search_match && !option.group) {
385
  results += 1;
386
  }
387
- exact_result = exact_result || exactRegex.test(option.html);
388
  if (option.search_match) {
389
  if (query.length) {
390
  startpos = search_match.index;
@@ -405,15 +396,12 @@ This file is generated by `grunt build`, do not edit it by hand.
405
  this.result_clear_highlight();
406
  if (results < 1 && query.length) {
407
  this.update_results_content("");
408
- if (!(this.create_option && this.skip_no_results)) {
409
- this.no_results(query);
410
- }
411
  } else {
412
  this.update_results_content(this.results_option_build());
413
- this.winnow_results_set_highlight();
414
- }
415
- if (this.create_option && (results < 1 || (!exact_result && this.persistent_create_option)) && query.length) {
416
- return this.show_create_option(query);
417
  }
418
  };
419
 
@@ -600,7 +588,7 @@ This file is generated by `grunt build`, do not edit it by hand.
600
  };
601
 
602
  AbstractChosen.prototype.get_single_html = function() {
603
- return "<a class=\"chosen-single chosen-default\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n <span>" + this.default_text + "</span>\n <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n <div class=\"chosen-search\">\n </div>\n <ul class=\"chosen-results\"></ul>\n</div>";
604
  };
605
 
606
  AbstractChosen.prototype.get_multi_html = function() {
@@ -627,8 +615,6 @@ This file is generated by `grunt build`, do not edit it by hand.
627
 
628
  AbstractChosen.default_no_result_text = "No results match";
629
 
630
- AbstractChosen.default_create_option_text = "Add Option";
631
-
632
  return AbstractChosen;
633
 
634
  })();
@@ -646,12 +632,6 @@ This file is generated by `grunt build`, do not edit it by hand.
646
  return this.current_selectedIndex = this.form_field.selectedIndex;
647
  };
648
 
649
- Chosen.prototype.set_default_values = function() {
650
- Chosen.__super__.set_default_values.call(this);
651
- this.new_option_temp = new Template('<option value="#{value}">#{text}</option>');
652
- return this.create_option_temp = new Template('<li class="create-option active-result"><a>#{text}</a>: "#{terms}"</li>');
653
- };
654
-
655
  Chosen.prototype.set_up_html = function() {
656
  var container_classes, container_props;
657
  container_classes = ["chosen-container"];
@@ -971,7 +951,7 @@ This file is generated by `grunt build`, do not edit it by hand.
971
  this.search_choices.select("li.search-choice").invoke("remove");
972
  } else {
973
  this.single_set_selected_text();
974
- if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold && !this.create_option) {
975
  this.search_field.readOnly = true;
976
  this.container.addClassName("chosen-container-single-nosearch");
977
  } else {
@@ -1019,9 +999,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1019
  });
1020
  return false;
1021
  }
1022
- if (!this.is_multiple) {
1023
- this.search_container.insert(this.search_field);
1024
- }
1025
  this.container.addClassName("chosen-with-drop");
1026
  this.results_showing = true;
1027
  this.search_field.focus();
@@ -1039,12 +1016,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1039
  Chosen.prototype.results_hide = function() {
1040
  if (this.results_showing) {
1041
  this.result_clear_highlight();
1042
- if (!this.is_multiple) {
1043
- this.selected_item.insert({
1044
- top: this.search_field
1045
- });
1046
- this.search_field.focus();
1047
- }
1048
  this.container.removeClassName("chosen-with-drop");
1049
  this.form_field.fire("chosen:hiding_dropdown", {
1050
  chosen: this
@@ -1179,10 +1150,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1179
  var high, item;
1180
  if (this.result_highlight) {
1181
  high = this.result_highlight;
1182
- if (high.hasClassName("create-option")) {
1183
- this.select_create_option(this.search_field.value);
1184
- return this.results_hide();
1185
- }
1186
  this.result_clear_highlight();
1187
  if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1188
  this.form_field.fire("chosen:maxselected", {
@@ -1200,14 +1167,20 @@ This file is generated by `grunt build`, do not edit it by hand.
1200
  item.selected = true;
1201
  this.form_field.options[item.options_index].selected = true;
1202
  this.selected_option_count = null;
1203
- this.search_field.value = "";
1204
  if (this.is_multiple) {
1205
  this.choice_build(item);
1206
  } else {
1207
  this.single_set_selected_text(this.choice_label(item));
1208
  }
1209
  if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1210
- this.winnow_results();
 
 
 
 
 
 
 
1211
  } else {
1212
  this.results_hide();
1213
  this.show_search_field_default();
@@ -1297,52 +1270,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1297
  });
1298
  };
1299
 
1300
- Chosen.prototype.show_create_option = function(terms) {
1301
- var create_option_html;
1302
- create_option_html = this.create_option_temp.evaluate({
1303
- terms: terms,
1304
- text: this.create_option_text
1305
- });
1306
- this.search_results.insert(create_option_html);
1307
- return this.search_results.down(".create-option").observe("click", (function(_this) {
1308
- return function(evt) {
1309
- return _this.select_create_option(terms);
1310
- };
1311
- })(this));
1312
- };
1313
-
1314
- Chosen.prototype.create_option_clear = function() {
1315
- var co, results1;
1316
- co = null;
1317
- results1 = [];
1318
- while (co = this.search_results.down(".create-option")) {
1319
- results1.push(co.remove());
1320
- }
1321
- return results1;
1322
- };
1323
-
1324
- Chosen.prototype.select_create_option = function(terms) {
1325
- if (Object.isFunction(this.create_option)) {
1326
- return this.create_option.call(this, terms);
1327
- } else {
1328
- return this.select_append_option({
1329
- value: terms,
1330
- text: terms
1331
- });
1332
- }
1333
- };
1334
-
1335
- Chosen.prototype.select_append_option = function(options) {
1336
- var option;
1337
- option = this.new_option_temp.evaluate(options);
1338
- this.form_field.insert(option);
1339
- Event.fire(this.form_field, "chosen:updated");
1340
- if (typeof Event.simulate === 'function') {
1341
- this.form_field.simulate("change");
1342
- return this.search_field.simulate("focus");
1343
- }
1344
- };
1345
-
1346
  Chosen.prototype.no_results_clear = function() {
1347
  var nr, results1;
1348
  nr = null;
@@ -1360,8 +1287,6 @@ This file is generated by `grunt build`, do not edit it by hand.
1360
  if (next_sib) {
1361
  return this.result_do_highlight(next_sib);
1362
  }
1363
- } else if (this.results_showing && this.create_option) {
1364
- return this.result_do_highlight(this.search_results.select('.create-option').first());
1365
  } else {
1366
  return this.results_show();
1367
  }
2
  Chosen, a Select Box Enhancer for jQuery and Prototype
3
  by Patrick Filler for Harvest, http://getharvest.com
4
 
5
+ Version 1.8.7
6
  Full source at https://github.com/harvesthq/chosen
7
  Copyright (c) 2011-2018 Harvest http://getharvest.com
8
 
144
  this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145
  this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146
  this.case_sensitive_search = this.options.case_sensitive_search || false;
147
+ return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
 
 
 
148
  };
149
 
150
  AbstractChosen.prototype.set_default_text = function() {
156
  this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
157
  }
158
  this.default_text = this.escape_html(this.default_text);
159
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
 
160
  };
161
 
162
  AbstractChosen.prototype.choice_label = function(item) {
163
  if (this.include_group_label_in_selected && (item.group_label != null)) {
164
+ return "<b class='group-name'>" + (this.escape_html(item.group_label)) + "</b>" + item.html;
165
  } else {
166
  return item.html;
167
  }
267
  }
268
  option_el = document.createElement("li");
269
  option_el.className = classes.join(" ");
270
+ if (option.style) {
271
+ option_el.style.cssText = option.style;
272
+ }
273
  option_el.setAttribute("data-option-array-index", option.array_index);
274
  option_el.innerHTML = option.highlighted_html || option.html;
275
  if (option.title) {
300
  return this.outerHTML(group_el);
301
  };
302
 
 
 
 
 
303
  AbstractChosen.prototype.results_update_field = function() {
304
  this.set_default_text();
305
  if (!this.is_multiple) {
343
  }
344
  };
345
 
346
+ AbstractChosen.prototype.winnow_results = function(options) {
347
+ var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
348
  this.no_results_clear();
349
  results = 0;
 
350
  query = this.get_search_text();
351
  escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
352
  regex = this.get_search_regex(escapedQuery);
 
353
  ref = this.results_data;
354
  for (i = 0, len = ref.length; i < len; i++) {
355
  option = ref[i];
376
  if (option.search_match && !option.group) {
377
  results += 1;
378
  }
 
379
  if (option.search_match) {
380
  if (query.length) {
381
  startpos = search_match.index;
396
  this.result_clear_highlight();
397
  if (results < 1 && query.length) {
398
  this.update_results_content("");
399
+ return this.no_results(query);
 
 
400
  } else {
401
  this.update_results_content(this.results_option_build());
402
+ if (!(options != null ? options.skip_highlight : void 0)) {
403
+ return this.winnow_results_set_highlight();
404
+ }
 
405
  }
406
  };
407
 
588
  };
589
 
590
  AbstractChosen.prototype.get_single_html = function() {
591
+ return "<a class=\"chosen-single chosen-default\">\n <span>" + this.default_text + "</span>\n <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n <div class=\"chosen-search\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n </div>\n <ul class=\"chosen-results\"></ul>\n</div>";
592
  };
593
 
594
  AbstractChosen.prototype.get_multi_html = function() {
615
 
616
  AbstractChosen.default_no_result_text = "No results match";
617
 
 
 
618
  return AbstractChosen;
619
 
620
  })();
632
  return this.current_selectedIndex = this.form_field.selectedIndex;
633
  };
634
 
 
 
 
 
 
 
635
  Chosen.prototype.set_up_html = function() {
636
  var container_classes, container_props;
637
  container_classes = ["chosen-container"];
951
  this.search_choices.select("li.search-choice").invoke("remove");
952
  } else {
953
  this.single_set_selected_text();
954
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
955
  this.search_field.readOnly = true;
956
  this.container.addClassName("chosen-container-single-nosearch");
957
  } else {
999
  });
1000
  return false;
1001
  }
 
 
 
1002
  this.container.addClassName("chosen-with-drop");
1003
  this.results_showing = true;
1004
  this.search_field.focus();
1016
  Chosen.prototype.results_hide = function() {
1017
  if (this.results_showing) {
1018
  this.result_clear_highlight();
 
 
 
 
 
 
1019
  this.container.removeClassName("chosen-with-drop");
1020
  this.form_field.fire("chosen:hiding_dropdown", {
1021
  chosen: this
1150
  var high, item;
1151
  if (this.result_highlight) {
1152
  high = this.result_highlight;
 
 
 
 
1153
  this.result_clear_highlight();
1154
  if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1155
  this.form_field.fire("chosen:maxselected", {
1167
  item.selected = true;
1168
  this.form_field.options[item.options_index].selected = true;
1169
  this.selected_option_count = null;
 
1170
  if (this.is_multiple) {
1171
  this.choice_build(item);
1172
  } else {
1173
  this.single_set_selected_text(this.choice_label(item));
1174
  }
1175
  if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1176
+ if (evt.metaKey || evt.ctrlKey) {
1177
+ this.winnow_results({
1178
+ skip_highlight: true
1179
+ });
1180
+ } else {
1181
+ this.search_field.value = "";
1182
+ this.winnow_results();
1183
+ }
1184
  } else {
1185
  this.results_hide();
1186
  this.show_search_field_default();
1270
  });
1271
  };
1272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1273
  Chosen.prototype.no_results_clear = function() {
1274
  var nr, results1;
1275
  nr = null;
1287
  if (next_sib) {
1288
  return this.result_do_highlight(next_sib);
1289
  }
 
 
1290
  } else {
1291
  return this.results_show();
1292
  }
common/libs/chosen-v1.8.7/chosen.proto.min.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ /* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
+
3
+ (function(){var e,t,s=function(e,t){return function(){return e.apply(t,arguments)}},i=function(e,t){function s(){this.constructor=e}for(var i in t)r.call(t,i)&&(e[i]=t[i]);return s.prototype=t.prototype,e.prototype=new s,e.__super__=t.prototype,e},r={}.hasOwnProperty;(t=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(e){return"OPTGROUP"===e.nodeName.toUpperCase()?this.add_group(e):this.add_option(e)},e.prototype.add_group=function(e){var t,s,i,r,n,o;for(t=this.parsed.length,this.parsed.push({array_index:t,group:!0,label:e.label,title:e.title?e.title:void 0,children:0,disabled:e.disabled,classes:e.className}),o=[],s=0,i=(n=e.childNodes).length;s<i;s++)r=n[s],o.push(this.add_option(r,t,e.disabled));return o},e.prototype.add_option=function(e,t,s){if("OPTION"===e.nodeName.toUpperCase())return""!==e.text?(null!=t&&(this.parsed[t].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:e.value,text:e.text,html:e.innerHTML,title:e.title?e.title:void 0,selected:e.selected,disabled:!0===s?s:e.disabled,group_array_index:t,group_label:null!=t?this.parsed[t].label:null,classes:e.className,style:e.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},e}()).select_to_array=function(e){var s,i,r,n,o;for(n=new t,i=0,r=(o=e.childNodes).length;i<r;i++)s=o[i],n.add_node(s);return n.parsed},e=function(){function e(t,i){this.form_field=t,this.options=null!=i?i:{},this.label_click_handler=s(this.label_click_handler,this),e.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return e.prototype.set_default_values=function(){return this.click_test_action=function(e){return function(t){return e.test_active_click(t)}}(this),this.activate_action=function(e){return function(t){return e.activate_field(t)}}(this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},e.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||e.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||e.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||e.default_no_result_text},e.prototype.choice_label=function(e){return this.include_group_label_in_selected&&null!=e.group_label?"<b class='group-name'>"+this.escape_html(e.group_label)+"</b>"+e.html:e.html},e.prototype.mouse_enter=function(){return this.mouse_on_container=!0},e.prototype.mouse_leave=function(){return this.mouse_on_container=!1},e.prototype.input_focus=function(e){if(this.is_multiple){if(!this.active_field)return setTimeout(function(e){return function(){return e.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},e.prototype.input_blur=function(e){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(e){return function(){return e.blur_test()}}(this),100)},e.prototype.label_click_handler=function(e){return this.is_multiple?this.container_mousedown(e):this.activate_field()},e.prototype.results_option_build=function(e){var t,s,i,r,n,o,l;for(t="",l=0,r=0,n=(o=this.results_data).length;r<n&&(s=o[r],i="",""!==(i=s.group?this.result_add_group(s):this.result_add_option(s))&&(l++,t+=i),(null!=e?e.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(l>=this.max_shown_results));r++);return t},e.prototype.result_add_option=function(e){var t,s;return e.search_match&&this.include_option_in_results(e)?(t=[],e.disabled||e.selected&&this.is_multiple||t.push("active-result"),!e.disabled||e.selected&&this.is_multiple||t.push("disabled-result"),e.selected&&t.push("result-selected"),null!=e.group_array_index&&t.push("group-option"),""!==e.classes&&t.push(e.classes),s=document.createElement("li"),s.className=t.join(" "),e.style&&(s.style.cssText=e.style),s.setAttribute("data-option-array-index",e.array_index),s.innerHTML=e.highlighted_html||e.html,e.title&&(s.title=e.title),this.outerHTML(s)):""},e.prototype.result_add_group=function(e){var t,s;return(e.search_match||e.group_match)&&e.active_options>0?((t=[]).push("group-result"),e.classes&&t.push(e.classes),s=document.createElement("li"),s.className=t.join(" "),s.innerHTML=e.highlighted_html||this.escape_html(e.label),e.title&&(s.title=e.title),this.outerHTML(s)):""},e.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},e.prototype.reset_single_select_options=function(){var e,t,s,i,r;for(r=[],e=0,t=(s=this.results_data).length;e<t;e++)(i=s[e]).selected?r.push(i.selected=!1):r.push(void 0);return r},e.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},e.prototype.results_search=function(e){return this.results_showing?this.winnow_results():this.results_show()},e.prototype.winnow_results=function(e){var t,s,i,r,n,o,l,h,c,a,_,u,d,p,f;for(this.no_results_clear(),a=0,t=(l=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),c=this.get_search_regex(t),i=0,r=(h=this.results_data).length;i<r;i++)(n=h[i]).search_match=!1,_=null,u=null,n.highlighted_html="",this.include_option_in_results(n)&&(n.group&&(n.group_match=!1,n.active_options=0),null!=n.group_array_index&&this.results_data[n.group_array_index]&&(0===(_=this.results_data[n.group_array_index]).active_options&&_.search_match&&(a+=1),_.active_options+=1),f=n.group?n.label:n.text,n.group&&!this.group_search||(u=this.search_string_match(f,c),n.search_match=null!=u,n.search_match&&!n.group&&(a+=1),n.search_match?(l.length&&(d=u.index,o=f.slice(0,d),s=f.slice(d,d+l.length),p=f.slice(d+l.length),n.highlighted_html=this.escape_html(o)+"<em>"+this.escape_html(s)+"</em>"+this.escape_html(p)),null!=_&&(_.group_match=!0)):null!=n.group_array_index&&this.results_data[n.group_array_index].search_match&&(n.search_match=!0)));return this.result_clear_highlight(),a<1&&l.length?(this.update_results_content(""),this.no_results(l)):(this.update_results_content(this.results_option_build()),(null!=e?e.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},e.prototype.get_search_regex=function(e){var t,s;return s=this.search_contains?e:"(^|\\s|\\b)"+e+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),t=this.case_sensitive_search?"":"i",new RegExp(s,t)},e.prototype.search_string_match=function(e,t){var s;return s=t.exec(e),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},e.prototype.choices_count=function(){var e,t,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,e=0,t=(s=this.form_field.options).length;e<t;e++)s[e].selected&&(this.selected_option_count+=1);return this.selected_option_count},e.prototype.choices_click=function(e){if(e.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},e.prototype.keydown_checker=function(e){var t,s;switch(s=null!=(t=e.which)?t:e.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(e),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&e.preventDefault();break;case 32:this.disable_search&&e.preventDefault();break;case 38:e.preventDefault(),this.keyup_arrow();break;case 40:e.preventDefault(),this.keydown_arrow()}},e.prototype.keyup_checker=function(e){var t,s;switch(s=null!=(t=e.which)?t:e.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:e.preventDefault(),this.results_showing&&this.result_select(e);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},e.prototype.clipboard_event_checker=function(e){if(!this.is_disabled)return setTimeout(function(e){return function(){return e.results_search()}}(this),50)},e.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},e.prototype.include_option_in_results=function(e){return!(this.is_multiple&&!this.display_selected_options&&e.selected)&&(!(!this.display_disabled_options&&e.disabled)&&!e.empty)},e.prototype.search_results_touchstart=function(e){return this.touch_started=!0,this.search_results_mouseover(e)},e.prototype.search_results_touchmove=function(e){return this.touch_started=!1,this.search_results_mouseout(e)},e.prototype.search_results_touchend=function(e){if(this.touch_started)return this.search_results_mouseup(e)},e.prototype.outerHTML=function(e){var t;return e.outerHTML?e.outerHTML:((t=document.createElement("div")).appendChild(e),t.innerHTML)},e.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n </div>\n <ul class="chosen-results"></ul>\n</div>'},e.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},e.prototype.get_no_results_html=function(e){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(e)+"</span>\n</li>"},e.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},e.default_multiple_text="Select Some Options",e.default_single_text="Select an Option",e.default_no_result_text="No results match",e}(),this.Chosen=function(s){function r(){return r.__super__.constructor.apply(this,arguments)}var n;return i(r,e),r.prototype.setup=function(){return this.current_selectedIndex=this.form_field.selectedIndex},r.prototype.set_up_html=function(){var e,t;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),t={class:e.join(" "),title:this.form_field.title},this.form_field.id.length&&(t.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=new Element("div",t),this.container.setStyle({width:this.container_width()}),this.is_multiple?this.container.update(this.get_multi_html()):this.container.update(this.get_single_html()),this.form_field.hide().insert({after:this.container}),this.dropdown=this.container.down("div.chosen-drop"),this.search_field=this.container.down("input"),this.search_results=this.container.down("ul.chosen-results"),this.search_field_scale(),this.search_no_results=this.container.down("li.no-results"),this.is_multiple?(this.search_choices=this.container.down("ul.chosen-choices"),this.search_container=this.container.down("li.search-field")):(this.search_container=this.container.down("div.chosen-search"),this.selected_item=this.container.down(".chosen-single")),this.results_build(),this.set_tab_index(),this.set_label_behavior()},r.prototype.on_ready=function(){return this.form_field.fire("chosen:ready",{chosen:this})},r.prototype.register_observers=function(){return this.container.observe("touchstart",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.container.observe("touchend",function(e){return function(t){return e.container_mouseup(t)}}(this)),this.container.observe("mousedown",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.container.observe("mouseup",function(e){return function(t){return e.container_mouseup(t)}}(this)),this.container.observe("mouseenter",function(e){return function(t){return e.mouse_enter(t)}}(this)),this.container.observe("mouseleave",function(e){return function(t){return e.mouse_leave(t)}}(this)),this.search_results.observe("mouseup",function(e){return function(t){return e.search_results_mouseup(t)}}(this)),this.search_results.observe("mouseover",function(e){return function(t){return e.search_results_mouseover(t)}}(this)),this.search_results.observe("mouseout",function(e){return function(t){return e.search_results_mouseout(t)}}(this)),this.search_results.observe("mousewheel",function(e){return function(t){return e.search_results_mousewheel(t)}}(this)),this.search_results.observe("DOMMouseScroll",function(e){return function(t){return e.search_results_mousewheel(t)}}(this)),this.search_results.observe("touchstart",function(e){return function(t){return e.search_results_touchstart(t)}}(this)),this.search_results.observe("touchmove",function(e){return function(t){return e.search_results_touchmove(t)}}(this)),this.search_results.observe("touchend",function(e){return function(t){return e.search_results_touchend(t)}}(this)),this.form_field.observe("chosen:updated",function(e){return function(t){return e.results_update_field(t)}}(this)),this.form_field.observe("chosen:activate",function(e){return function(t){return e.activate_field(t)}}(this)),this.form_field.observe("chosen:open",function(e){return function(t){return e.container_mousedown(t)}}(this)),this.form_field.observe("chosen:close",function(e){return function(t){return e.close_field(t)}}(this)),this.search_field.observe("blur",function(e){return function(t){return e.input_blur(t)}}(this)),this.search_field.observe("keyup",function(e){return function(t){return e.keyup_checker(t)}}(this)),this.search_field.observe("keydown",function(e){return function(t){return e.keydown_checker(t)}}(this)),this.search_field.observe("focus",function(e){return function(t){return e.input_focus(t)}}(this)),this.search_field.observe("cut",function(e){return function(t){return e.clipboard_event_checker(t)}}(this)),this.search_field.observe("paste",function(e){return function(t){return e.clipboard_event_checker(t)}}(this)),this.is_multiple?this.search_choices.observe("click",function(e){return function(t){return e.choices_click(t)}}(this)):this.container.observe("click",function(e){return e.preventDefault()})},r.prototype.destroy=function(){var e,t,s,i;for(this.container.ownerDocument.stopObserving("click",this.click_test_action),t=0,s=(i=["chosen:updated","chosen:activate","chosen:open","chosen:close"]).length;t<s;t++)e=i[t],this.form_field.stopObserving(e);return this.container.stopObserving(),this.search_results.stopObserving(),this.search_field.stopObserving(),null!=this.form_field_label&&this.form_field_label.stopObserving(),this.is_multiple?(this.search_choices.stopObserving(),this.container.select(".search-choice-close").each(function(e){return e.stopObserving()})):this.selected_item.stopObserving(),this.search_field.tabIndex&&(this.form_field.tabIndex=this.search_field.tabIndex),this.container.remove(),this.form_field.show()},r.prototype.search_field_disabled=function(){var e;return this.is_disabled=this.form_field.disabled||(null!=(e=this.form_field.up("fieldset"))?e.disabled:void 0)||!1,this.is_disabled?this.container.addClassName("chosen-disabled"):this.container.removeClassName("chosen-disabled"),this.search_field.disabled=this.is_disabled,this.is_multiple||this.selected_item.stopObserving("focus",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.observe("focus",this.activate_field)},r.prototype.container_mousedown=function(e){var t;if(!this.is_disabled)return!e||"mousedown"!==(t=e.type)&&"touchstart"!==t||this.results_showing||e.preventDefault(),null!=e&&e.target.hasClassName("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||e.target!==this.selected_item&&!e.target.up("a.chosen-single")||this.results_toggle():(this.is_multiple&&this.search_field.clear(),this.container.ownerDocument.observe("click",this.click_test_action),this.results_show()),this.activate_field())},r.prototype.container_mouseup=function(e){if("ABBR"===e.target.nodeName&&!this.is_disabled)return this.results_reset(e)},r.prototype.search_results_mousewheel=function(e){var t;if(null!=(t=e.deltaY||-e.wheelDelta||e.detail))return e.preventDefault(),"DOMMouseScroll"===e.type&&(t*=40),this.search_results.scrollTop=t+this.search_results.scrollTop},r.prototype.blur_test=function(e){if(!this.active_field&&this.container.hasClassName("chosen-container-active"))return this.close_field()},r.prototype.close_field=function(){return this.container.ownerDocument.stopObserving("click",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClassName("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},r.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClassName("chosen-container-active"),this.active_field=!0,this.search_field.value=this.get_search_field_value(),this.search_field.focus()},r.prototype.test_active_click=function(e){return e.target.up(".chosen-container")===this.container?this.active_field=!0:this.close_field()},r.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=t.select_to_array(this.form_field),this.is_multiple?this.search_choices.select("li.search-choice").invoke("remove"):(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field.readOnly=!0,this.container.addClassName("chosen-container-single-nosearch")):(this.search_field.readOnly=!1,this.container.removeClassName("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},r.prototype.result_do_highlight=function(e){var t,s,i,r,n;return this.result_clear_highlight(),this.result_highlight=e,this.result_highlight.addClassName("highlighted"),i=parseInt(this.search_results.getStyle("maxHeight"),10),n=this.search_results.scrollTop,r=i+n,s=this.result_highlight.positionedOffset().top,(t=s+this.result_highlight.getHeight())>=r?this.search_results.scrollTop=t-i>0?t-i:0:s<n?this.search_results.scrollTop=s:void 0},r.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClassName("highlighted"),this.result_highlight=null},r.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field.fire("chosen:maxselected",{chosen:this}),!1):(this.container.addClassName("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.value=this.get_search_field_value(),this.winnow_results(),this.form_field.fire("chosen:showing_dropdown",{chosen:this}))},r.prototype.update_results_content=function(e){return this.search_results.update(e)},r.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClassName("chosen-with-drop"),this.form_field.fire("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},r.prototype.set_tab_index=function(e){var t;if(this.form_field.tabIndex)return t=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field.tabIndex=t},r.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field.up("label"),null==this.form_field_label&&(this.form_field_label=$$("label[for='"+this.form_field.id+"']").first()),null!=this.form_field_label)return this.form_field_label.observe("click",this.label_click_handler)},r.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.value=this.default_text,this.search_field.addClassName("default")):(this.search_field.value="",this.search_field.removeClassName("default"))},r.prototype.search_results_mouseup=function(e){var t;if(t=e.target.hasClassName("active-result")?e.target:e.target.up(".active-result"))return this.result_highlight=t,this.result_select(e),this.search_field.focus()},r.prototype.search_results_mouseover=function(e){var t;if(t=e.target.hasClassName("active-result")?e.target:e.target.up(".active-result"))return this.result_do_highlight(t)},r.prototype.search_results_mouseout=function(e){if(e.target.hasClassName("active-result")||e.target.up(".active-result"))return this.result_clear_highlight()},r.prototype.choice_build=function(e){var t,s;return t=new Element("li",{class:"search-choice"}).update("<span>"+this.choice_label(e)+"</span>"),e.disabled?t.addClassName("search-choice-disabled"):((s=new Element("a",{href:"#",class:"search-choice-close",rel:e.array_index})).observe("click",function(e){return function(t){return e.choice_destroy_link_click(t)}}(this)),t.insert(s)),this.search_container.insert({before:t})},r.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(e.target)},r.prototype.choice_destroy=function(e){if(this.result_deselect(e.readAttribute("rel")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),e.up("li").remove(),this.search_field_scale()},r.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},r.prototype.results_reset_cleanup=function(){var e;if(this.current_selectedIndex=this.form_field.selectedIndex,e=this.selected_item.down("abbr"))return e.remove()},r.prototype.result_select=function(e){var t,s;if(this.result_highlight)return t=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field.fire("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?t.removeClassName("active-result"):this.reset_single_select_options(),t.addClassName("result-selected"),s=this.results_data[t.getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||e.metaKey||e.ctrlKey)?e.metaKey||e.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.value="",this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change(),this.current_selectedIndex=this.form_field.selectedIndex,e.preventDefault(),this.search_field_scale())},r.prototype.single_set_selected_text=function(e){return null==e&&(e=this.default_text),e===this.default_text?this.selected_item.addClassName("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClassName("chosen-default")),this.selected_item.down("span").update(e)},r.prototype.result_deselect=function(e){var t;return t=this.results_data[e],!this.form_field.options[t.options_index].disabled&&(t.selected=!1,this.form_field.options[t.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change(),this.search_field_scale(),!0)},r.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.down("abbr")||this.selected_item.down("span").insert({after:'<abbr class="search-choice-close"></abbr>'}),this.selected_item.addClassName("chosen-single-with-deselect")},r.prototype.get_search_field_value=function(){return this.search_field.value},r.prototype.get_search_text=function(){return this.get_search_field_value().strip()},r.prototype.escape_html=function(e){return e.escapeHTML()},r.prototype.winnow_results_set_highlight=function(){var e;if(this.is_multiple||(e=this.search_results.down(".result-selected.active-result")),null==e&&(e=this.search_results.down(".active-result")),null!=e)return this.result_do_highlight(e)},r.prototype.no_results=function(e){return this.search_results.insert(this.get_no_results_html(e)),this.form_field.fire("chosen:no_results",{chosen:this})},r.prototype.no_results_clear=function(){var e,t;for(e=null,t=[];e=this.search_results.down(".no-results");)t.push(e.remove());return t},r.prototype.keydown_arrow=function(){var e;return this.results_showing&&this.result_highlight?(e=this.result_highlight.next(".active-result"))?this.result_do_highlight(e):void 0:this.results_show()},r.prototype.keyup_arrow=function(){var e,t,s;return this.results_showing||this.is_multiple?this.result_highlight?(s=this.result_highlight.previousSiblings(),e=this.search_results.select("li.active-result"),(t=s.intersect(e)).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},r.prototype.keydown_backstroke=function(){var e;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.down("a")),this.clear_backstroke()):(e=this.search_container.siblings().last())&&e.hasClassName("search-choice")&&!e.hasClassName("search-choice-disabled")?(this.pending_backstroke=e,this.pending_backstroke&&this.pending_backstroke.addClassName("search-choice-focus"),this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClassName("search-choice-focus")):void 0},r.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClassName("search-choice-focus"),this.pending_backstroke=null},r.prototype.search_field_scale=function(){var e,t,s,i,r,n,o,l;if(this.is_multiple){for(n={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s<i;s++)n[r=o[s]]=this.search_field.getStyle(r);return(t=new Element("div").update(this.escape_html(this.get_search_field_value()))).setStyle(n),document.body.appendChild(t),l=t.measure("width")+25,t.remove(),(e=this.container.getWidth())&&(l=Math.min(e-10,l)),this.search_field.setStyle({width:l+"px"})}},r.prototype.trigger_form_field_change=function(){return n(this.form_field,"input"),n(this.form_field,"change")},n=function(e,t){var s;if(e.dispatchEvent){try{s=new Event(t,{bubbles:!0,cancelable:!0})}catch(e){(s=document.createEvent("HTMLEvents")).initEvent(t,!0,!0)}return e.dispatchEvent(s)}return e.fireEvent("on"+t,document.createEventObject())},r}()}).call(this);
common/libs/{chosen-v1.8.3/bower.json → chosen-v1.8.7/composer.json} RENAMED
@@ -1,44 +1,36 @@
1
  {
2
- "name": "chosen",
3
  "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
4
- "keywords": [
5
- "select",
6
- "multiselect",
7
- "dropdown",
8
- "form",
9
- "input",
10
- "ui"
11
- ],
12
- "homepage": "https://harvesthq.github.io/chosen/",
13
- "license": "https://github.com/harvesthq/chosen/blob/master/LICENSE.md",
14
  "authors": [
15
  {
16
  "name": "Patrick Filler",
17
- "url": "https://github.com/pfiller"
18
  },
19
  {
20
  "name": "Christophe Coevoet",
21
- "url": "https://github.com/stof"
22
  },
23
  {
24
  "name": "Ken Earley",
25
- "url": "https://github.com/kenearley"
26
  },
27
  {
28
  "name": "Koen Punt",
29
- "url": "https://github.com/koenpunt"
30
  }
31
  ],
32
- "dependencies": {},
33
- "main": [
34
- "chosen.jquery.js",
35
- "chosen.css",
36
- "chosen-sprite@2x.png",
37
- "chosen-sprite.png"
 
38
  ],
39
- "ignore": [],
40
- "repository": {
41
- "type": "git",
42
- "url": "https://github.com/harvesthq/chosen.git"
 
43
  }
44
  }
1
  {
2
+ "name": "harvesthq/chosen",
3
  "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
 
 
 
 
 
 
 
 
 
 
4
  "authors": [
5
  {
6
  "name": "Patrick Filler",
7
+ "homepage": "https://github.com/pfiller"
8
  },
9
  {
10
  "name": "Christophe Coevoet",
11
+ "homepage": "https://github.com/stof"
12
  },
13
  {
14
  "name": "Ken Earley",
15
+ "homepage": "https://github.com/kenearley"
16
  },
17
  {
18
  "name": "Koen Punt",
19
+ "homepage": "https://github.com/koenpunt"
20
  }
21
  ],
22
+ "keywords": [
23
+ "select",
24
+ "multiselect",
25
+ "dropdown",
26
+ "form",
27
+ "input",
28
+ "ui"
29
  ],
30
+ "type": "library",
31
+ "license": "MIT",
32
+ "minimum-stability": "stable",
33
+ "homepage": "https://harvesthq.github.io/chosen/",
34
+ "require": {
35
  }
36
  }
framework/lib/formating.php CHANGED
@@ -37,9 +37,9 @@ function ak_admin_notify( $message = '' )
37
  {
38
  if (is_admin() && !did_action('pp_capabilities_error')) {
39
  if ( empty($message) ) {
40
- $message = __('Settings saved.', 'capsman-enhanced');
41
  }
42
- echo '<div id="message" class="updated fade"><p><strong>' . $message . '</strong></p></div>';
43
  }
44
  }
45
 
@@ -52,7 +52,7 @@ function ak_admin_notify( $message = '' )
52
  function ak_admin_error( $message )
53
  {
54
  if ( is_admin() ) {
55
- echo '<div id="error" class="error"><p><strong>' . $message . '</strong></p></div>';
56
  }
57
 
58
  do_action('pp_capabilities_error');
37
  {
38
  if (is_admin() && !did_action('pp_capabilities_error')) {
39
  if ( empty($message) ) {
40
+ $message = esc_html__('Settings saved.', 'capsman-enhanced');
41
  }
42
+ echo '<div id="message" class="updated fade"><p><strong>' . esc_html($message) . '</strong></p></div>';
43
  }
44
  }
45
 
52
  function ak_admin_error( $message )
53
  {
54
  if ( is_admin() ) {
55
+ echo '<div id="error" class="error"><p><strong>' . esc_html($message) . '</strong></p></div>';
56
  }
57
 
58
  do_action('pp_capabilities_error');
framework/lib/users.php CHANGED
@@ -37,12 +37,9 @@
37
  * @return array All defined roles. If translated, the key is the role name and value is the translated role.
38
  */
39
  function ak_get_roles( $translate = false ) {
40
- global $wp_roles;
41
- if ( ! isset( $wp_roles ) ) {
42
- $wp_roles = new WP_Roles();
43
- }
44
 
45
- $roles = $wp_roles->get_names();
46
  if ( $translate ) {
47
  foreach ($roles as $k => $r) {
48
  $roles[$k] = _x($r, 'User role');
37
  * @return array All defined roles. If translated, the key is the role name and value is the translated role.
38
  */
39
  function ak_get_roles( $translate = false ) {
40
+ $wp_roles_obj = wp_roles();
 
 
 
41
 
42
+ $roles = $wp_roles_obj->get_names();
43
  if ( $translate ) {
44
  foreach ($roles as $k => $r) {
45
  $roles[$k] = _x($r, 'User role');
includes-core/CoreAdmin.php CHANGED
@@ -50,7 +50,7 @@ class CoreAdmin {
50
 
51
  <script type="text/javascript">
52
  jQuery(document).ready(function($) {
53
- $('#toplevel_page_pp-capabilities ul li:last a').attr('href', '<?php echo $url;?>').attr('target', '_blank').css('font-weight', 'bold').css('color', '#FEB123');
54
  });
55
  </script>
56
  <?php
@@ -59,8 +59,8 @@ class CoreAdmin {
59
  function actCapabilitiesSubmenus() {
60
  $cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
61
 
62
- add_submenu_page('pp-capabilities', __('Admin Menus', 'capsman-enhanced'), __('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', [$this, 'AdminMenusPromo']);
63
- add_submenu_page('pp-capabilities', __('Nav Menus', 'capsman-enhanced'), __('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', [$this, 'NavMenusPromo']);
64
  }
65
 
66
  function AdminMenusPromo() {
50
 
51
  <script type="text/javascript">
52
  jQuery(document).ready(function($) {
53
+ $('#toplevel_page_pp-capabilities ul li:last a').attr('href', '<?php echo esc_url_raw($url);?>').attr('target', '_blank').css('font-weight', 'bold').css('color', '#FEB123');
54
  });
55
  </script>
56
  <?php
59
  function actCapabilitiesSubmenus() {
60
  $cap_name = (is_multisite() && is_super_admin()) ? 'read' : 'manage_capabilities';
61
 
62
+ add_submenu_page('pp-capabilities', esc_html__('Admin Menus', 'capsman-enhanced'), esc_html__('Admin Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-admin-menus', [$this, 'AdminMenusPromo']);
63
+ add_submenu_page('pp-capabilities', esc_html__('Nav Menus', 'capsman-enhanced'), esc_html__('Nav Menus', 'capsman-enhanced'), $cap_name, 'pp-capabilities-nav-menus', [$this, 'NavMenusPromo']);
64
  }
65
 
66
  function AdminMenusPromo() {
includes-core/admin-features-promo.php CHANGED
@@ -71,12 +71,12 @@
71
  <td colspan="2">
72
  <div class="pp-promo-upgrade-notice">
73
  <p>
74
- <?php _e('You can block pages by URL or hide Admin elements by entering a CSS class or ID. This feature is available in PublishPress Capabilities Pro.',
75
  'capsman-enhanced'); ?>
76
  </p>
77
  <p>
78
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
79
- <?php _e('Upgrade to Pro', 'capsman-enhanced'); ?>
80
  </a>
81
  </p>
82
  </div>
71
  <td colspan="2">
72
  <div class="pp-promo-upgrade-notice">
73
  <p>
74
+ <?php esc_html_e('You can block pages by URL or hide Admin elements by entering a CSS class or ID. This feature is available in PublishPress Capabilities Pro.',
75
  'capsman-enhanced'); ?>
76
  </p>
77
  <p>
78
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
79
+ <?php esc_html_e('Upgrade to Pro', 'capsman-enhanced'); ?>
80
  </a>
81
  </p>
82
  </div>
includes-core/admin-menus-promo.php CHANGED
@@ -26,7 +26,7 @@ $default_role = $capsman->current;
26
 
27
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper-promo">
28
  <div id="icon-capsman-admin" class="icon32"></div>
29
- <h2><?php _e('Admin Menu Restrictions', 'capsman-enhanced'); ?></h2>
30
 
31
  <form method="post" id="ppc-admin-menu-form" action="admin.php?page=pp-capabilities-admin-menus">
32
  <fieldset>
@@ -36,30 +36,30 @@ $default_role = $capsman->current;
36
  <div class="publishpress-filters">
37
  <select name="ppc-admin-menu-role" class="ppc-admin-menu-role">
38
  <?php
39
- foreach ($roles as $role => $name) :
40
  $name = translate_user_role($name);
41
  ?>
42
- <option value="<?php echo $role;?>" <?php selected($default_role, $role);?>><?php echo $name;?></option>
43
  <?php
44
  endforeach;
45
  ?>
46
  </select> &nbsp;
47
  <input type="submit" name="admin-menu-submit"
48
- value="<?php _e('Save Changes', 'capsman-enhanced') ?>"
49
  class="button-primary ppc-admin-menu-submit" style="float:right" />
50
  </div>
51
  <div id="pp-capability-menu-wrapper" class="postbox" style="box-shadow: none;">
52
  <div class="pp-capability-menus-promo">
53
  <div class="pp-capability-menus-promo-inner">
54
- <img src="<?php echo plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-admin-menus-desktop.jpg';?>" class="pp-capability-desktop" />
55
- <img src="<?php echo plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-admin-menus-mobile.jpg';?>" class="pp-capability-mobile" />
56
  <div class="pp-capability-menus-promo-content">
57
  <p>
58
- <?php _e('You can restrict access to admin menu screens. This feature is available in PublishPress Capabilities Pro', 'capsman-enhanced'); ?>
59
  </p>
60
  <p>
61
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
62
- <?php _e('Upgrade to Pro', 'capsman-enhanced'); ?>
63
  </a>
64
  </p>
65
  </div>
@@ -83,13 +83,13 @@ $default_role = $capsman->current;
83
  // reload page for instant reflection if user is updating own role
84
  // -------------------------------------------------------------
85
  <?php if((int)$ppc_admin_menu_reload === 1){ ?>
86
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-menus&role=' . $default_role . ''); ?>';
87
  <?php } ?>
88
 
89
  // -------------------------------------------------------------
90
  // Set form action attribute to include role
91
  // -------------------------------------------------------------
92
- $('#ppc-admin-menu-form').attr('action', '<?php echo admin_url('admin.php?page=pp-capabilities-admin-menus&role=' . $default_role . ''); ?>');
93
 
94
  // -------------------------------------------------------------
95
  // Instant restricted item class
@@ -140,11 +140,10 @@ $default_role = $capsman->current;
140
  $('.pp-capability-menus-wrapper .ppc-admin-menu-submit').hide();
141
 
142
  //show loading
143
- $('#pp-capability-menu-wrapper').html('<img src="<?php echo $capsman->mod_url; ?>/images/loader-black.gif" alt="loading...">');
144
 
145
  //go to url
146
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-menus&role='); ?>' + $(this).val() + '';
147
-
148
  });
149
  });
150
  /* ]]> */
26
 
27
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper-promo">
28
  <div id="icon-capsman-admin" class="icon32"></div>
29
+ <h2><?php esc_html_e('Admin Menu Restrictions', 'capsman-enhanced'); ?></h2>
30
 
31
  <form method="post" id="ppc-admin-menu-form" action="admin.php?page=pp-capabilities-admin-menus">
32
  <fieldset>
36
  <div class="publishpress-filters">
37
  <select name="ppc-admin-menu-role" class="ppc-admin-menu-role">
38
  <?php
39
+ foreach ($roles as $role_name => $name) :
40
  $name = translate_user_role($name);
41
  ?>
42
+ <option value="<?php echo esc_attr($role_name);?>" <?php selected($default_role, $role_name);?>><?php echo esc_html($name);?></option>
43
  <?php
44
  endforeach;
45
  ?>
46
  </select> &nbsp;
47
  <input type="submit" name="admin-menu-submit"
48
+ value="<?php esc_attr_e('Save Changes', 'capsman-enhanced') ?>"
49
  class="button-primary ppc-admin-menu-submit" style="float:right" />
50
  </div>
51
  <div id="pp-capability-menu-wrapper" class="postbox" style="box-shadow: none;">
52
  <div class="pp-capability-menus-promo">
53
  <div class="pp-capability-menus-promo-inner">
54
+ <img src="<?php echo esc_url_raw(plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-admin-menus-desktop.jpg');?>" class="pp-capability-desktop" />
55
+ <img src="<?php echo esc_url_raw(plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-admin-menus-mobile.jpg');?>" class="pp-capability-mobile" />
56
  <div class="pp-capability-menus-promo-content">
57
  <p>
58
+ <?php esc_html_e('You can restrict access to admin menu screens. This feature is available in PublishPress Capabilities Pro', 'capsman-enhanced'); ?>
59
  </p>
60
  <p>
61
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
62
+ <?php esc_html_e('Upgrade to Pro', 'capsman-enhanced'); ?>
63
  </a>
64
  </p>
65
  </div>
83
  // reload page for instant reflection if user is updating own role
84
  // -------------------------------------------------------------
85
  <?php if((int)$ppc_admin_menu_reload === 1){ ?>
86
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-menus&role=' . $default_role . '')); ?>';
87
  <?php } ?>
88
 
89
  // -------------------------------------------------------------
90
  // Set form action attribute to include role
91
  // -------------------------------------------------------------
92
+ $('#ppc-admin-menu-form').attr('action', '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-menus&role=' . $default_role . '')); ?>');
93
 
94
  // -------------------------------------------------------------
95
  // Instant restricted item class
140
  $('.pp-capability-menus-wrapper .ppc-admin-menu-submit').hide();
141
 
142
  //show loading
143
+ $('#pp-capability-menu-wrapper').html('<img src="<?php echo esc_url_raw($capsman->mod_url . '/images/loader-black.gif'); ?>" alt="loading...">');
144
 
145
  //go to url
146
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-menus&role=')); ?>' + $(this).val() + '';
 
147
  });
148
  });
149
  /* ]]> */
includes-core/editor-features-promo.php CHANGED
@@ -21,7 +21,7 @@
21
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
22
 
23
  <td colspan="3">
24
- <h4 class="ppc-menu-row-section"><?php _e('Metaboxes', 'capsman-enhanced'); ?></h4>
25
  </td>
26
  </tr>
27
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
@@ -29,7 +29,7 @@
29
  <td class="menu-column ppc-menu-item">
30
 
31
  <span class="gutenberg menu-item-link">
32
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Checklist', 'capsman-enhanced'); ?> </strong></span>
33
  </td>
34
 
35
  <td class="restrict-column ppc-menu-checkbox">
@@ -42,7 +42,7 @@
42
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
43
  <td class="menu-column ppc-menu-item">
44
  <span class="gutenberg menu-item-link restricted">
45
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Editorial Comments', 'capsman-enhanced'); ?></strong></span>
46
  </td>
47
 
48
  <td class="restrict-column ppc-menu-checkbox">
@@ -55,7 +55,7 @@
55
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
56
  <td class="menu-column ppc-menu-item">
57
  <span class="gutenberg menu-item-link">
58
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Notifications', 'capsman-enhanced'); ?></strong></span>
59
  </td>
60
 
61
  <td class="restrict-column ppc-menu-checkbox">
@@ -68,7 +68,7 @@
68
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
69
  <td class="menu-column ppc-menu-item">
70
  <span class="gutenberg menu-item-link">
71
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('TaxoPress - Settings', 'capsman-enhanced'); ?></strong></span>
72
  </td>
73
 
74
  <td class="restrict-column ppc-menu-checkbox">
@@ -83,12 +83,12 @@
83
  <td colspan="3">
84
  <div class="pp-promo-upgrade-notice">
85
  <p>
86
- <?php _e('You can hide plugin metaboxes. You can also hide specific items by entering their CSS class or ID. This feature is available in PublishPress Capabilities Pro.',
87
  'capsman-enhanced'); ?>
88
  </p>
89
  <p>
90
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
91
- <?php _e('Upgrade to Pro', 'capsman-enhanced'); ?>
92
  </a>
93
  </p>
94
  </div>
@@ -98,14 +98,14 @@
98
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
99
 
100
  <td colspan="3">
101
- <h4 class="ppc-menu-row-section"><?php _e('Custom Items', 'capsman-enhanced'); ?></h4>
102
  </td>
103
  </tr>
104
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
105
  <td class="menu-column ppc-menu-item">
106
  <span class="gutenberg menu-item-link">
107
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Custom item one', 'capsman-enhanced'); ?> <small>(.custom-plugin-item, #custom-plugin-item)</small> &nbsp; <span
108
- class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span></strong></span>
109
  </td>
110
 
111
  <td class="restrict-column ppc-menu-checkbox">
@@ -118,8 +118,8 @@
118
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
119
  <td class="menu-column ppc-menu-item">
120
  <span class="gutenberg menu-item-link restricted">
121
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Permalink: Descriptive Caption', 'capsman-enhanced'); ?> <small>(.editor-post-link p)</small> &nbsp; <span
122
- class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
123
  </td>
124
 
125
  <td class="restrict-column ppc-menu-checkbox">
@@ -132,7 +132,7 @@
132
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
133
  <td class="menu-column ppc-menu-item">
134
  <span class="gutenberg menu-item-link">
135
- <strong><i class="dashicons dashicons-arrow-right"></i> <?php _e('Page Attributes: Order', 'capsman-enhanced'); ?> <small>(.editor-page-attributes__order)</small> &nbsp; <span class="ppc-custom-features-delete"><small>(<?php _e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
136
  </td>
137
 
138
  <td class="restrict-column ppc-menu-checkbox">
21
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
22
 
23
  <td colspan="3">
24
+ <h4 class="ppc-menu-row-section"><?php esc_html_e('Metaboxes', 'capsman-enhanced'); ?></h4>
25
  </td>
26
  </tr>
27
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
29
  <td class="menu-column ppc-menu-item">
30
 
31
  <span class="gutenberg menu-item-link">
32
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Checklist', 'capsman-enhanced'); ?> </strong></span>
33
  </td>
34
 
35
  <td class="restrict-column ppc-menu-checkbox">
42
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
43
  <td class="menu-column ppc-menu-item">
44
  <span class="gutenberg menu-item-link restricted">
45
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Editorial Comments', 'capsman-enhanced'); ?></strong></span>
46
  </td>
47
 
48
  <td class="restrict-column ppc-menu-checkbox">
55
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
56
  <td class="menu-column ppc-menu-item">
57
  <span class="gutenberg menu-item-link">
58
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Notifications', 'capsman-enhanced'); ?></strong></span>
59
  </td>
60
 
61
  <td class="restrict-column ppc-menu-checkbox">
68
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
69
  <td class="menu-column ppc-menu-item">
70
  <span class="gutenberg menu-item-link">
71
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('TaxoPress - Settings', 'capsman-enhanced'); ?></strong></span>
72
  </td>
73
 
74
  <td class="restrict-column ppc-menu-checkbox">
83
  <td colspan="3">
84
  <div class="pp-promo-upgrade-notice">
85
  <p>
86
+ <?php esc_html_e('You can hide plugin metaboxes. You can also hide specific items by entering their CSS class or ID. This feature is available in PublishPress Capabilities Pro.',
87
  'capsman-enhanced'); ?>
88
  </p>
89
  <p>
90
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
91
+ <?php esc_html_e('Upgrade to Pro', 'capsman-enhanced'); ?>
92
  </a>
93
  </p>
94
  </div>
98
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
99
 
100
  <td colspan="3">
101
+ <h4 class="ppc-menu-row-section"><?php esc_html_e('Custom Items', 'capsman-enhanced'); ?></h4>
102
  </td>
103
  </tr>
104
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
105
  <td class="menu-column ppc-menu-item">
106
  <span class="gutenberg menu-item-link">
107
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Custom item one', 'capsman-enhanced'); ?> <small>(.custom-plugin-item, #custom-plugin-item)</small> &nbsp; <span
108
+ class="ppc-custom-features-delete"><small>(<?php esc_html_e('Delete', 'capsman-enhanced'); ?>)</small></span></strong></span>
109
  </td>
110
 
111
  <td class="restrict-column ppc-menu-checkbox">
118
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
119
  <td class="menu-column ppc-menu-item">
120
  <span class="gutenberg menu-item-link restricted">
121
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Permalink: Descriptive Caption', 'capsman-enhanced'); ?> <small>(.editor-post-link p)</small> &nbsp; <span
122
+ class="ppc-custom-features-delete"><small>(<?php esc_html_e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
123
  </td>
124
 
125
  <td class="restrict-column ppc-menu-checkbox">
132
  <tr class="ppc-menu-row parent-menu pp-promo-overlay-row pp-promo-blur">
133
  <td class="menu-column ppc-menu-item">
134
  <span class="gutenberg menu-item-link">
135
+ <strong><i class="dashicons dashicons-arrow-right"></i> <?php esc_html_e('Page Attributes: Order', 'capsman-enhanced'); ?> <small>(.editor-page-attributes__order)</small> &nbsp; <span class="ppc-custom-features-delete"><small>(<?php esc_html_e('Delete', 'capsman-enhanced'); ?>)</small></span> </strong></span>
136
  </td>
137
 
138
  <td class="restrict-column ppc-menu-checkbox">
includes-core/nav-menus-promo.php CHANGED
@@ -26,7 +26,7 @@ $default_role = $capsman->current;
26
 
27
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper-promo">
28
  <div id="icon-capsman-admin" class="icon32"></div>
29
- <h2><?php _e('Navigation Menu Restrictions', 'capsman-enhanced'); ?></h2>
30
 
31
  <form method="post" id="ppc-nav-menu-form" action="admin.php?page=pp-capabilities-nav-menus">
32
  <fieldset>
@@ -38,10 +38,10 @@ $default_role = $capsman->current;
38
  <select name="ppc-nav-menu-role" class="ppc-nav-menu-role">
39
  <optgroup label="Roles">
40
  <?php
41
- foreach ($roles as $role => $name) {
42
  $name = translate_user_role($name);
43
  ?>
44
- <option value="<?php echo $role; ?>" <?php selected($default_role, $role); ?>> <?php echo $name; ?>
45
  &nbsp;
46
  </option>
47
  <?php } ?>
@@ -49,22 +49,22 @@ $default_role = $capsman->current;
49
 
50
  </select> &nbsp;
51
  <input type="submit" name="nav-menu-submit"
52
- value="<?php _e('Save Changes', 'capsman-enhanced') ?>"
53
  class="button-primary ppc-nav-menu-submit" style="float:right" />
54
  </div>
55
 
56
  <div id="pp-capability-menu-wrapper" class="postbox" style="box-shadow: none;">
57
  <div class="pp-capability-menus-promo">
58
  <div class="pp-capability-menus-promo-inner">
59
- <img src="<?php echo plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-nav-menus-desktop.jpg';?>" class="pp-capability-desktop" />
60
- <img src="<?php echo plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-nav-menus-mobile.jpg';?>" class="pp-capability-mobile" />
61
  <div class="pp-capability-menus-promo-content">
62
  <p>
63
- <?php _e('You can restrict access to navigation menus. This feature is available in PublishPress Capabilities Pro', 'capsman-enhanced'); ?>
64
  </p>
65
  <p>
66
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
67
- <?php _e('Upgrade to Pro', 'capsman-enhanced'); ?>
68
  </a>
69
  </p>
70
  </div>
26
 
27
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper-promo">
28
  <div id="icon-capsman-admin" class="icon32"></div>
29
+ <h2><?php esc_html_e('Navigation Menu Restrictions', 'capsman-enhanced'); ?></h2>
30
 
31
  <form method="post" id="ppc-nav-menu-form" action="admin.php?page=pp-capabilities-nav-menus">
32
  <fieldset>
38
  <select name="ppc-nav-menu-role" class="ppc-nav-menu-role">
39
  <optgroup label="Roles">
40
  <?php
41
+ foreach ($roles as $role_name => $name) {
42
  $name = translate_user_role($name);
43
  ?>
44
+ <option value="<?php echo esc_attr($role_name); ?>" <?php selected($default_role, $role_name); ?>> <?php echo esc_html($name); ?>
45
  &nbsp;
46
  </option>
47
  <?php } ?>
49
 
50
  </select> &nbsp;
51
  <input type="submit" name="nav-menu-submit"
52
+ value="<?php esc_attr_e('Save Changes', 'capsman-enhanced') ?>"
53
  class="button-primary ppc-nav-menu-submit" style="float:right" />
54
  </div>
55
 
56
  <div id="pp-capability-menu-wrapper" class="postbox" style="box-shadow: none;">
57
  <div class="pp-capability-menus-promo">
58
  <div class="pp-capability-menus-promo-inner">
59
+ <img src="<?php echo esc_url_raw(plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-nav-menus-desktop.jpg');?>" class="pp-capability-desktop" />
60
+ <img src="<?php echo esc_url_raw(plugin_dir_url(CME_FILE) . 'includes-core/pp-capabilities-nav-menus-mobile.jpg');?>" class="pp-capability-mobile" />
61
  <div class="pp-capability-menus-promo-content">
62
  <p>
63
+ <?php esc_html_e('You can restrict access to navigation menus. This feature is available in PublishPress Capabilities Pro', 'capsman-enhanced'); ?>
64
  </p>
65
  <p>
66
  <a href="https://publishpress.com/links/capabilities-banner" target="_blank">
67
+ <?php esc_html_e('Upgrade to Pro', 'capsman-enhanced'); ?>
68
  </a>
69
  </p>
70
  </div>
includes-core/pp-capabilities-permissions.php DELETED
@@ -1,445 +0,0 @@
1
- <?php
2
- /**
3
- * Original Author: danieliser
4
- * Original Author URL: https://danieliser.com
5
- */
6
-
7
- if ( ! defined( 'ABSPATH' ) ) {
8
- exit;
9
- }
10
-
11
- /**
12
- * Class Ppc_Install_Permissions
13
- *
14
- * This class adds a message inviting to install Permissions
15
- */
16
- if( !class_exists('Ppc_Install_Permissions') ) {
17
- class Ppc_Install_Permissions {
18
-
19
- /**
20
- * Tracking API Endpoint.
21
- *
22
- * @var string
23
- */
24
- public static $api_url = '';
25
-
26
- /**
27
- *
28
- */
29
- public static function init() {
30
- if (!isset( $_GET['pp-after-click'])) {
31
- self::hooks();
32
-
33
- add_action( 'wp_ajax_ppc_permissions_action', array( __CLASS__, 'ajax_handler' ) );
34
- }
35
- }
36
-
37
- /**
38
- * Hook into relevant WP actions.
39
- */
40
- public static function hooks() {
41
- if ( is_admin() && current_user_can( 'edit_posts' ) ) {
42
- self::installed_on();
43
- add_action( 'admin_notices', array( __CLASS__, 'admin_notices' ) );
44
- add_action( 'network_admin_notices', array( __CLASS__, 'admin_notices' ) );
45
- add_action( 'user_admin_notices', array( __CLASS__, 'admin_notices' ) );
46
- }
47
- }
48
-
49
- /**
50
- * Get the install date for comparisons. Sets the date to now if none is found.
51
- *
52
- * @return false|string
53
- */
54
- public static function installed_on() {
55
- $installed_on = get_option( 'ppc_permissions_installed_on', false );
56
-
57
- if ( ! $installed_on ) {
58
- $installed_on = current_time( 'mysql' );
59
- update_option( 'ppc_permissions_installed_on', $installed_on );
60
- }
61
-
62
- return $installed_on;
63
- }
64
-
65
- /**
66
- *
67
- */
68
- public static function ajax_handler() {
69
- $args = wp_parse_args( $_REQUEST, array(
70
- 'group' => self::get_trigger_group(),
71
- 'code' => self::get_trigger_code(),
72
- 'pri' => self::get_current_trigger( 'pri' ),
73
- 'reason' => 'maybe_later',
74
- ) );
75
-
76
- if ( ! wp_verify_nonce( $_REQUEST['nonce'], 'ppc_permissions_action' ) ) {
77
- wp_send_json_error();
78
- }
79
-
80
- try {
81
- $user_id = get_current_user_id();
82
-
83
- $dismissed_triggers = self::dismissed_triggers();
84
- $dismissed_triggers[ $args['group'] ] = $args['pri'];
85
- update_user_meta( $user_id, '_ppc_permissions_dismissed_triggers', $dismissed_triggers );
86
- update_user_meta( $user_id, '_ppc_permissions_last_dismissed', current_time( 'mysql' ) );
87
-
88
- switch ( $args['reason'] ) {
89
- case 'maybe_later':
90
- update_user_meta( $user_id, '_ppc_permissions_last_dismissed', current_time( 'mysql' ) );
91
- break;
92
- case 'am_now':
93
- case 'already_did':
94
- self::already_did( true );
95
- break;
96
- }
97
-
98
- wp_send_json_success();
99
-
100
- } catch ( Exception $e ) {
101
- wp_send_json_error( $e );
102
- }
103
- }
104
-
105
- /**
106
- * @return int|string
107
- */
108
- public static function get_trigger_group() {
109
- static $selected;
110
-
111
- if ( ! isset( $selected ) ) {
112
-
113
- $dismissed_triggers = self::dismissed_triggers();
114
-
115
- $triggers = self::triggers();
116
-
117
- foreach ( $triggers as $g => $group ) {
118
- foreach ( $group['triggers'] as $t => $trigger ) {
119
- if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
120
- $selected = $g;
121
- break;
122
- }
123
- }
124
-
125
- if ( isset( $selected ) ) {
126
- break;
127
- }
128
- }
129
- }
130
-
131
- return $selected;
132
- }
133
-
134
- /**
135
- * @return int|string
136
- */
137
- public static function get_trigger_code() {
138
- static $selected;
139
-
140
- if ( ! isset( $selected ) ) {
141
-
142
- $dismissed_triggers = self::dismissed_triggers();
143
-
144
- foreach ( self::triggers() as $g => $group ) {
145
- foreach ( $group['triggers'] as $t => $trigger ) {
146
- if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
147
- $selected = $t;
148
- break;
149
- }
150
- }
151
-
152
- if ( isset( $selected ) ) {
153
- break;
154
- }
155
- }
156
- }
157
-
158
- return $selected;
159
- }
160
-
161
- /**
162
- * @param null $key
163
- *
164
- * @return bool|mixed|void
165
- */
166
- public static function get_current_trigger( $key = null ) {
167
- $group = self::get_trigger_group();
168
- $code = self::get_trigger_code();
169
-
170
- if ( ! $group || ! $code ) {
171
- return false;
172
- }
173
-
174
- $trigger = self::triggers( $group, $code );
175
-
176
- if(empty($key)){
177
- $return = $trigger;
178
- }elseif(isset($trigger[$key])){
179
- $return = $trigger[$key];
180
- }else {
181
- $return = false;
182
- }
183
-
184
- return $return;
185
- }
186
-
187
- /**
188
- * Returns an array of dismissed trigger groups.
189
- *
190
- * Array contains the group key and highest priority trigger that has been shown previously for each group.
191
- *
192
- * $return = array(
193
- * 'group1' => 20
194
- * );
195
- *
196
- * @return array|mixed
197
- */
198
- public static function dismissed_triggers() {
199
- $user_id = get_current_user_id();
200
-
201
- $dismissed_triggers = get_user_meta( $user_id, '_ppc_permissions_dismissed_triggers', true );
202
-
203
- if ( ! $dismissed_triggers ) {
204
- $dismissed_triggers = array();
205
- }
206
-
207
- return $dismissed_triggers;
208
- }
209
-
210
- /**
211
- * Returns true if the user has opted to never see this again. Or sets the option.
212
- *
213
- * @param bool $set If set this will mark the user as having opted to never see this again.
214
- *
215
- * @return bool
216
- */
217
- public static function already_did( $set = false ) {
218
- $user_id = get_current_user_id();
219
-
220
- if ( $set ) {
221
- update_user_meta( $user_id, '_ppc_permissions_already_did', true );
222
-
223
- return true;
224
- }
225
-
226
- return (bool) get_user_meta( $user_id, '_ppc_permissions_already_did', true );
227
- }
228
-
229
- /**
230
- * Gets a list of triggers.
231
- *
232
- * @param null $group
233
- * @param null $code
234
- *
235
- * @return bool|mixed|void
236
- */
237
- public static function triggers( $group = null, $code = null ) {
238
- static $triggers;
239
-
240
- if ( ! isset( $triggers ) ) {
241
-
242
- $time_message = __( 'Do you want to control permissions for specific posts and pages?', 'capsman-enhanced' );
243
-
244
- $triggers = apply_filters( 'ppc_permissions_triggers', array(
245
- 'time_installed' => array(
246
- 'triggers' => array(
247
- 'one_week' => array(
248
- 'message' => sprintf( $time_message, __( '1 week', 'capsman-enhanced' ) ),
249
- 'conditions' => array(
250
- strtotime( self::installed_on() . ' +1 week' ) < time(),
251
- ),
252
- 'link' => admin_url( 'plugin-install.php?s=publishpress+permissions+control+access&tab=search&type=term&pp-after-click' ),
253
- 'pri' => 10,
254
- ),
255
- ),
256
- 'pri' => 10,
257
- ),
258
- ) );
259
-
260
- // Sort Groups
261
- uasort( $triggers, array( __CLASS__, 'rsort_by_priority' ) );
262
-
263
- // Sort each groups triggers.
264
- foreach ( $triggers as $k => $v ) {
265
- uasort( $triggers[ $k ]['triggers'], array( __CLASS__, 'rsort_by_priority' ) );
266
- }
267
- }
268
-
269
- if ( isset( $group ) ) {
270
- if ( ! isset( $triggers[ $group ] ) ) {
271
- return false;
272
- }
273
-
274
- if (!isset($code)) {
275
- $return = $triggers[$group];
276
- } elseif (isset($triggers[$group]['triggers'][$code])) {
277
- $return = $triggers[$group]['triggers'][$code];
278
- } else {
279
- $return = false;
280
- }
281
-
282
- return $return;
283
- }
284
-
285
- return $triggers;
286
- }
287
-
288
- /**
289
- * Render admin notices if available.
290
- */
291
- public static function admin_notices() {
292
- if ( self::hide_notices() ) {
293
- return;
294
- }
295
-
296
- $group = self::get_trigger_group();
297
- $code = self::get_trigger_code();
298
- $pri = self::get_current_trigger( 'pri' );
299
- $tigger = self::get_current_trigger();
300
-
301
- // Used to anonymously distinguish unique site+user combinations in terms of effectiveness of each trigger.
302
- $uuid = wp_hash( home_url() . '-' . get_current_user_id() );
303
-
304
- ?>
305
-
306
- <script type="text/javascript">
307
- (function ($) {
308
- var trigger = {
309
- group: '<?php echo $group; ?>',
310
- code: '<?php echo $code; ?>',
311
- pri: '<?php echo $pri; ?>'
312
- };
313
-
314
- function dismiss(reason) {
315
- $.ajax({
316
- method: "POST",
317
- dataType: "json",
318
- url: ajaxurl,
319
- data: {
320
- action: 'ppc_permissions_action',
321
- nonce: '<?php echo wp_create_nonce( 'ppc_permissions_action' ); ?>',
322
- group: trigger.group,
323
- code: trigger.code,
324
- pri: trigger.pri,
325
- reason: reason
326
- }
327
- });
328
-
329
- <?php if ( ! empty( self::$api_url ) ) : ?>
330
- $.ajax({
331
- method: "POST",
332
- dataType: "json",
333
- url: '<?php echo self::$api_url; ?>',
334
- data: {
335
- trigger_group: trigger.group,
336
- trigger_code: trigger.code,
337
- reason: reason,
338
- uuid: '<?php echo $uuid; ?>'
339
- }
340
- });
341
- <?php endif; ?>
342
- }
343
-
344
- $(document)
345
- .on('click', '.ppc-notice .ppc-dismiss', function (event) {
346
- var $this = $(this),
347
- reason = $this.data('reason'),
348
- notice = $this.parents('.ppc-notice');
349
-
350
- notice.fadeTo(100, 0, function () {
351
- notice.slideUp(100, function () {
352
- notice.remove();
353
- });
354
- });
355
-
356
- dismiss(reason);
357
- })
358
- .ready(function () {
359
- setTimeout(function () {
360
- $('.ppc-notice button.notice-dismiss').click(function (event) {
361
- dismiss('maybe_later');
362
- });
363
- }, 1000);
364
- });
365
- }(jQuery));
366
- </script>
367
-
368
- <div class="notice notice-success is-dismissible ppc-notice">
369
-
370
- <p>
371
- <?php echo $tigger['message']; ?>
372
- </p>
373
- <p>
374
- <a class="button button-primary ppc-dismiss" target="_blank" href="<?php echo admin_url( 'plugin-install.php?s=publishpress+permissions+control+access&tab=search&type=term&pp-after-click' ) ?>" data-reason="am_now">
375
- <strong><?php _e( 'Install PublishPress Permissions', 'capsman-enhanced' ); ?></strong>
376
- </a>
377
- </p>
378
-
379
- </div>
380
-
381
- <?php
382
- }
383
-
384
- /**
385
- * Checks if notices should be shown.
386
- *
387
- * @return bool
388
- */
389
- public static function hide_notices() {
390
- $conditions = array(
391
- self::already_did(),
392
- self::last_dismissed() && strtotime( self::last_dismissed() . ' +2 weeks' ) > time(),
393
- empty( self::get_trigger_code() ),
394
- );
395
-
396
- return in_array( true, $conditions );
397
- }
398
-
399
- /**
400
- * Gets the last dismissed date.
401
- *
402
- * @return false|string
403
- */
404
- public static function last_dismissed() {
405
- $user_id = get_current_user_id();
406
-
407
- return get_user_meta( $user_id, '_ppc_permissions_last_dismissed', true );
408
- }
409
-
410
- /**
411
- * Sort array by priority value
412
- *
413
- * @param $a
414
- * @param $b
415
- *
416
- * @return int
417
- */
418
- public static function sort_by_priority( $a, $b ) {
419
- if ( ! isset( $a['pri'] ) || ! isset( $b['pri'] ) || $a['pri'] === $b['pri'] ) {
420
- return 0;
421
- }
422
-
423
- return ( $a['pri'] < $b['pri'] ) ? - 1 : 1;
424
- }
425
-
426
- /**
427
- * Sort array in reverse by priority value
428
- *
429
- * @param $a
430
- * @param $b
431
- *
432
- * @return int
433
- */
434
- public static function rsort_by_priority( $a, $b ) {
435
- if ( ! isset( $a['pri'] ) || ! isset( $b['pri'] ) || $a['pri'] === $b['pri'] ) {
436
- return 0;
437
- }
438
-
439
- return ( $a['pri'] < $b['pri'] ) ? 1 : - 1;
440
- }
441
-
442
- }
443
-
444
- Ppc_Install_Permissions::init();
445
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin-load.php CHANGED
@@ -38,7 +38,7 @@ class PP_Capabilities_Admin_UI {
38
  if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-editor-features', 'pp-capabilities-nav-menus', 'pp-capabilities-settings', 'pp-capabilities-admin-features']))
39
 
40
  || (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
41
- || ( ! empty($_SERVER['SCRIPT_NAME']) && strpos( $_SERVER['SCRIPT_NAME'], 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
42
  || ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
43
  || in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
44
  ) ) {
@@ -58,7 +58,7 @@ class PP_Capabilities_Admin_UI {
58
  global $pagenow;
59
 
60
  if ((($pagenow == 'admin.php') && isset($_GET['page']) && in_array($_GET['page'], ['pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-backup'])) // @todo: CSS for button alignment in Editor Features, Admin Features
61
- || (defined('DOING_AJAX') && DOING_AJAX && !empty($_REQUEST['action']) && (false !== strpos($_REQUEST['action'], 'capability-manager-enhanced')))
62
  ) {
63
  if (!class_exists('\PublishPress\WordPressReviews\ReviewsController')) {
64
  include_once PUBLISHPRESS_CAPS_ABSPATH . '/vendor/publishpress/wordpress-reviews/ReviewsController.php';
@@ -158,7 +158,7 @@ class PP_Capabilities_Admin_UI {
158
  // Check if we are on the user's profile page
159
  wp_enqueue_script(
160
  'pp-capabilities-chosen-js',
161
- plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.jquery.js',
162
  ['jquery'],
163
  CAPSMAN_VERSION
164
  );
@@ -172,7 +172,7 @@ class PP_Capabilities_Admin_UI {
172
 
173
  wp_enqueue_style(
174
  'pp-capabilities-chosen-css',
175
- plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.3/chosen.css',
176
  false,
177
  CAPSMAN_VERSION
178
  );
@@ -183,7 +183,7 @@ class PP_Capabilities_Admin_UI {
183
  CAPSMAN_VERSION
184
  );
185
 
186
- $roles = !empty($_GET['user_id']) ?$this->getUsersRoles($_GET['user_id']) : [];
187
 
188
  if (empty($roles)) {
189
  $roles = (array) get_option('default_role');
@@ -237,11 +237,11 @@ class PP_Capabilities_Admin_UI {
237
  public function action_profile_update($userId, $oldUserData = [])
238
  {
239
  // Check if we need to update the user's roles, allowing to set multiple roles.
240
- if (isset($_POST['pp_roles']) && current_user_can('promote_users')) {
241
  // Remove the user's roles
242
  $user = get_user_by('ID', $userId);
243
 
244
- $newRoles = $_POST['pp_roles'];
245
  $currentRoles = $user->roles;
246
 
247
  if (empty($newRoles) || !is_array($newRoles)) {
38
  if (is_admin() && (isset($_REQUEST['page']) && (in_array($_REQUEST['page'], ['pp-capabilities', 'pp-capabilities-backup', 'pp-capabilities-roles', 'pp-capabilities-admin-menus', 'pp-capabilities-editor-features', 'pp-capabilities-nav-menus', 'pp-capabilities-settings', 'pp-capabilities-admin-features']))
39
 
40
  || (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], ['pp-roles-add-role', 'pp-roles-delete-role', 'pp-roles-hide-role', 'pp-roles-unhide-role']))
41
+ || ( ! empty($_SERVER['SCRIPT_NAME']) && strpos(sanitize_text_field($_SERVER['SCRIPT_NAME']), 'p-admin/plugins.php' ) && ! empty($_REQUEST['action'] ) )
42
  || ( isset($_GET['action']) && 'reset-defaults' == $_GET['action'] )
43
  || in_array( $pagenow, array( 'users.php', 'user-edit.php', 'profile.php', 'user-new.php' ) )
44
  ) ) {
58
  global $pagenow;
59
 
60
  if ((($pagenow == 'admin.php') && isset($_GET['page']) && in_array($_GET['page'], ['pp-capabilities', 'pp-capabilities-roles', 'pp-capabilities-backup'])) // @todo: CSS for button alignment in Editor Features, Admin Features
61
+ || (defined('DOING_AJAX') && DOING_AJAX && !empty($_REQUEST['action']) && (false !== strpos(sanitize_key($_REQUEST['action']), 'capability-manager-enhanced')))
62
  ) {
63
  if (!class_exists('\PublishPress\WordPressReviews\ReviewsController')) {
64
  include_once PUBLISHPRESS_CAPS_ABSPATH . '/vendor/publishpress/wordpress-reviews/ReviewsController.php';
158
  // Check if we are on the user's profile page
159
  wp_enqueue_script(
160
  'pp-capabilities-chosen-js',
161
+ plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.7/chosen.jquery.js',
162
  ['jquery'],
163
  CAPSMAN_VERSION
164
  );
172
 
173
  wp_enqueue_style(
174
  'pp-capabilities-chosen-css',
175
+ plugin_dir_url(CME_FILE) . 'common/libs/chosen-v1.8.7/chosen.css',
176
  false,
177
  CAPSMAN_VERSION
178
  );
183
  CAPSMAN_VERSION
184
  );
185
 
186
+ $roles = !empty($_GET['user_id']) ? $this->getUsersRoles((int) $_GET['user_id']) : [];
187
 
188
  if (empty($roles)) {
189
  $roles = (array) get_option('default_role');
237
  public function action_profile_update($userId, $oldUserData = [])
238
  {
239
  // Check if we need to update the user's roles, allowing to set multiple roles.
240
+ if (!empty($_REQUEST['_wpnonce']) && wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), 'update-user_' . $userId) && isset($_POST['pp_roles']) && current_user_can('promote_users')) {
241
  // Remove the user's roles
242
  $user = get_user_by('ID', $userId);
243
 
244
+ $newRoles = array_map('sanitize_key', $_POST['pp_roles']);
245
  $currentRoles = $user->roles;
246
 
247
  if (empty($newRoles) || !is_array($newRoles)) {
includes/admin.php CHANGED
@@ -54,21 +54,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
54
  }
55
  ?>
56
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper">
57
- <?php /*if( defined('PRESSPERMIT_ACTIVE') ) :
58
- pp_icon();
59
- $style = 'style="height:60px;"';
60
- */
61
- ?>
62
- <?php /* else: */
63
- $style = '';
64
- ?>
65
  <div id="icon-capsman-admin" class="icon32"></div>
66
- <?php /* endif; */ ?>
67
 
68
- <h1 <?php echo $style;?>><?php _e('Role Capabilities', 'capsman-enhanced') ?></h1>
69
 
70
  <?php
71
- echo pp_capabilities_roles()->notify->display();
72
  ?>
73
 
74
  <script type="text/javascript">
@@ -77,28 +68,30 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
77
  $('#publishpress_caps_form').attr('action', 'admin.php?page=pp-capabilities&role=' + $('select[name="role"]').val());
78
 
79
  $('select[name="role"]').change(function(){
80
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities&role='); ?>' + $(this).val() + '';
81
  });
82
  });
83
  /* ]]> */
84
  </script>
85
 
86
- <form id="publishpress_caps_form" method="post" action="admin.php?page=<?php echo $this->ID ?>">
87
  <?php wp_nonce_field('capsman-general-manager'); ?>
88
 
89
  <?php
90
- $tab = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
91
  ?>
92
 
93
- <input type="hidden" name="pp_caps_tab" value="<?php echo $tab;?>" />
94
 
95
  <p>
96
  <select name="role">
97
  <?php
98
- foreach ( $roles as $role => $name ) {
99
- if (pp_capabilities_is_editable_role($role)) {
 
 
100
  $name = translate_user_role($name);
101
- echo '<option value="' . $role .'"'; selected($default, $role); echo '> ' . $name . ' &nbsp;</option>';
102
  }
103
  }
104
  ?>
@@ -111,28 +104,38 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
111
  <td class="content">
112
 
113
  <div style="float:right">
114
- <input type="submit" name="SaveRole" value="<?php echo (in_array(get_locale(), ['en_EN', 'en_US'])) ? 'Save Capabilities' : _e('Save Changes', 'capsman-enhanced'); ?>" class="button-primary" />
 
 
 
 
115
  </div>
116
 
117
  <?php
118
- global $capsman;
119
  $img_url = $capsman->mod_url . '/images/';
120
  ?>
121
  <div class="publishpress-headline" style="margin-bottom:20px;">
122
  <span class="cme-subtext">
123
  <?php
124
- $msg = __( '<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation.', 'capsman-enhanced' );
125
 
126
  if (defined('PRESSPERMIT_ACTIVE') && function_exists('presspermit')) {
127
  if ($group = presspermit()->groups()->getMetagroup('wp_role', $this->current)) {
128
- $msg = sprintf(
129
- __('<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s.', 'capsman-enhanced'),
130
- '<a href="' . admin_url("admin.php?page=presspermit-edit-permissions&action=edit&agent_id={$group->ID}") . '">',
 
 
 
 
 
131
  '</a>'
132
  );
133
  }
 
 
 
134
  }
135
- echo $msg;
136
  ?>
137
  </span>
138
  </div>
@@ -178,13 +181,6 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
178
 
179
  $enabled_taxonomies = cme_get_assisted_taxonomies();
180
 
181
- /*
182
- if ( ( count($custom_types) || count($custom_tax) ) && ( $is_administrator || current_user_can( 'manage_pp_settings' ) ) ) {
183
- $cap_properties[''] = array();
184
- $force_distinct_ui = true;
185
- }
186
- */
187
-
188
  $cap_properties['edit']['type'] = array( 'edit_posts' );
189
 
190
  foreach( $defined['type'] as $type_obj ) {
@@ -225,16 +221,16 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
225
  );
226
 
227
  $cap_tips = array(
228
- 'read_private' => __( 'can read posts which are currently published with private visibility', 'capsman-enhanced' ),
229
- 'edit' => __( 'has basic editing capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
230
- 'edit_others' => __( 'can edit posts which were created by other users', 'capsman-enhanced' ),
231
- 'edit_published' => __( 'can edit posts which are currently published', 'capsman-enhanced' ),
232
- 'edit_private' => __( 'can edit posts which are currently published with private visibility', 'capsman-enhanced' ),
233
- 'publish' => __( 'can make a post publicly visible', 'capsman-enhanced' ),
234
- 'delete' => __( 'has basic deletion capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
235
- 'delete_others' => __( 'can delete posts which were created by other users', 'capsman-enhanced' ),
236
- 'delete_published' => __( 'can delete posts which are currently published', 'capsman-enhanced' ),
237
- 'delete_private' => __( 'can delete posts which are currently published with private visibility', 'capsman-enhanced' ),
238
  );
239
 
240
  $default_caps = array( 'read_private_posts', 'edit_posts', 'edit_others_posts', 'edit_published_posts', 'edit_private_posts', 'publish_posts', 'delete_posts', 'delete_others_posts', 'delete_published_posts', 'delete_private_posts',
@@ -255,16 +251,15 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
255
  jQuery(document).ready( function($) {
256
  // Tabs and Content display
257
  $('.ppc-capabilities-tabs > ul > li').click( function() {
258
- var $tab = $(this).attr('data-content');
259
- //console.log( $tab );
260
 
261
  $("[name='pp_caps_tab']").val($(this).attr('data-slug'));
262
 
263
  // Show current Content
264
  $('.ppc-capabilities-content > div').hide();
265
- $('#' + $tab).show();
266
 
267
- $('#' + $tab + '-taxonomy').show();
268
 
269
  // Active current Tab
270
  $('.ppc-capabilities-tabs > ul > li').removeClass('ppc-capabilities-tab-active');
@@ -281,25 +276,27 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
281
  $active_tab_slug = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
282
  $active_tab_id = "cme-cap-type-tables-{$active_tab_slug}";
283
 
284
- $ppc_tab_active = ' class="ppc-capabilities-tab-active"';
285
 
286
  // caps: edit, delete, read
287
  foreach( array_keys($cap_properties) as $cap_type ) {
288
  $tab_id = "cme-cap-type-tables-$cap_type";
289
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
290
 
291
- echo '<li data-slug="'. $cap_type . '"' . ' data-content="cme-cap-type-tables-' . $cap_type . '"' . $tab_active . '>'
292
- . $cap_type_names[$cap_type] .
293
  '</li>';
294
  }
295
 
296
  if ($extra_tabs = apply_filters('pp_capabilities_extra_post_capability_tabs', [])) {
297
  foreach($extra_tabs as $tab_slug => $tab_caption) {
 
 
298
  $tab_id = "cme-cap-type-tables-{$tab_slug}";
299
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
300
 
301
- echo '<li data-slug="' . $tab_slug . '"' . ' data-content="' . $tab_id . '"' . $tab_active . '>'
302
- . $tab_caption .
303
  '</li>';
304
  }
305
  }
@@ -307,9 +304,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
307
  // caps: other
308
  $tab_id = "cme-cap-type-tables-other";
309
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
310
- $tab_caption = __( 'WordPress Core', 'capsman-enhanced' );
311
 
312
- echo '<li data-slug="other" data-content="' . $tab_id . '"' . $tab_active . '>' . $tab_caption . '</li>';
313
 
314
  // caps: plugins
315
  $plugin_caps = [];
@@ -467,27 +464,27 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
467
  );
468
  }
469
  $plugin_caps = apply_filters('cme_plugin_capabilities', $plugin_caps);
470
- foreach($plugin_caps as $plugin => $__plugin_caps) {
471
- $_plugin_caps = array_fill_keys($__plugin_caps, true);
472
 
473
- $tab_slug = str_replace(' ', '-', strtolower($plugin));
474
  $tab_id = 'cme-cap-type-tables-' . $tab_slug;
475
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
476
 
477
- echo '<li data-slug="' . $tab_slug . '" data-content="' . $tab_id .'"' . $tab_active . '>'
478
- . str_replace('_', ' ', $plugin ) .
479
  '</li>';
480
  }
481
 
482
  $tab_id = "cme-cap-type-tables-invalid";
483
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
484
- $tab_caption = __( 'Invalid Capabilities', 'capsman-enhanced' );
485
- echo '<li id="cme_tab_invalid_caps" data-slug="invalid" data-content="cme-cap-type-tables-' . $tab_id . '"' . $tab_active . ' style="display:none;">' . $tab_caption . '</li>';
486
 
487
  $tab_id = "cme-cap-type-tables-additional";
488
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
489
- $tab_caption = __( 'Additional', 'capsman-enhanced' );
490
- echo '<li data-slug="additional" data-content="' . $tab_id . '"' . $tab_active . '>' . $tab_caption . '</li>';
491
  ?>
492
  </ul>
493
  </div>
@@ -517,32 +514,32 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
517
  if ( ! count( $cap_properties[$cap_type][$item_type] ) )
518
  continue;
519
 
520
- $id = "cme-cap-type-tables-$cap_type";
521
- $div_display = ($id == $active_tab_id) ? 'block' : 'none';
522
 
523
  $any_caps = false;
524
 
525
  if ($item_type == 'taxonomy') {
526
- $id .= '-taxonomy';
527
 
528
  ob_start();
529
  }
530
 
531
- echo "<div id='$id' style='display:$div_display;'>";
532
 
533
- $caption_pattern = ('taxonomy' == $item_type) ? __('Term %s Capabilities', 'capability-manager-enhanced') : __('Post %s Capabilities', 'capability-manager-enhanced');
534
 
535
- echo '<h3>' . sprintf($caption_pattern, $cap_type_names[$cap_type]) . '</h3>';
536
 
537
  echo '<div class="ppc-filter-wrapper">';
538
  echo '<select class="ppc-filter-select">';
539
  $filter_caption = ('taxonomy' == $item_type) ? __('Filter by taxonomy', 'capability-manager-enhanced') : __('Filter by post type', 'capability-manager-enhanced');
540
- echo '<option value="">' . $filter_caption . '</option>';
541
  echo '</select>';
542
- echo ' <button class="button secondary-button ppc-filter-select-reset" type="button">' . __('Clear', 'capability-manager-enhanced') . '</button>';
543
  echo '</div>';
544
 
545
- echo "<table class='widefat fixed striped cme-typecaps cme-typecaps-$cap_type'>";
546
 
547
  echo '<thead><tr><th></th>';
548
 
@@ -551,13 +548,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
551
  $prop = str_replace( '_posts', '', $prop );
552
  $prop = str_replace( '_pages', '', $prop );
553
  $prop = str_replace( '_terms', '', $prop );
554
- $tip = ( isset( $cap_tips[$prop] ) ) ? "title='{$cap_tips[$prop]}'" : '';
555
- $prop = str_replace( '_', '<br />', $prop );
556
- $th_class = ( 'taxonomy' == $item_type ) ? ' class="term-cap"' : ' class="post-cap"';
557
- echo "<th style='text-align:center;' $tip{$th_class}>";
558
 
559
  if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
560
- echo ucwords($prop);
561
  }
562
 
563
  echo '</th>';
@@ -569,7 +565,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
569
  if ( in_array( $key, $unfiltered[$item_type] ) )
570
  continue;
571
 
572
- $row = "<tr class='cme_type_{$key}'>";
573
 
574
  if ( $cap_type ) {
575
  if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
@@ -577,7 +573,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
577
 
578
  $type_label = (defined('CME_LEGACY_MENU_NAME_LABEL') && !empty($type_obj->labels->menu_name)) ? $type_obj->labels->menu_name : $type_obj->labels->name;
579
 
580
- $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . $type_label . '</a>';
581
  $row .= '<a href="#" class="neg-type-caps">&nbsp;x&nbsp;</a>';
582
  $row .= '</td>';
583
 
@@ -587,7 +583,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
587
  foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
588
  $td_classes = array();
589
  $checkbox = '';
590
- $title = '';
591
 
592
  if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
593
  || ! in_array( $type_obj->cap->$prop, $default_caps )
@@ -620,7 +616,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
620
  continue;
621
  }
622
 
623
- $cap_name = $type_obj->cap->$prop;
624
 
625
  if ( 'taxonomy' == $item_type )
626
  $td_classes []= "term-cap";
@@ -632,23 +628,19 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
632
 
633
  if ( $is_administrator || current_user_can($cap_name) ) {
634
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
635
- $title = ' title="' . sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name ) . '"';
636
  } else {
637
- $title = ' title="' . $cap_name . '"';
638
  }
639
 
640
- $disabled = '';
641
- $checked = checked(1, ! empty($rcaps[$cap_name]), false );
642
-
643
- $checkbox = '<input type="checkbox"' . $title . ' name="caps[' . $cap_name . ']" autocomplete="off" value="1" ' . $checked . $disabled . ' />';
644
 
645
  $type_caps [$cap_name] = true;
646
  $display_row = true;
647
  $any_caps = true;
648
  }
649
  } else {
650
- //$td_classes []= "cap-unreg";
651
- $title = 'title="' . sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) ) . '"';
652
  }
653
 
654
  if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
@@ -658,12 +650,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
658
  $td_classes []= "cap-unreg";
659
  }
660
 
661
- $td_class = ( $td_classes ) ? 'class="' . implode(' ', $td_classes) . '"' : '';
662
 
663
- $row .= "<td $td_class $title><span class='cap-x'>X</span>$checkbox";
664
 
665
  if ( false !== strpos( $td_class, 'cap-neg' ) )
666
- $row .= '<input type="hidden" class="cme-negation-input" name="caps[' . $cap_name . ']" value="" />';
667
 
668
  $row .= "</td>";
669
 
@@ -691,6 +683,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
691
 
692
  if ( $display_row ) {
693
  $row .= '</tr>';
 
 
694
  echo $row;
695
  }
696
  }
@@ -720,19 +714,19 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
720
  // clicking on post type name toggles corresponding checkbox selections
721
  // caps: other
722
 
723
- $id = "cme-cap-type-tables-other";
724
- $div_display = ($id == $active_tab_id) ? 'block' : 'none';
725
  ?>
726
- <div id="<?php echo $id;?>" style="display:<?php echo $div_display;?>">
727
  <?php
728
 
729
- echo '<h3>' . __( 'WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
730
 
731
  echo '<div class="ppc-filter-wrapper">';
732
- echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . __('Filter by capability', 'capability-manager-enhanced') . '">';
733
- echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . __('Clear', 'capability-manager-enhanced') . '</button>';
734
  echo '</div>';
735
- echo '<div class="ppc-filter-no-results" style="display:none;">' . __( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
736
 
737
  echo '<table class="widefat fixed striped form-table cme-checklist">';
738
 
@@ -742,17 +736,19 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
742
 
743
  $core_caps = _cme_core_caps();
744
  foreach( array_keys($core_caps) as $cap_name ) {
 
 
745
  if ( ! $is_administrator && ! current_user_can($cap_name) )
746
  continue;
747
 
748
  // Output first <tr>
749
  if ( $centinel_ == true ) {
750
- echo '<tr class="' . esc_html($cap_name) . '">';
751
  $centinel_ = false;
752
  }
753
 
754
  if ( $i == $checks_per_row ) {
755
- echo '</tr><tr class="' . esc_html($cap_name) . '">';
756
  $i = 0;
757
  }
758
 
@@ -771,7 +767,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
771
  $disabled = '';
772
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
773
  $lock_capability = false;
774
- $title = $title_text;
775
 
776
  if ( 'read' == $cap_name ) {
777
  if ( ! empty( $block_read_removal ) ) {
@@ -780,9 +776,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
780
  if ( apply_filters( 'pp_caps_lock_capability', true, 'read', $default ) ) {
781
  $lock_capability = true;
782
  $class .= ' cap-locked';
783
- $disabled = 'disabled="disabled"';
784
  if ( 'administrator' != $this->current ) {
785
- $title = esc_attr( __('Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add "dashboard_lockout_ok" capability', 'capsman-enhanced' ) );
786
  }
787
  }
788
  }
@@ -790,21 +786,21 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
790
  }
791
 
792
  ?>
793
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
794
  <span>
795
  <?php
796
- echo str_replace( '_', ' ', $cap_name );
797
  ?>
798
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
799
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
800
- <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
801
  <?php endif; ?>
802
  </td>
803
 
804
  <?php
805
 
806
  if ( $lock_capability ) {
807
- echo '<input type="hidden" name="caps[' . $cap_name . ']" value="1" />';
808
  }
809
 
810
  ++$i;
@@ -823,9 +819,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
823
  ?>
824
 
825
  <tr class="cme-bulk-select">
826
- <td colspan="<?php echo $checks_per_row;?>">
827
  <span style="float:right">
828
- <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
829
  </span>
830
  </td></tr>
831
 
@@ -836,33 +832,26 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
836
  $all_capabilities = apply_filters( 'capsman_get_capabilities', array_keys( $this->capabilities ), $this->ID );
837
  $all_capabilities = apply_filters( 'members_get_capabilities', $all_capabilities );
838
 
839
- /*
840
- $publishpress_status_change_caps = array();
841
- foreach( $all_capabilities as $cap_name ) {
842
- if (0 === strpos($cap_name, 'status_change_')) {
843
- $publishpress_status_change_caps []= $cap_name;
844
- }
845
- }
846
- */
847
-
848
  // caps: plugins
849
  $plugin_caps = apply_filters('cme_plugin_capabilities', $plugin_caps);
850
 
851
- foreach($plugin_caps as $plugin => $__plugin_caps) {
 
 
852
  $_plugin_caps = array_fill_keys($__plugin_caps, true);
853
 
854
- $id = 'cme-cap-type-tables-' . str_replace( ' ', '-', strtolower($plugin));
855
- $div_display = ($id == $active_tab_id) ? 'block' : 'none';
856
 
857
- echo '<div id="' . $id . '" style="display:' . $div_display . '">';
858
 
859
- echo '<h3 class="cme-cap-section">' . sprintf(__( 'Plugin Capabilities &ndash; %s', 'capsman-enhanced' ), str_replace('_', ' ', $plugin )) . '</h3>';
860
 
861
  echo '<div class="ppc-filter-wrapper">';
862
- echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . __('Filter by capability', 'capability-manager-enhanced') . '">';
863
- echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . __('Clear', 'capability-manager-enhanced') . '</button>';
864
  echo '</div>';
865
- echo '<div class="ppc-filter-no-results" style="display:none;">' . __( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
866
 
867
  echo '<table class="widefat fixed striped form-table cme-checklist">';
868
 
@@ -871,6 +860,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
871
  $i = 0; $first_row = true;
872
 
873
  foreach( array_keys($_plugin_caps) as $cap_name ) {
 
 
874
  if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) || isset($type_metacaps[$cap_name]) ) {
875
  continue;
876
  }
@@ -880,12 +871,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
880
 
881
  // Output first <tr>
882
  if ( $centinel_ == true ) {
883
- echo '<tr class="' . esc_html($cap_name) . '">';
884
  $centinel_ = false;
885
  }
886
 
887
  if ( $i == $checks_per_row ) {
888
- echo '</tr><tr class="' . esc_html($cap_name) . '">';
889
  $i = 0;
890
  }
891
 
@@ -903,16 +894,16 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
903
 
904
  $disabled = '';
905
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
906
- $title = $title_text;
907
  ?>
908
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
909
  <span>
910
  <?php
911
- echo str_replace( '_', ' ', $cap_name );
912
  ?>
913
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
914
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
915
- <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
916
  <?php endif; ?>
917
  </td>
918
 
@@ -933,9 +924,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
933
  ?>
934
 
935
  <tr class="cme-bulk-select">
936
- <td colspan="<?php echo $checks_per_row;?>">
937
  <span style="float:right">
938
- <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
939
  </span>
940
  </td></tr>
941
 
@@ -946,11 +937,11 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
946
 
947
  // caps: invalid
948
  if (array_intersect(array_keys(array_filter($type_metacaps)), $all_capabilities) && array_intersect_key($type_metacaps, array_filter($rcaps))) {
949
- $id = "cme-cap-type-tables-invalid";
950
- $div_display = ($id == $active_tab_id) ? 'block' : 'none';
951
 
952
- echo '<div id="' . $id . '" style="display:' . $div_display . '">';
953
- echo '<h3 class="cme-cap-section">' . __( 'Invalid Capabilities', 'capsman-enhanced' ) . '</h3>';
954
  ?>
955
 
956
  <script type="text/javascript">
@@ -963,7 +954,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
963
 
964
  <div>
965
  <span class="cme-subtext">
966
- <?php _e('The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above.', 'capsman-enhanced');?>
967
  </span>
968
  </div>
969
 
@@ -980,6 +971,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
980
  uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
981
 
982
  foreach ( $this->capabilities as $cap_name => $cap ) :
 
 
983
  if (!isset($type_metacaps[$cap_name]) || empty($rcaps[$cap_name])) {
984
  continue;
985
  }
@@ -1003,14 +996,14 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1003
  $disabled = '';
1004
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
1005
  ?>
1006
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
1007
  <span>
1008
  <?php
1009
- echo str_replace( '_', ' ', $cap );
1010
  ?>
1011
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
1012
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
1013
- <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
1014
  <?php endif; ?>
1015
  </td>
1016
  <?php
@@ -1040,19 +1033,19 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1040
  <?php
1041
  } // endif any invalid caps
1042
 
1043
- $id = "cme-cap-type-tables-additional";
1044
- $div_display = ($id == $active_tab_id) ? 'block' : 'none';
1045
  ?>
1046
- <div id="<?php echo $id;?>" style="display:<?php echo $div_display;?>">
1047
  <?php
1048
  // caps: additional
1049
- echo '<h3 class="cme-cap-section">' . __( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
1050
 
1051
  echo '<div class="ppc-filter-wrapper">';
1052
- echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . __('Filter by capability', 'capability-manager-enhanced') . '">';
1053
- echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . __('Clear', 'capability-manager-enhanced') . '</button>';
1054
  echo '</div>';
1055
- echo '<div class="ppc-filter-no-results" style="display:none;">' . __( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
1056
  ?>
1057
  <table class="widefat fixed striped form-table cme-checklist">
1058
  <?php
@@ -1069,6 +1062,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1069
  $additional_caps = apply_filters('publishpress_caps_manage_additional_caps', $this->capabilities);
1070
 
1071
  foreach ($additional_caps as $cap_name => $cap) :
 
 
1072
 
1073
  if ((isset($type_caps[$cap_name]) && !isset($type_metacaps[$cap_name]))
1074
  || isset($core_caps[$cap_name])
@@ -1077,8 +1072,8 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1077
  }
1078
 
1079
  if (!isset($type_metacaps[$cap_name]) || !empty($rcaps[$cap_name])) {
1080
- foreach(array_keys($plugin_caps) as $plugin) {
1081
- if ( in_array( $cap_name, $plugin_caps[$plugin]) ) {
1082
  continue 2;
1083
  }
1084
  }
@@ -1095,12 +1090,12 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1095
 
1096
  // Output first <tr>
1097
  if ( $centinel_ == true ) {
1098
- echo '<tr class="' . esc_html($cap_name) . '">';
1099
  $centinel_ = false;
1100
  }
1101
 
1102
  if ( $i == $checks_per_row ) {
1103
- echo '</tr><tr class="' . esc_html($cap_name) . '">';
1104
  $i = 0; $first_row = false;
1105
  }
1106
 
@@ -1111,7 +1106,7 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1111
 
1112
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
1113
  $class .= ' cap-metagroup';
1114
- $title_text = sprintf( __( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
1115
  } else {
1116
  $title_text = $cap_name;
1117
  }
@@ -1125,18 +1120,18 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1125
  } elseif ( 'administrator' == $default ) {
1126
  $class .= ' cap-locked';
1127
  $lock_manage_caps_capability = true;
1128
- $disabled = 'disabled="disabled"';
1129
  }
1130
  }
1131
  ?>
1132
- <td class="<?php echo $class; ?>"><span class="cap-x">X</span><label title="<?php echo $title_text;?>"><input type="checkbox" name="caps[<?php echo $cap_name; ?>]" autocomplete="off" value="1" <?php echo $checked . $disabled;?> />
1133
  <span>
1134
  <?php
1135
- echo str_replace( '_', ' ', $cap );
1136
  ?>
1137
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
1138
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
1139
- <input type="hidden" class="cme-negation-input" name="caps[<?php echo $cap_name; ?>]" value="" />
1140
  <?php endif; ?>
1141
  </td>
1142
  <?php
@@ -1162,9 +1157,9 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1162
  ?>
1163
 
1164
  <tr class="cme-bulk-select">
1165
- <td colspan="<?php echo $checks_per_row;?>">
1166
  <span style="float:right">
1167
- <input type="checkbox" class="cme-check-all" title="<?php _e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php _e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php _e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
1168
  </span>
1169
  </td></tr>
1170
 
@@ -1191,66 +1186,66 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1191
 
1192
  <?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
1193
 
1194
- <div id="pp_features" style="display:none"><div class="pp-logo"><a href="https://publishpress.com/presspermit/"><img src="<?php echo $img_url;?>pp-logo.png" alt="<?php _e('PublishPress Permissions', 'capsman-enhanced');?>" /></a></div><div class="features-wrap"><ul class="pp-features">
1195
  <li>
1196
- <?php _e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
1197
- <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1198
 
1199
  <li>
1200
- <?php _e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
1201
- <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1202
 
1203
  <li>
1204
- <?php _e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
1205
  </li>
1206
 
1207
  <li>
1208
- <?php _e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
1209
- <a href="https://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1210
 
1211
  <li>
1212
- <?php _e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
1213
- <a href="https://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1214
 
1215
  <li>
1216
- <?php _e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
1217
- <a href="https://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1218
 
1219
  <li>
1220
- <?php _e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
1221
- <a href="https://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1222
 
1223
  <li>
1224
- <?php _e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
1225
- <a href="https://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1226
 
1227
  <li>
1228
- <?php _e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
1229
- <a href="https://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1230
 
1231
  <li>
1232
- <?php _e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
1233
  </li>
1234
 
1235
  <li>
1236
- <?php _e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
1237
- <a href="https://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" alt="*" src="<?php echo $img_url;?>play.png" /></a></li>
1238
 
1239
  <li>
1240
- <?php _e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
1241
  </li>
1242
 
1243
  <li>
1244
- <?php _e( "Member support forum", 'capsman-enhanced' );?>
1245
  </li>
1246
 
1247
  </ul></div>
1248
 
1249
  <?php
1250
  echo '<div>';
1251
- 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'), 'Permissions Pro' ) . '">Permissions Pro</a></span>' );
1252
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
1253
- printf( __('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="https://publishpress.com/presspermit/" target="_blank" title="' . sprintf( __('%s info/purchase', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions&nbsp;Pro</a>' );
1254
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
1255
  echo '<a href="#pp-hide">hide</a>';
1256
  echo '</div></div>';
@@ -1282,11 +1277,11 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1282
  <?php
1283
  $level = ak_caps2level($rcaps);
1284
  ?>
1285
- <span title="<?php _e('Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities.', 'capsman-enhanced');?>">
1286
 
1287
- <?php (in_array(get_locale(), ['en_EN', 'en_US'])) ? printf('Role Level:') : _e('Level:', 'capsman-enhanced');?> <select name="level">
1288
  <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
1289
- <option value="<?php echo $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo $l; ?>&nbsp;</option>
1290
  <?php }
1291
  ?>
1292
  </select>
@@ -1301,11 +1296,15 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1301
 
1302
  <p class="submit" style="padding-top:0;">
1303
  <input type="hidden" name="action" value="update" />
1304
- <input type="hidden" name="current" value="<?php echo $default; ?>" />
1305
- <input type="submit" name="SaveRole" value="<?php echo (in_array(get_locale(), ['en_EN', 'en_US'])) ? 'Save Capabilities' : _e('Save Changes', 'capsman-enhanced');?>" class="button-primary" /> &nbsp;
 
 
 
 
1306
 
1307
  <?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
1308
- <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}&amp;action=delete&amp;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>
1309
  <?php endif; ?>
1310
  </p>
1311
 
@@ -1314,10 +1313,10 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1314
  <?php do_action('publishpress-caps_sidebar_top');?>
1315
 
1316
  <dl>
1317
- <dt><?php _e('Add Capability', 'capsman-enhanced'); ?></dt>
1318
  <dd style="text-align:center;">
1319
  <p><input type="text" name="capability-name" class="regular-text" placeholder="<?php echo 'capability_name';?>" /><br />
1320
- <input type="submit" name="AddCap" value="<?php _e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
1321
  </dd>
1322
  </dl>
1323
 
@@ -1329,28 +1328,28 @@ if( defined('PRESSPERMIT_ACTIVE') ) {
1329
  ?>
1330
 
1331
  <dl>
1332
- <dt><?php (!in_array(get_locale(), ['en_EN', 'en_US'])) ? _e('Copy this role to', 'capsman-enhanced') : printf('Copy %s Role', translate_user_role($roles[$default])); ?></dt>
1333
  <dd style="text-align:center;">
1334
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
1335
- <p><input type="text" name="copy-name" class="<?php echo $class;?>" placeholder="<?php _e('Role Name', 'capsman-enhanced') ?>" />
1336
 
1337
  <?php if( $support_pp_only_roles ) : ?>
1338
- <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" autocomplete="off" value="1"> <?php _e('hidden', 'capsman-enhanced'); ?> </label>
1339
  <?php endif; ?>
1340
 
1341
  <br />
1342
- <input type="submit" name="CopyRole" value="<?php _e('Copy', 'capsman-enhanced') ?>" class="button" />
1343
  </p>
1344
  </dd>
1345
  </dl>
1346
 
1347
  <dl>
1348
- <dt><?php _e('Rename Role', 'capsman-enhanced'); ?></dt>
1349
  <dd style="text-align:center;">
1350
- <p><input type="text" name="rename-name" class="regular-text" placeholder="<?php _e('New Role Name', 'capsman-enhanced') ?>" />
1351
 
1352
  <br />
1353
- <input type="submit" name="RenameRole" value="<?php _e('Rename', 'capsman-enhanced') ?>" class="button" />
1354
  </p>
1355
  </dd>
1356
  </dl>
@@ -1379,13 +1378,13 @@ function cme_network_role_ui( $default ) {
1379
  $autocreate_roles = array();
1380
  ?>
1381
  <div style="margin-bottom: 5px">
1382
- <label for="cme_autocreate_role" title="<?php _e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo checked(in_array($default, $autocreate_roles));?>> <?php _e('include in new sites', 'capsman-enhanced'); ?> </label>
1383
  </div>
1384
  <div>
1385
- <label for="cme_net_sync_role" title="<?php echo esc_attr(__('Copy / update this role definition to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php _e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
1386
  </div>
1387
  <div>
1388
- <label for="cme_net_sync_options" title="<?php echo esc_attr(__('Copy option settings to all sites now', 'capsman-enhanced'));?>"><input type="checkbox" name="cme_net_sync_options" id="cme_net_sync_options" autocomplete="off" value="1"> <?php _e('sync options to all sites now', 'capsman-enhanced'); ?> </label>
1389
  </div>
1390
  </div>
1391
  <?php
54
  }
55
  ?>
56
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper">
 
 
 
 
 
 
 
 
57
  <div id="icon-capsman-admin" class="icon32"></div>
 
58
 
59
+ <h1><?php esc_html_e('Role Capabilities', 'capsman-enhanced') ?></h1>
60
 
61
  <?php
62
+ pp_capabilities_roles()->notify->display();
63
  ?>
64
 
65
  <script type="text/javascript">
68
  $('#publishpress_caps_form').attr('action', 'admin.php?page=pp-capabilities&role=' + $('select[name="role"]').val());
69
 
70
  $('select[name="role"]').change(function(){
71
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities&role=')); ?>' + $(this).val() + '';
72
  });
73
  });
74
  /* ]]> */
75
  </script>
76
 
77
+ <form id="publishpress_caps_form" method="post" action="admin.php?page=<?php echo esc_attr($this->ID);?>">
78
  <?php wp_nonce_field('capsman-general-manager'); ?>
79
 
80
  <?php
81
+ $pp_tab = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
82
  ?>
83
 
84
+ <input type="hidden" name="pp_caps_tab" value="<?php echo esc_attr($pp_tab);?>" />
85
 
86
  <p>
87
  <select name="role">
88
  <?php
89
+ foreach ( $roles as $role_name => $name ) {
90
+ $role_name = sanitize_key($role_name);
91
+
92
+ if (pp_capabilities_is_editable_role($role_name)) {
93
  $name = translate_user_role($name);
94
+ echo '<option value="' . esc_attr($role_name) .'"'; selected($default, $role_name); echo '> ' . esc_html($name) . ' &nbsp;</option>';
95
  }
96
  }
97
  ?>
104
  <td class="content">
105
 
106
  <div style="float:right">
107
+
108
+ <?php
109
+ $caption = (in_array(sanitize_key(get_locale()), ['en_EN', 'en_US'])) ? 'Save Capabilities' : __('Save Changes', 'capsman-enhanced');
110
+ ?>
111
+ <input type="submit" name="SaveRole" value="<?php echo esc_attr($caption);?>" class="button-primary" />
112
  </div>
113
 
114
  <?php
 
115
  $img_url = $capsman->mod_url . '/images/';
116
  ?>
117
  <div class="publishpress-headline" style="margin-bottom:20px;">
118
  <span class="cme-subtext">
119
  <?php
 
120
 
121
  if (defined('PRESSPERMIT_ACTIVE') && function_exists('presspermit')) {
122
  if ($group = presspermit()->groups()->getMetagroup('wp_role', $this->current)) {
123
+ printf(
124
+ // back compat with existing language string
125
+ str_replace(
126
+ ['&lt;strong&gt;', '&lt;/strong&gt;'],
127
+ ['<strong>', '</strong>'],
128
+ esc_html__('<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation. You can also configure this role as a %sPermission Group%s.', 'capsman-enhanced')
129
+ ),
130
+ '<a href="' . esc_url_raw(admin_url("admin.php?page=presspermit-edit-permissions&action=edit&agent_id={$group->ID}")) . '">',
131
  '</a>'
132
  );
133
  }
134
+ } else {
135
+ // unescaped for now for back compat with existing language string
136
+ _e( '<strong>Note:</strong> Capability changes <strong>remain in the database</strong> after plugin deactivation.', 'capsman-enhanced' );
137
  }
138
+
139
  ?>
140
  </span>
141
  </div>
181
 
182
  $enabled_taxonomies = cme_get_assisted_taxonomies();
183
 
 
 
 
 
 
 
 
184
  $cap_properties['edit']['type'] = array( 'edit_posts' );
185
 
186
  foreach( $defined['type'] as $type_obj ) {
221
  );
222
 
223
  $cap_tips = array(
224
+ 'read_private' => esc_attr__( 'can read posts which are currently published with private visibility', 'capsman-enhanced' ),
225
+ 'edit' => esc_attr__( 'has basic editing capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
226
+ 'edit_others' => esc_attr__( 'can edit posts which were created by other users', 'capsman-enhanced' ),
227
+ 'edit_published' => esc_attr__( 'can edit posts which are currently published', 'capsman-enhanced' ),
228
+ 'edit_private' => esc_attr__( 'can edit posts which are currently published with private visibility', 'capsman-enhanced' ),
229
+ 'publish' => esc_attr__( 'can make a post publicly visible', 'capsman-enhanced' ),
230
+ 'delete' => esc_attr__( 'has basic deletion capability (but may need other capabilities based on post status and ownership)', 'capsman-enhanced' ),
231
+ 'delete_others' => esc_attr__( 'can delete posts which were created by other users', 'capsman-enhanced' ),
232
+ 'delete_published' => esc_attr__( 'can delete posts which are currently published', 'capsman-enhanced' ),
233
+ 'delete_private' => esc_attr__( 'can delete posts which are currently published with private visibility', 'capsman-enhanced' ),
234
  );
235
 
236
  $default_caps = array( 'read_private_posts', 'edit_posts', 'edit_others_posts', 'edit_published_posts', 'edit_private_posts', 'publish_posts', 'delete_posts', 'delete_others_posts', 'delete_published_posts', 'delete_private_posts',
251
  jQuery(document).ready( function($) {
252
  // Tabs and Content display
253
  $('.ppc-capabilities-tabs > ul > li').click( function() {
254
+ var $pp_tab = $(this).attr('data-content');
 
255
 
256
  $("[name='pp_caps_tab']").val($(this).attr('data-slug'));
257
 
258
  // Show current Content
259
  $('.ppc-capabilities-content > div').hide();
260
+ $('#' + $pp_tab).show();
261
 
262
+ $('#' + $pp_tab + '-taxonomy').show();
263
 
264
  // Active current Tab
265
  $('.ppc-capabilities-tabs > ul > li').removeClass('ppc-capabilities-tab-active');
276
  $active_tab_slug = (!empty($_REQUEST['pp_caps_tab'])) ? sanitize_key($_REQUEST['pp_caps_tab']) : 'edit';
277
  $active_tab_id = "cme-cap-type-tables-{$active_tab_slug}";
278
 
279
+ $ppc_tab_active = 'ppc-capabilities-tab-active';
280
 
281
  // caps: edit, delete, read
282
  foreach( array_keys($cap_properties) as $cap_type ) {
283
  $tab_id = "cme-cap-type-tables-$cap_type";
284
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
285
 
286
+ echo '<li data-slug="'. esc_attr($cap_type) . '"' . ' data-content="cme-cap-type-tables-' . esc_attr($cap_type) . '" class="' . esc_attr($tab_active) . '">'
287
+ . esc_html($cap_type_names[$cap_type]) .
288
  '</li>';
289
  }
290
 
291
  if ($extra_tabs = apply_filters('pp_capabilities_extra_post_capability_tabs', [])) {
292
  foreach($extra_tabs as $tab_slug => $tab_caption) {
293
+ $tab_slug = esc_attr($tab_slug);
294
+
295
  $tab_id = "cme-cap-type-tables-{$tab_slug}";
296
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
297
 
298
+ echo '<li data-slug="' . esc_attr($tab_slug) . '"' . ' data-content="' . esc_attr($tab_id) . '" class="' . esc_attr($tab_active) . '">'
299
+ . esc_html($tab_caption) .
300
  '</li>';
301
  }
302
  }
304
  // caps: other
305
  $tab_id = "cme-cap-type-tables-other";
306
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
307
+ $tab_caption = esc_html__( 'WordPress Core', 'capsman-enhanced' );
308
 
309
+ echo '<li data-slug="other" data-content="' . esc_attr($tab_id) . '" class="' . esc_attr($tab_active) . '">' . esc_html($tab_caption) . '</li>';
310
 
311
  // caps: plugins
312
  $plugin_caps = [];
464
  );
465
  }
466
  $plugin_caps = apply_filters('cme_plugin_capabilities', $plugin_caps);
467
+ foreach($plugin_caps as $plugin_title => $__plugin_caps) {
468
+ $plugin_title = esc_html($plugin_title);
469
 
470
+ $tab_slug = str_replace(' ', '-', strtolower(sanitize_title($plugin_title)));
471
  $tab_id = 'cme-cap-type-tables-' . $tab_slug;
472
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
473
 
474
+ echo '<li data-slug="' . esc_attr($tab_slug) . '" data-content="' . esc_attr($tab_id) . '" class="' . esc_attr($tab_active) . '">'
475
+ . esc_html(str_replace('_', ' ', $plugin_title)) .
476
  '</li>';
477
  }
478
 
479
  $tab_id = "cme-cap-type-tables-invalid";
480
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
481
+ $tab_caption = esc_html__( 'Invalid Capabilities', 'capsman-enhanced' );
482
+ echo '<li id="cme_tab_invalid_caps" data-slug="invalid" data-content="cme-cap-type-tables-' . esc_attr($tab_id) . '" class="' . esc_attr($tab_active) . '" style="display:none;">' . esc_html($tab_caption) . '</li>';
483
 
484
  $tab_id = "cme-cap-type-tables-additional";
485
  $tab_active = ($tab_id == $active_tab_id) ? $ppc_tab_active : '';
486
+ $tab_caption = esc_html__( 'Additional', 'capsman-enhanced' );
487
+ echo '<li data-slug="additional" data-content="' . esc_attr($tab_id) . '" class="' . esc_attr($tab_active) . '">' . esc_html($tab_caption) . '</li>';
488
  ?>
489
  </ul>
490
  </div>
514
  if ( ! count( $cap_properties[$cap_type][$item_type] ) )
515
  continue;
516
 
517
+ $tab_id = "cme-cap-type-tables-$cap_type";
518
+ $div_display = ($tab_id == $active_tab_id) ? 'block' : 'none';
519
 
520
  $any_caps = false;
521
 
522
  if ($item_type == 'taxonomy') {
523
+ $tab_id .= '-taxonomy';
524
 
525
  ob_start();
526
  }
527
 
528
+ echo "<div id='" . esc_attr($tab_id) . "' style='display:" . esc_attr($div_display) . ";'>";
529
 
530
+ $caption_pattern = ('taxonomy' == $item_type) ? esc_html__('Term %s Capabilities', 'capability-manager-enhanced') : esc_html__('Post %s Capabilities', 'capability-manager-enhanced');
531
 
532
+ echo '<h3>' . sprintf($caption_pattern, esc_html($cap_type_names[$cap_type])) . '</h3>';
533
 
534
  echo '<div class="ppc-filter-wrapper">';
535
  echo '<select class="ppc-filter-select">';
536
  $filter_caption = ('taxonomy' == $item_type) ? __('Filter by taxonomy', 'capability-manager-enhanced') : __('Filter by post type', 'capability-manager-enhanced');
537
+ echo '<option value="">' . esc_html($filter_caption) . '</option>';
538
  echo '</select>';
539
+ echo ' <button class="button secondary-button ppc-filter-select-reset" type="button">' . esc_html__('Clear', 'capability-manager-enhanced') . '</button>';
540
  echo '</div>';
541
 
542
+ echo "<table class='widefat fixed striped cme-typecaps cme-typecaps-" . esc_attr($cap_type) . "'>";
543
 
544
  echo '<thead><tr><th></th>';
545
 
548
  $prop = str_replace( '_posts', '', $prop );
549
  $prop = str_replace( '_pages', '', $prop );
550
  $prop = str_replace( '_terms', '', $prop );
551
+ $tip = ( isset( $cap_tips[$prop] ) ) ? $cap_tips[$prop] : '';
552
+ $th_class = ( 'taxonomy' == $item_type ) ? 'term-cap' : 'post-cap';
553
+ echo "<th style='text-align:center;' title='" . esc_attr($tip) . "' class='" . esc_attr($th_class) . "'>";
 
554
 
555
  if ( ( 'delete' != $prop ) || ( 'taxonomy' != $item_type ) || cme_get_detailed_taxonomies() ) {
556
+ echo str_replace('_', '<br />', esc_html(ucwords($prop)));
557
  }
558
 
559
  echo '</th>';
565
  if ( in_array( $key, $unfiltered[$item_type] ) )
566
  continue;
567
 
568
+ $row = "<tr class='cme_type_" . esc_attr($key) . "'>";
569
 
570
  if ( $cap_type ) {
571
  if ( empty($force_distinct_ui) && empty( $cap_properties[$cap_type][$item_type] ) )
573
 
574
  $type_label = (defined('CME_LEGACY_MENU_NAME_LABEL') && !empty($type_obj->labels->menu_name)) ? $type_obj->labels->menu_name : $type_obj->labels->name;
575
 
576
+ $row .= "<td><a class='cap_type' href='#toggle_type_caps'>" . esc_html($type_label) . '</a>';
577
  $row .= '<a href="#" class="neg-type-caps">&nbsp;x&nbsp;</a>';
578
  $row .= '</td>';
579
 
583
  foreach( $cap_properties[$cap_type][$item_type] as $prop ) {
584
  $td_classes = array();
585
  $checkbox = '';
586
+ $cap_title = '';
587
 
588
  if ( ! empty($type_obj->cap->$prop) && ( in_array( $type_obj->name, array( 'post', 'page' ) )
589
  || ! in_array( $type_obj->cap->$prop, $default_caps )
616
  continue;
617
  }
618
 
619
+ $cap_name = sanitize_key($type_obj->cap->$prop);
620
 
621
  if ( 'taxonomy' == $item_type )
622
  $td_classes []= "term-cap";
628
 
629
  if ( $is_administrator || current_user_can($cap_name) ) {
630
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
631
+ $cap_title = sprintf(__( '%s: assigned by Permission Group', 'capsman-enhanced' ), esc_attr($cap_name) );
632
  } else {
633
+ $cap_title = esc_attr($cap_name);
634
  }
635
 
636
+ $checkbox = '<input type="checkbox" title="' . esc_attr($cap_title) . '" name="caps[' . esc_attr($cap_name) . ']" autocomplete="off" value="1" ' . checked(1, ! empty($rcaps[$cap_name]), false ) . ' />';
 
 
 
637
 
638
  $type_caps [$cap_name] = true;
639
  $display_row = true;
640
  $any_caps = true;
641
  }
642
  } else {
643
+ $cap_title = sprintf( __( 'shared capability: %s', 'capsman-enhanced' ), esc_attr( $type_obj->cap->$prop ) );
 
644
  }
645
 
646
  if ( isset($rcaps[$cap_name]) && empty($rcaps[$cap_name]) ) {
650
  $td_classes []= "cap-unreg";
651
  }
652
 
653
+ $td_class = ( $td_classes ) ? implode(' ', $td_classes) : '';
654
 
655
+ $row .= '<td class="' . esc_attr($td_class) . '" title="' . esc_attr($cap_title) . '"' . "><span class='cap-x'>X</span>$checkbox";
656
 
657
  if ( false !== strpos( $td_class, 'cap-neg' ) )
658
+ $row .= '<input type="hidden" class="cme-negation-input" name="caps[' . esc_attr($cap_name) . ']" value="" />';
659
 
660
  $row .= "</td>";
661
 
683
 
684
  if ( $display_row ) {
685
  $row .= '</tr>';
686
+
687
+ // Escaped piecemeal upstream; cannot be late-escaped until upstream UI output logic is reworked
688
  echo $row;
689
  }
690
  }
714
  // clicking on post type name toggles corresponding checkbox selections
715
  // caps: other
716
 
717
+ $tab_id = "cme-cap-type-tables-other";
718
+ $div_display = ($tab_id == $active_tab_id) ? 'block' : 'none';
719
  ?>
720
+ <div id="<?php echo esc_attr($tab_id);?>" style="display:<?php echo esc_attr($div_display);?>">
721
  <?php
722
 
723
+ echo '<h3>' . esc_html__( 'WordPress Core Capabilities', 'capsman-enhanced' ) . '</h3>';
724
 
725
  echo '<div class="ppc-filter-wrapper">';
726
+ echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . esc_attr__('Filter by capability', 'capability-manager-enhanced') . '">';
727
+ echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . esc_html__('Clear', 'capability-manager-enhanced') . '</button>';
728
  echo '</div>';
729
+ echo '<div class="ppc-filter-no-results" style="display:none;">' . esc_html__( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
730
 
731
  echo '<table class="widefat fixed striped form-table cme-checklist">';
732
 
736
 
737
  $core_caps = _cme_core_caps();
738
  foreach( array_keys($core_caps) as $cap_name ) {
739
+ $cap_name = sanitize_key($cap_name);
740
+
741
  if ( ! $is_administrator && ! current_user_can($cap_name) )
742
  continue;
743
 
744
  // Output first <tr>
745
  if ( $centinel_ == true ) {
746
+ echo '<tr class="' . esc_attr($cap_name) . '">';
747
  $centinel_ = false;
748
  }
749
 
750
  if ( $i == $checks_per_row ) {
751
+ echo '</tr><tr class="' . esc_attr($cap_name) . '">';
752
  $i = 0;
753
  }
754
 
767
  $disabled = '';
768
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
769
  $lock_capability = false;
770
+ $cap_title = $title_text;
771
 
772
  if ( 'read' == $cap_name ) {
773
  if ( ! empty( $block_read_removal ) ) {
776
  if ( apply_filters( 'pp_caps_lock_capability', true, 'read', $default ) ) {
777
  $lock_capability = true;
778
  $class .= ' cap-locked';
779
+ $disabled = 'disabled';
780
  if ( 'administrator' != $this->current ) {
781
+ $cap_title = __('Lockout Prevention: To remove read capability, first remove WordPress admin / editing capabilities, or add "dashboard_lockout_ok" capability', 'capsman-enhanced' );
782
  }
783
  }
784
  }
786
  }
787
 
788
  ?>
789
+ <td class="<?php echo esc_attr($class); ?>"><span class="cap-x">X</span><label title="<?php echo esc_attr($cap_title);?>"><input type="checkbox" name="caps[<?php echo esc_attr($cap_name); ?>]" autocomplete="off" value="1" <?php echo esc_attr($checked) . esc_attr($disabled);?> />
790
  <span>
791
  <?php
792
+ echo esc_html(str_replace( '_', ' ', $cap_name));
793
  ?>
794
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
795
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
796
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo esc_attr($cap_name); ?>]" value="" />
797
  <?php endif; ?>
798
  </td>
799
 
800
  <?php
801
 
802
  if ( $lock_capability ) {
803
+ echo '<input type="hidden" name="caps[' . esc_attr($cap_name) . ']" value="1" />';
804
  }
805
 
806
  ++$i;
819
  ?>
820
 
821
  <tr class="cme-bulk-select">
822
+ <td colspan="<?php echo (int) $checks_per_row;?>">
823
  <span style="float:right">
824
+ <input type="checkbox" class="cme-check-all" autocomplete="off" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
825
  </span>
826
  </td></tr>
827
 
832
  $all_capabilities = apply_filters( 'capsman_get_capabilities', array_keys( $this->capabilities ), $this->ID );
833
  $all_capabilities = apply_filters( 'members_get_capabilities', $all_capabilities );
834
 
 
 
 
 
 
 
 
 
 
835
  // caps: plugins
836
  $plugin_caps = apply_filters('cme_plugin_capabilities', $plugin_caps);
837
 
838
+ foreach($plugin_caps as $plugin_title => $__plugin_caps) {
839
+ $plugin_title = esc_html($plugin_title);
840
+
841
  $_plugin_caps = array_fill_keys($__plugin_caps, true);
842
 
843
+ $tab_id = 'cme-cap-type-tables-' . esc_attr(str_replace( ' ', '-', strtolower($plugin_title)));
844
+ $div_display = ($tab_id == $active_tab_id) ? 'block' : 'none';
845
 
846
+ echo '<div id="' . esc_attr($tab_id) . '" style="display:' . esc_attr($div_display) . '">';
847
 
848
+ echo '<h3 class="cme-cap-section">' . sprintf(esc_html__( 'Plugin Capabilities &ndash; %s', 'capsman-enhanced' ), esc_html(str_replace('_', ' ', $plugin_title))) . '</h3>';
849
 
850
  echo '<div class="ppc-filter-wrapper">';
851
+ echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . esc_attr__('Filter by capability', 'capability-manager-enhanced') . '">';
852
+ echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . esc_html__('Clear', 'capability-manager-enhanced') . '</button>';
853
  echo '</div>';
854
+ echo '<div class="ppc-filter-no-results" style="display:none;">' . esc_html__( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
855
 
856
  echo '<table class="widefat fixed striped form-table cme-checklist">';
857
 
860
  $i = 0; $first_row = true;
861
 
862
  foreach( array_keys($_plugin_caps) as $cap_name ) {
863
+ $cap_name = sanitize_key($cap_name);
864
+
865
  if ( isset( $type_caps[$cap_name] ) || isset($core_caps[$cap_name]) || isset($type_metacaps[$cap_name]) ) {
866
  continue;
867
  }
871
 
872
  // Output first <tr>
873
  if ( $centinel_ == true ) {
874
+ echo '<tr class="' . esc_attr($cap_name) . '">';
875
  $centinel_ = false;
876
  }
877
 
878
  if ( $i == $checks_per_row ) {
879
+ echo '</tr><tr class="' . esc_attr($cap_name) . '">';
880
  $i = 0;
881
  }
882
 
894
 
895
  $disabled = '';
896
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
897
+ $cap_title = $title_text;
898
  ?>
899
+ <td class="<?php echo esc_attr($class); ?>"><span class="cap-x">X</span><label title="<?php echo esc_attr($cap_title);?>"><input type="checkbox" name="caps[<?php echo esc_attr($cap_name); ?>]" autocomplete="off" value="1" <?php echo esc_attr($checked) . esc_attr($disabled);?> />
900
  <span>
901
  <?php
902
+ echo esc_html(str_replace( '_', ' ', $cap_name));
903
  ?>
904
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
905
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
906
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo esc_attr($cap_name); ?>]" value="" />
907
  <?php endif; ?>
908
  </td>
909
 
924
  ?>
925
 
926
  <tr class="cme-bulk-select">
927
+ <td colspan="<?php echo (int) $checks_per_row;?>">
928
  <span style="float:right">
929
+ <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
930
  </span>
931
  </td></tr>
932
 
937
 
938
  // caps: invalid
939
  if (array_intersect(array_keys(array_filter($type_metacaps)), $all_capabilities) && array_intersect_key($type_metacaps, array_filter($rcaps))) {
940
+ $tab_id = "cme-cap-type-tables-invalid";
941
+ $div_display = ($tab_id == $active_tab_id) ? 'block' : 'none';
942
 
943
+ echo '<div id="' . esc_attr($tab_id) . '" style="display:' . esc_attr($div_display) . '">';
944
+ echo '<h3 class="cme-cap-section">' . esc_html__( 'Invalid Capabilities', 'capsman-enhanced' ) . '</h3>';
945
  ?>
946
 
947
  <script type="text/javascript">
954
 
955
  <div>
956
  <span class="cme-subtext">
957
+ <?php esc_html_e('The following entries have no effect. Please assign desired capabilities in the Read / Edit / Delete grid above.', 'capsman-enhanced');?>
958
  </span>
959
  </div>
960
 
971
  uasort( $this->capabilities, 'strnatcasecmp' ); // sort by array values, but maintain keys );
972
 
973
  foreach ( $this->capabilities as $cap_name => $cap ) :
974
+ $cap_name = sanitize_key($cap_name);
975
+
976
  if (!isset($type_metacaps[$cap_name]) || empty($rcaps[$cap_name])) {
977
  continue;
978
  }
996
  $disabled = '';
997
  $checked = checked(1, ! empty($rcaps[$cap_name]), false );
998
  ?>
999
+ <td class="<?php echo esc_attr($class); ?>"><span class="cap-x">X</span><label title="<?php echo esc_attr($title_text);?>"><input type="checkbox" name="caps[<?php echo esc_attr($cap_name); ?>]" autocomplete="off" value="1" <?php echo esc_attr($checked) . esc_attr($disabled);?> />
1000
  <span>
1001
  <?php
1002
+ echo esc_html(str_replace( '_', ' ', $cap ));
1003
  ?>
1004
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
1005
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
1006
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo esc_attr($cap_name); ?>]" value="" />
1007
  <?php endif; ?>
1008
  </td>
1009
  <?php
1033
  <?php
1034
  } // endif any invalid caps
1035
 
1036
+ $tab_id = "cme-cap-type-tables-additional";
1037
+ $div_display = ($tab_id == $active_tab_id) ? 'block' : 'none';
1038
  ?>
1039
+ <div id="<?php echo esc_attr($tab_id);?>" style="display:<?php echo esc_attr($div_display);?>">
1040
  <?php
1041
  // caps: additional
1042
+ echo '<h3 class="cme-cap-section">' . esc_html__( 'Additional Capabilities', 'capsman-enhanced' ) . '</h3>';
1043
 
1044
  echo '<div class="ppc-filter-wrapper">';
1045
+ echo '<input type="text" class="regular-text ppc-filter-text" placeholder="' . esc_attr__('Filter by capability', 'capability-manager-enhanced') . '">';
1046
+ echo ' <button class="button secondary-button ppc-filter-text-reset" type="button">' . esc_html__('Clear', 'capability-manager-enhanced') . '</button>';
1047
  echo '</div>';
1048
+ echo '<div class="ppc-filter-no-results" style="display:none;">' . esc_html__( 'No results found. Please try again with a different word.', 'capsman-enhanced' ) . '</div>';
1049
  ?>
1050
  <table class="widefat fixed striped form-table cme-checklist">
1051
  <?php
1062
  $additional_caps = apply_filters('publishpress_caps_manage_additional_caps', $this->capabilities);
1063
 
1064
  foreach ($additional_caps as $cap_name => $cap) :
1065
+ $cap_name = sanitize_key($cap_name);
1066
+
1067
 
1068
  if ((isset($type_caps[$cap_name]) && !isset($type_metacaps[$cap_name]))
1069
  || isset($core_caps[$cap_name])
1072
  }
1073
 
1074
  if (!isset($type_metacaps[$cap_name]) || !empty($rcaps[$cap_name])) {
1075
+ foreach(array_keys($plugin_caps) as $plugin_title) {
1076
+ if ( in_array( $cap_name, $plugin_caps[$plugin_title]) ) {
1077
  continue 2;
1078
  }
1079
  }
1090
 
1091
  // Output first <tr>
1092
  if ( $centinel_ == true ) {
1093
+ echo '<tr class="' . esc_attr($cap_name) . '">';
1094
  $centinel_ = false;
1095
  }
1096
 
1097
  if ( $i == $checks_per_row ) {
1098
+ echo '</tr><tr class="' . esc_attr($cap_name) . '">';
1099
  $i = 0; $first_row = false;
1100
  }
1101
 
1106
 
1107
  if ( ! empty($pp_metagroup_caps[$cap_name]) ) {
1108
  $class .= ' cap-metagroup';
1109
+ $title_text = sprintf( esc_html__( '%s: assigned by Permission Group', 'capsman-enhanced' ), $cap_name );
1110
  } else {
1111
  $title_text = $cap_name;
1112
  }
1120
  } elseif ( 'administrator' == $default ) {
1121
  $class .= ' cap-locked';
1122
  $lock_manage_caps_capability = true;
1123
+ $disabled = 'disabled';
1124
  }
1125
  }
1126
  ?>
1127
+ <td class="<?php echo esc_attr($class); ?>"><span class="cap-x">X</span><label title="<?php echo esc_attr($title_text);?>"><input type="checkbox" name="caps[<?php echo esc_attr($cap_name); ?>]" autocomplete="off" value="1" <?php echo esc_attr($checked) . ' ' . esc_attr($disabled);?> />
1128
  <span>
1129
  <?php
1130
+ echo esc_html(str_replace( '_', ' ', $cap ));
1131
  ?>
1132
  </span></label><a href="#" class="neg-cap">&nbsp;x&nbsp;</a>
1133
  <?php if ( false !== strpos( $class, 'cap-neg' ) ) :?>
1134
+ <input type="hidden" class="cme-negation-input" name="caps[<?php echo esc_attr($cap_name); ?>]" value="" />
1135
  <?php endif; ?>
1136
  </td>
1137
  <?php
1157
  ?>
1158
 
1159
  <tr class="cme-bulk-select">
1160
+ <td colspan="<?php echo (int) $checks_per_row;?>">
1161
  <span style="float:right">
1162
+ <input type="checkbox" class="cme-check-all" title="<?php esc_attr_e('check/uncheck all', 'capsman-enhanced');?>">&nbsp;&nbsp;<a class="cme-neg-all" href="#" autocomplete="off" title="<?php esc_attr_e('negate all (storing as disabled capabilities)', 'capsman-enhanced');?>">X</a> <a class="cme-switch-all" href="#" title="<?php esc_attr_e('negate none (add/remove all capabilities normally)', 'capsman-enhanced');?>">X</a>
1163
  </span>
1164
  </td></tr>
1165
 
1186
 
1187
  <?php /* play.png icon by Pavel: http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN */ ?>
1188
 
1189
+ <div id="pp_features" style="display:none"><div class="pp-logo"><a href="https://publishpress.com/presspermit/"><img src="<?php echo esc_url_raw($img_url);?>pp-logo.png" alt="<?php esc_attr_e('PublishPress Permissions', 'capsman-enhanced');?>" /></a></div><div class="features-wrap"><ul class="pp-features">
1190
  <li>
1191
+ <?php esc_html_e( "Automatically define type-specific capabilities for your custom post types and taxonomies", 'capsman-enhanced' );?>
1192
+ <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1193
 
1194
  <li>
1195
+ <?php esc_html_e( "Assign standard WP roles supplementally for a specific post type", 'capsman-enhanced' );?>
1196
+ <a href="https://presspermit.com/tutorial/regulate-post-type-access" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1197
 
1198
  <li>
1199
+ <?php esc_html_e( "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>", 'capsman-enhanced' );?>
1200
  </li>
1201
 
1202
  <li>
1203
+ <?php esc_html_e( "Customize reading permissions per-category or per-post", 'capsman-enhanced' );?>
1204
+ <a href="https://presspermit.com/tutorial/category-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1205
 
1206
  <li>
1207
+ <?php esc_html_e( "Customize editing permissions per-category or per-post <em>(Pro)</em>", 'capsman-enhanced' );?>
1208
+ <a href="https://presspermit.com/tutorial/page-editing-exceptions" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1209
 
1210
  <li>
1211
+ <?php esc_html_e( "Custom Post Visibility statuses, fully implemented throughout wp-admin <em>(Pro)</em>", 'capsman-enhanced' );?>
1212
+ <a href="https://presspermit.com/tutorial/custom-post-visibility" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1213
 
1214
  <li>
1215
+ <?php esc_html_e( "Custom Moderation statuses for access-controlled, multi-step publishing workflow <em>(Pro)</em>", 'capsman-enhanced' );?>
1216
+ <a href="https://presspermit.com/tutorial/multi-step-moderation" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1217
 
1218
  <li>
1219
+ <?php esc_html_e( "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>", 'capsman-enhanced' );?>
1220
+ <a href="https://presspermit.com/tutorial/edit-flow-integration" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1221
 
1222
  <li>
1223
+ <?php esc_html_e( "Customize the moderated editing of published content with Revisionary or Post Forking <em>(Pro)</em>", 'capsman-enhanced' );?>
1224
+ <a href="https://presspermit.com/tutorial/published-content-revision" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1225
 
1226
  <li>
1227
+ <?php esc_html_e( "Grant Spectator, Participant or Moderator access to specific bbPress forums <em>(Pro)</em>", 'capsman-enhanced' );?>
1228
  </li>
1229
 
1230
  <li>
1231
+ <?php esc_html_e( "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>", 'capsman-enhanced' );?>
1232
+ <a href="https://presspermit.com/tutorial/buddypress-content-permissions" target="_blank"><img class="cme-play" alt="*" src="<?php echo esc_url_raw($img_url);?>play.png" /></a></li>
1233
 
1234
  <li>
1235
+ <?php esc_html_e( "WPML integration to mirror permissions to translations <em>(Pro)</em>", 'capsman-enhanced' );?>
1236
  </li>
1237
 
1238
  <li>
1239
+ <?php esc_html_e( "Member support forum", 'capsman-enhanced' );?>
1240
  </li>
1241
 
1242
  </ul></div>
1243
 
1244
  <?php
1245
  echo '<div>';
1246
+ printf( esc_html__('%1$sgrab%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<span class="plugins update-message"><a href="' . esc_url_raw(cme_plugin_info_url('press-permit-core')) . '" class="thickbox" title="' . sprintf( esc_attr__('%s (free install)', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions Pro</a></span>' );
1247
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
1248
+ printf( esc_html__('%1$sbuy%2$s %3$s', 'capsman-enhanced'), '<strong>', '</strong>', '<a href="https://publishpress.com/presspermit/" target="_blank" title="' . sprintf( esc_attr__('%s info/purchase', 'capsman-enhanced'), 'Permissions Pro' ) . '">Permissions&nbsp;Pro</a>' );
1249
  echo '&nbsp;&nbsp;&bull;&nbsp;&nbsp;';
1250
  echo '<a href="#pp-hide">hide</a>';
1251
  echo '</div></div>';
1277
  <?php
1278
  $level = ak_caps2level($rcaps);
1279
  ?>
1280
+ <span title="<?php esc_attr_e('Role level is mostly deprecated. However, it still determines eligibility for Post Author assignment and limits the application of user editing capabilities.', 'capsman-enhanced');?>">
1281
 
1282
+ <?php (in_array(get_locale(), ['en_EN', 'en_US'])) ? printf('Role Level:') : esc_html_e('Level:', 'capsman-enhanced');?> <select name="level">
1283
  <?php for ( $l = $this->max_level; $l >= 0; $l-- ) {?>
1284
+ <option value="<?php echo (int) $l; ?>" style="text-align:right;"<?php selected($level, $l); ?>>&nbsp;<?php echo (int) $l; ?>&nbsp;</option>
1285
  <?php }
1286
  ?>
1287
  </select>
1296
 
1297
  <p class="submit" style="padding-top:0;">
1298
  <input type="hidden" name="action" value="update" />
1299
+ <input type="hidden" name="current" value="<?php echo esc_attr($default); ?>" />
1300
+
1301
+ <?php
1302
+ $save_caption = (in_array(sanitize_key(get_locale()), ['en_EN', 'en_US'])) ? 'Save Capabilities' : __('Save Changes', 'capsman-enhanced');
1303
+ ?>
1304
+ <input type="submit" name="SaveRole" value="<?php echo esc_attr($save_caption);?>" class="button-primary" /> &nbsp;
1305
 
1306
  <?php if ( current_user_can('administrator') && 'administrator' != $default ) : ?>
1307
+ <a class="ak-delete" title="<?php echo esc_attr__('Delete this role', 'capsman-enhanced') ?>" href="<?php echo esc_url_raw(wp_nonce_url("admin.php?page={$this->ID}&amp;action=delete&amp;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 esc_html_e('Delete Role', 'capsman-enhanced')?></a>
1308
  <?php endif; ?>
1309
  </p>
1310
 
1313
  <?php do_action('publishpress-caps_sidebar_top');?>
1314
 
1315
  <dl>
1316
+ <dt><?php esc_html_e('Add Capability', 'capsman-enhanced'); ?></dt>
1317
  <dd style="text-align:center;">
1318
  <p><input type="text" name="capability-name" class="regular-text" placeholder="<?php echo 'capability_name';?>" /><br />
1319
+ <input type="submit" name="AddCap" value="<?php esc_attr_e('Add to role', 'capsman-enhanced') ?>" class="button" /></p>
1320
  </dd>
1321
  </dl>
1322
 
1328
  ?>
1329
 
1330
  <dl>
1331
+ <dt><?php (!in_array(get_locale(), ['en_EN', 'en_US'])) ? esc_html_e('Copy this role to', 'capsman-enhanced') : printf('Copy %s Role', esc_html(translate_user_role($roles[$default]))); ?></dt>
1332
  <dd style="text-align:center;">
1333
  <?php $class = ( $support_pp_only_roles ) ? 'tight-text' : 'regular-text'; ?>
1334
+ <p><input type="text" name="copy-name" class="<?php echo esc_attr($class);?>" placeholder="<?php esc_attr_e('Role Name', 'capsman-enhanced') ?>" />
1335
 
1336
  <?php if( $support_pp_only_roles ) : ?>
1337
+ <label for="copy_role_pp_only" title="<?php esc_attr_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" autocomplete="off" value="1"> <?php esc_html_e('hidden', 'capsman-enhanced'); ?> </label>
1338
  <?php endif; ?>
1339
 
1340
  <br />
1341
+ <input type="submit" name="CopyRole" value="<?php esc_attr_e('Copy', 'capsman-enhanced') ?>" class="button" />
1342
  </p>
1343
  </dd>
1344
  </dl>
1345
 
1346
  <dl>
1347
+ <dt><?php esc_html_e('Rename Role', 'capsman-enhanced'); ?></dt>
1348
  <dd style="text-align:center;">
1349
+ <p><input type="text" name="rename-name" class="regular-text" placeholder="<?php esc_attr_e('New Role Name', 'capsman-enhanced') ?>" />
1350
 
1351
  <br />
1352
+ <input type="submit" name="RenameRole" value="<?php esc_attr_e('Rename', 'capsman-enhanced') ?>" class="button" />
1353
  </p>
1354
  </dd>
1355
  </dl>
1378
  $autocreate_roles = array();
1379
  ?>
1380
  <div style="margin-bottom: 5px">
1381
+ <label for="cme_autocreate_role" title="<?php esc_attr_e('Create this role definition in new (future) sites', 'capsman-enhanced');?>"><input type="checkbox" name="cme_autocreate_role" id="cme_autocreate_role" autocomplete="off" value="1" <?php echo checked(in_array($default, $autocreate_roles));?>> <?php esc_html_e('include in new sites', 'capsman-enhanced'); ?> </label>
1382
  </div>
1383
  <div>
1384
+ <label for="cme_net_sync_role" title="<?php echo esc_attr__('Copy / update this role definition to all sites now', 'capsman-enhanced');?>"><input type="checkbox" name="cme_net_sync_role" id="cme_net_sync_role" autocomplete="off" value="1"> <?php esc_html_e('sync role to all sites now', 'capsman-enhanced'); ?> </label>
1385
  </div>
1386
  <div>
1387
+ <label for="cme_net_sync_options" title="<?php echo esc_attr__('Copy option settings to all sites now', 'capsman-enhanced');?>"><input type="checkbox" name="cme_net_sync_options" id="cme_net_sync_options" autocomplete="off" value="1"> <?php esc_html_e('sync options to all sites now', 'capsman-enhanced'); ?> </label>
1388
  </div>
1389
  </div>
1390
  <?php
includes/backup-handler.php CHANGED
@@ -12,7 +12,7 @@ class Capsman_BackupHandler
12
 
13
  function __construct( $manager_obj ) {
14
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('restore_roles'))
15
- wp_die( __( 'You do not have permission to restore roles.', 'capsman-enhanced' ) );
16
 
17
  $this->cm = $manager_obj;
18
  }
@@ -24,10 +24,11 @@ class Capsman_BackupHandler
24
  */
25
  function processBackupTool ()
26
  {
 
 
27
  if (isset($_POST['save_backup'])) {
28
  check_admin_referer('pp-capabilities-backup');
29
 
30
- global $wpdb;
31
  $wp_roles = $wpdb->prefix . 'user_roles';
32
  $cm_roles = $this->cm->ID . '_backup';
33
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
@@ -49,10 +50,9 @@ class Capsman_BackupHandler
49
 
50
  }
51
 
52
- if (isset($_POST['restore_backup'])) {
53
  check_admin_referer('pp-capabilities-backup');
54
 
55
- global $wpdb;
56
  $wp_roles = $wpdb->prefix . 'user_roles';
57
  $cm_roles = $this->cm->ID . '_backup';
58
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
@@ -77,7 +77,7 @@ class Capsman_BackupHandler
77
  break;
78
 
79
  default:
80
- if ($roles = get_option($_POST['select_restore'])) {
81
  update_option($wp_roles, $roles);
82
  ak_admin_notify(__('Roles and Capabilities restored from selected auto-backup.', 'capsman-enhanced'));
83
  } else {
@@ -112,7 +112,7 @@ class Capsman_BackupHandler
112
  populate_roles();
113
  $this->cm->setAdminCapability();
114
 
115
- $msg = __('Roles and Capabilities reset to WordPress defaults', 'capsman-enhanced');
116
 
117
  if ( function_exists( 'pp_populate_roles' ) ) {
118
  pp_populate_roles();
12
 
13
  function __construct( $manager_obj ) {
14
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('restore_roles'))
15
+ wp_die( esc_html__( 'You do not have permission to restore roles.', 'capsman-enhanced' ) );
16
 
17
  $this->cm = $manager_obj;
18
  }
24
  */
25
  function processBackupTool ()
26
  {
27
+ global $wpdb;
28
+
29
  if (isset($_POST['save_backup'])) {
30
  check_admin_referer('pp-capabilities-backup');
31
 
 
32
  $wp_roles = $wpdb->prefix . 'user_roles';
33
  $cm_roles = $this->cm->ID . '_backup';
34
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
50
 
51
  }
52
 
53
+ if (isset($_POST['restore_backup']) && !empty($_POST['select_restore'])) {
54
  check_admin_referer('pp-capabilities-backup');
55
 
 
56
  $wp_roles = $wpdb->prefix . 'user_roles';
57
  $cm_roles = $this->cm->ID . '_backup';
58
  $cm_roles_initial = $this->cm->ID . '_backup_initial';
77
  break;
78
 
79
  default:
80
+ if ($roles = get_option(sanitize_key($_POST['select_restore']))) {
81
  update_option($wp_roles, $roles);
82
  ak_admin_notify(__('Roles and Capabilities restored from selected auto-backup.', 'capsman-enhanced'));
83
  } else {
112
  populate_roles();
113
  $this->cm->setAdminCapability();
114
 
115
+ $msg = esc_html__('Roles and Capabilities reset to WordPress defaults', 'capsman-enhanced');
116
 
117
  if ( function_exists( 'pp_populate_roles' ) ) {
118
  pp_populate_roles();
includes/backup.php CHANGED
@@ -1,380 +1,382 @@
1
- <?php
2
- /**
3
- * Capability Manager Backup Tool.
4
- * Provides backup and restore functionality to Capability Manager.
5
- *
6
- * @version $Rev: 198515 $
7
- * @author Jordi Canals
8
- * @copyright Copyright (C) 2009, 2010 Jordi Canals
9
- * @license GNU General Public License version 2
10
- * @link http://alkivia.org
11
- * @package Alkivia
12
- * @subpackage CapsMan
13
- *
14
- *
15
- * Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
16
- *
17
- * Modifications Copyright 2020, PublishPress <help@publishpress.com>
18
- *
19
- * This program is free software; you can redistribute it and/or
20
- * modify it under the terms of the GNU General Public License
21
- * version 2 as published by the Free Software Foundation.
22
- *
23
- * This program is distributed in the hope that it will be useful,
24
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
25
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
- * GNU General Public License for more details.
27
- *
28
- * You should have received a copy of the GNU General Public License
29
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
30
- */
31
-
32
- global $wpdb;
33
-
34
- $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE 'cme_backup_auto_%' ORDER BY option_id DESC");
35
- ?>
36
-
37
- <div class="wrap publishpress-caps-manage publishpress-caps-backup pressshack-admin-wrapper">
38
- <div id="icon-capsman-admin" class="icon32"></div>
39
- <h2><?php printf(__('Backup Tool for %1$sPublishPress Capabilities%2$s', 'capsman-enhanced'), '<a href="admin.php?page=pp-capabilities">', '</a>'); ?></h2>
40
-
41
-
42
- <form method="post" action="admin.php?page=pp-capabilities-backup">
43
- <?php wp_nonce_field('pp-capabilities-backup'); ?>
44
-
45
- <div class="pp-columns-wrapper<?php echo defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ? ' pp-enable-sidebar' : '' ?>">
46
- <div class="pp-column-left">
47
- <ul id="publishpress-capability-backup-tabs" class="nav-tab-wrapper">
48
- <li class="nav-tab nav-tab-active"><a href="#ppcb-tab-restore"><?php _e('Restore', 'capsman-enhanced');?></a></li>
49
- <li class="nav-tab"><a href="#ppcb-tab-backup"><?php _e('Backup', 'capsman-enhanced');?></a></li>
50
- <li class="nav-tab"><a href="#ppcb-tab-reset"><?php _e('Reset Roles', 'capsman-enhanced');?></a></li>
51
- </ul>
52
-
53
- <fieldset>
54
- <table id="akmin">
55
- <tr>
56
- <td class="content">
57
-
58
- <dl id="ppcb-tab-backup" style="display:none;">
59
- <dt><?php _e('Backup Roles and Capabilities', 'capsman-enhanced'); ?></dt>
60
- <dd>
61
- <p class="description">
62
- <?php
63
- $max_auto_backups = (defined('CME_AUTOBACKUPS')) ? CME_AUTOBACKUPS : 20;
64
- printf(__('PublishPress Capabilities automatically creates a backup on installation and whenever you save changes. The initial backup and last %d auto-backups are kept.', 'capsman-enhanced'), $max_auto_backups);
65
- ?>
66
- </p>
67
-
68
- <p class="description">
69
- <?php _e('A backup created on this screen replaces any previous manual backups, but is never automatically replaced.', 'capsman-enhanced');?>
70
- </p>
71
-
72
- <div class="pp-caps-backup-button">
73
- <input type="submit" name="save_backup"
74
- value="<?php _e('Manual Backup', 'capsman-enhanced') ?>"
75
- class="button-primary"/>
76
- </div>
77
- </dd>
78
-
79
- </dl>
80
-
81
- <?php
82
- $listed_manual_backup = false;
83
- $backup_datestamp = get_option('capsman_backup_datestamp');
84
- $last_caption = ($backup_datestamp) ? sprintf(__('Last Manual Backup - %s', 'capsman-enhanced'), date('j M Y, g:i a', $backup_datestamp)) : __('Last Backup', 'capsman-enhanced');
85
- ?>
86
-
87
- <dl id="ppcb-tab-restore">
88
- <dt><?php _e('Restore Previous Roles and Capabilities', 'capsman-enhanced'); ?></dt>
89
- <dd>
90
- <p class="description">
91
- <?php _e('PublishPress Capabilities automatically creates a backup on installation and whenever you save changes.', 'capsman-enhanced');?>
92
- </p>
93
-
94
- <p class="description">
95
- <?php _e('On this screen, you can restore an earlier version of your roles and capabilities.', 'capsman-enhanced');?>
96
- </p>
97
-
98
- <table width='100%' class="form-table">
99
- <tr>
100
- <th scope="row"><?php _e('Available Backups:', 'capsman-enhanced'); ?></th>
101
- <td>
102
- <div id="cme_select_restore_div">
103
- <ul id="cme_select_restore">
104
- <?php foreach ($auto_backups as $row):
105
- $arr = explode('_', str_replace('cme_backup_auto_', '', $row->option_name));
106
- $arr[1] = str_replace('-', ':', $arr[1]);
107
- $date_caption = implode(' ', $arr);
108
-
109
- if (!$listed_manual_backup && ($backup_datestamp > strtotime($date_caption))) :
110
- $manual_date_caption = date('Y-m-d, g:i a', $backup_datestamp);
111
- ?>
112
- <li>
113
- <input type="radio" name="select_restore" value="restore" id="cme_restore_manual">
114
- <label for="cme_restore_manual"><?php printf(__('Manual backup of all roles (%s)', 'capsman-enhanced'), $manual_date_caption); ?></label>
115
- </li>
116
- <?php
117
- $listed_manual_backup = true;
118
- endif;
119
- ?>
120
- <?php
121
- $date_caption = str_replace(' ', ', ', $date_caption);
122
- $date_caption = str_replace(', am', ' am', $date_caption);
123
- $date_caption = str_replace(', pm', ' pm', $date_caption);
124
- ?>
125
-
126
- <li>
127
- <input type="radio" name="select_restore" value="<?php echo $row->option_name;?>" id="<?php echo $row->option_name;?>">
128
- <label for="<?php echo $row->option_name;?>"><?php printf(__('Auto-backup of all roles (%s)', 'capsman-enhanced'), $date_caption); ?></label>
129
- </li>
130
- <?php endforeach; ?>
131
-
132
- <?php
133
- if ($initial = get_option('capsman_backup_initial')):?>
134
- <li>
135
- <input type="radio" name="select_restore" value="restore_initial" id="cme_restore_initial">
136
- <label for="cme_restore_initial"><?php _e('Initial backup of all roles', 'capsman-enhanced'); ?></label>
137
- </li>
138
- <?php endif; ?>
139
- <!-- </select> -->
140
- </ul>
141
- </div>
142
-
143
- <div class="cme-restore-button">
144
- <input type="submit" name="restore_backup"
145
- value="<?php _e('Restore Selected Roles', 'capsman-enhanced') ?>"
146
- class="button-primary"/>
147
-
148
- <div class="cme-selected-backup-caption">
149
- <span class="cme-selected-backup-caption cme-subtext"></span>
150
- </div>
151
- </div>
152
- </td>
153
-
154
- <td class="cme-backup-info">
155
- <div class="cme_backup_info_changes_only" style="display:none">
156
- <input type="checkbox" class="cme_backup_info_changes_only" autocomplete="off" checked="checked"> <?php _e('Show changes from current roles only', 'capsman-enhanced');?>
157
- </div>
158
-
159
- <?php
160
- global $wp_roles;
161
-
162
- $initial_caption = ($backup_datestamp = get_option('capsman_backup_initial_datestamp')) ? sprintf(__('Initial Backup - %s', 'capsman-enhanced'), date('j M Y, g:i a', $backup_datestamp)) : __('Initial Backup', 'capsman-enhanced');
163
-
164
- $backups = array(
165
- 'capsman_backup_initial' => $initial_caption,
166
- );
167
-
168
- if (empty($capsman_backup)) {
169
- $backups['capsman_backup'] = $last_caption;
170
- }
171
-
172
- foreach ($auto_backups as $row) {
173
- $arr = explode('_', str_replace('cme_backup_auto_', '', $row->option_name));
174
- $arr[1] = str_replace('-', ':', $arr[1]);
175
-
176
- $date_caption = implode(' ', $arr);
177
- $date_caption = str_replace(' ', ', ', $date_caption);
178
- $date_caption = str_replace(', am', ' am', $date_caption);
179
- $date_caption = str_replace(', pm', ' pm', $date_caption);
180
-
181
- $backups[$row->option_name] = "Auto-backup from " . $date_caption;
182
- }
183
-
184
- foreach ($backups as $name => $caption) {
185
- if ($backup_data = get_option($name)) :?>
186
- <div id="cme_display_<?php echo $name; ?>" style="display:none;"
187
- class="cme-show-backup">
188
- <h3><?php printf(__("%s (%s roles)", 'capsman-enhanded'), $caption, count($backup_data)); ?></h3>
189
-
190
- <?php
191
- foreach ($wp_roles->role_objects as $role => $role_object) {
192
- if (empty($backup_data[$role])) {
193
- $role_caption = $role_object->name;
194
- $role_class = ' class="cme-change cme-minus"';
195
- ?>
196
- <h4><span<?php echo $role_class;?>><?php echo (translate_user_role($role_caption));?></span> <?php _e('(this role will be removed if you restore backup)', 'capsman-enhanced');?></h4>
197
- <?php
198
- }
199
- }
200
- ?>
201
-
202
- <?php foreach ($backup_data as $role => $props) :
203
- if (isset($wp_roles->role_objects[$role]->capabilities)) {
204
- $props['capabilities'] = array_merge(
205
- array_fill_keys(array_keys($wp_roles->role_objects[$role]->capabilities), 0),
206
- $props['capabilities']
207
- );
208
- }
209
- ?>
210
- <?php if (!isset($props['name'])) continue; ?>
211
- <?php
212
- $level = 0;
213
- for ($i = 10; $i >= 0; $i--) {
214
- if (!empty($props['capabilities']["level_{$i}"])) {
215
- $level = $i;
216
- break;
217
- }
218
- }
219
- ?>
220
- <?php
221
- $role_caption = $props['name'];
222
- $role_class = (empty($wp_roles->role_objects[$role])) ? ' class="cme-change cme-plus"' : '';
223
- ?>
224
-
225
- <h4<?php echo $role_class;?>><?php printf(__('%s (level %s)', 'capsman-enhanced'), translate_user_role($role_caption), $level); ?></h4>
226
-
227
- <?php
228
- $items = [];
229
- $any_changes = false;
230
-
231
- ksort($props['capabilities']);
232
- foreach ($props['capabilities'] as $cap_name => $val) :
233
- if (0 === strpos($cap_name, 'level_')) continue;
234
- ?>
235
- <?php
236
- if ($val && (empty($wp_roles->role_objects[$role]) || empty($wp_roles->role_objects[$role]->capabilities[$cap_name]))) {
237
- $class = ' class="cme-change cme-plus"';
238
-
239
- } elseif ((false === $props['capabilities'][$cap_name]) && (!isset($wp_roles->role_objects[$role]->capabilities[$cap_name]) || false !== $wp_roles->role_objects[$role]->capabilities[$cap_name])) {
240
- $class = ' class="cme-change cme-negate"';
241
-
242
- } elseif (!$val && !empty($wp_roles->role_objects[$role]->capabilities[$cap_name])) {
243
- $class = ' class="cme-change cme-minus"';
244
- $cap_name = "&nbsp;&nbsp;$cap_name&nbsp;&nbsp;";
245
- } else {
246
- $class = '';
247
- }
248
-
249
- $items[$cap_name] = $class;
250
-
251
- $any_changes = $any_changes || $class;
252
- ?>
253
- <?php endforeach; ?>
254
-
255
- <?php if ($items) :?>
256
- <ul class="pp-restore-caps">
257
- <?php foreach($items as $cap_name => $class) :?>
258
- <li<?php echo $class;?>><?php echo $cap_name;?></li>
259
- <?php endforeach; ?>
260
- </ul>
261
- <?php endif;?>
262
-
263
- <?php if (!$any_changes):?>
264
- <span class="pp-restore-caps-no-change">
265
- <?php _e('No changes', 'capsman-enhanced');?>
266
- </span>
267
- <?php endif;?>
268
- <?php endforeach; ?>
269
- </div>
270
- <?php endif;
271
- }
272
- ?>
273
- </td>
274
- </tr>
275
- </table>
276
- </dd>
277
- </dl>
278
-
279
-
280
- <dl id="ppcb-tab-reset" style="display:none;">
281
- <dt><?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) _e('Reset WordPress Defaults', 'capsman-enhanced'); else echo 'Reset Roles to WordPress Defaults'; ?></dt>
282
- <dd>
283
- <p><strong><span class="pp-caps-warning"><?php _e('WARNING:', 'capsman-enhanced'); ?></span> <?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) _e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', 'capsman-enhanced'); else echo 'This will delete and/or modify stored role definitions.'; ?>
284
- </strong><br/>
285
- <br/>
286
- <?php
287
- _e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', 'capsman-enhanced') ?>
288
- <br/>
289
- <strong><?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) _e('It is recommended to use this only as a last resource!', 'capsman-enhanced'); else echo('It is recommended to use this only as a last resort!'); ?></strong>
290
- </p>
291
- <p><a class="ak-delete button-primary"
292
- title="<?php echo esc_attr(__('Reset Roles and Capabilities to WordPress defaults', 'capsman-enhanced')) ?>"
293
- href="<?php echo wp_nonce_url("admin.php?page=pp-capabilities-backup&amp;action=reset-defaults", 'capsman-reset-defaults'); ?>"
294
- onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", 'capsman-enhanced')); ?>') ) { return true;}return false;"><?php _e('Reset to WordPress defaults', 'capsman-enhanced') ?></a>
295
-
296
- </dd>
297
- </dl>
298
-
299
-
300
- </td>
301
- </tr>
302
- </table>
303
- </fieldset>
304
- </div><!-- .pp-column-left -->
305
- <?php if (defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ) { ?>
306
- <div class="pp-column-right">
307
- <?php
308
- $banners = new PublishPress\WordPressBanners\BannersMain;
309
- $banners->pp_display_banner(
310
- __( 'Recommendations for you', 'capsman-enhanced' ),
311
- __( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
312
- array(
313
- __( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
314
- __( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
315
- __( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
316
- ),
317
- admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
318
- __( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
319
- 'install-permissions.jpg'
320
- );
321
- ?>
322
- </div><!-- .pp-column-right -->
323
- <?php } ?>
324
- </div><!-- .pp-columns-wrapper -->
325
- </form>
326
-
327
- <script type="text/javascript">
328
- /* <![CDATA[ */
329
- jQuery(document).ready(function ($) {
330
-
331
- $('#cme_select_restore input[name="select_restore"]').on('change click', function () {
332
- $('div.cme-show-backup').hide();
333
-
334
- $('span.cme-selected-backup-caption').html($(this).next('label').html());
335
-
336
- var selected_val = $(this).val();
337
-
338
- $('td.cme-backup-info div').hide();
339
-
340
- switch (selected_val) {
341
- case 'restore_initial':
342
- $('#cme_display_capsman_backup_initial').addClass('current-display').show();
343
- break;
344
- case 'restore':
345
- $('#cme_display_capsman_backup').addClass('current-display').show();
346
- break;
347
- default:
348
- $('#cme_display_' + selected_val).addClass('current-display').show();
349
- }
350
-
351
- $('input.cme_backup_info_changes_only').click();
352
- $('div.cme_backup_info_changes_only').show();
353
- });
354
-
355
- $('input.cme_backup_info_changes_only').click(function() {
356
- $(this).attr('disabled', true);
357
- $('td.cme-backup-info div.current-display li:not(.cme-change)').toggle(!$(this).prop('checked'));
358
- $('span.pp-restore-caps-no-change').toggle($(this).prop('checked'));
359
- $(this).removeAttr('disabled');
360
- });
361
-
362
- $('#publishpress-capability-backup-tabs').find('li').click(function (e) {
363
- e.preventDefault();
364
- $('#publishpress-capability-backup-tabs').children('li').filter('.nav-tab-active').removeClass('nav-tab-active');
365
- $(this).addClass('nav-tab-active');
366
-
367
- $('dl[id^="ppcb-"]').hide();
368
- $($(this).find('a').first().attr('href')).show();
369
- });
370
-
371
- });
372
- /* ]]> */
373
- </script>
374
-
375
-
376
- <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
377
- cme_publishpressFooter();
378
- }
379
- ?>
380
- </div>
 
 
1
+ <?php
2
+ /**
3
+ * Capability Manager Backup Tool.
4
+ * Provides backup and restore functionality to Capability Manager.
5
+ *
6
+ * @version $Rev: 198515 $
7
+ * @author Jordi Canals
8
+ * @copyright Copyright (C) 2009, 2010 Jordi Canals
9
+ * @license GNU General Public License version 2
10
+ * @link http://alkivia.org
11
+ * @package Alkivia
12
+ * @subpackage CapsMan
13
+ *
14
+ *
15
+ * Copyright 2009, 2010 Jordi Canals <devel@jcanals.cat>
16
+ *
17
+ * Modifications Copyright 2020, PublishPress <help@publishpress.com>
18
+ *
19
+ * This program is free software; you can redistribute it and/or
20
+ * modify it under the terms of the GNU General Public License
21
+ * version 2 as published by the Free Software Foundation.
22
+ *
23
+ * This program is distributed in the hope that it will be useful,
24
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
+ * GNU General Public License for more details.
27
+ *
28
+ * You should have received a copy of the GNU General Public License
29
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
30
+ */
31
+
32
+ global $wpdb;
33
+
34
+ $auto_backups = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE 'cme_backup_auto_%' ORDER BY option_id DESC");
35
+ ?>
36
+
37
+ <div class="wrap publishpress-caps-manage publishpress-caps-backup pressshack-admin-wrapper">
38
+ <div id="icon-capsman-admin" class="icon32"></div>
39
+ <h2><?php printf(esc_html__('Backup Tool for %1$sPublishPress Capabilities%2$s', 'capsman-enhanced'), '<a href="admin.php?page=pp-capabilities">', '</a>'); ?></h2>
40
+
41
+
42
+ <form method="post" action="admin.php?page=pp-capabilities-backup">
43
+ <?php wp_nonce_field('pp-capabilities-backup'); ?>
44
+
45
+ <div class="pp-columns-wrapper<?php echo defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ? ' pp-enable-sidebar' : '' ?>">
46
+ <div class="pp-column-left">
47
+ <ul id="publishpress-capability-backup-tabs" class="nav-tab-wrapper">
48
+ <li class="nav-tab nav-tab-active"><a href="#ppcb-tab-restore"><?php esc_html_e('Restore', 'capsman-enhanced');?></a></li>
49
+ <li class="nav-tab"><a href="#ppcb-tab-backup"><?php esc_html_e('Backup', 'capsman-enhanced');?></a></li>
50
+ <li class="nav-tab"><a href="#ppcb-tab-reset"><?php esc_html_e('Reset Roles', 'capsman-enhanced');?></a></li>
51
+ </ul>
52
+
53
+ <fieldset>
54
+ <table id="akmin">
55
+ <tr>
56
+ <td class="content">
57
+
58
+ <dl id="ppcb-tab-backup" style="display:none;">
59
+ <dt><?php esc_html_e('Backup Roles and Capabilities', 'capsman-enhanced'); ?></dt>
60
+ <dd>
61
+ <p class="description">
62
+ <?php
63
+ $max_auto_backups = (defined('CME_AUTOBACKUPS')) ? (int) CME_AUTOBACKUPS : 20;
64
+ printf(esc_html__('PublishPress Capabilities automatically creates a backup on installation and whenever you save changes. The initial backup and last %d auto-backups are kept.', 'capsman-enhanced'), esc_attr($max_auto_backups));
65
+ ?>
66
+ </p>
67
+
68
+ <p class="description">
69
+ <?php esc_html_e('A backup created on this screen replaces any previous manual backups, but is never automatically replaced.', 'capsman-enhanced');?>
70
+ </p>
71
+
72
+ <div class="pp-caps-backup-button">
73
+ <input type="submit" name="save_backup"
74
+ value="<?php esc_attr_e('Manual Backup', 'capsman-enhanced') ?>"
75
+ class="button-primary"/>
76
+ </div>
77
+ </dd>
78
+
79
+ </dl>
80
+
81
+ <?php
82
+ $listed_manual_backup = false;
83
+ $backup_datestamp = get_option('capsman_backup_datestamp');
84
+ $last_caption = ($backup_datestamp) ? sprintf(esc_html__('Last Manual Backup - %s', 'capsman-enhanced'), date('j M Y, g:i a', $backup_datestamp)) : esc_html__('Last Backup', 'capsman-enhanced');
85
+ ?>
86
+
87
+ <dl id="ppcb-tab-restore">
88
+ <dt><?php esc_html_e('Restore Previous Roles and Capabilities', 'capsman-enhanced'); ?></dt>
89
+ <dd>
90
+ <p class="description">
91
+ <?php esc_html_e('PublishPress Capabilities automatically creates a backup on installation and whenever you save changes.', 'capsman-enhanced');?>
92
+ </p>
93
+
94
+ <p class="description">
95
+ <?php esc_html_e('On this screen, you can restore an earlier version of your roles and capabilities.', 'capsman-enhanced');?>
96
+ </p>
97
+
98
+ <table width='100%' class="form-table">
99
+ <tr>
100
+ <th scope="row"><?php esc_html_e('Available Backups:', 'capsman-enhanced'); ?></th>
101
+ <td>
102
+ <div id="cme_select_restore_div">
103
+ <ul id="cme_select_restore">
104
+ <?php foreach ($auto_backups as $row):
105
+ $arr = explode('_', str_replace('cme_backup_auto_', '', $row->option_name));
106
+ $arr[1] = str_replace('-', ':', $arr[1]);
107
+ $date_caption = implode(' ', $arr);
108
+
109
+ if (!$listed_manual_backup && ($backup_datestamp > strtotime($date_caption))) :
110
+ $manual_date_caption = date('Y-m-d, g:i a', $backup_datestamp);
111
+ ?>
112
+ <li>
113
+ <input type="radio" name="select_restore" value="restore" id="cme_restore_manual">
114
+ <label for="cme_restore_manual"><?php printf(esc_html__('Manual backup of all roles (%s)', 'capsman-enhanced'), esc_html($manual_date_caption)); ?></label>
115
+ </li>
116
+ <?php
117
+ $listed_manual_backup = true;
118
+ endif;
119
+ ?>
120
+
121
+ <?php
122
+ $date_caption = str_replace(' ', ', ', $date_caption);
123
+ $date_caption = str_replace(', am', ' am', $date_caption);
124
+ $date_caption = str_replace(', pm', ' pm', $date_caption);
125
+ ?>
126
+
127
+ <li>
128
+ <input type="radio" name="select_restore" value="<?php echo esc_attr($row->option_name);?>" id="<?php echo esc_attr($row->option_name);?>">
129
+ <label for="<?php echo esc_attr($row->option_name);?>"><?php printf(esc_html__('Auto-backup of all roles (%s)', 'capsman-enhanced'), esc_html($date_caption)); ?></label>
130
+ </li>
131
+ <?php endforeach; ?>
132
+
133
+ <?php
134
+ if ($initial = get_option('capsman_backup_initial')):?>
135
+ <li>
136
+ <input type="radio" name="select_restore" value="restore_initial" id="cme_restore_initial">
137
+ <label for="cme_restore_initial"><?php esc_html_e('Initial backup of all roles', 'capsman-enhanced'); ?></label>
138
+ </li>
139
+ <?php endif; ?>
140
+ <!-- </select> -->
141
+ </ul>
142
+ </div>
143
+
144
+ <div class="cme-restore-button">
145
+ <input type="submit" name="restore_backup"
146
+ value="<?php esc_attr_e('Restore Selected Roles', 'capsman-enhanced') ?>"
147
+ class="button-primary"/>
148
+
149
+ <div class="cme-selected-backup-caption">
150
+ <span class="cme-selected-backup-caption cme-subtext"></span>
151
+ </div>
152
+ </div>
153
+ </td>
154
+
155
+ <td class="cme-backup-info">
156
+ <div class="cme_backup_info_changes_only" style="display:none">
157
+ <input type="checkbox" class="cme_backup_info_changes_only" autocomplete="off" checked="checked"> <?php esc_html_e('Show changes from current roles only', 'capsman-enhanced');?>
158
+ </div>
159
+
160
+ <?php
161
+ global $wp_roles;
162
+
163
+ $backup_datestamp = get_option('capsman_backup_initial_datestamp');
164
+ $initial_caption = ($backup_datestamp) ? sprintf(esc_html__('Initial Backup - %s', 'capsman-enhanced'), date('j M Y, g:i a', $backup_datestamp)) : esc_html__('Initial Backup', 'capsman-enhanced');
165
+
166
+ $backups = array(
167
+ 'capsman_backup_initial' => $initial_caption,
168
+ );
169
+
170
+ if (empty($capsman_backup)) {
171
+ $backups['capsman_backup'] = $last_caption;
172
+ }
173
+
174
+ foreach ($auto_backups as $row) {
175
+ $arr = explode('_', str_replace('cme_backup_auto_', '', $row->option_name));
176
+ $arr[1] = str_replace('-', ':', $arr[1]);
177
+
178
+ $date_caption = implode(' ', $arr);
179
+ $date_caption = str_replace(' ', ', ', $date_caption);
180
+ $date_caption = str_replace(', am', ' am', $date_caption);
181
+ $date_caption = str_replace(', pm', ' pm', $date_caption);
182
+
183
+ $option_name = sanitize_key($row->option_name);
184
+ $backups[$option_name] = "Auto-backup from " . $date_caption;
185
+ }
186
+
187
+ foreach ($backups as $name => $caption) {
188
+ if ($backup_data = get_option($name)) :?>
189
+ <div id="cme_display_<?php echo esc_attr($name); ?>" style="display:none;"
190
+ class="cme-show-backup">
191
+ <h3><?php printf(esc_html__("%s (%s roles)", 'capsman-enhanded'), esc_html($caption), count($backup_data)); ?></h3>
192
+
193
+ <?php
194
+ foreach ($wp_roles->role_objects as $role_name => $role_object) {
195
+ if (empty($backup_data[$role_name])) {
196
+ $role_caption = $role_object->name;
197
+ ?>
198
+ <h4><span class="cme-change cme-minus"><?php echo (esc_html(translate_user_role($role_caption)));?></span> <?php esc_html_e('(this role will be removed if you restore backup)', 'capsman-enhanced');?></h4>
199
+ <?php
200
+ }
201
+ }
202
+ ?>
203
+
204
+ <?php foreach ($backup_data as $role_name => $props) :
205
+ if (isset($wp_roles->role_objects[$role_name]->capabilities)) {
206
+ $props['capabilities'] = array_merge(
207
+ array_fill_keys(array_keys($wp_roles->role_objects[$role_name]->capabilities), 0),
208
+ $props['capabilities']
209
+ );
210
+ }
211
+ ?>
212
+ <?php if (!isset($props['name'])) continue; ?>
213
+ <?php
214
+ $level = 0;
215
+ for ($i = 10; $i >= 0; $i--) {
216
+ if (!empty($props['capabilities']["level_{$i}"])) {
217
+ $level = $i;
218
+ break;
219
+ }
220
+ }
221
+ ?>
222
+ <?php
223
+ $role_caption = $props['name'];
224
+ $role_class = (empty($wp_roles->role_objects[$role_name])) ? 'cme-change cme-plus' : '';
225
+ ?>
226
+
227
+ <h4 class="<?php echo esc_attr($role_class);?>"><?php printf(esc_html__('%s (level %s)', 'capsman-enhanced'), esc_html(translate_user_role($role_caption)), esc_html($level)); ?></h4>
228
+
229
+ <?php
230
+ $items = [];
231
+ $any_changes = false;
232
+
233
+ ksort($props['capabilities']);
234
+ foreach ($props['capabilities'] as $cap_name => $val) :
235
+ if (0 === strpos($cap_name, 'level_')) continue;
236
+ ?>
237
+ <?php
238
+ if ($val && (empty($wp_roles->role_objects[$role_name]) || empty($wp_roles->role_objects[$role_name]->capabilities[$cap_name]))) {
239
+ $class = 'cme-change cme-plus';
240
+
241
+ } elseif ((false === $props['capabilities'][$cap_name]) && (!isset($wp_roles->role_objects[$role_name]->capabilities[$cap_name]) || false !== $wp_roles->role_objects[$role_name]->capabilities[$cap_name])) {
242
+ $class = 'cme-change cme-negate';
243
+
244
+ } elseif (!$val && !empty($wp_roles->role_objects[$role_name]->capabilities[$cap_name])) {
245
+ $class = 'cme-change cme-minus';
246
+ $cap_name = "&nbsp;&nbsp;" . esc_attr($cap_name) . "&nbsp;&nbsp;";
247
+ } else {
248
+ $class = '';
249
+ }
250
+
251
+ $items[$cap_name] = $class;
252
+
253
+ $any_changes = $any_changes || $class;
254
+ ?>
255
+ <?php endforeach; ?>
256
+
257
+ <?php if ($items) :?>
258
+ <ul class="pp-restore-caps">
259
+ <?php foreach($items as $cap_name => $class) :?>
260
+ <li class="<?php echo esc_attr($class);?>"><?php echo esc_html($cap_name);?></li>
261
+ <?php endforeach; ?>
262
+ </ul>
263
+ <?php endif;?>
264
+
265
+ <?php if (!$any_changes):?>
266
+ <span class="pp-restore-caps-no-change">
267
+ <?php esc_html_e('No changes', 'capsman-enhanced');?>
268
+ </span>
269
+ <?php endif;?>
270
+ <?php endforeach; ?>
271
+ </div>
272
+ <?php endif;
273
+ }
274
+ ?>
275
+ </td>
276
+ </tr>
277
+ </table>
278
+ </dd>
279
+ </dl>
280
+
281
+
282
+ <dl id="ppcb-tab-reset" style="display:none;">
283
+ <dt><?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) esc_html_e('Reset WordPress Defaults', 'capsman-enhanced'); else echo 'Reset Roles to WordPress Defaults'; ?></dt>
284
+ <dd>
285
+ <p><strong><span class="pp-caps-warning"><?php esc_html_e('WARNING:', 'capsman-enhanced'); ?></span> <?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) esc_html_e('Reseting default Roles and Capabilities will set them to the WordPress install defaults.', 'capsman-enhanced'); else echo 'This will delete and/or modify stored role definitions.'; ?>
286
+ </strong><br/>
287
+ <br/>
288
+ <?php
289
+ esc_html_e('If you have installed any plugin that adds new roles or capabilities, these will be lost.', 'capsman-enhanced') ?>
290
+ <br/>
291
+ <strong><?php if (!in_array(get_locale(), ['en_EN', 'en_US'])) esc_html_e('It is recommended to use this only as a last resource!', 'capsman-enhanced'); else echo('It is recommended to use this only as a last resort!'); ?></strong>
292
+ </p>
293
+ <p><a class="ak-delete button-primary"
294
+ title="<?php echo esc_attr__('Reset Roles and Capabilities to WordPress defaults', 'capsman-enhanced') ?>"
295
+ href="<?php echo esc_url_raw(wp_nonce_url("admin.php?page=pp-capabilities-backup&amp;action=reset-defaults", 'capsman-reset-defaults')); ?>"
296
+ onclick="if ( confirm('<?php echo esc_js(__("You are about to reset Roles and Capabilities to WordPress defaults.\n 'Cancel' to stop, 'OK' to reset.", 'capsman-enhanced')); ?>') ) { return true;}return false;"><?php esc_html_e('Reset to WordPress defaults', 'capsman-enhanced') ?></a>
297
+
298
+ </dd>
299
+ </dl>
300
+
301
+
302
+ </td>
303
+ </tr>
304
+ </table>
305
+ </fieldset>
306
+ </div><!-- .pp-column-left -->
307
+ <?php if (defined('CAPSMAN_PERMISSIONS_INSTALLED') && !CAPSMAN_PERMISSIONS_INSTALLED ) { ?>
308
+ <div class="pp-column-right">
309
+ <?php
310
+ $banners = new PublishPress\WordPressBanners\BannersMain;
311
+ $banners->pp_display_banner(
312
+ esc_html__( 'Recommendations for you', 'capsman-enhanced' ),
313
+ esc_html__( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
314
+ array(
315
+ esc_html__( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
316
+ esc_html__( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
317
+ esc_html__( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
318
+ ),
319
+ admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
320
+ esc_html__( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
321
+ 'install-permissions.jpg'
322
+ );
323
+ ?>
324
+ </div><!-- .pp-column-right -->
325
+ <?php } ?>
326
+ </div><!-- .pp-columns-wrapper -->
327
+ </form>
328
+
329
+ <script type="text/javascript">
330
+ /* <![CDATA[ */
331
+ jQuery(document).ready(function ($) {
332
+
333
+ $('#cme_select_restore input[name="select_restore"]').on('change click', function () {
334
+ $('div.cme-show-backup').hide();
335
+
336
+ $('span.cme-selected-backup-caption').html($(this).next('label').html());
337
+
338
+ var selected_val = $(this).val();
339
+
340
+ $('td.cme-backup-info div').hide();
341
+
342
+ switch (selected_val) {
343
+ case 'restore_initial':
344
+ $('#cme_display_capsman_backup_initial').addClass('current-display').show();
345
+ break;
346
+ case 'restore':
347
+ $('#cme_display_capsman_backup').addClass('current-display').show();
348
+ break;
349
+ default:
350
+ $('#cme_display_' + selected_val).addClass('current-display').show();
351
+ }
352
+
353
+ $('input.cme_backup_info_changes_only').click();
354
+ $('div.cme_backup_info_changes_only').show();
355
+ });
356
+
357
+ $('input.cme_backup_info_changes_only').click(function() {
358
+ $(this).attr('disabled', true);
359
+ $('td.cme-backup-info div.current-display li:not(.cme-change)').toggle(!$(this).prop('checked'));
360
+ $('span.pp-restore-caps-no-change').toggle($(this).prop('checked'));
361
+ $(this).removeAttr('disabled');
362
+ });
363
+
364
+ $('#publishpress-capability-backup-tabs').find('li').click(function (e) {
365
+ e.preventDefault();
366
+ $('#publishpress-capability-backup-tabs').children('li').filter('.nav-tab-active').removeClass('nav-tab-active');
367
+ $(this).addClass('nav-tab-active');
368
+
369
+ $('dl[id^="ppcb-"]').hide();
370
+ $($(this).find('a').first().attr('href')).show();
371
+ });
372
+
373
+ });
374
+ /* ]]> */
375
+ </script>
376
+
377
+
378
+ <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
379
+ cme_publishpressFooter();
380
+ }
381
+ ?>
382
+ </div>
includes/cap-helper.php CHANGED
@@ -136,9 +136,6 @@ class CME_Cap_Helper {
136
  continue;
137
  }
138
 
139
- // Default plural slug
140
- //$plural_type = "{$cap_base}s";
141
-
142
  $plural_type = _cme_get_plural( $post_type, $wp_post_types[$post_type] );
143
 
144
  if ( "{$cap_base}s" != $plural_type ) {
@@ -189,8 +186,6 @@ class CME_Cap_Helper {
189
 
190
  $wp_post_types[$post_type]->cap = (object) array_merge( (array) $wp_post_types[$post_type]->cap, $type_caps );
191
 
192
- //$this->all_type_caps = array_merge( $this->all_type_caps, array_fill_keys( $type_caps, true ) );
193
-
194
  foreach( array_unique( (array) $wp_post_types[$post_type]->cap ) as $cap_name ) {
195
  if ( ! isset( $this->all_type_caps[$cap_name] ) ) {
196
  $this->all_type_caps[$cap_name] = 1;
@@ -241,7 +236,6 @@ class CME_Cap_Helper {
241
 
242
  // count the number of taxonomies that use each capability
243
  foreach( $wp_taxonomies as $taxonomy => $tx_obj ) {
244
- //$this_tx_caps = array_unique( (array) $tx_obj->cap );
245
  $this_tx_caps = (array) $tx_obj->cap;
246
 
247
  foreach( $this_tx_caps as $cap_name ) {
@@ -267,9 +261,6 @@ class CME_Cap_Helper {
267
  continue;
268
 
269
  if ( ! in_array( $taxonomy, $core_taxonomies ) ) {
270
- // Default plural slug
271
- //$plural_type = "{$taxonomy}s";
272
-
273
  $plural_type = _cme_get_plural( $taxonomy, $wp_taxonomies[$taxonomy] );
274
 
275
  if ( "{$taxonomy}s" != $plural_type ) {
@@ -380,7 +371,6 @@ class CME_Cap_Helper {
380
  }
381
 
382
  // make sure Nav Menu Managers can also add menu items
383
- global $wp_taxonomies;
384
  $wp_taxonomies['nav_menu']->cap->assign_terms = 'manage_nav_menus';
385
 
386
  $this->processed_taxonomies = array_merge( $this->processed_taxonomies, $use_taxonomies );
136
  continue;
137
  }
138
 
 
 
 
139
  $plural_type = _cme_get_plural( $post_type, $wp_post_types[$post_type] );
140
 
141
  if ( "{$cap_base}s" != $plural_type ) {
186
 
187
  $wp_post_types[$post_type]->cap = (object) array_merge( (array) $wp_post_types[$post_type]->cap, $type_caps );
188
 
 
 
189
  foreach( array_unique( (array) $wp_post_types[$post_type]->cap ) as $cap_name ) {
190
  if ( ! isset( $this->all_type_caps[$cap_name] ) ) {
191
  $this->all_type_caps[$cap_name] = 1;
236
 
237
  // count the number of taxonomies that use each capability
238
  foreach( $wp_taxonomies as $taxonomy => $tx_obj ) {
 
239
  $this_tx_caps = (array) $tx_obj->cap;
240
 
241
  foreach( $this_tx_caps as $cap_name ) {
261
  continue;
262
 
263
  if ( ! in_array( $taxonomy, $core_taxonomies ) ) {
 
 
 
264
  $plural_type = _cme_get_plural( $taxonomy, $wp_taxonomies[$taxonomy] );
265
 
266
  if ( "{$taxonomy}s" != $plural_type ) {
371
  }
372
 
373
  // make sure Nav Menu Managers can also add menu items
 
374
  $wp_taxonomies['nav_menu']->cap->assign_terms = 'manage_nav_menus';
375
 
376
  $this->processed_taxonomies = array_merge( $this->processed_taxonomies, $use_taxonomies );
includes/features/admin-features.php CHANGED
@@ -34,7 +34,7 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
34
 
35
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
36
  <div id="icon-capsman-admin" class="icon32"></div>
37
- <h2><?php _e('Admin Feature Restrictions', 'capabilities-pro'); ?></h2>
38
 
39
  <form method="post" id="ppc-admin-features-form" action="admin.php?page=pp-capabilities-admin-features">
40
  <?php wp_nonce_field('pp-capabilities-admin-features'); ?>
@@ -50,7 +50,7 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
50
  <span class="cme-subtext">
51
  <span class='pp-capability-role-caption'>
52
  <?php
53
- _e('Note: You are only restricting access to admin features screens. Some plugins may also add features to other areas of WordPress.',
54
  'capabilities-pro');
55
  ?>
56
  </span>
@@ -59,21 +59,21 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
59
  <div class="publishpress-filters">
60
  <select name="ppc-admin-features-role" class="ppc-admin-features-role">
61
  <?php
62
- foreach ($roles as $role => $name) :
63
  $name = translate_user_role($name);
64
  ?>
65
- <option value="<?php echo $role; ?>" <?php selected($default_role,
66
- $role); ?>><?php echo $name; ?></option>
67
  <?php
68
  endforeach;
69
  ?>
70
  </select> &nbsp;
71
 
72
- <img class="loading" src="<?php echo $capsman->mod_url; ?>/images/wpspin_light.gif"
73
  style="display: none">
74
 
75
  <input type="submit" name="admin-features-submit"
76
- value="<?php _e('Save Changes', 'capabilities-pro') ?>"
77
  class="button-primary ppc-admin-features-submit" style="float:right"/>
78
  </div>
79
 
@@ -112,28 +112,28 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
112
  $icon_name = isset($icon_list[$section_slug]) ? $icon_list[$section_slug] : '&mdash;';
113
  ?>
114
 
115
- <tr class="ppc-menu-row parent-menu">
116
  <?php if ($section_slug === 'admintoolbar') :
117
  $restrict_value = 'ppc_adminbar||admintoolbar';
118
  ?>
119
  <td class="features-section-header restrict-column ppc-menu-checkbox" style="text-align: left;" colspan="2">
120
  <input
121
- id="check-item-<?php echo $sn; ?>"
122
  class="check-item" type="checkbox"
123
  name="capsman_disabled_admin_features[]"
124
- value="<?php echo $restrict_value; ?>"
125
  <?php echo (in_array($restrict_value, $disabled_admin_items)) ? 'checked' : ''; ?>/>
126
- <label for="check-item-<?php echo $sn; ?>">
127
  <strong class="menu-column ppc-menu-item menu-item-link<?php echo (in_array($restrict_value,
128
  $disabled_admin_items)) ? ' restricted' : ''; ?>">
129
- <i class="dashicons dashicons-<?php echo $icon_name ?>"></i> <?php echo $section_title; ?>
130
  </strong>
131
  </label>
132
  </td>
133
  <?php else : ?>
134
  <td class="features-section-header" colspan="2">
135
  <strong><i
136
- class="dashicons dashicons-<?php echo $icon_name ?>"></i> <?php echo $section_title; ?>
137
  </strong>
138
  </td>
139
  <?php endif; ?>
@@ -154,19 +154,19 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
154
  }
155
  ?>
156
 
157
- <tr class="ppc-menu-row child-menu">
158
 
159
  <td class="restrict-column ppc-menu-checkbox">
160
  <input
161
- id="check-item-<?php echo $sn; ?>"
162
  class="check-item" type="checkbox"
163
  name="capsman_disabled_admin_features[]"
164
- value="<?php echo $restrict_value; ?>"
165
  <?php echo (in_array($restrict_value, $disabled_admin_items)) ? 'checked' : ''; ?>/>
166
  </td>
167
  <td class="menu-column ppc-menu-item">
168
 
169
- <label for="check-item-<?php echo $sn; ?>">
170
  <span
171
  class="menu-item-link<?php echo (in_array($restrict_value,
172
  $disabled_admin_items)) ? ' restricted' : ''; ?>">
@@ -174,17 +174,24 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
174
  <?php
175
  if ((isset($section_array['step']) && $section_array['step'] > 0) && isset($section_array['parent']) && !empty($section_array['parent'])) {
176
  $step_margin = $section_array['step'] * 20;
177
- echo '<span style="margin-left: ' . $step_margin . 'px;"></span>';
178
  echo ' &mdash; ';
179
  } else {
180
  if (isset($icon_list[$section_id])) {
181
- echo '<i class="dashicons dashicons-' . $icon_list[$section_id] . '"></i>';
182
  } else {
183
  echo '&mdash;';
184
  }
185
  }
186
  ?>
187
- <?php echo $item_name; ?>
 
 
 
 
 
 
 
188
  </strong></span>
189
  </label>
190
  </td>
@@ -205,7 +212,7 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
205
  </div>
206
  </div>
207
  <input type="submit" name="admin-features-submit"
208
- value="<?php _e('Save Changes', 'capabilities-pro') ?>"
209
  class="button-primary ppc-admin-features-submit"/>
210
  </td>
211
  </tr>
@@ -218,15 +225,15 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
218
  <?php
219
  $banners = new PublishPress\WordPressBanners\BannersMain;
220
  $banners->pp_display_banner(
221
- __( 'Recommendations for you', 'capsman-enhanced' ),
222
- __( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
223
  array(
224
- __( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
225
- __( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
226
- __( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
227
  ),
228
  admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
229
- __( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
230
  'install-permissions.jpg'
231
  );
232
  ?>
@@ -243,13 +250,13 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
243
  // reload page for instant reflection if user is updating own role
244
  // -------------------------------------------------------------
245
  <?php if(!empty($ppc_page_reload) && (int)$ppc_page_reload === 1){ ?>
246
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . ''); ?>'
247
  <?php } ?>
248
 
249
  // -------------------------------------------------------------
250
  // Set form action attribute to include role
251
  // -------------------------------------------------------------
252
- $('#ppc-admin-features-form').attr('action', '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . ''); ?>')
253
 
254
  // -------------------------------------------------------------
255
  // Instant restricted item class
@@ -302,7 +309,7 @@ $admin_features_elements = PP_Capabilities_Admin_Features::elementsLayout();
302
  $('div.publishpress-caps-manage img.loading').show()
303
 
304
  //go to url
305
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-admin-features&role='); ?>' + $(this).val() + ''
306
 
307
  })
308
  })
34
 
35
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
36
  <div id="icon-capsman-admin" class="icon32"></div>
37
+ <h2><?php esc_html_e('Admin Feature Restrictions', 'capabilities-pro'); ?></h2>
38
 
39
  <form method="post" id="ppc-admin-features-form" action="admin.php?page=pp-capabilities-admin-features">
40
  <?php wp_nonce_field('pp-capabilities-admin-features'); ?>
50
  <span class="cme-subtext">
51
  <span class='pp-capability-role-caption'>
52
  <?php
53
+ esc_html_e('Note: You are only restricting access to admin features screens. Some plugins may also add features to other areas of WordPress.',
54
  'capabilities-pro');
55
  ?>
56
  </span>
59
  <div class="publishpress-filters">
60
  <select name="ppc-admin-features-role" class="ppc-admin-features-role">
61
  <?php
62
+ foreach ($roles as $role_name => $name) :
63
  $name = translate_user_role($name);
64
  ?>
65
+ <option value="<?php echo esc_attr($role_name); ?>" <?php selected($default_role,
66
+ $role_name); ?>><?php echo esc_html($name); ?></option>
67
  <?php
68
  endforeach;
69
  ?>
70
  </select> &nbsp;
71
 
72
+ <img class="loading" src="<?php echo esc_url_raw($capsman->mod_url); ?>/images/wpspin_light.gif"
73
  style="display: none">
74
 
75
  <input type="submit" name="admin-features-submit"
76
+ value="<?php esc_attr_e('Save Changes', 'capabilities-pro') ?>"
77
  class="button-primary ppc-admin-features-submit" style="float:right"/>
78
  </div>
79
 
112
  $icon_name = isset($icon_list[$section_slug]) ? $icon_list[$section_slug] : '&mdash;';
113
  ?>
114
 
115
+ <tr class="ppc-menu-row parent-menu <?php echo esc_attr($section_slug); ?>">
116
  <?php if ($section_slug === 'admintoolbar') :
117
  $restrict_value = 'ppc_adminbar||admintoolbar';
118
  ?>
119
  <td class="features-section-header restrict-column ppc-menu-checkbox" style="text-align: left;" colspan="2">
120
  <input
121
+ id="check-item-<?php echo (int) $sn; ?>"
122
  class="check-item" type="checkbox"
123
  name="capsman_disabled_admin_features[]"
124
+ value="<?php echo esc_attr($restrict_value); ?>"
125
  <?php echo (in_array($restrict_value, $disabled_admin_items)) ? 'checked' : ''; ?>/>
126
+ <label for="check-item-<?php echo (int) $sn; ?>">
127
  <strong class="menu-column ppc-menu-item menu-item-link<?php echo (in_array($restrict_value,
128
  $disabled_admin_items)) ? ' restricted' : ''; ?>">
129
+ <i class="dashicons dashicons-<?php echo esc_attr($icon_name) ?>"></i> <?php echo esc_html($section_title); ?>
130
  </strong>
131
  </label>
132
  </td>
133
  <?php else : ?>
134
  <td class="features-section-header" colspan="2">
135
  <strong><i
136
+ class="dashicons dashicons-<?php echo esc_attr($icon_name) ?>"></i> <?php echo esc_html($section_title); ?>
137
  </strong>
138
  </td>
139
  <?php endif; ?>
154
  }
155
  ?>
156
 
157
+ <tr class="ppc-menu-row child-menu <?php echo esc_attr($section_slug); ?>">
158
 
159
  <td class="restrict-column ppc-menu-checkbox">
160
  <input
161
+ id="check-item-<?php echo (int) $sn; ?>"
162
  class="check-item" type="checkbox"
163
  name="capsman_disabled_admin_features[]"
164
+ value="<?php echo esc_attr($restrict_value); ?>"
165
  <?php echo (in_array($restrict_value, $disabled_admin_items)) ? 'checked' : ''; ?>/>
166
  </td>
167
  <td class="menu-column ppc-menu-item">
168
 
169
+ <label for="check-item-<?php echo (int) $sn; ?>">
170
  <span
171
  class="menu-item-link<?php echo (in_array($restrict_value,
172
  $disabled_admin_items)) ? ' restricted' : ''; ?>">
174
  <?php
175
  if ((isset($section_array['step']) && $section_array['step'] > 0) && isset($section_array['parent']) && !empty($section_array['parent'])) {
176
  $step_margin = $section_array['step'] * 20;
177
+ echo '<span style="margin-left: ' . (int) $step_margin . 'px;"></span>';
178
  echo ' &mdash; ';
179
  } else {
180
  if (isset($icon_list[$section_id])) {
181
+ echo '<i class="dashicons dashicons-' . esc_attr($icon_list[$section_id]) . '"></i>';
182
  } else {
183
  echo '&mdash;';
184
  }
185
  }
186
  ?>
187
+ <?php
188
+ if(isset($section_array['custom_element']) && ($section_array['custom_element'] === true)){
189
+ echo esc_html($section_array['element_label']) . ' <small class="entry">(' . esc_html($section_array['element_items']). ')</small> &nbsp; '
190
+ . '<span class="' . esc_attr($section_array['button_class']) . '" data-id="' . esc_attr($section_array['button_data_id']) . '"><small>(' . esc_html__('Delete', 'capabilities-pro') . ')</small></span>' . '';
191
+ }else{
192
+ echo esc_html($item_name);
193
+ }
194
+ ?>
195
  </strong></span>
196
  </label>
197
  </td>
212
  </div>
213
  </div>
214
  <input type="submit" name="admin-features-submit"
215
+ value="<?php esc_attr_e('Save Changes', 'capabilities-pro') ?>"
216
  class="button-primary ppc-admin-features-submit"/>
217
  </td>
218
  </tr>
225
  <?php
226
  $banners = new PublishPress\WordPressBanners\BannersMain;
227
  $banners->pp_display_banner(
228
+ esc_html__( 'Recommendations for you', 'capsman-enhanced' ),
229
+ esc_html__( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
230
  array(
231
+ esc_html__( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
232
+ esc_html__( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
233
+ esc_html__( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
234
  ),
235
  admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
236
+ esc_html__( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
237
  'install-permissions.jpg'
238
  );
239
  ?>
250
  // reload page for instant reflection if user is updating own role
251
  // -------------------------------------------------------------
252
  <?php if(!empty($ppc_page_reload) && (int)$ppc_page_reload === 1){ ?>
253
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . '')); ?>'
254
  <?php } ?>
255
 
256
  // -------------------------------------------------------------
257
  // Set form action attribute to include role
258
  // -------------------------------------------------------------
259
+ $('#ppc-admin-features-form').attr('action', '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-features&role=' . $default_role . '')); ?>')
260
 
261
  // -------------------------------------------------------------
262
  // Instant restricted item class
309
  $('div.publishpress-caps-manage img.loading').show()
310
 
311
  //go to url
312
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-admin-features&role=')); ?>' + $(this).val() + ''
313
 
314
  })
315
  })
includes/features/editor-features-classic.php CHANGED
@@ -16,27 +16,27 @@ if (count($def_post_types) > 6) {
16
  <?php
17
  }
18
 
19
- foreach($def_post_types as $post_type) {
20
- $_disabled = get_option("capsman_feature_restrict_classic_{$post_type}", []);
21
- $ce_post_disabled[$post_type] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
22
  }
23
  ?>
24
 
25
  <table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-classic" <?php if (empty($_REQUEST['ppc-tab']) || ('classic' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
26
- <?php foreach(['thead', 'tfoot'] as $tag):?>
27
- <<?php echo $tag;?>>
28
  <tr>
29
- <th class="menu-column"><?php if ('thead' == $tag || !defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {_e('Classic Editor Screen', 'capsman-enhanced');}?></th>
30
 
31
- <?php foreach($def_post_types as $post_type) :
32
- $type_obj = get_post_type_object($post_type);
33
  ?>
34
- <th class="restrict-column ppc-menu-row"><?php printf(__('%s Restrict', 'capsman-enhanced'), $type_obj->labels->singular_name);?><br />
35
- <input class="check-item classic check-all-menu-item" type="checkbox" title="<?php _e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo $post_type;?>" />
36
  </th>
37
  <?php endforeach;?>
38
  </tr>
39
- </<?php echo $tag;?>>
40
  <?php endforeach;?>
41
 
42
  <tbody>
@@ -46,7 +46,7 @@ foreach($def_post_types as $post_type) {
46
  ?>
47
  <tr class="ppc-menu-row parent-menu">
48
  <td colspan="<?php echo (count($def_post_types) + 1);?>">
49
- <h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
50
  <?php
51
  /**
52
  * Add support for section description
@@ -72,15 +72,22 @@ foreach($def_post_types as $post_type) {
72
  <td class="menu-column ppc-menu-item">
73
  <span class="classic menu-item-link<?php echo (in_array($feature_slug, $ce_post_disabled['post'])) ? ' restricted' : ''; ?>">
74
  <strong><i class="dashicons dashicons-arrow-right"></i>
75
- <?php echo $arr_feature['label']; ?>
 
 
 
 
 
 
 
76
  </strong></span>
77
  </td>
78
 
79
- <?php foreach($def_post_types as $post_type) :?>
80
  <td class="restrict-column ppc-menu-checkbox">
81
- <input id="cb_<?php echo $post_type . '-' . str_replace(['#', '.'], '_', $feature_slug);?>" class="check-item" type="checkbox"
82
- name="capsman_feature_restrict_classic_<?php echo $post_type;?>[]"
83
- value="<?php echo $feature_slug; ?>" <?php checked(in_array($feature_slug, $ce_post_disabled[$post_type]));?> />
84
  </td>
85
  <?php endforeach;?>
86
  </tr>
16
  <?php
17
  }
18
 
19
+ foreach($def_post_types as $type_name) {
20
+ $_disabled = get_option("capsman_feature_restrict_classic_{$type_name}", []);
21
+ $ce_post_disabled[$type_name] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
22
  }
23
  ?>
24
 
25
  <table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-classic" <?php if (empty($_REQUEST['ppc-tab']) || ('classic' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
26
+ <?php foreach(['thead', 'tfoot'] as $tag_name):?>
27
+ <<?php echo esc_attr($tag_name);?>>
28
  <tr>
29
+ <th class="menu-column"><?php if ('thead' == $tag_name || !defined('PUBLISHPRESS_CAPS_PRO_VERSION')) {esc_html_e('Classic Editor Screen', 'capsman-enhanced');}?></th>
30
 
31
+ <?php foreach($def_post_types as $type_name) :
32
+ $type_obj = get_post_type_object($type_name);
33
  ?>
34
+ <th class="restrict-column ppc-menu-row"><?php printf(esc_html__('%s Restrict', 'capsman-enhanced'), esc_html($type_obj->labels->singular_name));?><br />
35
+ <input class="check-item classic check-all-menu-item" type="checkbox" title="<?php esc_attr_e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo esc_attr($type_name);?>" />
36
  </th>
37
  <?php endforeach;?>
38
  </tr>
39
+ </<?php echo esc_attr($tag_name);?>>
40
  <?php endforeach;?>
41
 
42
  <tbody>
46
  ?>
47
  <tr class="ppc-menu-row parent-menu">
48
  <td colspan="<?php echo (count($def_post_types) + 1);?>">
49
+ <h4 class="ppc-menu-row-section"><?php echo esc_html($section_title);?></h4>
50
  <?php
51
  /**
52
  * Add support for section description
72
  <td class="menu-column ppc-menu-item">
73
  <span class="classic menu-item-link<?php echo (in_array($feature_slug, $ce_post_disabled['post'])) ? ' restricted' : ''; ?>">
74
  <strong><i class="dashicons dashicons-arrow-right"></i>
75
+ <?php
76
+ if(isset($arr_feature['custom_element']) && ($arr_feature['custom_element'] === true)){
77
+ echo esc_html($arr_feature['element_label']) . ' <small class="entry">(' . esc_html($arr_feature['element_items']). ')</small> &nbsp; '
78
+ . '<span class="' . esc_attr($arr_feature['button_class']) . '" data-id="' . esc_attr($arr_feature['button_data_id']) . '" data-parent="' . esc_attr($arr_feature['button_data_parent']) . '"><small>(' . esc_html__('Delete', 'capsman-enhanced') . ')</small></span>';
79
+ }else{
80
+ echo esc_html($arr_feature['label']);
81
+ }
82
+ ?>
83
  </strong></span>
84
  </td>
85
 
86
+ <?php foreach($def_post_types as $type_name) :?>
87
  <td class="restrict-column ppc-menu-checkbox">
88
+ <input id="cb_<?php echo esc_attr($type_name) . '-' . esc_attr(str_replace(['#', '.'], '_', $feature_slug));?>" class="check-item" type="checkbox"
89
+ name="capsman_feature_restrict_classic_<?php echo esc_attr($type_name);?>[]"
90
+ value="<?php echo esc_attr($feature_slug); ?>" <?php checked(in_array($feature_slug, $ce_post_disabled[$type_name]));?> />
91
  </td>
92
  <?php endforeach;?>
93
  </tr>
includes/features/editor-features-gutenberg.php CHANGED
@@ -16,27 +16,27 @@ if (count($def_post_types) > 6) {
16
  <?php
17
  }
18
 
19
- foreach($def_post_types as $post_type) {
20
- $_disabled = get_option("capsman_feature_restrict_{$post_type}", []);
21
- $gutenberg_post_disabled[$post_type] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
22
  }
23
  ?>
24
 
25
  <table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-gutenberg" <?php if (!empty($_REQUEST['ppc-tab']) && ('gutenberg' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
26
- <?php foreach(['thead', 'tfoot'] as $tag):?>
27
- <<?php echo $tag;?>>
28
  <tr>
29
- <th class="menu-column"><?php if ('thead' == $tag) {_e('Gutenberg Screen', 'capsman-enhanced');}?></th>
30
 
31
- <?php foreach($def_post_types as $post_type) :
32
- $type_obj = get_post_type_object($post_type);
33
  ?>
34
- <th class="restrict-column ppc-menu-row"><?php printf(__('%s Restrict', 'capsman-enhanced'), $type_obj->labels->singular_name);?><br />
35
- <input class="check-item gutenberg check-all-menu-item" type="checkbox" title="<?php _e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo $post_type;?>" />
36
  </th>
37
  <?php endforeach;?>
38
  </tr>
39
- </<?php echo $tag;?>>
40
  <?php endforeach;?>
41
 
42
  <tbody>
@@ -46,7 +46,7 @@ foreach($def_post_types as $post_type) {
46
  ?>
47
  <tr class="ppc-menu-row parent-menu">
48
  <td colspan="<?php echo (count($def_post_types) + 1);?>">
49
- <h4 class="ppc-menu-row-section"><?php echo $section_title;?></h4>
50
  <?php
51
  /**
52
  * Add support for section description
@@ -64,20 +64,29 @@ foreach($def_post_types as $post_type) {
64
 
65
  <?php
66
  foreach ($arr as $feature_slug => $arr_feature) {
 
 
67
  ?>
68
  <tr class="ppc-menu-row parent-menu">
69
  <td class="menu-column ppc-menu-item">
70
  <span class="gutenberg menu-item-link<?php checked(in_array($feature_slug, $gutenberg_post_disabled['post']), true, 'restricted');?>">
71
  <strong><i class="dashicons dashicons-arrow-right"></i>
72
- <?php echo $arr_feature['label']; ?>
 
 
 
 
 
 
 
73
  </strong></span>
74
  </td>
75
 
76
- <?php foreach($def_post_types as $post_type) :?>
77
  <td class="restrict-column ppc-menu-checkbox">
78
- <input id="check-item-<?php echo "{$post_type}-{$feature_slug}";?>" class="check-item" type="checkbox"
79
- name="capsman_feature_restrict_<?php echo $post_type;?>[]"
80
- value="<?php echo $feature_slug;?>"<?php checked(in_array($feature_slug, $gutenberg_post_disabled[$post_type]));?> />
81
  </td>
82
  <?php endforeach;?>
83
  </tr>
16
  <?php
17
  }
18
 
19
+ foreach($def_post_types as $type_name) {
20
+ $_disabled = get_option("capsman_feature_restrict_{$type_name}", []);
21
+ $gutenberg_post_disabled[$type_name] = !empty($_disabled[$default_role]) ? (array)$_disabled[$default_role] : [];
22
  }
23
  ?>
24
 
25
  <table class="wp-list-table widefat fixed striped pp-capability-menus-select editor-features-gutenberg" <?php if (!empty($_REQUEST['ppc-tab']) && ('gutenberg' != $_REQUEST['ppc-tab'])) echo 'style="display:none;"';?>>
26
+ <?php foreach(['thead', 'tfoot'] as $tag_name):?>
27
+ <<?php echo esc_attr($tag_name);?>>
28
  <tr>
29
+ <th class="menu-column"><?php if ('thead' == $tag_name) {esc_html_e('Gutenberg Screen', 'capsman-enhanced');}?></th>
30
 
31
+ <?php foreach($def_post_types as $type_name) :
32
+ $type_obj = get_post_type_object($type_name);
33
  ?>
34
+ <th class="restrict-column ppc-menu-row"><?php printf(esc_html__('%s Restrict', 'capsman-enhanced'), esc_html($type_obj->labels->singular_name));?><br />
35
+ <input class="check-item gutenberg check-all-menu-item" type="checkbox" title="<?php esc_attr_e('Toggle all', 'capsman-enhanced');?>" data-pp_type="<?php echo esc_attr($type_name);?>" />
36
  </th>
37
  <?php endforeach;?>
38
  </tr>
39
+ </<?php echo esc_attr($tag_name);?>>
40
  <?php endforeach;?>
41
 
42
  <tbody>
46
  ?>
47
  <tr class="ppc-menu-row parent-menu">
48
  <td colspan="<?php echo (count($def_post_types) + 1);?>">
49
+ <h4 class="ppc-menu-row-section"><?php echo esc_html($section_title);?></h4>
50
  <?php
51
  /**
52
  * Add support for section description
64
 
65
  <?php
66
  foreach ($arr as $feature_slug => $arr_feature) {
67
+ $feature_slug = esc_attr($feature_slug);
68
+
69
  ?>
70
  <tr class="ppc-menu-row parent-menu">
71
  <td class="menu-column ppc-menu-item">
72
  <span class="gutenberg menu-item-link<?php checked(in_array($feature_slug, $gutenberg_post_disabled['post']), true, 'restricted');?>">
73
  <strong><i class="dashicons dashicons-arrow-right"></i>
74
+ <?php
75
+ if(isset($arr_feature['custom_element']) && ($arr_feature['custom_element'] === true)){
76
+ echo esc_html($arr_feature['element_label']) . ' <small class="entry">(' . esc_html($arr_feature['element_items']). ')</small> &nbsp; '
77
+ . '<span class="' . esc_attr($arr_feature['button_class']) . '" data-id="' . esc_attr($arr_feature['button_data_id']) . '" data-parent="' . esc_attr($arr_feature['button_data_parent']) . '"><small>(' . esc_html__('Delete', 'capsman-enhanced') . ')</small></span>';
78
+ }else{
79
+ echo esc_html($arr_feature['label']);
80
+ }
81
+ ?>
82
  </strong></span>
83
  </td>
84
 
85
+ <?php foreach($def_post_types as $type_name) :?>
86
  <td class="restrict-column ppc-menu-checkbox">
87
+ <input id="check-item-<?php echo esc_attr($type_name) . '-' . esc_attr($feature_slug);?>" class="check-item" type="checkbox"
88
+ name="capsman_feature_restrict_<?php echo esc_attr($type_name);?>[]"
89
+ value="<?php echo esc_attr($feature_slug);?>"<?php checked(in_array($feature_slug, $gutenberg_post_disabled[$type_name]));?> />
90
  </td>
91
  <?php endforeach;?>
92
  </tr>
includes/features/editor-features.php CHANGED
@@ -29,7 +29,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
29
  ?>
30
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
31
  <div id="icon-capsman-admin" class="icon32"></div>
32
- <h2><?php _e('Editor Feature Restriction', 'capsman-enhanced'); ?></h2>
33
 
34
  <form method="post" id="ppc-editor-features-form"
35
  action="admin.php?page=pp-capabilities-editor-features">
@@ -45,7 +45,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
45
  <span class="cme-subtext">
46
  <span class='pp-capability-role-caption'>
47
  <?php
48
- _e('Select editor features to remove. Note that this screen cannot be used to grant additional features to any role.', 'capabilities-pro');
49
  ?>
50
  </span>
51
  </span>
@@ -54,19 +54,19 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
54
  <div class="publishpress-filters">
55
  <select name="ppc-editor-features-role" class="ppc-editor-features-role">
56
  <?php
57
- foreach ($roles as $role => $name) :
58
  $name = translate_user_role($name);
59
  ?>
60
- <option value="<?php echo $role;?>" <?php selected($default_role, $role);?>><?php echo $name;?></option>
61
  <?php
62
  endforeach;
63
  ?>
64
  </select> &nbsp;
65
 
66
- <img class="loading" src="<?php echo $capsman->mod_url; ?>/images/wpspin_light.gif" style="display: none">
67
 
68
  <input type="submit" name="editor-features-submit"
69
- value="<?php _e('Save Changes', 'capabilities-pro') ?>"
70
  class="button-primary ppc-editor-features-submit" style="float:right" />
71
 
72
  <input type="hidden" name="ppc-tab" value="<?php echo (!empty($_REQUEST['ppc-tab'])) ? sanitize_key($_REQUEST['ppc-tab']) : 'gutenberg';?>" />
@@ -89,10 +89,10 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
89
  <?php if ($classic_editor) { ?>
90
  <ul class="nav-tab-wrapper">
91
  <li class="editor-features-tab gutenberg-tab nav-tab <?php if (empty($_REQUEST['ppc-tab']) || ('gutenberg' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
92
- data-tab=".editor-features-gutenberg"><a href="#"><?php _e('Gutenberg', 'capsman-enhanced') ?></a></li>
93
 
94
  <li class="editor-features-tab classic-tab nav-tab <?php if (!empty($_REQUEST['ppc-tab']) && ('classic' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
95
- data-tab=".editor-features-classic"><a href="#"><?php _e('Classic', 'capsman-enhanced') ?></a></li>
96
  </ul>
97
  <?php } ?>
98
 
@@ -119,7 +119,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
119
  </div>
120
 
121
  <input type="submit" name="editor-features-submit"
122
- value="<?php _e('Save Changes', 'capsman-enhanced') ?>"
123
  class="button-primary ppc-editor-features-submit"/> &nbsp;
124
 
125
 
@@ -132,15 +132,15 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
132
  <?php
133
  $banners = new PublishPress\WordPressBanners\BannersMain;
134
  $banners->pp_display_banner(
135
- __( 'Recommendations for you', 'capsman-enhanced' ),
136
- __( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
137
  array(
138
- __( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
139
- __( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
140
- __( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
141
  ),
142
  admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
143
- __( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
144
  'install-permissions.jpg'
145
  );
146
  ?>
@@ -173,7 +173,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
173
  // -------------------------------------------------------------
174
  // Set form action attribute to include role
175
  // -------------------------------------------------------------
176
- $('#ppc-editor-features-form').attr('action', '<?php echo admin_url('admin.php?page=pp-capabilities-editor-features&role=' . $default_role . ''); ?>');
177
 
178
  // -------------------------------------------------------------
179
  // Instant restricted item class
@@ -235,7 +235,7 @@ $classic_editor = pp_capabilities_is_classic_editor_available();
235
  $('div.publishpress-caps-manage img.loading').show();
236
 
237
  //go to url
238
- window.location = '<?php echo admin_url('admin.php?page=pp-capabilities-editor-features&role='); ?>' + $(this).val() + '';
239
 
240
  });
241
 
29
  ?>
30
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-menus-wrapper">
31
  <div id="icon-capsman-admin" class="icon32"></div>
32
+ <h2><?php esc_html_e('Editor Feature Restriction', 'capsman-enhanced'); ?></h2>
33
 
34
  <form method="post" id="ppc-editor-features-form"
35
  action="admin.php?page=pp-capabilities-editor-features">
45
  <span class="cme-subtext">
46
  <span class='pp-capability-role-caption'>
47
  <?php
48
+ esc_html_e('Select editor features to remove. Note that this screen cannot be used to grant additional features to any role.', 'capabilities-pro');
49
  ?>
50
  </span>
51
  </span>
54
  <div class="publishpress-filters">
55
  <select name="ppc-editor-features-role" class="ppc-editor-features-role">
56
  <?php
57
+ foreach ($roles as $role_name => $name) :
58
  $name = translate_user_role($name);
59
  ?>
60
+ <option value="<?php echo esc_attr($role_name);?>" <?php selected($default_role, $role_name);?>><?php echo esc_html($name);?></option>
61
  <?php
62
  endforeach;
63
  ?>
64
  </select> &nbsp;
65
 
66
+ <img class="loading" src="<?php echo esc_url_raw($capsman->mod_url); ?>/images/wpspin_light.gif" style="display: none">
67
 
68
  <input type="submit" name="editor-features-submit"
69
+ value="<?php esc_attr_e('Save Changes', 'capabilities-pro') ?>"
70
  class="button-primary ppc-editor-features-submit" style="float:right" />
71
 
72
  <input type="hidden" name="ppc-tab" value="<?php echo (!empty($_REQUEST['ppc-tab'])) ? sanitize_key($_REQUEST['ppc-tab']) : 'gutenberg';?>" />
89
  <?php if ($classic_editor) { ?>
90
  <ul class="nav-tab-wrapper">
91
  <li class="editor-features-tab gutenberg-tab nav-tab <?php if (empty($_REQUEST['ppc-tab']) || ('gutenberg' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
92
+ data-tab=".editor-features-gutenberg"><a href="#"><?php esc_html_e('Gutenberg', 'capsman-enhanced') ?></a></li>
93
 
94
  <li class="editor-features-tab classic-tab nav-tab <?php if (!empty($_REQUEST['ppc-tab']) && ('classic' == $_REQUEST['ppc-tab'])) echo 'nav-tab-active';?>"
95
+ data-tab=".editor-features-classic"><a href="#"><?php esc_html_e('Classic', 'capsman-enhanced') ?></a></li>
96
  </ul>
97
  <?php } ?>
98
 
119
  </div>
120
 
121
  <input type="submit" name="editor-features-submit"
122
+ value="<?php esc_attr_e('Save Changes', 'capsman-enhanced') ?>"
123
  class="button-primary ppc-editor-features-submit"/> &nbsp;
124
 
125
 
132
  <?php
133
  $banners = new PublishPress\WordPressBanners\BannersMain;
134
  $banners->pp_display_banner(
135
+ esc_html__( 'Recommendations for you', 'capsman-enhanced' ),
136
+ esc_html__( 'Control permissions for individual posts and pages', 'capsman-enhanced' ),
137
  array(
138
+ esc_html__( 'Choose who can read and edit each post.', 'capsman-enhanced' ),
139
+ esc_html__( 'Allow specific user roles or users to manage each post.', 'capsman-enhanced' ),
140
+ esc_html__( 'PublishPress Permissions is 100% free to install.', 'capsman-enhanced' )
141
  ),
142
  admin_url( 'plugin-install.php?s=publishpress-ppcore-install&tab=search&type=term' ),
143
+ esc_html__( 'Click here to install PublishPress Permissions', 'capsman-enhanced' ),
144
  'install-permissions.jpg'
145
  );
146
  ?>
173
  // -------------------------------------------------------------
174
  // Set form action attribute to include role
175
  // -------------------------------------------------------------
176
+ $('#ppc-editor-features-form').attr('action', '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-editor-features&role=' . $default_role . '')); ?>');
177
 
178
  // -------------------------------------------------------------
179
  // Instant restricted item class
235
  $('div.publishpress-caps-manage img.loading').show();
236
 
237
  //go to url
238
+ window.location = '<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities-editor-features&role=')); ?>' + $(this).val() + '';
239
 
240
  });
241
 
includes/features/restrict-admin-features.php CHANGED
@@ -13,13 +13,13 @@ class PP_Capabilities_Admin_Features
13
  $elements = [];
14
 
15
  //Add header and footer
16
- $elements[__('Header and Footer', 'capsman-enhanced')] = self::formatHeaderFooter();
17
 
18
  //Add toolbar
19
- $elements[__('Admin Toolbar', 'capsman-enhanced')] = self::formatAdminToolbar();
20
 
21
  //Add dashboard widget
22
- $elements[__('Dashboard widgets', 'capsman-enhanced')] = self::formatDashboardWidgets();
23
 
24
  return apply_filters('pp_capabilities_admin_features_elements', $elements);
25
  }
@@ -56,17 +56,17 @@ class PP_Capabilities_Admin_Features
56
  {
57
  $title = [];
58
 
59
- $title['menu-toggle'] = __('Mobile Menu Toggle', 'capsman-enhanced');
60
- $title['wp-logo'] = __('WordPress Logo', 'capsman-enhanced');
61
- $title['wp-logo-external'] = __('WordPress External Links', 'capsman-enhanced');
62
- $title['updates'] = __('Updates', 'capsman-enhanced');
63
- $title['comments'] = __('Comments', 'capsman-enhanced');
64
- $title['top-secondary'] = __('Right bar', 'capsman-enhanced');
65
- $title['user-actions'] = __('User actions', 'capsman-enhanced');
66
- $title['new-content'] = __('New', 'capsman-enhanced');
67
- $title['new-content'] = __('New', 'capsman-enhanced');
68
- $title['user-info'] = __('User Display Name', 'capsman-enhanced');
69
- $title['wpseo-menu'] = __('Yoast SEO', 'capsman-enhanced');
70
 
71
  return isset($title[$id]) ? $title[$id] : $id;
72
  }
@@ -78,10 +78,10 @@ class PP_Capabilities_Admin_Features
78
  */
79
  public static function formatHeaderFooter()
80
  {
81
- $elements_item['screen_options'] = ['label' => __('Screen Options', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
82
- $elements_item['screen_help'] = ['label' => __('Help', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
83
- $elements_item['footer_thankyou'] = ['label' => __('Thank you for creating with WordPress', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
84
- $elements_item['footer_upgrade'] = ['label' => sprintf( __( 'Version %s' ), get_bloginfo('version'), 'capsman-enhanced' ), 'action' => 'ppc_header_footer'];
85
 
86
  return $elements_item;
87
  }
@@ -130,7 +130,7 @@ class PP_Capabilities_Admin_Features
130
 
131
  $elements_widget = [];
132
  //add widget that may not be part of wp_meta_boxes
133
- $elements_widget['dashboard_welcome_panel'] = ['label' => __('Welcome panel', 'capsman-enhanced'), 'context' => 'normal', 'action' => 'ppc_dashboard_widget'];
134
  //loop other widgets
135
  foreach ($widgets as $context => $priority) {
136
  foreach ($priority as $data) {
@@ -305,7 +305,7 @@ class PP_Capabilities_Admin_Features
305
  if(count($ppc_header_footer) > 0){
306
  self::disableHeaderFooterElement($ppc_header_footer);
307
  }
308
- }
309
  }
310
 
311
  /**
@@ -317,7 +317,7 @@ class PP_Capabilities_Admin_Features
317
  add_filter( 'screen_options_show_screen', '__return_false', 999 );
318
  }
319
  if(in_array('ppc_header_footer||screen_help', $ppc_header_footer)){
320
- add_filter('admin_head', [__CLASS__, 'contextual_help_list_remove'], 999);
321
  }
322
  if(in_array('ppc_header_footer||footer_thankyou', $ppc_header_footer)){
323
  add_filter( 'admin_footer_text', '__return_false', 999 );
13
  $elements = [];
14
 
15
  //Add header and footer
16
+ $elements[esc_html__('Header and Footer', 'capsman-enhanced')] = self::formatHeaderFooter();
17
 
18
  //Add toolbar
19
+ $elements[esc_html__('Admin Toolbar', 'capsman-enhanced')] = self::formatAdminToolbar();
20
 
21
  //Add dashboard widget
22
+ $elements[esc_html__('Dashboard widgets', 'capsman-enhanced')] = self::formatDashboardWidgets();
23
 
24
  return apply_filters('pp_capabilities_admin_features_elements', $elements);
25
  }
56
  {
57
  $title = [];
58
 
59
+ $title['menu-toggle'] = esc_html__('Mobile Menu Toggle', 'capsman-enhanced');
60
+ $title['wp-logo'] = esc_html__('WordPress Logo', 'capsman-enhanced');
61
+ $title['wp-logo-external'] = esc_html__('WordPress External Links', 'capsman-enhanced');
62
+ $title['updates'] = esc_html__('Updates', 'capsman-enhanced');
63
+ $title['comments'] = esc_html__('Comments', 'capsman-enhanced');
64
+ $title['top-secondary'] = esc_html__('Right bar', 'capsman-enhanced');
65
+ $title['user-actions'] = esc_html__('User actions', 'capsman-enhanced');
66
+ $title['new-content'] = esc_html__('New', 'capsman-enhanced');
67
+ $title['new-content'] = esc_html__('New', 'capsman-enhanced');
68
+ $title['user-info'] = esc_html__('User Display Name', 'capsman-enhanced');
69
+ $title['wpseo-menu'] = esc_html__('Yoast SEO', 'capsman-enhanced');
70
 
71
  return isset($title[$id]) ? $title[$id] : $id;
72
  }
78
  */
79
  public static function formatHeaderFooter()
80
  {
81
+ $elements_item['screen_options'] = ['label' => esc_html__('Screen Options', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
82
+ $elements_item['screen_help'] = ['label' => esc_html__('Help', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
83
+ $elements_item['footer_thankyou'] = ['label' => esc_html__('Thank you for creating with WordPress', 'capsman-enhanced'), 'action' => 'ppc_header_footer'];
84
+ $elements_item['footer_upgrade'] = ['label' => sprintf( esc_html__( 'Version %s' ), get_bloginfo('version'), 'capsman-enhanced' ), 'action' => 'ppc_header_footer'];
85
 
86
  return $elements_item;
87
  }
130
 
131
  $elements_widget = [];
132
  //add widget that may not be part of wp_meta_boxes
133
+ $elements_widget['dashboard_welcome_panel'] = ['label' => esc_html__('Welcome panel', 'capsman-enhanced'), 'context' => 'normal', 'action' => 'ppc_dashboard_widget'];
134
  //loop other widgets
135
  foreach ($widgets as $context => $priority) {
136
  foreach ($priority as $data) {
305
  if(count($ppc_header_footer) > 0){
306
  self::disableHeaderFooterElement($ppc_header_footer);
307
  }
308
+ }
309
  }
310
 
311
  /**
317
  add_filter( 'screen_options_show_screen', '__return_false', 999 );
318
  }
319
  if(in_array('ppc_header_footer||screen_help', $ppc_header_footer)){
320
+ add_action('admin_head', [__CLASS__, 'contextual_help_list_remove'], 999);
321
  }
322
  if(in_array('ppc_header_footer||footer_thankyou', $ppc_header_footer)){
323
  add_filter( 'admin_footer_text', '__return_false', 999 );
includes/features/restrict-editor-features.php CHANGED
@@ -37,38 +37,38 @@ class PP_Capabilities_Post_Features {
37
  {
38
  $elements = [];
39
 
40
- $elements[__('Top Tabs', 'capsman-enhanced')] = [
41
- '#contextual-help-link-wrap' => ['label' => __('Help', 'capsman-enhanced')],
42
- '#screen-options-link-wrap' => ['label' => __('Screen Options', 'capsman-enhanced')],
43
  ];
44
 
45
- $elements[__('Editor', 'capsman-enhanced')] = [
46
- '.page-title-action' => ['label' => __('Add New', 'capsman-enhanced')],
47
- '#title' => ['label' => __('Title', 'capsman-enhanced'), 'elements' => '#titlediv, #title, #titlewrap'],
48
- '#postdivrich' => ['label' => __('Editor', 'capsman-enhanced')],
49
- '#pageslugdiv' => ['label' => __('Permalink', 'capsman-enhanced')],
50
- '#media_buttons' => ['label' => __('Media Buttons (all)', 'capsman-enhanced'), 'elements' => '#media-buttons, #wp-content-media-buttons'],
51
- '#html_editor_button' => ['label' => __('HTML Editor Button', 'capsman-enhanced'),'elements' => '#editor-toolbar #edButtonHTML, #quicktags, #content-html, .wp-switch-editor.switch-html'],
52
- '#wp-word-count' => ['label' => __('Word count', 'capsman-enhanced')],
53
  ];
54
 
55
- $elements[__('Publish Box', 'capsman-enhanced')] = [
56
- '#submitdiv' => ['label' => __('Publish Box', 'capsman-enhanced')],
57
- '#save-post' => ['label' => __('Save Draft', 'capsman-enhanced')],
58
- '#post-preview' => ['label' => __('Preview', 'capsman-enhanced')],
59
- '.misc-pub-post-status' => ['label' => __('Publish Status ', 'capsman-enhanced')],
60
- '.misc-pub-visibility' => ['label' => __('Publish Visibility', 'capsman-enhanced')],
61
- '#passworddiv' => ['label' => __('Password Protect This Post', 'capsman-enhanced')],
62
- '#misc-publishing-actions' => ['label' => __('Publish Actions', 'capsman-enhanced')],
63
- '.misc-pub-curtime' => ['label' => __('Publish Schedule', 'capsman-enhanced')],
64
- '#date' => ['label' => __('Date', 'capsman-enhanced'), 'elements' => '#date, #datediv, th.column-date, td.date, div.curtime'],
65
- '#publish' => ['label' => __('Publish', 'capsman-enhanced')],
66
  ];
67
 
68
- $elements[__('Taxonomy Boxes', 'capsman-enhanced')] = [
69
- '#category' => ['label' => __('Categories', 'capsman-enhanced'), 'elements' => '#categories, #categorydiv, #categorydivsb, th.column-categories, td.categories'],
70
- '#category-add-toggle' => ['label' => __('Add New Category', 'capsman-enhanced')],
71
- '#post_tag' => ['label' => __('Tags', 'capsman-enhanced'), 'elements' => '#tags, #tagsdiv,#tagsdivsb,#tagsdiv-post_tag, th.column-tags, td.tags'],
72
  ];
73
 
74
  end($elements);
@@ -80,28 +80,22 @@ class PP_Capabilities_Post_Features {
80
  }
81
  }
82
 
83
- $elements[__('Page Boxes', 'capsman-enhanced')] = [
84
- '#pageparentdiv' => ['label' => __('Page Attributes', 'capsman-enhanced')],
85
- '#parent_id' => ['label' => __('Parent', 'capsman-enhanced'), 'elements' => 'p.parent-id-label-wrapper, #parent_id'],
86
- '#page_template' => ['label' => __('Page Template', 'capsman-enhanced')],
87
- 'p.menu-order-label-wrapper' => ['label' => __('Order', 'capsman-enhanced')],
88
  ];
89
 
90
- $elements[__('Other Boxes', 'capsman-enhanced')] = [
91
- '#postimagediv' => ['label' => __('Featured Image', 'capsman-enhanced')],
92
- '#slug' => ['label' => __('Post Slug', 'capsman-enhanced'), 'elements' => '#slugdiv,#edit-slug-box'],
93
- '#commentstatusdiv' => ['label' => __('Discussion', 'capsman-enhanced')],
94
  ];
95
 
96
  end($elements);
97
  $k = key($elements);
98
 
99
- /*
100
- __('Related, Shortcuts', 'capsman-enhanced') => '.side-info',
101
- __('Messages', 'capsman-enhanced') => '#notice',
102
- __('h2: Advanced Options', 'capsman-enhanced') => '#post-body h2',
103
- */
104
-
105
  $post_type_supports = [];
106
 
107
  $def_post_types = array_unique(apply_filters('pp_capabilities_feature_post_types', ['post', 'page']));
@@ -175,7 +169,7 @@ class PP_Capabilities_Post_Features {
175
 
176
  // apply the stored restrictions by css
177
  if ($restrict_elements = array_unique($restrict_elements)) {
178
- echo '<style>' . implode(',', $restrict_elements) . ' {display:none !important;}</style>';
179
  }
180
  }
181
 
@@ -265,7 +259,7 @@ class PP_Capabilities_Post_Features {
265
  ['editor_script' => 'ppc-features-block-script']
266
  );
267
 
268
- echo '<style>' . implode(',', $restrict_elements) . ' {display:none !important;}</style>';
269
  }
270
  }
271
 
@@ -296,34 +290,34 @@ class PP_Capabilities_Post_Features {
296
  public static function elementsLayout()
297
  {
298
  $elements = [
299
- __('Top Bar - Left', 'capabilities-pro') => [
300
- 'add_block' => ['label' => __('Add block', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .edit-post-header-toolbar__inserter-toggle.has-icon'],
301
- 'modes' => ['label' => __('Modes', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .components-dropdown:first-of-type'],
302
- 'undo' => ['label' => __('Undo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__undo'],
303
- 'redo' => ['label' => __('Redo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__redo'],
304
- 'details' => ['label' => __('Details', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .table-of-contents'],
305
- 'outline' => ['label' => __('Outline', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .edit-post-header-toolbar__list-view-toggle'],
306
  ],
307
 
308
- __('Top Bar - Right', 'capabilities-pro') => [
309
- 'save_draft' => ['label' => __('Save Draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-save-draft'],
310
- 'switch_to_draft' => ['label' => __('Switch to draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-switch-to-draft'],
311
- 'preview' => ['label' => __('Preview', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .block-editor-post-preview__dropdown'],
312
- 'publish' => ['label' => __('Publish / Update', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .editor-post-publish-button__button'],
313
- 'settings' => ['label' => __('Settings', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .interface-pinned-items button'],
314
- 'options' => ['label' => __('Options', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .edit-post-more-menu .components-button'],
315
  ],
316
 
317
- __('Body', 'capabilities-pro') => [
318
- 'edit_title' => ['label' => __('Edit title', 'capsman-enhanced'), 'elements' => '.wp-block.editor-post-title__block'],
319
- 'content' => ['label' => __('Content', 'capsman-enhanced'), 'elements' => '.block-editor-block-list__layout'],
320
  ],
321
 
322
- __('Document Panel', 'capabilities-pro') => [
323
- 'status_visibility' => ['label' => __('Status & visibility', 'capsman-enhanced'), 'elements' => 'post-status'],
324
- 'permalink' => ['label' => __('Permalink', 'capsman-enhanced'), 'elements' => 'post-link'],
325
- 'categories' => ['label' => __('Categories', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-category'],
326
- 'tags' => ['label' => __('Tags', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-post_tag'],
327
  ]
328
  ];
329
 
@@ -337,18 +331,18 @@ class PP_Capabilities_Post_Features {
337
  }
338
 
339
  $elements[$k] = array_merge($elements[$k], [
340
- 'featured_image' => ['label' => __('Featured image', 'capsman-enhanced'), 'elements' => 'featured-image'],
341
- 'excerpt' => ['label' => __('Excerpt', 'capsman-enhanced'), 'elements' => 'post-excerpt'],
342
- 'discussion' => ['label' => __('Discussion', 'capsman-enhanced'), 'elements' => 'discussion-panel'],
343
- 'post_attributes' => ['label' => __('Post Attributes', 'capsman-enhanced'), 'elements' => 'page-attributes'],
344
  ]);
345
 
346
- $elements[__('Block Panel', 'capabilities-pro')] = [
347
- 'block_panel' => ['label' => __('Block Panel', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector'],
348
- 'paragraph' => ['label' => __('Paragraph', 'capsman-enhanced'), 'elements' => '.block-editor-block-card'],
349
- 'typography' => ['label' => __('Typography', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector .components-panel__body:first-of-type'],
350
- 'color' => ['label' => __('Color settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings'],
351
- 'text_settings' => ['label' => __('Text settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings + .components-panel__body'],
352
  ];
353
 
354
  return apply_filters('pp_capabilities_post_feature_elements', $elements);
37
  {
38
  $elements = [];
39
 
40
+ $elements[esc_html__('Top Tabs', 'capsman-enhanced')] = [
41
+ '#contextual-help-link-wrap' => ['label' => esc_html__('Help', 'capsman-enhanced')],
42
+ '#screen-options-link-wrap' => ['label' => esc_html__('Screen Options', 'capsman-enhanced')],
43
  ];
44
 
45
+ $elements[esc_html__('Editor', 'capsman-enhanced')] = [
46
+ '.page-title-action' => ['label' => esc_html__('Add New', 'capsman-enhanced')],
47
+ '#title' => ['label' => esc_html__('Title', 'capsman-enhanced'), 'elements' => '#titlediv, #title, #titlewrap'],
48
+ '#postdivrich' => ['label' => esc_html__('Editor', 'capsman-enhanced')],
49
+ '#pageslugdiv' => ['label' => esc_html__('Permalink', 'capsman-enhanced')],
50
+ '#media_buttons' => ['label' => esc_html__('Media Buttons (all)', 'capsman-enhanced'), 'elements' => '#media-buttons, #wp-content-media-buttons'],
51
+ '#html_editor_button' => ['label' => esc_html__('HTML Editor Button', 'capsman-enhanced'),'elements' => '#editor-toolbar #edButtonHTML, #quicktags, #content-html, .wp-switch-editor.switch-html'],
52
+ '#wp-word-count' => ['label' => esc_html__('Word count', 'capsman-enhanced')],
53
  ];
54
 
55
+ $elements[esc_html__('Publish Box', 'capsman-enhanced')] = [
56
+ '#submitdiv' => ['label' => esc_html__('Publish Box', 'capsman-enhanced')],
57
+ '#save-post' => ['label' => esc_html__('Save Draft', 'capsman-enhanced')],
58
+ '#post-preview' => ['label' => esc_html__('Preview', 'capsman-enhanced')],
59
+ '.misc-pub-post-status' => ['label' => esc_html__('Publish Status ', 'capsman-enhanced')],
60
+ '.misc-pub-visibility' => ['label' => esc_html__('Publish Visibility', 'capsman-enhanced')],
61
+ '#passworddiv' => ['label' => esc_html__('Password Protect This Post', 'capsman-enhanced')],
62
+ '#misc-publishing-actions' => ['label' => esc_html__('Publish Actions', 'capsman-enhanced')],
63
+ '.misc-pub-curtime' => ['label' => esc_html__('Publish Schedule', 'capsman-enhanced')],
64
+ '#date' => ['label' => esc_html__('Date', 'capsman-enhanced'), 'elements' => '#date, #datediv, th.column-date, td.date, div.curtime'],
65
+ '#publish' => ['label' => esc_html__('Publish', 'capsman-enhanced')],
66
  ];
67
 
68
+ $elements[esc_html__('Taxonomy Boxes', 'capsman-enhanced')] = [
69
+ '#category' => ['label' => esc_html__('Categories', 'capsman-enhanced'), 'elements' => '#categories, #categorydiv, #categorydivsb, th.column-categories, td.categories'],
70
+ '#category-add-toggle' => ['label' => esc_html__('Add New Category', 'capsman-enhanced')],
71
+ '#post_tag' => ['label' => esc_html__('Tags', 'capsman-enhanced'), 'elements' => '#tags, #tagsdiv,#tagsdivsb,#tagsdiv-post_tag, th.column-tags, td.tags'],
72
  ];
73
 
74
  end($elements);
80
  }
81
  }
82
 
83
+ $elements[esc_html__('Page Boxes', 'capsman-enhanced')] = [
84
+ '#pageparentdiv' => ['label' => esc_html__('Page Attributes', 'capsman-enhanced')],
85
+ '#parent_id' => ['label' => esc_html__('Parent', 'capsman-enhanced'), 'elements' => 'p.parent-id-label-wrapper, #parent_id'],
86
+ '#page_template' => ['label' => esc_html__('Page Template', 'capsman-enhanced')],
87
+ 'p.menu-order-label-wrapper' => ['label' => esc_html__('Order', 'capsman-enhanced')],
88
  ];
89
 
90
+ $elements[esc_html__('Other Boxes', 'capsman-enhanced')] = [
91
+ '#postimagediv' => ['label' => esc_html__('Featured Image', 'capsman-enhanced')],
92
+ '#slug' => ['label' => esc_html__('Post Slug', 'capsman-enhanced'), 'elements' => '#slugdiv,#edit-slug-box'],
93
+ '#commentstatusdiv' => ['label' => esc_html__('Discussion', 'capsman-enhanced')],
94
  ];
95
 
96
  end($elements);
97
  $k = key($elements);
98
 
 
 
 
 
 
 
99
  $post_type_supports = [];
100
 
101
  $def_post_types = array_unique(apply_filters('pp_capabilities_feature_post_types', ['post', 'page']));
169
 
170
  // apply the stored restrictions by css
171
  if ($restrict_elements = array_unique($restrict_elements)) {
172
+ echo '<style>' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}</style>';
173
  }
174
  }
175
 
259
  ['editor_script' => 'ppc-features-block-script']
260
  );
261
 
262
+ echo '<style>' . implode(',', array_map('esc_attr', $restrict_elements)) . ' {display:none !important;}</style>';
263
  }
264
  }
265
 
290
  public static function elementsLayout()
291
  {
292
  $elements = [
293
+ esc_html__('Top Bar - Left', 'capabilities-pro') => [
294
+ 'add_block' => ['label' => esc_html__('Add block', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .edit-post-header-toolbar__inserter-toggle.has-icon'],
295
+ 'modes' => ['label' => esc_html__('Modes', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .components-dropdown:first-of-type'],
296
+ 'undo' => ['label' => esc_html__('Undo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__undo'],
297
+ 'redo' => ['label' => esc_html__('Redo', 'capsman-enhanced'), 'elements' => '.edit-post-header-toolbar .editor-history__redo'],
298
+ 'details' => ['label' => esc_html__('Details', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .table-of-contents'],
299
+ 'outline' => ['label' => esc_html__('Outline', 'capsman-enhanced'), 'elements' => '.edit-post-header__toolbar .edit-post-header-toolbar__list-view-toggle'],
300
  ],
301
 
302
+ esc_html__('Top Bar - Right', 'capabilities-pro') => [
303
+ 'save_draft' => ['label' => esc_html__('Save Draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-save-draft'],
304
+ 'switch_to_draft' => ['label' => esc_html__('Switch to draft', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .components-button.editor-post-switch-to-draft'],
305
+ 'preview' => ['label' => esc_html__('Preview', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .block-editor-post-preview__dropdown'],
306
+ 'publish' => ['label' => esc_html__('Publish / Update', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .editor-post-publish-button__button'],
307
+ 'settings' => ['label' => esc_html__('Settings', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .interface-pinned-items button'],
308
+ 'options' => ['label' => esc_html__('Options', 'capsman-enhanced'), 'elements' => '.edit-post-header__settings .edit-post-more-menu .components-button'],
309
  ],
310
 
311
+ esc_html__('Body', 'capabilities-pro') => [
312
+ 'edit_title' => ['label' => esc_html__('Edit title', 'capsman-enhanced'), 'elements' => '.wp-block.editor-post-title__block'],
313
+ 'content' => ['label' => esc_html__('Content', 'capsman-enhanced'), 'elements' => '.block-editor-block-list__layout'],
314
  ],
315
 
316
+ esc_html__('Document Panel', 'capabilities-pro') => [
317
+ 'status_visibility' => ['label' => esc_html__('Status & visibility', 'capsman-enhanced'), 'elements' => 'post-status'],
318
+ 'permalink' => ['label' => esc_html__('Permalink', 'capsman-enhanced'), 'elements' => 'post-link'],
319
+ 'categories' => ['label' => esc_html__('Categories', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-category'],
320
+ 'tags' => ['label' => esc_html__('Tags', 'capsman-enhanced'), 'elements' => 'taxonomy-panel-post_tag'],
321
  ]
322
  ];
323
 
331
  }
332
 
333
  $elements[$k] = array_merge($elements[$k], [
334
+ 'featured_image' => ['label' => esc_html__('Featured image', 'capsman-enhanced'), 'elements' => 'featured-image'],
335
+ 'excerpt' => ['label' => esc_html__('Excerpt', 'capsman-enhanced'), 'elements' => 'post-excerpt'],
336
+ 'discussion' => ['label' => esc_html__('Discussion', 'capsman-enhanced'), 'elements' => 'discussion-panel'],
337
+ 'post_attributes' => ['label' => esc_html__('Post Attributes', 'capsman-enhanced'), 'elements' => 'page-attributes'],
338
  ]);
339
 
340
+ $elements[esc_html__('Block Panel', 'capabilities-pro')] = [
341
+ 'block_panel' => ['label' => esc_html__('Block Panel', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector'],
342
+ 'paragraph' => ['label' => esc_html__('Paragraph', 'capsman-enhanced'), 'elements' => '.block-editor-block-card'],
343
+ 'typography' => ['label' => esc_html__('Typography', 'capsman-enhanced'), 'elements' => '.block-editor-block-inspector .components-panel__body:first-of-type'],
344
+ 'color' => ['label' => esc_html__('Color settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings'],
345
+ 'text_settings' => ['label' => esc_html__('Text settings', 'capsman-enhanced'), 'elements' => '.block-editor-panel-color-gradient-settings + .components-panel__body'],
346
  ];
347
 
348
  return apply_filters('pp_capabilities_post_feature_elements', $elements);
includes/filters-woocommerce.php CHANGED
@@ -29,8 +29,8 @@ class CME_WooCommerce {
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?post_type=shop_order' );
33
- $submenu[$key][10] = array( __('Add New'), 1 => $type_obj->cap->create_posts, 2 => 'post-new.php?post_type=shop_order' );
34
  }
35
  }
36
  }
29
  $submenu[$key] = array();
30
  }
31
 
32
+ $submenu[$key][5] = array( 0 => sprintf( esc_html__( 'All %s' ), $type_obj->labels->name ), 1 => $type_obj->cap->edit_posts, 2 => 'edit.php?post_type=shop_order' );
33
+ $submenu[$key][10] = array( esc_html__('Add New'), 1 => $type_obj->cap->create_posts, 2 => 'post-new.php?post_type=shop_order' );
34
  }
35
  }
36
  }
includes/filters.php CHANGED
@@ -66,7 +66,7 @@ function _cme_filterable_post_types($post_type_objects) {
66
  }
67
 
68
  function _cme_publishpress_roles_js() {
69
- if (defined('PUBLISHPRESS_VERSION') && ((strpos($_SERVER['REQUEST_URI'], 'page=pp-manage-roles')))) {
70
  require_once(dirname(__FILE__) . '/publishpress-roles.php');
71
  CME_PublishPressRoles::scripts(); // @todo: .js
72
  }
@@ -260,7 +260,7 @@ function _cme_fltPluginActionLinks($links, $file)
260
  {
261
  if ($file == plugin_basename(CME_FILE)) {
262
  if (!is_network_admin()) {
263
- $links[] = "<a href='" . admin_url("admin.php?page=pp-capabilities") . "'>" . __('Edit Roles', 'capsman-enhanced') . "</a>";
264
  }
265
  }
266
 
66
  }
67
 
68
  function _cme_publishpress_roles_js() {
69
+ if (defined('PUBLISHPRESS_VERSION') && !empty($_SERVER['REQUEST_URI']) && strpos(sanitize_text_field($_SERVER['REQUEST_URI']), 'page=pp-manage-roles')) {
70
  require_once(dirname(__FILE__) . '/publishpress-roles.php');
71
  CME_PublishPressRoles::scripts(); // @todo: .js
72
  }
260
  {
261
  if ($file == plugin_basename(CME_FILE)) {
262
  if (!is_network_admin()) {
263
+ $links[] = "<a href='" . admin_url("admin.php?page=pp-capabilities") . "'>" . esc_html__('Edit Roles', 'capsman-enhanced') . "</a>";
264
  }
265
  }
266
 
includes/functions-admin.php CHANGED
@@ -100,8 +100,8 @@ function _pp_capabilities_is_block_editor_active($post_type = '', $args = [])
100
  }
101
 
102
  $pluginsState = array(
103
- 'classic-editor' => class_exists( 'Classic_Editor' ), // is_plugin_active('classic-editor/classic-editor.php'),
104
- 'gutenberg' => function_exists( 'the_gutenberg_project' ), //is_plugin_active('gutenberg/gutenberg.php'),
105
  'gutenberg-ramp' => class_exists('Gutenberg_Ramp'),
106
  );
107
 
100
  }
101
 
102
  $pluginsState = array(
103
+ 'classic-editor' => class_exists( 'Classic_Editor' ),
104
+ 'gutenberg' => function_exists( 'the_gutenberg_project' ),
105
  'gutenberg-ramp' => class_exists('Gutenberg_Ramp'),
106
  );
107
 
includes/functions.php CHANGED
@@ -8,6 +8,21 @@
8
  *
9
  */
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  function pp_capabilities_is_editable_role($role_name, $args = []) {
12
  static $editable_roles;
13
 
@@ -108,16 +123,27 @@ function pp_capabilities_autobackup()
108
  $roles = get_option($wpdb->prefix . 'user_roles');
109
  update_option('cme_backup_auto_' . current_time('Y-m-d_g-i-s_a'), $roles, false);
110
 
111
- $max_auto_backups = (defined('CME_AUTOBACKUPS')) ? CME_AUTOBACKUPS : 20;
 
 
112
 
113
- $keep_ids = $wpdb->get_col("SELECT option_id FROM $wpdb->options WHERE option_name LIKE 'cme_backup_auto_%' ORDER BY option_id DESC LIMIT $max_auto_backups");
 
114
 
115
- if (count($keep_ids) == $max_auto_backups) {
116
- $id_csv = implode("','", $keep_ids);
117
 
118
- $wpdb->query(
119
- "DELETE FROM $wpdb->options WHERE option_name LIKE 'cme_backup_auto_%' AND option_id NOT IN ('$id_csv')"
120
- );
 
 
 
 
 
 
 
 
121
  }
122
  }
123
 
@@ -156,10 +182,10 @@ function pp_capabilities_get_post_type()
156
  }
157
 
158
  if (isset($_GET['post']) && !is_array($_GET['post'])) {
159
- $post_id = (int) esc_attr($_GET['post']);
160
 
161
  } elseif (isset($_POST['post_ID'])) {
162
- $post_id = (int) esc_attr($_POST['post_ID']);
163
  }
164
 
165
  if (!empty($post_id)) {
8
  *
9
  */
10
 
11
+
12
+ /**
13
+ * Sanitizes a string entry
14
+ *
15
+ * Keys are used as internal identifiers. Uppercase or lowercase alphanumeric characters,
16
+ * spaces, periods, commas, plusses, asterisks, colons, pipes, parentheses, dashes and underscores are allowed.
17
+ *
18
+ * @param string $entry String entry
19
+ * @return string Sanitized entry
20
+ */
21
+ function pp_capabilities_sanitize_entry( $entry ) {
22
+ $entry = preg_replace( '/[^a-zA-Z0-9 \.\,\+\*\:\|\(\)_\-\=]/', '', $entry );
23
+ return $entry;
24
+ }
25
+
26
  function pp_capabilities_is_editable_role($role_name, $args = []) {
27
  static $editable_roles;
28
 
123
  $roles = get_option($wpdb->prefix . 'user_roles');
124
  update_option('cme_backup_auto_' . current_time('Y-m-d_g-i-s_a'), $roles, false);
125
 
126
+ $max_auto_backups = (defined('CME_AUTOBACKUPS')) ? (int) CME_AUTOBACKUPS : 20;
127
+
128
+ $current_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'cme_backup_auto_%' ORDER BY option_id DESC");
129
 
130
+ if (count($current_options) >= $max_auto_backups) {
131
+ $i = 0;
132
 
133
+ foreach($current_options as $option_name) {
134
+ $i++;
135
 
136
+ if ($i > $max_auto_backups) {
137
+ $wpdb->query(
138
+ $wpdb->prepare(
139
+ "DELETE FROM $wpdb->options WHERE option_name = %s",
140
+ $option_name
141
+ )
142
+ );
143
+
144
+ wp_cache_delete($option_name, 'options');
145
+ }
146
+ }
147
  }
148
  }
149
 
182
  }
183
 
184
  if (isset($_GET['post']) && !is_array($_GET['post'])) {
185
+ $post_id = (int) $_GET['post'];
186
 
187
  } elseif (isset($_POST['post_ID'])) {
188
+ $post_id = (int) $_POST['post_ID'];
189
  }
190
 
191
  if (!empty($post_id)) {
includes/handler.php CHANGED
@@ -21,95 +21,108 @@ class CapsmanHandler
21
  require_once (dirname(CME_FILE) . '/includes/roles/roles-functions.php');
22
  }
23
 
24
- function processAdminGeneral( $post ) {
25
- global $wp_roles;
26
 
27
- if ('pp-capabilities-settings' == $_REQUEST['page']) {
 
 
 
 
 
 
28
  do_action('publishpress-caps_process_update');
29
  return;
30
  }
31
 
32
  // Create a new role.
33
- if ( ! empty($post['CreateRole']) ) {
34
- if ( $newrole = $this->createRole($post['create-name']) ) {
 
 
 
 
35
  ak_admin_notify(__('New role created.', 'capsman-enhanced'));
36
  $this->cm->set_current_role($newrole);
37
  } else {
38
- if ( empty($post['create-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
39
- ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
40
  else
41
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
42
  }
43
 
44
  // rename role
45
- } elseif (!empty($post['RenameRole']) && !empty($post['rename-name'])) {
46
- $current = get_role($post['current']);
47
- $new_title = sanitize_text_field($post['rename-name']);
48
 
49
  if ($current && isset($wp_roles->roles[$current->name]) && $new_title) {
50
  $old_title = $wp_roles->roles[$current->name]['name'];
51
  $wp_roles->roles[$current->name]['name'] = $new_title;
52
  update_option($wp_roles->role_key, $wp_roles->roles);
53
 
54
- ak_admin_notify(sprintf(__('Role "%s" (id %s) renamed to "%s"', 'capsman-enhanced'), $old_title, strtolower($current->name), $new_title));
55
  $this->cm->set_current_role($current->name);
 
 
 
 
56
  }
57
  // Copy current role to a new one.
58
- } elseif ( ! empty($post['CopyRole']) ) {
59
- $current = get_role($post['current']);
60
- if ( $newrole = $this->createRole($post['copy-name'], $current->capabilities) ) {
61
  ak_admin_notify(__('New role created.', 'capsman-enhanced'));
62
  $this->cm->set_current_role($newrole);
63
  } else {
64
- if ( empty($post['copy-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
65
- ak_admin_error( 'Error: No role name specified.', 'capsman-enhanced' );
66
  else
67
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
68
  }
69
 
70
  // Save role changes. Already saved at start with self::saveRoleCapabilities().
71
- } elseif ( ! empty($post['SaveRole']) ) {
72
  if ( MULTISITE ) {
73
- global $wp_roles;
74
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
75
  }
76
 
77
- if (!pp_capabilities_is_editable_role($post['current'])) {
78
- ak_admin_error( 'The selected role is not editable.', 'capsman-enhanced' );
79
  return;
80
  }
81
 
82
- $this->saveRoleCapabilities($post['current'], $post['caps'], $post['level']);
 
83
 
84
- if ( defined( 'PRESSPERMIT_ACTIVE' ) ) { // log customized role caps for subsequent restoration
85
  // for bbPress < 2.2, need to log customization of roles following bbPress activation
86
  $plugins = ( function_exists( 'bbp_get_version' ) && version_compare( bbp_get_version(), '2.2', '<' ) ) ? array( 'bbpress.php' ) : array(); // back compat
87
 
88
  if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
89
  $customized_roles = array();
90
 
91
- $customized_roles[$post['role']] = (object) array( 'caps' => array_map( 'boolval', $post['caps'] ), 'plugins' => $plugins );
 
 
92
  update_option( 'pp_customized_roles', $customized_roles );
93
 
94
- global $wpdb;
95
  $wpdb->query( "UPDATE $wpdb->options SET autoload = 'no' WHERE option_name = 'pp_customized_roles'" );
96
  }
97
  // Create New Capability and adds it to current role.
98
- } elseif ( ! empty($post['AddCap']) ) {
99
  if ( MULTISITE ) {
100
- global $wp_roles;
101
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
102
  }
103
 
104
- if (!pp_capabilities_is_editable_role($post['current'])) {
105
- ak_admin_error( 'The selected role is not editable.', 'capsman-enhanced' );
106
  return;
107
  }
108
 
109
- $role = get_role($post['current']);
110
- $role->name = $post['current']; // bbPress workaround
111
 
112
- $newname = $this->createNewName($post['capability-name']);
113
 
114
  if (empty($newname['error'])) {
115
  $role->add_cap($newname['name']);
@@ -120,25 +133,24 @@ class CapsmanHandler
120
  if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
121
  $customized_roles = array();
122
 
123
- $customized_roles[$post['role']] = (object) array( 'caps' => array_merge( $role->capabilities, array( $newname['name'] => 1 ) ), 'plugins' => $plugins );
124
  update_option( 'pp_customized_roles', $customized_roles );
125
 
126
- global $wpdb;
127
  $wpdb->query( "UPDATE $wpdb->options SET autoload = 'no' WHERE option_name = 'pp_customized_roles'" );
128
 
129
- $url = admin_url('admin.php?page=pp-capabilities&role=' . $post['role'] . '&added=1');
 
 
130
  wp_redirect($url);
131
  exit;
132
  } else {
133
- ak_admin_notify(__('Incorrect capability name.'));
 
 
134
  }
135
 
136
- } elseif ( ! empty($post['update_filtered_types']) || ! empty($post['update_filtered_taxonomies']) || ! empty($post['update_detailed_taxonomies']) ) {
137
- //if ( /* settings saved successfully on plugins_loaded action */ ) {
138
- ak_admin_notify(__('Type / Taxonomy settings saved.', 'capsman-enhanced'));
139
- //} else {
140
- // ak_admin_error(__('Error saving capability settings.', 'capsman-enhanced'));
141
- //}
142
  } else {
143
  if (!apply_filters('publishpress-caps_submission_ok', false)) {
144
  ak_admin_error(__('Bad form received.', 'capsman-enhanced'));
@@ -146,7 +158,7 @@ class CapsmanHandler
146
  }
147
 
148
  if ( ! empty($newrole) && defined('PRESSPERMIT_ACTIVE') ) {
149
- if ( ( ! empty($post['CreateRole']) && ! empty( $_REQUEST['new_role_pp_only'] ) ) || ( ! empty($post['CopyRole']) && ! empty( $_REQUEST['copy_role_pp_only'] ) ) ) {
150
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
151
  $pp_only[]= $newrole;
152
 
@@ -169,10 +181,10 @@ class CapsmanHandler
169
  * @param string $name Name from user input.
170
  * @return array|false An array with the name and display_name, or false if not valid $name.
171
  */
172
- public function createNewName( $name ) {
173
  // Allow max 40 characters, letters, digits and spaces
174
  $name = trim(substr($name, 0, 40));
175
- $pattern = '/^[a-zA-Z][a-zA-Z0-9 _]+$/';
176
 
177
  if ( preg_match($pattern, $name) ) {
178
  $roles = ak_get_roles();
@@ -398,18 +410,20 @@ class CapsmanHandler
398
  */
399
  function adminDeleteRole ()
400
  {
401
- $role_name = $_GET['role'];
402
- check_admin_referer('delete-role_' . $role_name);
403
-
404
- $this->cm->current = $role_name;
 
405
 
406
- if (!pp_capabilities_is_editable_role($role_name)) {
407
- ak_admin_error( 'The selected role is not editable.', 'capsman-enhanced' );
408
- }
409
 
410
- if (false !== pp_capabilities_roles()->actions->delete_role($role_name, ['allow_system_role_deletion' => true, 'nonce_check' => false])) {
411
- unset($this->cm->roles[$role_name]);
412
- $this->cm->current = get_option('default_role');
 
413
  }
414
  }
415
  }
21
  require_once (dirname(CME_FILE) . '/includes/roles/roles-functions.php');
22
  }
23
 
24
+ function processAdminGeneral() {
25
+ global $wpdb, $wp_roles;
26
 
27
+ check_admin_referer('capsman-general-manager');
28
+
29
+ if ( empty ($_POST['caps']) ) {
30
+ $_POST['caps'] = array();
31
+ }
32
+
33
+ if (!empty($_REQUEST['page']) && ('pp-capabilities-settings' == $_REQUEST['page'])) {
34
  do_action('publishpress-caps_process_update');
35
  return;
36
  }
37
 
38
  // Create a new role.
39
+ if ( ! empty($_POST['CreateRole'])) {
40
+ if (!empty($_POST['create-name'])) {
41
+ $newrole = $this->createRole(sanitize_text_field($_POST['create-name']));
42
+ }
43
+
44
+ if (!empty($newrole)) {
45
  ak_admin_notify(__('New role created.', 'capsman-enhanced'));
46
  $this->cm->set_current_role($newrole);
47
  } else {
48
+ if ( empty($_POST['create-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
49
+ ak_admin_error('Error: No role name specified.');
50
  else
51
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
52
  }
53
 
54
  // rename role
55
+ } elseif (!empty($_POST['RenameRole']) && !empty($_POST['rename-name']) && !empty($_POST['current'])) {
56
+ $current = get_role(sanitize_key($_POST['current']));
57
+ $new_title = sanitize_text_field($_POST['rename-name']);
58
 
59
  if ($current && isset($wp_roles->roles[$current->name]) && $new_title) {
60
  $old_title = $wp_roles->roles[$current->name]['name'];
61
  $wp_roles->roles[$current->name]['name'] = $new_title;
62
  update_option($wp_roles->role_key, $wp_roles->roles);
63
 
 
64
  $this->cm->set_current_role($current->name);
65
+
66
+ $url = admin_url('admin.php?page=pp-capabilities&role=' . sanitize_key($current->name));
67
+ wp_redirect($url);
68
+ exit;
69
  }
70
  // Copy current role to a new one.
71
+ } elseif (!empty($_POST['CopyRole']) && !empty($_POST['copy-name']) && !empty($_POST['current'])) {
72
+ $current = get_role(sanitize_key($_POST['current']));
73
+ if ( $newrole = $this->createRole(sanitize_text_field($_POST['copy-name']), $current->capabilities) ) {
74
  ak_admin_notify(__('New role created.', 'capsman-enhanced'));
75
  $this->cm->set_current_role($newrole);
76
  } else {
77
+ if ( empty($_POST['copy-name']) && in_array(get_locale(), ['en_EN', 'en_US']) )
78
+ ak_admin_error('Error: No role name specified.');
79
  else
80
  ak_admin_error(__('Error: Failed creating the new role.', 'capsman-enhanced'));
81
  }
82
 
83
  // Save role changes. Already saved at start with self::saveRoleCapabilities().
84
+ } elseif ( ! empty($_POST['SaveRole']) && !empty($_POST['current'])) {
85
  if ( MULTISITE ) {
 
86
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
87
  }
88
 
89
+ if (!pp_capabilities_is_editable_role(sanitize_key($_POST['current']))) {
90
+ ak_admin_error(__('The selected role is not editable.', 'capsman-enhanced'));
91
  return;
92
  }
93
 
94
+ $level = (isset($_POST['level'])) ? (int) $_POST['level'] : 0;
95
+ $this->saveRoleCapabilities(sanitize_key($_POST['current']), array_map('boolval', $_POST['caps']), $level);
96
 
97
+ if (defined( 'PRESSPERMIT_ACTIVE' ) && !empty($_POST['role'])) { // log customized role caps for subsequent restoration
98
  // for bbPress < 2.2, need to log customization of roles following bbPress activation
99
  $plugins = ( function_exists( 'bbp_get_version' ) && version_compare( bbp_get_version(), '2.2', '<' ) ) ? array( 'bbpress.php' ) : array(); // back compat
100
 
101
  if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
102
  $customized_roles = array();
103
 
104
+ $_role = sanitize_key($_POST['role']);
105
+
106
+ $customized_roles[$_role] = (object) array( 'caps' => array_map( 'boolval', $_POST['caps'] ), 'plugins' => $plugins );
107
  update_option( 'pp_customized_roles', $customized_roles );
108
 
 
109
  $wpdb->query( "UPDATE $wpdb->options SET autoload = 'no' WHERE option_name = 'pp_customized_roles'" );
110
  }
111
  // Create New Capability and adds it to current role.
112
+ } elseif (!empty($_POST['AddCap']) && !empty($_POST['current']) && !empty($_POST['capability-name'])) {
113
  if ( MULTISITE ) {
 
114
  ( method_exists( $wp_roles, 'for_site' ) ) ? $wp_roles->for_site() : $wp_roles->reinit();
115
  }
116
 
117
+ if (empty($_POST['current']) || !pp_capabilities_is_editable_role(sanitize_key($_POST['current']))) {
118
+ ak_admin_error(__('The selected role is not editable.', 'capsman-enhanced'));
119
  return;
120
  }
121
 
122
+ $role = get_role(sanitize_key($_POST['current']));
123
+ $role->name = sanitize_key($_POST['current']); // bbPress workaround
124
 
125
+ $newname = $this->createNewName(sanitize_text_field($_POST['capability-name']), ['allow_dashes' => true]);
126
 
127
  if (empty($newname['error'])) {
128
  $role->add_cap($newname['name']);
133
  if ( ! $customized_roles = get_option( 'pp_customized_roles' ) )
134
  $customized_roles = array();
135
 
136
+ $customized_roles[sanitize_key($_POST['role'])] = (object) array( 'caps' => array_merge( $role->capabilities, array( $newname['name'] => 1 ) ), 'plugins' => $plugins );
137
  update_option( 'pp_customized_roles', $customized_roles );
138
 
 
139
  $wpdb->query( "UPDATE $wpdb->options SET autoload = 'no' WHERE option_name = 'pp_customized_roles'" );
140
 
141
+ $redirect_role = (!empty($_POST['role'])) ? sanitize_key($_POST['role']) : '';
142
+
143
+ $url = admin_url('admin.php?page=pp-capabilities&role=' . esc_attr($redirect_role) . '&added=1');
144
  wp_redirect($url);
145
  exit;
146
  } else {
147
+ add_action('all_admin_notices', function() {
148
+ ak_admin_notify(__('Incorrect capability name.', 'capsman-enhanced'));
149
+ });
150
  }
151
 
152
+ } elseif ( ! empty($_POST['update_filtered_types']) || ! empty($_POST['update_filtered_taxonomies']) || ! empty($_POST['update_detailed_taxonomies']) ) {
153
+ ak_admin_notify(__('Type / Taxonomy settings saved.', 'capsman-enhanced'));
 
 
 
 
154
  } else {
155
  if (!apply_filters('publishpress-caps_submission_ok', false)) {
156
  ak_admin_error(__('Bad form received.', 'capsman-enhanced'));
158
  }
159
 
160
  if ( ! empty($newrole) && defined('PRESSPERMIT_ACTIVE') ) {
161
+ if ( ( ! empty($_POST['CreateRole']) && ! empty( $_REQUEST['new_role_pp_only'] ) ) || ( ! empty($_POST['CopyRole']) && ! empty( $_REQUEST['copy_role_pp_only'] ) ) ) {
162
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
163
  $pp_only[]= $newrole;
164
 
181
  * @param string $name Name from user input.
182
  * @return array|false An array with the name and display_name, or false if not valid $name.
183
  */
184
+ public function createNewName( $name, $args=[] ) {
185
  // Allow max 40 characters, letters, digits and spaces
186
  $name = trim(substr($name, 0, 40));
187
+ $pattern = (!empty($args['allow_dashes'])) ? '/^[a-zA-Z][a-zA-Z0-9 _\-]+$/' : '/^[a-zA-Z][a-zA-Z0-9 _]+$/';
188
 
189
  if ( preg_match($pattern, $name) ) {
190
  $roles = ak_get_roles();
410
  */
411
  function adminDeleteRole ()
412
  {
413
+ if (!empty($_GET['role'])) {
414
+ $role_name = sanitize_key($_GET['role']);
415
+ check_admin_referer('delete-role_' . $role_name);
416
+
417
+ $this->cm->current = $role_name;
418
 
419
+ if (!pp_capabilities_is_editable_role($role_name)) {
420
+ ak_admin_error(__('The selected role is not editable.', 'capsman-enhanced'));
421
+ }
422
 
423
+ if (false !== pp_capabilities_roles()->actions->delete_role($role_name, ['allow_system_role_deletion' => true, 'nonce_check' => false])) {
424
+ unset($this->cm->roles[$role_name]);
425
+ $this->cm->current = get_option('default_role');
426
+ }
427
  }
428
  }
429
  }
includes/manager.php CHANGED
@@ -53,13 +53,6 @@ function _cme_core_caps() {
53
  'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
54
  'update_core', 'list_users', 'remove_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
55
 
56
- // @todo (possibly)
57
- /*
58
- if (is_multisite()) {
59
- $core_caps['manage_network_plugins'] = true;
60
- }
61
- */
62
-
63
  ksort( $core_caps );
64
  return $core_caps;
65
  }
@@ -241,7 +234,7 @@ class CapabilityManager
241
  add_filter( 'option_' . $role_key, array( &$this, 'reinstate_db_roles' ), PHP_INT_MAX );
242
  }
243
 
244
- add_filter( 'plugins_loaded', array( &$this, 'processRoleUpdate' ) );
245
  }
246
 
247
  public function set_current_role($role_name) {
@@ -302,7 +295,6 @@ class CapabilityManager
302
 
303
  $backup = get_option($this->ID . '_backup');
304
  if ( false === $backup ) { // No previous backup found. Save it!
305
- global $wpdb;
306
  $roles = get_option($wpdb->prefix . 'user_roles');
307
  update_option( $this->ID . '_backup', $roles, false );
308
  update_option( $this->ID . '_backup_datestamp', current_time( 'timestamp' ), false );
@@ -430,7 +422,7 @@ class CapabilityManager
430
  {
431
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
432
  // TODO: Implement exceptions.
433
- wp_die('<strong>' .__('You do not have permission to manage roles.', 'capsman-enhanced') . '</strong>');
434
  }
435
 
436
  require_once (dirname(CME_FILE) . '/includes/roles/roles-functions.php');
@@ -453,7 +445,7 @@ class CapabilityManager
453
  public function ManageEditorFeatures() {
454
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
455
  // TODO: Implement exceptions.
456
- wp_die('<strong>' .__('You do not have permission to manage editor features.', 'capabilities-pro') . '</strong>');
457
  }
458
 
459
  $this->generateNames();
@@ -461,7 +453,7 @@ class CapabilityManager
461
 
462
  if (!isset($this->current)) {
463
  if (empty($_POST) && !empty($_REQUEST['role'])) {
464
- $this->set_current_role($_REQUEST['role']);
465
  }
466
  }
467
 
@@ -473,11 +465,11 @@ class CapabilityManager
473
  $this->current = array_shift($roles);
474
  }
475
 
476
- if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-editor-features-role'])) {
477
- if (!check_admin_referer('pp-capabilities-editor-features')) {
478
- wp_die('<strong>' .__('You do not have permission to manage editor features.', 'capabilities-pro') . '</strong>');
479
  } else {
480
- $this->set_current_role($_POST['ppc-editor-features-role']);
481
 
482
  $classic_editor = pp_capabilities_is_classic_editor_available();
483
 
@@ -485,15 +477,15 @@ class CapabilityManager
485
 
486
  foreach ($def_post_types as $post_type) {
487
  if ($classic_editor) {
488
- $posted_settings = (isset($_POST["capsman_feature_restrict_classic_{$post_type}"])) ? $_POST["capsman_feature_restrict_classic_{$post_type}"] : [];
489
  $post_features_option = get_option("capsman_feature_restrict_classic_{$post_type}", []);
490
- $post_features_option[$_POST['ppc-editor-features-role']] = $posted_settings;
491
  update_option("capsman_feature_restrict_classic_{$post_type}", $post_features_option, false);
492
  }
493
 
494
- $posted_settings = (isset($_POST["capsman_feature_restrict_{$post_type}"])) ? $_POST["capsman_feature_restrict_{$post_type}"] : [];
495
  $post_features_option = get_option("capsman_feature_restrict_{$post_type}", []);
496
- $post_features_option[$_POST['ppc-editor-features-role']] = $posted_settings;
497
  update_option("capsman_feature_restrict_{$post_type}", $post_features_option, false);
498
  }
499
 
@@ -513,7 +505,7 @@ class CapabilityManager
513
  public function ManageAdminFeatures() {
514
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
515
  // TODO: Implement exceptions.
516
- wp_die('<strong>' .__('You do not have permission to manage admin features.', 'capabilities-pro') . '</strong>');
517
  }
518
 
519
  $this->generateNames();
@@ -521,7 +513,7 @@ class CapabilityManager
521
 
522
  if (!isset($this->current)) {
523
  if (empty($_POST) && !empty($_REQUEST['role'])) {
524
- $this->set_current_role($_REQUEST['role']);
525
  }
526
  }
527
 
@@ -533,23 +525,25 @@ class CapabilityManager
533
  $this->current = array_shift($roles);
534
  }
535
 
536
- if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['ppc-admin-features-role'])) {
537
- if (!check_admin_referer('pp-capabilities-admin-features')) {
538
- wp_die('<strong>' .__('You do not have permission to manage admin features.', 'capabilities-pro') . '</strong>');
539
  } else {
540
- $this->set_current_role($_POST['ppc-admin-features-role']);
 
 
541
 
542
  $disabled_admin_items = !empty(get_option('capsman_disabled_admin_features')) ? (array)get_option('capsman_disabled_admin_features') : [];
543
- $disabled_admin_items[$_POST['ppc-admin-features-role']] = isset($_POST['capsman_disabled_admin_features']) ? $_POST['capsman_disabled_admin_features'] : '';
544
 
545
  update_option('capsman_disabled_admin_features', $disabled_admin_items, false);
546
 
547
  //set reload option for instant reflection if user is updating own role
548
- if(in_array($_POST['ppc-admin-features-role'], wp_get_current_user()->roles)){
549
  $ppc_page_reload = '1';
550
  }
551
 
552
- ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
553
  }
554
  }
555
 
@@ -649,21 +643,21 @@ class CapabilityManager
649
  }
650
 
651
  function processRoleUpdate() {
652
- if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ( ! empty($_REQUEST['SaveRole']) || ! empty($_REQUEST['AddCap']) ) ) {
 
 
653
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
654
  // TODO: Implement exceptions.
655
- wp_die('<strong>' .__('You do not have permission to manage capabilities.', 'capsman-enhanced') . '</strong>');
656
  }
657
 
658
  if ( ! empty($_REQUEST['current']) ) { // don't process role update unless form variable is received
659
- check_admin_referer('capsman-general-manager');
660
-
661
- $role = get_role($_REQUEST['current']);
662
  $current_level = ($role) ? ak_caps2level($role->capabilities) : 0;
663
 
664
  $this->processAdminGeneral();
665
 
666
- $set_level = (isset($_POST['level'])) ? $_POST['level'] : 0;
667
 
668
  if ($set_level != $current_level) {
669
  global $wp_roles, $wp_version;
@@ -674,7 +668,7 @@ class CapabilityManager
674
  $wp_roles->reinit();
675
  }
676
 
677
- foreach( get_users(array('role' => $_REQUEST['current'], 'fields' => 'ID')) as $ID ) {
678
  $user = new WP_User($ID);
679
  $user->get_role_caps();
680
  $user->update_user_level_from_caps();
@@ -682,6 +676,19 @@ class CapabilityManager
682
  }
683
  }
684
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
685
  }
686
 
687
  /**
@@ -693,11 +700,11 @@ class CapabilityManager
693
  function generalManager () {
694
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
695
  // TODO: Implement exceptions.
696
- wp_die('<strong>' .__('You do not have permission to manage capabilities.', 'capsman-enhanced') . '</strong>');
697
  }
698
 
699
- if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
700
- if ( empty($_REQUEST['SaveRole']) && empty($_REQUEST['AddCap']) ) {
701
  check_admin_referer('capsman-general-manager');
702
  $this->processAdminGeneral();
703
  } elseif ( ! empty($_REQUEST['SaveRole']) ) {
@@ -707,7 +714,7 @@ class CapabilityManager
707
  }
708
  } else {
709
  if (!empty($_REQUEST['added'])) {
710
- ak_admin_notify(__('New capability added to role.'));
711
  }
712
  }
713
 
@@ -722,10 +729,10 @@ class CapabilityManager
722
 
723
  if ( ! isset($this->current) ) { // By default, we manage the default role
724
  if (empty($_POST) && !empty($_REQUEST['role'])) {
725
- $role = $_REQUEST['role'];
726
 
727
  if (!pp_capabilities_is_editable_role($role)) {
728
- wp_die(__('The selected role is not editable.', 'capsman-enhanced'));
729
  }
730
 
731
  $this->set_current_role($role);
@@ -750,26 +757,23 @@ class CapabilityManager
750
  */
751
  private function processAdminGeneral ()
752
  {
 
 
753
  if (! isset($_POST['action']) || 'update' != $_POST['action'] ) {
754
  // TODO: Implement exceptions. This must be a fatal error.
755
  ak_admin_error(__('Bad form Received', 'capsman-enhanced'));
756
  return;
757
  }
758
 
759
- $post = stripslashes_deep($_POST);
760
- if ( empty ($post['caps']) ) {
761
- $post['caps'] = array();
762
- }
763
-
764
  // Select a new role.
765
- if ( ! empty($post['LoadRole']) ) {
766
- $this->set_current_role($post['role']);
767
- } else {
768
- $this->set_current_role($post['current']);
769
 
770
  require_once( dirname(__FILE__).'/handler.php' );
771
  $capsman_modify = new CapsmanHandler( $this );
772
- $capsman_modify->processAdminGeneral( $post );
773
  }
774
  }
775
 
@@ -784,7 +788,6 @@ class CapabilityManager
784
  function _capNamesCB ( $cap )
785
  {
786
  $cap = str_replace('_', ' ', $cap);
787
- //$cap = ucfirst($cap);
788
 
789
  return $cap;
790
  }
@@ -872,10 +875,10 @@ class CapabilityManager
872
  {
873
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('restore_roles')) {
874
  // TODO: Implement exceptions.
875
- wp_die('<strong>' .__('You do not have permission to restore roles.', 'capsman-enhanced') . '</strong>');
876
  }
877
 
878
- if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
879
  require_once( dirname(__FILE__).'/backup-handler.php' );
880
  $cme_backup_handler = new Capsman_BackupHandler( $this );
881
  $cme_backup_handler->processBackupTool();
@@ -902,7 +905,7 @@ function cme_publishpressFooter() {
902
  <div class="pp-rating">
903
  <a href="https://wordpress.org/support/plugin/capability-manager-enhanced/reviews/#new-post" target="_blank" rel="noopener noreferrer">
904
  <?php printf(
905
- __('If you like %s, please leave us a %s rating. Thank you!', 'capsman-enhanced'),
906
  '<strong>PublishPress Capabilities</strong>',
907
  '<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>'
908
  );
@@ -913,11 +916,11 @@ function cme_publishpressFooter() {
913
  <hr>
914
  <nav>
915
  <ul>
916
- <li><a href="https://publishpress.com/capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php _e('About PublishPress Capabilities', 'capsman-enhanced');?>"><?php _e('About', 'capsman-enhanced');?>
917
  </a></li>
918
- <li><a href="https://publishpress.com/knowledge-base/how-to-use-capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php _e('Capabilites Documentation', 'capsman-enhanced');?>"><?php _e('Documentation', 'capsman-enhanced');?>
919
  </a></li>
920
- <li><a href="https://publishpress.com/contact" target="_blank" rel="noopener noreferrer" title="<?php _e('Contact the PublishPress team', 'capsman-enhanced');?>"><?php _e('Contact', 'capsman-enhanced');?>
921
  </a></li>
922
  <li><a href="https://twitter.com/publishpresscom" target="_blank" rel="noopener noreferrer"><span class="dashicons dashicons-twitter"></span>
923
  </a></li>
@@ -929,7 +932,7 @@ function cme_publishpressFooter() {
929
  <div class="pp-pressshack-logo">
930
  <a href="https://publishpress.com" target="_blank" rel="noopener noreferrer">
931
 
932
- <img src="<?php echo plugins_url('', CME_FILE) . '/common/img/publishpress-logo.png';?>" />
933
  </a>
934
  </div>
935
 
53
  'update_plugins', 'delete_plugins', 'install_plugins', 'update_themes', 'install_themes',
54
  'update_core', 'list_users', 'remove_users', 'promote_users', 'edit_theme_options', 'delete_themes', 'export' ), true );
55
 
 
 
 
 
 
 
 
56
  ksort( $core_caps );
57
  return $core_caps;
58
  }
234
  add_filter( 'option_' . $role_key, array( &$this, 'reinstate_db_roles' ), PHP_INT_MAX );
235
  }
236
 
237
+ add_action( 'plugins_loaded', array( &$this, 'processRoleUpdate' ) );
238
  }
239
 
240
  public function set_current_role($role_name) {
295
 
296
  $backup = get_option($this->ID . '_backup');
297
  if ( false === $backup ) { // No previous backup found. Save it!
 
298
  $roles = get_option($wpdb->prefix . 'user_roles');
299
  update_option( $this->ID . '_backup', $roles, false );
300
  update_option( $this->ID . '_backup_datestamp', current_time( 'timestamp' ), false );
422
  {
423
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
424
  // TODO: Implement exceptions.
425
+ wp_die('<strong>' . esc_html__('You do not have permission to manage roles.', 'capsman-enhanced') . '</strong>');
426
  }
427
 
428
  require_once (dirname(CME_FILE) . '/includes/roles/roles-functions.php');
445
  public function ManageEditorFeatures() {
446
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
447
  // TODO: Implement exceptions.
448
+ wp_die('<strong>' . esc_html__('You do not have permission to manage editor features.', 'capabilities-pro') . '</strong>');
449
  }
450
 
451
  $this->generateNames();
453
 
454
  if (!isset($this->current)) {
455
  if (empty($_POST) && !empty($_REQUEST['role'])) {
456
+ $this->set_current_role(sanitize_key($_REQUEST['role']));
457
  }
458
  }
459
 
465
  $this->current = array_shift($roles);
466
  }
467
 
468
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD']) && isset($_POST['ppc-editor-features-role']) && !empty($_REQUEST['_wpnonce'])) {
469
+ if (!wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), 'pp-capabilities-editor-features')) {
470
+ wp_die('<strong>' . esc_html__('You do not have permission to manage editor features.', 'capabilities-pro') . '</strong>');
471
  } else {
472
+ $this->set_current_role(sanitize_key($_POST['ppc-editor-features-role']));
473
 
474
  $classic_editor = pp_capabilities_is_classic_editor_available();
475
 
477
 
478
  foreach ($def_post_types as $post_type) {
479
  if ($classic_editor) {
480
+ $posted_settings = (isset($_POST["capsman_feature_restrict_classic_{$post_type}"])) ? array_map('sanitize_text_field', $_POST["capsman_feature_restrict_classic_{$post_type}"]) : [];
481
  $post_features_option = get_option("capsman_feature_restrict_classic_{$post_type}", []);
482
+ $post_features_option[sanitize_key($_POST['ppc-editor-features-role'])] = $posted_settings;
483
  update_option("capsman_feature_restrict_classic_{$post_type}", $post_features_option, false);
484
  }
485
 
486
+ $posted_settings = (isset($_POST["capsman_feature_restrict_{$post_type}"])) ? array_map('sanitize_text_field', $_POST["capsman_feature_restrict_{$post_type}"]) : [];
487
  $post_features_option = get_option("capsman_feature_restrict_{$post_type}", []);
488
+ $post_features_option[sanitize_key($_POST['ppc-editor-features-role'])] = $posted_settings;
489
  update_option("capsman_feature_restrict_{$post_type}", $post_features_option, false);
490
  }
491
 
505
  public function ManageAdminFeatures() {
506
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
507
  // TODO: Implement exceptions.
508
+ wp_die('<strong>' . esc_html__('You do not have permission to manage admin features.', 'capabilities-pro') . '</strong>');
509
  }
510
 
511
  $this->generateNames();
513
 
514
  if (!isset($this->current)) {
515
  if (empty($_POST) && !empty($_REQUEST['role'])) {
516
+ $this->set_current_role(sanitize_key($_REQUEST['role']));
517
  }
518
  }
519
 
525
  $this->current = array_shift($roles);
526
  }
527
 
528
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD']) && isset($_POST['ppc-admin-features-role']) && !empty($_REQUEST['_wpnonce'])) {
529
+ if (!wp_verify_nonce(sanitize_key($_REQUEST['_wpnonce']), 'pp-capabilities-admin-features')) {
530
+ wp_die('<strong>' . esc_html__('You do not have permission to manage admin features.', 'capabilities-pro') . '</strong>');
531
  } else {
532
+ $features_role = sanitize_key($_POST['ppc-admin-features-role']);
533
+
534
+ $this->set_current_role($features_role);
535
 
536
  $disabled_admin_items = !empty(get_option('capsman_disabled_admin_features')) ? (array)get_option('capsman_disabled_admin_features') : [];
537
+ $disabled_admin_items[$features_role] = isset($_POST['capsman_disabled_admin_features']) ? array_map('sanitize_text_field', $_POST['capsman_disabled_admin_features']) : '';
538
 
539
  update_option('capsman_disabled_admin_features', $disabled_admin_items, false);
540
 
541
  //set reload option for instant reflection if user is updating own role
542
+ if (in_array($features_role, wp_get_current_user()->roles)){
543
  $ppc_page_reload = '1';
544
  }
545
 
546
+ ak_admin_notify(__('Settings updated.', 'capabilities-pro'));
547
  }
548
  }
549
 
643
  }
644
 
645
  function processRoleUpdate() {
646
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD']) && ( ! empty($_REQUEST['SaveRole']) || ! empty($_REQUEST['AddCap']) ) ) {
647
+ check_admin_referer('capsman-general-manager');
648
+
649
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
650
  // TODO: Implement exceptions.
651
+ wp_die('<strong>' . esc_html__('You do not have permission to manage capabilities.', 'capsman-enhanced') . '</strong>');
652
  }
653
 
654
  if ( ! empty($_REQUEST['current']) ) { // don't process role update unless form variable is received
655
+ $role = get_role(sanitize_key($_REQUEST['current']));
 
 
656
  $current_level = ($role) ? ak_caps2level($role->capabilities) : 0;
657
 
658
  $this->processAdminGeneral();
659
 
660
+ $set_level = (isset($_POST['level'])) ? (int) $_POST['level'] : 0;
661
 
662
  if ($set_level != $current_level) {
663
  global $wp_roles, $wp_version;
668
  $wp_roles->reinit();
669
  }
670
 
671
+ foreach( get_users(array('role' => sanitize_key($_REQUEST['current']), 'fields' => 'ID')) as $ID ) {
672
  $user = new WP_User($ID);
673
  $user->get_role_caps();
674
  $user->update_user_level_from_caps();
676
  }
677
  }
678
  }
679
+
680
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD']) && ( ! empty($_REQUEST['RenameRole']) ) ) {
681
+ check_admin_referer('capsman-general-manager');
682
+
683
+ if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
684
+ // TODO: Implement exceptions.
685
+ wp_die('<strong>' . esc_html__('You do not have permission to manage capabilities.', 'capsman-enhanced') . '</strong>');
686
+ }
687
+
688
+ if ( ! empty($_REQUEST['current']) ) { // don't process role update unless form variable is received
689
+ $this->processAdminGeneral();
690
+ }
691
+ }
692
  }
693
 
694
  /**
700
  function generalManager () {
701
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('manage_capabilities')) {
702
  // TODO: Implement exceptions.
703
+ wp_die('<strong>' . esc_html__('You do not have permission to manage capabilities.', 'capsman-enhanced') . '</strong>');
704
  }
705
 
706
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD'])) {
707
+ if ( empty($_REQUEST['SaveRole']) && empty($_REQUEST['AddCap']) && empty($_REQUEST['RenameRole']) ) {
708
  check_admin_referer('capsman-general-manager');
709
  $this->processAdminGeneral();
710
  } elseif ( ! empty($_REQUEST['SaveRole']) ) {
714
  }
715
  } else {
716
  if (!empty($_REQUEST['added'])) {
717
+ ak_admin_notify(__('New capability added to role.', 'capsman-enhanced'));
718
  }
719
  }
720
 
729
 
730
  if ( ! isset($this->current) ) { // By default, we manage the default role
731
  if (empty($_POST) && !empty($_REQUEST['role'])) {
732
+ $role = sanitize_key($_REQUEST['role']);
733
 
734
  if (!pp_capabilities_is_editable_role($role)) {
735
+ wp_die(esc_html__('The selected role is not editable.', 'capsman-enhanced'));
736
  }
737
 
738
  $this->set_current_role($role);
757
  */
758
  private function processAdminGeneral ()
759
  {
760
+ check_admin_referer('capsman-general-manager');
761
+
762
  if (! isset($_POST['action']) || 'update' != $_POST['action'] ) {
763
  // TODO: Implement exceptions. This must be a fatal error.
764
  ak_admin_error(__('Bad form Received', 'capsman-enhanced'));
765
  return;
766
  }
767
 
 
 
 
 
 
768
  // Select a new role.
769
+ if ( ! empty($post['LoadRole']) && !empty($_POST['role']) ) {
770
+ $this->set_current_role(sanitize_key($_POST['role']));
771
+ } elseif (!empty($_POST['current'])) {
772
+ $this->set_current_role(sanitize_key($_POST['current']));
773
 
774
  require_once( dirname(__FILE__).'/handler.php' );
775
  $capsman_modify = new CapsmanHandler( $this );
776
+ $capsman_modify->processAdminGeneral();
777
  }
778
  }
779
 
788
  function _capNamesCB ( $cap )
789
  {
790
  $cap = str_replace('_', ' ', $cap);
 
791
 
792
  return $cap;
793
  }
875
  {
876
  if ((!is_multisite() || !is_super_admin()) && !current_user_can('administrator') && !current_user_can('restore_roles')) {
877
  // TODO: Implement exceptions.
878
+ wp_die('<strong>' . esc_html__('You do not have permission to restore roles.', 'capsman-enhanced') . '</strong>');
879
  }
880
 
881
+ if (!empty($_SERVER['REQUEST_METHOD']) && ('POST' == $_SERVER['REQUEST_METHOD'])) {
882
  require_once( dirname(__FILE__).'/backup-handler.php' );
883
  $cme_backup_handler = new Capsman_BackupHandler( $this );
884
  $cme_backup_handler->processBackupTool();
905
  <div class="pp-rating">
906
  <a href="https://wordpress.org/support/plugin/capability-manager-enhanced/reviews/#new-post" target="_blank" rel="noopener noreferrer">
907
  <?php printf(
908
+ esc_html__('If you like %s, please leave us a %s rating. Thank you!', 'capsman-enhanced'),
909
  '<strong>PublishPress Capabilities</strong>',
910
  '<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>'
911
  );
916
  <hr>
917
  <nav>
918
  <ul>
919
+ <li><a href="https://publishpress.com/capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php esc_attr_e('About PublishPress Capabilities', 'capsman-enhanced');?>"><?php esc_html_e('About', 'capsman-enhanced');?>
920
  </a></li>
921
+ <li><a href="https://publishpress.com/knowledge-base/how-to-use-capability-manager/" target="_blank" rel="noopener noreferrer" title="<?php esc_attr_e('Capabilites Documentation', 'capsman-enhanced');?>"><?php esc_html_e('Documentation', 'capsman-enhanced');?>
922
  </a></li>
923
+ <li><a href="https://publishpress.com/contact" target="_blank" rel="noopener noreferrer" title="<?php esc_attr_e('Contact the PublishPress team', 'capsman-enhanced');?>"><?php esc_html_e('Contact', 'capsman-enhanced');?>
924
  </a></li>
925
  <li><a href="https://twitter.com/publishpresscom" target="_blank" rel="noopener noreferrer"><span class="dashicons dashicons-twitter"></span>
926
  </a></li>
932
  <div class="pp-pressshack-logo">
933
  <a href="https://publishpress.com" target="_blank" rel="noopener noreferrer">
934
 
935
+ <img src="<?php echo esc_url_raw(plugins_url('', CME_FILE) . '/common/img/publishpress-logo.png');?>" />
936
  </a>
937
  </div>
938
 
includes/network.php CHANGED
@@ -24,10 +24,10 @@ function _cme_new_blog( $new_blog_id ) {
24
  $admin_role = $wp_roles->get_role('administrator');
25
  $main_admin_caps = $admin_role->capabilities;
26
 
27
- if ( defined('PRESSPERMIT_ACTIVE') )
28
  $main_pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
29
- //$pp_only[]= $newrole;
30
-
31
  foreach( $autocreate_roles as $role_name ) {
32
  if ( $role = get_role( $role_name ) ) {
33
  $main_site_caps[$role_name] = $role->capabilities;
24
  $admin_role = $wp_roles->get_role('administrator');
25
  $main_admin_caps = $admin_role->capabilities;
26
 
27
+ if ( defined('PRESSPERMIT_ACTIVE') ) {
28
  $main_pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
29
+ }
30
+
31
  foreach( $autocreate_roles as $role_name ) {
32
  if ( $role = get_role( $role_name ) ) {
33
  $main_site_caps[$role_name] = $role->capabilities;
includes/pp-handler.php CHANGED
@@ -10,7 +10,9 @@ function _cme_update_pp_usage() {
10
  static $updated;
11
  if ( ! empty($updated) ) { return true; }
12
 
13
- if (!current_user_can( 'manage_capabilities' ) || !check_admin_referer('capsman-general-manager')) {
 
 
14
  return false;
15
  }
16
 
@@ -51,7 +53,7 @@ function _cme_update_pp_usage() {
51
  $value = array_merge( $current, $value ); // retain setting for any types which were previously enabled for filtering but are currently not registered
52
  }
53
 
54
- $value = stripslashes_deep($value);
55
 
56
  update_option( $option_name, $value );
57
 
@@ -77,14 +79,17 @@ function _cme_update_pp_usage() {
77
  if ( ! empty( $_REQUEST['role'] ) ) {
78
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
79
 
80
- if ( empty($_REQUEST['pp_only_role']) )
81
- $pp_only = array_diff( $pp_only, array($_REQUEST['role']) );
82
- else
83
- $pp_only[]= $_REQUEST['role'];
84
 
 
 
 
 
 
 
85
  pp_capabilities_update_permissions_option('supplemental_role_defs', array_unique($pp_only));
86
 
87
- _cme_pp_default_pattern_role( $_REQUEST['role'] );
88
  }
89
  }
90
 
10
  static $updated;
11
  if ( ! empty($updated) ) { return true; }
12
 
13
+ check_admin_referer('capsman-general-manager');
14
+
15
+ if (!current_user_can( 'manage_capabilities' )) {
16
  return false;
17
  }
18
 
53
  $value = array_merge( $current, $value ); // retain setting for any types which were previously enabled for filtering but are currently not registered
54
  }
55
 
56
+ $value = array_map('sanitize_key', $value);
57
 
58
  update_option( $option_name, $value );
59
 
79
  if ( ! empty( $_REQUEST['role'] ) ) {
80
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
81
 
82
+ $role = sanitize_key($_REQUEST['role']);
 
 
 
83
 
84
+ if (empty($_REQUEST['pp_only_role'])) {
85
+ $pp_only = array_diff($pp_only, [$role]);
86
+ } else {
87
+ $pp_only[]= $role;
88
+ }
89
+
90
  pp_capabilities_update_permissions_option('supplemental_role_defs', array_unique($pp_only));
91
 
92
+ _cme_pp_default_pattern_role($role);
93
  }
94
  }
95
 
includes/pp-ui.php CHANGED
@@ -13,11 +13,19 @@ class Capsman_PP_UI {
13
  global $wpdb;
14
 
15
  if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
16
- $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 );
17
- $pp_supplemental_roles = $wpdb->get_col( $query );
 
 
 
 
18
  } else {
19
- $query = $wpdb->prepare( "SELECT role_name FROM $wpdb->pp_roles AS r INNER JOIN $wpdb->pp_groups AS g ON g.ID = r.group_id AND r.group_type = 'pp_group' AND r.scope = 'site' WHERE g.metagroup_type = 'wp_role' AND g.metagroup_id = %s", $default );
20
- $pp_supplemental_roles = $wpdb->get_col( $query );
 
 
 
 
21
  }
22
 
23
  $pp_filtered_types = pp_get_enabled_types('post');
@@ -47,16 +55,16 @@ class Capsman_PP_UI {
47
  echo '<li>';
48
  if ( defined( 'PPCE_VERSION' ) || ! defined( 'PRESSPERMIT_ACTIVE' ) ) {
49
  if ( pp_capabilities_get_permissions_option( 'advanced_options' ) )
50
- $parenthetical = ' (' . sprintf( __( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) . ')';
51
  else
52
- $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>' ). ')';
53
  } else
54
  $parenthetical = '';
55
 
56
  if ( defined( 'PRESSPERMIT_ACTIVE' ) )
57
- printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', 'capsman-enhanced' ), $parenthetical ) ;
58
  else
59
- printf( __( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', 'capsman-enhanced' ), $parenthetical ) ;
60
 
61
  echo '</li>';
62
  }
@@ -72,7 +80,7 @@ class Capsman_PP_UI {
72
  $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.', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) ;
73
 
74
  if ( $status_hint )
75
- echo "<li>$status_hint</li>";
76
 
77
  echo '</ul>';
78
  }
@@ -82,15 +90,13 @@ class Capsman_PP_UI {
82
  function pp_types_ui( $defined_types ) {
83
  ?>
84
  <dl>
85
- <dt><?php _e('Type-Specific Capabilities', 'capsman-enhanced'); ?></dt>
86
  <dd style="text-align:center;">
87
  <?php
88
- $caption = __( 'Ensure permissions can be controlled separately from other post types.', 'capsman-enhanced' );
89
- echo "<p class='cme-hint'>$caption</p>";
90
 
91
  if ( defined( 'PRESSPERMIT_ACTIVE' ) && pp_capabilities_get_permissions_option( 'display_hints' ) ) :?>
92
  <div class="cme-subtext" style="margin-top:0">
93
- <?php /*_e( '(PP Filtered Post Types, Taxonomies)', 'capsman-enhanced' ); */?>
94
  </div>
95
  <?php endif;
96
 
@@ -117,18 +123,20 @@ class Capsman_PP_UI {
117
  if ( in_array( $key, $unfiltered ) )
118
  continue;
119
 
 
 
120
  $id = "$option_basename-" . $key;
121
  ?>
122
  <div style="text-align:left">
123
  <?php if ( ! empty( $hidden[$key] ) ) :?>
124
- <input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
125
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($key)?>" />
126
 
127
  <?php else: ?>
128
  <div class="agp-vspaced_input">
129
- <label for="<?php echo($id);?>" title="<?php echo($key);?>">
130
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($key)?>" />
131
- <input name="<?php echo($id);?>" type="checkbox" id="<?php echo($id);?>" autocomplete="off" value="1" <?php checked('1', ! empty($enabled[$key]) );?> /> <?php echo($type_obj->label);?>
132
 
133
  <?php
134
  echo ('</label></div>');
@@ -148,7 +156,7 @@ class Capsman_PP_UI {
148
 
149
  <div style="margin-top:10px;margin-bottom:10px">
150
  <label for="pp_define_create_posts_cap">
151
- <input name="pp_define_create_posts_cap" type="checkbox" id="pp_define_create_posts_cap" autocomplete="off" 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');?>
152
  </label>
153
  </div>
154
 
@@ -156,7 +164,7 @@ class Capsman_PP_UI {
156
  do_action('pp-capabilities-type-specific-ui');
157
  ?>
158
 
159
- <input type="submit" name="update_filtered_types" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
160
  </dd>
161
  </dl>
162
  <?php
@@ -166,11 +174,10 @@ class Capsman_PP_UI {
166
  function pp_taxonomies_ui( $defined_taxonomies ) {
167
  ?>
168
  <dl>
169
- <dt><?php _e('Taxonomy-Specific Capabilities', 'capsman-enhanced'); ?></dt>
170
  <dd style="text-align:center;">
171
  <?php
172
- $caption = __( 'Ensure permissions can be controlled separately from other taxonomies.', 'capsman-enhanced' );
173
- echo "<p class='cme-hint'>$caption</p>";
174
 
175
  echo "<table style='width:100%'><tr>";
176
 
@@ -193,18 +200,20 @@ class Capsman_PP_UI {
193
  if ( in_array( $taxonomy, $unfiltered ) )
194
  continue;
195
 
 
 
196
  $id = "$option_basename-" . $taxonomy;
197
  ?>
198
  <div style="text-align:left">
199
  <?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
200
- <input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
201
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
202
 
203
  <?php else: ?>
204
- <div class="agp-vspaced_input">
205
- <label for="<?php echo($id);?>" title="<?php echo($taxonomy);?>">
206
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
207
- <input name="<?php echo($id);?>" type="checkbox" autocomplete="off" id="<?php echo($id);?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo($type_obj->label);?>
208
 
209
  <?php
210
  echo ('</label></div>');
@@ -219,16 +228,15 @@ class Capsman_PP_UI {
219
  </tr>
220
  </table>
221
 
222
- <input type="submit" name="update_filtered_taxonomies" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
223
  </dd>
224
  </dl>
225
 
226
  <dl>
227
- <dt><?php _e('Detailed Taxonomy Capabilities', 'capsman-enhanced'); ?></dt>
228
  <dd style="text-align:center;">
229
  <?php
230
- $caption = __( 'Enforce Edit, Delete and Assign capabilities separately from Management capability.', 'capsman-enhanced' );
231
- echo "<p class='cme-hint'>$caption</p>";
232
 
233
  echo "<table style='width:100%'><tr>";
234
 
@@ -249,18 +257,20 @@ class Capsman_PP_UI {
249
  if ( in_array( $taxonomy, $unfiltered ) )
250
  continue;
251
 
 
 
252
  $id = "$option_basename-" . $taxonomy;
253
  ?>
254
  <div style="text-align:left">
255
  <?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
256
- <input name="<?php echo($id);?>" type="hidden" id="<?php echo($id);?>" value="1" />
257
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
258
 
259
  <?php else: ?>
260
  <div class="agp-vspaced_input">
261
- <label for="<?php echo($id);?>" title="<?php echo($taxonomy);?>">
262
- <input name="<?php echo("{$option_basename}-options[]");?>" type="hidden" value="<?php echo($taxonomy)?>" />
263
- <input name="<?php echo($id);?>" type="checkbox" autocomplete="off" id="<?php echo($id);?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo($type_obj->label);?>
264
 
265
  <?php
266
  echo ('</label></div>');
@@ -275,7 +285,7 @@ class Capsman_PP_UI {
275
  </tr>
276
  </table>
277
 
278
- <input type="submit" name="update_detailed_taxonomies" value="<?php _e('Update', 'capsman-enhanced') ?>" class="button" />
279
  </dd>
280
  </dl>
281
  <?php
13
  global $wpdb;
14
 
15
  if ( defined( 'PRESSPERMIT_ACTIVE' ) ) {
16
+ $pp_supplemental_roles = $wpdb->get_col(
17
+ $wpdb->prepare(
18
+ "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",
19
+ $default
20
+ )
21
+ );
22
  } else {
23
+ $pp_supplemental_roles = $wpdb->get_col(
24
+ $wpdb->prepare(
25
+ "SELECT role_name FROM $wpdb->pp_roles AS r INNER JOIN $wpdb->pp_groups AS g ON g.ID = r.group_id AND r.group_type = 'pp_group' AND r.scope = 'site' WHERE g.metagroup_type = 'wp_role' AND g.metagroup_id = %s",
26
+ $default
27
+ )
28
+ );
29
  }
30
 
31
  $pp_filtered_types = pp_get_enabled_types('post');
55
  echo '<li>';
56
  if ( defined( 'PPCE_VERSION' ) || ! defined( 'PRESSPERMIT_ACTIVE' ) ) {
57
  if ( pp_capabilities_get_permissions_option( 'advanced_options' ) )
58
+ $parenthetical = ' (' . sprintf( esc_html__( 'see %1$sRole Usage%2$s: "Pattern Roles"', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) . ')';
59
  else
60
+ $parenthetical = ' (' . sprintf( esc_html__( '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>' ). ')';
61
  } else
62
  $parenthetical = '';
63
 
64
  if ( defined( 'PRESSPERMIT_ACTIVE' ) )
65
+ printf( esc_html__( '"Posts" capabilities selected here also define type-specific role assignment for Permission Groups%s.', 'capsman-enhanced' ), $parenthetical ) ;
66
  else
67
+ printf( esc_html__( '"Posts" capabilities selected here also define type-specific role assignment for Permit Groups%s.', 'capsman-enhanced' ), $parenthetical ) ;
68
 
69
  echo '</li>';
70
  }
80
  $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.', 'capsman-enhanced' ), "<a href='" . admin_url("admin.php?page={$pp_prefix}-role-usage") . "'>", '</a>' ) ;
81
 
82
  if ( $status_hint )
83
+ echo "<li>" . esc_html($status_hint) . "</li>";
84
 
85
  echo '</ul>';
86
  }
90
  function pp_types_ui( $defined_types ) {
91
  ?>
92
  <dl>
93
+ <dt><?php esc_html_e('Type-Specific Capabilities', 'capsman-enhanced'); ?></dt>
94
  <dd style="text-align:center;">
95
  <?php
96
+ echo "<p class='cme-hint'>" . esc_html__( 'Ensure permissions can be controlled separately from other post types.', 'capsman-enhanced' ) . "</p>";
 
97
 
98
  if ( defined( 'PRESSPERMIT_ACTIVE' ) && pp_capabilities_get_permissions_option( 'display_hints' ) ) :?>
99
  <div class="cme-subtext" style="margin-top:0">
 
100
  </div>
101
  <?php endif;
102
 
123
  if ( in_array( $key, $unfiltered ) )
124
  continue;
125
 
126
+ $key = sanitize_key($key);
127
+
128
  $id = "$option_basename-" . $key;
129
  ?>
130
  <div style="text-align:left">
131
  <?php if ( ! empty( $hidden[$key] ) ) :?>
132
+ <input name="<?php echo(esc_attr($id));?>" type="hidden" id="<?php echo(esc_attr($id));?>" value="1" />
133
+ <input name="<?php echo(esc_attr($option_basename) . "-options[]");?>" type="hidden" value="<?php echo(esc_attr($key))?>" />
134
 
135
  <?php else: ?>
136
  <div class="agp-vspaced_input">
137
+ <label for="<?php echo(esc_attr($id));?>" title="<?php echo(esc_attr($key));?>">
138
+ <input name="<?php echo(esc_attr($option_basename) . "-options[]");?>" type="hidden" value="<?php echo(esc_attr($key))?>" />
139
+ <input name="<?php echo(esc_attr($id));?>" type="checkbox" id="<?php echo(esc_attr($id));?>" autocomplete="off" value="1" <?php checked('1', ! empty($enabled[$key]) );?> /> <?php echo(esc_html($type_obj->label));?>
140
 
141
  <?php
142
  echo ('</label></div>');
156
 
157
  <div style="margin-top:10px;margin-bottom:10px">
158
  <label for="pp_define_create_posts_cap">
159
+ <input name="pp_define_create_posts_cap" type="checkbox" id="pp_define_create_posts_cap" autocomplete="off" 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 esc_html_e('Use create_posts capability');?>
160
  </label>
161
  </div>
162
 
164
  do_action('pp-capabilities-type-specific-ui');
165
  ?>
166
 
167
+ <input type="submit" name="update_filtered_types" value="<?php esc_attr_e('Update', 'capsman-enhanced') ?>" class="button" />
168
  </dd>
169
  </dl>
170
  <?php
174
  function pp_taxonomies_ui( $defined_taxonomies ) {
175
  ?>
176
  <dl>
177
+ <dt><?php esc_html_e('Taxonomy-Specific Capabilities', 'capsman-enhanced'); ?></dt>
178
  <dd style="text-align:center;">
179
  <?php
180
+ echo "<p class='cme-hint'>" . esc_html__( 'Ensure permissions can be controlled separately from other taxonomies.', 'capsman-enhanced' ) . "</p>";
 
181
 
182
  echo "<table style='width:100%'><tr>";
183
 
200
  if ( in_array( $taxonomy, $unfiltered ) )
201
  continue;
202
 
203
+ $taxonomy = sanitize_key($taxonomy);
204
+
205
  $id = "$option_basename-" . $taxonomy;
206
  ?>
207
  <div style="text-align:left">
208
  <?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
209
+ <input name="<?php echo(esc_attr($id));?>" type="hidden" id="<?php echo(esc_attr($id));?>" value="1" />
210
+ <input name="<?php echo(esc_attr($option_basename) . '-options[]');?>" type="hidden" value="<?php echo(esc_attr($taxonomy))?>" />
211
 
212
  <?php else: ?>
213
+
214
+ <label for="<?php echo(esc_attr($id));?>" title="<?php echo(esc_attr($taxonomy));?>">
215
+ <input name="<?php echo(esc_attr($option_basename) . '-options[]');?>" type="hidden" value="<?php echo(esc_attr($taxonomy))?>" />
216
+ <input name="<?php echo(esc_attr($id));?>" type="checkbox" autocomplete="off" id="<?php echo(esc_attr($id));?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo(esc_html($type_obj->label));?>
217
 
218
  <?php
219
  echo ('</label></div>');
228
  </tr>
229
  </table>
230
 
231
+ <input type="submit" name="update_filtered_taxonomies" value="<?php esc_attr_e('Update', 'capsman-enhanced') ?>" class="button" />
232
  </dd>
233
  </dl>
234
 
235
  <dl>
236
+ <dt><?php esc_html_e('Detailed Taxonomy Capabilities', 'capsman-enhanced'); ?></dt>
237
  <dd style="text-align:center;">
238
  <?php
239
+ echo "<p class='cme-hint'>" . esc_html__( 'Enforce Edit, Delete and Assign capabilities separately from Management capability.', 'capsman-enhanced' ) . "</p>";
 
240
 
241
  echo "<table style='width:100%'><tr>";
242
 
257
  if ( in_array( $taxonomy, $unfiltered ) )
258
  continue;
259
 
260
+ $taxonomy = sanitize_key($taxonomy);
261
+
262
  $id = "$option_basename-" . $taxonomy;
263
  ?>
264
  <div style="text-align:left">
265
  <?php if ( ! empty( $hidden[$taxonomy] ) ) :?>
266
+ <input name="<?php echo(esc_attr($id));?>" type="hidden" id="<?php echo(esc_attr($id));?>" value="1" />
267
+ <input name="<?php echo(esc_attr($option_basename) . '-options[]');?>" type="hidden" value="<?php echo(esc_attr($taxonomy))?>" />
268
 
269
  <?php else: ?>
270
  <div class="agp-vspaced_input">
271
+ <label for="<?php echo(esc_attr($id));?>" title="<?php echo(esc_attr($taxonomy));?>">
272
+ <input name="<?php echo(esc_attr($option_basename) . '-options[]');?>" type="hidden" value="<?php echo(esc_attr($taxonomy))?>" />
273
+ <input name="<?php echo(esc_attr($id));?>" type="checkbox" autocomplete="off" id="<?php echo(esc_attr($id));?>" value="1" <?php checked('1', ! empty($enabled[$taxonomy]) );?> /> <?php echo(esc_html($type_obj->label));?>
274
 
275
  <?php
276
  echo ('</label></div>');
285
  </tr>
286
  </table>
287
 
288
+ <input type="submit" name="update_detailed_taxonomies" value="<?php esc_attr_e('Update', 'capsman-enhanced') ?>" class="button" />
289
  </dd>
290
  </dl>
291
  <?php
includes/publishpress-roles.php CHANGED
@@ -16,7 +16,7 @@ class CME_PublishPressRoles {
16
  link += ' | ';
17
  }
18
 
19
- link += '<a href="<?php echo admin_url('admin.php?page=pp-capabilities');?>' + '&role=' + role_name + '">' + 'Capabilities' + '</a> ';
20
 
21
  if (!is_administrator_role) {
22
  link += '| ';
16
  link += ' | ';
17
  }
18
 
19
+ link += '<a href="<?php echo esc_url_raw(admin_url('admin.php?page=pp-capabilities'));?>' + '&role=' + role_name + '">' + 'Capabilities' + '</a> ';
20
 
21
  if (!is_administrator_role) {
22
  link += '| ';
includes/roles/class/class-pp-roles-actions.php CHANGED
@@ -71,11 +71,11 @@ class Pp_Roles_Actions
71
  }
72
 
73
  if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
74
- return $_REQUEST['action'];
75
  }
76
 
77
  if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
78
- return $_REQUEST['action2'];
79
  }
80
 
81
  return false;
@@ -103,7 +103,6 @@ class Pp_Roles_Actions
103
  }
104
 
105
  if ($this->is_ajax()) {
106
- //$format = '<div class="notice notice-%s is-dismissible"><p>%s</p><button type="button" class="notice-dismiss"><span class="screen-reader-text">' . __('Dismiss this notice.', 'capsman-enhanced') . '</span></button></div>';
107
  $format = '<div class="notice notice-%s is-dismissible"><p>%s</p></div>';
108
  wp_send_json_error(sprintf($format, $type, $message));
109
  exit;
@@ -140,8 +139,7 @@ class Pp_Roles_Actions
140
  {
141
 
142
  if (!current_user_can($this->capability)) {
143
- $out = __('You do not have sufficient permissions to perform this action.', 'capsman-enhanced');
144
- $this->notify($out);
145
  }
146
  }
147
 
@@ -154,10 +152,9 @@ class Pp_Roles_Actions
154
  protected function check_nonce($action = '-1', $query_arg = '_wpnonce')
155
  {
156
 
157
- $checked = isset($_REQUEST[$query_arg]) && wp_verify_nonce($_REQUEST[$query_arg], $action);
158
  if (!$checked) {
159
- $out = __('Your link has expired, refresh the page and try again.', 'capsman-enhanced');
160
- $this->notify($out);
161
  }
162
  }
163
 
@@ -177,8 +174,7 @@ class Pp_Roles_Actions
177
  $this->check_nonce('add-role');
178
 
179
  if (empty($_REQUEST['name'])) {
180
- $out = __('Missing parameters, refresh the page and try again.', 'capsman-enhanced');
181
- $this->notify($out);
182
  }
183
 
184
  /**
@@ -186,13 +182,16 @@ class Pp_Roles_Actions
186
  */
187
  require_once(dirname(CME_FILE).'/includes/handler.php');
188
  $capsman_handler = new CapsmanHandler();
189
- $role = $capsman_handler->createNewName($_REQUEST['name']);
190
 
191
  /**
192
  * Check for invalid name entry
193
  */
194
  if (!empty($role['error']) && ('invalid_name' == $role['error'])) {
195
- $out = __(sprintf('Invalid role name entry: %s', "<strong>" . esc_attr($role['name']) . "</strong>"), 'capsman-enhanced');
 
 
 
196
  $this->notify($out);
197
  }
198
 
@@ -201,7 +200,11 @@ class Pp_Roles_Actions
201
  */
202
  if (!empty($role['error']) && ('role_exists' == $role['error'])) {
203
  //this role already exist
204
- $out = __(sprintf('The role "%s" already exists. Please choose a different name.', "<strong>" . esc_attr($role['name']) . "</strong>"), 'capsman-enhanced');
 
 
 
 
205
  $this->notify($out);
206
  }
207
 
@@ -211,8 +214,7 @@ class Pp_Roles_Actions
211
  $result = add_role($role['name'], $role['display'], []);
212
 
213
  if (!$result instanceof WP_Role) {
214
- $out = __('Something went wrong, the system wasn\'t able to create the role, refresh the page and try again.', 'capsman-enhanced');
215
- if ($this->notify($out)) {
216
  return;
217
  }
218
  }
@@ -242,7 +244,11 @@ class Pp_Roles_Actions
242
  /**
243
  * Notify user and redirect
244
  */
245
- $out = __(sprintf('The new role %s was created successfully.', '<strong>' . $role . '</strong>'), 'capsman-enhanced');
 
 
 
 
246
  $this->notify($out, 'success');
247
  }
248
  }
@@ -259,7 +265,7 @@ class Pp_Roles_Actions
259
  }
260
 
261
  if (empty($role)) {
262
- $role = (isset($_REQUEST['role'])) ? $_REQUEST['role'] : '';
263
  }
264
 
265
  /**
@@ -280,11 +286,11 @@ class Pp_Roles_Actions
280
  $roles = [];
281
  if ($role) {
282
  if (is_string($role)) {
283
- $input = sanitize_text_field($role);
284
  $roles[] = $input;
285
  } else if (is_array($role)) {
286
  foreach ($role as $key => $id) {
287
- $roles[] = sanitize_text_field($id);
288
  }
289
  }
290
  } else {
@@ -295,15 +301,18 @@ class Pp_Roles_Actions
295
  * If no roles provided return
296
  */
297
  if (empty($roles)) {
298
- $out = __('Missing parameters, refresh the page and try again.', 'capsman-enhanced');
299
- $this->notify($out);
300
  }
301
 
302
  $default = get_option('default_role');
303
 
304
  if ( $default == $role ) {
305
- //ak_admin_error(sprintf(__('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'), 'options-general.php'));
306
- $this->notify(__('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'), 'options-general.php');
 
 
 
 
307
  return;
308
  }
309
 
@@ -319,8 +328,7 @@ class Pp_Roles_Actions
319
  }
320
 
321
  if (empty($roles)) {
322
- $out = __('Deleting a system role is not allowed.', 'capsman-enhanced');
323
- $this->notify($out);
324
  }
325
  }
326
 
@@ -342,18 +350,18 @@ class Pp_Roles_Actions
342
 
343
  if ($deleted) {
344
  $default_name = (wp_roles()->is_role($default)) ? wp_roles()->role_names[$default] : $default;
345
- $users_message = ($user_count) ? sprintf(__('%1$d users moved to default role %2$s.', 'capsman-enhanced'), $user_count, $default_name) : '';
346
 
347
  $role_name = (wp_roles()->is_role($roles[0])) ? wp_roles()->role_names[$roles[0]] : $roles[0];
348
 
349
  $single = sprintf(
350
- __('The role %1$s was successfully deleted. %2$s', 'capsman-enhanced'),
351
- '<strong>' . $roles[0] . '</strong>',
352
  $users_message
353
  );
354
 
355
  $plural = sprintf(
356
- __('The selected %1$s roles were successfully deleted. %2$s', 'capsman-enhanced'),
357
  '<strong>' . $deleted . '</strong>',
358
  $users_message
359
  );
@@ -366,7 +374,7 @@ class Pp_Roles_Actions
366
  $this->notify($out, 'success');
367
  }
368
  } else {
369
- $this->notify(_('The role could not be deleted.', 'capsman-enhanced'));
370
  }
371
  }
372
 
@@ -380,7 +388,7 @@ class Pp_Roles_Actions
380
  }
381
 
382
  if (empty($role)) {
383
- $role = (isset($_REQUEST['role'])) ? $_REQUEST['role'] : '';
384
  }
385
 
386
  /**
@@ -394,11 +402,11 @@ class Pp_Roles_Actions
394
  $roles = [];
395
  if ($role) {
396
  if (is_string($role)) {
397
- $input = sanitize_text_field($role);
398
  $roles[] = $input;
399
  } else if (is_array($role)) {
400
  foreach ($role as $key => $id) {
401
- $roles[] = sanitize_text_field($id);
402
  }
403
  }
404
  } else {
@@ -441,7 +449,7 @@ class Pp_Roles_Actions
441
  }
442
 
443
  if (empty($role)) {
444
- $role = (isset($_REQUEST['role'])) ? $_REQUEST['role'] : '';
445
  }
446
 
447
  /**
@@ -455,11 +463,11 @@ class Pp_Roles_Actions
455
  $roles = [];
456
  if ($role) {
457
  if (is_string($role)) {
458
- $input = sanitize_text_field($role);
459
  $roles[] = $input;
460
  } else if (is_array($role)) {
461
  foreach ($role as $key => $id) {
462
- $roles[] = sanitize_text_field($id);
463
  }
464
  }
465
  } else {
@@ -470,8 +478,7 @@ class Pp_Roles_Actions
470
  * If no roles provided return
471
  */
472
  if (empty($roles)) {
473
- $out = __('Missing parameters, refresh the page and try again.', 'capsman-enhanced');
474
- $this->notify($out);
475
  }
476
 
477
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
71
  }
72
 
73
  if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
74
+ return sanitize_key($_REQUEST['action']);
75
  }
76
 
77
  if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
78
+ return sanitize_key($_REQUEST['action2']);
79
  }
80
 
81
  return false;
103
  }
104
 
105
  if ($this->is_ajax()) {
 
106
  $format = '<div class="notice notice-%s is-dismissible"><p>%s</p></div>';
107
  wp_send_json_error(sprintf($format, $type, $message));
108
  exit;
139
  {
140
 
141
  if (!current_user_can($this->capability)) {
142
+ $this->notify(__('You do not have sufficient permissions to perform this action.', 'capsman-enhanced'));
 
143
  }
144
  }
145
 
152
  protected function check_nonce($action = '-1', $query_arg = '_wpnonce')
153
  {
154
 
155
+ $checked = isset($_REQUEST[$query_arg]) && wp_verify_nonce(sanitize_key($_REQUEST[$query_arg]), $action);
156
  if (!$checked) {
157
+ $this->notify(__('Your link has expired, refresh the page and try again.', 'capsman-enhanced'));
 
158
  }
159
  }
160
 
174
  $this->check_nonce('add-role');
175
 
176
  if (empty($_REQUEST['name'])) {
177
+ $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
 
178
  }
179
 
180
  /**
182
  */
183
  require_once(dirname(CME_FILE).'/includes/handler.php');
184
  $capsman_handler = new CapsmanHandler();
185
+ $role = $capsman_handler->createNewName(sanitize_text_field($_REQUEST['name']));
186
 
187
  /**
188
  * Check for invalid name entry
189
  */
190
  if (!empty($role['error']) && ('invalid_name' == $role['error'])) {
191
+ $out = sprintf(
192
+ __('Invalid role name entry: %s', 'capsman-enhanced'),
193
+ "<strong>" . esc_html($role['name']) . "</strong>"
194
+ );
195
  $this->notify($out);
196
  }
197
 
200
  */
201
  if (!empty($role['error']) && ('role_exists' == $role['error'])) {
202
  //this role already exist
203
+ $out = sprintf(
204
+ __('The role "%s" already exists. Please choose a different name.', 'capsman-enhanced'),
205
+ "<strong>" . esc_html($role['name']) . "</strong>"
206
+ );
207
+
208
  $this->notify($out);
209
  }
210
 
214
  $result = add_role($role['name'], $role['display'], []);
215
 
216
  if (!$result instanceof WP_Role) {
217
+ if ($this->notify(__('Something went wrong, the system wasn\'t able to create the role, refresh the page and try again.', 'capsman-enhanced'))) {
 
218
  return;
219
  }
220
  }
244
  /**
245
  * Notify user and redirect
246
  */
247
+ $out = sprintf(
248
+ __('The new role %s was created successfully.', 'capsman-enhanced'),
249
+ '<strong>' . $role . '</strong>'
250
+ );
251
+
252
  $this->notify($out, 'success');
253
  }
254
  }
265
  }
266
 
267
  if (empty($role)) {
268
+ $role = (isset($_REQUEST['role'])) ? array_map('sanitize_key', (array) ($_REQUEST['role'])) : '';
269
  }
270
 
271
  /**
286
  $roles = [];
287
  if ($role) {
288
  if (is_string($role)) {
289
+ $input = sanitize_key($role);
290
  $roles[] = $input;
291
  } else if (is_array($role)) {
292
  foreach ($role as $key => $id) {
293
+ $roles[] = sanitize_key($id);
294
  }
295
  }
296
  } else {
301
  * If no roles provided return
302
  */
303
  if (empty($roles)) {
304
+ $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
 
305
  }
306
 
307
  $default = get_option('default_role');
308
 
309
  if ( $default == $role ) {
310
+ $this->notify(
311
+ sprintf(
312
+ __('Cannot delete default role. You <a href="%s">have to change it first</a>.', 'capsman-enhanced'),
313
+ 'options-general.php'
314
+ )
315
+ );
316
  return;
317
  }
318
 
328
  }
329
 
330
  if (empty($roles)) {
331
+ $this->notify(__('Deleting a system role is not allowed.', 'capsman-enhanced'));
 
332
  }
333
  }
334
 
350
 
351
  if ($deleted) {
352
  $default_name = (wp_roles()->is_role($default)) ? wp_roles()->role_names[$default] : $default;
353
+ $users_message = ($user_count) ? sprintf(esc_html__('%1$d users moved to default role %2$s.', 'capsman-enhanced'), (int) $user_count, esc_html($default_name)) : '';
354
 
355
  $role_name = (wp_roles()->is_role($roles[0])) ? wp_roles()->role_names[$roles[0]] : $roles[0];
356
 
357
  $single = sprintf(
358
+ esc_html__('The role %1$s was successfully deleted. %2$s', 'capsman-enhanced'),
359
+ '<strong>' . esc_html($roles[0]) . '</strong>',
360
  $users_message
361
  );
362
 
363
  $plural = sprintf(
364
+ esc_html__('The selected %1$s roles were successfully deleted. %2$s', 'capsman-enhanced'),
365
  '<strong>' . $deleted . '</strong>',
366
  $users_message
367
  );
374
  $this->notify($out, 'success');
375
  }
376
  } else {
377
+ $this->notify(__('The role could not be deleted.', 'capsman-enhanced'));
378
  }
379
  }
380
 
388
  }
389
 
390
  if (empty($role)) {
391
+ $role = (isset($_REQUEST['role'])) ? sanitize_key($_REQUEST['role']) : '';
392
  }
393
 
394
  /**
402
  $roles = [];
403
  if ($role) {
404
  if (is_string($role)) {
405
+ $input = sanitize_key($role);
406
  $roles[] = $input;
407
  } else if (is_array($role)) {
408
  foreach ($role as $key => $id) {
409
+ $roles[] = sanitize_key($id);
410
  }
411
  }
412
  } else {
449
  }
450
 
451
  if (empty($role)) {
452
+ $role = (isset($_REQUEST['role'])) ? sanitize_key($_REQUEST['role']) : '';
453
  }
454
 
455
  /**
463
  $roles = [];
464
  if ($role) {
465
  if (is_string($role)) {
466
+ $input = sanitize_key($role);
467
  $roles[] = $input;
468
  } else if (is_array($role)) {
469
  foreach ($role as $key => $id) {
470
+ $roles[] = sanitize_key($id);
471
  }
472
  }
473
  } else {
478
  * If no roles provided return
479
  */
480
  if (empty($roles)) {
481
+ $this->notify(__('Missing parameters, refresh the page and try again.', 'capsman-enhanced'));
 
482
  }
483
 
484
  $pp_only = (array) pp_capabilities_get_permissions_option( 'supplemental_role_defs' );
includes/roles/class/class-pp-roles-admin.php CHANGED
@@ -59,11 +59,11 @@ class Pp_Roles_Admin
59
  }
60
 
61
  if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
62
- return $_REQUEST['action'];
63
  }
64
 
65
  if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
66
- return $_REQUEST['action2'];
67
  }
68
 
69
  return false;
@@ -94,7 +94,7 @@ class Pp_Roles_Admin
94
  */
95
  public function admin_notices()
96
  {
97
- echo pp_capabilities_roles()->notify->display();
98
  }
99
 
100
  /**
59
  }
60
 
61
  if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
62
+ return sanitize_key($_REQUEST['action']);
63
  }
64
 
65
  if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
66
+ return sanitize_key($_REQUEST['action2']);
67
  }
68
 
69
  return false;
94
  */
95
  public function admin_notices()
96
  {
97
+ pp_capabilities_roles()->notify->display();
98
  }
99
 
100
  /**
includes/roles/class/class-pp-roles-list-table.php CHANGED
@@ -27,9 +27,6 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
27
  {
28
  global $status, $page;
29
 
30
- //$screen = get_current_screen();
31
- //add_filter("manage_{$screen->id}_columns", [$this, 'get_columns']);
32
-
33
  //Set parent defaults
34
  parent::__construct([
35
  'singular' => 'role', //singular name of the listed records
@@ -61,9 +58,8 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
61
  public function single_row($item)
62
  {
63
  $class = ['roles-tr'];
64
- $id = 'role-' . md5($item['role']);
65
 
66
- echo sprintf('<tr id="%s" class="%s">', $id, implode(' ', $class));
67
  $this->single_row_columns($item);
68
  echo '</tr>';
69
  }
@@ -77,9 +73,9 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
77
  {
78
  $columns = [
79
  'cb' => '<input type="checkbox"/>', //Render a checkbox instead of text
80
- 'name' => __('Role Name', 'capsman-enhanced'),
81
- 'role' => __('Role', 'capsman-enhanced'),
82
- 'count' => __('Users', 'capsman-enhanced'),
83
  ];
84
 
85
  return $columns;
@@ -113,6 +109,8 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
113
  */
114
  protected function handle_row_actions($item, $column_name, $primary)
115
  {
 
 
116
  //Build row actions
117
  if (pp_capabilities_is_editable_role($item['role'])) {
118
  $actions = [
@@ -122,17 +120,15 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
122
  ['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
123
  admin_url('admin.php')
124
  ),
125
- __('Capabilities', 'capsman-enhanced')
126
  ),
127
  ];
128
  } else {
129
  $actions = [
130
- 'edit' => '<span class="pp-caps-action-note">' . __('(non-editable role)', 'capsman-enhanced') . '</span>',
131
  ];
132
 
133
  if (defined("PRESSPERMIT_ACTIVE")) {
134
- static $pp_only;
135
-
136
  if (!isset($pp_only)) {
137
  $pp_only = (array) pp_capabilities_get_permissions_option('supplemental_role_defs');
138
  }
@@ -147,7 +143,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
147
  '_wpnonce' => wp_create_nonce('bulk-roles')
148
  ],
149
  admin_url('admin.php')),
150
- __('Unhide', 'capsman-enhanced')
151
  );
152
  }
153
  }
@@ -165,13 +161,11 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
165
  '_wpnonce' => wp_create_nonce('bulk-roles')
166
  ],
167
  admin_url('admin.php')),
168
- __('Delete', 'capsman-enhanced')
169
  ),
170
  ]);
171
 
172
  if (defined("PRESSPERMIT_ACTIVE")) {
173
- static $pp_only;
174
-
175
  if (!isset($pp_only)) {
176
  $pp_only = (array) pp_capabilities_get_permissions_option('supplemental_role_defs');
177
  }
@@ -186,7 +180,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
186
  '_wpnonce' => wp_create_nonce('bulk-roles')
187
  ],
188
  admin_url('admin.php')),
189
- __('Hide', 'capsman-enhanced')
190
  );
191
  }
192
  }
@@ -304,7 +298,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
304
  protected function get_bulk_actions()
305
  {
306
  $actions = [
307
- 'pp-roles-delete-role' => __('Delete', 'capsman-enhanced')
308
  ];
309
 
310
  return $actions;
@@ -318,7 +312,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
318
 
319
  $query_arg = '_wpnonce';
320
  $action = 'bulk-' . $this->_args['plural'];
321
- $checked = $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
322
 
323
  if (!$checked) {
324
  return;
@@ -372,17 +366,17 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
372
  $input_id = $input_id . '-search-input';
373
 
374
  if (!empty($_REQUEST['orderby'])) {
375
- echo '<input type="hidden" name="orderby" value="' . esc_attr($_REQUEST['orderby']) . '" />';
376
  }
377
  if (!empty($_REQUEST['order'])) {
378
- echo '<input type="hidden" name="order" value="' . esc_attr($_REQUEST['order']) . '" />';
379
  }
380
  if (!empty($_REQUEST['page'])) {
381
- echo '<input type="hidden" name="page" value="' . esc_attr($_REQUEST['page']) . '" />';
382
  }
383
  ?>
384
  <p class="search-box">
385
- <label class="screen-reader-text" for="<?php echo esc_attr($input_id); ?>"><?php echo $text; ?>:</label>
386
  <input type="search" id="<?php echo esc_attr($input_id); ?>" name="s"
387
  value="<?php _admin_search_query(); ?>"/>
388
  <?php submit_button($text, '', '', false, ['id' => 'search-submit']); ?>
@@ -413,7 +407,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
413
  /**
414
  * Handle search
415
  */
416
- if ((!empty($_REQUEST['s'])) && $search = $_REQUEST['s']) {
417
  $data_filtered = [];
418
  foreach ($data as $item) {
419
  if ($this->str_contains($item['role'], $search, false) || $this->str_contains($item['name'], $search, false)) {
@@ -429,7 +423,7 @@ class PP_Capabilities_Roles_List_Table extends WP_List_Table
429
  function usort_reorder($a, $b)
430
  {
431
  $orderby = (!empty($_REQUEST['orderby'])) ? sanitize_text_field($_REQUEST['orderby']) : 'role'; //If no sort, default to role
432
- $order = (!empty($_REQUEST['order'])) ? sanitize_text_field($_REQUEST['order']) : 'asc'; //If no order, default to asc
433
  $result = strnatcasecmp($a[$orderby], $b[$orderby]); //Determine sort order, case insensitive, natural order
434
 
435
  return ($order === 'asc') ? $result : -$result; //Send final sort direction to usort
27
  {
28
  global $status, $page;
29
 
 
 
 
30
  //Set parent defaults
31
  parent::__construct([
32
  'singular' => 'role', //singular name of the listed records
58
  public function single_row($item)
59
  {
60
  $class = ['roles-tr'];
 
61
 
62
+ echo sprintf('<tr id="%s" class="%s">', 'role-' . esc_attr(md5($item['role'])), esc_attr(implode(' ', $class)));
63
  $this->single_row_columns($item);
64
  echo '</tr>';
65
  }
73
  {
74
  $columns = [
75
  'cb' => '<input type="checkbox"/>', //Render a checkbox instead of text
76
+ 'name' => esc_html__('Role Name', 'capsman-enhanced'),
77
+ 'role' => esc_html__('Role', 'capsman-enhanced'),
78
+ 'count' => esc_html__('Users', 'capsman-enhanced'),
79
  ];
80
 
81
  return $columns;
109
  */
110
  protected function handle_row_actions($item, $column_name, $primary)
111
  {
112
+ static $pp_only;
113
+
114
  //Build row actions
115
  if (pp_capabilities_is_editable_role($item['role'])) {
116
  $actions = [
120
  ['page' => 'pp-capabilities', 'role' => esc_attr($item['role'])],
121
  admin_url('admin.php')
122
  ),
123
+ esc_html__('Capabilities', 'capsman-enhanced')
124
  ),
125
  ];
126
  } else {
127
  $actions = [
128
+ 'edit' => '<span class="pp-caps-action-note">' . esc_html__('(non-editable role)', 'capsman-enhanced') . '</span>',
129
  ];
130
 
131
  if (defined("PRESSPERMIT_ACTIVE")) {
 
 
132
  if (!isset($pp_only)) {
133
  $pp_only = (array) pp_capabilities_get_permissions_option('supplemental_role_defs');
134
  }
143
  '_wpnonce' => wp_create_nonce('bulk-roles')
144
  ],
145
  admin_url('admin.php')),
146
+ esc_html__('Unhide', 'capsman-enhanced')
147
  );
148
  }
149
  }
161
  '_wpnonce' => wp_create_nonce('bulk-roles')
162
  ],
163
  admin_url('admin.php')),
164
+ esc_html__('Delete', 'capsman-enhanced')
165
  ),
166
  ]);
167
 
168
  if (defined("PRESSPERMIT_ACTIVE")) {
 
 
169
  if (!isset($pp_only)) {
170
  $pp_only = (array) pp_capabilities_get_permissions_option('supplemental_role_defs');
171
  }
180
  '_wpnonce' => wp_create_nonce('bulk-roles')
181
  ],
182
  admin_url('admin.php')),
183
+ esc_html__('Hide', 'capsman-enhanced')
184
  );
185
  }
186
  }
298
  protected function get_bulk_actions()
299
  {
300
  $actions = [
301
+ 'pp-roles-delete-role' => esc_html__('Delete', 'capsman-enhanced')
302
  ];
303
 
304
  return $actions;
312
 
313
  $query_arg = '_wpnonce';
314
  $action = 'bulk-' . $this->_args['plural'];
315
+ $checked = $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce(sanitize_key($_REQUEST[$query_arg]), $action) : false;
316
 
317
  if (!$checked) {
318
  return;
366
  $input_id = $input_id . '-search-input';
367
 
368
  if (!empty($_REQUEST['orderby'])) {
369
+ echo '<input type="hidden" name="orderby" value="' . esc_attr(sanitize_text_field($_REQUEST['orderby'])) . '" />';
370
  }
371
  if (!empty($_REQUEST['order'])) {
372
+ echo '<input type="hidden" name="order" value="' . esc_attr(sanitize_key($_REQUEST['order'])) . '" />';
373
  }
374
  if (!empty($_REQUEST['page'])) {
375
+ echo '<input type="hidden" name="page" value="' . (int) $_REQUEST['page'] . '" />';
376
  }
377
  ?>
378
  <p class="search-box">
379
+ <label class="screen-reader-text" for="<?php echo esc_attr($input_id); ?>"><?php echo esc_html($text); ?>:</label>
380
  <input type="search" id="<?php echo esc_attr($input_id); ?>" name="s"
381
  value="<?php _admin_search_query(); ?>"/>
382
  <?php submit_button($text, '', '', false, ['id' => 'search-submit']); ?>
407
  /**
408
  * Handle search
409
  */
410
+ if ((!empty($_REQUEST['s'])) && $search = sanitize_text_field($_REQUEST['s'])) {
411
  $data_filtered = [];
412
  foreach ($data as $item) {
413
  if ($this->str_contains($item['role'], $search, false) || $this->str_contains($item['name'], $search, false)) {
423
  function usort_reorder($a, $b)
424
  {
425
  $orderby = (!empty($_REQUEST['orderby'])) ? sanitize_text_field($_REQUEST['orderby']) : 'role'; //If no sort, default to role
426
+ $order = (!empty($_REQUEST['order'])) ? sanitize_key($_REQUEST['order']) : 'asc'; //If no order, default to asc
427
  $result = strnatcasecmp($a[$orderby], $b[$orderby]); //Determine sort order, case insensitive, natural order
428
 
429
  return ($order === 'asc') ? $result : -$result; //Send final sort direction to usort
includes/roles/class/class-pp-roles-manager.php CHANGED
@@ -19,7 +19,7 @@ class Pp_Roles_Manager
19
  */
20
  public function get_roles_for_list_table()
21
  {
22
- $roles = wp_roles()->roles; // get_editable_roles();
23
  $count = count_users();
24
  $res = [];
25
  foreach ($roles as $role => $detail) {
@@ -147,11 +147,14 @@ class Pp_Roles_Manager
147
 
148
  $like = '%' . $wpdb->esc_like( $role ) . '%';
149
 
150
- $query = $wpdb->prepare( "SELECT ID FROM {$wpdb->usermeta} INNER JOIN {$wpdb->users} "
151
- . "ON {$wpdb->usermeta}.user_id = {$wpdb->users}.ID "
152
- . "WHERE meta_key='{$wpdb->prefix}capabilities' AND meta_value LIKE %s", $like );
153
-
154
- $users = $wpdb->get_results($query);
 
 
 
155
 
156
  // Array of all roles except the one being deleted, for use below
157
  $role_names = array_diff_key( $wp_roles->role_names, [$role => true] );
19
  */
20
  public function get_roles_for_list_table()
21
  {
22
+ $roles = wp_roles()->roles;
23
  $count = count_users();
24
  $res = [];
25
  foreach ($roles as $role => $detail) {
147
 
148
  $like = '%' . $wpdb->esc_like( $role ) . '%';
149
 
150
+ $users = $wpdb->get_results($wpdb->prepare(
151
+ "SELECT ID FROM $wpdb->usermeta INNER JOIN $wpdb->users "
152
+ . "ON $wpdb->usermeta.user_id = $wpdb->users.ID "
153
+ . "WHERE meta_key='{$wpdb->prefix}capabilities' AND meta_value LIKE %s",
154
+
155
+ $like
156
+ )
157
+ );
158
 
159
  // Array of all roles except the one being deleted, for use below
160
  $role_names = array_diff_key( $wp_roles->role_names, [$role => true] );
includes/roles/roles-functions.php CHANGED
@@ -77,6 +77,3 @@ function pp_roles_user_has_role($user_id, $roles)
77
 
78
  return false;
79
  }
80
-
81
-
82
- ?>
77
 
78
  return false;
79
  }
 
 
 
includes/roles/roles.php CHANGED
@@ -1,43 +1,43 @@
1
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-roles-wrapper">
2
 
3
  <div class="wrap">
4
- <h1 class="wp-heading-inline"><?php _e('Roles', 'capsman-enhanced') ?> </h1>
5
  <?php
6
- if (isset($_REQUEST['s']) && $search = esc_attr(wp_unslash($_REQUEST['s']))) {
7
  /* translators: %s: search keywords */
8
- printf(' <span class="subtitle">' . __('Search results for &#8220;%s&#8221;', 'capsman-enhanced') . '</span>', $search);
9
  }
10
 
11
  //the roles table instance
12
  $table = pp_capabilities_roles()->admin->get_roles_list_table();
13
  $table->prepare_items();
14
- echo pp_capabilities_roles()->notify->display();
15
  ?>
16
  <hr class="wp-header-end">
17
  <div id="ajax-response"></div>
18
  <form class="search-form wp-clearfix" method="get">
19
- <?php $table->search_box(__('Search Roles', 'capsman-enhanced'), 'roles'); ?>
20
  </form>
21
  <div id="col-container" class="wp-clearfix">
22
  <div id="col-left">
23
  <div class="col-wrap">
24
  <div class="form-wrap">
25
- <h2><?php _e('Add New Role', 'capsman-enhanced') ?> </h2>
26
  <form id="addrole" method="post" action="" class="validate">
27
  <input type="hidden" name="action" value="pp-roles-add-role">
28
- <input type="hidden" name="screen" value="<?php echo 'capabilities_page_pp-capabilities-roles'; /*get_current_screen()->id*/ ?>">
29
  <?php
30
  wp_nonce_field('add-role');
31
  ?>
32
  <div class="form-field form-required">
33
- <label for="name"><?php _e('Name', 'capsman-enhanced') ?> </label>
34
  <input name="name" id="name" type="text" value="" size="40">
35
- <p><?php _e('The name is how it appears on your site.', 'capsman-enhanced'); ?></p>
36
  </div>
37
 
38
  <p class="submit">
39
  <input type="submit" name="submit" id="submit" class="button button-primary"
40
- value="<?php _e('Add'); ?> ">
41
  </p>
42
  </form>
43
  </div>
@@ -45,11 +45,11 @@
45
  </div>
46
  <div id="col-right">
47
  <div class="col-wrap">
48
- <form action="<?php echo add_query_arg('', '') ?>" method="post">
49
  <?php $table->display(); //Display the table ?>
50
  </form>
51
  <div class="form-wrap edit-term-notes">
52
- <p><?php __('Description here.', 'capsman-enhanced') ?></p>
53
  </div>
54
  </div>
55
  </div>
1
  <div class="wrap publishpress-caps-manage pressshack-admin-wrapper pp-capability-roles-wrapper">
2
 
3
  <div class="wrap">
4
+ <h1 class="wp-heading-inline"><?php esc_html_e('Roles', 'capsman-enhanced') ?> </h1>
5
  <?php
6
+ if (isset($_REQUEST['s']) && $search_str = esc_attr(wp_unslash(sanitize_text_field($_REQUEST['s'])))) {
7
  /* translators: %s: search keywords */
8
+ printf(' <span class="subtitle">' . esc_html__('Search results for &#8220;%s&#8221;', 'capsman-enhanced') . '</span>', esc_html($search_str));
9
  }
10
 
11
  //the roles table instance
12
  $table = pp_capabilities_roles()->admin->get_roles_list_table();
13
  $table->prepare_items();
14
+ pp_capabilities_roles()->notify->display();
15
  ?>
16
  <hr class="wp-header-end">
17
  <div id="ajax-response"></div>
18
  <form class="search-form wp-clearfix" method="get">
19
+ <?php $table->search_box(esc_html__('Search Roles', 'capsman-enhanced'), 'roles'); ?>
20
  </form>
21
  <div id="col-container" class="wp-clearfix">
22
  <div id="col-left">
23
  <div class="col-wrap">
24
  <div class="form-wrap">
25
+ <h2><?php esc_html_e('Add New Role', 'capsman-enhanced') ?> </h2>
26
  <form id="addrole" method="post" action="" class="validate">
27
  <input type="hidden" name="action" value="pp-roles-add-role">
28
+ <input type="hidden" name="screen" value="<?php echo 'capabilities_page_pp-capabilities-roles';?>">
29
  <?php
30
  wp_nonce_field('add-role');
31
  ?>
32
  <div class="form-field form-required">
33
+ <label for="name"><?php esc_html_e('Name', 'capsman-enhanced') ?> </label>
34
  <input name="name" id="name" type="text" value="" size="40">
35
+ <p><?php esc_html_e('The name is how it appears on your site.', 'capsman-enhanced'); ?></p>
36
  </div>
37
 
38
  <p class="submit">
39
  <input type="submit" name="submit" id="submit" class="button button-primary"
40
+ value="<?php esc_attr_e('Add'); ?> ">
41
  </p>
42
  </form>
43
  </div>
45
  </div>
46
  <div id="col-right">
47
  <div class="col-wrap">
48
+ <form action="" method="post">
49
  <?php $table->display(); //Display the table ?>
50
  </form>
51
  <div class="form-wrap edit-term-notes">
52
+ <p><?php esc_html__('Description here.', 'capsman-enhanced') ?></p>
53
  </div>
54
  </div>
55
  </div>
includes/settings-handler.php CHANGED
@@ -7,18 +7,15 @@
7
  */
8
 
9
  add_action('init', function() {
10
- if (wp_verify_nonce($_REQUEST['_wpnonce'], 'pp-capabilities-settings') && current_user_can('manage_capabilities')) {
11
  if (!empty($_POST['all_options'])) {
12
- foreach(explode(',', $_POST['all_options']) as $option_name) {
13
  foreach (['cme_', 'capsman', 'pp_capabilities'] as $prefix) {
14
  if (0 === strpos($option_name, $prefix)) {
15
- $value = isset($_POST[$option_name]) ? $_POST[$option_name] : '';
16
-
17
- if (!is_array($value)) {
18
- $value = trim($value);
19
- }
20
-
21
- update_option($option_name, stripslashes_deep($value));
22
  }
23
  }
24
  }
7
  */
8
 
9
  add_action('init', function() {
10
+ if (check_admin_referer('pp-capabilities-settings') && current_user_can('manage_capabilities')) {
11
  if (!empty($_POST['all_options'])) {
12
+ foreach(array_map('sanitize_key', explode(',', sanitize_text_field($_POST['all_options']))) as $option_name) {
13
  foreach (['cme_', 'capsman', 'pp_capabilities'] as $prefix) {
14
  if (0 === strpos($option_name, $prefix)) {
15
+
16
+ // Free plugin doesn't currently have any settings, so disable this code for now to avoid sanitization concerns.
17
+
18
+ // Leave upstream conditionals in place to ensure access is properly regulated in any future implementation.
 
 
 
19
  }
20
  }
21
  }
includes/settings.php CHANGED
@@ -11,7 +11,7 @@ $all_options = [];
11
  ?>
12
 
13
  <div class="wrap publishpress-caps-manage publishpress-caps-settings pressshack-admin-wrapper">
14
- <h1><?php printf(__('Capabilities Settings', 'capsman-enhanced'), '<a href="admin.php?page=pp-capabilities">', '</a>'); ?></h1>
15
 
16
  <form class="basic-settings" method="post" action="">
17
  <?php wp_nonce_field('pp-capabilities-settings'); ?>
@@ -21,39 +21,39 @@ $all_options = [];
21
  <?php do_action('pp-capabilities-settings-ui');?>
22
 
23
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION')) :?>
24
- <h3><?php _e('Related Permissions Plugins', 'capsman-enhanced');?></h3>
25
  <ul>
26
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress&TB_iframe=true&width=640&height=678";
27
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
28
  ?>
29
- <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress', 'capsman-enhanced');?></a></li>
30
 
31
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress-authors&TB_iframe=true&width=640&height=678";
32
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
33
  ?>
34
- <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress Authors', 'capsman-enhanced');?></a></li>
35
  </li>
36
 
37
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=press-permit-core&TB_iframe=true&width=640&height=678";
38
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
39
  ?>
40
- <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress Permissions', 'capsman-enhanced');?></a></li>
41
  </li>
42
 
43
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=revisionary&TB_iframe=true&width=640&height=678";
44
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
45
  ?>
46
- <li><a class="thickbox" href="<?php echo $url;?>"><?php _e('PublishPress Revisions', 'capsman-enhanced');?></a></li>
47
 
48
- <li class="publishpress-contact"><a href="https://publishpress.com/contact" target="_blank"><?php _e('Help / Contact Form', 'capsman-enhanced');?></a></li>
49
  </ul>
50
  <?php endif;?>
51
 
52
  <?php
53
- echo "<input type='hidden' name='all_options' value='" . implode(',', $all_options) . "' />";
54
  ?>
55
 
56
- <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes', 'capsman-enhanced');?>">
57
  </form>
58
 
59
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
11
  ?>
12
 
13
  <div class="wrap publishpress-caps-manage publishpress-caps-settings pressshack-admin-wrapper">
14
+ <h1><?php printf(esc_html__('Capabilities Settings', 'capsman-enhanced'), '<a href="admin.php?page=pp-capabilities">', '</a>'); ?></h1>
15
 
16
  <form class="basic-settings" method="post" action="">
17
  <?php wp_nonce_field('pp-capabilities-settings'); ?>
21
  <?php do_action('pp-capabilities-settings-ui');?>
22
 
23
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION')) :?>
24
+ <h3><?php esc_html_e('Related Permissions Plugins', 'capsman-enhanced');?></h3>
25
  <ul>
26
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress&TB_iframe=true&width=640&height=678";
27
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
28
  ?>
29
+ <li><a class="thickbox" href="<?php echo (esc_url_raw($url));?>"><?php esc_html_e('PublishPress', 'capsman-enhanced');?></a></li>
30
 
31
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=publishpress-authors&TB_iframe=true&width=640&height=678";
32
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
33
  ?>
34
+ <li><a class="thickbox" href="<?php echo (esc_url_raw($url));?>"><?php esc_html_e('PublishPress Authors', 'capsman-enhanced');?></a></li>
35
  </li>
36
 
37
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=press-permit-core&TB_iframe=true&width=640&height=678";
38
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
39
  ?>
40
+ <li><a class="thickbox" href="<?php echo (esc_url_raw($url));?>"><?php esc_html_e('PublishPress Permissions', 'capsman-enhanced');?></a></li>
41
  </li>
42
 
43
  <?php $_url = "plugin-install.php?tab=plugin-information&plugin=revisionary&TB_iframe=true&width=640&height=678";
44
  $url = ( is_multisite() ) ? network_admin_url($_url) : admin_url($_url);
45
  ?>
46
+ <li><a class="thickbox" href="<?php echo (esc_url_raw($url));?>"><?php esc_html_e('PublishPress Revisions', 'capsman-enhanced');?></a></li>
47
 
48
+ <li class="publishpress-contact"><a href="https://publishpress.com/contact" target="_blank"><?php esc_html_e('Help / Contact Form', 'capsman-enhanced');?></a></li>
49
  </ul>
50
  <?php endif;?>
51
 
52
  <?php
53
+ echo "<input type='hidden' name='all_options' value='" . implode(',', array_map('esc_attr', $all_options)) . "' />";
54
  ?>
55
 
56
+ <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php esc_attr_e('Save Changes', 'capsman-enhanced');?>">
57
  </form>
58
 
59
  <?php if (!defined('PUBLISHPRESS_CAPS_PRO_VERSION') || get_option('cme_display_branding')) {
languages/capsman-enhanced-es_ES.mo CHANGED
Binary file
languages/capsman-enhanced-es_ES.po CHANGED
@@ -1,1172 +1,1695 @@
 
 
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: PublishPress Capabilities\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-02-03 15:51-0500\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
8
- "Language-Team: PublishPress <help@publishpress.com>\n"
9
- "Language: es_ES\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
- "X-Poedit-KeywordsList: __;_e;_c;_x;__ngettext\n"
16
- "X-Poedit-Basepath: ..\n"
17
- "X-Generator: Poedit 2.4.2\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPath-1: includes\n"
20
- "X-Poedit-SearchPath-2: includes-core\n"
21
-
22
- #: capsman-enhanced.php:40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  msgid ""
24
- "<strong>Error:</strong> PublishPress Capabilities cannot function because "
25
- "another copy of Capability Manager is active."
26
  msgstr ""
 
 
27
 
28
- #: capsman-enhanced.php:71
29
- msgid "<strong>This plugin can be deleted.</strong>"
30
- msgstr ""
31
 
32
- #: capsman-enhanced.php:102
33
- msgid "Warning:"
34
- msgstr "Atención:"
35
 
36
- #: capsman-enhanced.php:103
37
- #, php-format
38
- msgid "The active plugin %s is not compatible with your PHP version."
39
- msgstr "La extensión activa %s no es compatible con tu versión de PHP."
40
 
41
- #: capsman-enhanced.php:105
42
- #, php-format
43
- msgid "%s is required for this plugin."
44
- msgstr "Se require %s para utilizar esta extensión."
45
 
46
- #: framework/lib/formating.php:40
47
- msgid "Settings saved."
48
- msgstr "Opciones guardadas."
49
 
50
- #: includes-core/CoreAdmin.php:55 includes/functions-admin.php:37
51
- msgid "Admin Menus"
52
- msgstr ""
53
 
54
- #: includes-core/CoreAdmin.php:56 includes/functions-admin.php:38
55
- msgid "Nav Menus"
56
- msgstr ""
57
 
58
- #: includes-core/admin-menus-promo.php:29
59
- msgid "Admin Menu Restrictions"
60
- msgstr ""
61
 
62
- #: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
63
- #: includes/admin.php:99 includes/admin.php:1079 includes/settings.php:54
64
- msgid "Save Changes"
65
- msgstr "Guardar cambios"
66
 
67
- #: includes-core/admin-menus-promo.php:58
68
- msgid ""
69
- "You can restrict access to admin menu screens. This feature is available in "
70
- "PublishPress Capabilities Pro"
71
- msgstr ""
72
 
73
- #: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
74
- #: includes/functions-admin.php:45 includes/functions-admin.php:46
75
- #: includes/manager.php:334 includes/manager.php:335
76
- msgid "Upgrade to Pro"
77
- msgstr ""
78
 
79
- #: includes-core/nav-menus-promo.php:29
80
- msgid "Navigation Menu Restrictions"
81
- msgstr ""
82
 
83
- #: includes-core/nav-menus-promo.php:63
84
- msgid ""
85
- "You can restrict access to navigation menus. This feature is available in "
86
- "PublishPress Capabilities Pro"
87
- msgstr ""
88
 
89
- #: includes/admin.php:38
90
- #, php-format
91
- msgid ""
92
- "Warning: This role cannot access the dashboard without the read capability. "
93
- "%1$sClick here to fix this now%2$s."
94
- msgstr ""
95
 
96
- #: includes/admin.php:64
97
- msgid "Role Capabilities"
98
- msgstr "Permisos"
99
 
100
- #: includes/admin.php:109
101
- msgid ""
102
- "<strong>Note:</strong> Capability changes <strong>remain in the database</"
103
- "strong> after plugin deactivation."
104
- msgstr ""
105
 
106
- #: includes/admin.php:114
107
- #, php-format
108
- msgid ""
109
- "<strong>Note:</strong> Capability changes <strong>remain in the database</"
110
- "strong> after plugin deactivation. You can also configure this role as a "
111
- "%sPermission Group%s."
112
- msgstr ""
113
 
114
- #: includes/admin.php:148 includes/settings.php:38
115
- msgid "PublishPress Permissions"
116
- msgstr ""
117
 
118
- #: includes/admin.php:150
119
- msgid ""
120
- "Automatically define type-specific capabilities for your custom post types "
121
- "and taxonomies"
122
- msgstr ""
123
 
124
- #: includes/admin.php:154
125
- msgid "Assign standard WP roles supplementally for a specific post type"
126
- msgstr ""
127
 
128
- #: includes/admin.php:158
129
- msgid ""
130
- "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
131
- msgstr ""
132
 
133
- #: includes/admin.php:162
134
- msgid "Customize reading permissions per-category or per-post"
135
- msgstr ""
136
 
137
- #: includes/admin.php:166
138
- msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
139
- msgstr ""
140
 
141
- #: includes/admin.php:170
142
- msgid ""
143
- "Custom Post Visibility statuses, fully implemented throughout wp-admin "
144
- "<em>(Pro)</em>"
145
- msgstr ""
146
 
147
- #: includes/admin.php:174
148
- msgid ""
149
- "Custom Moderation statuses for access-controlled, multi-step publishing "
150
- "workflow <em>(Pro)</em>"
151
- msgstr ""
152
 
153
- #: includes/admin.php:178
154
- msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
155
- msgstr ""
156
 
157
- #: includes/admin.php:182
158
- msgid ""
159
- "Customize the moderated editing of published content with Revisionary or "
160
- "Post Forking <em>(Pro)</em>"
161
- msgstr ""
162
 
163
- #: includes/admin.php:186
164
- msgid ""
165
- "Grant Spectator, Participant or Moderator access to specific bbPress forums "
166
- "<em>(Pro)</em>"
167
- msgstr ""
168
 
169
- #: includes/admin.php:190
170
- msgid ""
171
- "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
172
- msgstr ""
173
 
174
- #: includes/admin.php:194
175
- msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
176
- msgstr ""
177
 
178
- #: includes/admin.php:198
179
- msgid "Member support forum"
180
- msgstr "Foro de soporte"
181
 
182
- #: includes/admin.php:205
183
- #, php-format
184
- msgid "%1$sgrab%2$s %3$s"
185
- msgstr ""
186
 
187
- #: includes/admin.php:205
188
- #, php-format
189
- msgid "%s (free install)"
190
- msgstr ""
191
 
192
- #: includes/admin.php:207
193
- #, php-format
194
- msgid "%1$sbuy%2$s %3$s"
195
- msgstr ""
196
 
197
- #: includes/admin.php:207
198
- #, php-format
199
- msgid "%s info/purchase"
200
- msgstr ""
201
 
202
- #: includes/admin.php:287
203
- msgid "&nbsp;"
204
- msgstr ""
205
 
206
- #: includes/admin.php:288
207
- msgid "Reading"
208
- msgstr ""
209
 
210
- #: includes/admin.php:289
211
- msgid "Editing Capabilities"
212
- msgstr ""
213
 
214
- #: includes/admin.php:290
215
- msgid "Deletion Capabilities"
216
- msgstr ""
217
 
218
- #: includes/admin.php:294
219
- msgid "can read posts which are currently published with private visibility"
220
- msgstr ""
221
 
222
- #: includes/admin.php:295
223
- msgid ""
224
- "has basic editing capability (but may need other capabilities based on post "
225
- "status and ownership)"
226
- msgstr ""
227
 
228
- #: includes/admin.php:296
229
- msgid "can edit posts which were created by other users"
230
- msgstr ""
231
 
232
- #: includes/admin.php:297
233
- msgid "can edit posts which are currently published"
234
- msgstr ""
235
 
236
- #: includes/admin.php:298
237
- msgid "can edit posts which are currently published with private visibility"
238
- msgstr ""
239
 
240
- #: includes/admin.php:299
241
- msgid "can make a post publicly visible"
242
- msgstr ""
243
 
244
- #: includes/admin.php:300
245
- msgid ""
246
- "has basic deletion capability (but may need other capabilities based on post "
247
- "status and ownership)"
248
- msgstr ""
249
 
250
- #: includes/admin.php:301
251
- msgid "can delete posts which were created by other users"
252
- msgstr ""
253
 
254
- #: includes/admin.php:302
255
- msgid "can delete posts which are currently published"
256
- msgstr ""
257
 
258
- #: includes/admin.php:303
259
- msgid "can delete posts which are currently published with private visibility"
260
- msgstr ""
261
 
262
- #: includes/admin.php:437 includes/admin.php:547 includes/admin.php:809
263
- #: includes/admin.php:904 includes/admin.php:1001
264
- #, php-format
265
- msgid "%s: assigned by Permission Group"
266
- msgstr ""
267
 
268
- #: includes/admin.php:452
269
- #, php-format
270
- msgid "shared capability: %s"
271
- msgstr ""
272
 
273
- #: includes/admin.php:524
274
- msgid "Other WordPress Core Capabilities"
275
- msgstr ""
276
 
277
- #: includes/admin.php:566
278
- msgid ""
279
- "Lockout Prevention: To remove read capability, first remove WordPress "
280
- "admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
281
- msgstr ""
282
 
283
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
284
- #: includes/admin.php:1044
285
- msgid "check/uncheck all"
286
- msgstr ""
287
 
288
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
289
- #: includes/admin.php:1044
290
- msgid "negate all (storing as disabled capabilities)"
291
- msgstr ""
292
 
293
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
294
- #: includes/admin.php:1044
295
- msgid "negate none (add/remove all capabilities normally)"
296
- msgstr ""
297
 
298
- #: includes/admin.php:783
299
- #, php-format
300
- msgid "%s Capabilities"
301
- msgstr "%s Permisos"
302
 
303
- #: includes/admin.php:856
304
- msgid "Additional Capabilities"
305
- msgstr ""
306
 
307
- #: includes/admin.php:966
308
- msgid ""
309
- "Meta capabilities are used in code as placeholders for other capabilities. "
310
- "Assiging to a role has no effect."
311
- msgstr ""
312
 
313
- #: includes/admin.php:967
314
- msgid "Invalid Capabilities"
315
- msgstr ""
316
 
317
- #: includes/admin.php:1057
318
- msgid ""
319
- "Role level is mostly deprecated. However, it still determines eligibility "
320
- "for Post Author assignment and limits the application of user editing "
321
- "capabilities."
322
- msgstr ""
323
 
324
- #: includes/admin.php:1059
325
- msgid "Level:"
326
- msgstr "Nivel:"
327
 
328
- #: includes/admin.php:1082
329
- msgid "Delete this role"
330
- msgstr "Eliminar este rol"
331
 
332
- #: includes/admin.php:1082
333
- #, php-format
334
- msgid ""
335
- "You are about to delete the %s role.\n"
336
- "\n"
337
- " 'Cancel' to stop, 'OK' to delete."
338
- msgstr ""
339
- "Estás a intentando eliminar el rol %s.\n"
340
- " 'Aceptar' para borrar, 'Cancelar' para salir."
341
 
342
- #: includes/admin.php:1082
343
- msgid "Delete Role"
344
- msgstr "Eliminar Rol"
345
 
346
- #: includes/admin.php:1091
347
- msgid "Add Capability"
348
- msgstr "Añadir Permiso"
349
 
350
- #: includes/admin.php:1094
351
- msgid "Add to role"
352
- msgstr "Añadir al rol"
353
 
354
- #: includes/admin.php:1106
355
- msgid "Copy this role to"
356
- msgstr "Copiar este rol a"
357
 
358
- #: includes/admin.php:1109
359
- msgid "Role Name"
360
- msgstr ""
361
 
362
- #: includes/admin.php:1112 includes/pp-ui.php:84
363
- msgid ""
364
- "Make role available for supplemental assignment to Permission Groups only"
365
- msgstr ""
366
 
367
- #: includes/admin.php:1112
368
- msgid "hidden"
369
- msgstr ""
370
 
371
- #: includes/admin.php:1116
372
- msgid "Copy"
373
- msgstr "Copiar"
374
 
375
- #: includes/admin.php:1122
376
- msgid "Rename Role"
377
- msgstr ""
378
 
379
- #: includes/admin.php:1124
380
- msgid "New Role Name"
381
- msgstr ""
382
 
383
- #: includes/admin.php:1127
384
- msgid "Rename"
385
- msgstr ""
386
 
387
- #: includes/admin.php:1158
388
- msgid "Create this role definition in new (future) sites"
389
- msgstr ""
390
 
391
- #: includes/admin.php:1158
392
- msgid "include in new sites"
393
- msgstr ""
394
 
395
- #: includes/admin.php:1161
396
- msgid "Copy / update this role definition to all sites now"
397
- msgstr ""
398
 
399
- #: includes/admin.php:1161
400
- msgid "sync role to all sites now"
401
- msgstr ""
402
 
403
- #: includes/backup-handler.php:9 includes/manager.php:701
404
- msgid "You do not have permission to restore roles."
405
- msgstr ""
406
 
407
- #: includes/backup-handler.php:42
408
- msgid "New backup saved."
409
- msgstr "Se ha creado una nueva copia de seguridad."
410
-
411
- #: includes/backup-handler.php:58
412
- #, fuzzy
413
- #| msgid "Roles and Capabilities restored from last backup."
414
- msgid "Roles and Capabilities restored from initial backup."
415
- msgstr "Roles y permisos restaurados de la última copia de seguridad."
416
-
417
- #: includes/backup-handler.php:60 includes/backup-handler.php:69
418
- #: includes/backup-handler.php:78
419
- msgid "Restore failed. No backup found."
420
- msgstr "Ha fallado la recuperación. No se encontró ninguna copia de seguridad."
421
-
422
- #: includes/backup-handler.php:67
423
- msgid "Roles and Capabilities restored from last backup."
424
- msgstr "Roles y permisos restaurados de la última copia de seguridad."
425
-
426
- #: includes/backup-handler.php:76
427
- #, fuzzy
428
- #| msgid "Roles and Capabilities restored from last backup."
429
- msgid "Roles and Capabilities restored from selected auto-backup."
430
- msgstr "Roles y permisos restaurados de la última copia de seguridad."
431
-
432
- #: includes/backup-handler.php:96
433
- msgid "Needed function to create default roles not found!"
434
- msgstr "¡No se encontró la función necesaria para crear los roles por defecto!"
435
-
436
- #: includes/backup-handler.php:109
437
- msgid "Roles and Capabilities reset to WordPress defaults"
438
- msgstr "Roles y Permisos restaurados a los valores por defecto de WordPress"
439
-
440
- #: includes/backup.php:39
441
- #, php-format
442
- msgid "Backup Tool for %1$sPublishPress Capabilities%2$s"
443
- msgstr ""
444
- "Herramienta de copias de seguridad para %1$sPublishPress Capabilities%2$s"
445
 
446
- #: includes/backup.php:46
447
- msgid "Restore"
448
- msgstr "Recuperar"
449
 
450
- #: includes/backup.php:47 includes/functions-admin.php:39
451
- #: includes/manager.php:325
452
- msgid "Backup"
453
- msgstr "Copia de seguridad"
454
 
455
- #: includes/backup.php:48
456
- msgid "Reset Roles"
457
- msgstr ""
458
 
459
- #: includes/backup.php:57
460
- msgid "Backup Roles and Capabilities"
461
- msgstr "Crea una copia de seguridad de roles y permisos"
462
 
463
- #: includes/backup.php:62
464
- #, php-format
465
- msgid ""
466
- "PublishPress Capabilities automatically creates a backup on installation and "
467
- "whenever you save changes. The initial backup and last %d auto-backups are "
468
- "kept."
469
- msgstr ""
470
 
471
- #: includes/backup.php:67
472
- msgid ""
473
- "A backup created on this screen replaces any previous manual backups, but is "
474
- "never automatically replaced."
475
- msgstr ""
476
 
477
- #: includes/backup.php:72
478
- msgid "Manual Backup"
479
- msgstr ""
480
 
481
- #: includes/backup.php:82
482
- #, php-format
483
- msgid "Last Manual Backup - %s"
484
- msgstr ""
485
 
486
- #: includes/backup.php:82
487
- #, fuzzy
488
- #| msgid "Backu"
489
- msgid "Last Backup"
490
- msgstr "Salvar"
491
 
492
- #: includes/backup.php:86
493
- msgid "Restore Previous Roles and Capabilities"
494
- msgstr ""
495
 
496
- #: includes/backup.php:89
497
- msgid ""
498
- "PublishPress Capabilities automatically creates a backup on installation and "
499
- "whenever you save changes."
500
- msgstr ""
501
 
502
- #: includes/backup.php:93
503
- msgid ""
504
- "On this screen, you can restore an earlier version of your roles and "
505
- "capabilities."
506
- msgstr ""
507
 
508
- #: includes/backup.php:98
509
- msgid "Available Backups:"
510
- msgstr ""
511
 
512
- #: includes/backup.php:112
513
- #, php-format
514
- msgid "Manual backup of all roles (%s)"
515
- msgstr ""
516
 
517
- #: includes/backup.php:127
518
- #, php-format
519
- msgid "Auto-backup of all roles (%s)"
520
- msgstr ""
521
 
522
- #: includes/backup.php:135
523
- msgid "Initial backup of all roles"
524
- msgstr ""
525
 
526
- #: includes/backup.php:144
527
- msgid "Restore Selected Roles"
528
- msgstr ""
529
 
530
- #: includes/backup.php:155
531
- msgid "Show changes from current roles only"
532
- msgstr ""
533
 
534
- #: includes/backup.php:161
535
- #, php-format
536
- msgid "Initial Backup - %s"
537
- msgstr ""
538
 
539
- #: includes/backup.php:161
540
- msgid "Initial Backup"
541
- msgstr ""
542
 
543
- #: includes/backup.php:187
544
- #, php-format
545
- msgid "%s (%s roles)"
546
- msgstr ""
547
 
548
- #: includes/backup.php:195
549
- msgid "(this role will be removed if you restore backup)"
550
- msgstr ""
551
 
552
- #: includes/backup.php:224
553
- #, php-format
554
- msgid "%s (level %s)"
555
- msgstr ""
556
 
557
- #: includes/backup.php:259
558
- msgid "Reset WordPress Defaults"
559
- msgstr "Restaurar valores por defecto de WordPress"
560
 
561
- #: includes/backup.php:262
562
- msgid "WARNING:"
563
- msgstr "ATENCIÓN:"
564
 
565
- #: includes/backup.php:262
566
- msgid ""
567
- "Reseting default Roles and Capabilities will set them to the WordPress "
568
- "install defaults."
569
- msgstr ""
570
- "Restaurando los Roles y Premisos por defecto, los devolverá al estado por "
571
- "defecto de la instalación de WordPress."
572
 
573
- #: includes/backup.php:266
574
- msgid ""
575
- "If you have installed any plugin that adds new roles or capabilities, these "
576
- "will be lost."
577
- msgstr ""
578
- "Si has instalado algún plugin que añade roles o permisos, estos se perderán."
579
 
580
- #: includes/backup.php:268
581
- msgid "It is recommended to use this only as a last resource!"
582
- msgstr "¡Se recomienda utilitzar esta opción solo como último recurso!"
583
 
584
- #: includes/backup.php:271
585
- msgid "Reset Roles and Capabilities to WordPress defaults"
586
- msgstr "Restaura Roles y Permisos a los valores por defecto de WordPress"
587
 
588
- #: includes/backup.php:273
589
- msgid ""
590
- "You are about to reset Roles and Capabilities to WordPress defaults.\n"
591
- " 'Cancel' to stop, 'OK' to reset."
592
- msgstr ""
593
- "Estás a intentando restaurar los valores por defecto de WordPress para Roles "
594
- "y Permisos.\n"
595
- " 'Aceptar' para restaurar, 'Cancelar' para abandonar."
596
 
597
- #: includes/backup.php:273
598
- msgid "Reset to WordPress defaults"
599
- msgstr "Restaura los valores por defecto de WordPress"
600
 
601
- #: includes/filters-woocommerce.php:32
602
- #, php-format
603
- msgid "All %s"
604
- msgstr ""
605
 
606
- #: includes/filters-woocommerce.php:33
607
- msgid "Add New"
608
- msgstr ""
609
 
610
- #: includes/filters.php:312
611
- msgid "Edit Roles"
612
- msgstr "Editar Roles"
613
 
614
- #: includes/functions-admin.php:14 includes/manager.php:289
615
- #: includes/roles/class/class-pp-roles-list-table.php:120
616
- msgid "Capabilities"
617
- msgstr "Permisos"
618
 
619
- #: includes/functions-admin.php:36 includes/manager.php:311
620
- #: includes/roles/roles.php:4
621
- msgid "Roles"
622
- msgstr "Roles"
623
 
624
- #: includes/functions-admin.php:40 includes/manager.php:328
625
- #, fuzzy
626
- #| msgid "Settings saved."
627
- msgid "Settings"
628
- msgstr "Opciones guardadas."
629
 
630
- #: includes/handler.php:23 includes/handler.php:49
631
- msgid "New role created."
632
- msgstr "Se ha creado el nuevo rol."
633
 
634
- #: includes/handler.php:29 includes/handler.php:55
635
- msgid "Error: Failed creating the new role."
636
- msgstr "Error: No se ha podido crear el nuevo rol."
637
 
638
- #: includes/handler.php:42
639
- #, php-format
640
- msgid "Role \"%s\" (id %s) renamed to \"%s\""
641
- msgstr ""
642
 
643
- #: includes/handler.php:111
644
- msgid "Incorrect capability name."
645
- msgstr "Nombre incorrecto de permiso ."
646
 
647
- #: includes/handler.php:116
648
- msgid "Type / Taxonomy settings saved."
649
- msgstr "Opciones guardadas."
650
 
651
- #: includes/handler.php:122
652
- msgid "Bad form received."
653
- msgstr "Se ha recibido un formulario incorrecto."
654
 
655
- #: includes/handler.php:245
656
- msgid "You cannot remove Manage Capabilities from Administrators"
657
- msgstr "No se puede eliminar 'Manage Capabilities' de los administradores."
658
 
659
- #: includes/handler.php:357
660
- #, php-format
661
- msgid ""
662
- "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
663
- msgstr ""
664
- "No se puede eliminar el rol predeterminado. <a href=\"%s\">Debes cambiarlo "
665
- "antes</a>."
666
 
667
- #: includes/handler.php:404
668
- #, php-format
669
- msgid "Role has been deleted. %1$d users moved to default role %2$s."
670
- msgstr ""
671
- "El rol ha sido eliminado. Se ha asignado el rol predeterminado %2$s a %1$d "
672
- "usuarios."
673
 
674
- #: includes/manager.php:174
675
- msgid "Explicity negate this capability by storing as disabled"
676
- msgstr ""
677
 
678
- #: includes/manager.php:175
679
- msgid "Explicitly negate these capabilities by storing as disabled"
680
- msgstr ""
681
 
682
- #: includes/manager.php:176
683
- msgid "Post type registration does not define this capability distinctly"
684
- msgstr ""
685
 
686
- #: includes/manager.php:177
687
- msgid "This capability is explicitly negated. Click to add/remove normally."
688
- msgstr ""
689
 
690
- #: includes/manager.php:178
691
- msgid "Add or remove this capability from the WordPress role"
692
- msgstr ""
693
 
694
- #: includes/manager.php:179
695
- msgid "Add or remove capability from the role normally"
696
- msgstr ""
697
 
698
- #: includes/manager.php:352
699
- #: includes/roles/class/class-pp-roles-list-table.php:77
700
- msgid "Role"
701
- msgstr "Rol"
702
 
703
- #: includes/manager.php:353
704
- #: includes/roles/class/class-pp-roles-list-table.php:78
705
- #: includes/roles/roles.php:33
706
- msgid "Name"
707
- msgstr ""
708
 
709
- #: includes/manager.php:354
710
- #: includes/roles/class/class-pp-roles-list-table.php:79
711
- msgid "Users"
712
- msgstr ""
713
 
714
- #: includes/manager.php:381
715
- msgid "You do not have permission to manage roles."
716
- msgstr ""
717
 
718
- #: includes/manager.php:487 includes/manager.php:528
719
- msgid "You do not have permission to manage capabilities."
720
- msgstr ""
721
 
722
- #: includes/manager.php:542
723
- msgid "New capability added to role."
724
- msgstr "Nuevos permiso añadido al rol."
725
 
726
- #: includes/manager.php:581
727
- msgid "Bad form Received"
728
- msgstr "Se ha recibido un formulario incorrecto."
729
 
730
- #: includes/manager.php:731
731
- #, php-format
732
- msgid "If you like %s, please leave us a %s rating. Thank you!"
733
- msgstr ""
734
 
735
- #: includes/manager.php:742
736
- msgid "About PublishPress Capabilities"
737
- msgstr ""
738
 
739
- #: includes/manager.php:742
740
- msgid "About"
741
- msgstr ""
742
 
743
- #: includes/manager.php:744
744
- #, fuzzy
745
- #| msgid "Documentation"
746
- msgid "Capabilites Documentation"
747
- msgstr "Documentación"
748
 
749
- #: includes/manager.php:744
750
- msgid "Documentation"
751
- msgstr "Documentación"
752
 
753
- #: includes/manager.php:746
754
- msgid "Contact the PublishPress team"
755
- msgstr ""
756
 
757
- #: includes/manager.php:746
758
- msgid "Contact"
759
- msgstr ""
760
 
761
- #: includes/pp-ui.php:42
762
- #, php-format
763
- msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
764
- msgstr ""
765
 
766
- #: includes/pp-ui.php:44
767
- #, php-format
768
- msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
769
- msgstr ""
770
 
771
- #: includes/pp-ui.php:49
772
- #, php-format
773
- msgid ""
774
- "\"Posts\" capabilities selected here also define type-specific role "
775
- "assignment for Permission Groups%s."
776
- msgstr ""
777
 
778
- #: includes/pp-ui.php:51
779
- #, php-format
780
- msgid ""
781
- "\"Posts\" capabilities selected here also define type-specific role "
782
- "assignment for Permit Groups%s."
783
- msgstr ""
784
 
785
- #: includes/pp-ui.php:59
786
- #, php-format
787
- msgid ""
788
- "Capabilities for custom statuses can be manually added here. (See "
789
- "%sPermissions > Post Statuses%s for applicable names). %sSupplemental status-"
790
- "specific roles%s are usually more convenient, though."
791
- msgstr ""
792
 
793
- #: includes/pp-ui.php:61
794
- msgid ""
795
- "Capabilities for custom statuses can be manually added here. Or activate the "
796
- "PP Custom Post Statuses extension to assign status-specific supplemental "
797
- "roles."
798
- msgstr ""
799
 
800
- #: includes/pp-ui.php:64
801
- msgid ""
802
- "Capabilities for custom statuses can be manually added to a role here (see "
803
- "Conditions > Status > Capability Mapping for applicable names). However, it "
804
- "is usually more convenient to use Permit Groups to assign a supplemental "
805
- "status-specific role."
806
- msgstr ""
807
 
808
- #: includes/pp-ui.php:84
809
- msgid "hidden role"
810
- msgstr ""
811
 
812
- #: includes/pp-ui.php:95
813
- msgid "Type-Specific Capabilities"
814
- msgstr ""
815
 
816
- #: includes/pp-ui.php:98
817
- msgid "Ensure permissions can be controlled separately from other post types."
818
- msgstr ""
819
 
820
- #: includes/pp-ui.php:161
821
- msgid ""
822
- "Make selected post types require a different capability to add new posts."
823
- msgstr ""
824
 
825
- #: includes/pp-ui.php:161
826
- msgid "Use create_posts capability"
827
- msgstr ""
828
 
829
- #: includes/pp-ui.php:169 includes/pp-ui.php:232 includes/pp-ui.php:288
830
- msgid "Update"
831
- msgstr ""
832
 
833
- #: includes/pp-ui.php:179
834
- msgid "Taxonomy-Specific Capabilities"
835
- msgstr ""
836
 
837
- #: includes/pp-ui.php:182
838
- msgid "Ensure permissions can be controlled separately from other taxonomies."
839
- msgstr ""
840
 
841
- #: includes/pp-ui.php:237
842
- msgid "Detailed Taxonomy Capabilities"
843
- msgstr ""
844
 
845
- #: includes/pp-ui.php:240
846
- msgid ""
847
- "Enforce Edit, Delete and Assign capabilities separately from Management "
848
- "capability."
849
- msgstr ""
850
 
851
- #: includes/roles/class/class-pp-roles-actions.php:126
852
- msgid "You do not have sufficient permissions to perform this action."
853
- msgstr ""
854
 
855
- #: includes/roles/class/class-pp-roles-actions.php:142
856
- msgid "Your link has expired, refresh the page and try again."
857
- msgstr ""
858
 
859
- #: includes/roles/class/class-pp-roles-actions.php:163
860
- #: includes/roles/class/class-pp-roles-actions.php:269
861
- msgid "Missing parameters, refresh the page and try again."
862
- msgstr ""
863
 
864
- #: includes/roles/class/class-pp-roles-actions.php:197
865
- msgid ""
866
- "Something went wrong, the system wasn't able to create the role, refresh the "
867
- "page and try again."
868
- msgstr ""
869
 
870
- #: includes/roles/class/class-pp-roles-actions.php:284
871
- msgid "Deleting a system role is not allowed."
872
- msgstr ""
873
 
874
- #: includes/roles/class/class-pp-roles-list-table.php:134
875
- #: includes/roles/class/class-pp-roles-list-table.php:242
876
- msgid "Delete"
877
- msgstr "Eliminar"
878
 
879
- #: includes/roles/roles-functions.php:32
880
- msgid "Are you sure you want to delete this role?"
881
- msgstr ""
882
 
883
- #: includes/roles/roles.php:8
884
- #, php-format
885
- msgid "Search results for &#8220;%s&#8221;"
886
- msgstr ""
887
 
888
- #: includes/roles/roles.php:19
889
- msgid "Search Roles"
890
- msgstr ""
891
 
892
- #: includes/roles/roles.php:25
893
- msgid "Add New Role"
894
- msgstr ""
895
 
896
- #: includes/roles/roles.php:35
897
- msgid "The name is how it appears on your site."
898
- msgstr ""
899
 
900
- #: includes/roles/roles.php:40
901
- msgid "Add"
902
- msgstr ""
903
 
904
- #: includes/roles/roles.php:52
905
- msgid "Description here."
906
- msgstr ""
907
 
908
- #: includes/settings.php:12
909
- msgid "Capabilities Settings"
910
- msgstr ""
911
 
912
- #: includes/settings.php:22
913
- msgid "Related Permissions Plugins"
914
- msgstr ""
915
 
916
- #: includes/settings.php:27
917
- msgid "PublishPress"
918
- msgstr ""
919
 
920
- #: includes/settings.php:32
921
- msgid "PublishPress Authors"
922
- msgstr ""
923
 
924
- #: includes/settings.php:44
925
- msgid "PublishPress Revisions"
926
- msgstr ""
927
 
928
- #: includes/settings.php:46
929
- msgid "Help / Contact Form"
930
- msgstr ""
931
 
932
- #: vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php:129
933
- msgid "Amazing! We are redirecting you to our site..."
934
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
935
 
936
- #, php-format
937
- #~ msgid "Capabilities for %s"
938
- #~ msgstr "Permisos para %s"
939
 
940
- #~ msgid "Change"
941
- #~ msgstr "Cambiar"
 
942
 
943
- #~ msgid "Create New Role"
944
- #~ msgstr "Crear nuevo Rol"
 
945
 
946
- #~ msgid "Create"
947
- #~ msgstr "Crear"
 
948
 
949
- #~ msgid "Select action:"
950
- #~ msgstr "Selecciona una acción:"
 
951
 
952
- #~ msgid "Restore last saved backup"
953
- #~ msgstr "Recupera la última copia de seguridad"
 
954
 
955
- #~ msgid "Do Action"
956
- #~ msgstr "Ejecutar Acción"
 
957
 
958
- #~ msgid "Capability Manager"
959
- #~ msgstr "Administrador de Permisos"
 
960
 
961
- #~ msgid "What do you think you're doing?!?"
962
- #~ msgstr "¿Que piensas que estás haciendo?"
 
963
 
964
- #~ msgid "New capabilities saved."
965
- #~ msgstr "Se han actualizado los nuevos permisos."
 
966
 
967
- #~ msgid "Option blocked by administrator."
968
- #~ msgstr "Opción bloqueada por el administrador."
 
969
 
970
- #~ msgid "The active plugin %s is not compatible with your WordPress version."
971
- #~ msgstr ""
972
- #~ "La extensión activa %s no es compatible con tu versión de WordPress."
973
 
974
- #~ msgid "WordPress %s is required to run this plugin."
975
- #~ msgstr "Se require WordPress %s para ejecutar esta extensión."
 
976
 
977
- #~ msgid "Standard sidebar functions are not present."
978
- #~ msgstr ""
979
- #~ "No se han encontrado algunas funciones de la barra lateral estándar."
980
 
981
- #~ msgid "It is required to use the standard sidebar to run %s"
982
- #~ msgstr "Es preciso utilizar la barra lateral estándar para ejectutar %s"
 
983
 
984
- #~ msgid "Just Now"
985
- #~ msgstr "Ahora mismo"
 
986
 
987
- #~ msgid "1 minute ago"
988
- #~ msgstr "Hace 1 minuto"
 
989
 
990
- #~ msgid "1 hour ago"
991
- #~ msgstr "Hace una hora"
 
992
 
993
- #~ msgid "Today at %s"
994
- #~ msgstr "Hoy a las %s"
 
995
 
996
- #~ msgid "Yesterday at %s"
997
- #~ msgstr "Ayer a las %s"
 
998
 
999
- #~ msgid "Plugin Homepage"
1000
- #~ msgstr "Página del plugin"
 
1001
 
1002
- #~ msgid "Theme Homepage"
1003
- #~ msgstr "Página del tema"
 
1004
 
1005
- #~ msgid "Author Homepage"
1006
- #~ msgstr "Página del autor"
 
1007
 
1008
- #~ msgid "Donate to project"
1009
- #~ msgstr "Haz un donativo"
 
1010
 
1011
- #~ msgid "File error. Please try again."
1012
- #~ msgstr "Error de archivo. Por favor, reintentalo de nuevo."
 
1013
 
1014
- #~ msgid "Local file doesn't exist."
1015
- #~ msgstr "El archivo local no existe."
 
1016
 
1017
- #~ msgid "Local file is not readable."
1018
- #~ msgstr "El archivo local no es legible."
 
1019
 
1020
- #~ msgid ""
1021
- #~ "File upload error (the uploaded file exceeds the upload_max_filesize "
1022
- #~ "directive in php.ini)."
1023
- #~ msgstr ""
1024
- #~ "Error de carga de archivo (el archivo cargado excede la directiva "
1025
- #~ "UPLOAD_MAX_FILESIZE de PHP)."
1026
 
1027
- #~ msgid ""
1028
- #~ "File upload error (the uploaded file exceeds the MAX_FILE_SIZE directive "
1029
- #~ "that was specified in the html form)."
1030
- #~ msgstr ""
1031
- #~ "Error de carga de archivo (el archivo enviado excede la directiva "
1032
- #~ "MAX_FILE_SIZE especificada en el formulario)."
1033
 
1034
- #~ msgid "File upload error (the uploaded file was only partially uploaded)."
1035
- #~ msgstr ""
1036
- #~ "Error de carga de archivo (el archivo sólo se recibió parcialmente)."
1037
 
1038
- #~ msgid "File upload error (no file was uploaded)."
1039
- #~ msgstr "Error de carga de archivo (no se recibió archivo)."
 
1040
 
1041
- #~ msgid "File upload error (missing a temporary folder)."
1042
- #~ msgstr "Error de carga de archivo (falta la carpeta temporal)."
 
1043
 
1044
- #~ msgid "File upload error (failed to write file to disk)."
1045
- #~ msgstr "Error de carga de archivo (no se pudo escribir en el disco)."
 
1046
 
1047
- #~ msgid "File upload error (file upload stopped by extension)."
1048
- #~ msgstr ""
1049
- #~ "Error de carga de archivo (se ha bloquedao el archivo por extensión)."
1050
 
1051
- #~ msgid "File upload error (unknown error code)."
1052
- #~ msgstr "Error de carga de archivo (código de error desconocido)."
 
1053
 
1054
- #~ msgid "File upload error. Please try again."
1055
- #~ msgstr "Error de carga de archivo. Por favor, reinténtalo."
 
1056
 
1057
- #~ msgid "File too big."
1058
- #~ msgstr "Archivo demasiado grande."
 
1059
 
1060
- #~ msgid "MIME type can't be detected."
1061
- #~ msgstr "No se pudo detectar el tipo MIME."
 
1062
 
1063
- #~ msgid "Incorrect type of file."
1064
- #~ msgstr "Tipo de archivo incorrecto."
 
1065
 
1066
- #~ msgid "Image too wide."
1067
- #~ msgstr "Imagen demasiado ancha."
 
1068
 
1069
- #~ msgid "Image too narrow."
1070
- #~ msgstr "Imagen demasiado estrecha."
 
1071
 
1072
- #~ msgid "Image too high."
1073
- #~ msgstr "Imagen demasiado alta."
 
1074
 
1075
- #~ msgid "Image too short."
1076
- #~ msgstr "Imagen demasiado baja."
 
1077
 
1078
- #~ msgid "Image ratio too high (image too wide)."
1079
- #~ msgstr "Ratio de imagen demariado alto (imagen demasiado ancha)."
 
1080
 
1081
- #~ msgid "Image ratio too low (image too high)."
1082
- #~ msgstr "Ratio de imagen demasiado bajo (imagen demasiado alta)."
 
1083
 
1084
- #~ msgid "Image has too many pixels."
1085
- #~ msgstr "La imágen tiene demasiados píxeles."
 
1086
 
1087
- #~ msgid "Image has not enough pixels."
1088
- #~ msgstr "La imagen no tiene suficientes píxeles."
 
1089
 
1090
- #~ msgid "File not uploaded. Can't carry on a process."
1091
- #~ msgstr "No se ha cargado el archivo. No se puede ejecutar el proceso."
 
1092
 
1093
- #~ msgid "%s already exists. Please change the file name."
1094
- #~ msgstr "El archivo %s ya existe. Por favor, cambia el nombre de archivo."
 
1095
 
1096
- #~ msgid "No correct temp source file. Can't carry on a process."
1097
- #~ msgstr "El archivo temporal es incorrecto. No se puede ejecutar el proceso."
 
1098
 
1099
- #~ msgid "No correct uploaded source file. Can't carry on a process."
1100
- #~ msgstr "Archivo original incorrecto. No se puede ejecutar el proceso."
 
1101
 
1102
- #~ msgid "Destination directory can't be created. Can't carry on a process."
1103
- #~ msgstr ""
1104
- #~ "No se puede crear el directorio de destino. No se puede realizar el "
1105
- #~ "proceso."
1106
 
1107
- #~ msgid "Destination directory doesn't exist. Can't carry on a process."
1108
- #~ msgstr ""
1109
- #~ "El directorio de destino no existe. No se puede realizar el proceso."
1110
 
1111
- #~ msgid "Destination path is not a directory. Can't carry on a process."
1112
- #~ msgstr ""
1113
- #~ "La ruta de destino no es un directorio. No se puede realizar el proceso."
1114
 
1115
- #~ msgid ""
1116
- #~ "Destination directory can't be made writeable. Can't carry on a process."
1117
- #~ msgstr ""
1118
- #~ "El directorio de destino no se puede cambiar a escribible. No se puede "
1119
- #~ "realizar el proceso."
1120
 
1121
- #~ msgid "Destination path is not a writeable. Can't carry on a process."
1122
- #~ msgstr ""
1123
- #~ "No se puede escribir en la ruta de destino. No se puede realizar el "
1124
- #~ "proceso."
1125
 
1126
- #~ msgid "Can't create the temporary file. Can't carry on a process."
1127
- #~ msgstr ""
1128
- #~ "No se puede crar un archivo temporal. No se puede ejecutar el proceso."
1129
 
1130
- #~ msgid "Source file is not readable. Can't carry on a process."
1131
- #~ msgstr ""
1132
- #~ "No se puede leer el archivo original. No se puede ejecutar el proceso."
1133
 
1134
- #~ msgid "No create from %s support."
1135
- #~ msgstr "No hay soporte para crear desde %s."
 
1136
 
1137
- #~ msgid "Error in creating %s image from source."
1138
- #~ msgstr "Error creacdo la imagen %s desde el original."
 
1139
 
1140
- #~ msgid "Can't read image source. Not an image?."
1141
- #~ msgstr "No se puede leer la imagen orginal. ¿Es una imagen?"
 
1142
 
1143
- #~ msgid "GD doesn't seem to be present."
1144
- #~ msgstr "No se ha detectado la libreria GD."
 
1145
 
1146
- #~ msgid "No create from %s support, can't read watermark."
1147
- #~ msgstr ""
1148
- #~ "No hay soporte para crear desde %s. No se puede leer la marca de agua."
1149
 
1150
- #~ msgid "No %s read support, can't create watermark."
1151
- #~ msgstr "No hay soporte para leer %s. No se puede crear la marca de agua."
 
1152
 
1153
- #~ msgid "Unknown image format, can't read watermark."
1154
- #~ msgstr "Formato de imagen desconocido. No se puede leer la marca al agua."
 
1155
 
1156
- #~ msgid "No %s create support."
1157
- #~ msgstr "No hay soporte para crear %s."
 
1158
 
1159
- #~ msgid "No conversion type defined."
1160
- #~ msgstr "No se ha definido el tipo de conversión."
 
1161
 
1162
- #~ msgid "Error copying file on the server. copy() failed."
1163
- #~ msgstr "Error coipiando el archivo en el servidor. Ha fallado copy()."
 
1164
 
1165
- #~ msgid "Error reading the file."
1166
- #~ msgstr "Error leyendo el archivo."
 
1167
 
1168
- #~ msgid "Help donating"
1169
- #~ msgstr "Ayuda donando"
 
1170
 
1171
- #~ msgid "Managing %s"
1172
- #~ msgstr "Administrando %s"
 
1
+ # Translation of Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) in Spanish (Spain)
2
+ # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2021-12-03 21:32+0100\n"
 
 
 
 
 
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: Poedit 3.0\n"
11
+ "Language: es\n"
12
+ "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
13
+ "POT-Creation-Date: \n"
14
+ "Last-Translator: \n"
15
+ "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
16
+
17
+ #. Plugin name.
18
+ msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
19
+ msgstr "PublishPress Capabilities - Perfil de acceso de los usuarios, permisos de edición, menús de administración"
20
+
21
+ #. Short description.
22
+ msgid "The best permissions plugin allows you to customize user roles, editor features and admin menus. You control who has access to your WordPress site."
23
+ msgstr "El mejor plugin de permisos, que te permite personalizar los perfiles de los usuarios, las características de los editores y los menús de los administradores. Tú controlas quién puede acceder a tu sitio de WordPress."
24
+
25
+ #. Found in description paragraph.
26
+ msgid "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/\">Click here to learn about removing toolbar items and dashboard widgets</a>."
27
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/\">Haz clic aquí para saber cómo eliminar los elementos de la barra de herramientas y los widgets del escritorio.</a>."
28
+
29
+ #. Found in description paragraph.
30
+ msgid "“Admin Features” allows you to hide features in the WordPress admin area and toolbar. You can decide what users see in your WordPress dashboard. You can use this option to hide all the links in the toolbar including \"About WordPress\", \"Visit Site\" and more. You can also hide dashboard widgets such as \"At a Glance\", \"Quick Draft\", and \"WordPress Events and News\"."
31
+ msgstr "«Admin Features» te permite ocultar características en el área de administración de WordPress y en la barra de herramientas. Puedes decidir lo que los usuarios ven en tu escritorio de WordPress. Puedes usar esta opción para ocultar todos los enlaces de la barra de herramientas, incluyendo «Acerca de WordPress», «Visitar el sitio» y más. También puede ocultar los widgets del escritorio como «De un vistazo», «Borrador rápido» y «Eventos y noticias de WordPress»."
32
+
33
+ #. Found in description list item.
34
+ msgid "<strong>Hide admin area features</strong>: Remove items from the WordPress toolbar, plus dashboard widgets."
35
+ msgstr "<strong>Ocultar características del área de administración</strong>: quitar elementos de la barra de herramientas de WordPress, además de los widgets del escritorio."
36
+
37
+ #. Found in description header.
38
+ msgid "4. Hide Toolbar Link and Dashboard Widgets"
39
+ msgstr "4. Ocultar el enlace de la barra de herramientas y los widgets del escritorio"
40
+
41
+ #. Screenshot description.
42
+ msgid "Admin Feature Restriction: PublishPress Capabilities enables you remove items from the WordPress toolbar, plus dashboard widgets."
43
+ msgstr "Restricción de características de administración: PublishPress Capabilities te permite quitar elementos de la barra de herramientas de WordPress, además de los widgets del escritorio."
44
+
45
+ #. Found in description header.
46
+ msgid "PublishPress Capabilities Pro"
47
+ msgstr "PublishPress Capabilities Pro"
48
+
49
+ #. Found in description paragraph.
50
+ msgid "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-wordpress-posts/\">Click here to learn about hiding metaboxes</a>."
51
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-wordpress-posts/\">Haz clic aquí para saber cómo ocultar las cajas meta.</a>."
52
+
53
+ #. Found in description paragraph.
54
+ msgid "WordPress has a feature called “metaboxes”. This is a strange name, but you have seen them often if you use WordPress. When a user edits a post, the edit screen has several default boxes: Status &amp; visibility, Featured image, Categories, Tags, etc. These boxes are metaboxes. Plugins can add also add their own metaboxes. The Pro version of the PublishPress Capabilities plugin allows you to hide metaboxes for specific user roles."
55
+ msgstr "WordPress tiene una función llamada «metaboxes». Es un nombre extraño, pero los habrás visto a menudo si utilizas WordPress. Cuando un usuario edita una entrada, la pantalla de edición tiene varias cajas por defecto: Estado y visibilidad, Imagen destacada, Categorías, Etiquetas, etc. Estas cajas son metaboxes o cajas meta. Los plugins pueden añadir también sus propios cajas meta. La versión Pro del plugin PublishPress Capabilities permite ocultar las cajas meta para determinados perfiles de usuario."
56
+
57
+ #. Found in description paragraph.
58
  msgid ""
59
+ "<strong>Upgrade to Capabilities Pro</strong><br />\n"
60
+ " This plugin is the free version of PublishPress Capabilities. The Pro version of Capabilities has all the features you need to control permissions for your WordPress users. With Capabilities Pro you can manage access to posts, pages, media and custom post types. <a href=\"https://publishpress.com/capabilities\" title=\"Capabilities Pro\">Click here to control access to your WordPress site with Capabilities Pro!</a>"
61
  msgstr ""
62
+ "<strong>Actualizar a Capabilities Pro</strong><br />\n"
63
+ " Este plugin es la versión gratuita de PublishPress Capabilities. La versión Pro de Capabilities tiene todas las características que necesitas para controlar los permisos de tus usuarios de WordPress. Con Capabilities Pro puedes gestionar el acceso a entradas, páginas, medios y tipos de contenido personalizado. <a href=\"https://publishpress.com/capabilities\" title=\"Capabilities Pro\">Haz clic aquí para controlar el acceso a tu sitio de WordPress con ¡Capabilities Pro!</a>"
64
 
65
+ #. Found in description list item.
66
+ msgid "<strong>Hide editor metaboxes (Pro version)</strong>: You can hide metaboxes on the post editing screen. "
67
+ msgstr "<strong>Ocultar las cajas meta del editor (versión Pro)</strong>: puedes ocultar las cajas meta en la pantalla de edición de la entrada. "
68
 
69
+ #. Found in description header.
70
+ msgid "6. Hide Metaboxes in WordPress Posts"
71
+ msgstr "6. Ocultar las cajas meta en las entradas de WordPress"
72
 
73
+ #. Screenshot description.
74
+ msgid "Editor Feature Restriction: PublishPress Capabilities enables you to decide what users see when they're writing posts."
75
+ msgstr "Restricción de características del editor: PublishPress Capabilities te permite decidir qué ven los usuarios cuando escriben las entradas."
 
76
 
77
+ #. Screenshot description.
78
+ msgid "Admin Menu Restrictions: With PublishPress Capabilities you can restrict access to admin menu screens by user roles."
79
+ msgstr "Restricciones del menú de administración: con PublishPress Capabilities puedes restringir el acceso a las pantallas del menú de administración por perfiles de usuario."
 
80
 
81
+ #. Screenshot description.
82
+ msgid "Navigation Menu Restrictions: PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users."
83
+ msgstr "Restricciones de los menús de navegación: PublishPress Capabilities te permite restringir el acceso a los menús de navegación por perfiles, usuarios conectados y desconectados."
84
 
85
+ #. Screenshot description.
86
+ msgid "WooCommerce Permissions: With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons."
87
+ msgstr "Permisos de WooCommerce: con PublishPress Capabilities puedes controlar los permisos de los productos, pedidos y cupones de WooCommerce."
88
 
89
+ #. Screenshot description.
90
+ msgid "Media Library Permissions: PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site’s Media Library."
91
+ msgstr "Permisos de la biblioteca de medios: PublishPress Capabilities te permite decidir quién puede subir, editar y eliminar archivos de la biblioteca multimedia de tu sitio."
92
 
93
+ #. Screenshot description.
94
+ msgid "Permission backups: Every time you change your permissions, the PublishPress Capabilities plugin will automatically create a backup."
95
+ msgstr "Copias de seguridad de los permisos: cada vez que cambias tus permisos, el plugin PublishPress Capabilities creará automáticamente una copia de seguridad."
96
 
97
+ #. Screenshot description.
98
+ msgid "Enforce Taxonomy-Specific Capabilities: You can give “Manage”, “Edit” and “Assign” permissions for all your taxonomies."
99
+ msgstr "Aplica las capacidades específicas de la taxonomía: puedes dar permisos de «Gestión», «Edición» y «Asignación» para todas tus taxonomías."
 
100
 
101
+ #. Screenshot description.
102
+ msgid "Custom Statuses: With Capabilities Pro, you can decide which user roles are able to send posts to each status."
103
+ msgstr "Estados personalizados: con Capabilities Pro, puedes decidir qué perfiles de usuario pueden enviar entradas a cada estado."
 
 
104
 
105
+ #. Screenshot description.
106
+ msgid "Multi-site support: Capabilities can control permissions on a single site or across your whole network."
107
+ msgstr "Compatibilidad con multisitio: capabilities puede controlar los permisos en un solo sitio o en toda tu red."
 
 
108
 
109
+ #. Screenshot description.
110
+ msgid "Content permissions: With Capabilities, you can choose who can Publish, Read, Edit and Delete content."
111
+ msgstr "Permisos de contenido: con Capabilities, puedes elegir quién puede publicar, leer, editar y eliminar contenido."
112
 
113
+ #. Screenshot description.
114
+ msgid "Create and copy user roles: With PublishPress Capabilities you can create or copy any existing WordPress user role."
115
+ msgstr "Crear y copiar perfiles de usuario: con PublishPress Capabilities puedes crear o copiar cualquier perfil de usuario de WordPress existente."
 
 
116
 
117
+ #. Screenshot description.
118
+ msgid "Control user permissions: You can customize all the user roles on your site, from Administrator to Subscriber."
119
+ msgstr "Controla los permisos de los usuarios: puedes personalizar todos los perfiles de usuario de tu sitio, desde el de administrador hasta el de suscriptor."
 
 
 
120
 
121
+ #. Found in description list item.
122
+ msgid "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> has everything you need to build professional websites with the WordPress block editor."
123
+ msgstr "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> tiene todo lo que necesitas para construir sitios web profesionales con el editor de bloques de WordPress."
124
 
125
+ #. Found in description list item.
126
+ msgid "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> enables you to group content together into a series "
127
+ msgstr "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> te permite agrupar contenidos en una serie "
 
 
128
 
129
+ #. Found in faq paragraph.
130
+ msgid "Jetpack is a plugin built by Automattic, the company behind WordPress.com. This plugin offers many different services including backups, spam blocking, analytics, malware scans, contact forms, and more. PublishPress Capabilities can help you manage Jetpack permissisons."
131
+ msgstr "Jetpack es un plugin creado por Automattic, la compañía detrás de WordPress.com. Este plugin ofrece muchos servicios diferentes, incluyendo copias de seguridad, bloqueo de spam, análisis, escaneo de malware, formularios de contacto y más. PublishPress Capabilities puede ayudarte a gestionar los permisos de Jetpack."
 
 
 
 
132
 
133
+ #. Found in faq paragraph.
134
+ msgid "The Elementor plugin is one of the most popular drag-and-drop page builders. With Elementor, you’re editing the site live, and simultaneously see exactly how it looks like. Elementor designs are full-responsive and come with over 40 powerful widgets. PublishPress Capabilities can help you manage Elementor permissisons."
135
+ msgstr "El plugin Elementor es uno de los más populares constructores de páginas de arrastrar y soltar. Con Elementor, editarás el sitio en vivo y simultáneamente verás cómo queda exactamente. Los diseños de Elementor son totalmente adaptables y vienen con más de 40 potentes widgets. PublishPress Capabilities te puede ayudarte a gestionar los permisos de Elementor."
136
 
137
+ #. Found in faq paragraph.
138
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-forms-admin-menus/\">Click here to learn about Gravity Forms menu permissions</a>."
139
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-forms-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de Gravity Forms</a>."
 
 
140
 
141
+ #. Found in faq paragraph.
142
+ msgid "This approach works for the core Gravity Forms plugin and can also be used for add-on plugins from the official site, or third-party sites."
143
+ msgstr "Este método funciona para el núcleo del plugin Gravity Forms y también puede utilizarse para extensiones del sitio oficial o de terceros."
144
 
145
+ #. Found in faq paragraph.
146
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict access for the “Editor” role. By default, Editors aren't given access to Gravity Forms, but site administrators often do they give them some access. Scroll down and you can enter a red X for any Gravity Forms menu link that you don't want users in the Editor role to access. Now when an Editor logs in to your site, they will not be able to see the blocked Gravity Forms menu links."
147
+ msgstr "Es posible controlar quién puede acceder a estos enlaces utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso para el perfil de «Editor». Por defecto, los editores no tienen acceso a Gravity Forms, pero los administradores del sitio a menudo les dan algún acceso. Desplázate hacia abajo y puedes introducir una X roja para cualquier enlace del menú de Gravity Forms al que no quieres que accedan los usuarios con el perfil de editor. Ahora, cuando un editor inicie sesión en tu sitio, no podrá ver los enlaces del menú de Gravity Forms bloqueados."
 
148
 
149
+ #. Found in faq paragraph.
150
+ msgid "When you first install Gravity Forms, you'll see one top-level menu link, plus eight sub-menus."
151
+ msgstr "Cuando instale por primera vez Gravity Forms, verá un enlace de menú de nivel superior, además de ocho submenús."
152
 
153
+ #. Found in faq paragraph.
154
+ msgid "Gravity Forms is perhaps the most popular contact form plugin for WordPress. You can build and publish your WordPress forms in just minutes. Choose your fields, configure your options and easily embed forms on your WordPress-powered site. Gravity Forms allows you to easily integrate with third party services such as PayPal, Mailchimp, and Zapier."
155
+ msgstr "Gravity Forms es quizás el plugin de formularios de contacto más popular para WordPress. Puedes construir y publicar tus formularios de WordPress en cuestión de minutos. Elige tus campos, configura tus opciones e incrusta fácilmente los formularios en tu sitio web impulsado por WordPress. Gravity Forms te permite integrar fácilmente con servicios de terceros como PayPal, Mailchimp y Zapier."
156
 
157
+ #. Found in faq paragraph.
158
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Gravity Forms plugin. This is useful because Gravity Forms has limited options for controlling who can access the admin screens."
159
+ msgstr "La versión Pro de PublishPress Capabilities le permite bloquear el acceso a los enlaces del menú de administración en el plugin Gravity Forms. Esto es útil porque Gravity Forms tiene opciones limitadas para controlar quién puede acceder a las pantallas de administración."
 
 
160
 
161
+ #. Found in faq paragraph.
162
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-calendar-admin-menus/\">Click here to learn about The Events Calendar menu permissions</a>."
163
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-calendar-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de The Events Calendar</a>."
 
 
164
 
165
+ #. Found in faq paragraph.
166
+ msgid "This approach works for the core The Events Calendar plugin and can also be used for add-on plugins such as Virtual Events, Events Tickets, and more."
167
+ msgstr "Este método funciona para el núcleo del plugin The Events Calendar y también puede utilizarse para extensiones como Virtual Events, Events Tickets y otros."
168
 
169
+ #. Found in faq paragraph.
170
+ msgid "It is possible to control who can access these The Events Calendar plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict The Events Calendar access for the “Editor” role. Scroll down and you can enter a red X for any The Events Calendar menu link that you don't want users in the Editor role to access. Now when an Administrator logs in to your site, they will not be able to see the Events Calendar menu links that you have blocked:"
171
+ msgstr "Es posible controlar quién puede acceder a estos enlaces del plugin The Events Calendar utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso a The Events Calendar para el perfil de «Editor». Desplázate hacia abajo y puedes introducir una X roja para cualquier enlace del menú de The Events Calendar al que no quieres que accedan los usuarios con el perfil de editor. Ahora, cuando un editor inicie sesión en tu sitio, no podrá ver los enlaces del menú de The Events Calendar bloqueados:"
 
 
172
 
173
+ #. Found in faq paragraph.
174
+ msgid "When you first install the The Events Calendar plugin, you'll see one top-level menu link, plus at least 10 sub-menus:"
175
+ msgstr "Cuando instale por primera vez el plugin The Events Calendar, verá un enlace de menú de nivel superior, además de diez submenús:"
 
 
176
 
177
+ #. Found in faq paragraph.
178
+ msgid "With The Events Calendar, you can easily create and manage an events calendar on your WordPress site. The plugin supports both in-person and virtual events. There are also many ways to extend the plugin for recurring events, ticket sales, user-submitted events and more."
179
+ msgstr "Con The Events Calendar, puedes crear y gestionar fácilmente un calendario de eventos en tu sitio de WordPress. El plugin soporta tanto eventos presenciales como virtuales. También hay muchas formas de ampliar el plugin para eventos recurrentes, venta de entradas, eventos enviados por los usuarios y mucho más."
 
180
 
181
+ #. Found in faq paragraph.
182
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in The Events Calendar plugin. This is useful because The Events Calendar has limited options for managing who can access the admin screens and important features."
183
+ msgstr "La versión Pro de PublishPress Capabilities le permite bloquear el acceso a los enlaces del menú de administración en el plugin The Events Calendar. Esto es útil porque The Events Calendar tiene opciones limitadas para controlar quién puede acceder a las pantallas de administración."
184
 
185
+ #. Found in faq paragraph.
186
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-admin-menus/\">Click here to learn about WPForms menu permissions</a>."
187
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de WPForms</a>."
188
 
189
+ #. Found in faq paragraph.
190
+ msgid "This approach works for the core WPForms plugin and can also be used for add-on plugins such as Form Abandonment, Form Locker, Offline Forms, and more."
191
+ msgstr "Este método funciona para el núcleo del plugin WPForms y también puede utilizarse para extensiones como Form Abandonment, Form Locker, Offline Forms y otros."
 
192
 
193
+ #. Found in faq paragraph.
194
+ msgid "Scroll down and you can enter a red X for any WPForms menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the WPForms menu links that you have blocked."
195
+ msgstr "Desplázate hacia abajo y podrás introducir una X roja para cualquier enlace del menú WPForms al que no quieras que accedan los usuarios con el perfil de Administrador. Ahora, cuando un administrador inicie sesión en tu sitio, no podrá ver los enlaces del menú WPForms que has bloqueado."
 
196
 
197
+ #. Found in faq paragraph.
198
+ msgid "It is possible to control who can access these WPForms plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict WPForms access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full WPForms access."
199
+ msgstr "Es posible controlar quién puede acceder a estos enlaces del plugin WPForms utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso a WPForms para el perfil de «Administrador». Si haces esto, te recomendaría hacer una copia del perfil de Administrador para que un perfil siga teniendo acceso completo a WPForms."
 
200
 
201
+ #. Found in faq paragraph.
202
+ msgid "When you first install the WPForms plugin, you'll see one top-level menu link, plus at least 10 sub-menus:"
203
+ msgstr "Cuando instale por primera vez el plugin WPForms, verá un enlace de menú de nivel superior, además de diez submenús:"
 
204
 
205
+ #. Found in faq paragraph.
206
+ msgid "WPForms is one of the most popular WordPress contact form plugin with millions of active installs. WPForms allows you to create beautiful contact forms, feedback forms, subscription forms, payment forms, and more."
207
+ msgstr "WPForms es uno de los más populares plugins de formularios de contacto de WordPress con millones de instalaciones activas. WPForms te permite crear hermosos formularios de contacto, formularios de comentarios, formularios de suscripción, formularios de pago y mucho más."
208
 
209
+ #. Found in faq paragraph.
210
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the WP Forms plugin. This is useful because WPForms has limited options for managing who can access the admin screens and important features."
211
+ msgstr "La versión Pro de PublishPress Capabilities le permite bloquear el acceso a los enlaces del menú de administración en el plugin WP Forms. Esto es útil porque WP Forms tiene opciones limitadas para controlar quién puede acceder a las pantallas de administración."
212
 
213
+ #. Found in faq paragraph.
214
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/\">Click here to learn about Jetpack permissions</a>."
215
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de Jetpack</a>."
216
 
217
+ #. Found in faq paragraph.
218
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-admin-menus/\">Click here to learn about Elementor menu permissions</a>."
219
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de Elementor</a>."
220
 
221
+ #. Found in faq paragraph.
222
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-admin-menus/\">Click here to learn about Yoast SEO menu permissions</a>."
223
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de Yoast SEO</a>."
224
 
225
+ #. Found in faq paragraph.
226
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-form-7-admin-menus/\">Click here to learn about Contact Form 7 menu permissions</a>."
227
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-form-7-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de Contact Form 7</a>."
 
 
228
 
229
+ #. Found in faq paragraph.
230
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-admin-menus/\">Click here to learn about WooCommerce menu permissions</a>."
231
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-admin-menus/\">Haz clic aquí para aprender sobre los permisos del menú de WooCommerce</a>."
232
 
233
+ #. Found in faq list item.
234
+ msgid "System Status"
235
+ msgstr "Estado del sistema"
236
 
237
+ #. Found in faq list item.
238
+ msgid "Add-ons"
239
+ msgstr "Extensiónes"
240
 
241
+ #. Found in faq list item.
242
+ msgid "Import/Export"
243
+ msgstr "Importar/Exportar"
244
 
245
+ #. Found in faq list item.
246
+ msgid "New Form"
247
+ msgstr "Nuevo formulario"
 
 
248
 
249
+ #. Found in faq list item.
250
+ msgid "Forms"
251
+ msgstr "Formularios"
252
 
253
+ #. Found in faq list item.
254
+ msgid "Event Add-Ons"
255
+ msgstr "Extensiónes para eventos"
256
 
257
+ #. Found in faq list item.
258
+ msgid "Help"
259
+ msgstr "Ayuda"
260
 
261
+ #. Found in faq list item.
262
+ msgid "Import"
263
+ msgstr "Importar"
 
 
264
 
265
+ #. Found in faq list item.
266
+ msgid "Organizers"
267
+ msgstr "Organizadores"
 
268
 
269
+ #. Found in faq list item.
270
+ msgid "Venues"
271
+ msgstr "Ubicaciones"
272
 
273
+ #. Found in faq list item.
274
+ msgid "Events Categories"
275
+ msgstr "Categorías de eventos"
 
 
276
 
277
+ #. Found in faq list item.
278
+ msgid "Tag"
279
+ msgstr "Etiqueta"
 
280
 
281
+ #. Found in faq list item.
282
+ msgid "Events"
283
+ msgstr "Eventos"
 
284
 
285
+ #. Found in faq list item.
286
+ msgid "Community"
287
+ msgstr "Comunidad"
 
288
 
289
+ #. Found in faq list item.
290
+ msgid "About Us"
291
+ msgstr "Sobre nosotros"
 
292
 
293
+ #. Found in faq list item.
294
+ msgid "SMTP"
295
+ msgstr "SMTP"
296
 
297
+ #. Found in faq list item.
298
+ msgid "Addons"
299
+ msgstr "Extensiónes"
 
 
300
 
301
+ #. Found in faq list item.
302
+ msgid "Entries"
303
+ msgstr "Registros"
304
 
305
+ #. Found in faq list item.
306
+ msgid "All Forms"
307
+ msgstr "Todos los formularios"
 
 
 
308
 
309
+ #. Found in faq header.
310
+ msgid "How Do I Control The Gravity Forms User Roles and Permissions?"
311
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de Gravity Forms?"
312
 
313
+ #. Found in faq header.
314
+ msgid "How Do I Control The Events Calendar User Roles and Permissions?"
315
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de The Events Calendar?"
316
 
317
+ #. Found in faq header.
318
+ msgid "How Do I Control WPForms User Roles and Permissions?"
319
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de WPForms?"
 
 
 
 
 
 
320
 
321
+ #. Found in faq header.
322
+ msgid "How Do I Control WooCommerce Menu Link Permissions?"
323
+ msgstr "¿Cómo puedo controlar los permisos de los enlaces del menú de WooCommerce?"
324
 
325
+ #. Found in faq paragraph.
326
+ msgid "It is possible to control who can access these Jetpack links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Jetpack access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Jetpack access. Scroll down and you can enter a red X for any Jetpack menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the Jetpack menu links that you have blocked. This approach works for the core Jetpack plugin and can also be used for add-on plugins such as Jetpack CRM and others."
327
+ msgstr "Es posible controlar quién puede acceder a estos enlaces de Jetpack utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso a Jetpack para el perfil de «Administrador». Si haces esto, te recomiendo que hagas una copia del perfil de Administrador para que un perfil siga teniendo acceso completo a Jetpack. Desplázate hacia abajo y podrás introducir una X roja en cualquier enlace del menú de Jetpack al que no quieras que accedan los usuarios con el perfil de Administrador. Ahora, cuando un administrador inicie sesión en tu sitio, no podrá ver los enlaces del menú de Jetpack que has bloqueado. Este método funciona para el núcleo del plugin de Jetpack y también se puede utilizar para extensiones como Jetpack CRM y otros."
328
 
329
+ #. Found in faq paragraph.
330
+ msgid "When you first install the Jetpack plugin, you'll see one top-level menu link, plus at least 2 sub-menus:"
331
+ msgstr "Cuando instalas por primera vez el plugin Jetpack, verás un enlace de menú de nivel superior, además de al menos 2 submenús:"
332
 
333
+ #. Found in faq paragraph.
334
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Jetpack plugin. This is useful because Jetpack has limited options for managing who can access the admin screens and important features."
335
+ msgstr "La versión Pro de PublishPress Capabilities te permite bloquear el acceso a los enlaces del menú de administración en el plugin Jetpack. Esto es útil porque Jetpack tiene opciones limitadas para gestionar quién puede acceder a las pantallas de administración y a las características importantes."
336
 
337
+ #. Found in faq paragraph.
338
+ msgid "This approach works for the core Elementor plugin and can also be used for add-on plugins such as Essential Addons, Premium Addons, and others."
339
+ msgstr "Este método funciona para el plugin principal de Elementor y también puede utilizarse para extensiones como Essential Addons, Premium Addons y otras."
340
 
341
+ #. Found in faq paragraph.
342
+ msgid "In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Elementor access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Elementor access. Scroll down and you can enter a red X for any Elementor menu link that you don't want users in the Administrator role to access."
343
+ msgstr "En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso a Elementor para el perfil de «Administrador». Si haces esto, te recomendaría hacer una copia del perfil de Administrador para que un perfil siga teniendo acceso completo a Elementor. Desplázate hacia abajo y puedes introducir una X roja para cualquier enlace del menú de Elementor al que no quieres que accedan los usuarios con el perfil de Administrador."
 
344
 
345
+ #. Found in faq paragraph.
346
+ msgid "It is possible to control who can access Elementor menu links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area."
347
+ msgstr "Es posible controlar quién puede acceder a los enlaces del menú de Elementor utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress."
348
 
349
+ #. Found in faq paragraph.
350
+ msgid "When you first install Elementor, you'll see one top-level menu link, plus at least 9 sub-menus:"
351
+ msgstr "Cuando instalas por primera vez el plugin Elementor, verás un enlace de menú de nivel superior, además de al menos 9 submenús:"
352
 
353
+ #. Found in faq paragraph.
354
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Elementor plugin. This is useful because Elementor has limited options for managing who can access the admin screens and important features."
355
+ msgstr "La versión Pro de PublishPress Capabilities te permite bloquear el acceso a los enlaces del menú de administración en el plugin Elementor. Esto es útil porque Elementor tiene opciones limitadas para gestionar quién puede acceder a las pantallas de administración y a las características importantes."
356
 
357
+ #. Found in faq paragraph.
358
+ msgid "This approach works for the core Yoast SEO plugin and can also be used for add-on plugins such as Local SEO, WooCommerce SEO, Google News, and more."
359
+ msgstr "Este método funciona para el plugin principal de Yoast SEO y también puede utilizarse para extensiones como Local SEO, WooCommerce SEO, Google News y otras."
360
 
361
+ #. Found in faq paragraph.
362
+ msgid "It is possible to control who can access these Yoast SEO links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Yoast SEO access for the “SEO Manager” role. Scroll down and you can enter a red X for any menu link that you don't want users in the SEO Manager role to access."
363
+ msgstr "Es posible controlar quién puede acceder a estos enlaces de Yoast SEO utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Por ejemplo, puedes restringir el acceso a Yoast SEO para el perfil de «Gestor SEO». Desplázate hacia abajo y puedes introducir una X roja para cualquier enlace del menú de Yoast SEO al que no quieres que accedan los usuarios con el perfil de Gestor SEO."
364
 
365
+ #. Found in faq paragraph.
366
+ msgid "When you first install Yoast SEO, you'll see one top-level menu link, plus at least 5 sub-menus:"
367
+ msgstr "Cuando instalas por primera vez el plugin Yoast SEO, verás un enlace de menú de nivel superior, además de al menos 5 submenús:"
368
 
369
+ #. Found in faq paragraph.
370
+ msgid "Yoast SEO is the most popular WordPress SEO plugin and contains everything that you need to manage your SEO. Yoast SEO is packed full of feature that help search engines to find and understand your website."
371
+ msgstr "Yoast SEO es el plugin de SEO para WordPress más popular y contiene todo lo que necesitas para gestionar tu SEO. Yoast SEO está repleto de características que ayudan a los motores de búsqueda a encontrar y entender tu sitio web."
372
 
373
+ #. Found in faq paragraph.
374
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Yoast SEO plugin. This is useful because Yoast SEO has limited options for managing who can access the admin screens and important features."
375
+ msgstr "La versión Pro de PublishPress Capabilities te permite bloquear el acceso a los enlaces del menú de administración en el plugin Yoast SEO. Esto es útil porque Yoast SEO tiene opciones limitadas para gestionar quién puede acceder a las pantallas de administración y a las características importantes."
376
 
377
+ #. Found in faq paragraph.
378
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in the Editor role to access. This approach works for the core Contact Form 7 plugin and can also be used for add-on plugins such as Flamingo which records entries for Contact Form 7 forms."
379
+ msgstr "Es posible controlar quién puede acceder a estos enlaces utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Desplázate hacia abajo y podrás introducir una X roja en cualquier enlace del menú al que no quieras que accedan los usuarios con el perfil de Editor. Este método funciona para el núcleo del plugin de Contact Form 7 y también se puede utilizar para extensiones como Flamingo, que registra las entradas de los formularios Contact Form 7."
380
 
381
+ #. Found in faq paragraph.
382
+ msgid "When you first install Contact Form 7, you'll see one top-level menu link, plus three sub-menus. All of these links are available to users in the Administrator role:"
383
+ msgstr "Cuando instalas por primera vez el plugin Contact Form 7, verás un enlace de menú de nivel superior, además de al menos 3 submenús. Todos estos enlaces están disponibles para los usuarios con perfil de administrador:"
384
 
385
+ #. Found in faq paragraph.
386
+ msgid "Contact Form 7 is the most popular contact form plugin for WordPress. You can manage multiple contact forms, and easily customize each form and the emails it sends. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, Akismet spam filtering and much more."
387
+ msgstr "Contact Form 7 es el plugin de formularios de contacto más popular para WordPress. Puedes gestionar múltiples formularios de contacto y personalizar fácilmente cada formulario y los correos electrónicos que envía. Contact Form 7 es compatible con el envío mediante Ajax, CAPTCHA, filtro de spam Akismet y mucho más."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
 
389
+ #. Found in faq paragraph.
390
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Contact Form 7 plugin. This is useful because Contact Form 7 has very limited options for controlling who can access the admin screens."
391
+ msgstr "La versión Pro de PublishPress Capabilities te permite bloquear el acceso a los enlaces del menú de administración en el plugin Contact Form 7. Esto es útil porque Contact Form 7 tiene opciones limitadas para gestionar quién puede acceder a las pantallas de administración."
392
 
393
+ #. Found in faq paragraph.
394
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. n the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in that role to access. This is a great way to customize a WooCommerce role such as Shop Manager. This approach works for the core WooCommerce plugin and can also be used for WooCommerce add-on plugins such as WooCommerce Subscriptions, WooCommerce Shipping, and WooCommerce Bookings. PublishPress Capabilities can help you manage WooCommerce permissisons."
395
+ msgstr "Es posible controlar quién puede acceder a estos enlaces utilizando el plugin PublishPress Capabilities Pro. Después de instalar PublishPress Capabilities Pro, ve a «Permisos» y luego a «Admin Menus» en tu área de administración de WordPress. En la esquina superior izquierda de esta pantalla, elige el perfil que quieres editar. Desplázate hacia abajo y podrás introducir una X roja en cualquier enlace del menú al que no quieras que accedan los usuarios con ese perfil. Esta es una muy buena manera de personalizar un perfil de WooCommerce como el de Gerente de la Tienda. Este método funciona para el núcleo del plugin de WooCommerce y también se puede utilizar para las extensiones de WooCommerce como WooCommerce Subscriptions, WooCommerce Shipping, and WooCommerce Bookings. PublishPress Capabilities puede ayudarte a gestionar los permisos de WooCommerce."
 
396
 
397
+ #. Found in faq paragraph.
398
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in WooCommerce. This is useful because WooCommerce has very limited options for controlling who can access the admin screens. When you first install WooCommerce, you'll see four top-level menu links, plus sub-menus. All of these links are available to users in the Administrator and Shop Manager roles:"
399
+ msgstr "La versión Pro de PublishPress Capabilities te permite bloquear el acceso a los enlaces del menú de administración en WooCommerce. Esto es útil porque WooCommerce tiene opciones limitadas para gestionar quién puede acceder a las pantallas de administración. Cuando instalas por primera vez el plugin WooCommerce, verás cuatro enlaces de menú de nivel superior, además de unos submenús. Todos estos enlaces están disponibles para los usuarios con perfil de administrador y gerente de la tienda:"
400
 
401
+ #. Found in faq paragraph.
402
+ msgid "In the right sidebar, you can also enable permissions for WooCommerce taxonomies. Check the boxes for Product categories, Product tags, and Product shipping classes. After you check those boxes and refresh your screen, you will see Manager, Edit, Assign and Delete options for Product categories, Product tags, and Product shipping classes."
403
+ msgstr "En la barra lateral derecha, también puedes habilitar los permisos para las taxonomías de WooCommerce. Marque las casillas de categorías de productos, etiquetas de productos y clases de envío de productos. Después de marcar esas casillas y actualizar la pantalla, verás las opciones de administrar, editar, asignar y eliminar las categorías de productos, las etiquetas de productos y las clases de envío de productos."
404
 
405
+ #. Found in faq paragraph.
406
+ msgid "The PublishPress Capabilities plugin enables you to control permissions for the WooCommerce plugin and also WooCommerce user roles. You can use this plugin as a WooCommerce user role editor. Go to the “Capabilities” link in your WordPress admin menu. In the main area of your screen will see options for WooCommerce Products, Orders and Coupons. These permissions cover editing, deleting and reading."
407
+ msgstr "El plugin PublishPress Capabilities te permite controlar los permisos del plugin WooCommerce y también los perfiles de usuario de WooCommerce. Puedes usar este plugin como un editor de perfiles de usuario de WooCommerce. Ve al enlace «Permisos» en el menú de administración de tu WordPress. En el área principal de tu pantalla verás las opciones para productos, pedidos y cupones de WooCommerce. Estos permisos cubren la edición, el borrado y la lectura."
 
 
 
 
408
 
409
+ #. Found in faq paragraph.
410
+ msgid "WooCommerce is the most popular WordPress eCommerce plugin. You can create beautiful store with themes customized to your brand and industry and you'll find 1,000's of tools and popular integrations."
411
+ msgstr "WooCommerce es el plugin de comercio electrónico más popular de WordPress. Puedes crear hermosas tiendas con temas personalizados para tu marca y tu industria y encontrarás 1.000 de herramientas e integraciones populares."
 
 
412
 
413
+ #. Found in faq list item.
414
+ msgid "Dashboard"
415
+ msgstr "Escritorio"
416
 
417
+ #. Found in faq list item.
418
+ msgid "Go Pro"
419
+ msgstr "Hazte Pro"
 
420
 
421
+ #. Found in faq list item.
422
+ msgid "Custom Icons"
423
+ msgstr "Iconos personalizados"
 
 
424
 
425
+ #. Found in faq list item.
426
+ msgid "Custom Fonts"
427
+ msgstr "Fuentes personalizadas"
428
 
429
+ #. Found in faq list item.
430
+ msgid "Get Help"
431
+ msgstr "Obtener ayuda"
 
 
432
 
433
+ #. Found in faq list item.
434
+ msgid "Getting Started"
435
+ msgstr "Primeros pasos"
 
 
436
 
437
+ #. Found in faq list item.
438
+ msgid "System Info"
439
+ msgstr "Información del sistema"
440
 
441
+ #. Found in faq list item.
442
+ msgid "Role Manager"
443
+ msgstr "Gestor de perfiles"
 
444
 
445
+ #. Found in faq list item.
446
+ msgid "Settings"
447
+ msgstr "Ajustes"
 
448
 
449
+ #. Found in faq list item.
450
+ msgid "Premium"
451
+ msgstr "Premium"
452
 
453
+ #. Found in faq list item.
454
+ msgid "Tools"
455
+ msgstr "Herramientas"
456
 
457
+ #. Found in faq list item.
458
+ msgid "Social"
459
+ msgstr "Social"
460
 
461
+ #. Found in faq list item.
462
+ msgid "Search Appearance"
463
+ msgstr "Apariencia en el buscador"
 
464
 
465
+ #. Found in faq list item.
466
+ msgid "General"
467
+ msgstr "General"
468
 
469
+ #. Found in faq list item.
470
+ msgid "Integration"
471
+ msgstr "Integración"
 
472
 
473
+ #. Found in faq list item.
474
+ msgid "Add New"
475
+ msgstr "Añadir nueva"
476
 
477
+ #. Found in faq list item.
478
+ msgid "Contact Forms"
479
+ msgstr "Formularios de contacto"
 
480
 
481
+ #. Found in faq list item.
482
+ msgid "Marketing"
483
+ msgstr "Marketing"
484
 
485
+ #. Found in faq list item.
486
+ msgid "Analytics"
487
+ msgstr "Analytics"
488
 
489
+ #. Found in faq list item.
490
+ msgid "Products"
491
+ msgstr "Productos"
 
 
 
 
492
 
493
+ #. Found in faq list item.
494
+ msgid "WooCommerce"
495
+ msgstr "WooCommerce"
 
 
 
496
 
497
+ #. Found in faq header.
498
+ msgid "How Do I Control Jetpack User Roles and Permissions?"
499
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de Jetpack?"
500
 
501
+ #. Found in faq header.
502
+ msgid "How Do I Control Elementor User Roles and Permissions?"
503
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de Elementor?"
504
 
505
+ #. Found in faq header.
506
+ msgid "How Do I Control Yoast SEO User Roles and Permissions?"
507
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de Yoast SEO?"
 
 
 
 
 
508
 
509
+ #. Found in faq header.
510
+ msgid "How Do I Control Contact Form 7 Permissions?"
511
+ msgstr "¿Cómo puedo controlar los perfiles y permisos de los usuarios de Contact Form 7?"
512
 
513
+ #. Found in faq paragraph.
514
+ msgid "Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, Calabilities."
515
+ msgstr "Las erratas más comunes e incorrectas son Capabilitise, Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, Calabilities."
 
516
 
517
+ #. Found in faq paragraph.
518
+ msgid "PublishPress is the official brandname. When writing about this user role editor plugin, please make sure to uppercase the Ps."
519
+ msgstr "PublishPress es la marca oficial. Cuando escribas sobre este plugin de edición de perfiles de usuario, por favor, asegúrate de poner las letras P en mayúsculas."
520
 
521
+ #. Found in faq paragraph.
522
+ msgid "Here's another comparison:"
523
+ msgstr "Aquí tienes otra comparación:"
524
 
525
+ #. Found in faq paragraph.
526
+ msgid "Here's an contrasting example when it comes to Post:"
527
+ msgstr "Aquí hay un ejemplo contrastado cuando se trata de Publicar:"
 
528
 
529
+ #. Found in faq paragraph.
530
+ msgid "OK, that's maybe too simple, so here's more detail:"
531
+ msgstr "OK, eso puede ser demasiado simple, así que aquí tienes más detalles:"
 
532
 
533
+ #. Found in faq paragraph.
534
+ msgid "We provide two plugins that allow you to control who can access what on your WordPress site. This is simple way to understand the difference:"
535
+ msgstr "Ofrecemos dos plugins que te permiten controlar quién puede acceder a qué en tu sitio de WordPress. Esta es una forma sencilla de entender la diferencia:"
 
 
536
 
537
+ #. Found in faq paragraph.
538
+ msgid "If you want to proceed, click the “Reset to WordPress defaults” link. PublishPress Capabilities will ask you if you're really sure you want to do this. Click “OK” to continue. Once the process is complete, you'll see the message, “Roles and Capabilities reset to WordPress defaults”."
539
+ msgstr "Si quieres continuar, haz clic en el enlace «Restablecer los valores por defecto de WordPress». PublishPress Capabilities te preguntará si estás realmente seguro de querer hacerlo. Haz clic en «Aceptar» para continuar. Una vez completado el proceso, aparecerá el mensaje «Perfiles y permisos restablecidos a los valores por defecto de WordPress»."
540
 
541
+ #. Found in faq paragraph.
542
+ msgid "“WARNING: This will delete and/or modify stored role definitions. If you have installed any plugin that adds new roles or capabilities, these will be lost. It is recommended to use this only as a last resort!”"
543
+ msgstr "» Advertencia: esto borrará y/o modificará las definiciones de los perfiles almacenados. Si has instalado algún plugin que añada nuevos perfiles o permisos, estos se perderán. Recomendamos usar esto sólo como último recurso»."
544
 
545
+ #. Found in faq paragraph.
546
+ msgid "If you really need to clean up and refresh your site, PublishPress Capabilities does allow you to restore the default WordPress permissions. Go to Capabilities &gt; Backup and dlick the “Reset Roles” tab. Before you take next step, make sure to read this warning:"
547
+ msgstr "Si realmente necesitas limpiar y refrescar tu sitio, PublishPress Capabilities te permite restaurar los permisos por defecto de WordPress. Ve a permisos &gt; Copia de seguridad y haz clic en la pestaña «Restablecer perfiles». Antes de dar el siguiente paso, asegúrate de leer esta advertencia:"
 
548
 
549
+ #. Found in faq paragraph.
550
+ msgid "Whenever you choose a backup, the plugin will show all the permissions in that backup. Important changes in permissions are highlighted:"
551
+ msgstr "Cada vez que eliges una copia de seguridad, el plugin mostrará todos los permisos de esa copia de seguridad. Los cambios importantes en los permisos se resaltan:"
552
 
553
+ #. Found in faq paragraph.
554
+ msgid "Click the yellow “Restore Selected Roles” button and you'll be able to roll back to a previous version."
555
+ msgstr "Haz clic en el botón amarillo «Restaurar los perfiles seleccionados» y podrás volver a una versión anterior."
556
 
557
+ #. Found in faq paragraph.
558
+ msgid "Every time you change your permissions, the PublishPress Capabilities plugin will automatically create a backup. If you make a mistake, go to the “Backup” menu link and click the “Restore” tab. Here you can browse through the most recent 20 automatic backups. The plugin also saves a backup from you first installed PublishPress Capabilities. And you can click the “Backup” tab to manually create backups."
559
+ msgstr "Cada vez que cambias tus permisos, el plugin PublishPress Capabilities creará automáticamente una copia de seguridad. Si te equivocas, ve al enlace del menú «Copia de seguridad» y haz clic en la pestaña «Restaurar». Aquí puedes navegar por las 20 copias de seguridad automáticas más recientes. El plugin también guarda una copia de seguridad desde la primera vez que instalaste PublishPress Capabilities. Y puedes hacer clic en la pestaña «Copia de seguridad» para crear copias de seguridad manualmente."
560
 
561
+ #. Found in faq paragraph.
562
+ msgid "Changing permissions in WordPress can be a tricky task. It's possible to lock yourself or others out of some important features. So, we've built a way to keep your site safe."
563
+ msgstr "Cambiar los permisos en WordPress puede ser una tarea complicada. Es posible que te bloquees a ti mismo o a otros fuera de algunas características importantes. Por eso, hemos creado una forma de mantener tu sitio seguro."
564
 
565
+ #. Found in faq paragraph.
566
+ msgid "PublishPress Capabilities is a user role editor that offers you the ability to backup and restore your WordPress user permissions. This feature is very helpful if you want to test out changes on your site, or you've installed a new plugin that has changed your site's permissions."
567
+ msgstr "PublishPress Capabilities es un editor de perfiles de usuario que te ofrece la posibilidad de hacer una copia de seguridad y restaurar tus permisos de usuario de WordPress. Esta función es muy útil si deseas probar los cambios en tu sitio, o si has instalado un nuevo plugin que ha cambiado los permisos de tu sitio."
 
 
 
 
568
 
569
+ #. Found in faq list item.
570
+ msgid "publish press cpabilities (incorrect)"
571
+ msgstr "publish press cpabilities (incorrecto)"
 
 
 
572
 
573
+ #. Found in faq list item.
574
+ msgid "publishpress capabilities (incorrect)"
575
+ msgstr "publishpress capabilities (incorrecto)"
576
 
577
+ #. Found in faq list item.
578
+ msgid "Publish Press Capabilities (incorrect)"
579
+ msgstr "Publish Press Capabilities (incorrecto)"
580
 
581
+ #. Found in faq list item.
582
+ msgid "PublishPress Capabilities (correct)"
583
+ msgstr "PublishPress Capabilities (correcto)"
584
 
585
+ #. Found in faq list item.
586
+ msgid "PublishPress Permissions allows you to control who can read Pages with a specific Status, Category or Tag, or even Pages with a particular parent Page."
587
+ msgstr "PublishPress Permissions permite controlar quién puede leer las páginas con un estado, una categoría o una etiqueta específicos, o incluso las páginas con una página principal específica."
588
 
589
+ #. Found in faq list item.
590
+ msgid "PublishPress Capabilities allows you to control who can read all your Pages."
591
+ msgstr "PublishPress Capabilities te permite controlar quién puede leer todas tus páginas."
592
 
593
+ #. Found in faq list item.
594
+ msgid "PublishPress Permissions allows you to control who can publish Posts with a particular Status, Category or Tag, or even Posts without a specific Category or Tag."
595
+ msgstr "PublishPress Permissions te permite controlar quién puede publicar entradas con un estado, una categoría o una etiqueta específicos, o incluso entradas sin una categoría o una etiqueta específicas."
596
 
597
+ #. Found in faq list item.
598
+ msgid "PublishPress Capabilities allows you to control who can publish all your Posts."
599
+ msgstr "PublishPress Capabilities te permite controlar quién puede publicar todas tus entradas."
 
600
 
601
+ #. Found in faq list item.
602
+ msgid "PublishPress Permissions allows you to customize advanced permissions that go far beyond the scope of the WordPress core."
603
+ msgstr "PublishPress Permissions le permite personalizar los permisos avanzados que van más allá del alcance del núcleo de WordPress."
 
 
604
 
605
+ #. Found in faq list item.
606
+ msgid "PublishPress Permissions allows you to customize the default WordPress permissions."
607
+ msgstr "PublishPress Permissions le permite personalizar los permisos por defecto de WordPress."
 
608
 
609
+ #. Found in faq list item.
610
+ msgid "PublishPress Permissions: Advanced."
611
+ msgstr "PublishPress Permissions: avanzado."
612
 
613
+ #. Found in faq list item.
614
+ msgid "PublishPress Capabilities: Easy."
615
+ msgstr "PublishPress Capabilities: fácil."
616
 
617
+ #. Found in faq list item.
618
+ msgid "A stuck-through capability is set in the current role, but not the role backup."
619
+ msgstr "Se ha establecido un permiso de bloqueo en el perfil actual, pero no en la copia de seguridad del perfil."
620
 
621
+ #. Found in faq list item.
622
+ msgid "A green capability is set in the role backup, but not the current role."
623
+ msgstr "Se ha establecido un permiso verde en la copia de seguridad del perfil, pero no en el perfil actual."
624
 
625
+ #. Found in faq list item.
626
+ msgid "A green role title means the role does not exist in your current set. "
627
+ msgstr "Un título de perfil verde significa que el perfil no existe en el conjunto actual. "
 
628
 
629
+ #. Found in faq header.
630
+ msgid "What's the correct way to spell PublishPress Capabilities?"
631
+ msgstr "¿Cuál es la forma correcta de escribir PublishPress Capabilities?"
632
 
633
+ #. Found in faq header.
634
+ msgid "What’s the Difference Between PublishPress Capabilities and PublishPress Permissions?"
635
+ msgstr "¿Cuál es la diferencia entre PublishPress Capabilities y PublishPress Permissions?"
636
 
637
+ #. Found in faq header.
638
+ msgid "How Do I Restore Permissions to the WordPress Defaults?"
639
+ msgstr "¿Cómo puedo restaurar los permisos a los valores por defecto de WordPress?"
 
 
640
 
641
+ #. Found in faq header.
642
+ msgid "How do I Backup and Restore WordPress User Permissions?"
643
+ msgstr "¿Cómo puedo hacer una copia de seguridad y restaurar los permisos de usuario de WordPress?"
644
 
645
+ #. Found in description paragraph.
646
+ msgid "PublishPress Capabilities gives you detailed control over all the permission levelsss on your WordPress site. You can edit user roles on your site, from Administrator and Editor to Contributor and Subscriber."
647
+ msgstr "PublishPress Capabilities te permite un control detallado de todos los niveles de permisos en tu sitio de WordPress. Puedes editar los perfiles de los usuarios en tu sitio, desde administrador y editor hasta colaborador y suscriptor."
648
 
649
+ #. Found in description paragraph.
650
+ msgid "The Pro version of PublishPress Capabilities enables you to stop users from accessing any admin menu link and any frontend menu link."
651
+ msgstr "La versión Pro de PublishPress Capabilities te permite impedir que los usuarios accedan a cualquier enlace del menú de administración y a cualquier enlace del menú de la vista pública."
652
 
653
+ #. Found in description header.
654
+ msgid "10. WordPress Admin Menu Restrictions (Pro version)"
655
+ msgstr "10. Restricciones del menú de administración de WordPress (versión Pro)"
 
656
 
657
+ #. Found in description header.
658
+ msgid "8. Create New User Roles or Copy User Roles"
659
+ msgstr "8. Crear nuevos perfiles de usuario o copiar perfiles de usuario"
 
660
 
661
+ #. Found in description header.
662
+ msgid "5. Hide Gutenberg and Classic Editor Features"
663
+ msgstr "5. Ocultar las funciones de Gutenberg y del editor clásico"
 
 
 
664
 
665
+ #. Found in description header.
666
+ msgid "3. Capabilities for any WordPress Taxonomy"
667
+ msgstr "3. Capacidades para cualquier taxonomía de WordPress"
 
 
 
668
 
669
+ #. Found in description header.
670
+ msgid "1. WordPress User Role Editor"
671
+ msgstr "1. Editor de perfiles de usuario de WordPress"
 
 
 
 
672
 
673
+ #. Found in description paragraph.
674
+ msgid "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Click here to learn about hiding editor features</a>."
675
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Haz clic aquí para conocer cómo ocultar las características del editor</a>."
 
 
 
676
 
677
+ #. Found in description paragraph.
678
+ msgid "PublishPress Capabilities has an option called \"Editor Features\" allows you to clean up the post editing screen. You can decide what users see when they're writing posts. You can hide anything on the Gutenberg or Classic Editor screens. You can hide boxes inside the sidebadd such Tags, Categories, or Excerpt. You can the \"Publish\" button. You can even hide the post title, body, or permalink. This is a great alternative to plugins such as Adminimize."
679
+ msgstr "PublishPress Capabilities tiene una opción llamada «Editor Features» que te permite limpiar la pantalla de edición de entradas. Puedes decidir lo que los usuarios ven cuando están escribiendo las entradas. Puedes ocultar cualquier cosa en las pantallas del Editor Gutenberg o Clásico. Puedes ocultar las casillas dentro de la barra lateral como etiquetas, categorías o extracto. Puedes ocultar el botón «Publicar». Incluso puedes ocultar el título del post, el cuerpo o el enlace permanente. Esta es una excelente alternativa a plugins como Adminimize."
 
 
 
 
680
 
681
+ #. Found in description paragraph.
682
+ msgid "You can use PublishPress Capabilities to clean up the post editing screen. You can decide what authors see when they're writing posts. You can <strong>hide any features on the Gutenberg or Classic Editor screens</strong>."
683
+ msgstr "Puedes usar PublishPress Capabilities para limpiar la pantalla de edición de las entradas. Puedes decidir qué ven los autores cuando escriben las publicaciones. Puedes <strong>ocultar cualquier característica en las pantallas de Gutenberg o del editor clásico</strong>."
684
 
685
+ #. Found in description list item.
686
+ msgid "<strong>Hide editor features</strong>: Decide what users see when they're writing posts in Gutenberg or the Classic Editor."
687
+ msgstr "<strong>Ocultar características del editor</strong>: decide qué ven los usuarios cuando escriben entradas en Gutenberg o en el editor clásico."
688
 
689
+ #. Found in description list item.
690
+ msgid "<strong>Multisite support</strong>: Manage permissions on a single site or across your whole network."
691
+ msgstr "<Compatibilidad con multisitio>: gestiona los permisos en un solo sitio o en toda tu red."
692
 
693
+ #. Found in description list item.
694
+ msgid "<strong>WooCommerce permissions</strong>: Control access to WooCommerce products, orders, coupons and more."
695
+ msgstr "<strong>Permisos de WooCommerce</strong>: controla el acceso a los productos de WooCommerce, los pedidos, los cupones y mucho más."
 
696
 
697
+ #. Found in description list item.
698
+ msgid "<strong>Media library permissions</strong>: Decide who can upload, edit and delete files."
699
+ msgstr "<strong>Permisos de la biblioteca de medios</strong>: decide quién puede subir, editar y eliminar archivos."
700
 
701
+ #. Found in description list item.
702
+ msgid "<strong>Admin menus (Pro version)</strong>: Stop users from accessing any admin menu link."
703
+ msgstr "<strong>Menús de administración (versión Pro)</strong>: impide que los usuarios accedan a cualquier enlace del menú de administración."
704
 
705
+ #. Found in description list item.
706
+ msgid "<strong>Frontend menus (Pro version)</strong>: Stop users from accessing any frontend menu link."
707
+ msgstr "<strong>Menús de la portada (versión Pro)</strong>: impide que los usuarios accedan a cualquier enlace del menú de la portada."
708
 
709
+ #. Found in description list item.
710
+ msgid "<strong>Create or copy user roles</strong>: Add new roles, or clone existing roles."
711
+ msgstr "<strong>Crear o copiar perfiles de usuario</strong>: añade nuevos perfiles o clona los existentes."
712
 
713
+ #. Found in description list item.
714
+ msgid "<strong>Safe backups</strong>: Every time you change your permissions, PublishPress Capabilities saves a backup."
715
+ msgstr "<strong>Copias de seguridad</strong>: cada vez que cambias tus permisos, PublishPress Capabilities guarda una copia de seguridad."
716
 
717
+ #. Found in description list item.
718
+ msgid "<strong>Works for all taxonomies</strong>: Choose who can Manage, Edit and Assign terms in any taxonomy."
719
+ msgstr "<strong>Funciona para todas las taxonomías</strong>: elige quién puede gestionar, editar y asignar términos en cualquier taxonomía."
 
 
720
 
721
+ #. Found in description list item.
722
+ msgid "<strong>Works for all post types</strong>: Choose who can Publish, Read, Edit and Delete content for any post type."
723
+ msgstr "<strong>Funciona para todos los tipos de contenido</strong>: elige quién puede publicar, leer, editar y eliminar contenido para cualquier tipo de contenido."
724
 
725
+ #. Found in description list item.
726
+ msgid "<strong>User role editor</strong>: You can change the capabilities for any role."
727
+ msgstr "<strong>Editor de perfiles de usuario</strong>: puede cambiar las capacidades de cualquier perfil."
728
 
729
+ #. Found in description header.
730
+ msgid "9. Frontend Menu Restrictions (Pro version)"
731
+ msgstr "9. Restricciones del menú de la portada (versión Pro)"
 
732
 
733
+ #. Found in description header.
734
+ msgid "The Key Features of PublishPress Capabilities"
735
+ msgstr "Las principales características de PublishPress Capabilities"
 
 
736
 
737
+ #. Found in description paragraph.
738
+ msgid "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click here to learn about multisite permissions</a>."
739
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\" >Haz clic aquí para saber más sobre los permisos del multisitio</a>."
740
 
741
+ #. Found in description paragraph.
742
+ msgid "PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network."
743
+ msgstr "PublishPress Capabilities te permite controlar los permisos en un solo sitio o en toda tu red. Cada vez que actualices los permisos en PublishPress Capabilities, puedes elegir sincronizar esos cambios en toda tu red multisitio."
 
744
 
745
+ #. Found in description paragraph.
746
+ msgid "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/\">Click here to learn about WooCommerce permissions</a>."
747
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/\">Haz clic aquí para saber más sobre los permisos de WooCommerce</a>."
748
 
749
+ #. Found in description paragraph.
750
+ msgid "We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons."
751
+ msgstr "Hemos mencionado anteriormente que PublishPress Capabilities tiene un compatibilidad especial con las taxonomías de WooCommerce. Esto es cierto para el resto de WooCommerce también. Con PublishPress Capabilities puedes controlar los permisos de los productos, pedidos y cupones de WooCommerce."
 
752
 
753
+ #. Found in description paragraph.
754
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-media-library-access/\">Click here to learn about Media Library permissions</a>."
755
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-media-library-access/\">Haz clic aquí para aprender sobre los permisos de la biblioteca de medios</a>."
756
 
757
+ #. Found in description paragraph.
758
+ msgid "PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box."
759
+ msgstr "PublishPress Capabilities te permite decidir quién puede subir, editar y eliminar archivos de la biblioteca de medios de tu sitio. Por defecto, sólo los administradores pueden eliminar archivos de tu biblioteca de medios. Los suscriptores y colaboradores no pueden ni siquiera subir archivos. Puedes personalizar estos permisos para la biblioteca de medios y también para la caja de imágenes destacadas."
760
 
761
+ #. Found in description paragraph.
762
+ msgid "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Click to see how to block Admin menu access</a>."
763
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Haz clic para ver cómo bloquear el acceso al menú de administración</a>."
764
 
765
+ #. Found in description paragraph.
766
+ msgid "With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens."
767
+ msgstr "Con PublishPress Capabilities puedes restringir el acceso a las pantallas del menú de administración por perfiles de usuario. Esto es útil porque muchos plugins no tienen ninguna manera de controlar quién puede acceder a las pantallas de administración."
768
 
769
+ #. Found in description paragraph.
770
+ msgid "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Click to see how to block frontend menu access</a>."
771
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Haz clic para ver cómo bloquear el acceso al menú de la vista pública</a>."
772
 
773
+ #. Found in description paragraph.
774
+ msgid "PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links."
775
+ msgstr "PublishPress Capabilities te permite restringir el acceso a los menús de navegación por perfiles, usuarios conectados y desconectados. Esto es útil porque un sitio de WordPress por defecto no te da forma de controlar la visibilidad de tus enlaces."
776
 
777
+ #. Found in description paragraph.
778
+ msgid "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/\">Click here to see how to create or copy user roles</a>."
779
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/\">Haz clic aquí para ver cómo crear o copiar perfiles de usuario</a>."
780
 
781
+ #. Found in description paragraph.
782
+ msgid "With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network."
783
+ msgstr "Con PublishPress Capabilities puedes crear o copiar cualquier perfil de usuario de WordPress existente. Estos perfiles se pueden personalizar exactamente igual que los perfiles por defecto de WordPress. Estos nuevos perfiles pueden añadirse a sitios individuales o a toda una red multisitio."
784
 
785
+ #. Found in description paragraph.
786
+ msgid "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/\">Click here to see how to backup permissions</a>."
787
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/\">Haz clic aquí para ver cómo hacer una copia de seguridad de los permisos</a>."
788
 
789
+ #. Found in description paragraph.
790
+ msgid "Every time you change your permissions, the PublishPress Capabilities plugin will now automatically create a backup. If you make a mistake, go to the \"Backup\" menu link and you'll be able to roll back to a previous version."
791
+ msgstr "Cada vez que cambias tus permisos, el plugin PublishPress Capabilities ahora creará automáticamente una copia de seguridad. Si cometes un error, ve al enlace del menú «Copia de seguridad» y podrás volver a una versión anterior."
792
 
793
+ #. Found in description paragraph.
794
+ msgid "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/\">Click here to learn about taxonomy permissions</a>."
795
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/\">Haz clic aquí para aprender sobre los permisos de taxonomía</a>."
796
 
797
+ #. Found in description paragraph.
798
+ msgid "PublishPress Capabilities enables you to add extra permissions to the taxonomies on your site. This feature includes the default Categories and Tags, but also applies to other taxonomies. For example, in WooCommerce you can apply custom permissions to Product categories, Product tags, and Product shipping classes. You can enforce and assign \"Manage\", \"Edit\" and \"Assign\" distinct capabilities for all your taxonomies."
799
+ msgstr "PublishPress Capabilities te permite añadir permisos adicionales a las taxonomías de tu sitio. Esta característica incluye las categorías y etiquetas por defecto, pero también se aplica a otras taxonomías. Por ejemplo, en WooCommerce puede aplicar permisos personalizados a las categorías de productos, etiquetas de productos y clases de envío de productos. Puedes aplicar y asignar capacidades distintas de «Gestionar», «Editar» y «Asignar» para todas tus taxonomías."
800
+
801
+ #. Found in description paragraph.
802
+ msgid "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-capability/\">Click here to see how to control post type permissions</a>."
803
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-capability/\">Haz clic aquí para ver cómo controlar los permisos del tipo de contenido</a>."
804
+
805
+ #. Found in description paragraph.
806
+ msgid "Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type."
807
+ msgstr "Muchos usuarios de WordPress tienen sitios con tipos de contenido personalizados. Esto puede hacerse utilizando código personalizado, un tema o con un plugin. Independientemente de cómo haya sido creado tu tipo de contenido, PublishPress Capabilities te permite establecer y asignar distintas capacidades para tu tipo de contenido."
808
+
809
+ #. Found in description paragraph.
810
+ msgid "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Click here for your quick start guide to PublishPress Capabilities</a>."
811
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Haz clic aquí para ver la guía de inicio rápido de PublishPress Capabilities</a>."
812
+
813
+ #. Found in description paragraph.
814
+ msgid "With the Capabilities plugin, you can choose who can Publish, Read, Edit and Delete content. You can choose permissions for posts, pages, custom content types, categories, tags, and more."
815
+ msgstr "Con el plugin Capabilities, puedes elegir quién puede publicar, leer, editar y eliminar contenido. Puedes elegir los permisos para las entradas, las páginas, los tipos de contenido personalizados, las categorías, las etiquetas y mucho más."
816
+
817
+ #. Found in description paragraph.
818
+ msgid "You can <strong>customize all your WordPress user roles</strong>, from Administrators and Editors to Authors, Contributors, Subscribers and custom roles. Each use role can have the exact permissions that your site needs."
819
+ msgstr "Puedes <strong>personalizar todos tus perfiles de usuario de WordPress</strong>, desde administradores y editores hasta autores, colaboradores, suscriptores y perfiles personalizados. Cada perfil de usuario puede tener los permisos exactos que tu sitio necesita."
820
+
821
+ #. Found in description paragraph.
822
+ msgid "<a href=\"https://publishpress.com/capabilities/\">PublishPress Capabilities</a> gives you control over all the permissions on your WordPress site. We built this user role editor plugin so you have an EASY and POWERFUL way to manage users."
823
+ msgstr "<a href=\"https://publishpress.com/capabilities/\">PublishPress Capabilities</a> te da el control sobre todos los permisos en tu sitio de WordPress. Hemos creado este plugin de edición de perfiles de usuario para que tengas una forma fácil y potente de gestionar los usuarios."
824
+
825
+ #. Found in description paragraph.
826
+ msgid "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom\">Twitter</a> and <a href=\"https://www.youtube.com/publishpress\">YouTube</a>."
827
+ msgstr "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom\">Twitter</a> y <a href=\"https://www.youtube.com/publishpress\">YouTube</a>."
828
+
829
+ #. Found in description paragraph.
830
+ msgid "Bug reports for PublishPress Capabilities are welcomed in our <a href=\"https://github.com/publishpress/publishpress-capabilities\">repository on GitHub</a>. Please note that GitHub is not a support forum, and that issues that aren't properly qualified as bugs will be closed."
831
+ msgstr "Los informes de errores para PublishPress Capabilities son bienvenidos en nuestro <a href=\"https://github.com/publishpress/publishpress-capabilities\">repositorio en GitHub</a>. Por favor, ten en cuenta que GitHub no es un foro de soporte, y que los problemas que no estén debidamente calificados como fallos serán cerrados."
832
+
833
+ #. Found in description paragraph.
834
+ msgid "Together, these plugins are a suite of powerful publishing tools for WordPress. If you need to create a professional workflow in WordPress, with moderation, revisions, permissions and more... then you should try PublishPress."
835
+ msgstr "Juntos, estos plugins son un conjunto de potentes herramientas de publicación para WordPress. Si necesitas crear un flujo de trabajo profesional en WordPress, con moderación, revisiones, permisos y más... entonces debes probar PublishPress."
836
+
837
+ #. Found in description paragraph.
838
+ msgid "Join PublishPress and you'll get access to these Pro plugins:"
839
+ msgstr "Suscríbete a PublishPress y tendrás acceso a estos plugins Pro:"
840
+
841
+ #. Found in description paragraph.
842
+ msgid "The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. <a href=\"https://publishpress.com/pricing/\">Click here to join PublishPress</a>."
843
+ msgstr "Las versiones Pro de los plugins de PublishPress bien valen tu inversión. Las versiones Pro tienen características extra y un soporte más rápido. <a href=\"https://publishpress.com/pricing/\">Haz clic aquí para inscribirte en PublishPress</a>."
844
+
845
+ #. Found in description paragraph.
846
+ msgid "PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions."
847
+ msgstr "PublishPress Capabilities te ofrece la posibilidad de hacer una copia de seguridad y restaurar tus permisos. Esta función es muy útil si quieres probar los cambios en tu sitio, o si has instalado un nuevo plugin que ha cambiado los permisos de tu sitio."
848
+
849
+ #. Found in description paragraph.
850
+ msgid "PublishPress Capabilities is <strong>safe to use</strong>. Every time you change your site's permissions, this plugin will take a backup that you can restore if anything goes wrong. You can use these backups to migrate your roles and permissions from one site to another."
851
+ msgstr "PublishPress Capabilities es <strong>seguro de usar</strong>. Cada vez que cambias los permisos de tu sitio, este plugin hará una copia de seguridad que podrás restaurar si algo va mal. Puedes utilizar estas copias de seguridad para migrar tus perfiles y permisos de un sitio a otro."
852
+
853
+ #. Found in description list item.
854
+ msgid "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</a> allows you to update your published pages with teamwork and precision."
855
+ msgstr "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</a> te permite actualizar tus páginas publicadas con trabajo en equipo y precisión."
856
+
857
+ #. Found in description list item.
858
+ msgid "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> is the plugin for managing and scheduling WordPress content."
859
+ msgstr "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> es el plugin para gestionar y programar el contenido de WordPress."
860
+
861
+ #. Found in description list item.
862
+ msgid "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions Pro</a> is the plugin for advanced WordPress permissions."
863
+ msgstr "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions Pro</a> es el plugin para los permisos avanzados de WordPress."
864
+
865
+ #. Found in description list item.
866
+ msgid "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</a> enables you to define tasks that must be completed before content is published."
867
+ msgstr "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</a> te permite definir las tareas que deben completarse antes de publicar el contenido."
868
+
869
+ #. Found in description list item.
870
+ msgid "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities Pro</a> is the plugin to manage your WordPress user roles, permissions, and capabilities."
871
+ msgstr "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities Pro</a> es el plugin para gestionar los perfiles, permisos y capacidades de tus usuarios de WordPress."
872
+
873
+ #. Found in description list item.
874
+ msgid "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> allows you to add multiple authors and guest authors to WordPress posts."
875
+ msgstr "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> te permite añadir múltiples autores y autores invitados a las entradas de WordPress."
876
+
877
+ #. Found in description header.
878
+ msgid "Follow the PublishPress team"
879
+ msgstr "Sigue al equipo de PublishPress"
880
+
881
+ #. Found in description header.
882
+ msgid "Bug Reports"
883
+ msgstr "Informes de fallos"
884
+
885
+ #. Found in description header.
886
+ msgid "Join PublishPress and get the Pro plugins"
887
+ msgstr "Suscríbete a PublishPress y obtén los plugins Pro"
888
+
889
+ #. Found in description header.
890
+ msgid "13. WordPress Multisite support"
891
+ msgstr "13. Compatibilidad con WordPress multisitio"
892
+
893
+ #. Found in description header.
894
+ msgid "12. Support for WooCommerce Permissions"
895
+ msgstr "12. Compatibilidad con los permisos de WooCommerce"
896
+
897
+ #. Found in description header.
898
+ msgid "11. Support for Media Library Permissions"
899
+ msgstr "11. Compatibilidad con los permisos de la biblioteca de medios"
900
+
901
+ #. Found in description header.
902
+ msgid "7. Backup and Restore User Roles and Capabilities"
903
+ msgstr "7. Copia de seguridad y restauración de los perfiles y capacidades de los usuarios"
904
+
905
+ #. Found in description header.
906
+ msgid "2. Capabilities for any Post Type"
907
+ msgstr "2. Capacidades para cualquier tipo de contenido"
908
+
909
+ #. Found in changelog list item.
910
+ msgid "Feature : New \"Admin Features\" screen #200"
911
+ msgstr "Característica: nueva pantalla «Admin Features» #200"
912
+
913
+ #. Found in changelog list item.
914
+ msgid "Change : Role Capabilities screen uses tabs"
915
+ msgstr "Cambio: la pantalla de capacidades de los perfiles utiliza pestañas"
916
+
917
+ #. Found in changelog list item.
918
+ msgid "Fixed : Some security scans flagged an unused file in external library \"chosen\". That file (and other developer documentation files) has been removed"
919
+ msgstr "Corregido: algunos escaneos de seguridad marcaban un archivo no utilizado en la biblioteca externa «chosen». Ese archivo (y otros archivos de documentación para desarrolladores) ha sido eliminado"
920
+
921
+ #. Found in changelog list item.
922
+ msgid "Perf : Sync role to all sites - Operation timed out on networks with ~100 sites "
923
+ msgstr "Rendimiento: sincronizar el perfil a todos los sitios - La operación se ha agotado en redes con ~100 sitios "
924
+
925
+ #. Found in changelog list item.
926
+ msgid "Feature : Retain last role selection for Capabilities, Editor Features screens"
927
+ msgstr "Característica: mantener la última selección de perfil para las pantallas capacidades, características del editor"
928
+
929
+ #. Found in changelog list item.
930
+ msgid "Fixed : PHP Warning if a role is stored without a valid capabilities array"
931
+ msgstr "Corregido: PHP Warning si se almacena un perfil sin una matriz de capacidades válida"
932
+
933
+ #. Found in changelog list item.
934
+ msgid "Fixed : If Media \"Create\" capability is negated or un-negated, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure "
935
+ msgstr "Corregido: si la capacidad «Crear» de los medios está negada o no, la casilla correspondiente de `upload_files` (en la sección de otras capacidades del núcleo de WP) no está activada, lo que lleva a un aparente fallo de actualización "
936
+
937
+ #. Found in changelog list item.
938
+ msgid "Fixed : If Media \"Create\" capability is selected / unselected by clicking Media caption or Create caption, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure"
939
+ msgstr "Corregido: si se selecciona/deselecciona la capacidad «Crear» de los medios de comunicación haciendo clic en el título de los medios de comunicación o en el título de la creación, la casilla de verificación `upload_files` correspondiente (en la sección de otras capacidades del núcleo de WP) no se activa, lo que lleva a un aparente fallo de actualización"
940
+
941
+ #. Found in changelog list item.
942
+ msgid "Feature : Editor Features restriction (new screen to block editor elements per-role)"
943
+ msgstr "Característica: restricción de las características del editor (nueva pantalla para bloquear los elementos del editor por perfil)"
944
+
945
+ #. Found in changelog list item.
946
+ msgid "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row actions"
947
+ msgstr "Cambio: Permissions - Ocultar/Desocultar la configuración de los perfiles se ha movido a las acciones de la fila de la pantalla de los perfiles"
948
+
949
+ #. Found in changelog list item.
950
+ msgid "Compat : PublishPress - Authors without publish capability could directly publish on the Calendar screen"
951
+ msgstr "Compatibilidad: PublishPress - Los autores sin capacidad de publicación podrían publicar directamente en la pantalla del Calendario"
952
+
953
+ #. Found in changelog list item.
954
+ msgid "Fixed : Add New User - couldn't display password entry"
955
+ msgstr "Corregido: añadir nuevo usuario - no podía mostrar la entrada de la contraseña"
956
+
957
+ #. Found in changelog list item.
958
+ msgid "Fixed : Fatal error on Capabilities screen if another plugin calls get_editable_roles() too early"
959
+ msgstr "Corregido: error fatal en la pantalla de capabilidades si otro plugin llama a `get_editable_roles()` demasiado pronto"
960
+
961
+ #. Found in changelog list item.
962
+ msgid "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID is not 1"
963
+ msgstr "Corregido: multisitio - «sincronizar el perfil a todos los sitios» no funcionaba si el ID del sitio principal no es 1"
964
+
965
+ #. Found in changelog list item.
966
+ msgid "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities settings "
967
+ msgstr "Característica: multisitio - Casilla de verificación «sincronizar opciones a todos los sitios». Copia las opciones «use `create_posts` capability», Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities "
968
+
969
+ #. Found in changelog list item.
970
+ msgid "Fixed : Fatal error on plugin load if Administrator role does not exist"
971
+ msgstr "Corregido: error fatal en la carga del plugin si el perfil de administrador no existe"
972
+
973
+ #. Found in changelog list item.
974
+ msgid "Feature : Rename Role sidebar box on Capabilities screen"
975
+ msgstr "Característica: renombrar el cuadro de la barra lateral del perfil en la pantalla de capacidades"
976
+
977
+ #. Found in changelog list item.
978
+ msgid "Change : Add New Role retains capitalization as entered for role title (otherwise applies proper case)"
979
+ msgstr "Cambio: añadir nuevo perfil mantiene las mayúsculas tal y como se han introducido en el título del perfil (por lo demás, aplica las mayúsculas y minúsculas)"
980
+
981
+ #. Found in changelog list item.
982
+ msgid "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; Filtered Post Types"
983
+ msgstr "Compatibilidad: PublishPress Capabilities - El ajuste «Type-Specific Capabilities» no se ha sincronizado correctamente con Permissions &gt; Settings &gt; Core &gt; Filtered Post Types"
984
+
985
+ #. Found in changelog list item.
986
+ msgid "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly synchronized under some conditions"
987
+ msgstr "Corregido: PublishPress Permissions - Ajustes de tipo / taxonomía incorrectamente sincronizados bajo algunas condiciones"
988
+
989
+ #. Found in changelog list item.
990
+ msgid "Fixed : Upgrade menu links were not displayed"
991
+ msgstr "Corregido: los enlaces del menú de actualización no se mostraban"
992
+
993
+ #. Found in changelog list item.
994
+ msgid "Fixed : Fatal error due to missing vendor library folder"
995
+ msgstr "Corregido: error fatal debido a la falta de la carpeta de la biblioteca del proveedor"
996
+
997
+ #. Found in changelog list item.
998
+ msgid "Fixed : Language file load failure if plugin directory structure is non-standard"
999
+ msgstr "Corregido: fallo en la carga de archivos de idioma si la estructura del directorio del plugin no es estándar"
1000
+
1001
+ #. Found in changelog list item.
1002
+ msgid "Fixed : Multisite - Incorrect menu display on sites where main site ID is not 1"
1003
+ msgstr "Corregido: multisitio - Visualización incorrecta del menú en los sitios donde el ID del sitio principal no fuera 1"
1004
+
1005
+ #. Found in changelog list item.
1006
+ msgid "Fixed : Media Create / upload_files capability could not be removed from role"
1007
+ msgstr "Corregido: la capacidad de crear medios/subir archivos no podía ser eliminada del perfil"
1008
+
1009
+ #. Found in changelog list item.
1010
+ msgid "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, Deletion, Reading capabilities grid"
1011
+ msgstr "Compat: Gutenberg avanzado - incluye las capacidades del perfil AG en la parrilla de capacidades de edición, borrado y lectura"
1012
+
1013
+ #. Found in changelog list item.
1014
+ msgid "Feature : Backup &gt; Restore - filter to display only modified capabilities"
1015
+ msgstr "Característica: Copia de seguridad &gt; Restauración - filtro para mostrar sólo las capacidades modificadas"
1016
+
1017
+ #. Found in changelog list item.
1018
+ msgid "Feature : Improved design and styling for Backup and Restore"
1019
+ msgstr "Característica: diseño y estilo mejorados para la copia de seguridad y la restauración"
1020
+
1021
+ #. Found in changelog list item.
1022
+ msgid "Fixed : Review of role backup contents does not show name of current roles which would be removed by restoring backup"
1023
+ msgstr "Corregido: la revisión del contenido de la copia de seguridad de los perfiles no muestra el nombre de los perfiles actuales que serían eliminados al restaurar la copia de seguridad"
1024
+
1025
+ #. Found in changelog list item.
1026
+ msgid "Fixed : Type-Specific Capabilities options included some non-public WordPress post types that don't support capability customization "
1027
+ msgstr "Corregido: las opciones de Type-Specific Capabilities incluyeron algunos tipos de publicaciones no públicas de WordPress que no soportan la personalización de capacidades "
1028
+
1029
+ #. Found in changelog list item.
1030
+ msgid "Change : Backup &gt; Restore - Preview displays \"No changes\" below role name where appropriate "
1031
+ msgstr "Cambio: Copia de seguridad &gt; Restaurar - La vista previa muestra «Sin cambios» debajo del nombre del perfil donde corresponda "
1032
+
1033
+ #. Found in changelog list item.
1034
+ msgid "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped selection to Last Manual Backup"
1035
+ msgstr "Corregido: Copia de seguridad &gt; Restauración - Al hacer clic en la etiqueta para la copia de seguridad inicial saltaba la selección a la última copia de seguridad manual"
1036
+
1037
+ #. Found in changelog list item.
1038
+ msgid "Fixed : Backup &gt; Restore - Negated capabilities were not displayed correctly in restore preview"
1039
+ msgstr "Corregido: Copia de seguridad &gt; Restauración - Las capacidades negadas no se mostraban correctamente en la vista previa de la restauración"
1040
+
1041
+ #. Found in changelog list item.
1042
+ msgid "Fixed : PHP warning for invalid foreach argument, on sites with no active_plugins option stored"
1043
+ msgstr "Corregido: advertencia de PHP por argumento inválido de foreach, en sitios sin la opción `active_plugins` almacenada"
1044
+
1045
+ #. Found in changelog list item.
1046
+ msgid "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false positives for post types with map_meta_cap disabled"
1047
+ msgstr "Corregido: capacidades no válidas - breve leyenda explicativa; evita falsos positivos para los tipos de contenido con `map_meta_cap` desactivado"
1048
+
1049
+ #. Found in changelog list item.
1050
+ msgid "Fixed : uneditable bbPress roles could be opened for editing (require Capabilities Pro)"
1051
+ msgstr "Corregido: los perfiles no editables de bbPress podían abrirse para ser editados (requiere Capabilities Pro)"
1052
+
1053
+ #. Found in changelog list item.
1054
+ msgid "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in Editing Capabilities grid"
1055
+ msgstr "Compatibilidad: bbPress - las capacidades de foro, tema y respuesta no se mostraban en la cuadrícula de capacidades de edición"
1056
+
1057
+ #. Found in changelog list item.
1058
+ msgid "Change : Adjust some captions, variable names, more selective code execution"
1059
+ msgstr "Cambio: ajustar algunas leyendas, nombres de variables, ejecución de código más selectiva"
1060
+
1061
+ #. Found in changelog list item.
1062
+ msgid "Change : Capabilities screen - move some sidebar items to Settings screen"
1063
+ msgstr "Cambio: pantalla de capacidades - mover algunos elementos de la barra lateral a la pantalla de ajustes"
1064
+
1065
+ #. Found in changelog list item.
1066
+ msgid "Change : Capabilities screen - move role selector to top left, eliminate load button"
1067
+ msgstr "Cambio: pantalla de capacidades - mover el selector de perfiles a la parte superior izquierda, eliminación del botón de carga"
1068
+
1069
+ #. Found in changelog list item.
1070
+ msgid "Lang : Fixed handling, activated partial translations in German, Italian, Russian, Spanish, Swedish, Belarusian, Catalan"
1071
+ msgstr "Idioma: manipulación fija, activación de traducciones parciales en alemán, italiano, ruso, español, sueco, bielorruso, catalán"
1072
+
1073
+ #. Found in changelog list item.
1074
+ msgid "Feature : Multiple role assignment on Add / Edit User screen"
1075
+ msgstr "Característica: asignación de perfiles múltiples en la pantalla de Añadir / Editar usuario"
1076
+
1077
+ #. Found in changelog list item.
1078
+ msgid "Feature : Roles screen"
1079
+ msgstr "Característica: Perfiles"
1080
+
1081
+ #. Found in changelog list item.
1082
+ msgid "Fixed : Capabilities menu was displayed to non-Administrators with no items except \"Upgrade to Pro\""
1083
+ msgstr "Corregido: el menú capacidades se mostraba a los no administradores sin ningún elemento excepto «Actualizar a Pro»."
1084
+
1085
+ #. Found in changelog list item.
1086
+ msgid "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific Capabilities\" were not synchronized with PublishPress Permissions under some conditions"
1087
+ msgstr "Compatibilidad: PublishPress Permissions - las selecciones de tipos de contenido para «Type-Specific Capabilities» no se sincronizaban con PublishPress Permissions en algunas condiciones"
1088
+
1089
+ #. Found in changelog list item.
1090
+ msgid "Fixed : Fatal error loading Capabilities screen on a small percentage of installations"
1091
+ msgstr "Corregido: error fatal al cargar la pantalla de Capabilities en un pequeño porcentaje de instalaciones"
1092
+
1093
+ #. Found in changelog list item.
1094
+ msgid "Change : Apply workaround filters for WordPress edit_published_posts / publish_posts handling only for users who have edit_published_posts capability for current post type"
1095
+ msgstr "Cambio: aplicar filtros de solución para el manejo de WordPress `edit_published_posts` / `publish_posts` sólo para los usuarios que tienen la capacidad `edit_published_posts` para el tipo de contenido actual"
1096
+
1097
+ #. Found in changelog list item.
1098
+ msgid "Change : Reinstate WordPress edit_published_posts workaround with correct status filtering behavior"
1099
+ msgstr "Cambio: restablecer la solución de WordPress `edit_published_posts` con el comportamiento correcto de filtrado de estado"
1100
+
1101
+ #. Found in changelog list item.
1102
+ msgid "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect under some conditions"
1103
+ msgstr "Corregido: la selección masiva de casillas en la pantalla de capacidades de los perfiles era incorrecta en algunas condiciones"
1104
+
1105
+ #. Found in changelog list item.
1106
+ msgid "Fixed : Role name captions on Role Capabilities and Backup Tool screens could not be translated"
1107
+ msgstr "Corregido: los subtítulos de los nombres de los perfiles en las pantallas de capacidades de los perfiles y de la herramienta de copia de seguridad no podían ser traducidos"
1108
+
1109
+ #. Found in changelog list item.
1110
+ msgid "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display PublishPress Capabilities section to Super Administrators who don't have a role on the site"
1111
+ msgstr "Corregido: multisitio - en los subsitios, la pantalla de capacidades de perfil no mostraba la sección de PublishPress Capabilities a los superadministradores que no tienen un perfil en el sitio"
1112
+
1113
+ #. Found in changelog list item.
1114
+ msgid "Fixed : Term Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1115
+ msgstr "Corregido: las capacidades de asignar o eliminar términos no eran efectivas debido a que el núcleo de WordPress forzaba el requisito de la capacidad por defecto"
1116
+
1117
+ #. Found in changelog list item.
1118
+ msgid "Fixed : Category Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1119
+ msgstr "Corregido: las capacidades de asignar o eliminar categorías no eran efectivas debido a que el núcleo de WordPress forzaba el requisito de la capacidad por defecto"
1120
+
1121
+ #. Found in changelog list item.
1122
+ msgid "Fixed : Add Capability sidebar added custom capability to role immediately, but capability checkbox did not display as checked until reload"
1123
+ msgstr "Corregido: la barra lateral de añadir capacidad añadía la capacidad personalizada al perfil inmediatamente, pero la casilla de verificación de la capacidad no se mostraba como marcada hasta que se recargaba"
1124
+
1125
+ #. Found in changelog list item.
1126
+ msgid "Fixed : Browser reload caused Role Capabilities screen to display default role "
1127
+ msgstr "Corregido: la recarga del navegador provocaba que la pantalla de capacidades de perfil mostrase el perfil por defecto "
1128
+
1129
+ #. Found in changelog list item.
1130
+ msgid "Feature : Role Capabilities screen links to PublishPress &gt; Roles for member management"
1131
+ msgstr "Característica: la pantalla de capacidades de los perfiles enlaza con PublishPress &gt; Perfiles para la gestión de los miembros"
1132
+
1133
+ #. Found in changelog list item.
1134
+ msgid "Feature : Capabilities link on PublishPress &gt; Roles row opens Role Capabilities screen"
1135
+ msgstr "Característica: el enlace de capacidades en la fila PublishPress &gt; Perfiles abre la pantalla de capacidades de los perfiles"
1136
+
1137
+ #. Found in changelog list item.
1138
+ msgid "Change : Renamed to PublishPress Capabilities"
1139
+ msgstr "Cambio: se ha cambiado el nombre a PublishPress Capabilities"
1140
+
1141
+ #. Found in changelog list item.
1142
+ msgid "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not work with ENTER keypress (caused screen reload without applying operation)"
1143
+ msgstr "Corregido: las funciones de la barra lateral de Crear perfil, Copiar perfil y Añadir capacidades no funcionaban al pulsar la tecla Entrar (provocaba la recarga de la pantalla sin aplicar la operación)."
1144
+
1145
+ #. Found in changelog list item.
1146
+ msgid "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to missing strikethrough"
1147
+ msgstr "Corregido: el enlace de negación de capacidad (denegación) en lotes era ambiguo debido a que faltaba el tachado"
1148
+
1149
+ #. Found in changelog list item.
1150
+ msgid "Fixed : Plugin capability sections - pp_set_notification_channel and pp_manage_roles were included in both PublishPress and PublishPress Permissions sections"
1151
+ msgstr "Corregido: secciones de capacidad del plugin - `pp_set_notification_channel` y `pp_manage_roles` estaban incluidas en las secciones de PublishPress y PublishPress Permissions"
1152
+
1153
+ #. Found in changelog list item.
1154
+ msgid "Change : Third Party Plugin Capabilities - always display checkboxes even if capabilities not present in Administrator role"
1155
+ msgstr "Cambio: capacidades de plugins de terceros - mostrar siempre las casillas de verificación incluso si las capacidades no están presentes en el perfil de administrador"
1156
+
1157
+ #. Found in changelog list item.
1158
+ msgid "Fixed : First-time installation: Capabilities menu item not displayed until after Plugins or Users menu clicked "
1159
+ msgstr "Corregido: primera instalación: la opción de menú de capacidades no se muestra hasta después de hacer clic en el menú de plugins o usuarios "
1160
+
1161
+ #. Found in changelog list item.
1162
+ msgid "Feature : Auto-backup role and capabilities on each update (and on update to this version)"
1163
+ msgstr "Característica: copia de seguridad automática de perfiles y capacidades en cada actualización (y en la actualización de esta versión)"
1164
+
1165
+ #. Found in changelog list item.
1166
+ msgid "Change : Clarify some messages for plugin access denial"
1167
+ msgstr "Cambio: aclarar algunos mensajes de denegación de acceso al plugin"
1168
+
1169
+ #. Found in changelog list item.
1170
+ msgid "Fixed : Some functions were not accessible to network Super Administrators without a role on the site"
1171
+ msgstr "Corregido: algunas funciones no eran accesibles para los superadministradores de la red sin un perfil en el sitio"
1172
+
1173
+ #. Found in changelog list item.
1174
+ msgid "Fixed : Capabilities screen was not accessible to non-Administrators who have \"manage_capabilities\" capability"
1175
+ msgstr "Corregido: la pantalla de Capabilities no era accesible para los no administradores que tienen la capacidad «manage_capabilities»"
1176
+
1177
+ #. Found in changelog list item.
1178
+ msgid "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save with incorrect post status (since 1.8)"
1179
+ msgstr "Corregido: publicación automática de auto-borradores en blanco, las entradas de WooCommerce se guardan con un estado de entrada incorrecto (desde 1.8)"
1180
+
1181
+ #. Found in changelog list item.
1182
+ msgid "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not updated based on role edit"
1183
+ msgstr "Corregido: la inclusión o no inclusión de usuarios en el desplegable de Autores no se actualizaba en función de la edición del perfil"
1184
+
1185
+ #. Found in changelog list item.
1186
+ msgid "Change : PublishPress icon, footer on Roles and Capabilities screen"
1187
+ msgstr "Cambio: icono de PublishPress, pie de página en la pantalla de perfiles y capacidades"
1188
+
1189
+ #. Found in changelog list item.
1190
+ msgid "Change : Edit Roles link in CME row of Plugins list"
1191
+ msgstr "Cambio: enlace de edición de perfiles en la fila CME de la lista de plugins"
1192
+
1193
+ #. Found in changelog list item.
1194
+ msgid "Change : Move Role Capabilities menu item to Permissions menu if PressPermit plugin is active (restoring previous behavior with Press Permit Core)"
1195
+ msgstr "Cambio: mover el elemento de menú de las capacidades de los perfiles al menú de los permisos si el plugin PressPermit está activo (restaurando el comportamiento anterior con Press Permit Core)"
1196
+
1197
+ #. Found in changelog list item.
1198
+ msgid "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin Posts / Pages listing"
1199
+ msgstr "Corregido: PHP 5.x: aviso para la constante indefinida `PHP_INT_MIN` en el listado de wp-admin Entradas/Páginas"
1200
+
1201
+ #. Found in changelog list item.
1202
+ msgid "Fixed : HTML validation errors on Manage Capabilities screen"
1203
+ msgstr "Corregido: errores de validación HTML en la pantalla de gestión de capacidades"
1204
+
1205
+ #. Found in changelog list item.
1206
+ msgid "Fixed : PHP Notices on Role Capabilities screen for undefined index, under some configurations "
1207
+ msgstr "Corregido: avisos de PHP en la pantalla de capacidades de perfiles para un índice indefinido, bajo algunas configuraciones "
1208
+
1209
+ #. Found in changelog list item.
1210
+ msgid "Fixed : Removed add_users from the Core WordPress Capabilities section because it is was replaced by promote_users"
1211
+ msgstr "Corregido: se ha eliminado `add_users` de la sección Core WordPress Capabilities porque se ha sustituido por `promote_users`"
1212
+
1213
+ #. Found in changelog list item.
1214
+ msgid "Fixed : If a unique edit/delete capability is already defined, don't change the definition"
1215
+ msgstr "Corregido: si una capacidad de edición/borrado única ya está definida, no cambie la definición"
1216
+
1217
+ #. Found in changelog list item.
1218
+ msgid "Feature : Work around WordPress issue allowing users with edit_published_posts (but not publish_posts) to unpublish published posts"
1219
+ msgstr "Característica: solucionar el problema de WordPress que permite a los usuarios con `edit_published_posts` (pero no `publish_posts`) anular la publicación de las entradas publicadas"
1220
+
1221
+ #. Found in changelog list item.
1222
+ msgid "Feature : Work around WordPress issue preventing users with edit_published_posts (but not publish_posts) capability from updating published posts (https://core.trac.wordpress.org/ticket/47443)"
1223
+ msgstr "Característica: solucionar un problema de WordPress que impide a los usuarios con capacidad de `edit_published_posts` (pero no de `publish_posts`) actualizar las entradas publicadas (https://core.trac.wordpress.org/ticket/47443)"
1224
+
1225
+ #. Found in changelog list item.
1226
+ msgid "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" filter to register their capabilities "
1227
+ msgstr "Característica: API de plugins - los plugins pueden engancharse al filtro «cme_plugin_capabilities» para registrar sus capacidades "
1228
+
1229
+ #. Found in changelog list item.
1230
+ msgid "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in sections on role editor screen"
1231
+ msgstr "Característica: capacidades de WooCommerce, PublishPress, PressPermit agrupadas en secciones en la pantalla del editor de perfiles"
1232
+
1233
+ #. Found in changelog list item.
1234
+ msgid "Fixed : Correct some irregularities in CME admin menu item display"
1235
+ msgstr "Corregido: corregir algunas irregularidades en la visualización de los elementos del menú de administración del CME"
1236
+
1237
+ #. Found in changelog list item.
1238
+ msgid "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; Capabilities\")"
1239
+ msgstr "Cambio: revertir los títulos de los menús al comportamiento anterior («Permisos &gt; Capacidades de los perfiles» si Press Permit Core está activo, en caso contrario «Usuarios &gt; Capacidades»)"
1240
+
1241
+ #. Found in changelog list item.
1242
+ msgid "Change : Don't allow non-Administrator to edit Administrators, even if Administrator role level is set to 0"
1243
+ msgstr "Cambio: no permitir que los no administradores editen a los administradores, incluso si el nivel de perfil de administrador se establece en 0"
1244
+
1245
+ #. Found in changelog list item.
1246
+ msgid "Fixed : PHP warning for deprecated function WP_Roles::reinit"
1247
+ msgstr "Corregido: PHP warning para la función obsoleta `WP_Roles::reinit`"
1248
+
1249
+ #. Found in changelog list item.
1250
+ msgid "Fixed : Potential vulnerability in wp-admin (but exposure was only to users with role editing capability)"
1251
+ msgstr "Corregido: vulnerabilidad potencial en wp-admin (pero la exposición era solo para usuarios con capacidades de edición de perfiles)"
1252
+
1253
+ #. Found in changelog list item.
1254
+ msgid "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME is activated"
1255
+ msgstr "Compatibilidad: PHP 7.2 - aviso de función obsoleta si se activa una segunda copia de CME"
1256
+
1257
+ #. Found in changelog list item.
1258
+ msgid "Fixed : Back button caused mismatching role dropdown selection"
1259
+ msgstr "Corregido: el botón de retroceso provocaba la selección errónea de perfiles en el menú desplegable"
1260
+
1261
+ #. Found in changelog list item.
1262
+ msgid "Feature : Backup Tool can also display contents of role backups"
1263
+ msgstr "Característica: la herramienta de copia de seguridad también puede mostrar el contenido de las copias de seguridad de los perfiles"
1264
+
1265
+ #. Found in changelog list item.
1266
+ msgid "Feature : When roles are manually backed up, also retain initial role backup"
1267
+ msgstr "Característica: cuando se hace una copia de seguridad manual de los perfiles, también se conserva la copia de seguridad inicial de los perfiles"
1268
+
1269
+ #. Found in changelog list item.
1270
+ msgid "Feature : Automatically save backup of WP roles on plugin activation or update"
1271
+ msgstr "Característica: guardar automáticamente la copia de seguridad de los perfiles de WP en la activación o actualización del plugin"
1272
+
1273
+ #. Found in changelog list item.
1274
+ msgid "Change : Links to Related Permissions Plugins in sidebar on Roles and Capabilities screen"
1275
+ msgstr "Cambio: enlaces a plugins de permisos relacionados en la barra lateral de la pantalla de perfiles y capacidades"
1276
+
1277
+ #. Found in changelog list item.
1278
+ msgid "Change : Copyrights, onscreen link for PublishPress ownership"
1279
+ msgstr "Cambio: derechos de autor, enlace en pantalla para la propiedad de PublishPress"
1280
+
1281
+ #. Found in changelog list item.
1282
+ msgid "Change : Minor code cleanup and refactor"
1283
+ msgstr "Cambio: limpieza y refactorización menor del código"
1284
+
1285
+ #. Found in changelog list item.
1286
+ msgid "Feature : Link to Roles and Capabilities screen from Backup Tool"
1287
+ msgstr "Característica: enlace a la pantalla de perfiles y capacidades desde la herramienta de copia de seguridad"
1288
+
1289
+ #. Found in changelog list item.
1290
+ msgid "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
1291
+ msgstr "Característica: enlace a la herramienta de copia de seguridad desde la barra lateral de la pantalla de perfiles y capacidades"
1292
+
1293
+ #. Found in changelog list item.
1294
+ msgid "Feature : WooCommerce - If current user has duplicate_products capability, make Woo honor it"
1295
+ msgstr "Característica: WooCommerce - si el usuario actual tiene capacidad de `duplicate_products`, haga que Woo lo respete"
1296
+
1297
+ #. Found in changelog list item.
1298
+ msgid "Change : Thickbox popups for related plugins"
1299
+ msgstr "Cambio: ventanas emergentes de Thickbox para plugins relacionados"
1300
+
1301
+ #. Found in changelog list item.
1302
+ msgid "Change : Reinstate Press Permit description link "
1303
+ msgstr "Cambio: restablecer el enlace de la descripción de Press Permit "
1304
+
1305
+ #. Found in changelog list item.
1306
+ msgid "Feature : Additional save button at top of Roles and Capabilities screen!"
1307
+ msgstr "Característica: ¡botón adicional para guardar en la parte superior de la pantalla de perfiles y capacidades!"
1308
+
1309
+ #. Found in changelog list item.
1310
+ msgid "Feature : If read capability is missing from a standard role, display warning and instant fix link "
1311
+ msgstr "Característica: si falta la capacidad de lectura de un perfil estándar, se muestra una advertencia y un enlace de solución instantánea "
1312
+
1313
+ #. Found in changelog list item.
1314
+ msgid "Feature : Prevent read capability from being removed from a standard role"
1315
+ msgstr "Característica: evitar que se quite la capacidad de lectura de un perfil estándar"
1316
+
1317
+ #. Found in changelog list item.
1318
+ msgid "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
1319
+ msgstr "Compatibilidad: Press Permit: nuevo plugin page slugs in Press Permit Core 2.7"
1320
+
1321
+ #. Found in changelog list item.
1322
+ msgid "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"
1323
+ msgstr "Cambio: la protección de bloqueo (que impide la eliminación de la capacidad de lectura) se omite si el perfil no tiene capacidades de administración/edición de WP, o si tiene la capacidad «dashboard_lockout_ok»"
1324
+
1325
+ #. Found in changelog list item.
1326
+ msgid "Feature : WooCommerce - Ensure orders can be edited or added based on edit_shop_orders / create_shop_orders capability"
1327
+ msgstr "Característica: WooCommerce - asegúrese de que los pedidos pueden ser editados o añadidos sobre la base de la capacidad `edit_shop_orders` / `create_shop_orders`"
1328
+
1329
+ #. Found in changelog list item.
1330
+ msgid "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" causes term assign, edit and deletion capabilities to be required and credited separate from management capability"
1331
+ msgstr "Característica: nuevo ajuste en la barra lateral derecha: «Capacidades detalladas de la taxonomía» hace que las capacidades de asignación, edición y eliminación de términos sean necesarias y se acrediten por separado de la capacidad de gestión"
1332
+
1333
+ #. Found in changelog list item.
1334
+ msgid "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" ensures a distinct manage capability for selected taxonomies"
1335
+ msgstr "Característica: nuevo ajuste en la barra lateral derecha: «Capacidades específicas de la taxonomía» garantiza una capacidad de gestión distinta para las taxonomías seleccionadas"
1336
+
1337
+ #. Found in changelog list item.
1338
+ msgid "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for selected post types (without activating Press Permit Core)."
1339
+ msgstr "Característica: nuevo ajuste de la barra lateral derecha: «Type-Specific Capabilities» para los tipos de contenido seleccionados (sin activar el núcleo de Press Permit)."
1340
+
1341
+ #. Found in changelog list item.
1342
+ msgid "Fixed : Press Permit integration - cannot load Permissions &gt; Role Capabilities with Press Permit Core &lt; 2.7"
1343
+ msgstr "Corregido: integración de Press Permit - no puede cargar Permissions &gt; Capacidades de perfil con Press Permit Core &lt; 2.7"
1344
+
1345
+ #. Found in changelog list item.
1346
+ msgid "Compat : WooCommerce integration - Users lacking access to the \"Add New Order\" submenu could not access Posts, Pages, Products or any other Post Type listing. This occurred if \"use create_posts\" option enabled and user lacks the create capability for Orders. "
1347
+ msgstr "Compatibilidad: integración con WooCommerce - los usuarios que no tienen acceso al submenú «Añadir nuevo pedido» no pueden acceder a las entradas, páginas, productos o cualquier otro tipo de entrada. Esto ocurría si la opción «use `create_posts`» estaba activada y el usuario carecía de la capacidad de crear pedidos. "
1348
+
1349
+ #. Found in changelog list item.
1350
+ msgid "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator with WooCommerce active"
1351
+ msgstr "Corregido: avisos de PHP en la pantalla de Perfiles y Capacidades para los no administradores con WooCommerce activo"
1352
+
1353
+ #. Found in changelog list item.
1354
+ msgid "Fixed : Work around WP quirk of completely blocking admin page access for a post type if user lacks create capability for the post type and there are no other accessible items on the menu."
1355
+ msgstr "Corregido: se ha solucionado la peculiaridad de WP de bloquear completamente el acceso a la página de administración para un tipo de contenido si el usuario carece de capacidad de creación para el tipo de contenido y no hay otros elementos accesibles en el menú."
1356
+
1357
+ #. Found in changelog list item.
1358
+ msgid "Fixed : Negative role capabilities could not be directly unset (had to be checked, saved, then unchecked)."
1359
+ msgstr "Corregido: las capacidades negativas de los perfiles no se podían desmarcar directamente (había que marcarlas, guardarlas y luego desmarcarlas)."
1360
+
1361
+ #. Found in changelog list item.
1362
+ msgid "Fixed : On some sites, capabilities added dynamically by other code were forced into stored role definition (and could not be removed)."
1363
+ msgstr "Corregido: en algunos sitios, las capacidades añadidas dinámicamente por otro código eran forzadas en la definición de perfiles almacenados (y no podían ser eliminadas)."
1364
+
1365
+ #. Found in changelog list item.
1366
+ msgid "Fixed : User editing was improperly blocked in some cases"
1367
+ msgstr "Corregido: la edición de los usuarios se bloqueaba indebidamente en algunos casos"
1368
+
1369
+ #. Found in changelog list item.
1370
+ msgid "First public version."
1371
+ msgstr "Primera versión pública."
1372
+
1373
+ #. Found in changelog list item.
1374
+ msgid "Updated Alkivia Framework."
1375
+ msgstr "Framework Alkivia actualizado."
1376
+
1377
+ #. Found in changelog list item.
1378
+ msgid "Some code improvements."
1379
+ msgstr "Algunas mejoras en el código."
1380
+
1381
+ #. Found in changelog list item.
1382
+ msgid "Role deletion added."
1383
+ msgstr "Se ha añadido la eliminación de perfiles."
1384
+
1385
+ #. Found in changelog list item.
1386
+ msgid "Added backup/restore tool."
1387
+ msgstr "Se ha añadido una herramienta de copia de seguridad/restauración."
1388
+
1389
+ #. Found in changelog list item.
1390
+ msgid "Updated Framework."
1391
+ msgstr "Framework actualizado."
1392
+
1393
+ #. Found in changelog list item.
1394
+ msgid "Corrected internal links."
1395
+ msgstr "Enlaces internos corregidos."
1396
+
1397
+ #. Found in changelog list item.
1398
+ msgid "Coding Standards."
1399
+ msgstr "Estándares de codificación."
1400
+
1401
+ #. Found in changelog list item.
1402
+ msgid "Added Russian translation."
1403
+ msgstr "Se ha añadido la traducción al ruso."
1404
+
1405
+ #. Found in changelog list item.
1406
+ msgid "Added German and Belorussian translations."
1407
+ msgstr "Se han añadido traducciones al alemán y al bielorruso."
1408
+
1409
+ #. Found in changelog list item.
1410
+ msgid "Added Italian translation."
1411
+ msgstr "Se ha añadido la traducción al italiano."
1412
 
1413
+ #. Found in changelog list item.
1414
+ msgid "Tested up to WP 2.9.1."
1415
+ msgstr "Probado hasta WP 2.9.1."
1416
 
1417
+ #. Found in changelog list item.
1418
+ msgid "Changed license to GPL version 2."
1419
+ msgstr "Se ha cambiado la licencia a la versión 2 de la GPL."
1420
 
1421
+ #. Found in changelog list item.
1422
+ msgid "Migrated to the new Alkivia Framework."
1423
+ msgstr "Migrado al nuevo Alkivia Framework."
1424
 
1425
+ #. Found in changelog list item.
1426
+ msgid "Solved an incompatibility with Chameleon theme."
1427
+ msgstr "Se ha resuelto una incompatibilidad con el tema Camaleón."
1428
 
1429
+ #. Found in changelog list item.
1430
+ msgid "Cannot assign to users a role with more capabilities than current user."
1431
+ msgstr "No se puede asignar a los usuarios un perfil con más capacidades que el usuario actual."
1432
 
1433
+ #. Found in changelog list item.
1434
+ msgid "Cannot edit users with more capabilities than current user."
1435
+ msgstr "No se pueden editar usuarios con más capacidades que el usuario actual."
1436
 
1437
+ #. Found in changelog list item.
1438
+ msgid "Fixed a bug where administrators could not create or manage other administrators."
1439
+ msgstr "Se ha corregido un error por el que los administradores no podían crear o gestionar otros administradores."
1440
 
1441
+ #. Found in changelog list item.
1442
+ msgid "Added Swedish translation."
1443
+ msgstr "Se ha añadido la traducción al sueco."
1444
 
1445
+ #. Found in changelog list item.
1446
+ msgid "Reduce memory usage by loading framework and plugin code only when needed"
1447
+ msgstr "Reducir el uso de la memoria cargando el código del framework y del plugin sólo cuando sea necesario"
1448
 
1449
+ #. Found in changelog list item.
1450
+ msgid "Show capabilities which Press Permit adds to the role by supplemental type-specific role assignment"
1451
+ msgstr "Muestra las capacidades que Press Permit añade al perfil mediante la asignación de un perfil específico de tipo suplementario"
1452
 
1453
+ #. Found in changelog list item.
1454
+ msgid "Press Permit integration: externally (dis)enable Post Types, Taxonomies for PP filtering (which forces type-specific capability definitions)"
1455
+ msgstr "Integración de Press Permit: (des)habilitar externamente tipos de contenido, taxonomías para el filtrado de PP (lo que obliga a definiciones de capacidades específicas del tipo)"
1456
 
1457
+ #. Found in changelog list item.
1458
+ msgid "Fixed : PHP Warnings for unchecked capabilities"
1459
+ msgstr "Corregido: advertencias de PHP para las capacidades no comprobadas"
1460
 
1461
+ #. Found in changelog list item.
1462
+ msgid "Don't allow a non-Administrator to add or remove a capability they don't have"
1463
+ msgstr "No permita que una persona que no sea administradora añada o elimine capacidades que no tiene"
1464
 
1465
+ #. Found in changelog list item.
1466
+ msgid "Clarified sidebar captions"
1467
+ msgstr "Aclaración de los títulos de las barras laterales"
1468
 
1469
+ #. Found in changelog list item.
1470
+ msgid "Editing UI separates WP core capabilities and 3rd party capabilities"
1471
+ msgstr "La interfaz de edición separa las capacidades del núcleo de WP y las de terceros"
1472
 
1473
+ #. Found in changelog list item.
1474
+ msgid "Organized capabilities UI by post type and operation"
1475
+ msgstr "Capacidades organizadas por tipo de contenido y operación"
1476
 
1477
+ #. Found in changelog list item.
1478
+ msgid "Press Permit integration: if role definitions are reset to WP defaults, also repopulate PP capabilities (pp_manage_settings, etc.)"
1479
+ msgstr "Integración de Press Permit: si las definiciones de perfiles se restablecen a los valores predeterminados de WP, también se repoblarán las capacidades de PP (`pp_manage_settings`, etc.)"
1480
 
1481
+ #. Found in changelog list item.
1482
+ msgid "https compatibility: use content_url(), plugins_url()"
1483
+ msgstr "compatibilidad con https: utilice `content_url()`, `plugins_url()`"
1484
 
1485
+ #. Found in changelog list item.
1486
+ msgid "Press Permit integration: roles can be marked for supplemental assignment only (and suppressed from WP role assignment dropdown, requires PP 1.0-beta1.4)"
1487
+ msgstr "Integración de Press Permit: los perfiles pueden marcarse sólo para la asignación suplementaria (y suprimirse del desplegable de asignación de perfiles de WP, requiere PP 1.0-beta1.4)"
1488
 
1489
+ #. Found in changelog list item.
1490
+ msgid "Language: updated .pot file"
1491
+ msgstr "Idioma: archivo .pot actualizado"
1492
 
1493
+ #. Found in changelog list item.
1494
+ msgid "Press Permit integration: automatically store a backup copy of each role's last saved capability set so they can be reinstated if necessary (currently for bbPress)"
1495
+ msgstr "Integración de Press Permit: almacena automáticamente una copia de seguridad del último conjunto de capacidades guardadas de cada perfil para que puedan ser restablecidas si es necesario (actualmente para bbPress)"
1496
 
1497
+ #. Found in changelog list item.
1498
+ msgid "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts even if it was defined to the be same as cap-&gt;edit_posts"
1499
+ msgstr "Corregido: se mostraba una casilla separada para `cap-&gt;edit_published_posts` aunque estuviera definida igual que `cap-&gt;edit_posts`"
1500
 
1501
+ #. Found in changelog list item.
1502
+ msgid "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
1503
+ msgstr "Corregido: el cambio del menú a «Capacidades del perfil» rompió las traducciones existentes"
1504
 
1505
+ #. Found in changelog list item.
1506
+ msgid "Fixed : On translated sites, roles could not be edited"
1507
+ msgstr "Corregido: en los sitios traducidos, los perfiles no podían ser editados"
1508
 
1509
+ #. Found in changelog list item.
1510
+ msgid "Press Permit integration: If capability is granted by the role's Permit Group, highlight it as green with a descriptive caption title, but leave checkbox enabled for display/editing of role defintion setting (previous behavior caused capability to be stripped out of WP role definition under some PP configurations)"
1511
+ msgstr "Press Permit integration: si la capacidad es concedida por el grupo de permisos del perfil, resáltela en verde con un título descriptivo, pero deje activada la casilla de verificación para mostrar/editar la configuración de la definición del perfil (el comportamiento anterior hacía que la capacidad fuera eliminada de la definición del perfil de WP en algunas configuraciones de PP)"
1512
 
1513
+ #. Found in changelog list item.
1514
+ msgid "Fixed : Capability labels in \"Other WordPress\" section did not toggle checkbox selection"
1515
+ msgstr "Corregido: las etiquetas de capacidad en la sección «Otros de WordPress» no activaban la selección de la casilla de verificación"
1516
 
1517
+ #. Found in changelog list item.
1518
+ msgid "Fixed : Capabilities were needlessly re-saved on role load"
1519
+ msgstr "Corregido: las capacidades se guardaban innecesariamente al cargar el perfil"
1520
 
1521
+ #. Found in changelog list item.
1522
+ msgid "Fixed : Role update and copy failed if currently stored capability array is corrupted"
1523
+ msgstr "Corregido: la actualización y la copia de perfiles fallan si la matriz de capacidades almacenada actualmente está dañada"
 
 
 
1524
 
1525
+ #. Found in changelog list item.
1526
+ msgid "Compat : Press Permit + bbPress - customized role capabilities were not properly maintained on bbPress activation / deactivation, in some scenarios"
1527
+ msgstr "Compatibilida: Press Permit + bbPress - las capacidades de los perfiles personalizados no se mantenían correctamente en la activación/desactivación de bbPress, en algunos escenarios"
 
 
 
1528
 
1529
+ #. Found in changelog list item.
1530
+ msgid "Compat : bbPress 2.2 (supports customization of dynamic forum role capabilities)"
1531
+ msgstr "Compatibilidad: bbPress 2.2 (admite la personalización de las funciones dinámicas del foro)"
1532
 
1533
+ #. Found in changelog list item.
1534
+ msgid "Compat : Press Permit - flagging of roles as \"supplemental assignment only\" was not saved"
1535
+ msgstr "Compatibilidad: Press Permit - no se ha guardado el marcado de los perfiles como «asignación suplementaria»"
1536
 
1537
+ #. Found in changelog list item.
1538
+ msgid "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used on a bbPress role, caused creation of an invalid role"
1539
+ msgstr "Compatibilidad: bbPress + Press Permit - el formulario «Añadir capacidad» fallaba cuando se utilizaba en un perfil de bbPress, lo que provocaba la creación de un perfil no válido"
1540
 
1541
+ #. Found in changelog list item.
1542
+ msgid "Compat : Press Permit - \"supplemental only\" option was always enabled for newly created and copied roles, regardless of checkbox setting near Create/Copy button"
1543
+ msgstr "Compatibilidad: Press Permit - la opción «sólo suplementario» siempre estaba activada para los perfiles recién creados y copiados, independientemente de la configuración de la casilla de verificación cerca del botón Crear/Copiar"
1544
 
1545
+ #. Found in changelog list item.
1546
+ msgid "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" textbox caused the checkbox to be available but not selected"
1547
+ msgstr "Compatibilidad: bbPress + Press Permit - añadir una capacidad a través de la caja de texto «Añadir Cap» hacía que la casilla estuviera disponible pero no seleccionada"
1548
 
1549
+ #. Found in changelog list item.
1550
+ msgid "Compat : bbPress + Press Permit - Modified bbPress role capabilities were not redisplayed following save, required reload"
1551
+ msgstr "Compatibilidad: bbPress + Press Permit - las capacidades modificadas de los perfiles de bbPress no se muestran después de guardar, es necesario volver a cargar"
1552
 
1553
+ #. Found in changelog list item.
1554
+ msgid "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines create_posts capabilities (requires Press Permit)"
1555
+ msgstr "Característica: la casilla «Usar la capacidad de `create_posts`» en la barra lateral define automáticamente las capacidades de `create_posts` (requiere Press Permit)"
1556
 
1557
+ #. Found in changelog list item.
1558
+ msgid "Feature : If create_posts capabilities are defined, organize checkboxes into a column alongside edit_posts"
1559
+ msgstr "Característica: si se definen las capacidades de `create_posts`, organizar las casillas de verificación en una columna junto a `edit_posts`"
1560
 
1561
+ #. Found in changelog list item.
1562
+ msgid "Fixed : Role capabilities were not updated / refreshed properly on multisite installations"
1563
+ msgstr "Corregido: las capacidades de los perfiles no se actualizaban/refrescaban correctamente en las instalaciones multisitio"
1564
 
1565
+ #. Found in changelog list item.
1566
+ msgid "Change : Reduced download size by moving screenshots to assets folder of project folder"
1567
+ msgstr "Cambio: se ha reducido el tamaño de la descarga moviendo las capturas de pantalla a la carpeta de activos de la carpeta del proyecto"
1568
 
1569
+ #. Found in changelog list item.
1570
+ msgid "Maint : Stop using $GLOBALS superglobal"
1571
+ msgstr "Mantenimiento: dejar de usar el superglobal $GLOBALS"
1572
 
1573
+ #. Found in changelog list item.
1574
+ msgid "Compat : Press Permit - green background around capabilities which "
1575
+ msgstr "Compatibilidad: Press Permit - fondo verde alrededor de las capacidades que "
1576
 
1577
+ #. Found in changelog list item.
1578
+ msgid "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
1579
+ msgstr "Compatibilidad: Press Permit - la opción «sólo suplemento» almacena las entradas redundantes"
1580
 
1581
+ #. Found in changelog list item.
1582
+ msgid "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" settings update"
1583
+ msgstr "Compatibilidad: Press Permit - PHP Warning en la actualización de la configuración «Force Type-Specific Capabilities»"
1584
 
1585
+ #. Found in changelog list item.
1586
+ msgid "Compat : Press Permit - PHP Warning on role save"
1587
+ msgstr "Compatibilidad: Press Permit - PHP warning al guardar el perfil"
1588
 
1589
+ #. Found in changelog list item.
1590
+ msgid "Fixed : Failure to save capability changes, on some versions of PHP"
1591
+ msgstr "Corregido: fallo al guardar los cambios de capacidad, en algunas versiones de PHP"
1592
 
1593
+ #. Found in changelog list item.
1594
+ msgid "Perf : Eliminated unused framework code (reduced typical wp-admin memory usage by 0.6 MB)"
1595
+ msgstr "Perfeccionamiento: se ha eliminado el código del framework que no se utiliza (se ha reducido el uso típico de memoria de wp-admin en 0,6 MB)"
1596
 
1597
+ #. Found in changelog list item.
1598
+ msgid "Change : Press Permit promotional message includes link to display further info"
1599
+ msgstr "Cambio: el mensaje promocional de Press Permit incluye un enlace para mostrar más información"
1600
 
1601
+ #. Found in changelog list item.
1602
+ msgid "Compat : Press Permit - if a role is marked as hidden, also default it for use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated and Advanced Settings enabled)"
1603
+ msgstr "Compatibilidad: Press Permit - si un perfil está marcado como oculto, también por defecto para su uso por PP Pro como un perfil de patrón (cuando la edición colaborativa de PP está activada y los ajustes avanzados activados)"
1604
 
1605
+ #. Found in changelog list item.
1606
+ msgid "Fixed : jQuery notices for deprecated methods on Edit Role screen"
1607
+ msgstr "Corregido: avisos de jQuery para métodos obsoletos en la pantalla de Editar perfil"
1608
 
1609
+ #. Found in changelog list item.
1610
+ msgid "Fixed : Term deletion capability was not included in taxonomies grid even if defined"
1611
+ msgstr "Corregido: la capacidad de eliminación de términos no se incluía en la cuadrícula de taxonomías aunque estuviera definida"
1612
 
1613
+ #. Found in changelog list item.
1614
+ msgid "Change : Clarified English captions on Backup Tool screen"
1615
+ msgstr "Cambio: aclaración de los subtítulos en inglés en la pantalla de la herramienta de copia de seguridad"
1616
 
1617
+ #. Found in changelog list item.
1618
+ msgid "Fixed : Role reset to WP defaults did not work, caused a PHP error / white screen"
1619
+ msgstr "Corregido: el restablecimiento de perfiles a los valores por defecto de WP no funcionaba, provocaba un error PHP / pantalla blanca"
 
1620
 
1621
+ #. Found in changelog list item.
1622
+ msgid "Feature : Backup / Restore tool requires \"restore_roles\" capability or super admin status"
1623
+ msgstr "Característica: la herramienta de copia de seguridad/restauración requiere la capacidad de «restore_roles» o el estado de superadministrador"
1624
 
1625
+ #. Found in changelog list item.
1626
+ msgid "Feature : Multisite - Copy a role definition to new (future) sites on a network"
1627
+ msgstr "Característica: multisitio - copiar una definición de perfil a nuevos (futuros) sitios en una red"
1628
 
1629
+ #. Found in changelog list item.
1630
+ msgid "Feature : Multisite - Copy a role definition to all current sites on a network"
1631
+ msgstr "Característica: multisitio - copiar una definición de perfil a todos los sitios actuales de una red"
 
 
1632
 
1633
+ #. Found in changelog list item.
1634
+ msgid "Feature : Support negative capabilities (storage to wp_roles array with false value)"
1635
+ msgstr "Característica: admite capacidades negativas (almacenamiento en la matriz `wp_roles` con valor falso)"
 
1636
 
1637
+ #. Found in changelog list item.
1638
+ msgid "Fixed : Non-administrators with user editing capabilities could give new users a role with a higher level than their own (including Administrator)"
1639
+ msgstr "Corregido: los no administradores con capacidad de edición de usuarios podían dar a los nuevos usuarios un perfil con un nivel superior al suyo (incluido el de administrador)"
1640
 
1641
+ #. Found in changelog list item.
1642
+ msgid "Fixed : Network Super Administrators without an Administrator role on a particular site could not assign an Administrator role to other users of that site"
1643
+ msgstr "Corregido: los super administradores de red sin perfil de administrador en un sitio particular no podían asignar un perfil de administrador a otros usuarios de ese sitio"
1644
 
1645
+ #. Found in changelog list item.
1646
+ msgid "Lang : Updated .pot and .po files"
1647
+ msgstr "Idioma: archivos .pot y .po actualizados"
1648
 
1649
+ #. Found in changelog list item.
1650
+ msgid "Lang : Fixed erroneous text_domain argument for numerous strings"
1651
+ msgstr "Idioma: se ha corregido un argumento `text_domain` erróneo para numerosas cadenas"
1652
 
1653
+ #. Found in changelog list item.
1654
+ msgid "Perf : Don't output wp-admin CSS on non-CME screens"
1655
+ msgstr "Perfeccionamiento: no mostrar el CSS de wp-admin en pantallas que no sean de CME"
1656
 
1657
+ #. Found in changelog list item.
1658
+ msgid "Fixed : CSS caused formatting issues around wp-admin Update button on some installations"
1659
+ msgstr "Corregido: el CSS causaba problemas de formato alrededor del botón de actualización de wp-admin en algunas instalaciones"
1660
 
1661
+ #. Found in changelog list item.
1662
+ msgid "Change : If user_level of Administrator role was cleared, non-Administrators with user editing capabilities could create/edit/delete Administrators. Administrator role is now implicitly treated as level 10."
1663
+ msgstr "Cambio: si el `user_level` del perfil de Administrador estaba desactivado, los no Administradores con capacidades de edición de usuarios podían crear/editar/borrar Administradores. Ahora el perfil de administrador se trata implícitamente como nivel 10."
1664
 
1665
+ #. Found in changelog list item.
1666
+ msgid "Compat : Support third party display of available capabilities via capsman_get_capabilities or members_get_capabilities filter"
1667
+ msgstr "Compatibilidad: Permite la visualización de capacidades disponibles por parte de terceros a través del filtro `capsman_get_capabilities` o `members_get_capabilities`"
1668
 
1669
+ #. Found in changelog list item.
1670
+ msgid "Compat : Press Permit Core - Permission Group refresh was not triggered if Press Permit Core is inactive when CME deletes a role definition"
1671
+ msgstr "Compat: núcleo de Press Permit - la actualización del Grupo de Permisos no se activaba si el núcleo de Press Permit estaba inactivo cuando el CME borraba una definición de perfil"
1672
 
1673
+ #. Found in changelog list item.
1674
+ msgid "Fixed : Deletion of a third party plugin role could cause users to be demoted to Subscriber inappropriately"
1675
+ msgstr "Corregido: la eliminación del perfil de un plugin de terceros podía hacer que los usuarios fueran degradados a suscriptores de forma inapropiada"
1676
 
1677
+ #. Found in changelog list item.
1678
+ msgid "Fixed : On single-site installations, non-Administrators with delete_users capability could give new users an Administrator role (since 1.5.2) "
1679
+ msgstr "Corregido: en instalaciones de un solo sitio, los no administradores con capacidad de `delete_users` podían dar a los nuevos usuarios un perfil de administrador (desde 1.5.2) "
1680
 
1681
+ #. Found in changelog list item.
1682
+ msgid "Lang : Changed text domain for language pack conformance"
1683
+ msgstr "Idioma: se ha modificado el dominio del texto para que sea compatible con el paquete de idiomas"
1684
 
1685
+ #. Found in changelog list item.
1686
+ msgid "Fixed : Non-administrators could not assign their role to other users (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1687
+ msgstr "Corregido: los no administradores no podían asignar su perfil a otros usuarios (definir la constante `CME_LEGACY_USER_EDIT_FILTER` para mantener el comportamiento anterior)"
1688
 
1689
+ #. Found in changelog list item.
1690
+ msgid "Fixed : Non-administrators could not edit other users with their role (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1691
+ msgstr "Corregido: los no administradores no podían editar a otros usuarios con su perfil (definir la constante `CME_LEGACY_USER_EDIT_FILTER` para mantener el comportamiento anterior)"
1692
 
1693
+ #. Found in changelog list item.
1694
+ msgid "Fixed : Non-administrators' user editing capabilities were blocked if Press Permit Core was also active"
1695
+ msgstr "Corregido: las capacidades de edición de los usuarios que no son administradores estaban bloqueadas si el núcleo de Press Permit estaba también activo"
languages/capsman-enhanced-fr_FR.mo ADDED
Binary file
languages/capsman-enhanced-fr_FR.po ADDED
@@ -0,0 +1,3317 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) in French (France)
2
+ # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role "
6
+ "Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
7
+ "POT-Creation-Date: \n"
8
+ "PO-Revision-Date: 2021-12-06 14:00+0100\n"
9
+ "Last-Translator: \n"
10
+ "Language-Team: \n"
11
+ "Language: fr\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "Plural-Forms: nplurals=2; plural=n > 1;\n"
16
+ "X-Generator: Poedit 3.0\n"
17
+
18
+ #. Plugin name.
19
+ msgid ""
20
+ "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
21
+ msgstr ""
22
+ "PublishPress Capabilities - accès aux rôles des utilisateurs, autorisations "
23
+ "d’édition, menus d’administration"
24
+
25
+ #. Short description.
26
+ msgid ""
27
+ "The best permissions plugin allows you to customize user roles, editor "
28
+ "features and admin menus. You control who has access to your WordPress site."
29
+ msgstr ""
30
+ "La meilleure extension de droits vous permet de personnaliser les rôles des "
31
+ "utilisateurs, les fonctionnalités des éditeurs et les menus "
32
+ "d’administration. Vous contrôlez qui a accès à votre site WordPress."
33
+
34
+ #. Found in description paragraph.
35
+ msgid ""
36
+ "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/"
37
+ "\">Click here to learn about removing toolbar items and dashboard widgets</"
38
+ "a>."
39
+ msgstr ""
40
+ "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/"
41
+ "\">Cliquez ici pour en savoir plus sur la suppression des éléments de la "
42
+ "barre d’outils et des widgets du tableau de bord</a>."
43
+
44
+ #. Found in description paragraph.
45
+ msgid ""
46
+ "“Admin Features” allows you to hide features in the WordPress admin area and "
47
+ "toolbar. You can decide what users see in your WordPress dashboard. You can "
48
+ "use this option to hide all the links in the toolbar including \"About "
49
+ "WordPress\", \"Visit Site\" and more. You can also hide dashboard widgets "
50
+ "such as \"At a Glance\", \"Quick Draft\", and \"WordPress Events and News\"."
51
+ msgstr ""
52
+ "« Fonctionnalités d’administration » vous permet de masquer des "
53
+ "fonctionnalités dans la zone d’administration et la barre d’outils de "
54
+ "WordPress. Vous pouvez décider de ce que les utilisateurs voient dans votre "
55
+ "tableau de bord WordPress. Vous pouvez utiliser cette option pour masquer "
56
+ "tous les liens de la barre d’outils, y compris « À propos de WordPress », "
57
+ "« Visiter le site » et plus encore. Vous pouvez également masquer les "
58
+ "widgets du tableau de bord tels que « D’un coup d’œil », « Brouillon "
59
+ "rapide », et « Événements et actualités de WordPress »."
60
+
61
+ #. Found in description list item.
62
+ msgid ""
63
+ "<strong>Hide admin area features</strong>: Remove items from the WordPress "
64
+ "toolbar, plus dashboard widgets."
65
+ msgstr ""
66
+ "<strong>Masquer les fonctionnalités de la zone d’administration</strong> : "
67
+ "supprimez les éléments de la barre d’outils de WordPress, ainsi que les "
68
+ "widgets du tableau de bord."
69
+
70
+ #. Found in description header.
71
+ msgid "4. Hide Toolbar Link and Dashboard Widgets"
72
+ msgstr ""
73
+ "4. Masquer les liens de la barre d’outils et les widgets du tableau de bord"
74
+
75
+ #. Screenshot description.
76
+ msgid ""
77
+ "Admin Feature Restriction: PublishPress Capabilities enables you remove "
78
+ "items from the WordPress toolbar, plus dashboard widgets."
79
+ msgstr ""
80
+ "Restriction des fonctionnalités de l’administrateur : PublishPress "
81
+ "Capabilities vous permet de supprimer des éléments de la barre d’outils de "
82
+ "WordPress, ainsi que des widgets du tableau de bord."
83
+
84
+ #. Found in description header.
85
+ #| msgid "The Key Features of PublishPress Capabilities"
86
+ msgid "PublishPress Capabilities Pro"
87
+ msgstr "PublishPress Capabilities Pro"
88
+
89
+ #. Found in description paragraph.
90
+ msgid ""
91
+ "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-"
92
+ "wordpress-posts/\">Click here to learn about hiding metaboxes</a>."
93
+ msgstr ""
94
+ "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-"
95
+ "wordpress-posts/\">Cliquez ici pour en savoir plus sur le masquage des "
96
+ "boîtes méta</a>."
97
+
98
+ #. Found in description paragraph.
99
+ msgid ""
100
+ "WordPress has a feature called “metaboxes”. This is a strange name, but you "
101
+ "have seen them often if you use WordPress. When a user edits a post, the "
102
+ "edit screen has several default boxes: Status &amp; visibility, Featured "
103
+ "image, Categories, Tags, etc. These boxes are metaboxes. Plugins can add "
104
+ "also add their own metaboxes. The Pro version of the PublishPress "
105
+ "Capabilities plugin allows you to hide metaboxes for specific user roles."
106
+ msgstr ""
107
+ "WordPress a une fonctionnalité appelée « métaboxes ou boîtes méta ». C’est "
108
+ "un nom étrange, mais vous les avez souvent vues si vous utilisez WordPress. "
109
+ "Lorsqu’un utilisateur modifie un article, l’écran de modification comporte "
110
+ "plusieurs boîtes par défaut : État et visibilité, Image mise en avant, "
111
+ "Catégories, Étiquettes, etc. Ces boîtes sont des boîtes méta. Les extensions "
112
+ "peuvent également ajouter leurs propres boîtes méta. La version Pro de la "
113
+ "extension PublishPress Capabilities vous autorise à masquer les boîtes méta "
114
+ "pour des rôles d’utilisateurs/utilisatrices spécifiques."
115
+
116
+ #. Found in description paragraph.
117
+ msgid ""
118
+ "<strong>Upgrade to Capabilities Pro</strong><br />\n"
119
+ " This plugin is the free version of PublishPress Capabilities. The Pro "
120
+ "version of Capabilities has all the features you need to control permissions "
121
+ "for your WordPress users. With Capabilities Pro you can manage access to "
122
+ "posts, pages, media and custom post types. <a href=\"https://publishpress."
123
+ "com/capabilities\" title=\"Capabilities Pro\">Click here to control access "
124
+ "to your WordPress site with Capabilities Pro!</a>"
125
+ msgstr ""
126
+ "<strong>Mise à niveau vers Capabilities Pro</strong><br />\n"
127
+ " Cette extension est la version gratuite de PublishPress Capabilities. La "
128
+ "version Pro de Capabilities possède toutes les fonctionnalités dont vous "
129
+ "avez besoin pour contrôler les droits de vos utilisateurs WordPress. Avec "
130
+ "Capabilities Pro, vous pouvez gérer l’accès aux articles, pages, médias et "
131
+ "types de publications personnalisés. <a href=\"https://publishpress.com/"
132
+ "capabilities\" title=\"Capabilities Pro\">Cliquez ici pour contrôler l’accès "
133
+ "à votre site WordPress avec Capabilities Pro !</a>"
134
+
135
+ #. Found in description list item.
136
+ msgid ""
137
+ "<strong>Hide editor metaboxes (Pro version)</strong>: You can hide metaboxes "
138
+ "on the post editing screen. "
139
+ msgstr ""
140
+ "<strong>Masquer l’éditeur des boîtes méta (version Pro)</strong> : vous "
141
+ "pouvez masquer les boîtes méta sur l’écran de modification des publications. "
142
+
143
+ #. Found in description header.
144
+ msgid "6. Hide Metaboxes in WordPress Posts"
145
+ msgstr "6. Masquer les boîtes méta dans les publications WordPress"
146
+
147
+ #. Screenshot description.
148
+ msgid ""
149
+ "Editor Feature Restriction: PublishPress Capabilities enables you to decide "
150
+ "what users see when they're writing posts."
151
+ msgstr ""
152
+ "Éditeur de restriction des fonctionnalités : les fonctionnalités de "
153
+ "PublishPress vous permettent de décider ce que les utilisateurs voient "
154
+ "lorsqu’ils rédigent des publications."
155
+
156
+ #. Screenshot description.
157
+ msgid ""
158
+ "Admin Menu Restrictions: With PublishPress Capabilities you can restrict "
159
+ "access to admin menu screens by user roles."
160
+ msgstr ""
161
+ "Restrictions du menu d’administration : avec PublishPress Capabilities, vous "
162
+ "pouvez restreindre l’accès aux écrans du menu d’administration en fonction "
163
+ "des rôles des utilisateurs."
164
+
165
+ #. Screenshot description.
166
+ msgid ""
167
+ "Navigation Menu Restrictions: PublishPress Capabilities enables you to "
168
+ "restrict access to navigation menus by roles, logged in and logged out users."
169
+ msgstr ""
170
+ "Restrictions des menus de navigation : PublishPress Capabilities vous permet "
171
+ "de restreindre l’accès aux menus de navigation par rôles, utilisateurs "
172
+ "connectés et déconnectés."
173
+
174
+ #. Screenshot description.
175
+ msgid ""
176
+ "WooCommerce Permissions: With PublishPress Capabilities you can control "
177
+ "permissions for WooCommerce products, orders and coupons."
178
+ msgstr ""
179
+ "Droits WooCommerce : avec PublishPress Capabilities, vous pouvez contrôler "
180
+ "les permissions pour les produits, les commandes et les codes promo de "
181
+ "WooCommerce."
182
+
183
+ #. Screenshot description.
184
+ msgid ""
185
+ "Media Library Permissions: PublishPress Capabilities enables you to decide "
186
+ "who can upload, edit and delete files from your site’s Media Library."
187
+ msgstr ""
188
+ "Droits de la médiathèque : PublishPress Capabilities vous permet de décider "
189
+ "qui peut télécharger, modifier et supprimer les fichiers de la médiathèque "
190
+ "de votre site."
191
+
192
+ #. Screenshot description.
193
+ msgid ""
194
+ "Permission backups: Every time you change your permissions, the PublishPress "
195
+ "Capabilities plugin will automatically create a backup."
196
+ msgstr ""
197
+ "Sauvegarde des droits : chaque fois que vous modifiez vos droits, la "
198
+ "extension PublishPress Capabilities créera automatiquement une sauvegarde."
199
+
200
+ #. Screenshot description.
201
+ msgid ""
202
+ "Enforce Taxonomy-Specific Capabilities: You can give “Manage”, “Edit” and "
203
+ "“Assign” permissions for all your taxonomies."
204
+ msgstr ""
205
+ "Donner des droits spécifiques à une taxonomie : vous pouvez donner des "
206
+ "autorisations « gérer », « modifier » et « attribuer » pour toutes vos "
207
+ "taxonomies."
208
+
209
+ #. Screenshot description.
210
+ msgid ""
211
+ "Custom Statuses: With Capabilities Pro, you can decide which user roles are "
212
+ "able to send posts to each status."
213
+ msgstr ""
214
+ "États personnalisés : avec Capabilities Pro, vous pouvez décider quels rôles "
215
+ "d’utilisateur peuvent envoyer des publications à chaque état."
216
+
217
+ #. Screenshot description.
218
+ msgid ""
219
+ "Multi-site support: Capabilities can control permissions on a single site or "
220
+ "across your whole network."
221
+ msgstr ""
222
+ "Prise en charge multisite : Capabilities vous permet de contrôler les droits "
223
+ "d’accès sur un seul site ou sur l’ensemble de votre réseau."
224
+
225
+ #. Screenshot description.
226
+ msgid ""
227
+ "Content permissions: With Capabilities, you can choose who can Publish, "
228
+ "Read, Edit and Delete content."
229
+ msgstr ""
230
+ "Droits sur le contenu : avec Capabilities vous pouvez choisir qui peut "
231
+ "publier, lire, modifier et supprimer le contenu."
232
+
233
+ #. Screenshot description.
234
+ msgid ""
235
+ "Create and copy user roles: With PublishPress Capabilities you can create or "
236
+ "copy any existing WordPress user role."
237
+ msgstr ""
238
+ "Créer et copier les rôles des utilisateurs : avec PublishPress Capabilities, "
239
+ "vous pouvez créer ou copier tous les rôles utilisateurs existants de "
240
+ "WordPress."
241
+
242
+ #. Screenshot description.
243
+ msgid ""
244
+ "Control user permissions: You can customize all the user roles on your site, "
245
+ "from Administrator to Subscriber."
246
+ msgstr ""
247
+ "Contrôlez les droits des utilisateurs : vous pouvez personnaliser tous les "
248
+ "rôles des utilisateurs sur votre site, de l’administrateur à l’abonné."
249
+
250
+ #. Found in description list item.
251
+ #| msgid ""
252
+ #| "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
253
+ #| "allows you to add multiple authors and guest authors to WordPress posts."
254
+ msgid ""
255
+ "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> has "
256
+ "everything you need to build professional websites with the WordPress block "
257
+ "editor."
258
+ msgstr ""
259
+ "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> a "
260
+ "tout ce dont vous avez besoin pour créer des sites Web professionnels avec "
261
+ "l’éditeur de blocs WordPress."
262
+
263
+ #. Found in description list item.
264
+ #| msgid ""
265
+ #| "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions "
266
+ #| "Pro</a> allows you to update your published pages with teamwork and "
267
+ #| "precision."
268
+ msgid ""
269
+ "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> "
270
+ "enables you to group content together into a series "
271
+ msgstr ""
272
+ "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> vous "
273
+ "permet de regrouper les contenus dans une série "
274
+
275
+ #. Found in faq paragraph.
276
+ msgid ""
277
+ "Jetpack is a plugin built by Automattic, the company behind WordPress.com. "
278
+ "This plugin offers many different services including backups, spam blocking, "
279
+ "analytics, malware scans, contact forms, and more. PublishPress Capabilities "
280
+ "can help you manage Jetpack permissisons."
281
+ msgstr ""
282
+ "Jetpack est une extension construite par Automattic, la société derrière "
283
+ "WordPress.com. Cette extension offre de nombreux services différents, y "
284
+ "compris les sauvegardes, le blocage des indésirables, les mesures "
285
+ "d’audience, les analyses de logiciels malveillants, les formulaires de "
286
+ "contact, et plus encore. PublishPress Capabilities peut vous aider à gérer "
287
+ "les droits de Jetpack."
288
+
289
+ #. Found in faq paragraph.
290
+ msgid ""
291
+ "The Elementor plugin is one of the most popular drag-and-drop page builders. "
292
+ "With Elementor, you’re editing the site live, and simultaneously see exactly "
293
+ "how it looks like. Elementor designs are full-responsive and come with over "
294
+ "40 powerful widgets. PublishPress Capabilities can help you manage Elementor "
295
+ "permissisons."
296
+ msgstr ""
297
+ "Elementor est l’un des constructeurs de pages par glisser-déposer les plus "
298
+ "populaires. Avec Elementor, vous éditez le site en direct, et voyez "
299
+ "simultanément à quoi il ressemble exactement. Les designs Elementor sont "
300
+ "entièrement responsive et viennent avec plus de 40 widgets puissants. "
301
+ "PublishPress Capabilities peut vous aider à gérer les droits d’Elementor."
302
+
303
+ #. Found in faq paragraph.
304
+ msgid ""
305
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-"
306
+ "forms-admin-menus/\">Click here to learn about Gravity Forms menu "
307
+ "permissions</a>."
308
+ msgstr ""
309
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-"
310
+ "forms-admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès "
311
+ "au menu de Gravity Forms.</a>."
312
+
313
+ #. Found in faq paragraph.
314
+ msgid ""
315
+ "This approach works for the core Gravity Forms plugin and can also be used "
316
+ "for add-on plugins from the official site, or third-party sites."
317
+ msgstr ""
318
+ "Cette approche fonctionne pour la extension Gravity Forms principale et peut "
319
+ "également être utilisée pour des modules complémentaires du site officiel ou "
320
+ "de sites tiers."
321
+
322
+ #. Found in faq paragraph.
323
+ msgid ""
324
+ "It is possible to control who can access these links by using the "
325
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
326
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
327
+ "admin area. In the top-left corner of this screen, choose the role that you "
328
+ "want to edit. For example, you can restrict access for the “Editor” role. By "
329
+ "default, Editors aren't given access to Gravity Forms, but site "
330
+ "administrators often do they give them some access. Scroll down and you can "
331
+ "enter a red X for any Gravity Forms menu link that you don't want users in "
332
+ "the Editor role to access. Now when an Editor logs in to your site, they "
333
+ "will not be able to see the blocked Gravity Forms menu links."
334
+ msgstr ""
335
+ "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
336
+ "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
337
+ "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
338
+ "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
339
+ "écran, choisissez le rôle que vous souhaitez modifier. Par exemple, vous "
340
+ "pouvez restreindre l’accès au rôle « Éditeur/éditrice ». Par défaut, les "
341
+ "éditeurs/éditrices n’ont pas accès à Gravity Forms, mais les administrateurs "
342
+ "de sites leur donnent souvent un certain accès. Faites défiler la page vers "
343
+ "le bas et vous pouvez inscrire un X rouge pour tout lien du menu Gravity "
344
+ "Forms auquel vous ne voulez pas que les utilisateurs ayant le rôle d’éditeur/"
345
+ "éditrice aient accès. Désormais, lorsqu’un éditeur ou éditrice se connectera "
346
+ "à votre site, il ne pourra pas voir les liens de menu Gravity Forms bloqués."
347
+
348
+ #. Found in faq paragraph.
349
+ msgid ""
350
+ "When you first install Gravity Forms, you'll see one top-level menu link, "
351
+ "plus eight sub-menus."
352
+ msgstr ""
353
+ "Lorsque vous installez la extension Gravity Forms pour la première fois, "
354
+ "vous verrez un lien de menu de niveau supérieur et huit sous-menus."
355
+
356
+ #. Found in faq paragraph.
357
+ msgid ""
358
+ "Gravity Forms is perhaps the most popular contact form plugin for WordPress. "
359
+ "You can build and publish your WordPress forms in just minutes. Choose your "
360
+ "fields, configure your options and easily embed forms on your WordPress-"
361
+ "powered site. Gravity Forms allows you to easily integrate with third party "
362
+ "services such as PayPal, Mailchimp, and Zapier."
363
+ msgstr ""
364
+ "Gravity Forms est peut-être la extension de formulaire de contact la plus "
365
+ "populaire pour WordPress. Vous pouvez créer et publier vos formulaires "
366
+ "WordPress en quelques minutes seulement. Choisissez vos champs, configurez "
367
+ "vos options et intégrez facilement les formulaires sur votre site alimenté "
368
+ "par WordPress. Gravity Forms vous permet d’intégrer facilement des services "
369
+ "tiers tels que PayPal, Mailchimp et Zapier."
370
+
371
+ #. Found in faq paragraph.
372
+ msgid ""
373
+ "The Pro version of PublishPress Capabilities allows you to block access to "
374
+ "admin menu links in the Gravity Forms plugin. This is useful because Gravity "
375
+ "Forms has limited options for controlling who can access the admin screens."
376
+ msgstr ""
377
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
378
+ "aux liens du menu administrateur dans la extension Gravity Forms. Ceci est "
379
+ "utile car Gravity Forms a des options limitées pour contrôler qui peut "
380
+ "accéder aux écrans d’administration."
381
+
382
+ #. Found in faq paragraph.
383
+ msgid ""
384
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-"
385
+ "calendar-admin-menus/\">Click here to learn about The Events Calendar menu "
386
+ "permissions</a>."
387
+ msgstr ""
388
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-"
389
+ "calendar-admin-menus/\">Cliquez ici pour en savoir plus sur les droits "
390
+ "d’accès au menu de The Events Calendar</a>."
391
+
392
+ #. Found in faq paragraph.
393
+ msgid ""
394
+ "This approach works for the core The Events Calendar plugin and can also be "
395
+ "used for add-on plugins such as Virtual Events, Events Tickets, and more."
396
+ msgstr ""
397
+ "Cette approche fonctionne pour le cœur de la extension The Events Calendar "
398
+ "et peut également être utilisée pour des modules complémentaires tels que "
399
+ "Virtual Events, Events Tickets, etc."
400
+
401
+ #. Found in faq paragraph.
402
+ msgid ""
403
+ "It is possible to control who can access these The Events Calendar plugin "
404
+ "links by using the PublishPress Capabilities Pro plugin. After installing "
405
+ "PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in "
406
+ "your WordPress admin area. In the top-left corner of this screen, choose the "
407
+ "role that you want to edit. For example, you can restrict The Events "
408
+ "Calendar access for the “Editor” role. Scroll down and you can enter a red X "
409
+ "for any The Events Calendar menu link that you don't want users in the "
410
+ "Editor role to access. Now when an Administrator logs in to your site, they "
411
+ "will not be able to see the Events Calendar menu links that you have blocked:"
412
+ msgstr ""
413
+ "Il est possible de contrôler qui peut accéder à ces liens de la extension "
414
+ "The Events Calendar en utilisant la extension PublishPress Capabilities Pro. "
415
+ "Après avoir installé PublishPress Capabilities Pro, allez dans "
416
+ "« Capabilities », puis « Admin Menus » dans votre zone d’administration "
417
+ "WordPress. Dans le coin supérieur gauche de cet écran, choisissez le rôle "
418
+ "que vous souhaitez modifier. Par exemple, vous pouvez restreindre l’accès à "
419
+ "The Events Calendar pour le rôle « Éditeur/éditrice ». Faites défiler la "
420
+ "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
421
+ "The Events Calendar auquel vous ne voulez pas que les utilisateurs ayant le "
422
+ "rôle d’éditeur/éditrice aient accès. Désormais, lorsqu’un éditeur ou "
423
+ "éditrice se connecteront à votre site, ils ne pourront pas voir les liens de "
424
+ "menu The Events Calendar bloqués :"
425
+
426
+ #. Found in faq paragraph.
427
+ msgid ""
428
+ "When you first install the The Events Calendar plugin, you'll see one top-"
429
+ "level menu link, plus at least 10 sub-menus:"
430
+ msgstr ""
431
+ "Lorsque vous installez la extension The Events Calendar pour la première "
432
+ "fois, vous verrez un lien de menu de niveau supérieur et dix sous-menus : "
433
+
434
+ #. Found in faq paragraph.
435
+ msgid ""
436
+ "With The Events Calendar, you can easily create and manage an events "
437
+ "calendar on your WordPress site. The plugin supports both in-person and "
438
+ "virtual events. There are also many ways to extend the plugin for recurring "
439
+ "events, ticket sales, user-submitted events and more."
440
+ msgstr ""
441
+ "Avec The Events Calendar, vous pouvez facilement créer et gérer un "
442
+ "calendrier d’événements sur votre site WordPress. Cette extension prend en "
443
+ "charge les événements en personne et virtuels. Il existe également de "
444
+ "nombreuses façons d’étendre cette extension pour les événements récurrents, "
445
+ "la vente de billets, les événements soumis par les utilisateurs et plus "
446
+ "encore."
447
+
448
+ #. Found in faq paragraph.
449
+ msgid ""
450
+ "The Pro version of PublishPress Capabilities allows you to block access to "
451
+ "admin menu links in The Events Calendar plugin. This is useful because The "
452
+ "Events Calendar has limited options for managing who can access the admin "
453
+ "screens and important features."
454
+ msgstr ""
455
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
456
+ "aux liens du menu administrateur dans la extension The Events Calendar. Ceci "
457
+ "est utile car The Events Calendar a des options limitées pour contrôler qui "
458
+ "peut accéder aux écrans d’administration."
459
+
460
+ #. Found in faq paragraph.
461
+ #| msgid ""
462
+ #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
463
+ #| "\">Click here to learn about WooCommerce permissions</a>."
464
+ msgid ""
465
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-"
466
+ "admin-menus/\">Click here to learn about WPForms menu permissions</a>."
467
+ msgstr ""
468
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-"
469
+ "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
470
+ "menu de WPForms</a>."
471
+
472
+ #. Found in faq paragraph.
473
+ msgid ""
474
+ "This approach works for the core WPForms plugin and can also be used for add-"
475
+ "on plugins such as Form Abandonment, Form Locker, Offline Forms, and more."
476
+ msgstr ""
477
+ "Cette approche fonctionne pour le cœur de la extension WPForms et peut "
478
+ "également être utilisée pour des modules complémentaires tels que Form "
479
+ "Abandonment, Form Locker, Offline Forms, etc."
480
+
481
+ #. Found in faq paragraph.
482
+ msgid ""
483
+ "Scroll down and you can enter a red X for any WPForms menu link that you "
484
+ "don't want users in the Administrator role to access. Now when an "
485
+ "Administrator logs in to your site, they will not be able to see the WPForms "
486
+ "menu links that you have blocked."
487
+ msgstr ""
488
+ "Faites défiler la page vers le bas et vous pouvez inscrire un X rouge pour "
489
+ "tout lien du menu auquel vous ne voulez pas que les utilisateurs ayant le "
490
+ "rôle d’administrateur ou administratrice aient accès. Désormais, lorsqu’un "
491
+ "administrateur ou une administratrice se connectera à votre site, ils ne "
492
+ "pourront pas voir les liens de menu WPForms que vous avez bloqué."
493
+
494
+ #. Found in faq paragraph.
495
+ msgid ""
496
+ "It is possible to control who can access these WPForms plugin links by using "
497
+ "the PublishPress Capabilities Pro plugin. After installing PublishPress "
498
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
499
+ "admin area. In the top-left corner of this screen, choose the role that you "
500
+ "want to edit. For example, you can restrict WPForms access for the "
501
+ "“Administrator” role. If you do this, I would recommend making a copy of the "
502
+ "Administrator role so that one role still has full WPForms access."
503
+ msgstr ""
504
+ "Il est possible de contrôler qui peut accéder à ces liens de la extension "
505
+ "WPForms en utilisant la extension PublishPress Capabilities Pro. Après avoir "
506
+ "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
507
+ "« Admin Menus » dans votre zone d’administration WordPress. Dans le coin "
508
+ "supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
509
+ "modifier. Par exemple, vous pouvez restreindre l’accès à WPForms pour le "
510
+ "rôle « Administrateur/administratrice ». Si vous faites cela, nous vous "
511
+ "recommandons de faire une copie du rôle d’administrateur et "
512
+ "d’administratrice afin que l’un des rôles ait toujours un accès complet à "
513
+ "WPForms."
514
+
515
+ #. Found in faq paragraph.
516
+ msgid ""
517
+ "When you first install the WPForms plugin, you'll see one top-level menu "
518
+ "link, plus at least 10 sub-menus:"
519
+ msgstr ""
520
+ "Lorsque vous installez la extension WPForms pour la première fois, vous "
521
+ "verrez un lien de menu de niveau supérieur et dix sous-menus : "
522
+
523
+ #. Found in faq paragraph.
524
+ msgid ""
525
+ "WPForms is one of the most popular WordPress contact form plugin with "
526
+ "millions of active installs. WPForms allows you to create beautiful contact "
527
+ "forms, feedback forms, subscription forms, payment forms, and more."
528
+ msgstr ""
529
+ "WPForms est l’une des extensions de formulaire de contact WordPress les plus "
530
+ "populaires avec des millions d’installations actives. WPForms vous permet de "
531
+ "créer de magnifiques formulaires de contact, des formulaires de "
532
+ "commentaires, des formulaires d’abonnement, des formulaires de paiement, et "
533
+ "plus encore."
534
+
535
+ #. Found in faq paragraph.
536
+ msgid ""
537
+ "The Pro version of PublishPress Capabilities allows you to block access to "
538
+ "admin menu links in the WP Forms plugin. This is useful because WPForms has "
539
+ "limited options for managing who can access the admin screens and important "
540
+ "features."
541
+ msgstr ""
542
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
543
+ "aux liens du menu administrateur dans la extension WP Forms. Ceci est utile "
544
+ "car WP Forms a des options limitées pour contrôler qui peut accéder aux "
545
+ "écrans d’administration et aux fonctionnalités importantes."
546
+
547
+ #. Found in faq paragraph.
548
+ #| msgid ""
549
+ #| "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
550
+ #| "access/\">Click here to learn about Media Library permissions</a>."
551
+ msgid ""
552
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-"
553
+ "admin-menus/\">Click here to learn about Jetpack permissions</a>."
554
+ msgstr ""
555
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-"
556
+ "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès à "
557
+ "Jetpack</a>."
558
+
559
+ #. Found in faq paragraph.
560
+ #| msgid ""
561
+ #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
562
+ #| "\">Click here to learn about WooCommerce permissions</a>."
563
+ msgid ""
564
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-"
565
+ "admin-menus/\">Click here to learn about Elementor menu permissions</a>."
566
+ msgstr ""
567
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-"
568
+ "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
569
+ "menu de Elementor</a>."
570
+
571
+ #. Found in faq paragraph.
572
+ #| msgid ""
573
+ #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
574
+ #| "\">Click here to learn about WooCommerce permissions</a>."
575
+ msgid ""
576
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-"
577
+ "admin-menus/\">Click here to learn about Yoast SEO menu permissions</a>."
578
+ msgstr ""
579
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-"
580
+ "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
581
+ "menu de Yoast SEO</a>."
582
+
583
+ #. Found in faq paragraph.
584
+ #| msgid ""
585
+ #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
586
+ #| "\">Click here to learn about WooCommerce permissions</a>."
587
+ msgid ""
588
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-"
589
+ "form-7-admin-menus/\">Click here to learn about Contact Form 7 menu "
590
+ "permissions</a>."
591
+ msgstr ""
592
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-"
593
+ "form-7-admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès "
594
+ "au menu de Contact Form 7</a>."
595
+
596
+ #. Found in faq paragraph.
597
+ #| msgid ""
598
+ #| "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
599
+ #| "\">Click here to learn about WooCommerce permissions</a>."
600
+ msgid ""
601
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-"
602
+ "admin-menus/\">Click here to learn about WooCommerce menu permissions</a>."
603
+ msgstr ""
604
+ "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-"
605
+ "admin-menus/\">Cliquez ici pour en savoir plus sur les droits d’accès au "
606
+ "menu de WooCommerce</a>."
607
+
608
+ #. Found in faq list item.
609
+ msgid "System Status"
610
+ msgstr "État du système"
611
+
612
+ #. Found in faq list item.
613
+ msgid "Add-ons"
614
+ msgstr "Modules complémentaires"
615
+
616
+ #. Found in faq list item.
617
+ msgid "Import/Export"
618
+ msgstr "Importer/Exporter"
619
+
620
+ #. Found in faq list item.
621
+ msgid "New Form"
622
+ msgstr "Nouveau formulaire"
623
+
624
+ #. Found in faq list item.
625
+ msgid "Forms"
626
+ msgstr "Formulaires"
627
+
628
+ #. Found in faq list item.
629
+ msgid "Event Add-Ons"
630
+ msgstr "Modules complémentaires pour les événements"
631
+
632
+ #. Found in faq list item.
633
+ msgid "Help"
634
+ msgstr "Aide"
635
+
636
+ #. Found in faq list item.
637
+ msgid "Import"
638
+ msgstr "Importer"
639
+
640
+ #. Found in faq list item.
641
+ msgid "Organizers"
642
+ msgstr "Organisateurs"
643
+
644
+ #. Found in faq list item.
645
+ msgid "Venues"
646
+ msgstr "Lieux"
647
+
648
+ #. Found in faq list item.
649
+ msgid "Events Categories"
650
+ msgstr "Catégories d’événements"
651
+
652
+ #. Found in faq list item.
653
+ msgid "Tag"
654
+ msgstr "Étiquette"
655
+
656
+ #. Found in faq list item.
657
+ msgid "Events"
658
+ msgstr "Événements"
659
+
660
+ #. Found in faq list item.
661
+ msgid "Community"
662
+ msgstr "Communauté"
663
+
664
+ #. Found in faq list item.
665
+ msgid "About Us"
666
+ msgstr "À propos de nous"
667
+
668
+ #. Found in faq list item.
669
+ msgid "SMTP"
670
+ msgstr "SMTP"
671
+
672
+ #. Found in faq list item.
673
+ msgid "Addons"
674
+ msgstr "Modules complémentaires"
675
+
676
+ #. Found in faq list item.
677
+ msgid "Entries"
678
+ msgstr "Entrées"
679
+
680
+ #. Found in faq list item.
681
+ msgid "All Forms"
682
+ msgstr "Tous les formulaires"
683
+
684
+ #. Found in faq header.
685
+ msgid "How Do I Control The Gravity Forms User Roles and Permissions?"
686
+ msgstr ""
687
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
688
+ "Gravity Forms ?"
689
+
690
+ #. Found in faq header.
691
+ msgid "How Do I Control The Events Calendar User Roles and Permissions?"
692
+ msgstr ""
693
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de The "
694
+ "Events Calendar ?"
695
+
696
+ #. Found in faq header.
697
+ msgid "How Do I Control WPForms User Roles and Permissions?"
698
+ msgstr ""
699
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
700
+ "WPForms ?"
701
+
702
+ #. Found in faq header.
703
+ msgid "How Do I Control WooCommerce Menu Link Permissions?"
704
+ msgstr "Comment puis-je contrôler les droits des liens du menu WooCommerce ?"
705
+
706
+ #. Found in faq paragraph.
707
+ msgid ""
708
+ "It is possible to control who can access these Jetpack links by using the "
709
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
710
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
711
+ "admin area. In the top-left corner of this screen, choose the role that you "
712
+ "want to edit. For example, you can restrict Jetpack access for the "
713
+ "“Administrator” role. If you do this, I would recommend making a copy of the "
714
+ "Administrator role so that one role still has full Jetpack access. Scroll "
715
+ "down and you can enter a red X for any Jetpack menu link that you don't want "
716
+ "users in the Administrator role to access. Now when an Administrator logs in "
717
+ "to your site, they will not be able to see the Jetpack menu links that you "
718
+ "have blocked. This approach works for the core Jetpack plugin and can also "
719
+ "be used for add-on plugins such as Jetpack CRM and others."
720
+ msgstr ""
721
+ "Il est possible de contrôler qui peut accéder à ces liens de la extension "
722
+ "Jetpack en utilisant la extension PublishPress Capabilities Pro. Après avoir "
723
+ "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
724
+ "« Admin Menus » dans votre zone d’administration WordPress. Dans le coin "
725
+ "supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
726
+ "modifier. Par exemple, vous pouvez restreindre l’accès à Jetpack pour le "
727
+ "rôle « Administrateur/administratrice ». Faites défiler la page vers le bas "
728
+ "et vous pouvez inscrire un X rouge pour tout lien du menu Jetpack auquel "
729
+ "vous ne voulez pas que les utilisateurs ayant le rôle d’administrateur ou "
730
+ "administratrice aient accès. Désormais, lorsqu’un administrateur ou une "
731
+ "administratrice se connecteront à votre site, il ne pourront pas voir les "
732
+ "liens de menu Jetpack que vous avez bloqué : "
733
+
734
+ #. Found in faq paragraph.
735
+ msgid ""
736
+ "When you first install the Jetpack plugin, you'll see one top-level menu "
737
+ "link, plus at least 2 sub-menus:"
738
+ msgstr ""
739
+ "Lorsque vous installez la extension Jetpack pour la première fois, vous "
740
+ "verrez un lien de menu de niveau supérieur et deux sous-menus : "
741
+
742
+ #. Found in faq paragraph.
743
+ msgid ""
744
+ "The Pro version of PublishPress Capabilities allows you to block access to "
745
+ "admin menu links in the Jetpack plugin. This is useful because Jetpack has "
746
+ "limited options for managing who can access the admin screens and important "
747
+ "features."
748
+ msgstr ""
749
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
750
+ "aux liens du menu administrateur dans la extension Jetpack. Ceci est utile "
751
+ "car Jetpack a des options limitées pour contrôler qui peut accéder aux "
752
+ "écrans d’administration."
753
+
754
+ #. Found in faq paragraph.
755
+ msgid ""
756
+ "This approach works for the core Elementor plugin and can also be used for "
757
+ "add-on plugins such as Essential Addons, Premium Addons, and others."
758
+ msgstr ""
759
+ "Cette approche fonctionne pour le cœur de la extension Elementor et peut "
760
+ "également être utilisée pour des modules complémentaires tels que Essential "
761
+ "Addons, Premium Addons, etc."
762
+
763
+ #. Found in faq paragraph.
764
+ msgid ""
765
+ "In the top-left corner of this screen, choose the role that you want to "
766
+ "edit. For example, you can restrict Elementor access for the “Administrator” "
767
+ "role. If you do this, I would recommend making a copy of the Administrator "
768
+ "role so that one role still has full Elementor access. Scroll down and you "
769
+ "can enter a red X for any Elementor menu link that you don't want users in "
770
+ "the Administrator role to access."
771
+ msgstr ""
772
+ "Dans le coin supérieur gauche de cet écran, choisissez le rôle que vous "
773
+ "souhaitez modifier. Par exemple, vous pouvez restreindre l’accès à Elementor "
774
+ "pour le rôle « Administrateur/administratrice ». Si vous faites cela, nous "
775
+ "vous recommandons de faire une copie du rôle d’administrateur et "
776
+ "d’administratrice afin que l’un des rôles ait toujours un accès complet à "
777
+ "WPForms."
778
+
779
+ #. Found in faq paragraph.
780
+ msgid ""
781
+ "It is possible to control who can access Elementor menu links by using the "
782
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
783
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
784
+ "admin area."
785
+ msgstr ""
786
+ "Il est possible de contrôler qui peut accéder à ces liens du menu Elementor "
787
+ "en utilisant la extension PublishPress Capabilities Pro. Après avoir "
788
+ "installé PublishPress Capabilities Pro, allez dans « Capabilities », puis "
789
+ "« Admin Menus » dans votre zone d’administration WordPress."
790
+
791
+ #. Found in faq paragraph.
792
+ msgid ""
793
+ "When you first install Elementor, you'll see one top-level menu link, plus "
794
+ "at least 9 sub-menus:"
795
+ msgstr ""
796
+ "Lorsque vous installez la extension Elementor pour la première fois, vous "
797
+ "verrez un lien de menu de niveau supérieur et neuf sous-menus : "
798
+
799
+ #. Found in faq paragraph.
800
+ msgid ""
801
+ "The Pro version of PublishPress Capabilities allows you to block access to "
802
+ "admin menu links in the Elementor plugin. This is useful because Elementor "
803
+ "has limited options for managing who can access the admin screens and "
804
+ "important features."
805
+ msgstr ""
806
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
807
+ "aux liens du menu administrateur dans la extension Elementor. Ceci est utile "
808
+ "car Elementor a des options limitées pour contrôler qui peut accéder aux "
809
+ "écrans d’administration et aux fonctionnalités importantes."
810
+
811
+ #. Found in faq paragraph.
812
+ msgid ""
813
+ "This approach works for the core Yoast SEO plugin and can also be used for "
814
+ "add-on plugins such as Local SEO, WooCommerce SEO, Google News, and more."
815
+ msgstr ""
816
+ "Cette approche fonctionne pour le cœur de la extension Yoast SEO et peut "
817
+ "également être utilisée pour des modules complémentaires tels que Local SEO, "
818
+ "WooCommerce SEO, Google News, etc."
819
+
820
+ #. Found in faq paragraph.
821
+ msgid ""
822
+ "It is possible to control who can access these Yoast SEO links by using the "
823
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
824
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
825
+ "admin area. In the top-left corner of this screen, choose the role that you "
826
+ "want to edit. For example, you can restrict Yoast SEO access for the “SEO "
827
+ "Manager” role. Scroll down and you can enter a red X for any menu link that "
828
+ "you don't want users in the SEO Manager role to access."
829
+ msgstr ""
830
+ "Il est possible de contrôler qui peut accéder à ces liens de la extension "
831
+ "Yoast SEO en utilisant la extension PublishPress Capabilities Pro. Après "
832
+ "avoir installé PublishPress Capabilities Pro, allez dans « Capabilities », "
833
+ "puis « Admin Menus » dans votre zone d’administration WordPress. Dans le "
834
+ "coin supérieur gauche de cet écran, choisissez le rôle que vous souhaitez "
835
+ "modifier. Par exemple, vous pouvez restreindre l’accès à Yoast SEO pour le "
836
+ "rôle « Responsable SEO ». Faites défiler la page vers le bas et vous pouvez "
837
+ "inscrire un X rouge pour tout lien du menu auquel vous ne voulez pas que les "
838
+ "utilisateurs ayant le rôle de responsable SEO aient accès."
839
+
840
+ #. Found in faq paragraph.
841
+ msgid ""
842
+ "When you first install Yoast SEO, you'll see one top-level menu link, plus "
843
+ "at least 5 sub-menus:"
844
+ msgstr ""
845
+ "Lorsque vous installez la extension Yoast SEO pour la première fois, vous "
846
+ "verrez un lien de menu de niveau supérieur et cinq sous-menus : "
847
+
848
+ #. Found in faq paragraph.
849
+ msgid ""
850
+ "Yoast SEO is the most popular WordPress SEO plugin and contains everything "
851
+ "that you need to manage your SEO. Yoast SEO is packed full of feature that "
852
+ "help search engines to find and understand your website."
853
+ msgstr ""
854
+ "Yoast SEO est la extension WordPress SEO la plus populaire et contient tout "
855
+ "ce dont vous avez besoin pour gérer votre référencement. Yoast SEO est "
856
+ "rempli de fonctionnalités qui aident les moteurs de recherche à trouver et à "
857
+ "comprendre votre site web."
858
+
859
+ #. Found in faq paragraph.
860
+ msgid ""
861
+ "The Pro version of PublishPress Capabilities allows you to block access to "
862
+ "admin menu links in the Yoast SEO plugin. This is useful because Yoast SEO "
863
+ "has limited options for managing who can access the admin screens and "
864
+ "important features."
865
+ msgstr ""
866
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
867
+ "aux liens du menu administrateur dans la extension Yoast SEO. Ceci est utile "
868
+ "car Yoast SEO a des options limitées pour contrôler qui peut accéder aux "
869
+ "écrans d’administration et aux fonctionnalités importantes."
870
+
871
+ #. Found in faq paragraph.
872
+ msgid ""
873
+ "It is possible to control who can access these links by using the "
874
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
875
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
876
+ "admin area. In the top-left corner of this screen, choose the role that you "
877
+ "want to edit. Scroll down and you can enter a red X for any menu link that "
878
+ "you don't want users in the Editor role to access. This approach works for "
879
+ "the core Contact Form 7 plugin and can also be used for add-on plugins such "
880
+ "as Flamingo which records entries for Contact Form 7 forms."
881
+ msgstr ""
882
+ "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
883
+ "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
884
+ "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
885
+ "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
886
+ "écran, choisissez le rôle que vous souhaitez modifier. Faites défiler la "
887
+ "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
888
+ "auquel vous ne voulez pas que les utilisateurs ayant le rôle d’Éditeur/"
889
+ "éditrice aient accès. Cette approche fonctionne pour le cœur de la extension "
890
+ "Contact Form 7 et peut également être utilisé pour des modules "
891
+ "complémentaires tels que Flamingo, qui enregistre les entrées des "
892
+ "formulaires Contact Form 7."
893
+
894
+ #. Found in faq paragraph.
895
+ msgid ""
896
+ "When you first install Contact Form 7, you'll see one top-level menu link, "
897
+ "plus three sub-menus. All of these links are available to users in the "
898
+ "Administrator role:"
899
+ msgstr ""
900
+ "Lorsque vous installez la extension Contact Form 7 pour la première fois, "
901
+ "vous verrez un lien de menu de niveau supérieur et trois sous-menus. Tous "
902
+ "ces liens sont disponibles pour les utilisateurs ayant le rôle "
903
+ "d’administrateur et d’administratrice : "
904
+
905
+ #. Found in faq paragraph.
906
+ msgid ""
907
+ "Contact Form 7 is the most popular contact form plugin for WordPress. You "
908
+ "can manage multiple contact forms, and easily customize each form and the "
909
+ "emails it sends. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, "
910
+ "Akismet spam filtering and much more."
911
+ msgstr ""
912
+ "Contact Form 7 est la extension de formulaire de contact la plus populaire "
913
+ "pour WordPress. Vous pouvez gérer plusieurs formulaires de contact, et "
914
+ "personnaliser facilement chaque formulaire et les e-mails qu’il envoie. "
915
+ "Contact Form 7 prend en charge la soumission par Ajax, CAPTCHA, le filtrage "
916
+ "anti-indésirable Akismet et bien plus encore."
917
+
918
+ #. Found in faq paragraph.
919
+ msgid ""
920
+ "The Pro version of PublishPress Capabilities allows you to block access to "
921
+ "admin menu links in the Contact Form 7 plugin. This is useful because "
922
+ "Contact Form 7 has very limited options for controlling who can access the "
923
+ "admin screens."
924
+ msgstr ""
925
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
926
+ "aux liens du menu administrateur dans la extension Contact Form 7. Ceci est "
927
+ "utile car Contact Form 7 a des options limitées pour contrôler qui peut "
928
+ "accéder aux écrans d’administration."
929
+
930
+ #. Found in faq paragraph.
931
+ msgid ""
932
+ "It is possible to control who can access these links by using the "
933
+ "PublishPress Capabilities Pro plugin. After installing PublishPress "
934
+ "Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress "
935
+ "admin area. n the top-left corner of this screen, choose the role that you "
936
+ "want to edit. Scroll down and you can enter a red X for any menu link that "
937
+ "you don't want users in that role to access. This is a great way to "
938
+ "customize a WooCommerce role such as Shop Manager. This approach works for "
939
+ "the core WooCommerce plugin and can also be used for WooCommerce add-on "
940
+ "plugins such as WooCommerce Subscriptions, WooCommerce Shipping, and "
941
+ "WooCommerce Bookings. PublishPress Capabilities can help you manage "
942
+ "WooCommerce permissisons."
943
+ msgstr ""
944
+ "Il est possible de contrôler qui peut accéder à ces liens en utilisant la "
945
+ "extension PublishPress Capabilities Pro. Après avoir installé PublishPress "
946
+ "Capabilities Pro, allez dans « Capabilities », puis « Admin Menus » dans "
947
+ "votre zone d’administration WordPress. Dans le coin supérieur gauche de cet "
948
+ "écran, choisissez le rôle que vous souhaitez modifier. Faites défiler la "
949
+ "page vers le bas et vous pouvez inscrire un X rouge pour tout lien du menu "
950
+ "auquel vous ne voulez pas que les utilisateurs ayant ce rôle aient accès. Il "
951
+ "constitue un excellent moyen de personnaliser un rôle WooCommerce tel que le "
952
+ "gestionnaire de boutique. Cette approche fonctionne pour le cœur de la "
953
+ "extension WooCommerce et peut également être utilisé pour des modules "
954
+ "complémentaires tels que WooCommerce Subscriptions, WooCommerce Shipping, "
955
+ "and WooCommerce Bookings. PublishPress Capabilities peut vous aider à gérer "
956
+ "les droits de WooCommerce."
957
+
958
+ #. Found in faq paragraph.
959
+ msgid ""
960
+ "The Pro version of PublishPress Capabilities allows you to block access to "
961
+ "admin menu links in WooCommerce. This is useful because WooCommerce has very "
962
+ "limited options for controlling who can access the admin screens. When you "
963
+ "first install WooCommerce, you'll see four top-level menu links, plus sub-"
964
+ "menus. All of these links are available to users in the Administrator and "
965
+ "Shop Manager roles:"
966
+ msgstr ""
967
+ "La version Pro de PublishPress Capabilities vous permet de bloquer l’accès "
968
+ "aux liens du menu administrateur dans la extension WooCommerce. Ceci est "
969
+ "utile car WooCommerce a des options limitées pour contrôler qui peut accéder "
970
+ "aux écrans d’administration. Lorsque vous installez la extension WooCommerce "
971
+ "pour la première fois, vous verrez quatre liens de menu de niveau supérieur "
972
+ "et des sous-menus. Tous ces liens sont disponibles pour les utilisateurs "
973
+ "ayant le rôle d’administrateur/administratrice et de gestionnaire de "
974
+ "boutique : "
975
+
976
+ #. Found in faq paragraph.
977
+ msgid ""
978
+ "In the right sidebar, you can also enable permissions for WooCommerce "
979
+ "taxonomies. Check the boxes for Product categories, Product tags, and "
980
+ "Product shipping classes. After you check those boxes and refresh your "
981
+ "screen, you will see Manager, Edit, Assign and Delete options for Product "
982
+ "categories, Product tags, and Product shipping classes."
983
+ msgstr ""
984
+ "Dans la colonne latérale droite, vous pouvez également activer les droits "
985
+ "pour les taxonomies WooCommerce. Cochez les boîtes pour les catégories de "
986
+ "produits, les étiquettes de produits et les classes d’expédition de "
987
+ "produits. Après avoir coché ces boîtes et rafraîchi votre écran, vous verrez "
988
+ "apparaître les options gestionnaire, modifier, assigner et supprimer pour "
989
+ "les catégories de produits, les étiquettes de produits et les classes "
990
+ "d’expédition de produits."
991
+
992
+ #. Found in faq paragraph.
993
+ msgid ""
994
+ "The PublishPress Capabilities plugin enables you to control permissions for "
995
+ "the WooCommerce plugin and also WooCommerce user roles. You can use this "
996
+ "plugin as a WooCommerce user role editor. Go to the “Capabilities” link in "
997
+ "your WordPress admin menu. In the main area of your screen will see options "
998
+ "for WooCommerce Products, Orders and Coupons. These permissions cover "
999
+ "editing, deleting and reading."
1000
+ msgstr ""
1001
+ "La extension PublishPress Capabilities vous permet de contrôler les "
1002
+ "permissions pour la extension WooCommerce ainsi que les rôles des "
1003
+ "utilisateurs de WooCommerce. Vous pouvez utiliser cette extension comme un "
1004
+ "éditeur de rôle d’utilisateur WooCommerce. Allez sur le lien "
1005
+ "« Capabilities » dans votre menu d’administration WordPress. Dans la zone "
1006
+ "principale de votre écran, vous verrez des options pour les produits, les "
1007
+ "commandes et les codes promo WooCommerce. Ces permissions couvrent la "
1008
+ "modification, la suppression et la lecture."
1009
+
1010
+ #. Found in faq paragraph.
1011
+ msgid ""
1012
+ "WooCommerce is the most popular WordPress eCommerce plugin. You can create "
1013
+ "beautiful store with themes customized to your brand and industry and you'll "
1014
+ "find 1,000's of tools and popular integrations."
1015
+ msgstr ""
1016
+ "WooCommerce est la extension de commerce électronique la plus populaire de "
1017
+ "WordPress. Vous pouvez créer de magnifiques boutiques avec des thèmes "
1018
+ "personnalisés en fonction de votre marque et de votre secteur d’activité et "
1019
+ "vous trouverez des milliers d’outils et d’intégrations populaires."
1020
+
1021
+ #. Found in faq list item.
1022
+ msgid "Dashboard"
1023
+ msgstr "Tableau de bord"
1024
+
1025
+ #. Found in faq list item.
1026
+ msgid "Go Pro"
1027
+ msgstr "Passer Pro"
1028
+
1029
+ #. Found in faq list item.
1030
+ msgid "Custom Icons"
1031
+ msgstr "Icônes personnalisées"
1032
+
1033
+ #. Found in faq list item.
1034
+ msgid "Custom Fonts"
1035
+ msgstr "Polices personnalisées"
1036
+
1037
+ #. Found in faq list item.
1038
+ msgid "Get Help"
1039
+ msgstr "Obtenir de l’aide"
1040
+
1041
+ #. Found in faq list item.
1042
+ msgid "Getting Started"
1043
+ msgstr "Premiers pas"
1044
+
1045
+ #. Found in faq list item.
1046
+ msgid "System Info"
1047
+ msgstr "Information système"
1048
+
1049
+ #. Found in faq list item.
1050
+ msgid "Role Manager"
1051
+ msgstr "Gestionnaire de rôles"
1052
+
1053
+ #. Found in faq list item.
1054
+ msgid "Settings"
1055
+ msgstr "Réglages"
1056
+
1057
+ #. Found in faq list item.
1058
+ msgid "Premium"
1059
+ msgstr "Premium"
1060
+
1061
+ #. Found in faq list item.
1062
+ msgid "Tools"
1063
+ msgstr "Outils"
1064
+
1065
+ #. Found in faq list item.
1066
+ msgid "Social"
1067
+ msgstr "Social"
1068
+
1069
+ #. Found in faq list item.
1070
+ msgid "Search Appearance"
1071
+ msgstr "Apparence de la recherche"
1072
+
1073
+ #. Found in faq list item.
1074
+ msgid "General"
1075
+ msgstr "Général"
1076
+
1077
+ #. Found in faq list item.
1078
+ msgid "Integration"
1079
+ msgstr "Intégration"
1080
+
1081
+ #. Found in faq list item.
1082
+ msgid "Add New"
1083
+ msgstr "Ajouter"
1084
+
1085
+ #. Found in faq list item.
1086
+ msgid "Contact Forms"
1087
+ msgstr "Formulaires de contact"
1088
+
1089
+ #. Found in faq list item.
1090
+ msgid "Marketing"
1091
+ msgstr "Marketing"
1092
+
1093
+ #. Found in faq list item.
1094
+ msgid "Analytics"
1095
+ msgstr "Statistiques"
1096
+
1097
+ #. Found in faq list item.
1098
+ msgid "Products"
1099
+ msgstr "Produits"
1100
+
1101
+ #. Found in faq list item.
1102
+ msgid "WooCommerce"
1103
+ msgstr "WooCommerce"
1104
+
1105
+ #. Found in faq header.
1106
+ msgid "How Do I Control Jetpack User Roles and Permissions?"
1107
+ msgstr ""
1108
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
1109
+ "Jetpack ?"
1110
+
1111
+ #. Found in faq header.
1112
+ msgid "How Do I Control Elementor User Roles and Permissions?"
1113
+ msgstr ""
1114
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de "
1115
+ "Elementor ?"
1116
+
1117
+ #. Found in faq header.
1118
+ msgid "How Do I Control Yoast SEO User Roles and Permissions?"
1119
+ msgstr ""
1120
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de Yoast "
1121
+ "SEO ?"
1122
+
1123
+ #. Found in faq header.
1124
+ msgid "How Do I Control Contact Form 7 Permissions?"
1125
+ msgstr ""
1126
+ "Comment puis-je contrôler les rôles et les droits des utilisateurs de Form "
1127
+ "7 ?"
1128
+
1129
+ #. Found in faq paragraph.
1130
+ msgid ""
1131
+ "Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, "
1132
+ "Cspabilities, Capsbilities, Caoabilities, Calabilities."
1133
+ msgstr ""
1134
+ "Les fautes de frappe courantes et incorrectes comprennent Capabilitise, "
1135
+ "Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, "
1136
+ "Calabilities."
1137
+
1138
+ #. Found in faq paragraph.
1139
+ msgid ""
1140
+ "PublishPress is the official brandname. When writing about this user role "
1141
+ "editor plugin, please make sure to uppercase the Ps."
1142
+ msgstr ""
1143
+ "PublishPress est la marque officielle. Lorsque vous écrivez à propos de ce "
1144
+ "plugin d’édition de rôle d’utilisateur, veillez à mettre les P en majuscule."
1145
+
1146
+ #. Found in faq paragraph.
1147
+ msgid "Here's another comparison:"
1148
+ msgstr "Voici une autre comparaison :"
1149
+
1150
+ #. Found in faq paragraph.
1151
+ msgid "Here's an contrasting example when it comes to Post:"
1152
+ msgstr "Voici un exemple contrasté en ce qui concerne la publication : "
1153
+
1154
+ #. Found in faq paragraph.
1155
+ msgid "OK, that's maybe too simple, so here's more detail:"
1156
+ msgstr "OK, c’est peut-être trop simple, alors voici plus de détails :"
1157
+
1158
+ #. Found in faq paragraph.
1159
+ msgid ""
1160
+ "We provide two plugins that allow you to control who can access what on your "
1161
+ "WordPress site. This is simple way to understand the difference:"
1162
+ msgstr ""
1163
+ "Nous fournissons deux extensions qui vous permettent de contrôler qui peut "
1164
+ "accéder à quoi sur votre site WordPress. Voici une façon simple de "
1165
+ "comprendre la différence :"
1166
+
1167
+ #. Found in faq paragraph.
1168
+ msgid ""
1169
+ "If you want to proceed, click the “Reset to WordPress defaults” link. "
1170
+ "PublishPress Capabilities will ask you if you're really sure you want to do "
1171
+ "this. Click “OK” to continue. Once the process is complete, you'll see the "
1172
+ "message, “Roles and Capabilities reset to WordPress defaults”."
1173
+ msgstr ""
1174
+ "Si vous voulez continuer, cliquez sur le lien « Réinitialiser les valeurs "
1175
+ "par défaut de WordPress ». PublishPress Capabilities vous demandera si vous "
1176
+ "êtes vraiment sûr de vouloir faire cela. Cliquez sur « OK » pour continuer. "
1177
+ "Une fois le processus terminé, vous verrez le message « Rôles et capacités "
1178
+ "réinitialisés aux valeurs par défaut de WordPress »."
1179
+
1180
+ #. Found in faq paragraph.
1181
+ msgid ""
1182
+ "“WARNING: This will delete and/or modify stored role definitions. If you "
1183
+ "have installed any plugin that adds new roles or capabilities, these will be "
1184
+ "lost. It is recommended to use this only as a last resort!”"
1185
+ msgstr ""
1186
+ "« AVERTISSEMENT : Ceci va supprimer et/ou modifier les définitions de rôles "
1187
+ "stockés. Si vous avez installé une extension qui ajoute de nouveaux rôles ou "
1188
+ "capacités, ceux-ci seront perdus. Il est recommandé de n’utiliser cette "
1189
+ "opération que comme dernier recours ! »"
1190
+
1191
+ #. Found in faq paragraph.
1192
+ msgid ""
1193
+ "If you really need to clean up and refresh your site, PublishPress "
1194
+ "Capabilities does allow you to restore the default WordPress permissions. Go "
1195
+ "to Capabilities &gt; Backup and dlick the “Reset Roles” tab. Before you take "
1196
+ "next step, make sure to read this warning:"
1197
+ msgstr ""
1198
+ "Si vous avez vraiment besoin de nettoyer et de rafraîchir votre site, "
1199
+ "PublishPress Capabilities vous permet de restaurer les droits par défaut de "
1200
+ "WordPress. Allez dans Capabilities &gt; Sauvegardes et cliquez sur l’onglet "
1201
+ "« Réinitialiser les rôles ». Avant de passer à l’étape suivante, assurez-"
1202
+ "vous de lire cet avertissement :"
1203
+
1204
+ #. Found in faq paragraph.
1205
+ msgid ""
1206
+ "Whenever you choose a backup, the plugin will show all the permissions in "
1207
+ "that backup. Important changes in permissions are highlighted:"
1208
+ msgstr ""
1209
+ "Chaque fois que vous choisissez une sauvegarde, la extension affiche toutes "
1210
+ "les droits de cette sauvegarde. Les changements importants dans les droits "
1211
+ "sont mis en évidence :"
1212
+
1213
+ #. Found in faq paragraph.
1214
+ msgid ""
1215
+ "Click the yellow “Restore Selected Roles” button and you'll be able to roll "
1216
+ "back to a previous version."
1217
+ msgstr ""
1218
+ "Cliquez sur le bouton jaune «Restaurer les rôles sélectionnés »et vous "
1219
+ "pourrez revenir à une version antérieure."
1220
+
1221
+ #. Found in faq paragraph.
1222
+ msgid ""
1223
+ "Every time you change your permissions, the PublishPress Capabilities plugin "
1224
+ "will automatically create a backup. If you make a mistake, go to the "
1225
+ "“Backup” menu link and click the “Restore” tab. Here you can browse through "
1226
+ "the most recent 20 automatic backups. The plugin also saves a backup from "
1227
+ "you first installed PublishPress Capabilities. And you can click the "
1228
+ "“Backup” tab to manually create backups."
1229
+ msgstr ""
1230
+ "Chaque fois que vous modifiez vos droits, la extension PublishPress "
1231
+ "Capabilities crée automatiquement une sauvegarde. Si vous faites une erreur, "
1232
+ "allez dans le lien du menu « Sauvegardes » et cliquez sur "
1233
+ "l’onglet « Restaurer ». Ici, vous pouvez parcourir les 20 sauvegardes "
1234
+ "automatiques les plus récentes. Cette extension enregistre également une "
1235
+ "sauvegarde depuis votre première installation de PublishPress Capabilities. "
1236
+ "Et vous pouvez cliquer sur l’onglet « Sauvegardes »pour créer manuellement "
1237
+ "des sauvegardes."
1238
+
1239
+ #. Found in faq paragraph.
1240
+ msgid ""
1241
+ "Changing permissions in WordPress can be a tricky task. It's possible to "
1242
+ "lock yourself or others out of some important features. So, we've built a "
1243
+ "way to keep your site safe."
1244
+ msgstr ""
1245
+ "La modification des droits d’accès dans WordPress peut être une tâche "
1246
+ "délicate. Il est possible de se bloquer ou de bloquer d’autres personnes "
1247
+ "pour certaines fonctionnalités importantes. C’est pourquoi nous avons conçu "
1248
+ "un moyen de sécuriser votre site."
1249
+
1250
+ #. Found in faq paragraph.
1251
+ msgid ""
1252
+ "PublishPress Capabilities is a user role editor that offers you the ability "
1253
+ "to backup and restore your WordPress user permissions. This feature is very "
1254
+ "helpful if you want to test out changes on your site, or you've installed a "
1255
+ "new plugin that has changed your site's permissions."
1256
+ msgstr ""
1257
+ "PublishPress Capabilities est un éditeur de rôles d’utilisateurs qui vous "
1258
+ "offre la possibilité de sauvegarder et de restaurer les droits de vos "
1259
+ "utilisateurs WordPress. Cette fonctionnalité est très utile si vous voulez "
1260
+ "tester des changements sur votre site, ou si vous avez installé une nouvelle "
1261
+ "extension qui a modifié les droits de votre site."
1262
+
1263
+ #. Found in faq list item.
1264
+ msgid "publish press cpabilities (incorrect)"
1265
+ msgstr "publish press cpabilities (incorrect)"
1266
+
1267
+ #. Found in faq list item.
1268
+ msgid "publishpress capabilities (incorrect)"
1269
+ msgstr "publishpress capabilities (incorrect)"
1270
+
1271
+ #. Found in faq list item.
1272
+ #| msgid "The Key Features of PublishPress Capabilities"
1273
+ msgid "Publish Press Capabilities (incorrect)"
1274
+ msgstr "Publish Press Capabilities (incorrect)"
1275
+
1276
+ #. Found in faq list item.
1277
+ #| msgid "The Key Features of PublishPress Capabilities"
1278
+ msgid "PublishPress Capabilities (correct)"
1279
+ msgstr "PublishPress Capabilities (correct)"
1280
+
1281
+ #. Found in faq list item.
1282
+ msgid ""
1283
+ "PublishPress Permissions allows you to control who can read Pages with a "
1284
+ "specific Status, Category or Tag, or even Pages with a particular parent "
1285
+ "Page."
1286
+ msgstr ""
1287
+ "PublishPress Permissions vous permet de contrôler qui peut lire les pages "
1288
+ "ayant un état, une catégorie ou une étiquette spécifique, ou même les pages "
1289
+ "ayant une page parente particulière."
1290
+
1291
+ #. Found in faq list item.
1292
+ msgid ""
1293
+ "PublishPress Capabilities allows you to control who can read all your Pages."
1294
+ msgstr ""
1295
+ "PublishPress Capabilities vous permet de contrôler qui peut lire toutes vos "
1296
+ "pages."
1297
+
1298
+ #. Found in faq list item.
1299
+ msgid ""
1300
+ "PublishPress Permissions allows you to control who can publish Posts with a "
1301
+ "particular Status, Category or Tag, or even Posts without a specific "
1302
+ "Category or Tag."
1303
+ msgstr ""
1304
+ "PublishPress Permissions vous permet de contrôler qui peut publier des "
1305
+ "publications avec un état, une catégorie ou une étiquette particulière, ou "
1306
+ "même des publications sans catégorie ou étiquette spécifique."
1307
+
1308
+ #. Found in faq list item.
1309
+ msgid ""
1310
+ "PublishPress Capabilities allows you to control who can publish all your "
1311
+ "Posts."
1312
+ msgstr ""
1313
+ "PublishPress Capabilities vous permet de contrôler qui peut publier tous vos "
1314
+ "publications."
1315
+
1316
+ #. Found in faq list item.
1317
+ msgid ""
1318
+ "PublishPress Permissions allows you to customize advanced permissions that "
1319
+ "go far beyond the scope of the WordPress core."
1320
+ msgstr ""
1321
+ "PublishPress Permissions vous permet de personnaliser des droits avancés qui "
1322
+ "vont bien au-delà de la portée du cœur de WordPress."
1323
+
1324
+ #. Found in faq list item.
1325
+ msgid ""
1326
+ "PublishPress Permissions allows you to customize the default WordPress "
1327
+ "permissions."
1328
+ msgstr ""
1329
+ "PublishPress Permissions vous permet de personnaliser les droits par défaut "
1330
+ "de WordPress."
1331
+
1332
+ #. Found in faq list item.
1333
+ msgid "PublishPress Permissions: Advanced."
1334
+ msgstr "Permissions PublishPress : Avancé."
1335
+
1336
+ #. Found in faq list item.
1337
+ msgid "PublishPress Capabilities: Easy."
1338
+ msgstr "PublishPress Capabilities : Facile."
1339
+
1340
+ #. Found in faq list item.
1341
+ msgid ""
1342
+ "A stuck-through capability is set in the current role, but not the role "
1343
+ "backup."
1344
+ msgstr ""
1345
+ "Une capacité « bloquée \" est définie dans le rôle actuel, mais pas dans le "
1346
+ "rôle de secours."
1347
+
1348
+ #. Found in faq list item.
1349
+ msgid "A green capability is set in the role backup, but not the current role."
1350
+ msgstr ""
1351
+ "Une capacité verte est définie dans la sauvegarde du rôle, mais pas dans le "
1352
+ "rôle actuel."
1353
+
1354
+ #. Found in faq list item.
1355
+ msgid "A green role title means the role does not exist in your current set. "
1356
+ msgstr ""
1357
+ "Un titre de rôle vert signifie que le rôle n’existe pas dans votre jeu "
1358
+ "actuel. "
1359
+
1360
+ #. Found in faq header.
1361
+ msgid "What's the correct way to spell PublishPress Capabilities?"
1362
+ msgstr "Quelle est la façon correcte d’épeler PublishPress Capabilities ?"
1363
+
1364
+ #. Found in faq header.
1365
+ msgid ""
1366
+ "What’s the Difference Between PublishPress Capabilities and PublishPress "
1367
+ "Permissions?"
1368
+ msgstr ""
1369
+ "Quelle est la différence entre PublishPress Capabilities et PublishPress "
1370
+ "Permissions ?"
1371
+
1372
+ #. Found in faq header.
1373
+ msgid "How Do I Restore Permissions to the WordPress Defaults?"
1374
+ msgstr ""
1375
+ "Comment puis-je rétablir les droits d’accès aux valeurs par défaut de "
1376
+ "WordPress ?"
1377
+
1378
+ #. Found in faq header.
1379
+ msgid "How do I Backup and Restore WordPress User Permissions?"
1380
+ msgstr ""
1381
+ "Comment sauvegarder et restaurer les droits des utilisateurs de WordPress ?"
1382
+
1383
+ #. Found in description paragraph.
1384
+ msgid ""
1385
+ "PublishPress Capabilities gives you detailed control over all the permission "
1386
+ "levelsss on your WordPress site. You can edit user roles on your site, from "
1387
+ "Administrator and Editor to Contributor and Subscriber."
1388
+ msgstr ""
1389
+ "PublishPress Capabilities vous donne un contrôle détaillé de tous les "
1390
+ "niveaux de droits sur votre site WordPress. Vous pouvez modifier les rôles "
1391
+ "des utilisateurs sur votre site, de l’administrateur/administratrice à "
1392
+ "l’éditeur/éditrice en passant par le contributeur/contributrice et l’abonné/"
1393
+ "abonnée."
1394
+
1395
+ #. Found in description paragraph.
1396
+ msgid ""
1397
+ "The Pro version of PublishPress Capabilities enables you to stop users from "
1398
+ "accessing any admin menu link and any frontend menu link."
1399
+ msgstr ""
1400
+ "La version Pro de PublishPress Capabilities vous permet d’empêcher les "
1401
+ "utilisateurs d’accéder à tout lien des menus d’administration et de "
1402
+ "l’interface publique."
1403
+
1404
+ #. Found in description header.
1405
+ msgid "10. WordPress Admin Menu Restrictions (Pro version)"
1406
+ msgstr "10. Restrictions du menu d’administration de WordPress (version Pro)"
1407
+
1408
+ #. Found in description header.
1409
+ msgid "8. Create New User Roles or Copy User Roles"
1410
+ msgstr ""
1411
+ "8. Créer de nouveaux rôles d’utilisateur ou copier des rôles d’utilisateur"
1412
+
1413
+ #. Found in description header.
1414
+ msgid "5. Hide Gutenberg and Classic Editor Features"
1415
+ msgstr "5. Masquer les fonctionnalités de Gutenberg et de l’éditeur classique"
1416
+
1417
+ #. Found in description header.
1418
+ msgid "3. Capabilities for any WordPress Taxonomy"
1419
+ msgstr "3. Permissions pour toutes les taxonomies WordPress"
1420
+
1421
+ #. Found in description header.
1422
+ msgid "1. WordPress User Role Editor"
1423
+ msgstr "1. Éditeur de rôle d’utilisateur WordPress"
1424
+
1425
+ #. Found in description paragraph.
1426
+ msgid ""
1427
+ "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Click "
1428
+ "here to learn about hiding editor features</a>."
1429
+ msgstr ""
1430
+ "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Cliquez "
1431
+ "ici pour en savoir plus sur le masquage des fonctionnalités de l’éditeur</a>."
1432
+
1433
+ #. Found in description paragraph.
1434
+ msgid ""
1435
+ "PublishPress Capabilities has an option called \"Editor Features\" allows "
1436
+ "you to clean up the post editing screen. You can decide what users see when "
1437
+ "they're writing posts. You can hide anything on the Gutenberg or Classic "
1438
+ "Editor screens. You can hide boxes inside the sidebadd such Tags, "
1439
+ "Categories, or Excerpt. You can the \"Publish\" button. You can even hide "
1440
+ "the post title, body, or permalink. This is a great alternative to plugins "
1441
+ "such as Adminimize."
1442
+ msgstr ""
1443
+ "PublishPress Capabilities a une option appelée « Fonctionnalités de "
1444
+ "l’éditeur » qui vous permet de nettoyer l’écran d’édition de publication. "
1445
+ "Vous pouvez décider ce que les utilisateurs voient lorsqu’ils écrivent des "
1446
+ "publications. Vous pouvez masquer n’importe quoi sur les écrans Gutenberg ou "
1447
+ "Éditeur classique. Vous pouvez masquer les cases à l’intérieur de la barre "
1448
+ "latérale telles que les balises, les catégories ou les extraits. Vous pouvez "
1449
+ "cliquer sur le bouton « Publier ». Vous pouvez même masquer le titre, le "
1450
+ "corps ou le permalien de la publication. C’est une excellente alternative "
1451
+ "aux extensions telles que Adminimize."
1452
+
1453
+ #. Found in description paragraph.
1454
+ msgid ""
1455
+ "You can use PublishPress Capabilities to clean up the post editing screen. "
1456
+ "You can decide what authors see when they're writing posts. You can "
1457
+ "<strong>hide any features on the Gutenberg or Classic Editor screens</"
1458
+ "strong>."
1459
+ msgstr ""
1460
+ "Vous pouvez utiliser PublishPress Capabilities pour nettoyer l’écran "
1461
+ "d’édition de publication. Vous pouvez décider ce que les auteurs voient "
1462
+ "lorsqu’ils écrivent des publications. Vous pouvez <strong>masquer n’importe "
1463
+ "quelle fonctionnalité sur les écrans de Gutenberg ou de l’Éditeur classique</"
1464
+ "strong>."
1465
+
1466
+ #. Found in description list item.
1467
+ msgid ""
1468
+ "<strong>Hide editor features</strong>: Decide what users see when they're "
1469
+ "writing posts in Gutenberg or the Classic Editor."
1470
+ msgstr ""
1471
+ "<strong>Masquer les fonctionnalités de l’éditeur</strong> : décidez ce que "
1472
+ "les utilisateurs voient lorsqu’ils écrivent des publications dans Gutenberg "
1473
+ "ou dans l’éditeur classique."
1474
+
1475
+ #. Found in description list item.
1476
+ msgid ""
1477
+ "<strong>Multisite support</strong>: Manage permissions on a single site or "
1478
+ "across your whole network."
1479
+ msgstr ""
1480
+ "<strong>Support multisite</strong> : gérez les permissions sur un seul site "
1481
+ "ou sur l’ensemble de votre réseau."
1482
+
1483
+ #. Found in description list item.
1484
+ msgid ""
1485
+ "<strong>WooCommerce permissions</strong>: Control access to WooCommerce "
1486
+ "products, orders, coupons and more."
1487
+ msgstr ""
1488
+ "<strong>Les droits WooCommerce</strong> : Contrôlez l’accès aux produits "
1489
+ "WooCommerce, aux commandes, aux code promo et plus encore."
1490
+
1491
+ #. Found in description list item.
1492
+ msgid ""
1493
+ "<strong>Media library permissions</strong>: Decide who can upload, edit and "
1494
+ "delete files."
1495
+ msgstr ""
1496
+ "<strong>Permissions de la médiathèque</strong> : décidez qui peut "
1497
+ "télécharger, modifier et supprimer des fichiers."
1498
+
1499
+ #. Found in description list item.
1500
+ msgid ""
1501
+ "<strong>Admin menus (Pro version)</strong>: Stop users from accessing any "
1502
+ "admin menu link."
1503
+ msgstr ""
1504
+ "<strong>Menus d’administration (version Pro)</strong> : empêchez les "
1505
+ "utilisateurs d’accéder aux liens du menu d’administration."
1506
+
1507
+ #. Found in description list item.
1508
+ msgid ""
1509
+ "<strong>Frontend menus (Pro version)</strong>: Stop users from accessing any "
1510
+ "frontend menu link."
1511
+ msgstr ""
1512
+ "<strong> Menus de l’interface publique (Pro version) </strong> : empêchez "
1513
+ "les utilisateurs d’accéder aux liens du menu de l’interface publique."
1514
+
1515
+ #. Found in description list item.
1516
+ msgid ""
1517
+ "<strong>Create or copy user roles</strong>: Add new roles, or clone existing "
1518
+ "roles."
1519
+ msgstr ""
1520
+ "<strong>Créer ou copier des rôles utilisateur</strong> : ajoutez de nouveaux "
1521
+ "rôles ou clonez des rôles existants."
1522
+
1523
+ #. Found in description list item.
1524
+ msgid ""
1525
+ "<strong>Safe backups</strong>: Every time you change your permissions, "
1526
+ "PublishPress Capabilities saves a backup."
1527
+ msgstr ""
1528
+ "<strong>Sauvegardes sécurisées</strong> : chaque fois que vous modifiez vos "
1529
+ "permissions, PublishPress Capabilities enregistre une sauvegarde."
1530
+
1531
+ #. Found in description list item.
1532
+ msgid ""
1533
+ "<strong>Works for all taxonomies</strong>: Choose who can Manage, Edit and "
1534
+ "Assign terms in any taxonomy."
1535
+ msgstr ""
1536
+ "<strong>Fonctionne pour toutes les taxonomies</strong> : choisissez qui peut "
1537
+ "gérer, modifier et attribuer des termes dans n’importe quelle taxonomie."
1538
+
1539
+ #. Found in description list item.
1540
+ msgid ""
1541
+ "<strong>Works for all post types</strong>: Choose who can Publish, Read, "
1542
+ "Edit and Delete content for any post type."
1543
+ msgstr ""
1544
+ "<strong>Fonctionne pour tous les types de publication</strong> : choisissez "
1545
+ "qui peut publier, lire, modifier et supprimer du contenu pour tout type de "
1546
+ "publication."
1547
+
1548
+ #. Found in description list item.
1549
+ msgid ""
1550
+ "<strong>User role editor</strong>: You can change the capabilities for any "
1551
+ "role."
1552
+ msgstr ""
1553
+ "<strong>Éditeur de rôle utilisateur</strong> : vous pouvez modifier les "
1554
+ "fonctionnalités de n’importe quel rôle."
1555
+
1556
+ #. Found in description header.
1557
+ msgid "9. Frontend Menu Restrictions (Pro version)"
1558
+ msgstr "#7. Limitations de l’interface publique (Pro version)"
1559
+
1560
+ #. Found in description header.
1561
+ msgid "The Key Features of PublishPress Capabilities"
1562
+ msgstr "Les principales caractéristiques de PublishPress Capabilities"
1563
+
1564
+ #. Found in description paragraph.
1565
+ msgid ""
1566
+ "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click "
1567
+ "here to learn about multisite permissions</a>."
1568
+ msgstr ""
1569
+ "<a href=\"https://publishpress.com/knowledge-base/multisite-network/"
1570
+ "\">Cliquez ici pour en savoir plus sur les permissions multisites.</a>."
1571
+
1572
+ #. Found in description paragraph.
1573
+ msgid ""
1574
+ "PublishPress Capabilities allows you to control permissions on a single site "
1575
+ "or across your whole network. Every time you update permissions in "
1576
+ "PublishPress Capabilities, you can choose to sync those changes across your "
1577
+ "multisite network."
1578
+ msgstr ""
1579
+ "PublishPress Capabilities vous permet de contrôler les permissions sur un "
1580
+ "seul site ou sur l’ensemble de votre réseau. Chaque fois que vous mettez à "
1581
+ "jour les permissions dans PublishPress Capabilities, vous pouvez choisir de "
1582
+ "synchroniser ces changements sur votre réseau multisite."
1583
+
1584
+ #. Found in description paragraph.
1585
+ msgid ""
1586
+ "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
1587
+ "\">Click here to learn about WooCommerce permissions</a>."
1588
+ msgstr ""
1589
+ "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/"
1590
+ "\">Cliquez ici pour en savoir plus sur les permissions WooCommerce</a>."
1591
+
1592
+ #. Found in description paragraph.
1593
+ msgid ""
1594
+ "We mentioned earlier that PublishPress Capabilities has special support for "
1595
+ "WooCommerce taxonomies. This is true for the rest of WooCommerce also. With "
1596
+ "PublishPress Capabilities you can control permissions for WooCommerce "
1597
+ "products, orders and coupons."
1598
+ msgstr ""
1599
+ "Nous avons mentionné précédemment que PublishPress prend en charge les "
1600
+ "taxonomies WooCommerce. Cela est également vrai pour le reste de "
1601
+ "WooCommerce. PublishPress Capabilities vous permet de contrôler les droits "
1602
+ "pour les produits, les commandes et les code promo WooCommerce."
1603
+
1604
+ #. Found in description paragraph.
1605
+ msgid ""
1606
+ "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
1607
+ "access/\">Click here to learn about Media Library permissions</a>."
1608
+ msgstr ""
1609
+ "<a href=\"https://publishpress.com/knowledge-base/control-media-library-"
1610
+ "access/\">Cliquez ici pour en savoir plus sur les permissions de la "
1611
+ "médiathèque</a>."
1612
+
1613
+ #. Found in description paragraph.
1614
+ msgid ""
1615
+ "PublishPress Capabilities enables you to decide who can upload, edit and "
1616
+ "delete files from your site's Media Library. By default, only Administrators "
1617
+ "are able to delete files in your Media Library. Subscribers and Contributors "
1618
+ "are not even allowed to upload files. You can customize these permissions "
1619
+ "for the Media Library and also the Featured Image box."
1620
+ msgstr ""
1621
+ "PublishPress Capabilities vous permet de décider qui peut télécharger, "
1622
+ "modifier et supprimer des fichiers de la médiathèque de votre site. Par "
1623
+ "défaut, seuls les administrateurs peuvent supprimer des fichiers de votre "
1624
+ "médiathèque. Les abonnés et les contributeurs ne sont même pas autorisés à "
1625
+ "télécharger des fichiers. Vous pouvez personnaliser ces permissions pour la "
1626
+ "médiathèque ainsi que la zone image mise en avant."
1627
+
1628
+ #. Found in description paragraph.
1629
+ msgid ""
1630
+ "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Click to "
1631
+ "see how to block Admin menu access</a>."
1632
+ msgstr ""
1633
+ "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Cliquez "
1634
+ "pour voir comment bloquer l’accès au menu d’administration</a>."
1635
+
1636
+ #. Found in description paragraph.
1637
+ msgid ""
1638
+ "With PublishPress Capabilities you can restrict access to admin menu screens "
1639
+ "by user roles. This is useful because many plugin do not have any way to "
1640
+ "control who can access their admin screens."
1641
+ msgstr ""
1642
+ "PublishPress Capabilities vous permet de restreindre l’accès aux écrans du "
1643
+ "menu d’administration par rôles d’utilisateur. Ceci est utile car de "
1644
+ "nombreuses extensions n’ont aucun moyen de contrôler qui peut accéder à "
1645
+ "leurs écrans d’administration."
1646
+
1647
+ #. Found in description paragraph.
1648
+ msgid ""
1649
+ "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Click to see "
1650
+ "how to block frontend menu access</a>."
1651
+ msgstr ""
1652
+ "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Cliquez pour "
1653
+ "voir comment bloquer l’accès au menu de l’interface publique</a>."
1654
+
1655
+ #. Found in description paragraph.
1656
+ msgid ""
1657
+ "PublishPress Capabilities enables you to restrict access to navigation menus "
1658
+ "by roles, logged in and logged out users. This is useful because a default "
1659
+ "WordPress site does not give you way to control the visibility of your links."
1660
+ msgstr ""
1661
+ "PublishPress Capabilities vous permet de restreindre l’accès aux menus de "
1662
+ "navigation par rôles, utilisateurs connectés et déconnectés. Ceci est utile "
1663
+ "car un site WordPress par défaut ne vous permet pas de contrôler la "
1664
+ "visibilité de vos liens."
1665
+
1666
+ #. Found in description paragraph.
1667
+ msgid ""
1668
+ "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/"
1669
+ "\">Click here to see how to create or copy user roles</a>."
1670
+ msgstr ""
1671
+ "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/"
1672
+ "\">Cliquez ici pour voir comment créer ou copier des rôles d’utilisateur</a>."
1673
+
1674
+ #. Found in description paragraph.
1675
+ msgid ""
1676
+ "With PublishPress Capabilities you can create or copy any existing WordPress "
1677
+ "user role. These roles can be customized in exactly the same way as the "
1678
+ "default WordPress roles. These new roles can be added to single sites or to "
1679
+ "an entire multisite network."
1680
+ msgstr ""
1681
+ "Avec PublishPress Capabilities, vous pouvez créer ou copier n’importe quel "
1682
+ "rôle d’utilisateur WordPress existant. Ces rôles peuvent être personnalisés "
1683
+ "exactement de la même manière que les rôles WordPress par défaut. Ces "
1684
+ "nouveaux rôles peuvent être ajoutés à des sites uniques ou à un réseau "
1685
+ "multisite entier."
1686
+
1687
+ #. Found in description paragraph.
1688
+ msgid ""
1689
+ "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/"
1690
+ "\">Click here to see how to backup permissions</a>."
1691
+ msgstr ""
1692
+ "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/"
1693
+ "\">Cliquez ici pour voir comment sauvegarder les permissions</a>."
1694
+
1695
+ #. Found in description paragraph.
1696
+ msgid ""
1697
+ "Every time you change your permissions, the PublishPress Capabilities plugin "
1698
+ "will now automatically create a backup. If you make a mistake, go to the "
1699
+ "\"Backup\" menu link and you'll be able to roll back to a previous version."
1700
+ msgstr ""
1701
+ "Chaque fois que vous modifiez vos permissions, l’extension PublishPress "
1702
+ "Capabilities crée automatiquement une sauvegarde. Si vous faites une erreur, "
1703
+ "allez sur le lien du menu « Sauvegarde » et vous pourrez revenir à une "
1704
+ "version précédente."
1705
+
1706
+ #. Found in description paragraph.
1707
+ msgid ""
1708
+ "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-"
1709
+ "capabilities/\">Click here to learn about taxonomy permissions</a>."
1710
+ msgstr ""
1711
+ "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-"
1712
+ "capabilities/\">Cliquez ici pour en savoir plus sur les permissions de "
1713
+ "taxonomie</a>."
1714
+
1715
+ #. Found in description paragraph.
1716
+ msgid ""
1717
+ "PublishPress Capabilities enables you to add extra permissions to the "
1718
+ "taxonomies on your site. This feature includes the default Categories and "
1719
+ "Tags, but also applies to other taxonomies. For example, in WooCommerce you "
1720
+ "can apply custom permissions to Product categories, Product tags, and "
1721
+ "Product shipping classes. You can enforce and assign \"Manage\", \"Edit\" "
1722
+ "and \"Assign\" distinct capabilities for all your taxonomies."
1723
+ msgstr ""
1724
+ "PublishPress Capabilities vous permet d’ajouter des permissions "
1725
+ "supplémentaires aux taxonomies de votre site. Cette fonctionnalité inclut "
1726
+ "les catégories et les balises par défaut, mais s’applique également à "
1727
+ "d’autres taxonomies. Par exemple, dans WooCommerce, vous pouvez appliquer "
1728
+ "des permissions personnalisées aux catégories de produits, aux étiquettes de "
1729
+ "produits et aux classes d’expédition de produits. Vous pouvez appliquer et "
1730
+ "attribuer des fonctionnalités distinctes « Gérer », « Modifier » et "
1731
+ "« Attribuer » pour toutes vos taxonomies."
1732
+
1733
+ #. Found in description paragraph.
1734
+ msgid ""
1735
+ "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-"
1736
+ "capability/\">Click here to see how to control post type permissions</a>."
1737
+ msgstr ""
1738
+ "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-"
1739
+ "capability/\">Cliquez ici pour voir comment contrôler les permissions de "
1740
+ "type de publication</a>."
1741
+
1742
+ #. Found in description paragraph.
1743
+ msgid ""
1744
+ "Many WordPress users have sites with custom post types. This can be done "
1745
+ "using custom code, a theme, or with a plugin. No matter how your post type "
1746
+ "is created, PublishPress Capabilities lets you enforce and assign distinct "
1747
+ "capabilities for your post type."
1748
+ msgstr ""
1749
+ "De nombreux utilisateurs de WordPress ont des sites avec des types de "
1750
+ "publication personnalisés. Cela peut être fait à l’aide d’un code "
1751
+ "personnalisé, d’un thème ou d’une extension. Quelle que soit la manière dont "
1752
+ "votre type de publication est créé, PublishPress Capabilities vous permet "
1753
+ "d’appliquer et d’attribuer des permissions distinctes à votre type de "
1754
+ "publication."
1755
+
1756
+ #. Found in description paragraph.
1757
+ msgid ""
1758
+ "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Click "
1759
+ "here for your quick start guide to PublishPress Capabilities</a>."
1760
+ msgstr ""
1761
+ "<a href=\"https://publishpress.com/knowledge-base/permissions-start/"
1762
+ "\">Cliquez ici pour accéder à votre guide de démarrage rapide de "
1763
+ "PublishPress Capabilities</a>."
1764
+
1765
+ #. Found in description paragraph.
1766
+ msgid ""
1767
+ "With the Capabilities plugin, you can choose who can Publish, Read, Edit and "
1768
+ "Delete content. You can choose permissions for posts, pages, custom content "
1769
+ "types, categories, tags, and more."
1770
+ msgstr ""
1771
+ "Avec Capabilities, vous pouvez choisir qui peut publier, lire, modifier et "
1772
+ "supprimer du contenu. Vous pouvez choisir des permissions pour les "
1773
+ "publications, les pages, les types de publication personnalisées, les "
1774
+ "catégories, les balises, etc."
1775
+
1776
+ #. Found in description paragraph.
1777
+ msgid ""
1778
+ "You can <strong>customize all your WordPress user roles</strong>, from "
1779
+ "Administrators and Editors to Authors, Contributors, Subscribers and custom "
1780
+ "roles. Each use role can have the exact permissions that your site needs."
1781
+ msgstr ""
1782
+ "Vous pouvez <strong>personnaliser tous les rôles d’utilisateur sur votre "
1783
+ "site</strong>, des administrateurs et éditeurs aux auteurs, contributeurs, "
1784
+ "abonnés et rôles personnalisés. Chaque rôle peut avoir les permissions "
1785
+ "exactes dont votre site a besoin."
1786
+
1787
+ #. Found in description paragraph.
1788
+ msgid ""
1789
+ "<a href=\"https://publishpress.com/capabilities/\">PublishPress "
1790
+ "Capabilities</a> gives you control over all the permissions on your "
1791
+ "WordPress site. We built this user role editor plugin so you have an EASY "
1792
+ "and POWERFUL way to manage users."
1793
+ msgstr ""
1794
+ "<a href=\"https://publishpress.com/capabilities/\">PublishPress "
1795
+ "Capabilities</a> vous permet de contrôler toutes les permissions sur votre "
1796
+ "site WordPress. Nous avons construit cette extension d’éditeur de rôle "
1797
+ "d’utilisateur afin que vous ayez un moyen facile et puissant de gérer les "
1798
+ "utilisateurs."
1799
+
1800
+ #. Found in description paragraph.
1801
+ msgid ""
1802
+ "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress"
1803
+ "\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom"
1804
+ "\">Twitter</a> and <a href=\"https://www.youtube.com/publishpress\">YouTube</"
1805
+ "a>."
1806
+ msgstr ""
1807
+ "Suivez PublishPress sur <a href=\"https://www.facebook.com/publishpress"
1808
+ "\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom"
1809
+ "\">Twitter</a> et <a href=\"https://www.youtube.com/publishpress\">YouTube</"
1810
+ "a>."
1811
+
1812
+ #. Found in description paragraph.
1813
+ msgid ""
1814
+ "Bug reports for PublishPress Capabilities are welcomed in our <a href="
1815
+ "\"https://github.com/publishpress/publishpress-capabilities\">repository on "
1816
+ "GitHub</a>. Please note that GitHub is not a support forum, and that issues "
1817
+ "that aren't properly qualified as bugs will be closed."
1818
+ msgstr ""
1819
+ "Les rapports de bogues pour PublishPress Capabilities sont les bienvenus "
1820
+ "dans notre <a href=\"https://github.com/publishpress/publishpress-"
1821
+ "capabilities\">dépôt sur GitHub</a>. Veuillez noter que GitHub n’est pas un "
1822
+ "forum de support et que les problèmes qui ne sont pas correctement qualifiés "
1823
+ "de bogues seront fermés."
1824
+
1825
+ #. Found in description paragraph.
1826
+ msgid ""
1827
+ "Together, these plugins are a suite of powerful publishing tools for "
1828
+ "WordPress. If you need to create a professional workflow in WordPress, with "
1829
+ "moderation, revisions, permissions and more... then you should try "
1830
+ "PublishPress."
1831
+ msgstr ""
1832
+ "Ensemble, ces extensions constituent une suite d’outils de publication "
1833
+ "puissants pour WordPress. Si vous avez besoin de créer un flux de travail "
1834
+ "professionnel dans WordPress, avec modération, révisions, permissions et "
1835
+ "plus encore... alors vous devriez essayer PublishPress."
1836
+
1837
+ #. Found in description paragraph.
1838
+ msgid "Join PublishPress and you'll get access to these Pro plugins:"
1839
+ msgstr "Rejoignez PublishPress et vous aurez accès à ces extensions Pro : "
1840
+
1841
+ #. Found in description paragraph.
1842
+ msgid ""
1843
+ "The Pro versions of the PublishPress plugins are well worth your investment. "
1844
+ "The Pro versions have extra features and faster support. <a href=\"https://"
1845
+ "publishpress.com/pricing/\">Click here to join PublishPress</a>."
1846
+ msgstr ""
1847
+ "Les versions Pro des extensions PublishPress valent bien votre "
1848
+ "investissement. Les versions Pro ont des fonctionnalités supplémentaires et "
1849
+ "un support plus rapide. <a href=\"https://publishpress.com/pricing/"
1850
+ "\">Cliquez ici pour rejoindre PublishPress</a>."
1851
+
1852
+ #. Found in description paragraph.
1853
+ msgid ""
1854
+ "PublishPress Capabilities offers you the ability to back up and restore your "
1855
+ "permissions. This feature is very helpful if you want to test out changes on "
1856
+ "your site, or if you've installed a new plugin that has changed your site's "
1857
+ "permissions."
1858
+ msgstr ""
1859
+ "PublishPress Capabilities vous offre la possibilité de sauvegarder et de "
1860
+ "restaurer vos permissions. Cette fonctionnalité est très utile si vous "
1861
+ "souhaitez tester des modifications sur votre site ou si vous avez installé "
1862
+ "une nouvelle extension qui a modifié les permissions de votre site."
1863
+
1864
+ #. Found in description paragraph.
1865
+ msgid ""
1866
+ "PublishPress Capabilities is <strong>safe to use</strong>. Every time you "
1867
+ "change your site's permissions, this plugin will take a backup that you can "
1868
+ "restore if anything goes wrong. You can use these backups to migrate your "
1869
+ "roles and permissions from one site to another."
1870
+ msgstr ""
1871
+ "PublishPress Capabilities est <strong>sûr à utiliser</strong>. Chaque fois "
1872
+ "que vous modifiez les permissions de votre site, cette extension effectuera "
1873
+ "une sauvegarde que vous pourrez restaurer en cas de problème. Vous pouvez "
1874
+ "utiliser ces sauvegardes pour migrer vos rôles et permissions d’un site à un "
1875
+ "autre."
1876
+
1877
+ #. Found in description list item.
1878
+ msgid ""
1879
+ "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</"
1880
+ "a> allows you to update your published pages with teamwork and precision."
1881
+ msgstr ""
1882
+ "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</"
1883
+ "a> vous permet de mettre à jour vos pages publiées avec précision et travail "
1884
+ "d’équipe."
1885
+
1886
+ #. Found in description list item.
1887
+ msgid ""
1888
+ "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> is "
1889
+ "the plugin for managing and scheduling WordPress content."
1890
+ msgstr ""
1891
+ "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> est "
1892
+ "l’extension pour gérer et planifier les publications WordPress."
1893
+
1894
+ #. Found in description list item.
1895
+ msgid ""
1896
+ "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions "
1897
+ "Pro</a> is the plugin for advanced WordPress permissions."
1898
+ msgstr ""
1899
+ "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions "
1900
+ "Pro</a> est l’extension pour les permissions WordPress avancées."
1901
+
1902
+ #. Found in description list item.
1903
+ msgid ""
1904
+ "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</"
1905
+ "a> enables you to define tasks that must be completed before content is "
1906
+ "published."
1907
+ msgstr ""
1908
+ "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</"
1909
+ "a> vous permet de définir les tâches qui doivent être effectuées avant "
1910
+ "publier une publication."
1911
+
1912
+ #. Found in description list item.
1913
+ msgid ""
1914
+ "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities "
1915
+ "Pro</a> is the plugin to manage your WordPress user roles, permissions, and "
1916
+ "capabilities."
1917
+ msgstr ""
1918
+ "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities "
1919
+ "Pro</a> est l’extension pour gérer vos rôles, permissions et droits "
1920
+ "d’utilisateur WordPress."
1921
+
1922
+ #. Found in description list item.
1923
+ msgid ""
1924
+ "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
1925
+ "allows you to add multiple authors and guest authors to WordPress posts."
1926
+ msgstr ""
1927
+ "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> "
1928
+ "vous permet d’ajouter plusieurs auteurs et auteurs invités aux publications "
1929
+ "WordPress."
1930
+
1931
+ #. Found in description header.
1932
+ msgid "Follow the PublishPress team"
1933
+ msgstr "Suivez l’équipe de PublishPress"
1934
+
1935
+ #. Found in description header.
1936
+ msgid "Bug Reports"
1937
+ msgstr "Rapports de bogues"
1938
+
1939
+ #. Found in description header.
1940
+ msgid "Join PublishPress and get the Pro plugins"
1941
+ msgstr "Rejoignez PublishPress et obtenez les extensions Pro"
1942
+
1943
+ #. Found in description header.
1944
+ msgid "13. WordPress Multisite support"
1945
+ msgstr "#11. Prise en charge de WordPress multisite"
1946
+
1947
+ #. Found in description header.
1948
+ msgid "12. Support for WooCommerce Permissions"
1949
+ msgstr "#dix. Prise en charge des permissions WooCommerce"
1950
+
1951
+ #. Found in description header.
1952
+ msgid "11. Support for Media Library Permissions"
1953
+ msgstr "#9. Prise en charge des permissions de la médiathèque"
1954
+
1955
+ #. Found in description header.
1956
+ msgid "7. Backup and Restore User Roles and Capabilities"
1957
+ msgstr "#5. Rôles et permissions de sauvegarde et de restauration"
1958
+
1959
+ #. Found in description header.
1960
+ msgid "2. Capabilities for any Post Type"
1961
+ msgstr "#2. Permissions pour toutes les publications"
1962
+
1963
+ #. Found in changelog list item.
1964
+ msgid "Feature : New \"Admin Features\" screen #200"
1965
+ msgstr "Feature : New \"Admin Features\" screen #200"
1966
+
1967
+ #. Found in changelog list item.
1968
+ msgid "Change : Role Capabilities screen uses tabs"
1969
+ msgstr "Change : Role Capabilities screen uses tabs"
1970
+
1971
+ #. Found in changelog list item.
1972
+ msgid ""
1973
+ "Fixed : Some security scans flagged an unused file in external library "
1974
+ "\"chosen\". That file (and other developer documentation files) has been "
1975
+ "removed"
1976
+ msgstr ""
1977
+ "Fixed : Some security scans flagged an unused file in external library "
1978
+ "\"chosen\". That file (and other developer documentation files) has been "
1979
+ "removed"
1980
+
1981
+ #. Found in changelog list item.
1982
+ msgid ""
1983
+ "Perf : Sync role to all sites - Operation timed out on networks with ~100 "
1984
+ "sites "
1985
+ msgstr ""
1986
+ "Perf : Sync role to all sites - Operation timed out on networks with ~100 "
1987
+ "sites "
1988
+
1989
+ #. Found in changelog list item.
1990
+ msgid ""
1991
+ "Feature : Retain last role selection for Capabilities, Editor Features "
1992
+ "screens"
1993
+ msgstr ""
1994
+ "Feature : Retain last role selection for Capabilities, Editor Features "
1995
+ "screens"
1996
+
1997
+ #. Found in changelog list item.
1998
+ msgid ""
1999
+ "Fixed : PHP Warning if a role is stored without a valid capabilities array"
2000
+ msgstr ""
2001
+ "Fixed : PHP Warning if a role is stored without a valid capabilities array"
2002
+
2003
+ #. Found in changelog list item.
2004
+ msgid ""
2005
+ "Fixed : If Media \"Create\" capability is negated or un-negated, the "
2006
+ "corresponding upload_files checkbox (in Other WP Core Capabilities section) "
2007
+ "is not toggled, leading to an apparant update failure "
2008
+ msgstr ""
2009
+ "Fixed : If Media \"Create\" capability is negated or un-negated, the "
2010
+ "corresponding upload_files checkbox (in Other WP Core Capabilities section) "
2011
+ "is not toggled, leading to an apparant update failure "
2012
+
2013
+ #. Found in changelog list item.
2014
+ msgid ""
2015
+ "Fixed : If Media \"Create\" capability is selected / unselected by clicking "
2016
+ "Media caption or Create caption, the corresponding upload_files checkbox (in "
2017
+ "Other WP Core Capabilities section) is not toggled, leading to an apparant "
2018
+ "update failure"
2019
+ msgstr ""
2020
+ "Fixed : If Media \"Create\" capability is selected / unselected by clicking "
2021
+ "Media caption or Create caption, the corresponding upload_files checkbox (in "
2022
+ "Other WP Core Capabilities section) is not toggled, leading to an apparant "
2023
+ "update failure"
2024
+
2025
+ #. Found in changelog list item.
2026
+ msgid ""
2027
+ "Feature : Editor Features restriction (new screen to block editor elements "
2028
+ "per-role)"
2029
+ msgstr ""
2030
+ "Feature : Editor Features restriction (new screen to block editor elements "
2031
+ "per-role)"
2032
+
2033
+ #. Found in changelog list item.
2034
+ msgid ""
2035
+ "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row "
2036
+ "actions"
2037
+ msgstr ""
2038
+ "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row "
2039
+ "actions"
2040
+
2041
+ #. Found in changelog list item.
2042
+ msgid ""
2043
+ "Compat : PublishPress - Authors without publish capability could directly "
2044
+ "publish on the Calendar screen"
2045
+ msgstr ""
2046
+ "Compat : PublishPress - Authors without publish capability could directly "
2047
+ "publish on the Calendar screen"
2048
+
2049
+ #. Found in changelog list item.
2050
+ msgid "Fixed : Add New User - couldn't display password entry"
2051
+ msgstr "Fixed : Add New User - couldn't display password entry"
2052
+
2053
+ #. Found in changelog list item.
2054
+ msgid ""
2055
+ "Fixed : Fatal error on Capabilities screen if another plugin calls "
2056
+ "get_editable_roles() too early"
2057
+ msgstr ""
2058
+ "Fixed : Fatal error on Capabilities screen if another plugin calls "
2059
+ "get_editable_roles() too early"
2060
+
2061
+ #. Found in changelog list item.
2062
+ msgid ""
2063
+ "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID "
2064
+ "is not 1"
2065
+ msgstr ""
2066
+ "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID "
2067
+ "is not 1"
2068
+
2069
+ #. Found in changelog list item.
2070
+ msgid ""
2071
+ "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use "
2072
+ "create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific "
2073
+ "Capabilities, Detailed Taxonomy Capabilities settings "
2074
+ msgstr ""
2075
+ "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use "
2076
+ "create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific "
2077
+ "Capabilities, Detailed Taxonomy Capabilities settings "
2078
+
2079
+ #. Found in changelog list item.
2080
+ msgid "Fixed : Fatal error on plugin load if Administrator role does not exist"
2081
+ msgstr ""
2082
+ "Fixed : Fatal error on plugin load if Administrator role does not exist"
2083
+
2084
+ #. Found in changelog list item.
2085
+ msgid "Feature : Rename Role sidebar box on Capabilities screen"
2086
+ msgstr "Feature : Rename Role sidebar box on Capabilities screen"
2087
+
2088
+ #. Found in changelog list item.
2089
+ msgid ""
2090
+ "Change : Add New Role retains capitalization as entered for role title "
2091
+ "(otherwise applies proper case)"
2092
+ msgstr ""
2093
+ "Change : Add New Role retains capitalization as entered for role title "
2094
+ "(otherwise applies proper case)"
2095
+
2096
+ #. Found in changelog list item.
2097
+ msgid ""
2098
+ "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting "
2099
+ "was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; "
2100
+ "Filtered Post Types"
2101
+ msgstr ""
2102
+ "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting "
2103
+ "was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; "
2104
+ "Filtered Post Types"
2105
+
2106
+ #. Found in changelog list item.
2107
+ msgid ""
2108
+ "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly "
2109
+ "synchronized under some conditions"
2110
+ msgstr ""
2111
+ "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly "
2112
+ "synchronized under some conditions"
2113
+
2114
+ #. Found in changelog list item.
2115
+ msgid "Fixed : Upgrade menu links were not displayed"
2116
+ msgstr "Fixed : Upgrade menu links were not displayed"
2117
+
2118
+ #. Found in changelog list item.
2119
+ msgid "Fixed : Fatal error due to missing vendor library folder"
2120
+ msgstr "Fixed : Fatal error due to missing vendor library folder"
2121
+
2122
+ #. Found in changelog list item.
2123
+ msgid ""
2124
+ "Fixed : Language file load failure if plugin directory structure is non-"
2125
+ "standard"
2126
+ msgstr ""
2127
+ "Fixed : Language file load failure if plugin directory structure is non-"
2128
+ "standard"
2129
+
2130
+ #. Found in changelog list item.
2131
+ msgid ""
2132
+ "Fixed : Multisite - Incorrect menu display on sites where main site ID is "
2133
+ "not 1"
2134
+ msgstr ""
2135
+ "Fixed : Multisite - Incorrect menu display on sites where main site ID is "
2136
+ "not 1"
2137
+
2138
+ #. Found in changelog list item.
2139
+ msgid ""
2140
+ "Fixed : Media Create / upload_files capability could not be removed from role"
2141
+ msgstr ""
2142
+ "Fixed : Media Create / upload_files capability could not be removed from role"
2143
+
2144
+ #. Found in changelog list item.
2145
+ msgid ""
2146
+ "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, "
2147
+ "Deletion, Reading capabilities grid"
2148
+ msgstr ""
2149
+ "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, "
2150
+ "Deletion, Reading capabilities grid"
2151
+
2152
+ #. Found in changelog list item.
2153
+ msgid ""
2154
+ "Feature : Backup &gt; Restore - filter to display only modified capabilities"
2155
+ msgstr ""
2156
+ "Feature : Backup &gt; Restore - filter to display only modified capabilities"
2157
+
2158
+ #. Found in changelog list item.
2159
+ msgid "Feature : Improved design and styling for Backup and Restore"
2160
+ msgstr "Feature : Improved design and styling for Backup and Restore"
2161
+
2162
+ #. Found in changelog list item.
2163
+ msgid ""
2164
+ "Fixed : Review of role backup contents does not show name of current roles "
2165
+ "which would be removed by restoring backup"
2166
+ msgstr ""
2167
+ "Fixed : Review of role backup contents does not show name of current roles "
2168
+ "which would be removed by restoring backup"
2169
+
2170
+ #. Found in changelog list item.
2171
+ msgid ""
2172
+ "Fixed : Type-Specific Capabilities options included some non-public "
2173
+ "WordPress post types that don't support capability customization "
2174
+ msgstr ""
2175
+ "Fixed : Type-Specific Capabilities options included some non-public "
2176
+ "WordPress post types that don't support capability customization "
2177
+
2178
+ #. Found in changelog list item.
2179
+ msgid ""
2180
+ "Change : Backup &gt; Restore - Preview displays \"No changes\" below role "
2181
+ "name where appropriate "
2182
+ msgstr ""
2183
+ "Change : Backup &gt; Restore - Preview displays \"No changes\" below role "
2184
+ "name where appropriate "
2185
+
2186
+ #. Found in changelog list item.
2187
+ msgid ""
2188
+ "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped "
2189
+ "selection to Last Manual Backup"
2190
+ msgstr ""
2191
+ "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped "
2192
+ "selection to Last Manual Backup"
2193
+
2194
+ #. Found in changelog list item.
2195
+ msgid ""
2196
+ "Fixed : Backup &gt; Restore - Negated capabilities were not displayed "
2197
+ "correctly in restore preview"
2198
+ msgstr ""
2199
+ "Fixed : Backup &gt; Restore - Negated capabilities were not displayed "
2200
+ "correctly in restore preview"
2201
+
2202
+ #. Found in changelog list item.
2203
+ msgid ""
2204
+ "Fixed : PHP warning for invalid foreach argument, on sites with no "
2205
+ "active_plugins option stored"
2206
+ msgstr ""
2207
+ "Fixed : PHP warning for invalid foreach argument, on sites with no "
2208
+ "active_plugins option stored"
2209
+
2210
+ #. Found in changelog list item.
2211
+ msgid ""
2212
+ "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false "
2213
+ "positives for post types with map_meta_cap disabled"
2214
+ msgstr ""
2215
+ "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false "
2216
+ "positives for post types with map_meta_cap disabled"
2217
+
2218
+ #. Found in changelog list item.
2219
+ msgid ""
2220
+ "Fixed : uneditable bbPress roles could be opened for editing (require "
2221
+ "Capabilities Pro)"
2222
+ msgstr ""
2223
+ "Fixed : uneditable bbPress roles could be opened for editing (require "
2224
+ "Capabilities Pro)"
2225
+
2226
+ #. Found in changelog list item.
2227
+ msgid ""
2228
+ "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in "
2229
+ "Editing Capabilities grid"
2230
+ msgstr ""
2231
+ "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in "
2232
+ "Editing Capabilities grid"
2233
+
2234
+ #. Found in changelog list item.
2235
+ msgid ""
2236
+ "Change : Adjust some captions, variable names, more selective code execution"
2237
+ msgstr ""
2238
+ "Change : Adjust some captions, variable names, more selective code execution"
2239
+
2240
+ #. Found in changelog list item.
2241
+ msgid ""
2242
+ "Change : Capabilities screen - move some sidebar items to Settings screen"
2243
+ msgstr ""
2244
+ "Change : Capabilities screen - move some sidebar items to Settings screen"
2245
+
2246
+ #. Found in changelog list item.
2247
+ msgid ""
2248
+ "Change : Capabilities screen - move role selector to top left, eliminate "
2249
+ "load button"
2250
+ msgstr ""
2251
+ "Change : Capabilities screen - move role selector to top left, eliminate "
2252
+ "load button"
2253
+
2254
+ #. Found in changelog list item.
2255
+ msgid ""
2256
+ "Lang : Fixed handling, activated partial translations in German, Italian, "
2257
+ "Russian, Spanish, Swedish, Belarusian, Catalan"
2258
+ msgstr ""
2259
+ "Lang : Fixed handling, activated partial translations in German, Italian, "
2260
+ "Russian, Spanish, Swedish, Belarusian, Catalan"
2261
+
2262
+ #. Found in changelog list item.
2263
+ msgid "Feature : Multiple role assignment on Add / Edit User screen"
2264
+ msgstr "Feature : Multiple role assignment on Add / Edit User screen"
2265
+
2266
+ #. Found in changelog list item.
2267
+ msgid "Feature : Roles screen"
2268
+ msgstr "Feature : Roles screen"
2269
+
2270
+ #. Found in changelog list item.
2271
+ msgid ""
2272
+ "Fixed : Capabilities menu was displayed to non-Administrators with no items "
2273
+ "except \"Upgrade to Pro\""
2274
+ msgstr ""
2275
+ "Fixed : Capabilities menu was displayed to non-Administrators with no items "
2276
+ "except \"Upgrade to Pro\""
2277
+
2278
+ #. Found in changelog list item.
2279
+ msgid ""
2280
+ "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific "
2281
+ "Capabilities\" were not synchronized with PublishPress Permissions under "
2282
+ "some conditions"
2283
+ msgstr ""
2284
+ "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific "
2285
+ "Capabilities\" were not synchronized with PublishPress Permissions under "
2286
+ "some conditions"
2287
+
2288
+ #. Found in changelog list item.
2289
+ msgid ""
2290
+ "Fixed : Fatal error loading Capabilities screen on a small percentage of "
2291
+ "installations"
2292
+ msgstr ""
2293
+ "Fixed : Fatal error loading Capabilities screen on a small percentage of "
2294
+ "installations"
2295
+
2296
+ #. Found in changelog list item.
2297
+ msgid ""
2298
+ "Change : Apply workaround filters for WordPress edit_published_posts / "
2299
+ "publish_posts handling only for users who have edit_published_posts "
2300
+ "capability for current post type"
2301
+ msgstr ""
2302
+ "Change : Apply workaround filters for WordPress edit_published_posts / "
2303
+ "publish_posts handling only for users who have edit_published_posts "
2304
+ "capability for current post type"
2305
+
2306
+ #. Found in changelog list item.
2307
+ msgid ""
2308
+ "Change : Reinstate WordPress edit_published_posts workaround with correct "
2309
+ "status filtering behavior"
2310
+ msgstr ""
2311
+ "Change : Reinstate WordPress edit_published_posts workaround with correct "
2312
+ "status filtering behavior"
2313
+
2314
+ #. Found in changelog list item.
2315
+ msgid ""
2316
+ "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect "
2317
+ "under some conditions"
2318
+ msgstr ""
2319
+ "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect "
2320
+ "under some conditions"
2321
+
2322
+ #. Found in changelog list item.
2323
+ msgid ""
2324
+ "Fixed : Role name captions on Role Capabilities and Backup Tool screens "
2325
+ "could not be translated"
2326
+ msgstr ""
2327
+ "Fixed : Role name captions on Role Capabilities and Backup Tool screens "
2328
+ "could not be translated"
2329
+
2330
+ #. Found in changelog list item.
2331
+ msgid ""
2332
+ "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display "
2333
+ "PublishPress Capabilities section to Super Administrators who don't have a "
2334
+ "role on the site"
2335
+ msgstr ""
2336
+ "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display "
2337
+ "PublishPress Capabilities section to Super Administrators who don't have a "
2338
+ "role on the site"
2339
+
2340
+ #. Found in changelog list item.
2341
+ msgid ""
2342
+ "Fixed : Term Assign or Delete capabilities were not effective due to "
2343
+ "WordPress core forcing default capability requirement"
2344
+ msgstr ""
2345
+ "Fixed : Term Assign or Delete capabilities were not effective due to "
2346
+ "WordPress core forcing default capability requirement"
2347
+
2348
+ #. Found in changelog list item.
2349
+ msgid ""
2350
+ "Fixed : Category Assign or Delete capabilities were not effective due to "
2351
+ "WordPress core forcing default capability requirement"
2352
+ msgstr ""
2353
+ "Fixed : Category Assign or Delete capabilities were not effective due to "
2354
+ "WordPress core forcing default capability requirement"
2355
+
2356
+ #. Found in changelog list item.
2357
+ msgid ""
2358
+ "Fixed : Add Capability sidebar added custom capability to role immediately, "
2359
+ "but capability checkbox did not display as checked until reload"
2360
+ msgstr ""
2361
+ "Fixed : Add Capability sidebar added custom capability to role immediately, "
2362
+ "but capability checkbox did not display as checked until reload"
2363
+
2364
+ #. Found in changelog list item.
2365
+ msgid ""
2366
+ "Fixed : Browser reload caused Role Capabilities screen to display default "
2367
+ "role "
2368
+ msgstr ""
2369
+ "Fixed : Browser reload caused Role Capabilities screen to display default "
2370
+ "role "
2371
+
2372
+ #. Found in changelog list item.
2373
+ msgid ""
2374
+ "Feature : Role Capabilities screen links to PublishPress &gt; Roles for "
2375
+ "member management"
2376
+ msgstr ""
2377
+ "Feature : Role Capabilities screen links to PublishPress &gt; Roles for "
2378
+ "member management"
2379
+
2380
+ #. Found in changelog list item.
2381
+ msgid ""
2382
+ "Feature : Capabilities link on PublishPress &gt; Roles row opens Role "
2383
+ "Capabilities screen"
2384
+ msgstr ""
2385
+ "Feature : Capabilities link on PublishPress &gt; Roles row opens Role "
2386
+ "Capabilities screen"
2387
+
2388
+ #. Found in changelog list item.
2389
+ msgid "Change : Renamed to PublishPress Capabilities"
2390
+ msgstr "Change : Renamed to PublishPress Capabilities"
2391
+
2392
+ #. Found in changelog list item.
2393
+ msgid ""
2394
+ "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not "
2395
+ "work with ENTER keypress (caused screen reload without applying operation)"
2396
+ msgstr ""
2397
+ "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not "
2398
+ "work with ENTER keypress (caused screen reload without applying operation)"
2399
+
2400
+ #. Found in changelog list item.
2401
+ msgid ""
2402
+ "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to "
2403
+ "missing strikethrough"
2404
+ msgstr ""
2405
+ "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to "
2406
+ "missing strikethrough"
2407
+
2408
+ #. Found in changelog list item.
2409
+ msgid ""
2410
+ "Fixed : Plugin capability sections - pp_set_notification_channel and "
2411
+ "pp_manage_roles were included in both PublishPress and PublishPress "
2412
+ "Permissions sections"
2413
+ msgstr ""
2414
+ "Fixed : Plugin capability sections - pp_set_notification_channel and "
2415
+ "pp_manage_roles were included in both PublishPress and PublishPress "
2416
+ "Permissions sections"
2417
+
2418
+ #. Found in changelog list item.
2419
+ msgid ""
2420
+ "Change : Third Party Plugin Capabilities - always display checkboxes even if "
2421
+ "capabilities not present in Administrator role"
2422
+ msgstr ""
2423
+ "Change : Third Party Plugin Capabilities - always display checkboxes even if "
2424
+ "capabilities not present in Administrator role"
2425
+
2426
+ #. Found in changelog list item.
2427
+ msgid ""
2428
+ "Fixed : First-time installation: Capabilities menu item not displayed until "
2429
+ "after Plugins or Users menu clicked "
2430
+ msgstr ""
2431
+ "Fixed : First-time installation: Capabilities menu item not displayed until "
2432
+ "after Plugins or Users menu clicked "
2433
+
2434
+ #. Found in changelog list item.
2435
+ msgid ""
2436
+ "Feature : Auto-backup role and capabilities on each update (and on update to "
2437
+ "this version)"
2438
+ msgstr ""
2439
+ "Feature : Auto-backup role and capabilities on each update (and on update to "
2440
+ "this version)"
2441
+
2442
+ #. Found in changelog list item.
2443
+ msgid "Change : Clarify some messages for plugin access denial"
2444
+ msgstr "Change : Clarify some messages for plugin access denial"
2445
+
2446
+ #. Found in changelog list item.
2447
+ msgid ""
2448
+ "Fixed : Some functions were not accessible to network Super Administrators "
2449
+ "without a role on the site"
2450
+ msgstr ""
2451
+ "Fixed : Some functions were not accessible to network Super Administrators "
2452
+ "without a role on the site"
2453
+
2454
+ #. Found in changelog list item.
2455
+ msgid ""
2456
+ "Fixed : Capabilities screen was not accessible to non-Administrators who "
2457
+ "have \"manage_capabilities\" capability"
2458
+ msgstr ""
2459
+ "Fixed : Capabilities screen was not accessible to non-Administrators who "
2460
+ "have \"manage_capabilities\" capability"
2461
+
2462
+ #. Found in changelog list item.
2463
+ msgid ""
2464
+ "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save "
2465
+ "with incorrect post status (since 1.8)"
2466
+ msgstr ""
2467
+ "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save "
2468
+ "with incorrect post status (since 1.8)"
2469
+
2470
+ #. Found in changelog list item.
2471
+ msgid ""
2472
+ "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not "
2473
+ "updated based on role edit"
2474
+ msgstr ""
2475
+ "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not "
2476
+ "updated based on role edit"
2477
+
2478
+ #. Found in changelog list item.
2479
+ msgid "Change : PublishPress icon, footer on Roles and Capabilities screen"
2480
+ msgstr "Change : PublishPress icon, footer on Roles and Capabilities screen"
2481
+
2482
+ #. Found in changelog list item.
2483
+ msgid "Change : Edit Roles link in CME row of Plugins list"
2484
+ msgstr "Change : Edit Roles link in CME row of Plugins list"
2485
+
2486
+ #. Found in changelog list item.
2487
+ msgid ""
2488
+ "Change : Move Role Capabilities menu item to Permissions menu if PressPermit "
2489
+ "plugin is active (restoring previous behavior with Press Permit Core)"
2490
+ msgstr ""
2491
+ "Change : Move Role Capabilities menu item to Permissions menu if PressPermit "
2492
+ "plugin is active (restoring previous behavior with Press Permit Core)"
2493
+
2494
+ #. Found in changelog list item.
2495
+ msgid ""
2496
+ "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin "
2497
+ "Posts / Pages listing"
2498
+ msgstr ""
2499
+ "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin "
2500
+ "Posts / Pages listing"
2501
+
2502
+ #. Found in changelog list item.
2503
+ msgid "Fixed : HTML validation errors on Manage Capabilities screen"
2504
+ msgstr "Fixed : HTML validation errors on Manage Capabilities screen"
2505
+
2506
+ #. Found in changelog list item.
2507
+ msgid ""
2508
+ "Fixed : PHP Notices on Role Capabilities screen for undefined index, under "
2509
+ "some configurations "
2510
+ msgstr ""
2511
+ "Fixed : PHP Notices on Role Capabilities screen for undefined index, under "
2512
+ "some configurations "
2513
+
2514
+ #. Found in changelog list item.
2515
+ msgid ""
2516
+ "Fixed : Removed add_users from the Core WordPress Capabilities section "
2517
+ "because it is was replaced by promote_users"
2518
+ msgstr ""
2519
+ "Fixed : Removed add_users from the Core WordPress Capabilities section "
2520
+ "because it is was replaced by promote_users"
2521
+
2522
+ #. Found in changelog list item.
2523
+ msgid ""
2524
+ "Fixed : If a unique edit/delete capability is already defined, don't change "
2525
+ "the definition"
2526
+ msgstr ""
2527
+ "Fixed : If a unique edit/delete capability is already defined, don't change "
2528
+ "the definition"
2529
+
2530
+ #. Found in changelog list item.
2531
+ msgid ""
2532
+ "Feature : Work around WordPress issue allowing users with "
2533
+ "edit_published_posts (but not publish_posts) to unpublish published posts"
2534
+ msgstr ""
2535
+ "Feature : Work around WordPress issue allowing users with "
2536
+ "edit_published_posts (but not publish_posts) to unpublish published posts"
2537
+
2538
+ #. Found in changelog list item.
2539
+ msgid ""
2540
+ "Feature : Work around WordPress issue preventing users with "
2541
+ "edit_published_posts (but not publish_posts) capability from updating "
2542
+ "published posts (https://core.trac.wordpress.org/ticket/47443)"
2543
+ msgstr ""
2544
+ "Feature : Work around WordPress issue preventing users with "
2545
+ "edit_published_posts (but not publish_posts) capability from updating "
2546
+ "published posts (https://core.trac.wordpress.org/ticket/47443)"
2547
+
2548
+ #. Found in changelog list item.
2549
+ msgid ""
2550
+ "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" "
2551
+ "filter to register their capabilities "
2552
+ msgstr ""
2553
+ "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" "
2554
+ "filter to register their capabilities "
2555
+
2556
+ #. Found in changelog list item.
2557
+ msgid ""
2558
+ "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in "
2559
+ "sections on role editor screen"
2560
+ msgstr ""
2561
+ "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in "
2562
+ "sections on role editor screen"
2563
+
2564
+ #. Found in changelog list item.
2565
+ msgid "Fixed : Correct some irregularities in CME admin menu item display"
2566
+ msgstr "Fixed : Correct some irregularities in CME admin menu item display"
2567
+
2568
+ #. Found in changelog list item.
2569
+ msgid ""
2570
+ "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role "
2571
+ "Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; "
2572
+ "Capabilities\")"
2573
+ msgstr ""
2574
+ "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role "
2575
+ "Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; "
2576
+ "Capabilities\")"
2577
+
2578
+ #. Found in changelog list item.
2579
+ msgid ""
2580
+ "Change : Don't allow non-Administrator to edit Administrators, even if "
2581
+ "Administrator role level is set to 0"
2582
+ msgstr ""
2583
+ "Change : Don't allow non-Administrator to edit Administrators, even if "
2584
+ "Administrator role level is set to 0"
2585
+
2586
+ #. Found in changelog list item.
2587
+ msgid "Fixed : PHP warning for deprecated function WP_Roles::reinit"
2588
+ msgstr "Fixed : PHP warning for deprecated function WP_Roles::reinit"
2589
+
2590
+ #. Found in changelog list item.
2591
+ msgid ""
2592
+ "Fixed : Potential vulnerability in wp-admin (but exposure was only to users "
2593
+ "with role editing capability)"
2594
+ msgstr ""
2595
+ "Fixed : Potential vulnerability in wp-admin (but exposure was only to users "
2596
+ "with role editing capability)"
2597
+
2598
+ #. Found in changelog list item.
2599
+ msgid ""
2600
+ "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME "
2601
+ "is activated"
2602
+ msgstr ""
2603
+ "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME "
2604
+ "is activated"
2605
+
2606
+ #. Found in changelog list item.
2607
+ msgid "Fixed : Back button caused mismatching role dropdown selection"
2608
+ msgstr "Fixed : Back button caused mismatching role dropdown selection"
2609
+
2610
+ #. Found in changelog list item.
2611
+ msgid "Feature : Backup Tool can also display contents of role backups"
2612
+ msgstr "Feature : Backup Tool can also display contents of role backups"
2613
+
2614
+ #. Found in changelog list item.
2615
+ msgid ""
2616
+ "Feature : When roles are manually backed up, also retain initial role backup"
2617
+ msgstr ""
2618
+ "Feature : When roles are manually backed up, also retain initial role backup"
2619
+
2620
+ #. Found in changelog list item.
2621
+ msgid ""
2622
+ "Feature : Automatically save backup of WP roles on plugin activation or "
2623
+ "update"
2624
+ msgstr ""
2625
+ "Feature : Automatically save backup of WP roles on plugin activation or "
2626
+ "update"
2627
+
2628
+ #. Found in changelog list item.
2629
+ msgid ""
2630
+ "Change : Links to Related Permissions Plugins in sidebar on Roles and "
2631
+ "Capabilities screen"
2632
+ msgstr ""
2633
+ "Change : Links to Related Permissions Plugins in sidebar on Roles and "
2634
+ "Capabilities screen"
2635
+
2636
+ #. Found in changelog list item.
2637
+ msgid "Change : Copyrights, onscreen link for PublishPress ownership"
2638
+ msgstr "Change : Copyrights, onscreen link for PublishPress ownership"
2639
+
2640
+ #. Found in changelog list item.
2641
+ msgid "Change : Minor code cleanup and refactor"
2642
+ msgstr "Change : Minor code cleanup and refactor"
2643
+
2644
+ #. Found in changelog list item.
2645
+ msgid "Feature : Link to Roles and Capabilities screen from Backup Tool"
2646
+ msgstr "Feature : Link to Roles and Capabilities screen from Backup Tool"
2647
+
2648
+ #. Found in changelog list item.
2649
+ msgid ""
2650
+ "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
2651
+ msgstr ""
2652
+ "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
2653
+
2654
+ #. Found in changelog list item.
2655
+ msgid ""
2656
+ "Feature : WooCommerce - If current user has duplicate_products capability, "
2657
+ "make Woo honor it"
2658
+ msgstr ""
2659
+ "Feature : WooCommerce - If current user has duplicate_products capability, "
2660
+ "make Woo honor it"
2661
+
2662
+ #. Found in changelog list item.
2663
+ msgid "Change : Thickbox popups for related plugins"
2664
+ msgstr "Change : Thickbox popups for related plugins"
2665
+
2666
+ #. Found in changelog list item.
2667
+ msgid "Change : Reinstate Press Permit description link "
2668
+ msgstr "Change : Reinstate Press Permit description link "
2669
+
2670
+ #. Found in changelog list item.
2671
+ msgid ""
2672
+ "Feature : Additional save button at top of Roles and Capabilities screen!"
2673
+ msgstr ""
2674
+ "Feature : Additional save button at top of Roles and Capabilities screen!"
2675
+
2676
+ #. Found in changelog list item.
2677
+ msgid ""
2678
+ "Feature : If read capability is missing from a standard role, display "
2679
+ "warning and instant fix link "
2680
+ msgstr ""
2681
+ "Feature : If read capability is missing from a standard role, display "
2682
+ "warning and instant fix link "
2683
+
2684
+ #. Found in changelog list item.
2685
+ msgid ""
2686
+ "Feature : Prevent read capability from being removed from a standard role"
2687
+ msgstr ""
2688
+ "Feature : Prevent read capability from being removed from a standard role"
2689
+
2690
+ #. Found in changelog list item.
2691
+ msgid "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
2692
+ msgstr "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
2693
+
2694
+ #. Found in changelog list item.
2695
+ msgid ""
2696
+ "Change : Lockout safeguard (preventing read capability removal) is bypassed "
2697
+ "if role has no WP admin / edit capabilities, or if it has "
2698
+ "\"dashboard_lockout_ok\" capability"
2699
+ msgstr ""
2700
+ "Change : Lockout safeguard (preventing read capability removal) is bypassed "
2701
+ "if role has no WP admin / edit capabilities, or if it has "
2702
+ "\"dashboard_lockout_ok\" capability"
2703
+
2704
+ #. Found in changelog list item.
2705
+ msgid ""
2706
+ "Feature : WooCommerce - Ensure orders can be edited or added based on "
2707
+ "edit_shop_orders / create_shop_orders capability"
2708
+ msgstr ""
2709
+ "Feature : WooCommerce - Ensure orders can be edited or added based on "
2710
+ "edit_shop_orders / create_shop_orders capability"
2711
+
2712
+ #. Found in changelog list item.
2713
+ msgid ""
2714
+ "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" "
2715
+ "causes term assign, edit and deletion capabilities to be required and "
2716
+ "credited separate from management capability"
2717
+ msgstr ""
2718
+ "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" "
2719
+ "causes term assign, edit and deletion capabilities to be required and "
2720
+ "credited separate from management capability"
2721
+
2722
+ #. Found in changelog list item.
2723
+ msgid ""
2724
+ "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" "
2725
+ "ensures a distinct manage capability for selected taxonomies"
2726
+ msgstr ""
2727
+ "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" "
2728
+ "ensures a distinct manage capability for selected taxonomies"
2729
+
2730
+ #. Found in changelog list item.
2731
+ msgid ""
2732
+ "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for "
2733
+ "selected post types (without activating Press Permit Core)."
2734
+ msgstr ""
2735
+ "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for "
2736
+ "selected post types (without activating Press Permit Core)."
2737
+
2738
+ #. Found in changelog list item.
2739
+ msgid ""
2740
+ "Fixed : Press Permit integration - cannot load Permissions &gt; Role "
2741
+ "Capabilities with Press Permit Core &lt; 2.7"
2742
+ msgstr ""
2743
+ "Fixed : Press Permit integration - cannot load Permissions &gt; Role "
2744
+ "Capabilities with Press Permit Core &lt; 2.7"
2745
+
2746
+ #. Found in changelog list item.
2747
+ msgid ""
2748
+ "Compat : WooCommerce integration - Users lacking access to the \"Add New "
2749
+ "Order\" submenu could not access Posts, Pages, Products or any other Post "
2750
+ "Type listing. This occurred if \"use create_posts\" option enabled and user "
2751
+ "lacks the create capability for Orders. "
2752
+ msgstr ""
2753
+ "Compat : WooCommerce integration - Users lacking access to the \"Add New "
2754
+ "Order\" submenu could not access Posts, Pages, Products or any other Post "
2755
+ "Type listing. This occurred if \"use create_posts\" option enabled and user "
2756
+ "lacks the create capability for Orders. "
2757
+
2758
+ #. Found in changelog list item.
2759
+ msgid ""
2760
+ "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator "
2761
+ "with WooCommerce active"
2762
+ msgstr ""
2763
+ "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator "
2764
+ "with WooCommerce active"
2765
+
2766
+ #. Found in changelog list item.
2767
+ msgid ""
2768
+ "Fixed : Work around WP quirk of completely blocking admin page access for a "
2769
+ "post type if user lacks create capability for the post type and there are no "
2770
+ "other accessible items on the menu."
2771
+ msgstr ""
2772
+ "Fixed : Work around WP quirk of completely blocking admin page access for a "
2773
+ "post type if user lacks create capability for the post type and there are no "
2774
+ "other accessible items on the menu."
2775
+
2776
+ #. Found in changelog list item.
2777
+ msgid ""
2778
+ "Fixed : Negative role capabilities could not be directly unset (had to be "
2779
+ "checked, saved, then unchecked)."
2780
+ msgstr ""
2781
+ "Fixed : Negative role capabilities could not be directly unset (had to be "
2782
+ "checked, saved, then unchecked)."
2783
+
2784
+ #. Found in changelog list item.
2785
+ msgid ""
2786
+ "Fixed : On some sites, capabilities added dynamically by other code were "
2787
+ "forced into stored role definition (and could not be removed)."
2788
+ msgstr ""
2789
+ "Fixed : On some sites, capabilities added dynamically by other code were "
2790
+ "forced into stored role definition (and could not be removed)."
2791
+
2792
+ #. Found in changelog list item.
2793
+ msgid "Fixed : User editing was improperly blocked in some cases"
2794
+ msgstr "Fixed : User editing was improperly blocked in some cases"
2795
+
2796
+ #. Found in changelog list item.
2797
+ msgid "First public version."
2798
+ msgstr "First public version."
2799
+
2800
+ #. Found in changelog list item.
2801
+ msgid "Updated Alkivia Framework."
2802
+ msgstr "Updated Alkivia Framework."
2803
+
2804
+ #. Found in changelog list item.
2805
+ msgid "Some code improvements."
2806
+ msgstr "Some code improvements."
2807
+
2808
+ #. Found in changelog list item.
2809
+ msgid "Role deletion added."
2810
+ msgstr "Role deletion added."
2811
+
2812
+ #. Found in changelog list item.
2813
+ msgid "Added backup/restore tool."
2814
+ msgstr "Added backup/restore tool."
2815
+
2816
+ #. Found in changelog list item.
2817
+ msgid "Updated Framework."
2818
+ msgstr "Updated Framework."
2819
+
2820
+ #. Found in changelog list item.
2821
+ msgid "Corrected internal links."
2822
+ msgstr "Corrected internal links."
2823
+
2824
+ #. Found in changelog list item.
2825
+ msgid "Coding Standards."
2826
+ msgstr "Coding Standards."
2827
+
2828
+ #. Found in changelog list item.
2829
+ msgid "Added Russian translation."
2830
+ msgstr "Added Russian translation."
2831
+
2832
+ #. Found in changelog list item.
2833
+ msgid "Added German and Belorussian translations."
2834
+ msgstr "Added German and Belorussian translations."
2835
+
2836
+ #. Found in changelog list item.
2837
+ msgid "Added Italian translation."
2838
+ msgstr "Added Italian translation."
2839
+
2840
+ #. Found in changelog list item.
2841
+ msgid "Tested up to WP 2.9.1."
2842
+ msgstr "Tested up to WP 2.9.1."
2843
+
2844
+ #. Found in changelog list item.
2845
+ msgid "Changed license to GPL version 2."
2846
+ msgstr "Changed license to GPL version 2."
2847
+
2848
+ #. Found in changelog list item.
2849
+ msgid "Migrated to the new Alkivia Framework."
2850
+ msgstr "Migrated to the new Alkivia Framework."
2851
+
2852
+ #. Found in changelog list item.
2853
+ msgid "Solved an incompatibility with Chameleon theme."
2854
+ msgstr "Solved an incompatibility with Chameleon theme."
2855
+
2856
+ #. Found in changelog list item.
2857
+ msgid "Cannot assign to users a role with more capabilities than current user."
2858
+ msgstr ""
2859
+ "Cannot assign to users a role with more capabilities than current user."
2860
+
2861
+ #. Found in changelog list item.
2862
+ msgid "Cannot edit users with more capabilities than current user."
2863
+ msgstr "Cannot edit users with more capabilities than current user."
2864
+
2865
+ #. Found in changelog list item.
2866
+ msgid ""
2867
+ "Fixed a bug where administrators could not create or manage other "
2868
+ "administrators."
2869
+ msgstr ""
2870
+ "Fixed a bug where administrators could not create or manage other "
2871
+ "administrators."
2872
+
2873
+ #. Found in changelog list item.
2874
+ msgid "Added Swedish translation."
2875
+ msgstr "Added Swedish translation."
2876
+
2877
+ #. Found in changelog list item.
2878
+ msgid ""
2879
+ "Reduce memory usage by loading framework and plugin code only when needed"
2880
+ msgstr ""
2881
+ "Reduce memory usage by loading framework and plugin code only when needed"
2882
+
2883
+ #. Found in changelog list item.
2884
+ msgid ""
2885
+ "Show capabilities which Press Permit adds to the role by supplemental type-"
2886
+ "specific role assignment"
2887
+ msgstr ""
2888
+ "Show capabilities which Press Permit adds to the role by supplemental type-"
2889
+ "specific role assignment"
2890
+
2891
+ #. Found in changelog list item.
2892
+ msgid ""
2893
+ "Press Permit integration: externally (dis)enable Post Types, Taxonomies for "
2894
+ "PP filtering (which forces type-specific capability definitions)"
2895
+ msgstr ""
2896
+ "Press Permit integration: externally (dis)enable Post Types, Taxonomies for "
2897
+ "PP filtering (which forces type-specific capability definitions)"
2898
+
2899
+ #. Found in changelog list item.
2900
+ msgid "Fixed : PHP Warnings for unchecked capabilities"
2901
+ msgstr "Fixed : PHP Warnings for unchecked capabilities"
2902
+
2903
+ #. Found in changelog list item.
2904
+ msgid ""
2905
+ "Don't allow a non-Administrator to add or remove a capability they don't have"
2906
+ msgstr ""
2907
+ "Don't allow a non-Administrator to add or remove a capability they don't have"
2908
+
2909
+ #. Found in changelog list item.
2910
+ msgid "Clarified sidebar captions"
2911
+ msgstr "Clarified sidebar captions"
2912
+
2913
+ #. Found in changelog list item.
2914
+ msgid "Editing UI separates WP core capabilities and 3rd party capabilities"
2915
+ msgstr "Editing UI separates WP core capabilities and 3rd party capabilities"
2916
+
2917
+ #. Found in changelog list item.
2918
+ msgid "Organized capabilities UI by post type and operation"
2919
+ msgstr "Organized capabilities UI by post type and operation"
2920
+
2921
+ #. Found in changelog list item.
2922
+ msgid ""
2923
+ "Press Permit integration: if role definitions are reset to WP defaults, also "
2924
+ "repopulate PP capabilities (pp_manage_settings, etc.)"
2925
+ msgstr ""
2926
+ "Press Permit integration: if role definitions are reset to WP defaults, also "
2927
+ "repopulate PP capabilities (pp_manage_settings, etc.)"
2928
+
2929
+ #. Found in changelog list item.
2930
+ msgid "https compatibility: use content_url(), plugins_url()"
2931
+ msgstr "https compatibility: use content_url(), plugins_url()"
2932
+
2933
+ #. Found in changelog list item.
2934
+ msgid ""
2935
+ "Press Permit integration: roles can be marked for supplemental assignment "
2936
+ "only (and suppressed from WP role assignment dropdown, requires PP 1.0-"
2937
+ "beta1.4)"
2938
+ msgstr ""
2939
+ "Press Permit integration: roles can be marked for supplemental assignment "
2940
+ "only (and suppressed from WP role assignment dropdown, requires PP 1.0-"
2941
+ "beta1.4)"
2942
+
2943
+ #. Found in changelog list item.
2944
+ msgid "Language: updated .pot file"
2945
+ msgstr "Language: updated .pot file"
2946
+
2947
+ #. Found in changelog list item.
2948
+ msgid ""
2949
+ "Press Permit integration: automatically store a backup copy of each role's "
2950
+ "last saved capability set so they can be reinstated if necessary (currently "
2951
+ "for bbPress)"
2952
+ msgstr ""
2953
+ "Press Permit integration: automatically store a backup copy of each role's "
2954
+ "last saved capability set so they can be reinstated if necessary (currently "
2955
+ "for bbPress)"
2956
+
2957
+ #. Found in changelog list item.
2958
+ msgid ""
2959
+ "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts "
2960
+ "even if it was defined to the be same as cap-&gt;edit_posts"
2961
+ msgstr ""
2962
+ "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts "
2963
+ "even if it was defined to the be same as cap-&gt;edit_posts"
2964
+
2965
+ #. Found in changelog list item.
2966
+ msgid ""
2967
+ "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
2968
+ msgstr ""
2969
+ "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
2970
+
2971
+ #. Found in changelog list item.
2972
+ msgid "Fixed : On translated sites, roles could not be edited"
2973
+ msgstr "Fixed : On translated sites, roles could not be edited"
2974
+
2975
+ #. Found in changelog list item.
2976
+ msgid ""
2977
+ "Press Permit integration: If capability is granted by the role's Permit "
2978
+ "Group, highlight it as green with a descriptive caption title, but leave "
2979
+ "checkbox enabled for display/editing of role defintion setting (previous "
2980
+ "behavior caused capability to be stripped out of WP role definition under "
2981
+ "some PP configurations)"
2982
+ msgstr ""
2983
+ "Press Permit integration: If capability is granted by the role's Permit "
2984
+ "Group, highlight it as green with a descriptive caption title, but leave "
2985
+ "checkbox enabled for display/editing of role defintion setting (previous "
2986
+ "behavior caused capability to be stripped out of WP role definition under "
2987
+ "some PP configurations)"
2988
+
2989
+ #. Found in changelog list item.
2990
+ msgid ""
2991
+ "Fixed : Capability labels in \"Other WordPress\" section did not toggle "
2992
+ "checkbox selection"
2993
+ msgstr ""
2994
+ "Fixed : Capability labels in \"Other WordPress\" section did not toggle "
2995
+ "checkbox selection"
2996
+
2997
+ #. Found in changelog list item.
2998
+ msgid "Fixed : Capabilities were needlessly re-saved on role load"
2999
+ msgstr "Fixed : Capabilities were needlessly re-saved on role load"
3000
+
3001
+ #. Found in changelog list item.
3002
+ msgid ""
3003
+ "Fixed : Role update and copy failed if currently stored capability array is "
3004
+ "corrupted"
3005
+ msgstr ""
3006
+ "Fixed : Role update and copy failed if currently stored capability array is "
3007
+ "corrupted"
3008
+
3009
+ #. Found in changelog list item.
3010
+ msgid ""
3011
+ "Compat : Press Permit + bbPress - customized role capabilities were not "
3012
+ "properly maintained on bbPress activation / deactivation, in some scenarios"
3013
+ msgstr ""
3014
+ "Compat : Press Permit + bbPress - customized role capabilities were not "
3015
+ "properly maintained on bbPress activation / deactivation, in some scenarios"
3016
+
3017
+ #. Found in changelog list item.
3018
+ msgid ""
3019
+ "Compat : bbPress 2.2 (supports customization of dynamic forum role "
3020
+ "capabilities)"
3021
+ msgstr ""
3022
+ "Compat : bbPress 2.2 (supports customization of dynamic forum role "
3023
+ "capabilities)"
3024
+
3025
+ #. Found in changelog list item.
3026
+ msgid ""
3027
+ "Compat : Press Permit - flagging of roles as \"supplemental assignment only"
3028
+ "\" was not saved"
3029
+ msgstr ""
3030
+ "Compat : Press Permit - flagging of roles as \"supplemental assignment only"
3031
+ "\" was not saved"
3032
+
3033
+ #. Found in changelog list item.
3034
+ msgid ""
3035
+ "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used "
3036
+ "on a bbPress role, caused creation of an invalid role"
3037
+ msgstr ""
3038
+ "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used "
3039
+ "on a bbPress role, caused creation of an invalid role"
3040
+
3041
+ #. Found in changelog list item.
3042
+ msgid ""
3043
+ "Compat : Press Permit - \"supplemental only\" option was always enabled for "
3044
+ "newly created and copied roles, regardless of checkbox setting near Create/"
3045
+ "Copy button"
3046
+ msgstr ""
3047
+ "Compat : Press Permit - \"supplemental only\" option was always enabled for "
3048
+ "newly created and copied roles, regardless of checkbox setting near Create/"
3049
+ "Copy button"
3050
+
3051
+ #. Found in changelog list item.
3052
+ msgid ""
3053
+ "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" "
3054
+ "textbox caused the checkbox to be available but not selected"
3055
+ msgstr ""
3056
+ "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" "
3057
+ "textbox caused the checkbox to be available but not selected"
3058
+
3059
+ #. Found in changelog list item.
3060
+ msgid ""
3061
+ "Compat : bbPress + Press Permit - Modified bbPress role capabilities were "
3062
+ "not redisplayed following save, required reload"
3063
+ msgstr ""
3064
+ "Compat : bbPress + Press Permit - Modified bbPress role capabilities were "
3065
+ "not redisplayed following save, required reload"
3066
+
3067
+ #. Found in changelog list item.
3068
+ msgid ""
3069
+ "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines "
3070
+ "create_posts capabilities (requires Press Permit)"
3071
+ msgstr ""
3072
+ "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines "
3073
+ "create_posts capabilities (requires Press Permit)"
3074
+
3075
+ #. Found in changelog list item.
3076
+ msgid ""
3077
+ "Feature : If create_posts capabilities are defined, organize checkboxes into "
3078
+ "a column alongside edit_posts"
3079
+ msgstr ""
3080
+ "Feature : If create_posts capabilities are defined, organize checkboxes into "
3081
+ "a column alongside edit_posts"
3082
+
3083
+ #. Found in changelog list item.
3084
+ msgid ""
3085
+ "Fixed : Role capabilities were not updated / refreshed properly on multisite "
3086
+ "installations"
3087
+ msgstr ""
3088
+ "Fixed : Role capabilities were not updated / refreshed properly on multisite "
3089
+ "installations"
3090
+
3091
+ #. Found in changelog list item.
3092
+ msgid ""
3093
+ "Change : Reduced download size by moving screenshots to assets folder of "
3094
+ "project folder"
3095
+ msgstr ""
3096
+ "Change : Reduced download size by moving screenshots to assets folder of "
3097
+ "project folder"
3098
+
3099
+ #. Found in changelog list item.
3100
+ msgid "Maint : Stop using $GLOBALS superglobal"
3101
+ msgstr "Maint : Stop using $GLOBALS superglobal"
3102
+
3103
+ #. Found in changelog list item.
3104
+ msgid "Compat : Press Permit - green background around capabilities which "
3105
+ msgstr "Compat : Press Permit - green background around capabilities which "
3106
+
3107
+ #. Found in changelog list item.
3108
+ msgid ""
3109
+ "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
3110
+ msgstr ""
3111
+ "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
3112
+
3113
+ #. Found in changelog list item.
3114
+ msgid ""
3115
+ "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" "
3116
+ "settings update"
3117
+ msgstr ""
3118
+ "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" "
3119
+ "settings update"
3120
+
3121
+ #. Found in changelog list item.
3122
+ msgid "Compat : Press Permit - PHP Warning on role save"
3123
+ msgstr "Compat : Press Permit - PHP Warning on role save"
3124
+
3125
+ #. Found in changelog list item.
3126
+ msgid "Fixed : Failure to save capability changes, on some versions of PHP"
3127
+ msgstr "Fixed : Failure to save capability changes, on some versions of PHP"
3128
+
3129
+ #. Found in changelog list item.
3130
+ msgid ""
3131
+ "Perf : Eliminated unused framework code (reduced typical wp-admin memory "
3132
+ "usage by 0.6 MB)"
3133
+ msgstr ""
3134
+ "Perf : Eliminated unused framework code (reduced typical wp-admin memory "
3135
+ "usage by 0.6 MB)"
3136
+
3137
+ #. Found in changelog list item.
3138
+ msgid ""
3139
+ "Change : Press Permit promotional message includes link to display further "
3140
+ "info"
3141
+ msgstr ""
3142
+ "Change : Press Permit promotional message includes link to display further "
3143
+ "info"
3144
+
3145
+ #. Found in changelog list item.
3146
+ msgid ""
3147
+ "Compat : Press Permit - if a role is marked as hidden, also default it for "
3148
+ "use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated "
3149
+ "and Advanced Settings enabled)"
3150
+ msgstr ""
3151
+ "Compat : Press Permit - if a role is marked as hidden, also default it for "
3152
+ "use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated "
3153
+ "and Advanced Settings enabled)"
3154
+
3155
+ #. Found in changelog list item.
3156
+ msgid "Fixed : jQuery notices for deprecated methods on Edit Role screen"
3157
+ msgstr "Fixed : jQuery notices for deprecated methods on Edit Role screen"
3158
+
3159
+ #. Found in changelog list item.
3160
+ msgid ""
3161
+ "Fixed : Term deletion capability was not included in taxonomies grid even if "
3162
+ "defined"
3163
+ msgstr ""
3164
+ "Fixed : Term deletion capability was not included in taxonomies grid even if "
3165
+ "defined"
3166
+
3167
+ #. Found in changelog list item.
3168
+ msgid "Change : Clarified English captions on Backup Tool screen"
3169
+ msgstr "Change : Clarified English captions on Backup Tool screen"
3170
+
3171
+ #. Found in changelog list item.
3172
+ msgid ""
3173
+ "Fixed : Role reset to WP defaults did not work, caused a PHP error / white "
3174
+ "screen"
3175
+ msgstr ""
3176
+ "Fixed : Role reset to WP defaults did not work, caused a PHP error / white "
3177
+ "screen"
3178
+
3179
+ #. Found in changelog list item.
3180
+ msgid ""
3181
+ "Feature : Backup / Restore tool requires \"restore_roles\" capability or "
3182
+ "super admin status"
3183
+ msgstr ""
3184
+ "Feature : Backup / Restore tool requires \"restore_roles\" capability or "
3185
+ "super admin status"
3186
+
3187
+ #. Found in changelog list item.
3188
+ msgid ""
3189
+ "Feature : Multisite - Copy a role definition to new (future) sites on a "
3190
+ "network"
3191
+ msgstr ""
3192
+ "Feature : Multisite - Copy a role definition to new (future) sites on a "
3193
+ "network"
3194
+
3195
+ #. Found in changelog list item.
3196
+ msgid ""
3197
+ "Feature : Multisite - Copy a role definition to all current sites on a "
3198
+ "network"
3199
+ msgstr ""
3200
+ "Feature : Multisite - Copy a role definition to all current sites on a "
3201
+ "network"
3202
+
3203
+ #. Found in changelog list item.
3204
+ msgid ""
3205
+ "Feature : Support negative capabilities (storage to wp_roles array with "
3206
+ "false value)"
3207
+ msgstr ""
3208
+ "Feature : Support negative capabilities (storage to wp_roles array with "
3209
+ "false value)"
3210
+
3211
+ #. Found in changelog list item.
3212
+ msgid ""
3213
+ "Fixed : Non-administrators with user editing capabilities could give new "
3214
+ "users a role with a higher level than their own (including Administrator)"
3215
+ msgstr ""
3216
+ "Fixed : Non-administrators with user editing capabilities could give new "
3217
+ "users a role with a higher level than their own (including Administrator)"
3218
+
3219
+ #. Found in changelog list item.
3220
+ msgid ""
3221
+ "Fixed : Network Super Administrators without an Administrator role on a "
3222
+ "particular site could not assign an Administrator role to other users of "
3223
+ "that site"
3224
+ msgstr ""
3225
+ "Fixed : Network Super Administrators without an Administrator role on a "
3226
+ "particular site could not assign an Administrator role to other users of "
3227
+ "that site"
3228
+
3229
+ #. Found in changelog list item.
3230
+ msgid "Lang : Updated .pot and .po files"
3231
+ msgstr "Lang : Updated .pot and .po files"
3232
+
3233
+ #. Found in changelog list item.
3234
+ msgid "Lang : Fixed erroneous text_domain argument for numerous strings"
3235
+ msgstr "Lang : Fixed erroneous text_domain argument for numerous strings"
3236
+
3237
+ #. Found in changelog list item.
3238
+ msgid "Perf : Don't output wp-admin CSS on non-CME screens"
3239
+ msgstr "Perf : Don't output wp-admin CSS on non-CME screens"
3240
+
3241
+ #. Found in changelog list item.
3242
+ msgid ""
3243
+ "Fixed : CSS caused formatting issues around wp-admin Update button on some "
3244
+ "installations"
3245
+ msgstr ""
3246
+ "Fixed : CSS caused formatting issues around wp-admin Update button on some "
3247
+ "installations"
3248
+
3249
+ #. Found in changelog list item.
3250
+ msgid ""
3251
+ "Change : If user_level of Administrator role was cleared, non-Administrators "
3252
+ "with user editing capabilities could create/edit/delete Administrators. "
3253
+ "Administrator role is now implicitly treated as level 10."
3254
+ msgstr ""
3255
+ "Change : If user_level of Administrator role was cleared, non-Administrators "
3256
+ "with user editing capabilities could create/edit/delete Administrators. "
3257
+ "Administrator role is now implicitly treated as level 10."
3258
+
3259
+ #. Found in changelog list item.
3260
+ msgid ""
3261
+ "Compat : Support third party display of available capabilities via "
3262
+ "capsman_get_capabilities or members_get_capabilities filter"
3263
+ msgstr ""
3264
+ "Compat : Support third party display of available capabilities via "
3265
+ "capsman_get_capabilities or members_get_capabilities filter"
3266
+
3267
+ #. Found in changelog list item.
3268
+ msgid ""
3269
+ "Compat : Press Permit Core - Permission Group refresh was not triggered if "
3270
+ "Press Permit Core is inactive when CME deletes a role definition"
3271
+ msgstr ""
3272
+ "Compat : Press Permit Core - Permission Group refresh was not triggered if "
3273
+ "Press Permit Core is inactive when CME deletes a role definition"
3274
+
3275
+ #. Found in changelog list item.
3276
+ msgid ""
3277
+ "Fixed : Deletion of a third party plugin role could cause users to be "
3278
+ "demoted to Subscriber inappropriately"
3279
+ msgstr ""
3280
+ "Fixed : Deletion of a third party plugin role could cause users to be "
3281
+ "demoted to Subscriber inappropriately"
3282
+
3283
+ #. Found in changelog list item.
3284
+ msgid ""
3285
+ "Fixed : On single-site installations, non-Administrators with delete_users "
3286
+ "capability could give new users an Administrator role (since 1.5.2) "
3287
+ msgstr ""
3288
+ "Fixed : On single-site installations, non-Administrators with delete_users "
3289
+ "capability could give new users an Administrator role (since 1.5.2) "
3290
+
3291
+ #. Found in changelog list item.
3292
+ msgid "Lang : Changed text domain for language pack conformance"
3293
+ msgstr "Lang : Changed text domain for language pack conformance"
3294
+
3295
+ #. Found in changelog list item.
3296
+ msgid ""
3297
+ "Fixed : Non-administrators could not assign their role to other users "
3298
+ "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3299
+ msgstr ""
3300
+ "Fixed : Non-administrators could not assign their role to other users "
3301
+ "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3302
+
3303
+ #. Found in changelog list item.
3304
+ msgid ""
3305
+ "Fixed : Non-administrators could not edit other users with their role "
3306
+ "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3307
+ msgstr ""
3308
+ "Fixed : Non-administrators could not edit other users with their role "
3309
+ "(define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
3310
+
3311
+ #. Found in changelog list item.
3312
+ msgid ""
3313
+ "Fixed : Non-administrators' user editing capabilities were blocked if Press "
3314
+ "Permit Core was also active"
3315
+ msgstr ""
3316
+ "Fixed : Non-administrators' user editing capabilities were blocked if Press "
3317
+ "Permit Core was also active"
languages/capsman-enhanced-it_IT.mo CHANGED
Binary file
languages/capsman-enhanced-it_IT.po CHANGED
@@ -1,1013 +1,1695 @@
 
 
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: PublishPress Capabilities\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-02-03 15:57-0500\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Kevin Behrens <kevin@publishpress.com>\n"
8
- "Language-Team: \n"
9
- "Language: it_IT\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
- "X-Poedit-SourceCharset: utf-8\n"
15
- "X-Poedit-KeywordsList: __;_e;_c;__ngettext;_n;_x\n"
16
- "X-Poedit-Basepath: ..\n"
17
- "X-Generator: Poedit 2.4.2\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPath-1: includes\n"
20
- "X-Poedit-SearchPath-2: includes-core\n"
21
-
22
- #: capsman-enhanced.php:40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  msgid ""
24
- "<strong>Error:</strong> PublishPress Capabilities cannot function because "
25
- "another copy of Capability Manager is active."
26
  msgstr ""
 
 
27
 
28
- #: capsman-enhanced.php:71
29
- msgid "<strong>This plugin can be deleted.</strong>"
30
- msgstr ""
31
 
32
- #: capsman-enhanced.php:102
33
- msgid "Warning:"
34
- msgstr "Attenzione:"
35
 
36
- #: capsman-enhanced.php:103
37
- #, php-format
38
- msgid "The active plugin %s is not compatible with your PHP version."
39
- msgstr "Il plugin %s non é compatibile con la tua versione PHP."
40
 
41
- #: capsman-enhanced.php:105
42
- #, php-format
43
- msgid "%s is required for this plugin."
44
- msgstr "E' necessario %s per l'utilizzo di questo plugin."
45
 
46
- #: framework/lib/formating.php:40
47
- msgid "Settings saved."
48
- msgstr "Le impostazioni sono state salvate."
49
 
50
- #: includes-core/CoreAdmin.php:55 includes/functions-admin.php:37
51
- msgid "Admin Menus"
52
- msgstr ""
53
 
54
- #: includes-core/CoreAdmin.php:56 includes/functions-admin.php:38
55
- msgid "Nav Menus"
56
- msgstr ""
57
 
58
- #: includes-core/admin-menus-promo.php:29
59
- msgid "Admin Menu Restrictions"
60
- msgstr ""
61
 
62
- #: includes-core/admin-menus-promo.php:48 includes-core/nav-menus-promo.php:52
63
- #: includes/admin.php:99 includes/admin.php:1079 includes/settings.php:54
64
- msgid "Save Changes"
65
- msgstr "Salva le modifiche"
66
 
67
- #: includes-core/admin-menus-promo.php:58
68
- msgid ""
69
- "You can restrict access to admin menu screens. This feature is available in "
70
- "PublishPress Capabilities Pro"
71
- msgstr ""
72
 
73
- #: includes-core/admin-menus-promo.php:62 includes-core/nav-menus-promo.php:67
74
- #: includes/functions-admin.php:45 includes/functions-admin.php:46
75
- #: includes/manager.php:334 includes/manager.php:335
76
- msgid "Upgrade to Pro"
77
- msgstr ""
78
 
79
- #: includes-core/nav-menus-promo.php:29
80
- msgid "Navigation Menu Restrictions"
81
- msgstr ""
82
 
83
- #: includes-core/nav-menus-promo.php:63
84
- msgid ""
85
- "You can restrict access to navigation menus. This feature is available in "
86
- "PublishPress Capabilities Pro"
87
- msgstr ""
88
 
89
- #: includes/admin.php:38
90
- #, php-format
91
- msgid ""
92
- "Warning: This role cannot access the dashboard without the read capability. "
93
- "%1$sClick here to fix this now%2$s."
94
- msgstr ""
95
 
96
- #: includes/admin.php:64
97
- msgid "Role Capabilities"
98
- msgstr "Capacità"
99
 
100
- #: includes/admin.php:109
101
- msgid ""
102
- "<strong>Note:</strong> Capability changes <strong>remain in the database</"
103
- "strong> after plugin deactivation."
104
- msgstr ""
105
 
106
- #: includes/admin.php:114
107
- #, php-format
108
- msgid ""
109
- "<strong>Note:</strong> Capability changes <strong>remain in the database</"
110
- "strong> after plugin deactivation. You can also configure this role as a "
111
- "%sPermission Group%s."
112
- msgstr ""
113
 
114
- #: includes/admin.php:148 includes/settings.php:38
115
- msgid "PublishPress Permissions"
116
- msgstr ""
117
 
118
- #: includes/admin.php:150
119
- msgid ""
120
- "Automatically define type-specific capabilities for your custom post types "
121
- "and taxonomies"
122
- msgstr ""
123
 
124
- #: includes/admin.php:154
125
- msgid "Assign standard WP roles supplementally for a specific post type"
126
- msgstr ""
127
 
128
- #: includes/admin.php:158
129
- msgid ""
130
- "Assign custom WP roles supplementally for a specific post type <em>(Pro)</em>"
131
- msgstr ""
132
 
133
- #: includes/admin.php:162
134
- msgid "Customize reading permissions per-category or per-post"
135
- msgstr ""
136
 
137
- #: includes/admin.php:166
138
- msgid "Customize editing permissions per-category or per-post <em>(Pro)</em>"
139
- msgstr ""
140
 
141
- #: includes/admin.php:170
142
- msgid ""
143
- "Custom Post Visibility statuses, fully implemented throughout wp-admin "
144
- "<em>(Pro)</em>"
145
- msgstr ""
146
 
147
- #: includes/admin.php:174
148
- msgid ""
149
- "Custom Moderation statuses for access-controlled, multi-step publishing "
150
- "workflow <em>(Pro)</em>"
151
- msgstr ""
152
 
153
- #: includes/admin.php:178
154
- msgid "Regulate permissions for Edit Flow post statuses <em>(Pro)</em>"
155
- msgstr ""
156
 
157
- #: includes/admin.php:182
158
- msgid ""
159
- "Customize the moderated editing of published content with Revisionary or "
160
- "Post Forking <em>(Pro)</em>"
161
- msgstr ""
162
 
163
- #: includes/admin.php:186
164
- msgid ""
165
- "Grant Spectator, Participant or Moderator access to specific bbPress forums "
166
- "<em>(Pro)</em>"
167
- msgstr ""
168
 
169
- #: includes/admin.php:190
170
- msgid ""
171
- "Grant supplemental content permissions to a BuddyPress group <em>(Pro)</em>"
172
- msgstr ""
173
 
174
- #: includes/admin.php:194
175
- msgid "WPML integration to mirror permissions to translations <em>(Pro)</em>"
176
- msgstr ""
177
 
178
- #: includes/admin.php:198
179
- msgid "Member support forum"
180
- msgstr "Forum di supporto"
181
 
182
- #: includes/admin.php:205
183
- #, php-format
184
- msgid "%1$sgrab%2$s %3$s"
185
- msgstr ""
186
 
187
- #: includes/admin.php:205
188
- #, php-format
189
- msgid "%s (free install)"
190
- msgstr ""
191
 
192
- #: includes/admin.php:207
193
- #, php-format
194
- msgid "%1$sbuy%2$s %3$s"
195
- msgstr ""
196
 
197
- #: includes/admin.php:207
198
- #, php-format
199
- msgid "%s info/purchase"
200
- msgstr ""
201
 
202
- #: includes/admin.php:287
203
- msgid "&nbsp;"
204
- msgstr ""
205
 
206
- #: includes/admin.php:288
207
- msgid "Reading"
208
- msgstr ""
209
 
210
- #: includes/admin.php:289
211
- msgid "Editing Capabilities"
212
- msgstr ""
213
 
214
- #: includes/admin.php:290
215
- msgid "Deletion Capabilities"
216
- msgstr ""
217
 
218
- #: includes/admin.php:294
219
- msgid "can read posts which are currently published with private visibility"
220
- msgstr ""
221
 
222
- #: includes/admin.php:295
223
- msgid ""
224
- "has basic editing capability (but may need other capabilities based on post "
225
- "status and ownership)"
226
- msgstr ""
227
 
228
- #: includes/admin.php:296
229
- msgid "can edit posts which were created by other users"
230
- msgstr ""
231
 
232
- #: includes/admin.php:297
233
- msgid "can edit posts which are currently published"
234
- msgstr ""
235
 
236
- #: includes/admin.php:298
237
- msgid "can edit posts which are currently published with private visibility"
238
- msgstr ""
239
 
240
- #: includes/admin.php:299
241
- msgid "can make a post publicly visible"
242
- msgstr ""
243
 
244
- #: includes/admin.php:300
245
- msgid ""
246
- "has basic deletion capability (but may need other capabilities based on post "
247
- "status and ownership)"
248
- msgstr ""
249
 
250
- #: includes/admin.php:301
251
- msgid "can delete posts which were created by other users"
252
- msgstr ""
253
 
254
- #: includes/admin.php:302
255
- msgid "can delete posts which are currently published"
256
- msgstr ""
257
 
258
- #: includes/admin.php:303
259
- msgid "can delete posts which are currently published with private visibility"
260
- msgstr ""
261
 
262
- #: includes/admin.php:437 includes/admin.php:547 includes/admin.php:809
263
- #: includes/admin.php:904 includes/admin.php:1001
264
- #, php-format
265
- msgid "%s: assigned by Permission Group"
266
- msgstr ""
267
 
268
- #: includes/admin.php:452
269
- #, php-format
270
- msgid "shared capability: %s"
271
- msgstr ""
272
 
273
- #: includes/admin.php:524
274
- msgid "Other WordPress Core Capabilities"
275
- msgstr ""
276
 
277
- #: includes/admin.php:566
278
- msgid ""
279
- "Lockout Prevention: To remove read capability, first remove WordPress "
280
- "admin / editing capabilities, or add \"dashboard_lockout_ok\" capability"
281
- msgstr ""
282
 
283
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
284
- #: includes/admin.php:1044
285
- msgid "check/uncheck all"
286
- msgstr ""
287
 
288
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
289
- #: includes/admin.php:1044
290
- msgid "negate all (storing as disabled capabilities)"
291
- msgstr ""
292
 
293
- #: includes/admin.php:609 includes/admin.php:848 includes/admin.php:957
294
- #: includes/admin.php:1044
295
- msgid "negate none (add/remove all capabilities normally)"
296
- msgstr ""
297
 
298
- #: includes/admin.php:783
299
- #, php-format
300
- msgid "%s Capabilities"
301
- msgstr "%s Capacità"
302
 
303
- #: includes/admin.php:856
304
- msgid "Additional Capabilities"
305
- msgstr ""
306
 
307
- #: includes/admin.php:966
308
- msgid ""
309
- "Meta capabilities are used in code as placeholders for other capabilities. "
310
- "Assiging to a role has no effect."
311
- msgstr ""
312
 
313
- #: includes/admin.php:967
314
- msgid "Invalid Capabilities"
315
- msgstr ""
316
 
317
- #: includes/admin.php:1057
318
- msgid ""
319
- "Role level is mostly deprecated. However, it still determines eligibility "
320
- "for Post Author assignment and limits the application of user editing "
321
- "capabilities."
322
- msgstr ""
323
 
324
- #: includes/admin.php:1059
325
- msgid "Level:"
326
- msgstr "Livello:"
327
 
328
- #: includes/admin.php:1082
329
- msgid "Delete this role"
330
- msgstr "Cancella questo ruolo"
331
 
332
- #: includes/admin.php:1082
333
- #, php-format
334
- msgid ""
335
- "You are about to delete the %s role.\n"
336
- "\n"
337
- " 'Cancel' to stop, 'OK' to delete."
338
- msgstr ""
339
- "Stai per cancellare il ruolo %s.\n"
340
- " 'Annulla' per fermarti, 'OK' per procedere."
341
 
342
- #: includes/admin.php:1082
343
- msgid "Delete Role"
344
- msgstr "Cancella il ruolo"
345
 
346
- #: includes/admin.php:1091
347
- msgid "Add Capability"
348
- msgstr "Aggiungi capacità"
349
 
350
- #: includes/admin.php:1094
351
- msgid "Add to role"
352
- msgstr "Aggiungi al ruolo"
353
 
354
- #: includes/admin.php:1106
355
- msgid "Copy this role to"
356
- msgstr "Copia questo ruolo per"
357
 
358
- #: includes/admin.php:1109
359
- msgid "Role Name"
360
- msgstr ""
361
 
362
- #: includes/admin.php:1112 includes/pp-ui.php:84
363
- msgid ""
364
- "Make role available for supplemental assignment to Permission Groups only"
365
- msgstr ""
366
 
367
- #: includes/admin.php:1112
368
- msgid "hidden"
369
- msgstr ""
370
 
371
- #: includes/admin.php:1116
372
- msgid "Copy"
373
- msgstr "Copia"
374
 
375
- #: includes/admin.php:1122
376
- msgid "Rename Role"
377
- msgstr ""
378
 
379
- #: includes/admin.php:1124
380
- msgid "New Role Name"
381
- msgstr ""
382
 
383
- #: includes/admin.php:1127
384
- msgid "Rename"
385
- msgstr ""
386
 
387
- #: includes/admin.php:1158
388
- msgid "Create this role definition in new (future) sites"
389
- msgstr ""
390
 
391
- #: includes/admin.php:1158
392
- msgid "include in new sites"
393
- msgstr ""
394
 
395
- #: includes/admin.php:1161
396
- msgid "Copy / update this role definition to all sites now"
397
- msgstr ""
398
 
399
- #: includes/admin.php:1161
400
- msgid "sync role to all sites now"
401
- msgstr ""
402
 
403
- #: includes/backup-handler.php:9 includes/manager.php:701
404
- msgid "You do not have permission to restore roles."
405
- msgstr ""
406
 
407
- #: includes/backup-handler.php:42
408
- msgid "New backup saved."
409
- msgstr "Il nuovo backup é stato salvato."
410
 
411
- #: includes/backup-handler.php:58
412
- #, fuzzy
413
- #| msgid "Roles and Capabilities restored from last backup."
414
- msgid "Roles and Capabilities restored from initial backup."
415
- msgstr ""
416
- "I ruoli e le capacità sono stati ripristinati all'ultimo backup in memoria."
417
 
418
- #: includes/backup-handler.php:60 includes/backup-handler.php:69
419
- #: includes/backup-handler.php:78
420
- msgid "Restore failed. No backup found."
421
- msgstr ""
422
- "Non é stato possibile effettuare il ripristino. Non é stato trovato alcun "
423
- "file di backup."
424
 
425
- #: includes/backup-handler.php:67
426
- msgid "Roles and Capabilities restored from last backup."
427
- msgstr ""
428
- "I ruoli e le capacità sono stati ripristinati all'ultimo backup in memoria."
429
 
430
- #: includes/backup-handler.php:76
431
- #, fuzzy
432
- #| msgid "Roles and Capabilities restored from last backup."
433
- msgid "Roles and Capabilities restored from selected auto-backup."
434
- msgstr ""
435
- "I ruoli e le capacità sono stati ripristinati all'ultimo backup in memoria."
436
 
437
- #: includes/backup-handler.php:96
438
- msgid "Needed function to create default roles not found!"
439
- msgstr ""
440
- "La funzione necessaria per la creazione dei ruoli predefiniti non é stata "
441
- "trovata!"
442
 
443
- #: includes/backup-handler.php:109
444
- msgid "Roles and Capabilities reset to WordPress defaults"
445
- msgstr ""
446
- "I ruoli e le capacità sono stati ripristinati ai valori predefiniti di "
447
- "WordPress"
448
 
449
- #: includes/backup.php:39
450
- #, php-format
451
- msgid "Backup Tool for %1$sPublishPress Capabilities%2$s"
452
- msgstr "Strumento di backup per %1$sPublishPress Capabilities%2$s"
453
 
454
- #: includes/backup.php:46
455
- msgid "Restore"
456
- msgstr "Ripristino"
457
 
458
- #: includes/backup.php:47 includes/functions-admin.php:39
459
- #: includes/manager.php:325
460
- msgid "Backup"
461
- msgstr "Backup"
462
 
463
- #: includes/backup.php:48
464
- msgid "Reset Roles"
465
- msgstr ""
466
 
467
- #: includes/backup.php:57
468
- msgid "Backup Roles and Capabilities"
469
- msgstr "Backup ruoli e capacità"
470
 
471
- #: includes/backup.php:62
472
- #, php-format
473
- msgid ""
474
- "PublishPress Capabilities automatically creates a backup on installation and "
475
- "whenever you save changes. The initial backup and last %d auto-backups are "
476
- "kept."
477
- msgstr ""
478
 
479
- #: includes/backup.php:67
480
- msgid ""
481
- "A backup created on this screen replaces any previous manual backups, but is "
482
- "never automatically replaced."
483
- msgstr ""
484
 
485
- #: includes/backup.php:72
486
- #, fuzzy
487
- #| msgid "Backup"
488
- msgid "Manual Backup"
489
- msgstr "Backup"
490
 
491
- #: includes/backup.php:82
492
- #, php-format
493
- msgid "Last Manual Backup - %s"
494
- msgstr ""
495
 
496
- #: includes/backup.php:82
497
- #, fuzzy
498
- #| msgid "Backup"
499
- msgid "Last Backup"
500
- msgstr "Backup"
501
 
502
- #: includes/backup.php:86
503
- msgid "Restore Previous Roles and Capabilities"
504
- msgstr ""
505
 
506
- #: includes/backup.php:89
507
- msgid ""
508
- "PublishPress Capabilities automatically creates a backup on installation and "
509
- "whenever you save changes."
510
- msgstr ""
511
 
512
- #: includes/backup.php:93
513
- msgid ""
514
- "On this screen, you can restore an earlier version of your roles and "
515
- "capabilities."
516
- msgstr ""
517
 
518
- #: includes/backup.php:98
519
- msgid "Available Backups:"
520
- msgstr ""
521
 
522
- #: includes/backup.php:112
523
- #, php-format
524
- msgid "Manual backup of all roles (%s)"
525
- msgstr ""
526
 
527
- #: includes/backup.php:127
528
- #, php-format
529
- msgid "Auto-backup of all roles (%s)"
530
- msgstr ""
531
 
532
- #: includes/backup.php:135
533
- msgid "Initial backup of all roles"
534
- msgstr ""
535
 
536
- #: includes/backup.php:144
537
- msgid "Restore Selected Roles"
538
- msgstr ""
539
 
540
- #: includes/backup.php:155
541
- msgid "Show changes from current roles only"
542
- msgstr ""
543
 
544
- #: includes/backup.php:161
545
- #, php-format
546
- msgid "Initial Backup - %s"
547
- msgstr ""
548
 
549
- #: includes/backup.php:161
550
- #, fuzzy
551
- #| msgid "Backup"
552
- msgid "Initial Backup"
553
- msgstr "Backup"
554
 
555
- #: includes/backup.php:187
556
- #, php-format
557
- msgid "%s (%s roles)"
558
- msgstr ""
559
 
560
- #: includes/backup.php:195
561
- msgid "(this role will be removed if you restore backup)"
562
- msgstr ""
563
 
564
- #: includes/backup.php:224
565
- #, php-format
566
- msgid "%s (level %s)"
567
- msgstr ""
568
 
569
- #: includes/backup.php:259
570
- msgid "Reset WordPress Defaults"
571
- msgstr "Ripristina ai valori predefiniti di WordPress"
572
 
573
- #: includes/backup.php:262
574
- msgid "WARNING:"
575
- msgstr "ATTENZIONE:"
576
 
577
- #: includes/backup.php:262
578
- msgid ""
579
- "Reseting default Roles and Capabilities will set them to the WordPress "
580
- "install defaults."
581
- msgstr ""
582
- "Il ripristino alle predefinite per i Ruoli e le Capacità coinciderà con i "
583
- "valori predefiniti di WordPress."
584
 
585
- #: includes/backup.php:266
586
- msgid ""
587
- "If you have installed any plugin that adds new roles or capabilities, these "
588
- "will be lost."
589
- msgstr "I ruoli e le capacità propri di ogni plugin installato saranno persi."
590
 
591
- #: includes/backup.php:268
592
- msgid "It is recommended to use this only as a last resource!"
593
- msgstr "Da utilizzarsi solamente come ultima risorsa!"
594
 
595
- #: includes/backup.php:271
596
- msgid "Reset Roles and Capabilities to WordPress defaults"
597
- msgstr "Ripristina i Ruoli e le Capacità ai valori predefiniti di WordPress"
598
 
599
- #: includes/backup.php:273
600
- msgid ""
601
- "You are about to reset Roles and Capabilities to WordPress defaults.\n"
602
- " 'Cancel' to stop, 'OK' to reset."
603
- msgstr ""
604
- "Stai per ripristinare i Ruoli e le Capacità ai valori predefiniti di "
605
- "WordPress.\n"
606
- " 'Annulla' per fermarti, 'OK' per procedere."
607
 
608
- #: includes/backup.php:273
609
- msgid "Reset to WordPress defaults"
610
- msgstr "Ripristina ai predefiniti di WordPress"
611
 
612
- #: includes/filters-woocommerce.php:32
613
- #, php-format
614
- msgid "All %s"
615
- msgstr ""
616
 
617
- #: includes/filters-woocommerce.php:33
618
- msgid "Add New"
619
- msgstr ""
620
 
621
- #: includes/filters.php:312
622
- msgid "Edit Roles"
623
- msgstr "Modifica Ruoli"
624
 
625
- #: includes/functions-admin.php:14 includes/manager.php:289
626
- #: includes/roles/class/class-pp-roles-list-table.php:120
627
- msgid "Capabilities"
628
- msgstr "Capacità"
629
 
630
- #: includes/functions-admin.php:36 includes/manager.php:311
631
- #: includes/roles/roles.php:4
632
- msgid "Roles"
633
- msgstr "Ruoli"
634
 
635
- #: includes/functions-admin.php:40 includes/manager.php:328
636
- #, fuzzy
637
- #| msgid "Settings saved."
638
- msgid "Settings"
639
- msgstr "Le impostazioni sono state salvate."
640
 
641
- #: includes/handler.php:23 includes/handler.php:49
642
- msgid "New role created."
643
- msgstr "Il nuovo ruolo é stato creato."
644
 
645
- #: includes/handler.php:29 includes/handler.php:55
646
- msgid "Error: Failed creating the new role."
647
- msgstr "Errore: non é stato possibile creare il nuovo ruolo."
648
 
649
- #: includes/handler.php:42
650
- #, php-format
651
- msgid "Role \"%s\" (id %s) renamed to \"%s\""
652
- msgstr ""
653
 
654
- #: includes/handler.php:111
655
- msgid "Incorrect capability name."
656
- msgstr "Nome non valido per la capacità."
657
 
658
- #: includes/handler.php:116
659
- msgid "Type / Taxonomy settings saved."
660
- msgstr "Le impostazioni sono state salvate."
661
 
662
- #: includes/handler.php:122
663
- msgid "Bad form received."
664
- msgstr "E' stata ricevuta una richiesta errata."
665
 
666
- #: includes/handler.php:245
667
- msgid "You cannot remove Manage Capabilities from Administrators"
668
- msgstr "Non puoi rimuovere la gestione delle capacità per gli amministratori"
669
 
670
- #: includes/handler.php:357
671
- #, php-format
672
- msgid ""
673
- "Cannot delete default role. You <a href=\"%s\">have to change it first</a>."
674
- msgstr ""
675
- "Non é possibile cancellare il ruolo predefinito. E' necessario che tu compia "
676
- "questa <a href=\"%s\">modifica</a> prima di procedere."
677
 
678
- #: includes/handler.php:404
679
- #, php-format
680
- msgid "Role has been deleted. %1$d users moved to default role %2$s."
681
- msgstr ""
682
- "Il ruolo é stato cancellato. Gli utenti %1$d sono stati spostati nel ruolo "
683
- "predefinito a nome %2$s."
684
 
685
- #: includes/manager.php:174
686
- msgid "Explicity negate this capability by storing as disabled"
687
- msgstr ""
688
 
689
- #: includes/manager.php:175
690
- msgid "Explicitly negate these capabilities by storing as disabled"
691
- msgstr ""
692
 
693
- #: includes/manager.php:176
694
- msgid "Post type registration does not define this capability distinctly"
695
- msgstr ""
696
 
697
- #: includes/manager.php:177
698
- msgid "This capability is explicitly negated. Click to add/remove normally."
699
- msgstr ""
700
 
701
- #: includes/manager.php:178
702
- msgid "Add or remove this capability from the WordPress role"
703
- msgstr ""
704
 
705
- #: includes/manager.php:179
706
- msgid "Add or remove capability from the role normally"
707
- msgstr ""
708
 
709
- #: includes/manager.php:352
710
- #: includes/roles/class/class-pp-roles-list-table.php:77
711
- msgid "Role"
712
- msgstr "Ruolo"
713
 
714
- #: includes/manager.php:353
715
- #: includes/roles/class/class-pp-roles-list-table.php:78
716
- #: includes/roles/roles.php:33
717
- msgid "Name"
718
- msgstr ""
719
 
720
- #: includes/manager.php:354
721
- #: includes/roles/class/class-pp-roles-list-table.php:79
722
- msgid "Users"
723
- msgstr ""
724
 
725
- #: includes/manager.php:381
726
- msgid "You do not have permission to manage roles."
727
- msgstr ""
728
 
729
- #: includes/manager.php:487 includes/manager.php:528
730
- msgid "You do not have permission to manage capabilities."
731
- msgstr ""
732
 
733
- #: includes/manager.php:542
734
- msgid "New capability added to role."
735
- msgstr "La nuova capacità é stata aggiunta al ruolo."
736
 
737
- #: includes/manager.php:581
738
- msgid "Bad form Received"
739
- msgstr "E' stata ricevuta una richiesta errata"
740
 
741
- #: includes/manager.php:731
742
- #, php-format
743
- msgid "If you like %s, please leave us a %s rating. Thank you!"
744
- msgstr ""
745
 
746
- #: includes/manager.php:742
747
- msgid "About PublishPress Capabilities"
748
- msgstr ""
749
 
750
- #: includes/manager.php:742
751
- msgid "About"
752
- msgstr ""
753
 
754
- #: includes/manager.php:744
755
- #, fuzzy
756
- msgid "Capabilites Documentation"
757
- msgstr "Procedi"
758
 
759
- #: includes/manager.php:744
760
- #, fuzzy
761
- msgid "Documentation"
762
- msgstr "Procedi"
763
 
764
- #: includes/manager.php:746
765
- msgid "Contact the PublishPress team"
766
- msgstr ""
767
 
768
- #: includes/manager.php:746
769
- msgid "Contact"
770
- msgstr ""
771
 
772
- #: includes/pp-ui.php:42
773
- #, php-format
774
- msgid "see %1$sRole Usage%2$s: \"Pattern Roles\""
775
- msgstr ""
776
 
777
- #: includes/pp-ui.php:44
778
- #, php-format
779
- msgid "activate %1$sAdvanced settings%2$s, see Role Usage"
780
- msgstr ""
781
 
782
- #: includes/pp-ui.php:49
783
- #, php-format
784
- msgid ""
785
- "\"Posts\" capabilities selected here also define type-specific role "
786
- "assignment for Permission Groups%s."
787
- msgstr ""
788
 
789
- #: includes/pp-ui.php:51
790
- #, php-format
791
- msgid ""
792
- "\"Posts\" capabilities selected here also define type-specific role "
793
- "assignment for Permit Groups%s."
794
- msgstr ""
795
 
796
- #: includes/pp-ui.php:59
797
- #, php-format
798
- msgid ""
799
- "Capabilities for custom statuses can be manually added here. (See "
800
- "%sPermissions > Post Statuses%s for applicable names). %sSupplemental status-"
801
- "specific roles%s are usually more convenient, though."
802
- msgstr ""
803
 
804
- #: includes/pp-ui.php:61
805
- msgid ""
806
- "Capabilities for custom statuses can be manually added here. Or activate the "
807
- "PP Custom Post Statuses extension to assign status-specific supplemental "
808
- "roles."
809
- msgstr ""
810
 
811
- #: includes/pp-ui.php:64
812
- msgid ""
813
- "Capabilities for custom statuses can be manually added to a role here (see "
814
- "Conditions > Status > Capability Mapping for applicable names). However, it "
815
- "is usually more convenient to use Permit Groups to assign a supplemental "
816
- "status-specific role."
817
- msgstr ""
818
 
819
- #: includes/pp-ui.php:84
820
- msgid "hidden role"
821
- msgstr ""
822
 
823
- #: includes/pp-ui.php:95
824
- msgid "Type-Specific Capabilities"
825
- msgstr ""
826
 
827
- #: includes/pp-ui.php:98
828
- msgid "Ensure permissions can be controlled separately from other post types."
829
- msgstr ""
830
 
831
- #: includes/pp-ui.php:161
832
- msgid ""
833
- "Make selected post types require a different capability to add new posts."
834
- msgstr ""
835
 
836
- #: includes/pp-ui.php:161
837
- msgid "Use create_posts capability"
838
- msgstr ""
839
 
840
- #: includes/pp-ui.php:169 includes/pp-ui.php:232 includes/pp-ui.php:288
841
- msgid "Update"
842
- msgstr ""
843
 
844
- #: includes/pp-ui.php:179
845
- msgid "Taxonomy-Specific Capabilities"
846
- msgstr ""
847
 
848
- #: includes/pp-ui.php:182
849
- msgid "Ensure permissions can be controlled separately from other taxonomies."
850
- msgstr ""
851
 
852
- #: includes/pp-ui.php:237
853
- msgid "Detailed Taxonomy Capabilities"
854
- msgstr ""
855
 
856
- #: includes/pp-ui.php:240
857
- msgid ""
858
- "Enforce Edit, Delete and Assign capabilities separately from Management "
859
- "capability."
860
- msgstr ""
861
 
862
- #: includes/roles/class/class-pp-roles-actions.php:126
863
- msgid "You do not have sufficient permissions to perform this action."
864
- msgstr ""
865
 
866
- #: includes/roles/class/class-pp-roles-actions.php:142
867
- msgid "Your link has expired, refresh the page and try again."
868
- msgstr ""
869
 
870
- #: includes/roles/class/class-pp-roles-actions.php:163
871
- #: includes/roles/class/class-pp-roles-actions.php:269
872
- msgid "Missing parameters, refresh the page and try again."
873
- msgstr ""
874
 
875
- #: includes/roles/class/class-pp-roles-actions.php:197
876
- msgid ""
877
- "Something went wrong, the system wasn't able to create the role, refresh the "
878
- "page and try again."
879
- msgstr ""
880
 
881
- #: includes/roles/class/class-pp-roles-actions.php:284
882
- msgid "Deleting a system role is not allowed."
883
- msgstr ""
884
 
885
- #: includes/roles/class/class-pp-roles-list-table.php:134
886
- #: includes/roles/class/class-pp-roles-list-table.php:242
887
- msgid "Delete"
888
- msgstr "Cancella"
889
 
890
- #: includes/roles/roles-functions.php:32
891
- msgid "Are you sure you want to delete this role?"
892
- msgstr ""
893
 
894
- #: includes/roles/roles.php:8
895
- #, php-format
896
- msgid "Search results for &#8220;%s&#8221;"
897
- msgstr ""
898
 
899
- #: includes/roles/roles.php:19
900
- msgid "Search Roles"
901
- msgstr ""
902
 
903
- #: includes/roles/roles.php:25
904
- msgid "Add New Role"
905
- msgstr ""
906
 
907
- #: includes/roles/roles.php:35
908
- msgid "The name is how it appears on your site."
909
- msgstr ""
910
 
911
- #: includes/roles/roles.php:40
912
- msgid "Add"
913
- msgstr ""
914
 
915
- #: includes/roles/roles.php:52
916
- msgid "Description here."
917
- msgstr ""
918
 
919
- #: includes/settings.php:12
920
- msgid "Capabilities Settings"
921
- msgstr ""
922
 
923
- #: includes/settings.php:22
924
- msgid "Related Permissions Plugins"
925
- msgstr ""
926
 
927
- #: includes/settings.php:27
928
- msgid "PublishPress"
929
- msgstr ""
930
 
931
- #: includes/settings.php:32
932
- msgid "PublishPress Authors"
933
- msgstr ""
934
 
935
- #: includes/settings.php:44
936
- msgid "PublishPress Revisions"
937
- msgstr ""
938
 
939
- #: includes/settings.php:46
940
- msgid "Help / Contact Form"
941
- msgstr ""
942
 
943
- #: vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php:129
944
- msgid "Amazing! We are redirecting you to our site..."
945
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946
 
947
- #, php-format
948
- #~ msgid "Capabilities for %s"
949
- #~ msgstr "Capacità per %s"
950
 
951
- #~ msgid "Change"
952
- #~ msgstr "Cambia"
 
953
 
954
- #~ msgid "Create New Role"
955
- #~ msgstr "Crea un nuovo ruolo"
 
956
 
957
- #~ msgid "Create"
958
- #~ msgstr "Crea"
 
959
 
960
- #~ msgid "Select action:"
961
- #~ msgstr "Seleziona una azione:"
 
962
 
963
- #~ msgid "Restore last saved backup"
964
- #~ msgstr "Ripristina all'ultimo backup in memoria"
 
965
 
966
- #~ msgid "Do Action"
967
- #~ msgstr "Procedi"
 
968
 
969
- #~ msgid "Capability Manager"
970
- #~ msgstr "Gestione capacità"
 
971
 
972
- #~ msgid "What do you think you're doing?!?"
973
- #~ msgstr "Cosa stai facendo?!?"
 
974
 
975
- #~ msgid "New capabilities saved."
976
- #~ msgstr "Le nuove capacità sono state salvate."
 
977
 
978
- #~ msgid "The active plugin %s is not compatible with your WordPress version."
979
- #~ msgstr "Il plugin %s non é compatibile con la tua versione di WordPress."
 
980
 
981
- #~ msgid "WordPress %s is required to run this plugin."
982
- #~ msgstr "Per l'utilizzo del plugin é necessario WordPress %s."
 
983
 
984
- #~ msgid "Standard sidebar functions are not present."
985
- #~ msgstr "Le funzioni standard per la sidebar non sono presenti."
 
986
 
987
- #~ msgid "It is required to use the standard sidebar to run %s"
988
- #~ msgstr "Necessario per l'utilizzo della sidebar standard %s"
 
989
 
990
- #~ msgid "Plugin Homepage"
991
- #~ msgstr "Homepage del plugin"
 
992
 
993
- #, fuzzy
994
- #~ msgid "Theme Homepage"
995
- #~ msgstr "Homepage autore"
996
 
997
- #~ msgid "Author Homepage"
998
- #~ msgstr "Homepage autore"
 
999
 
1000
- #, fuzzy
1001
- #~ msgid "Incorrect type of file."
1002
- #~ msgstr "Nome non valido per la capacità."
1003
 
1004
- #, fuzzy
1005
- #~ msgid "Error in creating %s image from source."
1006
- #~ msgstr "Errore: non é stato possibile creare il nuovo ruolo."
1007
 
1008
- #, fuzzy
1009
- #~ msgid "Error reading the file."
1010
- #~ msgstr "Errore: non é stato possibile creare il nuovo ruolo."
1011
 
1012
- #~ msgid "Help donating"
1013
- #~ msgstr "Donazioni"
 
1
+ # Translation of Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) in Italian
2
+ # This file is distributed under the same license as the Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2021-12-02 19:25+0100\n"
 
 
 
 
 
 
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: Poedit 3.0\n"
11
+ "Language: it\n"
12
+ "Project-Id-Version: Plugins - PublishPress Capabilities &#8211; User Role Access, Editor Permissions, Admin Menus - Stable Readme (latest release)\n"
13
+ "POT-Creation-Date: \n"
14
+ "Last-Translator: \n"
15
+ "Language-Team: Angelo Giammarresi - info@wocmultimedia.com\n"
16
+
17
+ #. Plugin name.
18
+ msgid "PublishPress Capabilities - User Role Access, Editor Permissions, Admin Menus"
19
+ msgstr "PublishPress Capabilities - Accesso al ruolo dell'utente, autorizzazioni dell'editor, menu dell'amministratore"
20
+
21
+ #. Short description.
22
+ msgid "The best permissions plugin allows you to customize user roles, editor features and admin menus. You control who has access to your WordPress site."
23
+ msgstr "Il miglior plugin di autorizzazioni, ti permette di personalizzare i ruoli degli utenti, le caratteristiche degli editor e i menu di amministrazione. Tu controlli chi ha accesso al tuo sito WordPress."
24
+
25
+ #. Found in description paragraph.
26
+ msgid "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/\">Click here to learn about removing toolbar items and dashboard widgets</a>."
27
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/how-to-use-admin-features/\">Fai clic qui per imparare a rimuovere gli elementi della barra degli strumenti e i widget della bacheca.</a>."
28
+
29
+ #. Found in description paragraph.
30
+ msgid "“Admin Features” allows you to hide features in the WordPress admin area and toolbar. You can decide what users see in your WordPress dashboard. You can use this option to hide all the links in the toolbar including \"About WordPress\", \"Visit Site\" and more. You can also hide dashboard widgets such as \"At a Glance\", \"Quick Draft\", and \"WordPress Events and News\"."
31
+ msgstr "\"Caratteristiche di amministrazione\" ti permette di nascondere le funzioni nell'area di amministrazione di WordPress e nella barra degli strumenti. Puoi decidere cosa vedono gli utenti nella tua bacheca di WordPress. È possibile utilizzare questa opzione per nascondere tutti i link nella barra degli strumenti tra cui \" Informazioni su WordPress\", \"Visita il sito\" e altro ancora. Puoi anche nascondere i widget della dashboard come \" In sintesi\", \"Bozza rapida\", e \"Eventi e notizie di WordPress\"."
32
+
33
+ #. Found in description list item.
34
+ msgid "<strong>Hide admin area features</strong>: Remove items from the WordPress toolbar, plus dashboard widgets."
35
+ msgstr "<strong>Nascondi le caratteristiche dell'area amministrativa</strong>: Rimuovi gli elementi dalla barra degli strumenti di WordPress, più i widget della bacheca."
36
+
37
+ #. Found in description header.
38
+ msgid "4. Hide Toolbar Link and Dashboard Widgets"
39
+ msgstr "4. Nascondi i link della barra degli strumenti e i widget della bacheca"
40
+
41
+ #. Screenshot description.
42
+ msgid "Admin Feature Restriction: PublishPress Capabilities enables you remove items from the WordPress toolbar, plus dashboard widgets."
43
+ msgstr "Limitazione delle funzionalità di amministrazione: PublishPress Capabilities consente di rimuovere gli elementi dalla barra degli strumenti di WordPress, più i widget della bacheca."
44
+
45
+ #. Found in description header.
46
+ msgid "PublishPress Capabilities Pro"
47
+ msgstr "PublishPress Capabilities Pro"
48
+
49
+ #. Found in description paragraph.
50
+ msgid "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-wordpress-posts/\">Click here to learn about hiding metaboxes</a>."
51
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/hide-metaboxes-in-wordpress-posts/\">Fai clic qui per imparare a nascondere le metabox</a>."
52
+
53
+ #. Found in description paragraph.
54
+ msgid "WordPress has a feature called “metaboxes”. This is a strange name, but you have seen them often if you use WordPress. When a user edits a post, the edit screen has several default boxes: Status &amp; visibility, Featured image, Categories, Tags, etc. These boxes are metaboxes. Plugins can add also add their own metaboxes. The Pro version of the PublishPress Capabilities plugin allows you to hide metaboxes for specific user roles."
55
+ msgstr "WordPress ha una caratteristica chiamata \"metabox\". Questo è un nome strano, ma li hai visti spesso se usi WordPress. Quando un utente modifica un articolo, la schermata di modifica ha diverse caselle predefinite: Stato e visibilità, Immagine in evidenza, Categorie, Tag, ecc. Queste caselle sono metabox. I plugin possono aggiungere anche le proprie metabox. La versione Pro del plugin PublishPress Capabilities permette di nascondere le metabox per specifici ruoli utente."
56
+
57
+ #. Found in description paragraph.
58
  msgid ""
59
+ "<strong>Upgrade to Capabilities Pro</strong><br />\n"
60
+ " This plugin is the free version of PublishPress Capabilities. The Pro version of Capabilities has all the features you need to control permissions for your WordPress users. With Capabilities Pro you can manage access to posts, pages, media and custom post types. <a href=\"https://publishpress.com/capabilities\" title=\"Capabilities Pro\">Click here to control access to your WordPress site with Capabilities Pro!</a>"
61
  msgstr ""
62
+ "<strong>Aggiorna a Capabilities Pro</strong><br />\n"
63
+ " Questo plugin è la versione gratuita di PublishPress Capabilities. La versione Pro di Capabilities ha tutte le caratteristiche necessarie per controllare le autorizzazioni per i tuoi utenti di WordPress. Con Capabilities Pro è possibile gestire l'accesso agli articoli, alle pagine, ai media e ai tipi di articoli personalizzati. <a href=\"https://publishpress.com/capabilities\" title=\"Capabilities Pro\">Fai clic qui per controllare l'accesso al tuo sito WordPress site con Capabilities Pro!</a>"
64
 
65
+ #. Found in description list item.
66
+ msgid "<strong>Hide editor metaboxes (Pro version)</strong>: You can hide metaboxes on the post editing screen. "
67
+ msgstr "<strong>Nascondi le metabox dell'editor (versione Pro)</strong>: Puoi nascondere le metabox nella schermata di editing degli articoli. "
68
 
69
+ #. Found in description header.
70
+ msgid "6. Hide Metaboxes in WordPress Posts"
71
+ msgstr "6. Nascondere le metabox negli articoli di WordPress"
72
 
73
+ #. Screenshot description.
74
+ msgid "Editor Feature Restriction: PublishPress Capabilities enables you to decide what users see when they're writing posts."
75
+ msgstr "Limitazione delle funzionalità dell'editor: PublishPress Capabilities ti permette di decidere cosa vedono gli utenti quando scrivono gli articoli."
 
76
 
77
+ #. Screenshot description.
78
+ msgid "Admin Menu Restrictions: With PublishPress Capabilities you can restrict access to admin menu screens by user roles."
79
+ msgstr "Restrizioni del menu di amministrazione: con PublishPress Capabilities è possibile limitare l'accesso alle schermate del menu di amministrazione in base ai ruoli degli utenti."
 
80
 
81
+ #. Screenshot description.
82
+ msgid "Navigation Menu Restrictions: PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users."
83
+ msgstr "Restrizioni dei menu di navigazione: PublishPress Capabilities consente di limitare l'accesso ai menu di navigazione per ruoli, utenti connessi e non connessi."
84
 
85
+ #. Screenshot description.
86
+ msgid "WooCommerce Permissions: With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons."
87
+ msgstr "Autorizzazioni WooCommerce: Con PublishPress Capabilities puoi controllare i permessi per i prodotti, gli ordini e i codici promozionali di WooCommerce."
88
 
89
+ #. Screenshot description.
90
+ msgid "Media Library Permissions: PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site’s Media Library."
91
+ msgstr "Autorizzazioni della libreria dei media: PublishPress Capabilities ti permette di decidere chi può caricare, modificare ed eliminare i file dalla libreria dei media del tuo sito."
92
 
93
+ #. Screenshot description.
94
+ msgid "Permission backups: Every time you change your permissions, the PublishPress Capabilities plugin will automatically create a backup."
95
+ msgstr "Backup delle autorizzazioni: ogni volta che modifichi le tue autorizzazioni, il plugin PublishPress Capabilities creerà automaticamente un backup."
96
 
97
+ #. Screenshot description.
98
+ msgid "Enforce Taxonomy-Specific Capabilities: You can give “Manage”, “Edit” and “Assign” permissions for all your taxonomies."
99
+ msgstr "Rafforzare le capacità specifiche della tassonomia: Puoi dare le autorizzazioni \"Gestione\", \"Modifica\" e \"Assegnazione\" per tutte le tue tassonomie."
 
100
 
101
+ #. Screenshot description.
102
+ msgid "Custom Statuses: With Capabilities Pro, you can decide which user roles are able to send posts to each status."
103
+ msgstr "Stati personalizzati: Con Capabilities Pro, puoi decidere quali ruoli utente sono in grado di inviare articoli per ogni stato."
 
 
104
 
105
+ #. Screenshot description.
106
+ msgid "Multi-site support: Capabilities can control permissions on a single site or across your whole network."
107
+ msgstr "Supporto multi-sito: Capabilities può controllare le autorizzazioni su un singolo sito o su tutta la tua rete."
 
 
108
 
109
+ #. Screenshot description.
110
+ msgid "Content permissions: With Capabilities, you can choose who can Publish, Read, Edit and Delete content."
111
+ msgstr "Autorizzazioni per i contenuti: con Capabilities, puoi scegliere chi può pubblicare, leggere, modificare e cancellare i contenuti."
112
 
113
+ #. Screenshot description.
114
+ msgid "Create and copy user roles: With PublishPress Capabilities you can create or copy any existing WordPress user role."
115
+ msgstr "Creare e copiare i ruoli utente: con PublishPress Capabilities puoi creare o copiare qualsiasi ruolo utente WordPress esistente."
 
 
116
 
117
+ #. Screenshot description.
118
+ msgid "Control user permissions: You can customize all the user roles on your site, from Administrator to Subscriber."
119
+ msgstr "Controlla le autorizzazioni degli utenti: puoi personalizzare tutti i ruoli degli utenti sul tuo sito, da Amministratore a Sottoscrittore."
 
 
 
120
 
121
+ #. Found in description list item.
122
+ msgid "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> has everything you need to build professional websites with the WordPress block editor."
123
+ msgstr "<a href=\"https://publishpress.com/blocks\">PublishPress Blocks Pro</a> ha tutto il necessario per costruire siti web professionali con l'editor di blocchi di WordPress."
124
 
125
+ #. Found in description list item.
126
+ msgid "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> enables you to group content together into a series "
127
+ msgstr "<a href=\"https://publishpress.com/series\">PublishPress Series Pro</a> ti consente di raggruppare i tuoi contenuti insieme in delle serie "
 
 
128
 
129
+ #. Found in faq paragraph.
130
+ msgid "Jetpack is a plugin built by Automattic, the company behind WordPress.com. This plugin offers many different services including backups, spam blocking, analytics, malware scans, contact forms, and more. PublishPress Capabilities can help you manage Jetpack permissisons."
131
+ msgstr "Jetpack è un plugin costruito da Automattic, la società dietro WordPress.com. Questo plugin offre molti servizi diversi, tra cui backup, blocco dello spam, analisi, scansioni di malware, moduli di contatto e altro ancora. PublishPress Capabilities può aiutarvi a gestire le autorizzazioni di Jetpack."
 
 
 
 
132
 
133
+ #. Found in faq paragraph.
134
+ msgid "The Elementor plugin is one of the most popular drag-and-drop page builders. With Elementor, you’re editing the site live, and simultaneously see exactly how it looks like. Elementor designs are full-responsive and come with over 40 powerful widgets. PublishPress Capabilities can help you manage Elementor permissisons."
135
+ msgstr "Il plugin Elementor è uno dei più popolari page builder drag-and-drop. Con Elementor, stai modificando il sito dal vivo, e contemporaneamente vedi esattamente come appare. I design di Elementor sono full-responsive e sono dotati di oltre 40 potenti widget. PublishPress Capabilities può aiutarti a gestire le autorizzazioni di Elementor."
136
 
137
+ #. Found in faq paragraph.
138
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-forms-admin-menus/\">Click here to learn about Gravity Forms menu permissions</a>."
139
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-gravity-forms-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di Gravity Forms</a>."
 
 
140
 
141
+ #. Found in faq paragraph.
142
+ msgid "This approach works for the core Gravity Forms plugin and can also be used for add-on plugins from the official site, or third-party sites."
143
+ msgstr "Questo approccio funziona per il plugin Gravity Forms principale e può essere utilizzato anche per i plugin aggiuntivi dal sito ufficiale o da siti di terze parti."
144
 
145
+ #. Found in faq paragraph.
146
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict access for the “Editor” role. By default, Editors aren't given access to Gravity Forms, but site administrators often do they give them some access. Scroll down and you can enter a red X for any Gravity Forms menu link that you don't want users in the Editor role to access. Now when an Editor logs in to your site, they will not be able to see the blocked Gravity Forms menu links."
147
+ msgstr "È possibile controllare chi può accedere a questi link utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, andate su \"Capabilities\", poi \"Menu di amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Ad esempio, è possibile limitare l'accesso per il ruolo \"Editore\". Per impostazione predefinita, gli editori non hanno accesso a Gravity Forms, ma gli amministratori del sito spesso danno loro qualche accesso. Scorri in basso e puoi inserire una X rossa per ogni link del menu di Gravity Forms a cui non vuoi che gli utenti con il ruolo di editore abbiano accesso. In questo modo, quando un editore accede al tuo sito, non sarà in grado di vedere i link del menu di Gravity Forms bloccati."
 
148
 
149
+ #. Found in faq paragraph.
150
+ msgid "When you first install Gravity Forms, you'll see one top-level menu link, plus eight sub-menus."
151
+ msgstr "Quando installi Gravity Forms per la prima volta, vedrai un link al menu di primo livello, più otto sotto-menu."
152
 
153
+ #. Found in faq paragraph.
154
+ msgid "Gravity Forms is perhaps the most popular contact form plugin for WordPress. You can build and publish your WordPress forms in just minutes. Choose your fields, configure your options and easily embed forms on your WordPress-powered site. Gravity Forms allows you to easily integrate with third party services such as PayPal, Mailchimp, and Zapier."
155
+ msgstr "Gravity Forms è forse il più popolare plugin per moduli di contatto per WordPress. Puoi costruire e pubblicare i tuoi moduli WordPress in pochi minuti. Scegli i tuoi campi, configura le tue opzioni e incorpora facilmente i moduli sul tuo sito WordPress. Gravity Forms permette di integrarsi facilmente con servizi di terze parti come PayPal, Mailchimp, e Zapier."
156
 
157
+ #. Found in faq paragraph.
158
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Gravity Forms plugin. This is useful because Gravity Forms has limited options for controlling who can access the admin screens."
159
+ msgstr "La versione Pro di PublishPress Capabilities permette di bloccare l'accesso ai link del menu di amministrazione nel plugin Gravity Forms. Questo è utile perché Gravity Forms ha opzioni limitate per controllare chi può accedere alle schermate di amministrazione."
 
 
160
 
161
+ #. Found in faq paragraph.
162
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-calendar-admin-menus/\">Click here to learn about The Events Calendar menu permissions</a>."
163
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-the-events-calendar-admin-menus/\">Fai clic qui per conoscere le autorizzazioni del menu Events Calendar</a>."
 
 
164
 
165
+ #. Found in faq paragraph.
166
+ msgid "This approach works for the core The Events Calendar plugin and can also be used for add-on plugins such as Virtual Events, Events Tickets, and more."
167
+ msgstr "Questo approccio funziona per il plugin principale The Events Calendar e può essere utilizzato anche per plugin aggiuntivi come Virtual Events, Events Tickets e altri."
168
 
169
+ #. Found in faq paragraph.
170
+ msgid "It is possible to control who can access these The Events Calendar plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict The Events Calendar access for the “Editor” role. Scroll down and you can enter a red X for any The Events Calendar menu link that you don't want users in the Editor role to access. Now when an Administrator logs in to your site, they will not be able to see the Events Calendar menu links that you have blocked:"
171
+ msgstr "È possibile controllare chi può accedere a questi link del plugin The Events Calendar utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, andate su \"Capacità\", poi \"Menu amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Ad esempio, è possibile limitare l'accesso al calendario degli eventi per il ruolo \" Editore \". Scorri verso il basso e puoi inserire una X rossa per ogni link del menu di The Events Calendar a cui non vuoi che gli utenti del ruolo di editore abbiano accesso. Ora quando un editore accede al tuo sito, non sarà in grado di vedere i link del menu di The Events Calendar che hai bloccato:"
 
 
172
 
173
+ #. Found in faq paragraph.
174
+ msgid "When you first install the The Events Calendar plugin, you'll see one top-level menu link, plus at least 10 sub-menus:"
175
+ msgstr "Quando installi per la prima volta il plugin The Events Calendar, vedrai un link al menu di primo livello, più almeno 10 sottomenu:"
 
 
176
 
177
+ #. Found in faq paragraph.
178
+ msgid "With The Events Calendar, you can easily create and manage an events calendar on your WordPress site. The plugin supports both in-person and virtual events. There are also many ways to extend the plugin for recurring events, ticket sales, user-submitted events and more."
179
+ msgstr "Con The Events Calendar, puoi facilmente creare e gestire un calendario di eventi sul tuo sito WordPress. Il plugin supporta sia eventi personali che virtuali. Ci sono anche molti modi per estendere il plugin per eventi ricorrenti, vendite di biglietti, eventi inviati dagli utenti e altro ancora."
 
180
 
181
+ #. Found in faq paragraph.
182
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in The Events Calendar plugin. This is useful because The Events Calendar has limited options for managing who can access the admin screens and important features."
183
+ msgstr "La versione Pro di PublishPress Capabilities consente di bloccare l'accesso ai link del menu di amministrazione nel plugin The Events Calendar. Questo è utile perché The Events Calendar ha opzioni limitate per gestire chi può accedere alle schermate di amministrazione e alle funzioni importanti."
184
 
185
+ #. Found in faq paragraph.
186
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-admin-menus/\">Click here to learn about WPForms menu permissions</a>."
187
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-wpforms-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di WPForms</a>."
188
 
189
+ #. Found in faq paragraph.
190
+ msgid "This approach works for the core WPForms plugin and can also be used for add-on plugins such as Form Abandonment, Form Locker, Offline Forms, and more."
191
+ msgstr "Questo approccio funziona per il plugin principale WPForms e può essere utilizzato anche per plugin aggiuntivi come Form Abandonment, Form Locker, Offline Forms e altri."
 
192
 
193
+ #. Found in faq paragraph.
194
+ msgid "Scroll down and you can enter a red X for any WPForms menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the WPForms menu links that you have blocked."
195
+ msgstr "Scorri in basso e puoi inserire una X rossa per ogni link del menu WPForms a cui non vuoi che gli utenti con il ruolo di Amministratore abbiano accesso. Ora quando un amministratore accede al tuo sito, non sarà in grado di vedere i link del menu WPForms che hai bloccato."
 
196
 
197
+ #. Found in faq paragraph.
198
+ msgid "It is possible to control who can access these WPForms plugin links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict WPForms access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full WPForms access."
199
+ msgstr "È possibile controllare chi può accedere a questi link del plugin WPForms utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai a \"Capacità\", poi \"Menu amministrazione\" nella tua area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Per esempio, è possibile limitare l'accesso a WPForms per il ruolo \"Amministratore\". Se lo fai, ti consiglio di fare una copia del ruolo Amministratore in modo che un ruolo abbia ancora pieno accesso a WPForms."
 
200
 
201
+ #. Found in faq paragraph.
202
+ msgid "When you first install the WPForms plugin, you'll see one top-level menu link, plus at least 10 sub-menus:"
203
+ msgstr "Quando installi per la prima volta il plugin WPForms, vedrai un link al menu di primo livello, più almeno 10 sottomenu:"
 
204
 
205
+ #. Found in faq paragraph.
206
+ msgid "WPForms is one of the most popular WordPress contact form plugin with millions of active installs. WPForms allows you to create beautiful contact forms, feedback forms, subscription forms, payment forms, and more."
207
+ msgstr "WPForms è uno dei più popolari plugin per moduli di contatto di WordPress con milioni di installazioni attive. WPForms ti permette di creare bellissimi moduli di contatto, moduli di feedback, moduli di iscrizione, moduli di pagamento e altro ancora."
208
 
209
+ #. Found in faq paragraph.
210
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the WP Forms plugin. This is useful because WPForms has limited options for managing who can access the admin screens and important features."
211
+ msgstr "La versione Pro di PublishPress Capabilities consente di bloccare l'accesso ai link del menu di amministrazione nel plugin WP Forms. Questo è utile perché WP Forms ha opzioni limitate per gestire chi può accedere alle schermate di amministrazione e alle funzioni importanti."
212
 
213
+ #. Found in faq paragraph.
214
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/\">Click here to learn about Jetpack permissions</a>."
215
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-jetpack-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per Jetpack</a>."
216
 
217
+ #. Found in faq paragraph.
218
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-admin-menus/\">Click here to learn about Elementor menu permissions</a>."
219
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-elementor-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di Elementor</a>."
220
 
221
+ #. Found in faq paragraph.
222
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-admin-menus/\">Click here to learn about Yoast SEO menu permissions</a>."
223
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-yoast-seo-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di Yoast SEO</a>."
224
 
225
+ #. Found in faq paragraph.
226
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-form-7-admin-menus/\">Click here to learn about Contact Form 7 menu permissions</a>."
227
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-contact-form-7-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di Contact Form 7</a>."
 
 
228
 
229
+ #. Found in faq paragraph.
230
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-admin-menus/\">Click here to learn about WooCommerce menu permissions</a>."
231
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-access-woocommerce-admin-menus/\">Fai clic qui per imparare sulle autorizzazioni per il menu di WooCommerce</a>."
232
 
233
+ #. Found in faq list item.
234
+ msgid "System Status"
235
+ msgstr "Stato del sistema"
236
 
237
+ #. Found in faq list item.
238
+ msgid "Add-ons"
239
+ msgstr "Add-on"
240
 
241
+ #. Found in faq list item.
242
+ msgid "Import/Export"
243
+ msgstr "Importa/Esporta"
244
 
245
+ #. Found in faq list item.
246
+ msgid "New Form"
247
+ msgstr "Nuovo modulo"
 
 
248
 
249
+ #. Found in faq list item.
250
+ msgid "Forms"
251
+ msgstr "Moduli"
252
 
253
+ #. Found in faq list item.
254
+ msgid "Event Add-Ons"
255
+ msgstr "Add-on eventi"
256
 
257
+ #. Found in faq list item.
258
+ msgid "Help"
259
+ msgstr "Aiuto"
260
 
261
+ #. Found in faq list item.
262
+ msgid "Import"
263
+ msgstr "Importa"
 
 
264
 
265
+ #. Found in faq list item.
266
+ msgid "Organizers"
267
+ msgstr "Organizzatori"
 
268
 
269
+ #. Found in faq list item.
270
+ msgid "Venues"
271
+ msgstr "Sedi"
272
 
273
+ #. Found in faq list item.
274
+ msgid "Events Categories"
275
+ msgstr "Categorie eventi"
 
 
276
 
277
+ #. Found in faq list item.
278
+ msgid "Tag"
279
+ msgstr "Tag"
 
280
 
281
+ #. Found in faq list item.
282
+ msgid "Events"
283
+ msgstr "Eventi"
 
284
 
285
+ #. Found in faq list item.
286
+ msgid "Community"
287
+ msgstr "Comunità"
 
288
 
289
+ #. Found in faq list item.
290
+ msgid "About Us"
291
+ msgstr "Chi siamo"
 
292
 
293
+ #. Found in faq list item.
294
+ msgid "SMTP"
295
+ msgstr "SMTP"
296
 
297
+ #. Found in faq list item.
298
+ msgid "Addons"
299
+ msgstr "Add-on"
 
 
300
 
301
+ #. Found in faq list item.
302
+ msgid "Entries"
303
+ msgstr "Voci"
304
 
305
+ #. Found in faq list item.
306
+ msgid "All Forms"
307
+ msgstr "Tutti i moduli"
 
 
 
308
 
309
+ #. Found in faq header.
310
+ msgid "How Do I Control The Gravity Forms User Roles and Permissions?"
311
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in The Gravity Forms?"
312
 
313
+ #. Found in faq header.
314
+ msgid "How Do I Control The Events Calendar User Roles and Permissions?"
315
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in The Events Calendar?"
316
 
317
+ #. Found in faq header.
318
+ msgid "How Do I Control WPForms User Roles and Permissions?"
319
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in WPForms?"
 
 
 
 
 
 
320
 
321
+ #. Found in faq header.
322
+ msgid "How Do I Control WooCommerce Menu Link Permissions?"
323
+ msgstr "Come posso controllare le autorizzazioni ai link del menu di WooCommerce?"
324
 
325
+ #. Found in faq paragraph.
326
+ msgid "It is possible to control who can access these Jetpack links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Jetpack access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Jetpack access. Scroll down and you can enter a red X for any Jetpack menu link that you don't want users in the Administrator role to access. Now when an Administrator logs in to your site, they will not be able to see the Jetpack menu links that you have blocked. This approach works for the core Jetpack plugin and can also be used for add-on plugins such as Jetpack CRM and others."
327
+ msgstr "È possibile controllare chi può accedere a questi link Jetpack utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai su \"Capacità\", poi \"Menu di amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Ad esempio, è possibile limitare l'accesso a Jetpack per il ruolo \"Amministratore\". Se lo fai, ti consiglio di fare una copia del ruolo Amministratore in modo che un ruolo abbia ancora pieno accesso a Jetpack. Scorri verso il basso e puoi inserire una X rossa per ogni link del menu Jetpack a cui non vuoi che gli utenti con il ruolo Amministratore abbiano accesso. Ora quando un amministratore accede al tuo sito, non sarà in grado di vedere i link del menu Jetpack che hai bloccato. Questo approccio funziona per il plugin principale Jetpack e può essere usato anche per i plugin aggiuntivi come Jetpack CRM e altri."
328
 
329
+ #. Found in faq paragraph.
330
+ msgid "When you first install the Jetpack plugin, you'll see one top-level menu link, plus at least 2 sub-menus:"
331
+ msgstr "Quando installi per la prima volta il plugin Jetpack, vedrai un link al menu di primo livello, più almeno 2 sottomenu:"
332
 
333
+ #. Found in faq paragraph.
334
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Jetpack plugin. This is useful because Jetpack has limited options for managing who can access the admin screens and important features."
335
+ msgstr "La versione Pro di PublishPress Capabilities consente di bloccare l'accesso ai link del menu di amministrazione nel plugin Jetpack. Questo è utile perché Jetpack ha opzioni limitate per gestire chi può accedere alle schermate di amministrazione e alle funzioni importanti."
336
 
337
+ #. Found in faq paragraph.
338
+ msgid "This approach works for the core Elementor plugin and can also be used for add-on plugins such as Essential Addons, Premium Addons, and others."
339
+ msgstr "Questo approccio funziona per il plugin principale Elementor e può essere utilizzato anche per plugin aggiuntivi come Essential Addons, Premium Addons e altri."
340
 
341
+ #. Found in faq paragraph.
342
+ msgid "In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Elementor access for the “Administrator” role. If you do this, I would recommend making a copy of the Administrator role so that one role still has full Elementor access. Scroll down and you can enter a red X for any Elementor menu link that you don't want users in the Administrator role to access."
343
+ msgstr "Nell'angolo in alto a sinistra di questa schermata, scegli il ruolo che vuoi modificare. Per esempio, puoi limitare l'accesso a Elementor per il ruolo \"Amministratore\". Se lo fai, ti consiglio di fare una copia del ruolo Amministratore in modo che un ruolo abbia ancora pieno accesso a Elementor. Scorri verso il basso e puoi inserire una X rossa per qualsiasi link del menu di Elementor a cui non vuoi che gli utenti con il ruolo di amministratore abbiano accesso."
 
344
 
345
+ #. Found in faq paragraph.
346
+ msgid "It is possible to control who can access Elementor menu links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area."
347
+ msgstr "È possibile controllare chi può accedere ai link del menu di plugin Elementor utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai su \"Capacità\", poi \"Menu amministrazione\" nella vostra area di amministrazione di WordPress."
348
 
349
+ #. Found in faq paragraph.
350
+ msgid "When you first install Elementor, you'll see one top-level menu link, plus at least 9 sub-menus:"
351
+ msgstr "Quando installi per la prima volta il plugin Elementor, vedrai un link al menu di primo livello, più almeno 9 sottomenu:"
352
 
353
+ #. Found in faq paragraph.
354
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Elementor plugin. This is useful because Elementor has limited options for managing who can access the admin screens and important features."
355
+ msgstr "La versione Pro di PublishPress Capabilities permette di bloccare l'accesso ai link del menu di amministrazione nel plugin Elementor. Questo è utile perché Elementor ha opzioni limitate per controllare chi può accedere alle schermate di amministrazione."
356
 
357
+ #. Found in faq paragraph.
358
+ msgid "This approach works for the core Yoast SEO plugin and can also be used for add-on plugins such as Local SEO, WooCommerce SEO, Google News, and more."
359
+ msgstr "Questo approccio funziona per il plugin principale Yoast SEO e può essere utilizzato anche per plugin aggiuntivi come Local SEO, WooCommerce SEO, Google News e altri."
360
 
361
+ #. Found in faq paragraph.
362
+ msgid "It is possible to control who can access these Yoast SEO links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. For example, you can restrict Yoast SEO access for the “SEO Manager” role. Scroll down and you can enter a red X for any menu link that you don't want users in the SEO Manager role to access."
363
+ msgstr "È possibile controllare chi può accedere a questi link di Yoast SEO utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai su \"Capacità\", poi \"Menu di amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Ad esempio, è possibile limitare l'accesso a Yoast SEO per il ruolo \"Gestore SEO\". Scorri verso il basso e puoi inserire una X rossa per ogni link del menu a cui non vuoi che gli utenti con il ruolo SEO Manager abbiano accesso."
364
 
365
+ #. Found in faq paragraph.
366
+ msgid "When you first install Yoast SEO, you'll see one top-level menu link, plus at least 5 sub-menus:"
367
+ msgstr "Quando installi per la prima volta il plugin Yoast SEO, vedrai un link al menu di primo livello, più almeno 5 sottomenu:"
368
 
369
+ #. Found in faq paragraph.
370
+ msgid "Yoast SEO is the most popular WordPress SEO plugin and contains everything that you need to manage your SEO. Yoast SEO is packed full of feature that help search engines to find and understand your website."
371
+ msgstr "Yoast SEO è il più popolare plugin SEO per WordPress e contiene tutto ciò di cui avete bisogno per gestire il vostro SEO. Yoast SEO è pieno di funzionalità che aiutano i motori di ricerca a trovare e capire il tuo sito web."
372
 
373
+ #. Found in faq paragraph.
374
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Yoast SEO plugin. This is useful because Yoast SEO has limited options for managing who can access the admin screens and important features."
375
+ msgstr "La versione Pro di PublishPress Capabilities permette di bloccare l'accesso ai link del menu di amministrazione nel plugin . Questo è utile perché Yoast SEO ha opzioni limitate per controllare chi può accedere alle schermate di amministrazione."
376
 
377
+ #. Found in faq paragraph.
378
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. In the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in the Editor role to access. This approach works for the core Contact Form 7 plugin and can also be used for add-on plugins such as Flamingo which records entries for Contact Form 7 forms."
379
+ msgstr "È possibile controllare chi può accedere a questi link utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai su \"Capacità\", poi \"Menu di amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Scorri verso il basso e puoi inserire una X rossa per ogni link del menu a cui non vuoi che gli utenti con il ruolo di editore abbiano accesso. Questo approccio funziona per il plugin principale Contact Form 7 e può essere utilizzato anche per plugin aggiuntivi come Flamingo che registra i dati inseriti nei moduli di Contact Form 7."
380
 
381
+ #. Found in faq paragraph.
382
+ msgid "When you first install Contact Form 7, you'll see one top-level menu link, plus three sub-menus. All of these links are available to users in the Administrator role:"
383
+ msgstr "Quando installi per la prima volta Contact Form 7, vedrai un link al menu di primo livello, più 3 sottomenu. Tutti questi link sono disponibili per gli utenti con il ruolo di amministratore:"
384
 
385
+ #. Found in faq paragraph.
386
+ msgid "Contact Form 7 is the most popular contact form plugin for WordPress. You can manage multiple contact forms, and easily customize each form and the emails it sends. Contact Form 7 supports Ajax-powered submitting, CAPTCHA, Akismet spam filtering and much more."
387
+ msgstr "Contact Form 7 è il più popolare plugin per moduli di contatto per WordPress. È possibile gestire più moduli di contatto e personalizzare facilmente ogni modulo e le email che invia. Contact Form 7 supporta l'invio tramite Ajax, CAPTCHA, filtro antispam Akismet e molto altro."
388
 
389
+ #. Found in faq paragraph.
390
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in the Contact Form 7 plugin. This is useful because Contact Form 7 has very limited options for controlling who can access the admin screens."
391
+ msgstr "La versione Pro di PublishPress Capabilities permette di bloccare l'accesso ai link del menu di amministrazione nel plugin . Questo è utile perché Contact Form 7 ha opzioni limitate per controllare chi può accedere alle schermate di amministrazione."
 
 
 
392
 
393
+ #. Found in faq paragraph.
394
+ msgid "It is possible to control who can access these links by using the PublishPress Capabilities Pro plugin. After installing PublishPress Capabilities Pro, go to “Capabilities”, then “Admin Menus” in your WordPress admin area. n the top-left corner of this screen, choose the role that you want to edit. Scroll down and you can enter a red X for any menu link that you don't want users in that role to access. This is a great way to customize a WooCommerce role such as Shop Manager. This approach works for the core WooCommerce plugin and can also be used for WooCommerce add-on plugins such as WooCommerce Subscriptions, WooCommerce Shipping, and WooCommerce Bookings. PublishPress Capabilities can help you manage WooCommerce permissisons."
395
+ msgstr "È possibile controllare chi può accedere a questi link utilizzando il plugin PublishPress Capabilities Pro. Dopo aver installato PublishPress Capabilities Pro, vai su \"Capacità\", poi \"Menu di amministrazione\" nella vostra area di amministrazione di WordPress. Nell'angolo in alto a sinistra di questa schermata, scegliete il ruolo che volete modificare. Scorri verso il basso e puoi inserire una X rossa per ogni link del menu a cui non vuoi che gli utenti con quel ruolo abbiano accesso. Questo è un metodo perfetto per personalizzare i ruoli in WooCommerce come quello di \"Gestore del negozio\". Questo approccio funziona per il plugin principale WooCommerce e può essere utilizzato anche per plugin aggiuntivi di WooCommerce come WooCommerce Subscriptions, WooCommerce Shipping, e WooCommerce Bookings. PublishPress Capabilities può aiutarti nella gestione delle autorizzazioni per WooCommerce."
 
 
 
396
 
397
+ #. Found in faq paragraph.
398
+ msgid "The Pro version of PublishPress Capabilities allows you to block access to admin menu links in WooCommerce. This is useful because WooCommerce has very limited options for controlling who can access the admin screens. When you first install WooCommerce, you'll see four top-level menu links, plus sub-menus. All of these links are available to users in the Administrator and Shop Manager roles:"
399
+ msgstr "La versione Pro di PublishPress Capabilities permette di bloccare l'accesso ai link del menu di amministrazione di WooCommerce. Questo è utile perché WooCommerce ha opzioni limitate per controllare chi può accedere alle schermate di amministrazione. Quando installi per la prima volta il plugin WooCommerce, vedrai 4 link al menu di primo livello, più vari sottomenu. Tutti questi link sono disponibili per gli utenti con i ruoli di Amministratore e di Gestore del negozio:"
 
400
 
401
+ #. Found in faq paragraph.
402
+ msgid "In the right sidebar, you can also enable permissions for WooCommerce taxonomies. Check the boxes for Product categories, Product tags, and Product shipping classes. After you check those boxes and refresh your screen, you will see Manager, Edit, Assign and Delete options for Product categories, Product tags, and Product shipping classes."
403
+ msgstr "Nella barra laterale destra, puoi anche abilitare le autorizzazioni per le tassonomie di WooCommerce. Spunta le caselle per le categorie dei prodotti, i tag dei prodotti e le classi di spedizione dei prodotti. Dopo aver spuntato queste caselle e aver aggiornato la schermata, vedrai le opzioni Gestione, Modifica, Assegnazione ed Eliminazione per le categorie dei prodotti, i tag dei prodotti e le classi di spedizione dei prodotti."
 
 
 
404
 
405
+ #. Found in faq paragraph.
406
+ msgid "The PublishPress Capabilities plugin enables you to control permissions for the WooCommerce plugin and also WooCommerce user roles. You can use this plugin as a WooCommerce user role editor. Go to the “Capabilities” link in your WordPress admin menu. In the main area of your screen will see options for WooCommerce Products, Orders and Coupons. These permissions cover editing, deleting and reading."
407
+ msgstr "Il plugin PublishPress Capabilities ti consente di controllare le autorizzazioni per il plugin WooCommerce e anche i ruoli utente di WooCommerce. È possibile utilizzare questo plugin come un editor di ruoli utente di WooCommerce. Andate al link \"Capacità\" nel vostro menu di amministrazione di WordPress. Nell'area principale del vostro schermo vedrete le opzioni per i prodotti WooCommerce, gli ordini e i codici promozionali. Questi permessi coprono la modifica, la cancellazione e la lettura."
 
 
408
 
409
+ #. Found in faq paragraph.
410
+ msgid "WooCommerce is the most popular WordPress eCommerce plugin. You can create beautiful store with themes customized to your brand and industry and you'll find 1,000's of tools and popular integrations."
411
+ msgstr "WooCommerce è il più popolare plugin eCommerce di WordPress. Puoi creare bellissimi negozi con temi personalizzati per il tuo marchio e il tuo settore e troverai 1.000 strumenti e integrazioni popolari."
 
 
412
 
413
+ #. Found in faq list item.
414
+ msgid "Dashboard"
415
+ msgstr "Bacheca"
 
416
 
417
+ #. Found in faq list item.
418
+ msgid "Go Pro"
419
+ msgstr "Passa a Pro"
420
 
421
+ #. Found in faq list item.
422
+ msgid "Custom Icons"
423
+ msgstr "Icone personalizzate"
 
424
 
425
+ #. Found in faq list item.
426
+ msgid "Custom Fonts"
427
+ msgstr "Font personalizzati"
428
 
429
+ #. Found in faq list item.
430
+ msgid "Get Help"
431
+ msgstr "Ottieni aiuto"
432
 
433
+ #. Found in faq list item.
434
+ msgid "Getting Started"
435
+ msgstr "Come iniziare"
 
 
 
 
436
 
437
+ #. Found in faq list item.
438
+ msgid "System Info"
439
+ msgstr "Informazioni del sistema"
 
 
440
 
441
+ #. Found in faq list item.
442
+ msgid "Role Manager"
443
+ msgstr "Gestore ruoli"
 
 
444
 
445
+ #. Found in faq list item.
446
+ msgid "Settings"
447
+ msgstr "Impostazioni"
 
448
 
449
+ #. Found in faq list item.
450
+ msgid "Premium"
451
+ msgstr "Premium"
 
 
452
 
453
+ #. Found in faq list item.
454
+ msgid "Tools"
455
+ msgstr "Strumenti"
456
 
457
+ #. Found in faq list item.
458
+ msgid "Social"
459
+ msgstr "Social"
 
 
460
 
461
+ #. Found in faq list item.
462
+ msgid "Search Appearance"
463
+ msgstr "Aspetto di ricerca"
 
 
464
 
465
+ #. Found in faq list item.
466
+ msgid "General"
467
+ msgstr "Generale"
468
 
469
+ #. Found in faq list item.
470
+ msgid "Integration"
471
+ msgstr "Integrazione"
 
472
 
473
+ #. Found in faq list item.
474
+ msgid "Add New"
475
+ msgstr "Aggiungi nuovo"
 
476
 
477
+ #. Found in faq list item.
478
+ msgid "Contact Forms"
479
+ msgstr "Modulo di contatto"
480
 
481
+ #. Found in faq list item.
482
+ msgid "Marketing"
483
+ msgstr "Marketing"
484
 
485
+ #. Found in faq list item.
486
+ msgid "Analytics"
487
+ msgstr "Analytics"
488
 
489
+ #. Found in faq list item.
490
+ msgid "Products"
491
+ msgstr "Prodotti"
 
492
 
493
+ #. Found in faq list item.
494
+ msgid "WooCommerce"
495
+ msgstr "WooCommerce"
 
 
496
 
497
+ #. Found in faq header.
498
+ msgid "How Do I Control Jetpack User Roles and Permissions?"
499
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in Jetpack?"
 
500
 
501
+ #. Found in faq header.
502
+ msgid "How Do I Control Elementor User Roles and Permissions?"
503
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in Elementor?"
504
 
505
+ #. Found in faq header.
506
+ msgid "How Do I Control Yoast SEO User Roles and Permissions?"
507
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in Yoast SEO?"
 
508
 
509
+ #. Found in faq header.
510
+ msgid "How Do I Control Contact Form 7 Permissions?"
511
+ msgstr "Come posso controllare le autorizzazioni e i ruoli degli utenti in Contact Form 7?"
512
 
513
+ #. Found in faq paragraph.
514
+ msgid "Common and incorrect typos include Capabilitise, Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, Calabilities."
515
+ msgstr "Gli errori di battitura comuni e non corretti includono Capabilitise, Cpabilities, Capabiliites, Cspabilities, Capsbilities, Caoabilities, Calabilities."
516
 
517
+ #. Found in faq paragraph.
518
+ msgid "PublishPress is the official brandname. When writing about this user role editor plugin, please make sure to uppercase the Ps."
519
+ msgstr "PublishPress è il marchio ufficiale. Quando si scrive di questo plugin per l'editor di ruoli utente, assicuratevi di usare la P maiuscola."
 
 
 
 
520
 
521
+ #. Found in faq paragraph.
522
+ msgid "Here's another comparison:"
523
+ msgstr "Ecco un altro confronto:"
 
 
524
 
525
+ #. Found in faq paragraph.
526
+ msgid "Here's an contrasting example when it comes to Post:"
527
+ msgstr "Ecco un esempio contrastante quando si tratta di Articolo:"
528
 
529
+ #. Found in faq paragraph.
530
+ msgid "OK, that's maybe too simple, so here's more detail:"
531
+ msgstr "Ok, questo è forse troppo semplice, quindi ecco più dettagli:"
532
 
533
+ #. Found in faq paragraph.
534
+ msgid "We provide two plugins that allow you to control who can access what on your WordPress site. This is simple way to understand the difference:"
535
+ msgstr "Forniamo due plugin che ti permettono di controllare chi può accedere a che cosa sul tuo sito WordPress. Questo è un modo semplice per capire la differenza:"
 
 
 
 
 
536
 
537
+ #. Found in faq paragraph.
538
+ msgid "If you want to proceed, click the “Reset to WordPress defaults” link. PublishPress Capabilities will ask you if you're really sure you want to do this. Click “OK” to continue. Once the process is complete, you'll see the message, “Roles and Capabilities reset to WordPress defaults”."
539
+ msgstr "Se vuoi procedere, fai clic sul link \"Ripristina le impostazioni predefinite di WordPress\". PublishPress Capabilities ti chiederà se sei davvero sicuro di volerlo fare. Fai clic su \"OK\" per continuare. Una volta completato il processo, vedrai il messaggio \" Ruoli e capacità ripristinati alle impostazioni predefinite di WordPress \"."
540
 
541
+ #. Found in faq paragraph.
542
+ msgid "“WARNING: This will delete and/or modify stored role definitions. If you have installed any plugin that adds new roles or capabilities, these will be lost. It is recommended to use this only as a last resort!”"
543
+ msgstr "\"Attenzione: questo cancellerà e/o modificherà le definizioni dei ruoli memorizzati. Se hai installato qualsiasi plugin che aggiunge nuovi ruoli o capacità, questi saranno persi. Ti raccomandiamo di usarlo solo come ultima risorsa!\""
 
544
 
545
+ #. Found in faq paragraph.
546
+ msgid "If you really need to clean up and refresh your site, PublishPress Capabilities does allow you to restore the default WordPress permissions. Go to Capabilities &gt; Backup and dlick the “Reset Roles” tab. Before you take next step, make sure to read this warning:"
547
+ msgstr "Se hai davvero necessità di ripulire e rinfrescare il tuo sito, PublishPress Capabilities ti permette di ripristinare le autorizzazioni predefinite di WordPress. Vai a Capacità &gt; Backup e fai clic sulla scheda \" Ripristina i ruoli\". Prima di fare il prossimo passo, assicurati di leggere questo avviso:"
548
 
549
+ #. Found in faq paragraph.
550
+ msgid "Whenever you choose a backup, the plugin will show all the permissions in that backup. Important changes in permissions are highlighted:"
551
+ msgstr "Ogni volta che si scegli un backup, il plugin mostrerà tutti le autorizzazioni del backup in questione. I cambiamenti importanti nelle autorizzazioni sono evidenziati:"
552
 
553
+ #. Found in faq paragraph.
554
+ msgid "Click the yellow “Restore Selected Roles” button and you'll be able to roll back to a previous version."
555
+ msgstr "Fai clic sul pulsante giallo \" Ripristina i ruoli selezionati\" e sarai in grado di tornare a una versione precedente."
 
556
 
557
+ #. Found in faq paragraph.
558
+ msgid "Every time you change your permissions, the PublishPress Capabilities plugin will automatically create a backup. If you make a mistake, go to the “Backup” menu link and click the “Restore” tab. Here you can browse through the most recent 20 automatic backups. The plugin also saves a backup from you first installed PublishPress Capabilities. And you can click the “Backup” tab to manually create backups."
559
+ msgstr "Ogni volta che modifichi le autorizzazioni, il plugin PublishPress Capabilities crea automaticamente un backup. Se fai un errore, vai al link del menu \"Backup\" e clicca sulla scheda \"Ripristina\". Qui puoi sfogliare i 20 backup automatici più recenti. Il plugin salva anche un backup della prima installazione di PublishPress Capabilities. E si può fare clic sulla scheda \"Backup\" per creare manualmente i backup."
 
560
 
561
+ #. Found in faq paragraph.
562
+ msgid "Changing permissions in WordPress can be a tricky task. It's possible to lock yourself or others out of some important features. So, we've built a way to keep your site safe."
563
+ msgstr "Cambiare le autorizzazioni in WordPress può essere un compito difficile. È possibile bloccare se stessi o altri fuori da alcune funzioni importanti. Quindi, abbiamo costruito un modo per mantenere il tuo sito sicuro."
 
 
564
 
565
+ #. Found in faq paragraph.
566
+ msgid "PublishPress Capabilities is a user role editor that offers you the ability to backup and restore your WordPress user permissions. This feature is very helpful if you want to test out changes on your site, or you've installed a new plugin that has changed your site's permissions."
567
+ msgstr "PublishPress Capabilities è un editor di ruoli utente che ti permette di fare il backup e ripristinare le autorizzazioni degli utenti di WordPress. Questa funzione è molto utile se vuoi verificare le modifiche sul tuo sito, o se hai installato un nuovo plugin che ha cambiato i permessi del tuo sito."
568
 
569
+ #. Found in faq list item.
570
+ msgid "publish press cpabilities (incorrect)"
571
+ msgstr "publish press cpabilities (non corretto)"
572
 
573
+ #. Found in faq list item.
574
+ msgid "publishpress capabilities (incorrect)"
575
+ msgstr "publishpress capabilities (non corretto)"
 
576
 
577
+ #. Found in faq list item.
578
+ msgid "Publish Press Capabilities (incorrect)"
579
+ msgstr "Publish Press Capabilities (non corretto)"
580
 
581
+ #. Found in faq list item.
582
+ msgid "PublishPress Capabilities (correct)"
583
+ msgstr "PublishPress Capabilities (corretto)"
584
 
585
+ #. Found in faq list item.
586
+ msgid "PublishPress Permissions allows you to control who can read Pages with a specific Status, Category or Tag, or even Pages with a particular parent Page."
587
+ msgstr "PublishPress Permissions ti permette di controllare chi può leggere le pagine con uno specifico stato, categoria o tag, o anche le pagine con una particolare pagina genitore."
588
 
589
+ #. Found in faq list item.
590
+ msgid "PublishPress Capabilities allows you to control who can read all your Pages."
591
+ msgstr "PublishPress Capabilities ti permette di controllare chi può leggere tutte le tue pagine."
592
 
593
+ #. Found in faq list item.
594
+ msgid "PublishPress Permissions allows you to control who can publish Posts with a particular Status, Category or Tag, or even Posts without a specific Category or Tag."
595
+ msgstr "PublishPress Permissions ti permette di controllare chi può pubblicare gli articoli con uno specifico stato, categoria o tag, o anche gli articoli senza una specifica categoria o tag."
 
 
 
 
596
 
597
+ #. Found in faq list item.
598
+ msgid "PublishPress Capabilities allows you to control who can publish all your Posts."
599
+ msgstr "PublishPress Capabilities ti permette di controllare chi può pubblicare tutti i tuoi articoli."
 
 
 
600
 
601
+ #. Found in faq list item.
602
+ msgid "PublishPress Permissions allows you to customize advanced permissions that go far beyond the scope of the WordPress core."
603
+ msgstr "PublishPress Permissions ti permette di personalizzare le autorizzazioni avanzate che vanno ben oltre l'ambito del core di WordPress."
604
 
605
+ #. Found in faq list item.
606
+ msgid "PublishPress Permissions allows you to customize the default WordPress permissions."
607
+ msgstr "PublishPress Permissions ti permette di personalizzare le autorizzazioni predefinite di WordPress."
608
 
609
+ #. Found in faq list item.
610
+ msgid "PublishPress Permissions: Advanced."
611
+ msgstr "PublishPress Permissions: Avanzate."
612
 
613
+ #. Found in faq list item.
614
+ msgid "PublishPress Capabilities: Easy."
615
+ msgstr "PublishPress Capabilities: Facile."
616
 
617
+ #. Found in faq list item.
618
+ msgid "A stuck-through capability is set in the current role, but not the role backup."
619
+ msgstr "Una capacità stuck-through è impostata nel ruolo corrente, ma non nel ruolo di backup."
620
 
621
+ #. Found in faq list item.
622
+ msgid "A green capability is set in the role backup, but not the current role."
623
+ msgstr "Una capacità verde è impostata nel ruolo di backup, ma non nel ruolo corrente."
624
 
625
+ #. Found in faq list item.
626
+ msgid "A green role title means the role does not exist in your current set. "
627
+ msgstr "Un titolo di ruolo verde significa che il ruolo non esiste nel tuo set attuale. "
 
628
 
629
+ #. Found in faq header.
630
+ msgid "What's the correct way to spell PublishPress Capabilities?"
631
+ msgstr "Qual è il modo corretto di scrivere PublishPress Capabilities?"
 
 
632
 
633
+ #. Found in faq header.
634
+ msgid "What’s the Difference Between PublishPress Capabilities and PublishPress Permissions?"
635
+ msgstr "Qual è la differenza tra PublishPress Capabilities e PublishPress Permissions?"
 
636
 
637
+ #. Found in faq header.
638
+ msgid "How Do I Restore Permissions to the WordPress Defaults?"
639
+ msgstr "Come posso ripristinare le autorizzazioni predefinite di WordPress?"
640
 
641
+ #. Found in faq header.
642
+ msgid "How do I Backup and Restore WordPress User Permissions?"
643
+ msgstr "Come posso fare il backup e ripristinare le autorizzazioni utente predefinite di WordPress?"
644
 
645
+ #. Found in description paragraph.
646
+ msgid "PublishPress Capabilities gives you detailed control over all the permission levelsss on your WordPress site. You can edit user roles on your site, from Administrator and Editor to Contributor and Subscriber."
647
+ msgstr "PublishPress Capabilities ti il controllo dettagliato su tutti i livelli di autorizzazione sul tuo sito WordPress. Puoi modificare i ruoli degli utenti sul tuo sito, da Amministratore e Editore a Collaboratore e Sottoscrittore."
648
 
649
+ #. Found in description paragraph.
650
+ msgid "The Pro version of PublishPress Capabilities enables you to stop users from accessing any admin menu link and any frontend menu link."
651
+ msgstr "La versione Pro di PublishPress Capabilities ti consente di impedire agli utenti di accedere a qualsiasi link del menu di amministrazione e a qualsiasi link del menu di frontend."
652
 
653
+ #. Found in description header.
654
+ msgid "10. WordPress Admin Menu Restrictions (Pro version)"
655
+ msgstr "10. Restrizioni del menu di amministrazione di WordPress (versione Pro)"
 
656
 
657
+ #. Found in description header.
658
+ msgid "8. Create New User Roles or Copy User Roles"
659
+ msgstr "8. Creare nuovi ruoli o copiare i ruoli utente"
660
 
661
+ #. Found in description header.
662
+ msgid "5. Hide Gutenberg and Classic Editor Features"
663
+ msgstr "5. Nascondere le caratteristiche di Gutenberg e dell'Editor classico"
664
 
665
+ #. Found in description header.
666
+ msgid "3. Capabilities for any WordPress Taxonomy"
667
+ msgstr "3. Capacità per ciascuna tassonomia di WordPress"
 
668
 
669
+ #. Found in description header.
670
+ msgid "1. WordPress User Role Editor"
671
+ msgstr "1. Editor dei ruoli utente di WordPress"
 
672
 
673
+ #. Found in description paragraph.
674
+ msgid "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Click here to learn about hiding editor features</a>."
675
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/editor-features/\">Fai clic qui per imparare come nascondere le funzionalità dell'editor</a>."
676
 
677
+ #. Found in description paragraph.
678
+ msgid "PublishPress Capabilities has an option called \"Editor Features\" allows you to clean up the post editing screen. You can decide what users see when they're writing posts. You can hide anything on the Gutenberg or Classic Editor screens. You can hide boxes inside the sidebadd such Tags, Categories, or Excerpt. You can the \"Publish\" button. You can even hide the post title, body, or permalink. This is a great alternative to plugins such as Adminimize."
679
+ msgstr "PublishPress Capabilities ha un'opzione chiamata \"Funzioni dell'editor\" che ti consente di ripulire la schermata di modifica degli articoli. Puoi decidere cosa vedono gli utenti quando scrivono gli articoli. Puoi nascondere qualsiasi cosa nelle schermate di Gutenberg o dell'editor classico. Puoi nascondere le caselle all'interno della barra laterale come Tag, Categorie o Riassunto. È possibile disattivare il pulsante \"Pubblica\". Puoi persino nascondere il titolo, il corpo o il permalink dell'articolo. Questa è un'ottima alternativa ai plugin come Adminimize."
680
 
681
+ #. Found in description paragraph.
682
+ msgid "You can use PublishPress Capabilities to clean up the post editing screen. You can decide what authors see when they're writing posts. You can <strong>hide any features on the Gutenberg or Classic Editor screens</strong>."
683
+ msgstr "Puoi utilizzare PublishPress Capabilities per ripulire la schermata di modifica degli articoli. Puoi decidere cosa devono vedere gli autori quando stanno scrivendo gli articoli. Puoi <strong>nascondere ogni caratteristica della schermata di Gutenberg o dell'editor classico</strong>."
 
684
 
685
+ #. Found in description list item.
686
+ msgid "<strong>Hide editor features</strong>: Decide what users see when they're writing posts in Gutenberg or the Classic Editor."
687
+ msgstr "<strong>Nascondi le funzioni dell'editor</strong>: decidi cosa vedono gli utenti quando scrivono articoli in Gutenberg o nell'editor classico."
 
688
 
689
+ #. Found in description list item.
690
+ msgid "<strong>Multisite support</strong>: Manage permissions on a single site or across your whole network."
691
+ msgstr "<strong>Supporto multisito</strong>: gestisci le autorizzazioni su un singolo sito o su tutta la tua rete."
 
 
 
692
 
693
+ #. Found in description list item.
694
+ msgid "<strong>WooCommerce permissions</strong>: Control access to WooCommerce products, orders, coupons and more."
695
+ msgstr "<strong>Autorizzazioni per WooCommerce</strong>: controlla l'accesso ai prodotti, gli ordini, i buoni sconto e quanto altro di WooCommerce."
 
 
 
696
 
697
+ #. Found in description list item.
698
+ msgid "<strong>Media library permissions</strong>: Decide who can upload, edit and delete files."
699
+ msgstr "<strong>Autorizzazioni per la libreria dei media</strong>: decidi chi può caricare, modificare e cancellare i file."
 
 
 
 
700
 
701
+ #. Found in description list item.
702
+ msgid "<strong>Admin menus (Pro version)</strong>: Stop users from accessing any admin menu link."
703
+ msgstr "<strong>Menu di amministrazione (versione Pro)</strong>: impedisce agli utenti di accedere a qualsiasi collegamento al menu di amministrazione."
 
 
 
704
 
705
+ #. Found in description list item.
706
+ msgid "<strong>Frontend menus (Pro version)</strong>: Stop users from accessing any frontend menu link."
707
+ msgstr "<strong>Menu frontend (versione Pro)</strong>: impedisce agli utenti di accedere a qualsiasi collegamento al menu frontend."
 
 
 
 
708
 
709
+ #. Found in description list item.
710
+ msgid "<strong>Create or copy user roles</strong>: Add new roles, or clone existing roles."
711
+ msgstr "<strong>Crea o copia ruoli utente</strong>: aggiungi nuovi ruoli o clona ruoli esistenti."
712
 
713
+ #. Found in description list item.
714
+ msgid "<strong>Safe backups</strong>: Every time you change your permissions, PublishPress Capabilities saves a backup."
715
+ msgstr "<strong>Backup sicuri</strong>: ogni volta che modifichi le tue autorizzazioni, PublishPress Capabilities salva un backup."
716
 
717
+ #. Found in description list item.
718
+ msgid "<strong>Works for all taxonomies</strong>: Choose who can Manage, Edit and Assign terms in any taxonomy."
719
+ msgstr "<strong>Funziona per tutte le tassonomie</strong>: scegli chi può gestire, modificare e assegnare termini in qualsiasi tassonomia."
720
 
721
+ #. Found in description list item.
722
+ msgid "<strong>Works for all post types</strong>: Choose who can Publish, Read, Edit and Delete content for any post type."
723
+ msgstr "<strong>Funziona con tutti i tipi di articolo</strong>: scegli chi può pubblicare, leggere, modificare ed eliminare i contenuti per qualsiasi tipo di articolo."
 
724
 
725
+ #. Found in description list item.
726
+ msgid "<strong>User role editor</strong>: You can change the capabilities for any role."
727
+ msgstr "<strong>Editor ruoli utente</strong>: puoi modificare le capacità per qualsiasi ruolo."
728
 
729
+ #. Found in description header.
730
+ msgid "9. Frontend Menu Restrictions (Pro version)"
731
+ msgstr "9. Limitazioni del menu frontend (versione Pro)"
732
 
733
+ #. Found in description header.
734
+ msgid "The Key Features of PublishPress Capabilities"
735
+ msgstr "Le funzionalità chiave di PublishPress Capabilities"
736
 
737
+ #. Found in description paragraph.
738
+ msgid "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Click here to learn about multisite permissions</a>."
739
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/multisite-network/\">Fare clic qui per informazioni sulle autorizzazioni multisito</a>."
740
 
741
+ #. Found in description paragraph.
742
+ msgid "PublishPress Capabilities allows you to control permissions on a single site or across your whole network. Every time you update permissions in PublishPress Capabilities, you can choose to sync those changes across your multisite network."
743
+ msgstr "PublishPress Capabilities ti consente di controllare le autorizzazioni su un singolo sito o su tutta la tua rete. Ogni qualvolta aggiorni le autorizzazioni in PublishPress Capabilities, puoi scegliere di sincronizzare i cambiamenti su tutta la tua rete."
744
 
745
+ #. Found in description paragraph.
746
+ msgid "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/\">Click here to learn about WooCommerce permissions</a>."
747
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/woocommerce-permissons/\">Fare clic qui per informazioni sulle autorizzazioni per WooCommerce</a>."
 
 
748
 
749
+ #. Found in description paragraph.
750
+ msgid "We mentioned earlier that PublishPress Capabilities has special support for WooCommerce taxonomies. This is true for the rest of WooCommerce also. With PublishPress Capabilities you can control permissions for WooCommerce products, orders and coupons."
751
+ msgstr "Abbiamo menzionato in precedenza che PublishPress Capabilities ha un supporto speciale per le tassonomie di WooCommerce. Questo vale anche per il resto di WooCommerce. Con PublishPress Capabilities puoi controllare le autorizzazioni per i prodotti, gli ordini e i codici promozionali di WooCommerce."
752
 
753
+ #. Found in description paragraph.
754
+ msgid "<a href=\"https://publishpress.com/knowledge-base/control-media-library-access/\">Click here to learn about Media Library permissions</a>."
755
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/control-media-library-access/\">Fai clic qui per informazioni sulle autorizzazioni per la libreria dei media</a>."
756
 
757
+ #. Found in description paragraph.
758
+ msgid "PublishPress Capabilities enables you to decide who can upload, edit and delete files from your site's Media Library. By default, only Administrators are able to delete files in your Media Library. Subscribers and Contributors are not even allowed to upload files. You can customize these permissions for the Media Library and also the Featured Image box."
759
+ msgstr "PublishPress Capabilities ti consente di decidere chi può caricare, modificare ed eliminare i file dalla libreria dei media del tuo sito. Per impostazione predefinita, solo gli amministratori possono eliminare i file nella libreria dei media. I sottoscrittori e i collaboratori non sono nemmeno autorizzati a caricare file. Puoi personalizzare queste autorizzazioni per la libreria dei media e anche per la casella Immagine in evidenza."
 
760
 
761
+ #. Found in description paragraph.
762
+ msgid "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Click to see how to block Admin menu access</a>."
763
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/admin-menus/\">Fai clic qui per informazioni su come bloccare l'accesso al menu di amministrazione</a>."
 
 
764
 
765
+ #. Found in description paragraph.
766
+ msgid "With PublishPress Capabilities you can restrict access to admin menu screens by user roles. This is useful because many plugin do not have any way to control who can access their admin screens."
767
+ msgstr "With PublishPress Capabilities è possibile limitare l'accesso alle schermate del menu di amministrazione in base ai ruoli utente. Questo è utile perché molti plugin non hanno alcun modo per controllare chi può accedere alle loro schermate di amministrazione."
768
 
769
+ #. Found in description paragraph.
770
+ msgid "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Click to see how to block frontend menu access</a>."
771
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/nav-menus/\">Fai clic qui per informazioni su come bloccare l'accesso al menu di frontend</a>."
 
772
 
773
+ #. Found in description paragraph.
774
+ msgid "PublishPress Capabilities enables you to restrict access to navigation menus by roles, logged in and logged out users. This is useful because a default WordPress site does not give you way to control the visibility of your links."
775
+ msgstr "PublishPress Capabilities ti consente di limitare l'accesso ai menu di navigazione in base ai ruoli, agli utenti registrati e disconnessi. Questo è utile perché un sito WordPress predefinito non ti dà modo di controllare la visibilità dei tuoi collegamenti."
776
 
777
+ #. Found in description paragraph.
778
+ msgid "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/\">Click here to see how to create or copy user roles</a>."
779
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/create-or-copy-user-roles/\">Fai clic qui per informazioni su come creare o copiare i ruoli utenti</a>."
 
780
 
781
+ #. Found in description paragraph.
782
+ msgid "With PublishPress Capabilities you can create or copy any existing WordPress user role. These roles can be customized in exactly the same way as the default WordPress roles. These new roles can be added to single sites or to an entire multisite network."
783
+ msgstr "Con PublishPress Capabilities puoi creare o copiare qualsiasi ruolo utente WordPress esistente. Questi ruoli possono essere personalizzati esattamente allo stesso modo dei ruoli predefiniti di WordPress. Questi nuovi ruoli possono essere aggiunti a singoli siti oa un'intera rete multisito."
784
 
785
+ #. Found in description paragraph.
786
+ msgid "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/\">Click here to see how to backup permissions</a>."
787
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/backup-restore-permissions/\">Fai clic qui per informazioni su come fare il backup delle autorizzazioni</a>."
788
 
789
+ #. Found in description paragraph.
790
+ msgid "Every time you change your permissions, the PublishPress Capabilities plugin will now automatically create a backup. If you make a mistake, go to the \"Backup\" menu link and you'll be able to roll back to a previous version."
791
+ msgstr "Il plugin PublishPress Capabilities ogni volta che modifichi le tue autorizzazioni, creerà automaticamente un backup. Così se commetti un errore è sufficiente che vai al collegamento del menu \"Backup\" e sarai in grado di tornare a una versione precedente."
792
 
793
+ #. Found in description paragraph.
794
+ msgid "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/\">Click here to learn about taxonomy permissions</a>."
795
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/taxonomy-specific-capabilities/\">Fai clic qui per informazioni sulle autorizzazioni per la tassonomia</a>."
796
 
797
+ #. Found in description paragraph.
798
+ msgid "PublishPress Capabilities enables you to add extra permissions to the taxonomies on your site. This feature includes the default Categories and Tags, but also applies to other taxonomies. For example, in WooCommerce you can apply custom permissions to Product categories, Product tags, and Product shipping classes. You can enforce and assign \"Manage\", \"Edit\" and \"Assign\" distinct capabilities for all your taxonomies."
799
+ msgstr "PublishPress Capabilities ti consente di aggiungere autorizzazioni extra alle tassonomie del tuo sito. Questa funzione include le categorie e i tag predefiniti, ma si applica anche ad altre tassonomie. Ad esempio, in WooCommerce puoi applicare autorizzazioni personalizzate a Categorie di prodotto, Tag di prodotto e Classi di spedizione del prodotto. Puoi applicare e assegnare capacità distinte \"Gestisci\", \"Modifica\" e \"Assegna\" per tutte le tue tassonomie."
800
 
801
+ #. Found in description paragraph.
802
+ msgid "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-capability/\">Click here to see how to control post type permissions</a>."
803
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/custom-post-types-capability/\">Fai clic qui per informazioni su come controllare le autorizzazioni per i tipi di articolo</a>."
804
 
805
+ #. Found in description paragraph.
806
+ msgid "Many WordPress users have sites with custom post types. This can be done using custom code, a theme, or with a plugin. No matter how your post type is created, PublishPress Capabilities lets you enforce and assign distinct capabilities for your post type."
807
+ msgstr "Molti utenti di WordPress hanno siti con tipi di articolo personalizzati. Questo può essere fatto usando codice personalizzato, un tema o con un plugin. Indipendentemente da come viene creato il tuo tipo di articolo, PublishPress Capabilities ti consente di applicare e assegnare capacità distinte per il tuo tipo di articolo."
808
 
809
+ #. Found in description paragraph.
810
+ msgid "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Click here for your quick start guide to PublishPress Capabilities</a>."
811
+ msgstr "<a href=\"https://publishpress.com/knowledge-base/permissions-start/\">Fai clic qui per avviare la tua guida rapida all'uso di PublishPress Capabilities</a>."
812
 
813
+ #. Found in description paragraph.
814
+ msgid "With the Capabilities plugin, you can choose who can Publish, Read, Edit and Delete content. You can choose permissions for posts, pages, custom content types, categories, tags, and more."
815
+ msgstr "Con il plugin Capabilities, puoi scegliere chi può pubblicare, leggere, modificare ed eliminare i contenuti. Puoi scegliere le autorizzazioni per articoli, pagine, tipi di contenuto personalizzati, categorie, tag e altro ancora."
816
 
817
+ #. Found in description paragraph.
818
+ msgid "You can <strong>customize all your WordPress user roles</strong>, from Administrators and Editors to Authors, Contributors, Subscribers and custom roles. Each use role can have the exact permissions that your site needs."
819
+ msgstr "Puoi <strong>personalizzare tutti i tuoi ruoli utente di WordPress</strong>, da Amministratori ed Editori ad Autori, Collaboratori, Sottoscrittori e ruoli personalizzati. Ogni ruolo d'uso può avere le autorizzazioni esatte di cui il tuo sito ha bisogno."
820
 
821
+ #. Found in description paragraph.
822
+ msgid "<a href=\"https://publishpress.com/capabilities/\">PublishPress Capabilities</a> gives you control over all the permissions on your WordPress site. We built this user role editor plugin so you have an EASY and POWERFUL way to manage users."
823
+ msgstr "<a href=\"https://publishpress.com/capabilities/\">PublishPress Capabilities</a> ti dà il controllo su tutte le autorizzazioni sul tuo sito WordPress. Abbiamo creato questo plugin per l'editor dei ruoli utente in modo che tu abbia un modo facile e potente per gestire gli utenti."
824
 
825
+ #. Found in description paragraph.
826
+ msgid "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom\">Twitter</a> and <a href=\"https://www.youtube.com/publishpress\">YouTube</a>."
827
+ msgstr "Follow PublishPress on <a href=\"https://www.facebook.com/publishpress\">Facebook</a>, <a href=\"https://www.twitter.com/publishpresscom\">Twitter</a> e <a href=\"https://www.youtube.com/publishpress\">YouTube</a>."
828
+
829
+ #. Found in description paragraph.
830
+ msgid "Bug reports for PublishPress Capabilities are welcomed in our <a href=\"https://github.com/publishpress/publishpress-capabilities\">repository on GitHub</a>. Please note that GitHub is not a support forum, and that issues that aren't properly qualified as bugs will be closed."
831
+ msgstr "I report di bug su PublishPress Capabilities sono ben accetti nel nostro <a href=\"https://github.com/publishpress/publishpress-capabilities\">archivio su GitHub</a>. Tieni presente che GitHub non è un forum di supporto e che i problemi che non sono adeguatamente qualificati come bug verranno chiusi."
832
+
833
+ #. Found in description paragraph.
834
+ msgid "Together, these plugins are a suite of powerful publishing tools for WordPress. If you need to create a professional workflow in WordPress, with moderation, revisions, permissions and more... then you should try PublishPress."
835
+ msgstr "Insieme, questi plugin sono una suite di potenti strumenti di pubblicazione per WordPress. Se hai bisogno di creare un flusso di lavoro professionale in WordPress, con moderazione, revisioni, permessi e altro… allora dovresti provare PublishPress."
836
+
837
+ #. Found in description paragraph.
838
+ msgid "Join PublishPress and you'll get access to these Pro plugins:"
839
+ msgstr "Iscriviti a PublishPress e avrai accesso a questi plugin Pro:"
840
+
841
+ #. Found in description paragraph.
842
+ msgid "The Pro versions of the PublishPress plugins are well worth your investment. The Pro versions have extra features and faster support. <a href=\"https://publishpress.com/pricing/\">Click here to join PublishPress</a>."
843
+ msgstr "Le versioni Pro dei plugin PublishPress valgono il tuo investimento. Le versioni Pro hanno funzionalità aggiuntive e un supporto più veloce. <a href=\"https://publishpress.com/pricing/\">Fai clic qui per iscriverti a PublishPress</a>."
844
+
845
+ #. Found in description paragraph.
846
+ msgid "PublishPress Capabilities offers you the ability to back up and restore your permissions. This feature is very helpful if you want to test out changes on your site, or if you've installed a new plugin that has changed your site's permissions."
847
+ msgstr "PublishPress Capabilities ti offre la possibilità di eseguire il backup e ripristinare le tue autorizzazioni. Questa funzione è molto utile se desideri testare le modifiche sul tuo sito o se hai installato un nuovo plugin che ha modificato le autorizzazioni del tuo sito."
848
+
849
+ #. Found in description paragraph.
850
+ msgid "PublishPress Capabilities is <strong>safe to use</strong>. Every time you change your site's permissions, this plugin will take a backup that you can restore if anything goes wrong. You can use these backups to migrate your roles and permissions from one site to another."
851
+ msgstr "PublishPress Capabilities è <strong>sicuro da usare</strong>. Ogni volta che modifichi le autorizzazioni del tuo sito, questo plugin eseguirà un backup che potrai ripristinare se qualcosa va storto. Puoi anche utilizzare questi backup per migrare i ruoli e le autorizzazioni da un sito a un altro."
852
+
853
+ #. Found in description list item.
854
+ msgid "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</a> allows you to update your published pages with teamwork and precision."
855
+ msgstr "<a href=\"https://publishpress.com/revisions\">PublishPress Revisions Pro</a> ti permette di aggiornare le tue pagine pubblicate con lavoro di squadra e precisione."
856
+
857
+ #. Found in description list item.
858
+ msgid "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> is the plugin for managing and scheduling WordPress content."
859
+ msgstr "<a href=\"https://publishpress.com/publishpress\">PublishPress Pro</a> è un plugin per la gestione e pianificazione dei contenuti di WordPress."
860
+
861
+ #. Found in description list item.
862
+ msgid "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions Pro</a> is the plugin for advanced WordPress permissions."
863
+ msgstr "<a href=\"https://publishpress.com/permissions\">PublishPress Permissions Pro</a> è un plugin per le autorizzazioni avanzate in WordPress."
864
+
865
+ #. Found in description list item.
866
+ msgid "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</a> enables you to define tasks that must be completed before content is published."
867
+ msgstr "<a href=\"https://publishpress.com/checklists\">PublishPress Checklists Pro</a> consente di definire le attività che devono essere completate prima che il contenuto venga pubblicato."
868
+
869
+ #. Found in description list item.
870
+ msgid "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities Pro</a> is the plugin to manage your WordPress user roles, permissions, and capabilities."
871
+ msgstr "<a href=\"https://publishpress.com/capabilities\">PublishPress Capabilities Pro</a> è il plugin per gestire ruoli utente, autorizzazioni e capacità del tuo WordPress."
872
+
873
+ #. Found in description list item.
874
+ msgid "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> allows you to add multiple authors and guest authors to WordPress posts."
875
+ msgstr "<a href=\"https://publishpress.com/authors\">PublishPress Authors Pro</a> ti consente di aggiungere più autori e autori ospiti agli articoli di WordPress."
876
+
877
+ #. Found in description header.
878
+ msgid "Follow the PublishPress team"
879
+ msgstr "Segui il team di PublishPress"
880
+
881
+ #. Found in description header.
882
+ msgid "Bug Reports"
883
+ msgstr "Report di bug"
884
+
885
+ #. Found in description header.
886
+ msgid "Join PublishPress and get the Pro plugins"
887
+ msgstr "Iscriviti a PublishPress e ottieni le versioni Pro dei plugin"
888
+
889
+ #. Found in description header.
890
+ msgid "13. WordPress Multisite support"
891
+ msgstr "13. Supporto WordPress multisito"
892
+
893
+ #. Found in description header.
894
+ msgid "12. Support for WooCommerce Permissions"
895
+ msgstr "12. Supporto per le autorizzazioni di WooCommerce"
896
+
897
+ #. Found in description header.
898
+ msgid "11. Support for Media Library Permissions"
899
+ msgstr "11. Supporto per le autorizzazioni per la libreria dei media"
900
+
901
+ #. Found in description header.
902
+ msgid "7. Backup and Restore User Roles and Capabilities"
903
+ msgstr "7. Backup e ripristino dei ruoli utente e delle capacità"
904
+
905
+ #. Found in description header.
906
+ msgid "2. Capabilities for any Post Type"
907
+ msgstr "2. Capacità per ogni tipo di articolo"
908
+
909
+ #. Found in changelog list item.
910
+ msgid "Feature : New \"Admin Features\" screen #200"
911
+ msgstr "Feature : New \"Admin Features\" screen #200"
912
+
913
+ #. Found in changelog list item.
914
+ msgid "Change : Role Capabilities screen uses tabs"
915
+ msgstr "Change : Role Capabilities screen uses tabs"
916
+
917
+ #. Found in changelog list item.
918
+ msgid "Fixed : Some security scans flagged an unused file in external library \"chosen\". That file (and other developer documentation files) has been removed"
919
+ msgstr "Fixed : Some security scans flagged an unused file in external library \"chosen\". That file (and other developer documentation files) has been removed"
920
+
921
+ #. Found in changelog list item.
922
+ msgid "Perf : Sync role to all sites - Operation timed out on networks with ~100 sites "
923
+ msgstr "Perf : Sync role to all sites - Operation timed out on networks with ~100 sites "
924
+
925
+ #. Found in changelog list item.
926
+ msgid "Feature : Retain last role selection for Capabilities, Editor Features screens"
927
+ msgstr "Feature : Retain last role selection for Capabilities, Editor Features screens"
928
+
929
+ #. Found in changelog list item.
930
+ msgid "Fixed : PHP Warning if a role is stored without a valid capabilities array"
931
+ msgstr "Fixed : PHP Warning if a role is stored without a valid capabilities array"
932
+
933
+ #. Found in changelog list item.
934
+ msgid "Fixed : If Media \"Create\" capability is negated or un-negated, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure "
935
+ msgstr "Fixed : If Media \"Create\" capability is negated or un-negated, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure "
936
+
937
+ #. Found in changelog list item.
938
+ msgid "Fixed : If Media \"Create\" capability is selected / unselected by clicking Media caption or Create caption, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure"
939
+ msgstr "Fixed : If Media \"Create\" capability is selected / unselected by clicking Media caption or Create caption, the corresponding upload_files checkbox (in Other WP Core Capabilities section) is not toggled, leading to an apparant update failure"
940
+
941
+ #. Found in changelog list item.
942
+ msgid "Feature : Editor Features restriction (new screen to block editor elements per-role)"
943
+ msgstr "Feature : Editor Features restriction (new screen to block editor elements per-role)"
944
+
945
+ #. Found in changelog list item.
946
+ msgid "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row actions"
947
+ msgstr "Change : Permissions - Hide / Unhide Role setting moved to Roles screen row actions"
948
+
949
+ #. Found in changelog list item.
950
+ msgid "Compat : PublishPress - Authors without publish capability could directly publish on the Calendar screen"
951
+ msgstr "Compat : PublishPress - Authors without publish capability could directly publish on the Calendar screen"
952
+
953
+ #. Found in changelog list item.
954
+ msgid "Fixed : Add New User - couldn't display password entry"
955
+ msgstr "Fixed : Add New User - couldn't display password entry"
956
+
957
+ #. Found in changelog list item.
958
+ msgid "Fixed : Fatal error on Capabilities screen if another plugin calls get_editable_roles() too early"
959
+ msgstr "Fixed : Fatal error on Capabilities screen if another plugin calls get_editable_roles() too early"
960
+
961
+ #. Found in changelog list item.
962
+ msgid "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID is not 1"
963
+ msgstr "Fixed : Multisite - \"sync role to all sites\" did not work if main site ID is not 1"
964
+
965
+ #. Found in changelog list item.
966
+ msgid "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities settings "
967
+ msgstr "Feature : Multisite - \"sync options to all sites\" checkbox. Copies \"use create_posts capability\", Type-Specific Capabilities, Taxonomy-Specific Capabilities, Detailed Taxonomy Capabilities settings "
968
+
969
+ #. Found in changelog list item.
970
+ msgid "Fixed : Fatal error on plugin load if Administrator role does not exist"
971
+ msgstr "Fixed : Fatal error on plugin load if Administrator role does not exist"
972
+
973
+ #. Found in changelog list item.
974
+ msgid "Feature : Rename Role sidebar box on Capabilities screen"
975
+ msgstr "Feature : Rename Role sidebar box on Capabilities screen"
976
+
977
+ #. Found in changelog list item.
978
+ msgid "Change : Add New Role retains capitalization as entered for role title (otherwise applies proper case)"
979
+ msgstr "Change : Add New Role retains capitalization as entered for role title (otherwise applies proper case)"
980
+
981
+ #. Found in changelog list item.
982
+ msgid "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; Filtered Post Types"
983
+ msgstr "Compat : PublishPress Permissions - \"Type-Specific Capabilities\" setting was not properly synchronized with Permissions &gt; Settings &gt; Core &gt; Filtered Post Types"
984
+
985
+ #. Found in changelog list item.
986
+ msgid "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly synchronized under some conditions"
987
+ msgstr "Fixed : PublishPress Permissions - Type / Taxonomy settings incorrectly synchronized under some conditions"
988
+
989
+ #. Found in changelog list item.
990
+ msgid "Fixed : Upgrade menu links were not displayed"
991
+ msgstr "Fixed : Upgrade menu links were not displayed"
992
+
993
+ #. Found in changelog list item.
994
+ msgid "Fixed : Fatal error due to missing vendor library folder"
995
+ msgstr "Fixed : Fatal error due to missing vendor library folder"
996
+
997
+ #. Found in changelog list item.
998
+ msgid "Fixed : Language file load failure if plugin directory structure is non-standard"
999
+ msgstr "Fixed : Language file load failure if plugin directory structure is non-standard"
1000
+
1001
+ #. Found in changelog list item.
1002
+ msgid "Fixed : Multisite - Incorrect menu display on sites where main site ID is not 1"
1003
+ msgstr "Fixed : Multisite - Incorrect menu display on sites where main site ID is not 1"
1004
+
1005
+ #. Found in changelog list item.
1006
+ msgid "Fixed : Media Create / upload_files capability could not be removed from role"
1007
+ msgstr "Fixed : Media Create / upload_files capability could not be removed from role"
1008
+
1009
+ #. Found in changelog list item.
1010
+ msgid "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, Deletion, Reading capabilities grid"
1011
+ msgstr "Compat : Advanced Gutenberg - include AG Profile capabilities in Editing, Deletion, Reading capabilities grid"
1012
+
1013
+ #. Found in changelog list item.
1014
+ msgid "Feature : Backup &gt; Restore - filter to display only modified capabilities"
1015
+ msgstr "Feature : Backup &gt; Restore - filter to display only modified capabilities"
1016
+
1017
+ #. Found in changelog list item.
1018
+ msgid "Feature : Improved design and styling for Backup and Restore"
1019
+ msgstr "Feature : Improved design and styling for Backup and Restore"
1020
+
1021
+ #. Found in changelog list item.
1022
+ msgid "Fixed : Review of role backup contents does not show name of current roles which would be removed by restoring backup"
1023
+ msgstr "Fixed : Review of role backup contents does not show name of current roles which would be removed by restoring backup"
1024
+
1025
+ #. Found in changelog list item.
1026
+ msgid "Fixed : Type-Specific Capabilities options included some non-public WordPress post types that don't support capability customization "
1027
+ msgstr "Fixed : Type-Specific Capabilities options included some non-public WordPress post types that don't support capability customization "
1028
+
1029
+ #. Found in changelog list item.
1030
+ msgid "Change : Backup &gt; Restore - Preview displays \"No changes\" below role name where appropriate "
1031
+ msgstr "Change : Backup &gt; Restore - Preview displays \"No changes\" below role name where appropriate "
1032
+
1033
+ #. Found in changelog list item.
1034
+ msgid "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped selection to Last Manual Backup"
1035
+ msgstr "Fixed : Backup &gt; Restore - Clicking label for Initial Backup jumped selection to Last Manual Backup"
1036
+
1037
+ #. Found in changelog list item.
1038
+ msgid "Fixed : Backup &gt; Restore - Negated capabilities were not displayed correctly in restore preview"
1039
+ msgstr "Fixed : Backup &gt; Restore - Negated capabilities were not displayed correctly in restore preview"
1040
+
1041
+ #. Found in changelog list item.
1042
+ msgid "Fixed : PHP warning for invalid foreach argument, on sites with no active_plugins option stored"
1043
+ msgstr "Fixed : PHP warning for invalid foreach argument, on sites with no active_plugins option stored"
1044
+
1045
+ #. Found in changelog list item.
1046
+ msgid "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false positives for post types with map_meta_cap disabled"
1047
+ msgstr "Fixed : Invalid Capabilities - Brief explanatory caption; avoid false positives for post types with map_meta_cap disabled"
1048
+
1049
+ #. Found in changelog list item.
1050
+ msgid "Fixed : uneditable bbPress roles could be opened for editing (require Capabilities Pro)"
1051
+ msgstr "Fixed : uneditable bbPress roles could be opened for editing (require Capabilities Pro)"
1052
+
1053
+ #. Found in changelog list item.
1054
+ msgid "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in Editing Capabilities grid"
1055
+ msgstr "Compat : bbPress - Forum, Topic and Reply capabilities were not displayed in Editing Capabilities grid"
1056
+
1057
+ #. Found in changelog list item.
1058
+ msgid "Change : Adjust some captions, variable names, more selective code execution"
1059
+ msgstr "Change : Adjust some captions, variable names, more selective code execution"
1060
+
1061
+ #. Found in changelog list item.
1062
+ msgid "Change : Capabilities screen - move some sidebar items to Settings screen"
1063
+ msgstr "Change : Capabilities screen - move some sidebar items to Settings screen"
1064
+
1065
+ #. Found in changelog list item.
1066
+ msgid "Change : Capabilities screen - move role selector to top left, eliminate load button"
1067
+ msgstr "Change : Capabilities screen - move role selector to top left, eliminate load button"
1068
+
1069
+ #. Found in changelog list item.
1070
+ msgid "Lang : Fixed handling, activated partial translations in German, Italian, Russian, Spanish, Swedish, Belarusian, Catalan"
1071
+ msgstr "Lang : Fixed handling, activated partial translations in German, Italian, Russian, Spanish, Swedish, Belarusian, Catalan"
1072
+
1073
+ #. Found in changelog list item.
1074
+ msgid "Feature : Multiple role assignment on Add / Edit User screen"
1075
+ msgstr "Feature : Multiple role assignment on Add / Edit User screen"
1076
+
1077
+ #. Found in changelog list item.
1078
+ msgid "Feature : Roles screen"
1079
+ msgstr "Feature : Roles screen"
1080
+
1081
+ #. Found in changelog list item.
1082
+ msgid "Fixed : Capabilities menu was displayed to non-Administrators with no items except \"Upgrade to Pro\""
1083
+ msgstr "Fixed : Capabilities menu was displayed to non-Administrators with no items except \"Upgrade to Pro\""
1084
+
1085
+ #. Found in changelog list item.
1086
+ msgid "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific Capabilities\" were not synchronized with PublishPress Permissions under some conditions"
1087
+ msgstr "Compat : PublishPress Permissions - Post Type selections for \"Type-Specific Capabilities\" were not synchronized with PublishPress Permissions under some conditions"
1088
+
1089
+ #. Found in changelog list item.
1090
+ msgid "Fixed : Fatal error loading Capabilities screen on a small percentage of installations"
1091
+ msgstr "Fixed : Fatal error loading Capabilities screen on a small percentage of installations"
1092
+
1093
+ #. Found in changelog list item.
1094
+ msgid "Change : Apply workaround filters for WordPress edit_published_posts / publish_posts handling only for users who have edit_published_posts capability for current post type"
1095
+ msgstr "Change : Apply workaround filters for WordPress edit_published_posts / publish_posts handling only for users who have edit_published_posts capability for current post type"
1096
+
1097
+ #. Found in changelog list item.
1098
+ msgid "Change : Reinstate WordPress edit_published_posts workaround with correct status filtering behavior"
1099
+ msgstr "Change : Reinstate WordPress edit_published_posts workaround with correct status filtering behavior"
1100
+
1101
+ #. Found in changelog list item.
1102
+ msgid "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect under some conditions"
1103
+ msgstr "Fixed : Checkbox bulk selection on Role Capabilities screen was incorrect under some conditions"
1104
+
1105
+ #. Found in changelog list item.
1106
+ msgid "Fixed : Role name captions on Role Capabilities and Backup Tool screens could not be translated"
1107
+ msgstr "Fixed : Role name captions on Role Capabilities and Backup Tool screens could not be translated"
1108
+
1109
+ #. Found in changelog list item.
1110
+ msgid "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display PublishPress Capabilities section to Super Administrators who don't have a role on the site"
1111
+ msgstr "Fixed : Multisite - On sub-sites, Role Capabilities screen did not display PublishPress Capabilities section to Super Administrators who don't have a role on the site"
1112
+
1113
+ #. Found in changelog list item.
1114
+ msgid "Fixed : Term Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1115
+ msgstr "Fixed : Term Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1116
+
1117
+ #. Found in changelog list item.
1118
+ msgid "Fixed : Category Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1119
+ msgstr "Fixed : Category Assign or Delete capabilities were not effective due to WordPress core forcing default capability requirement"
1120
+
1121
+ #. Found in changelog list item.
1122
+ msgid "Fixed : Add Capability sidebar added custom capability to role immediately, but capability checkbox did not display as checked until reload"
1123
+ msgstr "Fixed : Add Capability sidebar added custom capability to role immediately, but capability checkbox did not display as checked until reload"
1124
+
1125
+ #. Found in changelog list item.
1126
+ msgid "Fixed : Browser reload caused Role Capabilities screen to display default role "
1127
+ msgstr "Fixed : Browser reload caused Role Capabilities screen to display default role "
1128
+
1129
+ #. Found in changelog list item.
1130
+ msgid "Feature : Role Capabilities screen links to PublishPress &gt; Roles for member management"
1131
+ msgstr "Feature : Role Capabilities screen links to PublishPress &gt; Roles for member management"
1132
+
1133
+ #. Found in changelog list item.
1134
+ msgid "Feature : Capabilities link on PublishPress &gt; Roles row opens Role Capabilities screen"
1135
+ msgstr "Feature : Capabilities link on PublishPress &gt; Roles row opens Role Capabilities screen"
1136
+
1137
+ #. Found in changelog list item.
1138
+ msgid "Change : Renamed to PublishPress Capabilities"
1139
+ msgstr "Change : Renamed to PublishPress Capabilities"
1140
+
1141
+ #. Found in changelog list item.
1142
+ msgid "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not work with ENTER keypress (caused screen reload without applying operation)"
1143
+ msgstr "Fixed : Create Role, Copy Role, and Add Capability sidebar functions did not work with ENTER keypress (caused screen reload without applying operation)"
1144
+
1145
+ #. Found in changelog list item.
1146
+ msgid "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to missing strikethrough"
1147
+ msgstr "Fixed : Capability Negation (Denial) bulk unselect link was ambiguous due to missing strikethrough"
1148
+
1149
+ #. Found in changelog list item.
1150
+ msgid "Fixed : Plugin capability sections - pp_set_notification_channel and pp_manage_roles were included in both PublishPress and PublishPress Permissions sections"
1151
+ msgstr "Fixed : Plugin capability sections - pp_set_notification_channel and pp_manage_roles were included in both PublishPress and PublishPress Permissions sections"
1152
+
1153
+ #. Found in changelog list item.
1154
+ msgid "Change : Third Party Plugin Capabilities - always display checkboxes even if capabilities not present in Administrator role"
1155
+ msgstr "Change : Third Party Plugin Capabilities - always display checkboxes even if capabilities not present in Administrator role"
1156
+
1157
+ #. Found in changelog list item.
1158
+ msgid "Fixed : First-time installation: Capabilities menu item not displayed until after Plugins or Users menu clicked "
1159
+ msgstr "Fixed : First-time installation: Capabilities menu item not displayed until after Plugins or Users menu clicked "
1160
+
1161
+ #. Found in changelog list item.
1162
+ msgid "Feature : Auto-backup role and capabilities on each update (and on update to this version)"
1163
+ msgstr "Feature : Auto-backup role and capabilities on each update (and on update to this version)"
1164
+
1165
+ #. Found in changelog list item.
1166
+ msgid "Change : Clarify some messages for plugin access denial"
1167
+ msgstr "Change : Clarify some messages for plugin access denial"
1168
+
1169
+ #. Found in changelog list item.
1170
+ msgid "Fixed : Some functions were not accessible to network Super Administrators without a role on the site"
1171
+ msgstr "Fixed : Some functions were not accessible to network Super Administrators without a role on the site"
1172
+
1173
+ #. Found in changelog list item.
1174
+ msgid "Fixed : Capabilities screen was not accessible to non-Administrators who have \"manage_capabilities\" capability"
1175
+ msgstr "Fixed : Capabilities screen was not accessible to non-Administrators who have \"manage_capabilities\" capability"
1176
+
1177
+ #. Found in changelog list item.
1178
+ msgid "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save with incorrect post status (since 1.8)"
1179
+ msgstr "Fixed : Automatic publication of blank auto-drafts, WooCommerce posts save with incorrect post status (since 1.8)"
1180
+
1181
+ #. Found in changelog list item.
1182
+ msgid "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not updated based on role edit"
1183
+ msgstr "Fixed : Users' inclusion or non-inclusion in Authors dropdown was not updated based on role edit"
1184
+
1185
+ #. Found in changelog list item.
1186
+ msgid "Change : PublishPress icon, footer on Roles and Capabilities screen"
1187
+ msgstr "Change : PublishPress icon, footer on Roles and Capabilities screen"
1188
+
1189
+ #. Found in changelog list item.
1190
+ msgid "Change : Edit Roles link in CME row of Plugins list"
1191
+ msgstr "Change : Edit Roles link in CME row of Plugins list"
1192
+
1193
+ #. Found in changelog list item.
1194
+ msgid "Change : Move Role Capabilities menu item to Permissions menu if PressPermit plugin is active (restoring previous behavior with Press Permit Core)"
1195
+ msgstr "Change : Move Role Capabilities menu item to Permissions menu if PressPermit plugin is active (restoring previous behavior with Press Permit Core)"
1196
+
1197
+ #. Found in changelog list item.
1198
+ msgid "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin Posts / Pages listing"
1199
+ msgstr "Fixed : PHP 5.x : Notice for undefined constant PHP_INT_MIN on wp-admin Posts / Pages listing"
1200
+
1201
+ #. Found in changelog list item.
1202
+ msgid "Fixed : HTML validation errors on Manage Capabilities screen"
1203
+ msgstr "Fixed : HTML validation errors on Manage Capabilities screen"
1204
+
1205
+ #. Found in changelog list item.
1206
+ msgid "Fixed : PHP Notices on Role Capabilities screen for undefined index, under some configurations "
1207
+ msgstr "Fixed : PHP Notices on Role Capabilities screen for undefined index, under some configurations "
1208
+
1209
+ #. Found in changelog list item.
1210
+ msgid "Fixed : Removed add_users from the Core WordPress Capabilities section because it is was replaced by promote_users"
1211
+ msgstr "Fixed : Removed add_users from the Core WordPress Capabilities section because it is was replaced by promote_users"
1212
+
1213
+ #. Found in changelog list item.
1214
+ msgid "Fixed : If a unique edit/delete capability is already defined, don't change the definition"
1215
+ msgstr "Fixed : If a unique edit/delete capability is already defined, don't change the definition"
1216
+
1217
+ #. Found in changelog list item.
1218
+ msgid "Feature : Work around WordPress issue allowing users with edit_published_posts (but not publish_posts) to unpublish published posts"
1219
+ msgstr "Feature : Work around WordPress issue allowing users with edit_published_posts (but not publish_posts) to unpublish published posts"
1220
+
1221
+ #. Found in changelog list item.
1222
+ msgid "Feature : Work around WordPress issue preventing users with edit_published_posts (but not publish_posts) capability from updating published posts (https://core.trac.wordpress.org/ticket/47443)"
1223
+ msgstr "Feature : Work around WordPress issue preventing users with edit_published_posts (but not publish_posts) capability from updating published posts (https://core.trac.wordpress.org/ticket/47443)"
1224
+
1225
+ #. Found in changelog list item.
1226
+ msgid "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" filter to register their capabilities "
1227
+ msgstr "Feature : Plugin API - plugins can hook into \"cme_plugin_capabilities\" filter to register their capabilities "
1228
+
1229
+ #. Found in changelog list item.
1230
+ msgid "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in sections on role editor screen"
1231
+ msgstr "Feature : WooCommerce, PublishPress, PressPermit capabilities grouped in sections on role editor screen"
1232
+
1233
+ #. Found in changelog list item.
1234
+ msgid "Fixed : Correct some irregularities in CME admin menu item display"
1235
+ msgstr "Fixed : Correct some irregularities in CME admin menu item display"
1236
+
1237
+ #. Found in changelog list item.
1238
+ msgid "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; Capabilities\")"
1239
+ msgstr "Change : Revert menu captions to previous behavior (\"Permissions &gt; Role Capabilities\" if Press Permit Core is active, otherwise \"Users &gt; Capabilities\")"
1240
+
1241
+ #. Found in changelog list item.
1242
+ msgid "Change : Don't allow non-Administrator to edit Administrators, even if Administrator role level is set to 0"
1243
+ msgstr "Change : Don't allow non-Administrator to edit Administrators, even if Administrator role level is set to 0"
1244
+
1245
+ #. Found in changelog list item.
1246
+ msgid "Fixed : PHP warning for deprecated function WP_Roles::reinit"
1247
+ msgstr "Fixed : PHP warning for deprecated function WP_Roles::reinit"
1248
+
1249
+ #. Found in changelog list item.
1250
+ msgid "Fixed : Potential vulnerability in wp-admin (but exposure was only to users with role editing capability)"
1251
+ msgstr "Fixed : Potential vulnerability in wp-admin (but exposure was only to users with role editing capability)"
1252
+
1253
+ #. Found in changelog list item.
1254
+ msgid "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME is activated"
1255
+ msgstr "Compat : PHP 7.2 - warning for deprecated function if a second copy of CME is activated"
1256
+
1257
+ #. Found in changelog list item.
1258
+ msgid "Fixed : Back button caused mismatching role dropdown selection"
1259
+ msgstr "Fixed : Back button caused mismatching role dropdown selection"
1260
+
1261
+ #. Found in changelog list item.
1262
+ msgid "Feature : Backup Tool can also display contents of role backups"
1263
+ msgstr "Feature : Backup Tool can also display contents of role backups"
1264
+
1265
+ #. Found in changelog list item.
1266
+ msgid "Feature : When roles are manually backed up, also retain initial role backup"
1267
+ msgstr "Feature : When roles are manually backed up, also retain initial role backup"
1268
+
1269
+ #. Found in changelog list item.
1270
+ msgid "Feature : Automatically save backup of WP roles on plugin activation or update"
1271
+ msgstr "Feature : Automatically save backup of WP roles on plugin activation or update"
1272
+
1273
+ #. Found in changelog list item.
1274
+ msgid "Change : Links to Related Permissions Plugins in sidebar on Roles and Capabilities screen"
1275
+ msgstr "Change : Links to Related Permissions Plugins in sidebar on Roles and Capabilities screen"
1276
+
1277
+ #. Found in changelog list item.
1278
+ msgid "Change : Copyrights, onscreen link for PublishPress ownership"
1279
+ msgstr "Change : Copyrights, onscreen link for PublishPress ownership"
1280
+
1281
+ #. Found in changelog list item.
1282
+ msgid "Change : Minor code cleanup and refactor"
1283
+ msgstr "Change : Minor code cleanup and refactor"
1284
+
1285
+ #. Found in changelog list item.
1286
+ msgid "Feature : Link to Roles and Capabilities screen from Backup Tool"
1287
+ msgstr "Feature : Link to Roles and Capabilities screen from Backup Tool"
1288
+
1289
+ #. Found in changelog list item.
1290
+ msgid "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
1291
+ msgstr "Feature : Link to Backup Tool from sidebar of Roles and Capabilities screen"
1292
+
1293
+ #. Found in changelog list item.
1294
+ msgid "Feature : WooCommerce - If current user has duplicate_products capability, make Woo honor it"
1295
+ msgstr "Feature : WooCommerce - If current user has duplicate_products capability, make Woo honor it"
1296
+
1297
+ #. Found in changelog list item.
1298
+ msgid "Change : Thickbox popups for related plugins"
1299
+ msgstr "Change : Thickbox popups for related plugins"
1300
+
1301
+ #. Found in changelog list item.
1302
+ msgid "Change : Reinstate Press Permit description link "
1303
+ msgstr "Change : Reinstate Press Permit description link "
1304
+
1305
+ #. Found in changelog list item.
1306
+ msgid "Feature : Additional save button at top of Roles and Capabilities screen!"
1307
+ msgstr "Feature : Additional save button at top of Roles and Capabilities screen!"
1308
+
1309
+ #. Found in changelog list item.
1310
+ msgid "Feature : If read capability is missing from a standard role, display warning and instant fix link "
1311
+ msgstr "Feature : If read capability is missing from a standard role, display warning and instant fix link "
1312
+
1313
+ #. Found in changelog list item.
1314
+ msgid "Feature : Prevent read capability from being removed from a standard role"
1315
+ msgstr "Feature : Prevent read capability from being removed from a standard role"
1316
+
1317
+ #. Found in changelog list item.
1318
+ msgid "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
1319
+ msgstr "Compat : Press Permit: new plugin page slugs in Press Permit Core 2.7"
1320
+
1321
+ #. Found in changelog list item.
1322
+ msgid "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"
1323
+ msgstr "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"
1324
+
1325
+ #. Found in changelog list item.
1326
+ msgid "Feature : WooCommerce - Ensure orders can be edited or added based on edit_shop_orders / create_shop_orders capability"
1327
+ msgstr "Feature : WooCommerce - Ensure orders can be edited or added based on edit_shop_orders / create_shop_orders capability"
1328
+
1329
+ #. Found in changelog list item.
1330
+ msgid "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" causes term assign, edit and deletion capabilities to be required and credited separate from management capability"
1331
+ msgstr "Feature : New right sidebar setting: \"Detailed Taxonomy Capabilities\" causes term assign, edit and deletion capabilities to be required and credited separate from management capability"
1332
+
1333
+ #. Found in changelog list item.
1334
+ msgid "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" ensures a distinct manage capability for selected taxonomies"
1335
+ msgstr "Feature : New right sidebar setting: \"Taxonomy-Specific Capabilities\" ensures a distinct manage capability for selected taxonomies"
1336
+
1337
+ #. Found in changelog list item.
1338
+ msgid "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for selected post types (without activating Press Permit Core)."
1339
+ msgstr "Feature : New right sidebar setting: \"Type-Specific Capabilities\" for selected post types (without activating Press Permit Core)."
1340
+
1341
+ #. Found in changelog list item.
1342
+ msgid "Fixed : Press Permit integration - cannot load Permissions &gt; Role Capabilities with Press Permit Core &lt; 2.7"
1343
+ msgstr "Fixed : Press Permit integration - cannot load Permissions &gt; Role Capabilities with Press Permit Core &lt; 2.7"
1344
+
1345
+ #. Found in changelog list item.
1346
+ msgid "Compat : WooCommerce integration - Users lacking access to the \"Add New Order\" submenu could not access Posts, Pages, Products or any other Post Type listing. This occurred if \"use create_posts\" option enabled and user lacks the create capability for Orders. "
1347
+ msgstr "Compat : WooCommerce integration - Users lacking access to the \"Add New Order\" submenu could not access Posts, Pages, Products or any other Post Type listing. This occurred if \"use create_posts\" option enabled and user lacks the create capability for Orders. "
1348
+
1349
+ #. Found in changelog list item.
1350
+ msgid "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator with WooCommerce active"
1351
+ msgstr "Fixed : PHP Notices on Roles and Capabilities screen for non-Administrator with WooCommerce active"
1352
+
1353
+ #. Found in changelog list item.
1354
+ msgid "Fixed : Work around WP quirk of completely blocking admin page access for a post type if user lacks create capability for the post type and there are no other accessible items on the menu."
1355
+ msgstr "Fixed : Work around WP quirk of completely blocking admin page access for a post type if user lacks create capability for the post type and there are no other accessible items on the menu."
1356
+
1357
+ #. Found in changelog list item.
1358
+ msgid "Fixed : Negative role capabilities could not be directly unset (had to be checked, saved, then unchecked)."
1359
+ msgstr "Fixed : Negative role capabilities could not be directly unset (had to be checked, saved, then unchecked)."
1360
+
1361
+ #. Found in changelog list item.
1362
+ msgid "Fixed : On some sites, capabilities added dynamically by other code were forced into stored role definition (and could not be removed)."
1363
+ msgstr "Fixed : On some sites, capabilities added dynamically by other code were forced into stored role definition (and could not be removed)."
1364
+
1365
+ #. Found in changelog list item.
1366
+ msgid "Fixed : User editing was improperly blocked in some cases"
1367
+ msgstr "Fixed : User editing was improperly blocked in some cases"
1368
+
1369
+ #. Found in changelog list item.
1370
+ msgid "First public version."
1371
+ msgstr "Prima versione pubblica."
1372
+
1373
+ #. Found in changelog list item.
1374
+ msgid "Updated Alkivia Framework."
1375
+ msgstr "Updated Alkivia Framework."
1376
+
1377
+ #. Found in changelog list item.
1378
+ msgid "Some code improvements."
1379
+ msgstr "Some code improvements."
1380
+
1381
+ #. Found in changelog list item.
1382
+ msgid "Role deletion added."
1383
+ msgstr "Role deletion added."
1384
+
1385
+ #. Found in changelog list item.
1386
+ msgid "Added backup/restore tool."
1387
+ msgstr "Added backup/restore tool."
1388
+
1389
+ #. Found in changelog list item.
1390
+ msgid "Updated Framework."
1391
+ msgstr "Updated Framework."
1392
+
1393
+ #. Found in changelog list item.
1394
+ msgid "Corrected internal links."
1395
+ msgstr "Corrected internal links."
1396
+
1397
+ #. Found in changelog list item.
1398
+ msgid "Coding Standards."
1399
+ msgstr "Coding Standards."
1400
+
1401
+ #. Found in changelog list item.
1402
+ msgid "Added Russian translation."
1403
+ msgstr "Added Russian translation."
1404
+
1405
+ #. Found in changelog list item.
1406
+ msgid "Added German and Belorussian translations."
1407
+ msgstr "Added German and Belorussian translations."
1408
+
1409
+ #. Found in changelog list item.
1410
+ msgid "Added Italian translation."
1411
+ msgstr "Added Italian translation."
1412
+
1413
+ #. Found in changelog list item.
1414
+ msgid "Tested up to WP 2.9.1."
1415
+ msgstr "Tested up to WP 2.9.1."
1416
+
1417
+ #. Found in changelog list item.
1418
+ msgid "Changed license to GPL version 2."
1419
+ msgstr "Changed license to GPL version 2."
1420
+
1421
+ #. Found in changelog list item.
1422
+ msgid "Migrated to the new Alkivia Framework."
1423
+ msgstr "Migrated to the new Alkivia Framework."
1424
+
1425
+ #. Found in changelog list item.
1426
+ msgid "Solved an incompatibility with Chameleon theme."
1427
+ msgstr "Solved an incompatibility with Chameleon theme."
1428
+
1429
+ #. Found in changelog list item.
1430
+ msgid "Cannot assign to users a role with more capabilities than current user."
1431
+ msgstr "Cannot assign to users a role with more capabilities than current user."
1432
+
1433
+ #. Found in changelog list item.
1434
+ msgid "Cannot edit users with more capabilities than current user."
1435
+ msgstr "Cannot edit users with more capabilities than current user."
1436
+
1437
+ #. Found in changelog list item.
1438
+ msgid "Fixed a bug where administrators could not create or manage other administrators."
1439
+ msgstr "Fixed a bug where administrators could not create or manage other administrators."
1440
+
1441
+ #. Found in changelog list item.
1442
+ msgid "Added Swedish translation."
1443
+ msgstr "Added Swedish translation."
1444
+
1445
+ #. Found in changelog list item.
1446
+ msgid "Reduce memory usage by loading framework and plugin code only when needed"
1447
+ msgstr "Reduce memory usage by loading framework and plugin code only when needed"
1448
+
1449
+ #. Found in changelog list item.
1450
+ msgid "Show capabilities which Press Permit adds to the role by supplemental type-specific role assignment"
1451
+ msgstr "Show capabilities which Press Permit adds to the role by supplemental type-specific role assignment"
1452
+
1453
+ #. Found in changelog list item.
1454
+ msgid "Press Permit integration: externally (dis)enable Post Types, Taxonomies for PP filtering (which forces type-specific capability definitions)"
1455
+ msgstr "Press Permit integration: externally (dis)enable Post Types, Taxonomies for PP filtering (which forces type-specific capability definitions)"
1456
+
1457
+ #. Found in changelog list item.
1458
+ msgid "Fixed : PHP Warnings for unchecked capabilities"
1459
+ msgstr "Fixed : PHP Warnings for unchecked capabilities"
1460
+
1461
+ #. Found in changelog list item.
1462
+ msgid "Don't allow a non-Administrator to add or remove a capability they don't have"
1463
+ msgstr "Don't allow a non-Administrator to add or remove a capability they don't have"
1464
+
1465
+ #. Found in changelog list item.
1466
+ msgid "Clarified sidebar captions"
1467
+ msgstr "Clarified sidebar captions"
1468
+
1469
+ #. Found in changelog list item.
1470
+ msgid "Editing UI separates WP core capabilities and 3rd party capabilities"
1471
+ msgstr "Editing UI separates WP core capabilities and 3rd party capabilities"
1472
+
1473
+ #. Found in changelog list item.
1474
+ msgid "Organized capabilities UI by post type and operation"
1475
+ msgstr "Organized capabilities UI by post type and operation"
1476
+
1477
+ #. Found in changelog list item.
1478
+ msgid "Press Permit integration: if role definitions are reset to WP defaults, also repopulate PP capabilities (pp_manage_settings, etc.)"
1479
+ msgstr "Press Permit integration: if role definitions are reset to WP defaults, also repopulate PP capabilities (pp_manage_settings, etc.)"
1480
+
1481
+ #. Found in changelog list item.
1482
+ msgid "https compatibility: use content_url(), plugins_url()"
1483
+ msgstr "https compatibility: use content_url(), plugins_url()"
1484
+
1485
+ #. Found in changelog list item.
1486
+ msgid "Press Permit integration: roles can be marked for supplemental assignment only (and suppressed from WP role assignment dropdown, requires PP 1.0-beta1.4)"
1487
+ msgstr "Press Permit integration: roles can be marked for supplemental assignment only (and suppressed from WP role assignment dropdown, requires PP 1.0-beta1.4)"
1488
+
1489
+ #. Found in changelog list item.
1490
+ msgid "Language: updated .pot file"
1491
+ msgstr "Language: updated .pot file"
1492
+
1493
+ #. Found in changelog list item.
1494
+ msgid "Press Permit integration: automatically store a backup copy of each role's last saved capability set so they can be reinstated if necessary (currently for bbPress)"
1495
+ msgstr "Press Permit integration: automatically store a backup copy of each role's last saved capability set so they can be reinstated if necessary (currently for bbPress)"
1496
+
1497
+ #. Found in changelog list item.
1498
+ msgid "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts even if it was defined to the be same as cap-&gt;edit_posts"
1499
+ msgstr "Fixed : Separate checkbox was displayed for cap-&gt;edit_published_posts even if it was defined to the be same as cap-&gt;edit_posts"
1500
+
1501
+ #. Found in changelog list item.
1502
+ msgid "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
1503
+ msgstr "Fixed : Menu item change to \"Role Capabilities\" broke existing translations"
1504
+
1505
+ #. Found in changelog list item.
1506
+ msgid "Fixed : On translated sites, roles could not be edited"
1507
+ msgstr "Fixed : On translated sites, roles could not be edited"
1508
+
1509
+ #. Found in changelog list item.
1510
+ msgid "Press Permit integration: If capability is granted by the role's Permit Group, highlight it as green with a descriptive caption title, but leave checkbox enabled for display/editing of role defintion setting (previous behavior caused capability to be stripped out of WP role definition under some PP configurations)"
1511
+ msgstr "Press Permit integration: If capability is granted by the role's Permit Group, highlight it as green with a descriptive caption title, but leave checkbox enabled for display/editing of role defintion setting (previous behavior caused capability to be stripped out of WP role definition under some PP configurations)"
1512
+
1513
+ #. Found in changelog list item.
1514
+ msgid "Fixed : Capability labels in \"Other WordPress\" section did not toggle checkbox selection"
1515
+ msgstr "Fixed : Capability labels in \"Other WordPress\" section did not toggle checkbox selection"
1516
+
1517
+ #. Found in changelog list item.
1518
+ msgid "Fixed : Capabilities were needlessly re-saved on role load"
1519
+ msgstr "Fixed : Capabilities were needlessly re-saved on role load"
1520
+
1521
+ #. Found in changelog list item.
1522
+ msgid "Fixed : Role update and copy failed if currently stored capability array is corrupted"
1523
+ msgstr "Fixed : Role update and copy failed if currently stored capability array is corrupted"
1524
+
1525
+ #. Found in changelog list item.
1526
+ msgid "Compat : Press Permit + bbPress - customized role capabilities were not properly maintained on bbPress activation / deactivation, in some scenarios"
1527
+ msgstr "Compat : Press Permit + bbPress - customized role capabilities were not properly maintained on bbPress activation / deactivation, in some scenarios"
1528
+
1529
+ #. Found in changelog list item.
1530
+ msgid "Compat : bbPress 2.2 (supports customization of dynamic forum role capabilities)"
1531
+ msgstr "Compat : bbPress 2.2 (supports customization of dynamic forum role capabilities)"
1532
+
1533
+ #. Found in changelog list item.
1534
+ msgid "Compat : Press Permit - flagging of roles as \"supplemental assignment only\" was not saved"
1535
+ msgstr "Compat : Press Permit - flagging of roles as \"supplemental assignment only\" was not saved"
1536
+
1537
+ #. Found in changelog list item.
1538
+ msgid "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used on a bbPress role, caused creation of an invalid role"
1539
+ msgstr "Compat : bbPress + Press Permit - \"Add Capability\" form failed when used on a bbPress role, caused creation of an invalid role"
1540
+
1541
+ #. Found in changelog list item.
1542
+ msgid "Compat : Press Permit - \"supplemental only\" option was always enabled for newly created and copied roles, regardless of checkbox setting near Create/Copy button"
1543
+ msgstr "Compat : Press Permit - \"supplemental only\" option was always enabled for newly created and copied roles, regardless of checkbox setting near Create/Copy button"
1544
+
1545
+ #. Found in changelog list item.
1546
+ msgid "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" textbox caused the checkbox to be available but not selected"
1547
+ msgstr "Compat : bbPress + Press Permit - Adding a capability via the \"Add Cap\" textbox caused the checkbox to be available but not selected"
1548
+
1549
+ #. Found in changelog list item.
1550
+ msgid "Compat : bbPress + Press Permit - Modified bbPress role capabilities were not redisplayed following save, required reload"
1551
+ msgstr "Compat : bbPress + Press Permit - Modified bbPress role capabilities were not redisplayed following save, required reload"
1552
+
1553
+ #. Found in changelog list item.
1554
+ msgid "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines create_posts capabilities (requires Press Permit)"
1555
+ msgstr "Feature : \"Use create_posts capability\" checkbox in sidebar auto-defines create_posts capabilities (requires Press Permit)"
1556
+
1557
+ #. Found in changelog list item.
1558
+ msgid "Feature : If create_posts capabilities are defined, organize checkboxes into a column alongside edit_posts"
1559
+ msgstr "Feature : If create_posts capabilities are defined, organize checkboxes into a column alongside edit_posts"
1560
+
1561
+ #. Found in changelog list item.
1562
+ msgid "Fixed : Role capabilities were not updated / refreshed properly on multisite installations"
1563
+ msgstr "Fixed : Role capabilities were not updated / refreshed properly on multisite installations"
1564
+
1565
+ #. Found in changelog list item.
1566
+ msgid "Change : Reduced download size by moving screenshots to assets folder of project folder"
1567
+ msgstr "Change : Reduced download size by moving screenshots to assets folder of project folder"
1568
+
1569
+ #. Found in changelog list item.
1570
+ msgid "Maint : Stop using $GLOBALS superglobal"
1571
+ msgstr "Maint : Stop using $GLOBALS superglobal"
1572
+
1573
+ #. Found in changelog list item.
1574
+ msgid "Compat : Press Permit - green background around capabilities which "
1575
+ msgstr "Compat : Press Permit - green background around capabilities which "
1576
+
1577
+ #. Found in changelog list item.
1578
+ msgid "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
1579
+ msgstr "Compat : Press Permit - \"supplemental only\" option stored redundant entries"
1580
+
1581
+ #. Found in changelog list item.
1582
+ msgid "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" settings update"
1583
+ msgstr "Compat : Press Permit - PHP Warning on \"Force Type-Specific Capabilities\" settings update"
1584
+
1585
+ #. Found in changelog list item.
1586
+ msgid "Compat : Press Permit - PHP Warning on role save"
1587
+ msgstr "Compat : Press Permit - PHP Warning on role save"
1588
+
1589
+ #. Found in changelog list item.
1590
+ msgid "Fixed : Failure to save capability changes, on some versions of PHP"
1591
+ msgstr "Fixed : Failure to save capability changes, on some versions of PHP"
1592
+
1593
+ #. Found in changelog list item.
1594
+ msgid "Perf : Eliminated unused framework code (reduced typical wp-admin memory usage by 0.6 MB)"
1595
+ msgstr "Perf : Eliminated unused framework code (reduced typical wp-admin memory usage by 0.6 MB)"
1596
+
1597
+ #. Found in changelog list item.
1598
+ msgid "Change : Press Permit promotional message includes link to display further info"
1599
+ msgstr "Change : Press Permit promotional message includes link to display further info"
1600
+
1601
+ #. Found in changelog list item.
1602
+ msgid "Compat : Press Permit - if a role is marked as hidden, also default it for use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated and Advanced Settings enabled)"
1603
+ msgstr "Compat : Press Permit - if a role is marked as hidden, also default it for use by PP Pro as a Pattern Role (when PP Collaborative Editing is activated and Advanced Settings enabled)"
1604
+
1605
+ #. Found in changelog list item.
1606
+ msgid "Fixed : jQuery notices for deprecated methods on Edit Role screen"
1607
+ msgstr "Fixed : jQuery notices for deprecated methods on Edit Role screen"
1608
+
1609
+ #. Found in changelog list item.
1610
+ msgid "Fixed : Term deletion capability was not included in taxonomies grid even if defined"
1611
+ msgstr "Fixed : Term deletion capability was not included in taxonomies grid even if defined"
1612
 
1613
+ #. Found in changelog list item.
1614
+ msgid "Change : Clarified English captions on Backup Tool screen"
1615
+ msgstr "Change : Clarified English captions on Backup Tool screen"
1616
 
1617
+ #. Found in changelog list item.
1618
+ msgid "Fixed : Role reset to WP defaults did not work, caused a PHP error / white screen"
1619
+ msgstr "Fixed : Role reset to WP defaults did not work, caused a PHP error / white screen"
1620
 
1621
+ #. Found in changelog list item.
1622
+ msgid "Feature : Backup / Restore tool requires \"restore_roles\" capability or super admin status"
1623
+ msgstr "Feature : Backup / Restore tool requires \"restore_roles\" capability or super admin status"
1624
 
1625
+ #. Found in changelog list item.
1626
+ msgid "Feature : Multisite - Copy a role definition to new (future) sites on a network"
1627
+ msgstr "Feature : Multisite - Copy a role definition to new (future) sites on a network"
1628
 
1629
+ #. Found in changelog list item.
1630
+ msgid "Feature : Multisite - Copy a role definition to all current sites on a network"
1631
+ msgstr "Feature : Multisite - Copy a role definition to all current sites on a network"
1632
 
1633
+ #. Found in changelog list item.
1634
+ msgid "Feature : Support negative capabilities (storage to wp_roles array with false value)"
1635
+ msgstr "Feature : Support negative capabilities (storage to wp_roles array with false value)"
1636
 
1637
+ #. Found in changelog list item.
1638
+ msgid "Fixed : Non-administrators with user editing capabilities could give new users a role with a higher level than their own (including Administrator)"
1639
+ msgstr "Fixed : Non-administrators with user editing capabilities could give new users a role with a higher level than their own (including Administrator)"
1640
 
1641
+ #. Found in changelog list item.
1642
+ msgid "Fixed : Network Super Administrators without an Administrator role on a particular site could not assign an Administrator role to other users of that site"
1643
+ msgstr "Fixed : Network Super Administrators without an Administrator role on a particular site could not assign an Administrator role to other users of that site"
1644
 
1645
+ #. Found in changelog list item.
1646
+ msgid "Lang : Updated .pot and .po files"
1647
+ msgstr "Lang : Updated .pot and .po files"
1648
 
1649
+ #. Found in changelog list item.
1650
+ msgid "Lang : Fixed erroneous text_domain argument for numerous strings"
1651
+ msgstr "Lang : Fixed erroneous text_domain argument for numerous strings"
1652
 
1653
+ #. Found in changelog list item.
1654
+ msgid "Perf : Don't output wp-admin CSS on non-CME screens"
1655
+ msgstr "Perf : Don't output wp-admin CSS on non-CME screens"
1656
 
1657
+ #. Found in changelog list item.
1658
+ msgid "Fixed : CSS caused formatting issues around wp-admin Update button on some installations"
1659
+ msgstr "Fixed : CSS caused formatting issues around wp-admin Update button on some installations"
1660
 
1661
+ #. Found in changelog list item.
1662
+ msgid "Change : If user_level of Administrator role was cleared, non-Administrators with user editing capabilities could create/edit/delete Administrators. Administrator role is now implicitly treated as level 10."
1663
+ msgstr "Change : If user_level of Administrator role was cleared, non-Administrators with user editing capabilities could create/edit/delete Administrators. Administrator role is now implicitly treated as level 10."
1664
 
1665
+ #. Found in changelog list item.
1666
+ msgid "Compat : Support third party display of available capabilities via capsman_get_capabilities or members_get_capabilities filter"
1667
+ msgstr "Compat : Support third party display of available capabilities via capsman_get_capabilities or members_get_capabilities filter"
1668
 
1669
+ #. Found in changelog list item.
1670
+ msgid "Compat : Press Permit Core - Permission Group refresh was not triggered if Press Permit Core is inactive when CME deletes a role definition"
1671
+ msgstr "Compat : Press Permit Core - Permission Group refresh was not triggered if Press Permit Core is inactive when CME deletes a role definition"
1672
 
1673
+ #. Found in changelog list item.
1674
+ msgid "Fixed : Deletion of a third party plugin role could cause users to be demoted to Subscriber inappropriately"
1675
+ msgstr "Fixed : Deletion of a third party plugin role could cause users to be demoted to Subscriber inappropriately"
1676
 
1677
+ #. Found in changelog list item.
1678
+ msgid "Fixed : On single-site installations, non-Administrators with delete_users capability could give new users an Administrator role (since 1.5.2) "
1679
+ msgstr "Fixed : On single-site installations, non-Administrators with delete_users capability could give new users an Administrator role (since 1.5.2) "
1680
 
1681
+ #. Found in changelog list item.
1682
+ msgid "Lang : Changed text domain for language pack conformance"
1683
+ msgstr "Lang : Changed text domain for language pack conformance"
1684
 
1685
+ #. Found in changelog list item.
1686
+ msgid "Fixed : Non-administrators could not assign their role to other users (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1687
+ msgstr "Fixed : Non-administrators could not assign their role to other users (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1688
 
1689
+ #. Found in changelog list item.
1690
+ msgid "Fixed : Non-administrators could not edit other users with their role (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1691
+ msgstr "Fixed : Non-administrators could not edit other users with their role (define constant CME_LEGACY_USER_EDIT_FILTER to retain previous behavior)"
1692
 
1693
+ #. Found in changelog list item.
1694
+ msgid "Fixed : Non-administrators' user editing capabilities were blocked if Press Permit Core was also active"
1695
+ msgstr "Fixed : Non-administrators' user editing capabilities were blocked if Press Permit Core was also active"
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: user roles, capabilities, permissions, admin menus, post editing, post typ
7
  Requires at least: 4.9.7
8
  Tested up to: 5.8
9
  Requires PHP: 5.6.20
10
- Stable tag: 2.3.2
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
@@ -409,6 +409,13 @@ Fixed : Security issue. Please update.
409
 
410
  == Changelog ==
411
 
 
 
 
 
 
 
 
412
  = 2.3.2 - 8 Dec 2021 =
413
  * Feature : Filter Capabilities display by post type or text entry
414
  * Feature : Editor Features - Restrict editor elements for custom post types
7
  Requires at least: 4.9.7
8
  Tested up to: 5.8
9
  Requires PHP: 5.6.20
10
+ Stable tag: 2.3.3
11
  License: GPLv3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
13
 
409
 
410
  == Changelog ==
411
 
412
+ = 2.3.3 - 13 Jan 2022 =
413
+ * Fixed : Capability names with dashes could not be added
414
+ * Fixed : After role rename, title in dropdown does not refresh
415
+ * Fixed : Input sanitization consistency
416
+ * Fixed : Escape output variables
417
+ * Lang : Spanish, French, Italian
418
+
419
  = 2.3.2 - 8 Dec 2021 =
420
  * Feature : Filter Capabilities display by post type or text entry
421
  * Feature : Editor Features - Restrict editor elements for custom post types