Advanced Access Manager - Version 3.7.5

Version Description

  • Added AAM Content Teaser extension
  • Added LIMIT option to Posts & Pages access forms to support Teaser feature
  • Bug fixing
  • Improved UI
  • Added ability to show/hide admin bar with show_admin_bar capability
Download this release

Release Info

Developer vasyl_m
Plugin Icon 128x128 Advanced Access Manager
Version 3.7.5
Comparing to
See all releases

Code changes from version 3.7.1 to 3.7.5

Application/Backend/Feature/Metabox.php CHANGED
@@ -173,6 +173,8 @@ class AAM_Backend_Feature_Metabox extends AAM_Backend_Feature_Abstract {
173
  * @return type
174
  */
175
  public function getMetaboxList() {
 
 
176
  $cache = AAM_Core_API::getOption('aam_metabox_cache', array());
177
  $subject = AAM_Backend_View::getSubject();
178
 
@@ -187,6 +189,14 @@ class AAM_Backend_Feature_Metabox extends AAM_Backend_Feature_Abstract {
187
  $response = $cache;
188
  }
189
 
 
 
 
 
 
 
 
 
190
  return $response;
191
  }
192
 
173
  * @return type
174
  */
175
  public function getMetaboxList() {
176
+ global $wp_post_types;
177
+
178
  $cache = AAM_Core_API::getOption('aam_metabox_cache', array());
179
  $subject = AAM_Backend_View::getSubject();
180
 
189
  $response = $cache;
190
  }
191
 
192
+ //filter non-existing metaboxes
193
+ foreach(array_keys($response) as $id) {
194
+ if (!in_array($id, array('dashboard', 'widgets'))
195
+ && empty($wp_post_types[$id])) {
196
+ unset($response[$id]);
197
+ }
198
+ }
199
+
200
  return $response;
201
  }
202
 
Application/Backend/Feature/ProductList.php CHANGED
@@ -29,6 +29,17 @@ return array(
29
  'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Redirect'),
30
  'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Redirect')
31
  ),
 
 
 
 
 
 
 
 
 
 
 
32
  array(
33
  'title' => 'AAM Role Hierarchy',
34
  'id' => 'AAM Role Hierarchy',
@@ -54,10 +65,9 @@ return array(
54
  'title' => 'AAM Complete Package',
55
  'id' => 'AAM Complete Package',
56
  'type' => 'commercial',
57
- 'price' => '$65 <small>USD</small>',
58
- 'new' => true,
59
- 'description' => 'Get list of all available premium extensions in one package and <strong>save $5 USD</strong>.',
60
- 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=AJ6JMQ4CGSS9E',
61
  'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Complete Package'),
62
  'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Complete Package')
63
  ),
29
  'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Redirect'),
30
  'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Redirect')
31
  ),
32
+ array(
33
+ 'title' => 'AAM Content Teaser',
34
+ 'id' => 'AAM Content Teaser',
35
+ 'type' => 'commercial',
36
+ 'price' => '$10 <small>USD</small>',
37
+ 'new' => true,
38
+ 'description' => 'Define custom teaser message for each role, individual user or visitors. <a href="http://vasyltech.com/blog/aam-content-teaser" target="_blank">Read more.</a>',
39
+ 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3NG4CZX3WEH7L',
40
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Content Teaser'),
41
+ 'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Content Teaser')
42
+ ),
43
  array(
44
  'title' => 'AAM Role Hierarchy',
45
  'id' => 'AAM Role Hierarchy',
65
  'title' => 'AAM Complete Package',
66
  'id' => 'AAM Complete Package',
67
  'type' => 'commercial',
68
+ 'price' => '$70 <small>USD</small>',
69
+ 'description' => 'Get list of all available premium extensions in one package and <strong>save $10 USD</strong>.',
70
+ 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=THJWEJR3URR8L',
 
71
  'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Complete Package'),
72
  'version' => AAM_Core_Repository::getInstance()->getExtensionVersion('AAM Complete Package')
73
  ),
Application/Backend/Feature/Redirect.php CHANGED
@@ -20,7 +20,7 @@ class AAM_Backend_Feature_Redirect extends AAM_Backend_Feature_Abstract {
20
  */
21
  public function save() {
22
  $param = AAM_Core_Request::post('param');
23
- $value = filter_var(AAM_Core_Request::post('value'));
24
  $subject = AAM_Backend_View::getSubject();
25
 
26
  if ($this->isAdministrator()) {
@@ -59,12 +59,16 @@ class AAM_Backend_Feature_Redirect extends AAM_Backend_Feature_Abstract {
59
  * @return type
60
  */
61
  public function getOption($option, $default = null) {
62
- return apply_filters(
63
- 'aam-filter-redirect-option',
64
- AAM_Core_Config::get($option, $default),
65
- $option,
66
- AAM_Backend_View::getSubject()
67
- );
 
 
 
 
68
  }
69
 
70
  /**
20
  */
21
  public function save() {
22
  $param = AAM_Core_Request::post('param');
23
+ $value = AAM_Core_Request::post('value');
24
  $subject = AAM_Backend_View::getSubject();
25
 
26
  if ($this->isAdministrator()) {
59
  * @return type
60
  */
61
  public function getOption($option, $default = null) {
62
+ $value = AAM_Core_Config::get($option, $default);
63
+
64
+ if (!$this->isAdministrator()) {
65
+ $subject = AAM_Backend_View::getSubject();
66
+ $value = apply_filters(
67
+ 'aam-filter-redirect-option', $value, $option, $subject
68
+ );
69
+ }
70
+
71
+ return $value;
72
  }
73
 
74
  /**
Application/Backend/Feature/Teaser.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * ======================================================================
5
+ * LICENSE: This file is subject to the terms and conditions defined in *
6
+ * file 'license.txt', which is part of this source code package. *
7
+ * ======================================================================
8
+ */
9
+
10
+ /**
11
+ * Content teaser manager
12
+ *
13
+ * @package AAM
14
+ * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15
+ */
16
+ class AAM_Backend_Feature_Teaser extends AAM_Backend_Feature_Abstract {
17
+
18
+ /**
19
+ *
20
+ */
21
+ public function save() {
22
+ $param = AAM_Core_Request::post('param');
23
+ $value = AAM_Core_Request::post('value');
24
+ $subject = AAM_Backend_View::getSubject();
25
+
26
+ if ($this->isAdministrator()) {
27
+ AAM_Core_Config::set($param, $value);
28
+ } else {
29
+ do_action('aam-action-teaser-save', $subject, $param, $value);
30
+ }
31
+
32
+ return json_encode(array('status' => 'success'));
33
+ }
34
+
35
+ /**
36
+ *
37
+ * @return type
38
+ */
39
+ public function reset() {
40
+ do_action('aam-action-teaser-reset', AAM_Backend_View::getSubject());
41
+
42
+ return json_encode(array('status' => 'success'));
43
+ }
44
+
45
+ /**
46
+ *
47
+ * @return type
48
+ */
49
+ public function isAdministrator() {
50
+ $subject = AAM_Backend_View::getSubject();
51
+ $adminId = AAM_Core_Config::get('core.admin.id', 'administrator');
52
+
53
+ return ($subject->getUID() == 'role' && $subject->getId() == $adminId);
54
+ }
55
+
56
+ /**
57
+ *
58
+ * @param type $option
59
+ * @return type
60
+ */
61
+ public function getOption($option, $default = null) {
62
+ $value = AAM_Core_Config::get($option, $default);
63
+
64
+ if (!$this->isAdministrator()) {
65
+ $subject = AAM_Backend_View::getSubject();
66
+ $value = apply_filters(
67
+ 'aam-filter-teaser-option', $value, $option, $subject
68
+ );
69
+ }
70
+
71
+ return $value;
72
+ }
73
+
74
+ /**
75
+ * @inheritdoc
76
+ */
77
+ public static function getAccessOption() {
78
+ return 'feature.teaser.capability';
79
+ }
80
+
81
+ /**
82
+ * @inheritdoc
83
+ */
84
+ public static function getTemplate() {
85
+ return 'object/teaser.phtml';
86
+ }
87
+
88
+ /**
89
+ * Register Contact/Hire feature
90
+ *
91
+ * @return void
92
+ *
93
+ * @access public
94
+ */
95
+ public static function register() {
96
+ $cap = AAM_Core_Config::get(self::getAccessOption(), 'administrator');
97
+
98
+ AAM_Backend_Feature::registerFeature((object) array(
99
+ 'uid' => 'teaser',
100
+ 'position' => 40,
101
+ 'title' => __('Content Teaser', AAM_KEY),
102
+ 'capability' => $cap,
103
+ 'subjects' => array(
104
+ 'AAM_Core_Subject_Role',
105
+ 'AAM_Core_Subject_User',
106
+ 'AAM_Core_Subject_Visitor'
107
+ ),
108
+ 'view' => __CLASS__
109
+ ));
110
+ }
111
+
112
+ }
Application/Backend/Feature/Utility.php CHANGED
@@ -91,7 +91,7 @@ class AAM_Backend_Feature_Utility extends AAM_Backend_Feature_Abstract {
91
 
92
  AAM_Backend_Feature::registerFeature((object) array(
93
  'uid' => 'utilities',
94
- 'position' => 30,
95
  'title' => __('Utilities', AAM_KEY),
96
  'capability' => $cap,
97
  'subjects' => array(
91
 
92
  AAM_Backend_Feature::registerFeature((object) array(
93
  'uid' => 'utilities',
94
+ 'position' => 100,
95
  'title' => __('Utilities', AAM_KEY),
96
  'capability' => $cap,
97
  'subjects' => array(
Application/Backend/View.php CHANGED
@@ -56,6 +56,7 @@ class AAM_Backend_View {
56
  AAM_Backend_Feature_Capability::register();
57
  AAM_Backend_Feature_Post::register();
58
  AAM_Backend_Feature_Redirect::register();
 
59
  AAM_Backend_Feature_Extension::register();
60
  AAM_Backend_Feature_Utility::register();
61
  AAM_Backend_Feature_Contact::register();
56
  AAM_Backend_Feature_Capability::register();
57
  AAM_Backend_Feature_Post::register();
58
  AAM_Backend_Feature_Redirect::register();
59
+ AAM_Backend_Feature_Teaser::register();
60
  AAM_Backend_Feature_Extension::register();
61
  AAM_Backend_Feature_Utility::register();
62
  AAM_Backend_Feature_Contact::register();
Application/Backend/phtml/object/post.phtml CHANGED
@@ -9,7 +9,7 @@
9
  </div>
10
  </div>
11
  <?php } ?>
12
-
13
  <?php $current = $this->getCurrentPost(); ?>
14
 
15
  <div class="aam-post-breadcrumb">
@@ -31,7 +31,7 @@
31
  <span><?php echo __('Settings inherited from', AAM_KEY); ?> <strong id="post-parent"></strong></span>
32
  <span></span>
33
  </div>
34
-
35
  <?php if (!is_null($current)) { ?>
36
  <input type="hidden" id="load-post" value="<?php echo $current->ID; ?>" />
37
  <?php } ?>
@@ -91,6 +91,17 @@
91
  </div>
92
  </td>
93
  </tr>
 
 
 
 
 
 
 
 
 
 
 
94
  <tr>
95
  <td>
96
  <strong class="aam-block aam-highlight text-uppercase"><?php echo __('Comment', AAM_KEY); ?></strong>
@@ -150,4 +161,5 @@
150
  </div>
151
  </div>
152
  </div>
153
- <?php }
 
9
  </div>
10
  </div>
11
  <?php } ?>
12
+
13
  <?php $current = $this->getCurrentPost(); ?>
14
 
15
  <div class="aam-post-breadcrumb">
31
  <span><?php echo __('Settings inherited from', AAM_KEY); ?> <strong id="post-parent"></strong></span>
32
  <span></span>
33
  </div>
34
+
35
  <?php if (!is_null($current)) { ?>
36
  <input type="hidden" id="load-post" value="<?php echo $current->ID; ?>" />
37
  <?php } ?>
91
  </div>
92
  </td>
93
  </tr>
94
+ <tr>
95
+ <td>
96
+ <strong class="aam-block aam-highlight text-uppercase"><?php echo __('LIMIT', AAM_KEY); ?></strong>
97
+ <p class="aam-hint" data-dynamic-post-label="If checked, show defined in Content Teaser tab teaser message while reading %s instead of its content."></p>
98
+ </td>
99
+ <td>
100
+ <div class="aam-row-actions">
101
+ <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.limit"></i>
102
+ </div>
103
+ </td>
104
+ </tr>
105
  <tr>
106
  <td>
107
  <strong class="aam-block aam-highlight text-uppercase"><?php echo __('Comment', AAM_KEY); ?></strong>
161
  </div>
162
  </div>
163
  </div>
164
+ <?php
165
+ }
Application/Backend/phtml/object/redirect.phtml CHANGED
@@ -45,7 +45,7 @@
45
 
46
  <div class="form-group aam-redirect-action frontend-redirect" id="frontend-message-action" style="display: <?php echo ($frontendType == 'message' ? 'block' : 'none'); ?>;">
47
  <label for="frontend-message"><?php echo __('Customized Message', AAM_KEY); ?></label>
48
- <textarea class="form-control" name="frontend.redirect.message" rows="3" placeholder="<?php echo __('Enter message...', AAM_KEY); ?>"><?php echo $this->getOption('frontend.redirect.message'); ?></textarea>
49
  </div>
50
 
51
  <div class="form-group aam-redirect-action frontend-redirect" id="frontend-page-action" style="display: <?php echo ($frontendType == 'page' ? 'block' : 'none'); ?>;">
45
 
46
  <div class="form-group aam-redirect-action frontend-redirect" id="frontend-message-action" style="display: <?php echo ($frontendType == 'message' ? 'block' : 'none'); ?>;">
47
  <label for="frontend-message"><?php echo __('Customized Message', AAM_KEY); ?></label>
48
+ <textarea class="form-control" name="frontend.redirect.message" rows="3" placeholder="<?php echo __('Enter message...', AAM_KEY); ?>"><?php echo stripslashes($this->getOption('frontend.redirect.message')); ?></textarea>
49
  </div>
50
 
51
  <div class="form-group aam-redirect-action frontend-redirect" id="frontend-page-action" style="display: <?php echo ($frontendType == 'page' ? 'block' : 'none'); ?>;">
Application/Backend/phtml/object/teaser.phtml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="teaser-content">
3
+ <div class="row">
4
+ <div class="col-xs-12">
5
+ <?php if ($this->isAdministrator() || defined('AAM_CONTENT_TEASER')) { ?>
6
+ <?php echo apply_filters('aam-teaser-ui-filter', AAM_Backend_View::getInstance()->loadPartial('teaser.phtml')); ?>
7
+ <?php } ?>
8
+ </div>
9
+ </div>
10
+
11
+ <div class="row">
12
+ <div class="col-xs-12">
13
+ <?php if ($this->isAdministrator() || defined('AAM_CONTENT_TEASER')) { ?>
14
+ <div>
15
+ <div class="form-group">
16
+ <label><?php echo __('Teaser Message', AAM_KEY); ?></label>
17
+ <textarea class="form-control" name="frontend.teaser.message" rows="3" placeholder="<?php echo __('Enter teaser message...', AAM_KEY); ?>"><?php echo stripslashes($this->getOption('frontend.teaser.message')); ?></textarea>
18
+ </div>
19
+ <div class="checkbox">
20
+ <label>
21
+ <input type="checkbox" name="frontend.teaser.excerpt" value="1" <?php echo intval($this->getOption('frontend.teaser.excerpt')) ? 'checked' : ''; ?> />
22
+ <?php echo __('Add excerpt before teaser message', AAM_KEY); ?>
23
+ </label>
24
+ </div>
25
+ </div>
26
+ <?php } else { ?>
27
+ <p class="aam-notification">
28
+ <?php echo sprintf(AAM_Backend_View_Helper::preparePhrase('In order to setup customized teaser message for any user or role, consider to purchase [AAM Teaser] extension. Otherwise switch back to [%s] role to setup [default] teaser message for all users and roles.', 'b', 'b', 'b'), translate_user_role('Administrator')); ?>
29
+ </p>
30
+ <?php } ?>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <?php }
Application/Backend/phtml/partial/teaser.phtml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <p class="aam-info">
3
+ <?php echo AAM_Backend_View_Helper::preparePhrase('Setup [default] teaser message when frontend access is limited to read post, page or custom post type.', 'strong'); ?>
4
+ <a href="http://vasyltech.com/blog/aam-content-teaser" target="_blank">Read more.</a>
5
+ </p>
6
+ <?php }
Application/Core/API.php CHANGED
@@ -257,7 +257,7 @@ final class AAM_Core_API {
257
  );
258
  }
259
 
260
- return $message;
261
  }
262
 
263
  /**
257
  );
258
  }
259
 
260
+ return stripslashes($message);
261
  }
262
 
263
  /**
Application/Frontend/Manager.php CHANGED
@@ -47,6 +47,10 @@ class AAM_Frontend_Manager {
47
  add_filter('wp_authenticate_user', array($this, 'authenticate'), 1, 2);
48
  //add post filter for LIST restriction
49
  add_filter('the_posts', array($this, 'thePosts'), 999, 2);
 
 
 
 
50
  }
51
  }
52
 
@@ -201,6 +205,25 @@ class AAM_Frontend_Manager {
201
 
202
  return $open;
203
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
 
205
  /**
206
  * Control User Block flag
@@ -256,6 +279,41 @@ class AAM_Frontend_Manager {
256
  return $filtered;
257
  }
258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  /**
260
  * Check if user is post author
261
  *
47
  add_filter('wp_authenticate_user', array($this, 'authenticate'), 1, 2);
48
  //add post filter for LIST restriction
49
  add_filter('the_posts', array($this, 'thePosts'), 999, 2);
50
+ //filter post content
51
+ add_filter('the_content', array($this, 'theContent'), 999);
52
+ //admin bar
53
+ $this->checkAdminBar();
54
  }
55
  }
56
 
205
 
206
  return $open;
207
  }
208
+
209
+ /**
210
+ * Check admin bar
211
+ *
212
+ * Make sure that current user can see admin bar
213
+ *
214
+ * @return void
215
+ *
216
+ * @access public
217
+ */
218
+ public function checkAdminBar() {
219
+ $caps = AAM_Core_API::getAllCapabilities();
220
+
221
+ if (isset($caps['show_admin_bar'])) {
222
+ if (!AAM::getUser()->hasCapability('show_admin_bar')) {
223
+ show_admin_bar(false);
224
+ }
225
+ }
226
+ }
227
 
228
  /**
229
  * Control User Block flag
279
  return $filtered;
280
  }
281
 
282
+ /**
283
+ *
284
+ * @global WP_Post $post
285
+ * @param type $content
286
+ *
287
+ * @return string
288
+ *
289
+ * @access public
290
+ */
291
+ public function theContent($content) {
292
+ global $post;
293
+
294
+ $object = AAM::getUser()->getObject('post', $post->ID);
295
+
296
+ if ($object->has('frontend.limit')) {
297
+ $message = apply_filters(
298
+ 'aam-filter-teaser-option',
299
+ AAM_Core_Config::get("frontend.teaser.message"),
300
+ "frontend.teaser.message",
301
+ AAM::getUser()
302
+ );
303
+ $excerpt = apply_filters(
304
+ 'aam-filter-teaser-option',
305
+ AAM_Core_Config::get("frontend.teaser.excerpt"),
306
+ "frontend.teaser.excerpt",
307
+ AAM::getUser()
308
+ );
309
+
310
+ $content = (intval($excerpt) ? $post->post_excerpt : '');
311
+ $content .= stripslashes($message);
312
+ }
313
+
314
+ return $content;
315
+ }
316
+
317
  /**
318
  * Check if user is post author
319
  *
aam.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  Plugin Name: Advanced Access Manager
5
  Description: Manage User and Role Access to WordPress Backend and Frontend.
6
- Version: 3.7.1
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: https://www.vasyltech.com
9
 
3
  /**
4
  Plugin Name: Advanced Access Manager
5
  Description: Manage User and Role Access to WordPress Backend and Frontend.
6
+ Version: 3.7.5
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: https://www.vasyltech.com
9
 
media/css/aam.css CHANGED
@@ -913,4 +913,18 @@ input[type=radio]:checked + label:before {
913
  display: inline !important;
914
  float: none !important;
915
  width: auto !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
916
  }
913
  display: inline !important;
914
  float: none !important;
915
  width: auto !important;
916
+ }
917
+
918
+ /* Custom admin theme */
919
+ .postbox a.btn {
920
+ color: #FFFFFF !important;
921
+ }
922
+ .panel-heading a {
923
+ color: #333333 !important;
924
+ }
925
+
926
+ /* Slate pro admin */
927
+ .postbox {
928
+ padding: 0 !important;
929
+ border: 1px solid #e5e5e5 !important;
930
  }
media/js/aam-ui.js CHANGED
@@ -93,7 +93,6 @@
93
  }).html('<i class="icon-plus"></i> ' + aam.__('Create'))
94
  .bind('click', function (event) {
95
  event.preventDefault();
96
-
97
  $('#add-role-modal').modal('show');
98
  });
99
 
@@ -497,21 +496,24 @@
497
  switch (action) {
498
  case 'manage':
499
  $(container).append($('<i/>', {
500
- 'class': 'aam-row-action icon-cog text-info'
501
  }).bind('click', function () {
502
- aam.setSubject('user', data[0], data[2]);
503
- $('td:eq(0) span', row).replaceWith(
 
 
504
  '<strong>' + data[2] + '</strong>'
505
- );
506
- $('i.icon-cog', container).attr('class', 'aam-row-action icon-spin4 animate-spin');
507
- aam.fetchContent();
508
- $('i.icon-spin4', container).attr('class', 'aam-row-action icon-cog text-info');
509
- //make sure that there is no way user add's new capability
510
- $('#add-capability').hide();
 
511
  }).attr({
512
  'data-toggle': "tooltip",
513
  'title': aam.__('Manage User')
514
- }));
515
  break;
516
 
517
  case 'no-manage':
@@ -607,6 +609,8 @@
607
  $('tbody tr', '#user-list').each(function () {
608
  if ($('strong', $(this)).length) {
609
  var highlight = $('strong', $(this));
 
 
610
  highlight.replaceWith('<span>' + highlight.text() + '</span>');
611
  }
612
  });
@@ -1623,6 +1627,63 @@
1623
 
1624
  })(jQuery);
1625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1626
  /**
1627
  * Extensions Interface
1628
  *
93
  }).html('<i class="icon-plus"></i> ' + aam.__('Create'))
94
  .bind('click', function (event) {
95
  event.preventDefault();
 
96
  $('#add-role-modal').modal('show');
97
  });
98
 
496
  switch (action) {
497
  case 'manage':
498
  $(container).append($('<i/>', {
499
+ 'class': 'aam-row-action icon-cog ' + (isCurrent(data[0]) ? 'text-muted': 'text-info')
500
  }).bind('click', function () {
501
+ if (!$(this).prop('disabled')) {
502
+ $(this).prop('disabled', true);
503
+ aam.setSubject('user', data[0], data[2]);
504
+ $('td:eq(0) span', row).replaceWith(
505
  '<strong>' + data[2] + '</strong>'
506
+ );
507
+ $('i.icon-cog', container).attr('class', 'aam-row-action icon-spin4 animate-spin');
508
+ aam.fetchContent();
509
+ $('i.icon-spin4', container).attr('class', 'aam-row-action icon-cog text-muted');
510
+ //make sure that there is no way user add's new capability
511
+ $('#add-capability').hide();
512
+ }
513
  }).attr({
514
  'data-toggle': "tooltip",
515
  'title': aam.__('Manage User')
516
+ })).prop('disabled', (isCurrent(data[0]) ? true: false));
517
  break;
518
 
519
  case 'no-manage':
609
  $('tbody tr', '#user-list').each(function () {
610
  if ($('strong', $(this)).length) {
611
  var highlight = $('strong', $(this));
612
+ $('.icon-cog', $(this)).toggleClass('text-muted text-info');
613
+ $('.icon-cog', $(this)).prop('disabled', false);
614
  highlight.replaceWith('<span>' + highlight.text() + '</span>');
615
  }
616
  });
1627
 
1628
  })(jQuery);
1629
 
1630
+ /**
1631
+ * Teaser Interface
1632
+ *
1633
+ * @param {jQuery} $
1634
+ *
1635
+ * @returns {void}
1636
+ */
1637
+ (function ($) {
1638
+
1639
+ /**
1640
+ *
1641
+ * @param {type} param
1642
+ * @param {type} value
1643
+ * @returns {undefined}
1644
+ */
1645
+ function save(param, value) {
1646
+ $.ajax(aamLocal.ajaxurl, {
1647
+ type: 'POST',
1648
+ dataType: 'json',
1649
+ data: {
1650
+ action: 'aam',
1651
+ sub_action: 'Teaser.save',
1652
+ _ajax_nonce: aamLocal.nonce,
1653
+ subject: aam.getSubject().type,
1654
+ subjectId: aam.getSubject().id,
1655
+ param: param,
1656
+ value: value
1657
+ },
1658
+ error: function () {
1659
+ aam.notification('danger', aam.__('Application error'));
1660
+ }
1661
+ });
1662
+ }
1663
+ /**
1664
+ *
1665
+ * @returns {undefined}
1666
+ */
1667
+ function initialize() {
1668
+ var container = '#teaser-content';
1669
+
1670
+ $('input, textarea', container).each(function () {
1671
+ $(this).bind('change', function () {
1672
+ if ($(this).is('input[type="checkbox"]')) {
1673
+ var val = $(this).prop('checked') ? $(this).val() : 0;
1674
+ } else {
1675
+ val = $.trim($(this).val());
1676
+ }
1677
+ //save redirect type
1678
+ save($(this).attr('name'), val);
1679
+ });
1680
+ });
1681
+ }
1682
+
1683
+ aam.addHook('init', initialize);
1684
+
1685
+ })(jQuery);
1686
+
1687
  /**
1688
  * Extensions Interface
1689
  *
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: vasyltech
3
  Tags: access, role, user, visitor, capability, page, post, permission, security, redirect
4
  Requires at least: 3.8
5
- Tested up to: 4.5.3
6
- Stable tag: 3.7.1
7
 
8
  One of the best tools in WordPress repository to manage access to your posts,
9
  pages, categories and backend area for users, roles and visitors.
@@ -12,14 +12,18 @@ pages, categories and backend area for users, roles and visitors.
12
 
13
  > Advanced Access Manager (aka AAM) is probably the only plugin that allows you to
14
  > control access to your posts, pages or backend area on user, visitor and role
15
- > levels.
16
 
17
  AAM is well documented so even unexperienced WordPress user can easily understand
18
  how to use it in the most efficient way.
19
 
 
 
 
20
  AAM the main objectives are:
21
 
22
- * Control access to your posts, pages, custom post types and categories;
 
23
  * Filter backend metaboxes and widgets as well as frontend widgets;
24
  * Control access to backend menu;
25
  * Manage redirect when access is denied to any restricted resource;
@@ -60,6 +64,13 @@ out more about the Advanced Access Manager.
60
 
61
  == Changelog ==
62
 
 
 
 
 
 
 
 
63
  = 3.7.1 =
64
  * Added AAM Role Hierarchy extension
65
  * Fixed bug with 404 page for frontend
@@ -414,213 +425,6 @@ out more about the Advanced Access Manager.
414
  * Over 3 dozen of bug fixed and improvement during 3 alpha & beta versions
415
  * Improved Update mechanism
416
 
417
- = 1.9.1 =
418
- * Fixed bug with empty event list
419
- * Fixed bug with direct attachment access
420
- * Reverted back the default UI design
421
- * Last release of 1.x AAM Branch
422
-
423
- = 1.9 =
424
- * AAM 2.0 alpha 1 Announcement
425
-
426
- = 1.8.5 =
427
- * Added Event Manager
428
- * Added ConfigPress parameter "aam.encoding"
429
-
430
- = 1.8 =
431
- * Fixed user caching issue
432
- * Fixed issue with encoding
433
- * Clear output buffer to avoid from third party plugins issues
434
- * Notification about new release 2.0
435
-
436
- = 1.7.5 =
437
- * Accordion Fix
438
-
439
- = 1.7.3 =
440
- * Fixed reported issue #8894 to PHPSnapshot
441
- * Added Media File access control
442
- * Extended ConfigPress Tutorial
443
-
444
- = 1.7.2 =
445
- * Fixed CSS issues
446
-
447
- = 1.7.1 =
448
- * Fixed issue with cache removal query
449
- * Silenced Upgrade for release 1.7 and higher
450
- * Removed Capabilities description
451
- * Added .POT file for multi-language support
452
- * Silenced issue in updateRestriction function
453
- * Silenced the issue with phpQuery and taxonomy rendering
454
-
455
- = 1.7 =
456
- * Removed Zend Caching mechanism
457
- * Silenced the issue with array_merge in API model
458
- * Removed the ConfigPress reference
459
- * Created ConfigPress PDF Tutorial
460
- * Moved SOAP wsdl to local directory
461
-
462
-
463
- = 1.6.9.1 =
464
- * Changed the way AHM displays
465
-
466
- = 1.6.9 =
467
- * Encoding issue fixed
468
- * Removed AWM Group page
469
- * Removed .htaccess file
470
- * Fixed bug with Super Admin losing capabilities
471
-
472
- = 1.6.8.3 =
473
- * Implemented native WordPress jQuery UI include to avoid version issues
474
-
475
- = 1.6.8.2 =
476
- * Fixed JS issue with dialog destroy
477
-
478
- = 1.6.8.1 =
479
- * Fixed Javascript issue
480
- * Fixed issue with comment feature
481
-
482
- = 1.6.8 =
483
- * Extended ConfigPress
484
- * New view
485
- * Updated ConfigPress Reference Guide
486
-
487
- = 1.6.7.5 =
488
- * Implemented alternative way of Premium Upgrade
489
- * Extended ConfigPress
490
-
491
- = 1.6.7 =
492
- * New design
493
-
494
- = 1.6.6 =
495
- * Bug fixing
496
- * Maintenance work
497
- * Added Multisite importing feature
498
-
499
- = 1.6.5.2 =
500
- * Updated jQuery UI lib to 1.8.20
501
- * Minimized JavaScript
502
- * Implemented Web Service for AWM Group page
503
- * Implemented Web Service for Premium Version
504
- * Fixed bug with User Restrictions
505
- * Fixed bug with Edit Permalink
506
- * Fixed bug with Upgrade Hook
507
- * Reorganized Label Module (Preparing for Russian and Polish transactions)
508
-
509
- = 1.6.5.1 (Beta) =
510
- * Bug fixing
511
- * Removed custom error handler
512
-
513
- = 1.6.5 =
514
- * Turn off error reporting by default
515
- * More advanced Post/Taxonomy access control
516
- * Added Refresh feature for Post/Taxonomy Tree
517
- * Added Custom Capability Edit Permalink
518
- * Filtering Post's Quick Menu
519
- * Refactored JavaScript
520
-
521
- = 1.6.3 =
522
- * Added more advanced possibility to manage comments
523
- * Change Capabilities view
524
- * Added additional checking for plugin's reliability
525
-
526
- = 1.6.2 =
527
- * Few GUI changes
528
- * Added ConfigPress reference guide
529
- * Introduced Extended version
530
- * Fixed bug with UI menu ordering
531
- * Fixed bug with ConfigPress caching
532
- * Fixed bugs in filtermetabox class
533
- * Fixed bug with confirmation message in Multisite Setup
534
-
535
- = 1.6.1.3 =
536
- * Fixed issue with menu
537
-
538
- = 1.6.1.2 =
539
- * Resolved issue with chmod
540
- * Fixed issue with clearing config.ini during upgrade
541
-
542
- = 1.6.1.1 =
543
- * Fixed 2 bugs reported by jimaek
544
-
545
- = 1.6.1 =
546
- * Silenced few warnings in Access Control Class
547
- * Extended description to Manually Metabox Init feature
548
- * Added possibility to filter Frontend Widgets
549
- * Refactored the Option Page manager
550
- * Added About page
551
-
552
- = 1.6 =
553
- * Fixed bug for post__not_in
554
- * Fixed bug with Admin Panel filtering
555
- * Added Restore Default button
556
- * Added Social and Support links
557
- * Modified Error Handling feature
558
- * Modified Config Press Handling
559
-
560
- = 1.5.8 =
561
- * Fixed bug with categories
562
- * Addedd delete_capabilities parameter to Config Press
563
-
564
- = 1.5.7 =
565
- * Bug fixing
566
- * Introduced error handling
567
- * Added internal .htaccess
568
-
569
- = 1.5.6 =
570
- * Introduced _Visitor User Role
571
- * Fixed few core bugs
572
- * Implemented caching system
573
- * Improved API
574
-
575
- = 1.5.5 =
576
- * Performed code refactoring
577
- * Added Access Config
578
- * Added User Managing feature
579
- * Fixed bugs related to WP 3.3.x releases
580
-
581
- = 1.4.3 =
582
- * Emergency bug fixing
583
-
584
- = 1.4.2 =
585
- * Fixed cURL bug
586
-
587
- = 1.4.1 =
588
- * Fixed some bugs with checking algorithm
589
- * Maintained the code
590
-
591
- = 1.4 =
592
- * Added Multi-Site Support
593
- * Added Multi-Language Support
594
- * Improved checking algorithm
595
- * Improved Super Admin functionality
596
-
597
- = 1.3.1 =
598
- * Improved Super Admin functionality
599
- * Optimized main class
600
- * Improved Checking algorithm
601
- * Added ability to change User Role's Label
602
- * Added ability to Exclude Pages from Navigation
603
- * Added ability to spread Post/Category Restriction Options to all User Roles
604
- * Sorted List of Capabilities Alphabetically
605
-
606
- = 1.3 =
607
- * Change some interface button to WordPress default
608
- * Deleted General Info metabox
609
- * Improved check Access algorithm for compatibility with non standard links
610
- * Split restriction on Front-end and Back-end
611
- * Added Page Menu Filtering
612
- * Added Admin Top Menu Filtering
613
- * Added Import/Export Configuration functionality
614
-
615
- = 1.2.1 =
616
- * Fixed issue with propAttr jQuery IU incompatibility
617
- * Added filters for checkAccess and compareMenu results
618
-
619
- = 1.2 =
620
- * Fixed some notice messages reported by llucax
621
- * Added ability to sort Admin Menu
622
- * Added ability to filter Posts, Categories and Pages
623
-
624
  = 1.0 =
625
  * Fixed issue with comment editing
626
  * Implemented JavaScript error catching
2
  Contributors: vasyltech
3
  Tags: access, role, user, visitor, capability, page, post, permission, security, redirect
4
  Requires at least: 3.8
5
+ Tested up to: 4.6
6
+ Stable tag: 3.7.5
7
 
8
  One of the best tools in WordPress repository to manage access to your posts,
9
  pages, categories and backend area for users, roles and visitors.
12
 
13
  > Advanced Access Manager (aka AAM) is probably the only plugin that allows you to
14
  > control access to your posts, pages or backend area on user, visitor and role
15
+ > levels.
16
 
17
  AAM is well documented so even unexperienced WordPress user can easily understand
18
  how to use it in the most efficient way.
19
 
20
+ Notice! Some of the features are limited with the basic version and you may
21
+ consider to get recommended premium extension.
22
+
23
  AAM the main objectives are:
24
 
25
+ * Manage access to your posts, pages, custom post types and categories;
26
+ * Manage access to post's and page's content by displaying teaser message;
27
  * Filter backend metaboxes and widgets as well as frontend widgets;
28
  * Control access to backend menu;
29
  * Manage redirect when access is denied to any restricted resource;
64
 
65
  == Changelog ==
66
 
67
+ = 3.7.5 =
68
+ * Added AAM Content Teaser extension
69
+ * Added LIMIT option to Posts & Pages access forms to support Teaser feature
70
+ * Bug fixing
71
+ * Improved UI
72
+ * Added ability to show/hide admin bar with show_admin_bar capability
73
+
74
  = 3.7.1 =
75
  * Added AAM Role Hierarchy extension
76
  * Fixed bug with 404 page for frontend
425
  * Over 3 dozen of bug fixed and improvement during 3 alpha & beta versions
426
  * Improved Update mechanism
427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428
  = 1.0 =
429
  * Fixed issue with comment editing
430
  * Implemented JavaScript error catching