Advanced Access Manager - Version 3.1

Version Description

  • Integrated User Switch with AAM
  • Fixed bugs reported by WP Error Fix
  • Removed intro message
  • Improved AAM speed
  • Updated AAM Utilities extension
  • Updated AAM Plus Package extension
  • Added new AAM Skeleton Extension for developers
Download this release

Release Info

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

Code changes from version 3.0 to 3.1

Files changed (51) hide show
  1. Application/Backend/Capability.php +47 -9
  2. Application/Backend/Extension.php +17 -3
  3. Application/Backend/Filter.php +12 -11
  4. Application/Backend/Localization.php +9 -0
  5. Application/Backend/Manager.php +65 -9
  6. Application/Backend/Menu.php +24 -2
  7. Application/Backend/Metabox.php +22 -0
  8. Application/Backend/Post.php +48 -18
  9. Application/Backend/ProductList.php +80 -0
  10. Application/Backend/User.php +11 -1
  11. Application/Backend/View.php +31 -18
  12. Application/Backend/view/extension.phtml +98 -133
  13. Application/Backend/view/index.phtml +251 -264
  14. Application/Backend/view/main-panel.phtml +20 -17
  15. Application/Backend/view/object/capability.phtml +51 -48
  16. Application/Backend/view/object/menu.phtml +62 -49
  17. Application/Backend/view/object/metabox.phtml +60 -49
  18. Application/Backend/view/object/post.phtml +193 -132
  19. Application/Backend/view/partial/post-type.phtml +9 -6
  20. Application/Backend/view/partial/term-type.phtml +9 -6
  21. Application/Core/API.php +24 -3
  22. Application/Core/Object.php +52 -1
  23. Application/Core/Object/Menu.php +8 -0
  24. Application/Core/Object/Metabox.php +9 -0
  25. Application/Core/Object/Post.php +58 -23
  26. Application/Core/Repository.php +60 -19
  27. Application/Core/Server.php +4 -5
  28. Application/Core/Subject.php +35 -9
  29. Application/Core/Subject/Role.php +27 -28
  30. Application/Core/Subject/User.php +25 -2
  31. Application/Core/Subject/Visitor.php +3 -15
  32. Application/Frontend/Manager.php +21 -17
  33. Lang/{en_US.mo → advanced-access-manager-en_US.mo} +0 -0
  34. Lang/{en_US.po → advanced-access-manager-en_US.po} +373 -256
  35. Lang/advanced-access-manager.pot +372 -255
  36. aam.php +25 -21
  37. media/css/aam.css +106 -57
  38. media/css/datatables.min.css +10 -3
  39. media/font/fontello.eot +0 -0
  40. media/font/fontello.svg +3 -0
  41. media/font/fontello.ttf +0 -0
  42. media/font/fontello.woff +0 -0
  43. media/js/aam-hook.js +1 -1
  44. media/js/aam-ui.js +293 -130
  45. media/js/aam.js +51 -49
  46. readme.txt +78 -2
  47. screenshot-1.png +0 -0
  48. screenshot-2.png +0 -0
  49. screenshot-3.png +0 -0
  50. screenshot-4.png +0 -0
  51. screenshot-5.png +0 -0
Application/Backend/Capability.php CHANGED
@@ -75,20 +75,57 @@ class AAM_Backend_Capability {
75
  if ($subject instanceof AAM_Core_Subject_Role) {
76
  $response['data'] = $this->retrieveAllCaps();
77
  } else {
78
- $role_list = $subject->roles;
79
- $role = AAM_Core_API::getRoles()->get_role(array_shift($role_list));
80
- foreach (array_keys($role->capabilities) as $cap) {
81
  $response['data'][] = array(
82
  $cap,
83
  $this->getGroup($cap),
84
  AAM_Backend_Helper::getHumanText($cap),
85
- ($subject->hasCapability($cap) ? 'checked' : 'unchecked')
86
  );
87
  }
88
  }
89
 
90
  return json_encode($response);
91
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
  /**
94
  *
@@ -98,16 +135,17 @@ class AAM_Backend_Capability {
98
  $caps = $response = array();
99
 
100
  foreach (AAM_Core_API::getRoles()->role_objects as $role) {
101
- $caps = array_merge($caps, $role->capabilities);
 
 
102
  }
103
 
104
- $subject = AAM_Backend_View::getSubject();
105
  foreach (array_keys($caps) as $cap) {
106
  $response[] = array(
107
  $cap,
108
  $this->getGroup($cap),
109
  AAM_Backend_Helper::getHumanText($cap),
110
- ($subject->hasCapability($cap) ? 'checked' : 'unchecked')
111
  );
112
  }
113
 
@@ -125,7 +163,7 @@ class AAM_Backend_Capability {
125
  return apply_filters('aam-capability-groups-filter', array(
126
  __('System', AAM_KEY),
127
  __('Posts & Pages', AAM_KEY),
128
- __('Backend Interface', AAM_KEY),
129
  __('Miscellaneous', AAM_KEY)
130
  ));
131
  }
@@ -166,7 +204,7 @@ class AAM_Backend_Capability {
166
  } elseif (in_array($capability, $this->_groups['post'])) {
167
  $response = __('Posts & Pages', AAM_KEY);
168
  } elseif (in_array($capability, $this->_groups['backend'])) {
169
- $response = __('Backend Interface', AAM_KEY);
170
  } else {
171
  $response = __('Miscellaneous', AAM_KEY);
172
  }
75
  if ($subject instanceof AAM_Core_Subject_Role) {
76
  $response['data'] = $this->retrieveAllCaps();
77
  } else {
78
+ foreach ($this->getCapabilityList($subject) as $cap) {
 
 
79
  $response['data'][] = array(
80
  $cap,
81
  $this->getGroup($cap),
82
  AAM_Backend_Helper::getHumanText($cap),
83
+ $this->prepareActionList($cap)
84
  );
85
  }
86
  }
87
 
88
  return json_encode($response);
89
  }
90
+
91
+ /**
92
+ *
93
+ * @param AAM_Core_Subject_User $subject
94
+ * @return type
95
+ */
96
+ protected function getCapabilityList(AAM_Core_Subject_User $subject) {
97
+ $list = array();
98
+
99
+ //IMPORTANT! Cause it is possible that user is not assigned to any role
100
+ $roles = $subject->roles;
101
+
102
+ if (is_array($roles)) {
103
+ foreach($roles as $slug) {
104
+ $role = AAM_Core_API::getRoles()->get_role($slug);
105
+ if ($role) {
106
+ $list = array_keys($role->capabilities);
107
+ break;
108
+ }
109
+ }
110
+ }
111
+ return $list;
112
+ }
113
+
114
+ /**
115
+ *
116
+ * @param type $cap
117
+ * @return type
118
+ */
119
+ protected function prepareActionList($cap) {
120
+ $subject = AAM_Backend_View::getSubject();
121
+ $actions = array();
122
+
123
+ $actions[] = ($subject->hasCapability($cap) ? 'checked' : 'unchecked');
124
+
125
+ return implode(
126
+ ',', apply_filters('aam-cap-row-actions-filter', $actions, $subject)
127
+ );
128
+ }
129
 
130
  /**
131
  *
135
  $caps = $response = array();
136
 
137
  foreach (AAM_Core_API::getRoles()->role_objects as $role) {
138
+ if (is_array($role->capabilities)) {
139
+ $caps = array_merge($caps, $role->capabilities);
140
+ }
141
  }
142
 
 
143
  foreach (array_keys($caps) as $cap) {
144
  $response[] = array(
145
  $cap,
146
  $this->getGroup($cap),
147
  AAM_Backend_Helper::getHumanText($cap),
148
+ $this->prepareActionList($cap)
149
  );
150
  }
151
 
163
  return apply_filters('aam-capability-groups-filter', array(
164
  __('System', AAM_KEY),
165
  __('Posts & Pages', AAM_KEY),
166
+ __('Backend', AAM_KEY),
167
  __('Miscellaneous', AAM_KEY)
168
  ));
169
  }
204
  } elseif (in_array($capability, $this->_groups['post'])) {
205
  $response = __('Posts & Pages', AAM_KEY);
206
  } elseif (in_array($capability, $this->_groups['backend'])) {
207
+ $response = __('Backend', AAM_KEY);
208
  } else {
209
  $response = __('Miscellaneous', AAM_KEY);
210
  }
Application/Backend/Extension.php CHANGED
@@ -31,6 +31,17 @@ class AAM_Backend_Extension {
31
  return $content;
32
  }
33
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * Install an extension
36
  *
@@ -147,7 +158,7 @@ class AAM_Backend_Extension {
147
  'uid' => 'extension',
148
  'position' => 999,
149
  'title' => __('Extensions', AAM_KEY),
150
- 'notification' => self::getUpdatesCount(),
151
  'subjects' => array(
152
  'AAM_Core_Subject_Role',
153
  'AAM_Core_Subject_User',
@@ -161,11 +172,14 @@ class AAM_Backend_Extension {
161
  *
162
  * @return int
163
  */
164
- protected static function getUpdatesCount() {
165
- $list = AAM_Core_API::getOption('aam-extension-list', array());
166
  $repo = AAM_Core_Repository::getInstance();
167
  $count = 0;
168
 
 
 
 
169
  foreach($list as $extension) {
170
  $status = $repo->extensionStatus($extension->title);
171
  if ($status == AAM_Core_Repository::STATUS_UPDATE) {
31
  return $content;
32
  }
33
 
34
+ /**
35
+ * Get Product List
36
+ *
37
+ * @return array
38
+ *
39
+ * @access protected
40
+ */
41
+ protected function getProductList() {
42
+ return require(dirname(__FILE__) . '/ProductList.php');
43
+ }
44
+
45
  /**
46
  * Install an extension
47
  *
158
  'uid' => 'extension',
159
  'position' => 999,
160
  'title' => __('Extensions', AAM_KEY),
161
+ 'notification' => self::getNotification(),
162
  'subjects' => array(
163
  'AAM_Core_Subject_Role',
164
  'AAM_Core_Subject_User',
172
  *
173
  * @return int
174
  */
175
+ protected static function getNotification() {
176
+ $list = AAM_Core_API::getOption('aam-extension-repository', array());
177
  $repo = AAM_Core_Repository::getInstance();
178
  $count = 0;
179
 
180
+ //WP Error Fix bug report
181
+ $list = (is_array($list) ? $list : array());
182
+
183
  foreach($list as $extension) {
184
  $status = $repo->extensionStatus($extension->title);
185
  if ($status == AAM_Core_Repository::STATUS_UPDATE) {
Application/Backend/Filter.php CHANGED
@@ -121,15 +121,12 @@ class AAM_Backend_Filter {
121
  unset($actions['inline hide-if-no-js']);
122
  }
123
  }
124
- //filter trash menu
125
- if ($object->has('backend.trash')) {
126
- if (isset($actions['trash'])) {
127
- unset($actions['trash']);
128
- }
129
- }
130
 
131
  //filter delete menu
132
  if ($object->has('backend.delete')) {
 
 
 
133
  if (isset($actions['delete'])) {
134
  unset($actions['delete']);
135
  }
@@ -235,11 +232,15 @@ class AAM_Backend_Filter {
235
  */
236
  public function thePosts($posts) {
237
  $filtered = array();
238
-
239
- foreach ($posts as $post) {
240
- $object = AAM::getUser()->getObject('post', $post->ID);
241
- if (!$object->has('backend.list')) {
242
- $filtered[] = $post;
 
 
 
 
243
  }
244
  }
245
 
121
  unset($actions['inline hide-if-no-js']);
122
  }
123
  }
 
 
 
 
 
 
124
 
125
  //filter delete menu
126
  if ($object->has('backend.delete')) {
127
+ if (isset($actions['trash'])) {
128
+ unset($actions['trash']);
129
+ }
130
  if (isset($actions['delete'])) {
131
  unset($actions['delete']);
132
  }
232
  */
233
  public function thePosts($posts) {
234
  $filtered = array();
235
+
236
+ if (AAM::isAAM()) { //skip post filtering if this is AAM page
237
+ $filtered = $posts;
238
+ } else {
239
+ foreach ($posts as $post) {
240
+ $object = AAM::getUser()->getObject('post', $post->ID);
241
+ if (!$object->has('backend.list')) {
242
+ $filtered[] = $post;
243
+ }
244
  }
245
  }
246
 
Application/Backend/Localization.php CHANGED
@@ -40,6 +40,15 @@ return array(
40
  'Anonymous' => __('Anonymous', AAM_KEY),
41
  'Current user' => __('Current user', AAM_KEY),
42
  'Current role' => __('Current role', AAM_KEY),
 
 
 
 
 
 
 
 
 
43
  'Javascript error detected during the page load. AAM may not function properly.' => __('Javascript error detected during the page load. AAM may not function properly.', AAM_KEY),
44
  'Failed to grand capability - WordPress policy' => __('Failed to grand capability - WordPress policy', AAM_KEY),
45
  );
40
  'Anonymous' => __('Anonymous', AAM_KEY),
41
  'Current user' => __('Current user', AAM_KEY),
42
  'Current role' => __('Current role', AAM_KEY),
43
+ 'Manage Access' => __('Manage Access', AAM_KEY),
44
+ 'Edit' => __('Edit', AAM_KEY),
45
+ 'Manage Role' => __('Manage Role', AAM_KEY),
46
+ 'Edit Role Name' => __('Edit Role Name', AAM_KEY),
47
+ 'Delete Role' => __('Delete Role', AAM_KEY),
48
+ 'Manage User' => __('Manage User', AAM_KEY),
49
+ 'Edit User' => __('Edit User', AAM_KEY),
50
+ 'Lock User' => __('Lock User', AAM_KEY),
51
+ 'Unlock User' => __('Unlock User', AAM_KEY),
52
  'Javascript error detected during the page load. AAM may not function properly.' => __('Javascript error detected during the page load. AAM may not function properly.', AAM_KEY),
53
  'Failed to grand capability - WordPress policy' => __('Failed to grand capability - WordPress policy', AAM_KEY),
54
  );
Application/Backend/Manager.php CHANGED
@@ -43,7 +43,7 @@ class AAM_Backend_Manager {
43
  //manager AAM Ajax Requests
44
  add_action('wp_ajax_aam', array($this, 'ajax'));
45
  //manager AAM Features Content rendering
46
- add_action('admin_action_aam-content', array($this, 'renderContent'));
47
  //manager user search and authentication control
48
  add_filter('user_search_columns', array($this, 'searchColumns'));
49
  //manage access action to the user list
@@ -51,9 +51,14 @@ class AAM_Backend_Manager {
51
 
52
  //check extension version
53
  $this->checkExtensionList();
 
 
 
54
 
55
  //register backend hooks and filters
56
- AAM_Backend_Filter::register();
 
 
57
  }
58
 
59
  /**
@@ -69,7 +74,7 @@ class AAM_Backend_Manager {
69
  public function enqueueScript() {
70
  if (AAM::isAAM()) {
71
  echo "<script type=\"text/javascript\">\n";
72
- echo file_get_contents(AAM_MEDIA . '/js/aam-hook.js');
73
  echo "</script>\n";
74
  }
75
  }
@@ -78,9 +83,12 @@ class AAM_Backend_Manager {
78
  *
79
  */
80
  protected function checkExtensionList() {
81
- $list = AAM_Core_API::getOption('aam-extension-list', array());
82
  $repo = AAM_Core_Repository::getInstance();
83
 
 
 
 
84
  foreach($list as $extension) {
85
  $status = $repo->extensionStatus($extension->title);
86
  if ($status == AAM_Core_Repository::STATUS_UPDATE) {
@@ -92,6 +100,53 @@ class AAM_Backend_Manager {
92
  );
93
  }
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
 
97
  /**
@@ -122,10 +177,12 @@ class AAM_Backend_Manager {
122
  * @access public
123
  */
124
  public function userActions($actions, $user) {
125
- $url = admin_url('admin.php?page=aam&user=' . $user->ID);
126
-
127
- $actions['aam'] = '<a href="' . $url . '">';
128
- $actions['aam'] .= __('Manage Access', AAM_KEY) . '</a>';
 
 
129
 
130
  return $actions;
131
  }
@@ -175,7 +232,6 @@ class AAM_Backend_Manager {
175
  'name'=> $subject->name,
176
  'blog' => get_current_blog_id()
177
  ),
178
- 'welcome' => AAM_Core_API::getOption('aam-welcome', 1),
179
  'translation' => require (dirname(__FILE__) . '/Localization.php')
180
  ));
181
  }
43
  //manager AAM Ajax Requests
44
  add_action('wp_ajax_aam', array($this, 'ajax'));
45
  //manager AAM Features Content rendering
46
+ add_action('admin_action_aamc', array($this, 'renderContent'));
47
  //manager user search and authentication control
48
  add_filter('user_search_columns', array($this, 'searchColumns'));
49
  //manage access action to the user list
51
 
52
  //check extension version
53
  $this->checkExtensionList();
54
+
55
+ //check cache status
56
+ $this->checkCacheStatus();
57
 
58
  //register backend hooks and filters
59
+ if (apply_filters('aam-utility-property', 'backend-access-control', true)) {
60
+ AAM_Backend_Filter::register();
61
+ }
62
  }
63
 
64
  /**
74
  public function enqueueScript() {
75
  if (AAM::isAAM()) {
76
  echo "<script type=\"text/javascript\">\n";
77
+ echo file_get_contents(AAM_BASE . '/media/js/aam-hook.js');
78
  echo "</script>\n";
79
  }
80
  }
83
  *
84
  */
85
  protected function checkExtensionList() {
86
+ $list = AAM_Core_API::getOption('aam-extension-repository', array());
87
  $repo = AAM_Core_Repository::getInstance();
88
 
89
+ //WP Error Fix bug report
90
+ $list = (is_array($list) ? $list : array());
91
+
92
  foreach($list as $extension) {
93
  $status = $repo->extensionStatus($extension->title);
94
  if ($status == AAM_Core_Repository::STATUS_UPDATE) {
100
  );
101
  }
102
  }
103
+
104
+ //TODO - Remove in Feb 2016
105
+ $this->checkRedundantExtensions();
106
+ }
107
+
108
+ /**
109
+ * @todo Remove in Feb 2016
110
+ */
111
+ protected function checkRedundantExtensions() {
112
+ $basedir = AAM_Core_Repository::getInstance()->getBasedir();
113
+
114
+ //iterate through each active extension and load it
115
+ if (file_exists($basedir)) {
116
+ foreach (scandir($basedir) as $extension) {
117
+ if (!in_array($extension, array('.', '..'))) {
118
+ if (!preg_match('/^[a-z]{1}[a-z\-]+$/', $extension)) {
119
+ AAM_Core_Console::add(
120
+ sprintf(
121
+ AAM_Backend_Helper::preparePhrase('Please manually remove [%s] and re-install the extension if necessary', 'b'),
122
+ $basedir . '/' . $extension
123
+ )
124
+ );
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Check caching status
133
+ *
134
+ * If caching is off, show notification about it
135
+ *
136
+ * @return void
137
+ *
138
+ * @access protected
139
+ */
140
+ protected function checkCacheStatus() {
141
+ if (apply_filters('aam-cache-status-filter', false) === false) {
142
+ $message = __(
143
+ 'AAM caching is off. To speed-up the website turn it on.', AAM_KEY
144
+ );
145
+ $message .= '&nbsp;<a href="#cache-info-modal" data-toggle="modal">';
146
+ $message .= __('Read more.', AAM_KEY) . '</a>';
147
+
148
+ AAM_Core_Console::add($message);
149
+ }
150
  }
151
 
152
  /**
177
  * @access public
178
  */
179
  public function userActions($actions, $user) {
180
+ if (current_user_can('edit_user', $user->ID)) {
181
+ $url = admin_url('admin.php?page=aam&user=' . $user->ID);
182
+
183
+ $actions['aam'] = '<a href="' . $url . '">';
184
+ $actions['aam'] .= __('AAM', AAM_KEY) . '</a>';
185
+ }
186
 
187
  return $actions;
188
  }
232
  'name'=> $subject->name,
233
  'blog' => get_current_blog_id()
234
  ),
 
235
  'translation' => require (dirname(__FILE__) . '/Localization.php')
236
  ));
237
  }
Application/Backend/Menu.php CHANGED
@@ -30,6 +30,18 @@ class AAM_Backend_Menu {
30
 
31
  return $content;
32
  }
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  /**
35
  * Get subject's menu
@@ -131,9 +143,9 @@ class AAM_Backend_Menu {
131
  *
132
  * @return boolean
133
  *
134
- * @access public
135
  */
136
- public function hasRestrictedAll($menu) {
137
  $object = AAM_Backend_View::getSubject()->getObject('menu');
138
  $response = $object->has($menu['id']);
139
 
@@ -146,6 +158,16 @@ class AAM_Backend_Menu {
146
 
147
  return $response;
148
  }
 
 
 
 
 
 
 
 
 
 
149
 
150
  /**
151
  * Register Menu feature
30
 
31
  return $content;
32
  }
33
+
34
+ /**
35
+ *
36
+ * @return type
37
+ */
38
+ public function reset() {
39
+ $object = AAM_Backend_View::getSubject()->getObject('menu');
40
+
41
+ return json_encode(array(
42
+ 'status' => ($object->reset() ? 'success' : 'failure')
43
+ ));
44
+ }
45
 
46
  /**
47
  * Get subject's menu
143
  *
144
  * @return boolean
145
  *
146
+ * @access protected
147
  */
148
+ protected function hasRestrictedAll($menu) {
149
  $object = AAM_Backend_View::getSubject()->getObject('menu');
150
  $response = $object->has($menu['id']);
151
 
158
 
159
  return $response;
160
  }
161
+
162
+ /**
163
+ *
164
+ * @return type
165
+ */
166
+ protected function isOverwritten() {
167
+ $object = AAM_Backend_View::getSubject()->getObject('menu');
168
+
169
+ return $object->isOverwritten();
170
+ }
171
 
172
  /**
173
  * Register Menu feature
Application/Backend/Metabox.php CHANGED
@@ -33,6 +33,18 @@ class AAM_Backend_Metabox {
33
  return $content;
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  *
38
  * @global type $wp_post_types
@@ -180,6 +192,16 @@ class AAM_Backend_Metabox {
180
 
181
  return $response;
182
  }
 
 
 
 
 
 
 
 
 
 
183
 
184
  /**
185
  * Register metabox feature
33
  return $content;
34
  }
35
 
36
+ /**
37
+ *
38
+ * @return type
39
+ */
40
+ public function reset() {
41
+ $object = AAM_Backend_View::getSubject()->getObject('metabox');
42
+
43
+ return json_encode(array(
44
+ 'status' => ($object->reset() ? 'success' : 'failure')
45
+ ));
46
+ }
47
+
48
  /**
49
  *
50
  * @global type $wp_post_types
192
 
193
  return $response;
194
  }
195
+
196
+ /**
197
+ *
198
+ * @return type
199
+ */
200
+ protected function isOverwritten() {
201
+ $object = AAM_Backend_View::getSubject()->getObject('metabox');
202
+
203
+ return $object->isOverwritten();
204
+ }
205
 
206
  /**
207
  * Register metabox feature
Application/Backend/Post.php CHANGED
@@ -66,12 +66,10 @@ class AAM_Backend_Post {
66
  $breadcrub = $this->renderPostBreadcrumb();
67
  }
68
 
69
- return json_encode(
70
- array(
71
  'status' => 'success',
72
  'breadcrumb' => ($breadcrub ? $breadcrub : __('Base Level', AAM_KEY))
73
- )
74
- );
75
  }
76
 
77
  /**
@@ -83,9 +81,8 @@ class AAM_Backend_Post {
83
  */
84
  protected function renderTermBreadcrumb() {
85
  list($term, $taxonomy) = explode('|', AAM_Core_Request::post('id'));
86
- $ancestors = array_reverse(
87
- get_ancestors($term, $taxonomy, 'taxonomy')
88
- );
89
  $breadcrumb = array();
90
  foreach ($ancestors as $id) {
91
  $breadcrumb[] = get_term($id, $taxonomy)->name;
@@ -234,21 +231,26 @@ class AAM_Backend_Post {
234
  * @access public
235
  */
236
  public function getAccess() {
237
- $type = AAM_Core_Request::post('type');
238
- $id = AAM_Core_Request::post('id');
239
 
240
  $object = AAM_Backend_View::getSubject()->getObject($type, $id);
241
 
242
- //prepare the response object - for base version only Post object
243
- if ($object instanceof AAM_Core_Object_Post) {
244
- $response = $object->getOption();
 
 
 
 
245
  } else {
246
- $response = array();
247
  }
248
 
249
- return json_encode(
250
- apply_filters('aam-get-post-access-filter', $response, $object)
251
- );
 
252
  }
253
 
254
  /**
@@ -260,13 +262,16 @@ class AAM_Backend_Post {
260
  */
261
  public function save() {
262
  if ($this->checkLimit()) {
263
- $object = AAM_Core_Request::post('object');
264
- $objectId = AAM_Core_Request::post('objectId', 0);
265
 
266
  $param = AAM_Core_Request::post('param');
267
  $value = filter_var(
268
  AAM_Core_Request::post('value'), FILTER_VALIDATE_BOOLEAN
269
  );
 
 
 
270
 
271
  $result = AAM_Backend_View::getSubject()->save(
272
  $param, $value, $object, $objectId
@@ -281,6 +286,31 @@ class AAM_Backend_Post {
281
  'error' => (empty($error) ? '' : $error)
282
  ));
283
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
 
285
  /**
286
  *
66
  $breadcrub = $this->renderPostBreadcrumb();
67
  }
68
 
69
+ return json_encode(array(
 
70
  'status' => 'success',
71
  'breadcrumb' => ($breadcrub ? $breadcrub : __('Base Level', AAM_KEY))
72
+ ));
 
73
  }
74
 
75
  /**
81
  */
82
  protected function renderTermBreadcrumb() {
83
  list($term, $taxonomy) = explode('|', AAM_Core_Request::post('id'));
84
+ $ancestors = array_reverse(get_ancestors($term, $taxonomy, 'taxonomy'));
85
+
 
86
  $breadcrumb = array();
87
  foreach ($ancestors as $id) {
88
  $breadcrumb[] = get_term($id, $taxonomy)->name;
231
  * @access public
232
  */
233
  public function getAccess() {
234
+ $type = trim(AAM_Core_Request::post('type'));
235
+ $id = intval(AAM_Core_Request::post('id'));
236
 
237
  $object = AAM_Backend_View::getSubject()->getObject($type, $id);
238
 
239
+ //prepare the response object
240
+ if ($object instanceof AAM_Core_Object) {
241
+ $access = $object->getOption();
242
+ $metadata = array(
243
+ 'inherited' => $object->getInherited(),
244
+ 'overwritten' => $object->isOverwritten()
245
+ );
246
  } else {
247
+ $access = $metadata = array();
248
  }
249
 
250
+ return json_encode(array(
251
+ 'access' => $access,
252
+ 'meta' => $metadata
253
+ ));
254
  }
255
 
256
  /**
262
  */
263
  public function save() {
264
  if ($this->checkLimit()) {
265
+ $object = trim(AAM_Core_Request::post('object'));
266
+ $objectId = intval(AAM_Core_Request::post('objectId', 0));
267
 
268
  $param = AAM_Core_Request::post('param');
269
  $value = filter_var(
270
  AAM_Core_Request::post('value'), FILTER_VALIDATE_BOOLEAN
271
  );
272
+
273
+ //clear cache
274
+ do_action('aam-clear-cache-action', AAM_Backend_View::getSubject());
275
 
276
  $result = AAM_Backend_View::getSubject()->save(
277
  $param, $value, $object, $objectId
286
  'error' => (empty($error) ? '' : $error)
287
  ));
288
  }
289
+
290
+ /**
291
+ * Reset the object settings
292
+ *
293
+ * @return string
294
+ *
295
+ * @access public
296
+ */
297
+ public function reset() {
298
+ $type = trim(AAM_Core_Request::post('type'));
299
+ $id = intval(AAM_Core_Request::post('id', 0));
300
+
301
+ $object = AAM_Backend_View::getSubject()->getObject($type, $id);
302
+ if ($object instanceof AAM_Core_Object) {
303
+ $result = $object->reset();
304
+ //clear cache
305
+ do_action('aam-clear-cache-action', AAM_Backend_View::getSubject());
306
+ } else {
307
+ $result = false;
308
+ }
309
+
310
+ return json_encode(
311
+ array('status' => ($result ? 'success' : 'failure'))
312
+ );
313
+ }
314
 
315
  /**
316
  *
Application/Backend/ProductList.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ return array(
11
+ array(
12
+ 'title' => 'AAM Plus Package',
13
+ 'id' => 'AAM Plus Package',
14
+ 'type' => 'commercial',
15
+ 'cost' => '$30',
16
+ 'currency' => 'USD',
17
+ 'description' => __('Unlock limitations related to Posts and Pages feature. Extend basic AAM functionality with Page Categories and ability to manage access to your comments (AAM Plus Package adds new capabilities to the default list of WordPress capabilities like Edit Comments, Delete Comments, Spam Comments etc.)', AAM_KEY),
18
+ 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FGAHULDEFZV4U',
19
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Plus Package')
20
+ ),
21
+ array(
22
+ 'title' => 'AAM Role Filter',
23
+ 'id' => 'AAM Role Filter',
24
+ 'type' => 'commercial',
25
+ 'cost' => '$5',
26
+ 'currency' => 'USD',
27
+ 'description' => __('Extension for more advanced user and role administration. Based on user\'s highest level capability, filter list of roles with higher level. Also prevent from editing, promoting or deleting higher level users.', AAM_KEY),
28
+ 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=G9V4BT3T8WJSN',
29
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Role Filter')
30
+ ),
31
+ array(
32
+ 'title' => 'AAM Dev License',
33
+ 'id' => 'AAM Development License',
34
+ 'type' => 'commercial',
35
+ 'cost' => '$150',
36
+ 'currency' => 'USD',
37
+ 'description' => __('Development license gives you an ability to download all the available extensions and use them to up to 5 life domains.', AAM_KEY),
38
+ 'storeURL' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZX9RCWU6BTE52',
39
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Development License')
40
+ ),
41
+ array(
42
+ 'title' => 'AAM Utilities',
43
+ 'id' => 'AAM Utilities',
44
+ 'type' => 'GNU',
45
+ 'license' => 'AAMUTILITIES',
46
+ 'description' => __('Various useful tools for AAM like caching or clear all settings.', AAM_KEY),
47
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Utilities')
48
+ ),
49
+ array(
50
+ 'title' => 'AAM Multisite',
51
+ 'id' => 'AAM Multisite',
52
+ 'type' => 'GNU',
53
+ 'license' => 'AAMMULTISITE',
54
+ 'description' => __('Convenient way to navigate between different sites in the Network Admin Panel. This extension adds additional widget to the AAM page that allows to switch between different sites.', AAM_KEY),
55
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Multisite')
56
+ ),
57
+ array(
58
+ 'title' => 'AAM Post Filter',
59
+ 'id' => 'AAM Post Filter',
60
+ 'type' => 'GNU',
61
+ 'license' => 'AAMPOSTFILTER',
62
+ 'description' => AAM_Backend_Helper::preparePhrase('[WARNING!] Please use with caution. This is a supportive exension for the post access option [List]. It adds additional post filtering to fix the issue with large amount of post. [Turned on caching] is strongly recommended.', 'strong', 'strong', 'strong'),
63
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Post Filter')
64
+ ),
65
+ array(
66
+ 'title' => 'AAM Skeleton Extension',
67
+ 'id' => 'AAM Skeleton Extension',
68
+ 'type' => 'GNU',
69
+ 'license' => 'SKELETONEXT',
70
+ 'description' => __('Skeleton for custom AAM extension. Please find all necessary documentation inside the source code.', AAM_KEY),
71
+ 'status' => AAM_Core_Repository::getInstance()->extensionStatus('AAM Skeleton Extension')
72
+ ),
73
+ array(
74
+ 'title' => 'User Switching',
75
+ 'id' => 'User Switching',
76
+ 'type' => 'plugin',
77
+ 'description' => __('Instant switching between user accounts in WordPress. ', AAM_KEY),
78
+ 'status' => AAM_Core_Repository::getInstance()->pluginStatus('User Switching')
79
+ )
80
+ );
Application/Backend/User.php CHANGED
@@ -89,11 +89,21 @@ class AAM_Backend_User {
89
  $actions = array('manage');
90
 
91
  $prefix = ($user->ID == get_current_user_id() ? 'no-' : '');
 
92
  $actions[] = $prefix . ($user->user_status ? 'unlock' : 'lock');
93
-
94
  $actions[] = 'edit';
95
  }
96
 
 
 
 
 
 
 
 
 
 
 
97
  return $actions;
98
  }
99
 
89
  $actions = array('manage');
90
 
91
  $prefix = ($user->ID == get_current_user_id() ? 'no-' : '');
92
+
93
  $actions[] = $prefix . ($user->user_status ? 'unlock' : 'lock');
 
94
  $actions[] = 'edit';
95
  }
96
 
97
+ if (class_exists('user_switching')) {
98
+ $url = user_switching::maybe_switch_url($user);
99
+
100
+ if (!in_array('edit', $actions) || empty($url)) {
101
+ $actions[] = 'no-switch';
102
+ } else {
103
+ $actions[] = 'switch|' . $url;
104
+ }
105
+ }
106
+
107
  return $actions;
108
  }
109
 
Application/Backend/View.php CHANGED
@@ -86,29 +86,26 @@ class AAM_Backend_View {
86
  public function processAjax() {
87
  $response = null;
88
 
89
- $act = explode('.', AAM_Core_Request::request('sub_action'));
 
90
 
91
- if (count($act) == 1 && method_exists($this, $act[0])) {
92
- $response = call_user_func(array($this, $act[0]));
93
- } else {
94
- $classname = 'AAM_Backend_' . $act[0];
95
  if (class_exists($classname)) {
96
- $object = new $classname();
97
- if (method_exists($object, $act[1])) {
98
- $response = call_user_func(array($object, $act[1]));
99
  }
100
  }
101
  }
102
 
103
- if (is_null($response)) {
104
- $response = apply_filters(
105
- 'aam-ajax-action', $response, $this->getSubject(), $act[0], $act[1]
106
- );
107
- }
108
-
109
- return $response;
110
  }
111
-
112
  /**
113
  * Render the Main Control Area
114
  *
@@ -149,8 +146,8 @@ class AAM_Backend_View {
149
  * @access public
150
  */
151
  public function save() {
152
- $object = AAM_Core_Request::post('object');
153
- $objectId = AAM_Core_Request::post('objectId', 0);
154
 
155
  $param = AAM_Core_Request::post('param');
156
  $value = filter_var(
@@ -171,6 +168,22 @@ class AAM_Backend_View {
171
  'status' => AAM_Core_API::updateOption('aam-welcome', 0)
172
  ));
173
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
  /**
176
  * Get Subject
86
  public function processAjax() {
87
  $response = null;
88
 
89
+ $action = AAM_Core_Request::request('sub_action');
90
+ $parts = explode('.', $action);
91
 
92
+ if (method_exists($this, $parts[0])) {
93
+ $response = call_user_func(array($this, $parts[0]));
94
+ } elseif (count($parts) == 2) { //cover the Model.method pattern
95
+ $classname = 'AAM_Backend_' . $parts[0];
96
  if (class_exists($classname)) {
97
+ $object = new $classname;
98
+ if (method_exists($object, $parts[1])) {
99
+ $response = call_user_func(array($object, $parts[1]));
100
  }
101
  }
102
  }
103
 
104
+ return apply_filters(
105
+ 'aam-ajax-filter', $response, $this->getSubject(), $action
106
+ );
 
 
 
 
107
  }
108
+
109
  /**
110
  * Render the Main Control Area
111
  *
146
  * @access public
147
  */
148
  public function save() {
149
+ $object = trim(AAM_Core_Request::post('object'));
150
+ $objectId = intval(AAM_Core_Request::post('objectId', 0));
151
 
152
  $param = AAM_Core_Request::post('param');
153
  $value = filter_var(
168
  'status' => AAM_Core_API::updateOption('aam-welcome', 0)
169
  ));
170
  }
171
+
172
+ /**
173
+ *
174
+ * @return type
175
+ */
176
+ public function getErrorFixStatus() {
177
+ $plugin = AAM_Core_Repository::getInstance()->pluginStatus('WP Error Fix');
178
+
179
+ if ($plugin['status'] == 'install') {
180
+ $response = array('status' => 'show', 'url' => $plugin['url']);
181
+ } else {
182
+ $response = array('status' => 'hide');
183
+ }
184
+
185
+ return json_encode($response);
186
+ }
187
 
188
  /**
189
  * Get Subject
Application/Backend/view/extension.phtml CHANGED
@@ -1,151 +1,116 @@
1
- <div class="aam-feature" id="extension-content">
2
- <div class="row">
3
- <div class="col-xs-12">
4
- <p class="aam-info">
5
- <?php echo AAM_Backend_Helper::preparePhrase('One license is limited to one domain only but it can be used for unlimited number of test or development environments where URL is either [localhost] or starts with [dev.], [staging.] or [test.]', 'i', 'i', 'i', 'i'); ?>
6
- </p>
7
- </div>
8
- </div>
9
-
10
- <label for="extension-key"><?php echo __('Install Extension', AAM_KEY); ?> <a href="#install-extension-modal" data-toggle="modal"><i class="icon-help-circled"></i></a></label>
11
- <div class="row">
12
- <div class="col-xs-8">
13
- <div class="form-group">
14
- <input type="text" class="form-control" id="extension-key" placeholder="<?php echo __('License Key', AAM_KEY); ?>" />
15
  </div>
16
  </div>
17
- <div class="col-xs-4">
18
- <button class="btn btn-primary btn-block" id="install-extension"><i class="icon-download-cloud"></i> <?php echo __('Install', AAM_KEY); ?></button>
 
 
 
 
 
 
 
 
 
19
  </div>
20
- </div>
21
 
22
- <table class="table table-striped table-bordered aam-margin-top-xs" id="extension-list">
23
- <thead>
24
- <tr>
25
- <th width="80%"><?php echo __('Extension', AAM_KEY); ?></th>
26
- <th><?php echo __('Action', AAM_KEY); ?></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <?php $dev = AAM_Core_Repository::getInstance()->extensionStatus('AAM Development License'); ?>
31
- <?php if ($dev !== AAM_Core_Repository::STATUS_INSTALLED) { ?>
32
  <tr>
33
- <td>
34
- <strong>AAM Development License - $150 <small>USD</small></strong>
35
- <p class="text-justify">
36
- <?php echo __('Development license gives you an ability to download all the available extensions and use them to up to 5 life domains.', AAM_KEY); ?>
37
- </p>
38
- </td>
39
- <td>
40
- <?php if ($dev == AAM_Core_Repository::STATUS_UPDATE) { ?>
41
- <a href="#" class="btn btn-warning btn-block aam-update-extension" data-product="AAM Development License"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
42
- <?php } else { ?>
43
- <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZX9RCWU6BTE52" target="_blank" class="btn btn-success btn-block"><i class="icon-basket"></i> <?php echo __('Purchase', AAM_KEY); ?></a>
44
- <?php } ?>
45
- </td>
46
- </tr>
47
- <?php } ?>
48
- <?php $plusPackage = AAM_Core_Repository::getInstance()->extensionStatus('AAM Plus Package'); ?>
49
- <?php if ($plusPackage !== AAM_Core_Repository::STATUS_INSTALLED) { ?>
50
- <tr>
51
- <td>
52
- <strong>AAM Plus Package - $30 <small>USD</small></strong>
53
- <p class="text-justify">
54
- <?php echo __('Unlock limitations related to Posts and Pages feature. Extend basic AAM functionality with Page Categories and ability to manage access to your comments (AAM Plus Package adds new capabilities to the default list of WordPress capabilities like Edit Comments, Delete Comments, Spam Comments etc.).', AAM_KEY); ?>
55
- </p>
56
- </td>
57
- <td>
58
- <?php if ($plusPackage == AAM_Core_Repository::STATUS_UPDATE) { ?>
59
- <a href="#" class="btn btn-warning btn-block aam-update-extension" data-product="AAM Plus Package"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
60
- <?php } else { ?>
61
- <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FGAHULDEFZV4U" target="_blank" class="btn btn-success btn-block"><i class="icon-basket"></i> <?php echo __('Purchase', AAM_KEY); ?></a>
62
- <?php } ?>
63
- </td>
64
  </tr>
65
- <?php } ?>
66
- <?php $utilities = AAM_Core_Repository::getInstance()->extensionStatus('AAM Utilities'); ?>
67
- <?php if ($utilities !== AAM_Core_Repository::STATUS_INSTALLED) { ?>
68
- <tr>
69
- <td>
70
- <strong>AAM Utilities - <span class="text-success">Free</span></strong>
71
- <p class="text-justify">
72
- <?php echo __('Various useful tools for AAM like caching or clear all settings.', AAM_KEY); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  </p>
74
  </td>
75
- <td>
76
- <?php if ($utilities == AAM_Core_Repository::STATUS_UPDATE) { ?>
77
- <a href="#" class="btn btn-warning btn-block aam-update-extension" data-product="AAM Utilities"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
78
- <?php } else { ?>
79
- <a href="#" class="btn btn-success btn-block aam-download-extension" data-license="AAMUTILITIES"><i class="icon-download-cloud"></i> <?php echo __('Download', AAM_KEY); ?></a>
80
- <?php } ?>
81
- </td>
82
  </tr>
83
- <?php } ?>
84
- <?php $multisite = AAM_Core_Repository::getInstance()->extensionStatus('AAM Multisite'); ?>
85
- <?php if ($multisite !== AAM_Core_Repository::STATUS_INSTALLED) { ?>
86
- <tr>
87
- <td>
88
- <strong>AAM Multisite - <span class="text-success">Free</span></strong>
89
- <p class="text-justify">
90
- <?php echo __('Convenient way to navigate between different sites in the Network Admin Panel. This extension adds additional widget to the AAM page that allows to switch between different sites.', AAM_KEY); ?>
 
 
 
 
 
91
  </p>
92
- </td>
93
- <td>
94
- <?php if ($multisite == AAM_Core_Repository::STATUS_UPDATE) { ?>
95
- <a href="#" class="btn btn-warning btn-block aam-update-extension" data-product="AAM Multisite"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
96
- <?php } else { ?>
97
- <a href="#" class="btn btn-success btn-block aam-download-extension" data-license="AAMMULTISITE"><i class="icon-download-cloud"></i> <?php echo __('Download', AAM_KEY); ?></a>
98
- <?php } ?>
99
- </td>
100
- </tr>
101
- <?php } ?>
102
- <tr id="extension-list-empty" class="hidden">
103
- <td colspan="2">
104
- <p class="aam-notification-message text-center">
105
- <?php echo __('All extensions are installed and up to date.', AAM_KEY); ?>
106
- </p>
107
- </td>
108
- </tr>
109
- </tbody>
110
- </table>
111
 
112
- <div class="modal fade" id="extension-notification-modal" tabindex="-1" role="dialog">
113
- <div class="modal-dialog" role="document">
114
- <div class="modal-content">
115
- <div class="modal-header">
116
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
117
- <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
118
- </div>
119
- <div class="modal-body">
120
- <p class="text-center aam-notification-message">
121
- <strong><span id="installation-error"></span></strong>. <?php echo sprintf(__('Click "Download" button below for a manual installation. Simply unzip the archive to wp-content%s directory.', AAM_KEY), AAM_Core_Repository::RELPATH); ?>
122
- </p>
123
- </div>
124
- <div class="modal-footer">
125
- <button type="button" class="btn btn-success" id="download-extension"><?php echo __('Download', AAM_KEY); ?></button>
126
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Cancel', AAM_KEY); ?></button>
127
  </div>
128
  </div>
129
  </div>
130
- </div>
131
-
132
- <div class="modal fade" id="install-extension-modal" tabindex="-1" role="dialog">
133
- <div class="modal-dialog" role="document">
134
- <div class="modal-content">
135
- <div class="modal-header">
136
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
137
- <h4 class="modal-title"><?php echo __('Install Extension Info', AAM_KEY); ?></h4>
138
- </div>
139
- <div class="modal-body">
140
- <p class="text-justify aam-notification-message">
141
- <?php echo __('In order to install premium extension, please use PayPal transaction ID number that you recieved after the payment was completed successfully (it might take up to 2 hours for PayPal to send you the email). If you already purchased an extension for the older AAM version, use the license key but please remember that it is limited only to one life domain.', AAM_KEY); ?>
142
- </p>
143
- </div>
144
- <div class="modal-footer">
145
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
146
  </div>
147
  </div>
148
  </div>
149
  </div>
150
-
151
- </div>
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="extension-content">
3
+ <div class="row">
4
+ <div class="col-xs-12">
5
+ <p class="aam-info">
6
+ <?php echo AAM_Backend_Helper::preparePhrase('One license is limited to one domain only but it can be used for unlimited number of test or development environments where URL is either [localhost] or starts with [dev.], [staging.] or [test.]', 'i', 'i', 'i', 'i'); ?><br/>
7
+ </p>
 
 
 
 
 
 
 
8
  </div>
9
  </div>
10
+
11
+ <label for="extension-key"><?php echo __('Install Extension', AAM_KEY); ?> <a href="#install-extension-modal" data-toggle="modal"><i class="icon-help-circled"></i></a></label>
12
+ <div class="row">
13
+ <div class="col-xs-8">
14
+ <div class="form-group">
15
+ <input type="text" class="form-control" id="extension-key" placeholder="<?php echo __('License Key', AAM_KEY); ?>" />
16
+ </div>
17
+ </div>
18
+ <div class="col-xs-4">
19
+ <button class="btn btn-primary btn-block" id="install-extension"><i class="icon-download-cloud"></i> <?php echo __('Install', AAM_KEY); ?></button>
20
+ </div>
21
  </div>
 
22
 
23
+ <table class="table table-striped table-bordered aam-margin-top-xs" id="extension-list">
24
+ <thead>
 
 
 
 
 
 
 
 
25
  <tr>
26
+ <th width="80%"><?php echo __('Extension', AAM_KEY); ?></th>
27
+ <th><?php echo __('Action', AAM_KEY); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  </tr>
29
+ </thead>
30
+ <tbody>
31
+ <?php foreach ($this->getProductList() as $product) { ?>
32
+ <tr>
33
+ <td>
34
+ <h4><?php echo $product['title'], ' - ' . ($product['type'] == 'commercial' ? $product['cost'] . ' <small>' . $product['currency'] . '</small>' : '<span class="text-success">' . __('Free', AAM_KEY) . '</span>'); ?></h4>
35
+ <p class="text-justify">
36
+ <?php echo $product['description']; ?>
37
+ </p>
38
+ </td>
39
+ <td>
40
+ <?php if ($product['status'] == AAM_Core_Repository::STATUS_INSTALLED) { ?>
41
+ <span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
42
+ <?php } elseif ($product['status'] == AAM_Core_Repository::STATUS_UPDATE) { ?>
43
+ <a href="#" class="btn btn-warning btn-block aam-update-extension" data-product="<?php echo $product['id']; ?>"><i class="icon-arrows-cw"></i> <?php echo __('Update', AAM_KEY); ?></a>
44
+ <?php } elseif ($product['type'] == 'commercial') { ?>
45
+ <a href="<?php echo $product['storeURL']; ?>" target="_blank" class="btn btn-success btn-block"><i class="icon-basket"></i> <?php echo __('Purchase', AAM_KEY); ?></a>
46
+ <?php } elseif ($product['type'] == 'plugin') { ?>
47
+ <?php if ($product['status']['status'] == 'install') { ?>
48
+ <a href="<?php echo $product['status']['url']; ?>" class="btn btn-success btn-block"><i class="icon-plus"></i> <?php echo __('Install', AAM_KEY); ?></a>
49
+ <?php } else { ?>
50
+ <span class="aam-extension-installed"><i class="icon-check"></i> <?php echo __('Installed', AAM_KEY); ?></span>
51
+ <?php } ?>
52
+ <?php } else { ?>
53
+ <a href="#" class="btn btn-success btn-block aam-download-extension" data-license="<?php echo $product['license']; ?>"><i class="icon-download-cloud"></i> <?php echo __('Download', AAM_KEY); ?></a>
54
+ <?php } ?>
55
+ </td>
56
+ </tr>
57
+ <?php } ?>
58
+
59
+ <tr id="extension-list-empty" class="hidden">
60
+ <td colspan="2">
61
+ <p class="aam-notification-message text-center">
62
+ <?php echo __('All extensions are installed and up to date.', AAM_KEY); ?>
63
  </p>
64
  </td>
 
 
 
 
 
 
 
65
  </tr>
66
+ </tbody>
67
+ </table>
68
+
69
+ <div class="modal fade" id="extension-notification-modal" tabindex="-1" role="dialog">
70
+ <div class="modal-dialog" role="document">
71
+ <div class="modal-content">
72
+ <div class="modal-header">
73
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
74
+ <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
75
+ </div>
76
+ <div class="modal-body">
77
+ <p class="text-center aam-notification">
78
+ <strong><span id="installation-error"></span>.</strong> <?php echo __('Extension requires manual installation. Please follow few simple steps below.', AAM_KEY); ?>
79
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
+ <ul class="aam-outer-top-xs aam-numeric-list">
82
+ <li><?php echo AAM_Backend_Helper::preparePhrase('Click [Download] button below and save the zip archive on your computer', 'b'); ?>;</li>
83
+ <li><?php echo AAM_Backend_Helper::preparePhrase('Connect to your website via FTP and navigate to [wp-content] folder', 'b'); ?>;</li>
84
+ <li><?php echo AAM_Backend_Helper::preparePhrase('Create [aam/extension] folder inside [wp-content] and make sure it is writable by your server', 'b', 'b'); ?>;</li>
85
+ <li><?php echo AAM_Backend_Helper::preparePhrase('Unzip downloaded archive and transfer the folder inside the [wp-content/aam/extension] folder', 'b'); ?>.</li>
86
+ </ul>
87
+ </div>
88
+ <div class="modal-footer">
89
+ <button type="button" class="btn btn-success" id="download-extension"><?php echo __('Download', AAM_KEY); ?></button>
90
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Cancel', AAM_KEY); ?></button>
91
+ </div>
 
 
 
 
92
  </div>
93
  </div>
94
  </div>
95
+
96
+ <div class="modal fade" id="install-extension-modal" tabindex="-1" role="dialog">
97
+ <div class="modal-dialog" role="document">
98
+ <div class="modal-content">
99
+ <div class="modal-header">
100
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
101
+ <h4 class="modal-title"><?php echo __('Install Extension Info', AAM_KEY); ?></h4>
102
+ </div>
103
+ <div class="modal-body aam-info-modal">
104
+ <p>
105
+ <?php echo __('In order to install the extension, please use license number that you recieved after the payment was completed successfully (it might take up to 2 hours for PayPal to send you the email). If you already purchased an extension for the older AAM version, use the license key but please remember that it is limited only to one life domain.', AAM_KEY); ?>
106
+ </p>
107
+ </div>
108
+ <div class="modal-footer">
109
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
110
+ </div>
111
  </div>
112
  </div>
113
  </div>
114
  </div>
115
+ <?php
116
+ }
Application/Backend/view/index.phtml CHANGED
@@ -1,319 +1,306 @@
1
- <div class="wrap">
2
- <div class="row aam-no-margin aam-notification-container<?php echo (AAM_Core_Console::hasIssues() ? '' : ' hidden') ?>">
3
- <div class="col-xs-12">
4
- <div class="row aam-notification">
5
- <div class="col-xs-4 col-md-2 aam-notification-icon">
6
- <i class="icon-attention-circled"></i>
 
 
 
 
 
 
 
 
 
7
  </div>
8
- <div class="col-xs-8 col-md-10 aam-notification-content">
9
- <ul class="aam-error-list">
10
- <?php foreach (AAM_Core_Console::getWarnings() as $message) { ?>
11
- <li><?php echo $message; ?></li>
12
- <?php } ?>
13
- </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  </div>
15
  </div>
16
  </div>
17
- </div>
18
-
19
- <div class="row">
20
- <div class="col-xs-12 col-md-8">
21
- <h1 class="aam-current-subject"></h1>
22
  </div>
23
- </div>
24
-
25
- <div class="row">
26
- <div class="col-xs-12 col-md-8">
27
- <div class="metabox-holder">
28
- <div class="postbox">
29
- <h3 class="hndle">
30
- <span><?php echo __('Access Manager', AAM_KEY); ?></span>
31
- <span class="aam-help-menu" data-target="#access-manager-inside"><i class="icon-help-circled"></i></span>
32
- </h3>
33
- <div class="inside" id="access-manager-inside">
34
- <div class="aam-postbox-inside" id="aam-content"></div>
35
- <div class="aam-help-context" >
36
- <p class="aam-info aam-hint">
37
- <strong><?php echo __('Note from the author', AAM_KEY); ?></strong><br/>
38
- <?php echo __('Appreciate your interest in Advanced Access Manager (aka AAM). With a strong knowledge and experience in WordPress, AAM becomes a very powerful tool to manage access to your frontend and backend.', AAM_KEY); ?><br/>
39
- <span class="aam-highlight"><?php echo __('Please notice!', AAM_KEY); ?></span> <?php echo AAM_Backend_Helper::preparePhrase('Power comes with responsibility. Make sure that you have enough knowledge in WordPress Roles and Capabilities because AAM is very closely tight to WordPress core. It is also very important [to have backup of your database before you start working with AAM] (there is no need to backup your files, AAM does not modify any physical files on your server and never did).', 'b'); ?><br/>
40
- <?php echo __('AAM was thoroughly tested on the fresh installation of WordPress and in the latest versions of Chrome, Safari, IE and Firefox. If you have any issues, please make sure that there is no conflict with other plugins on your WordPress installation.', AAM_KEY); ?><br/>
41
- <?php echo __('Please find below the short description of each feature that AAM offers.', AAM_KEY); ?>
42
- </p>
43
 
44
- <p class="text-justify">
45
- <strong><?php echo __('Backend Menu', AAM_KEY); ?></strong><br/>
46
- <?php echo __('Filter the admin menu. Please notice that it only filters the menu but does not restrict a direct access to the filtered menus. In order to completely restrict access to the menu, make sure that your role or user does not have capability that is assigned by WordPress core to that menu (the capability name is right next to the menu name).', AAM_KEY); ?>
47
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- <p class="text-justify">
50
- <strong><?php echo __('Metaboxes &amp; Widgets', AAM_KEY); ?></strong><br/>
51
- <?php echo __('Filter backend metaboxes and frontend widgets. If the list of metaboxes and widgets is empty, click the “Refresh” button. This will reinitialize the list. It is a possibility that this feature will not work on servers that fails to execute WordPress remote request function “wp_remote_request”.', AAM_KEY); ?>
52
- </p>
53
 
54
- <p class="text-justify">
55
- <strong><?php echo __('Capabilities', AAM_KEY); ?></strong><br/>
56
- <?php echo __('This is probably the most important and powerful feature that manages list of capabilities for roles and users. Please make sure that you are familiar with WordPress Roles and Capabilities before using this feature. Do not try to un-check any capability for the Administrator role because your might lose access to your backend. While creating a new capability, AAM takes the capability name without any additional processing or normalization; which means that if you created new capability Manage Boats”, internally it retains the same exact name.', AAM_KEY); ?>
57
- </p>
58
 
59
- <p class="text-justify">
60
- <strong><?php echo __('Posts &amp; Pages', AAM_KEY); ?></strong><br/>
61
- <?php echo __('Manage access to your posts, pages and custom post types.', AAM_KEY); ?> <span class="aam-highlight"><?php echo __('Please notice!', AAM_KEY); ?></span> <?php echo __('This feature has limitations without AAM Plus Package extension.', AAM_KEY); ?>
62
- </p>
63
 
64
- <p class="text-justify">
65
- <strong><?php echo __('Extensions', AAM_KEY); ?></strong><br/>
66
- <?php echo sprintf(__('Extend AAM functionality with variety of extensions that can be either downloaded for free or purchased. All payment transactions are handled securely through PayPal and the PayPal Transaction ID is used to obtain the purchased extension (you can find Transaction ID in the email that PayPal send you after the purchase). Most of the time the extension is available for download almost immediately but it might take up to 2 hours for PayPal to notify our server about your payment. You are allowed to get the full refund within 30 days after the purchase, if extension did not meet your expectation. Please submit the %srefund form%s and we will issue a refund within next 3 business days.', AAM_KEY), '<a href="http://vasyltech.com/advanced-access-manager" target="_blank">', '</a>'); ?>
67
- </p>
68
-
69
- <div class="aam-info aam-social">
70
- <a href="http://vasyltech.com" target="_blank"><i class="icon-home"></i></a>
71
- <a href="http://twitter.com/vasyltech" target="_blank"><i class="icon-twitter"></i></a>
72
- <a href="https://github.com/VasylTech/advanced-access-manager" target="_blank"><i class="icon-github"></i></a>
 
 
 
 
 
 
73
  </div>
74
  </div>
75
  </div>
76
  </div>
77
  </div>
78
- </div>
79
 
80
- <div class="col-xs-12 col-md-4">
81
- <div class="metabox-holder">
82
- <?php do_action('aam-sidebar-ui-action', 'top'); ?>
83
 
84
- <div class="postbox">
85
- <h3 class="hndle">
86
- <span><?php echo __('User/Role Manager', AAM_KEY); ?></span>
87
- <span class="aam-help-menu" data-target="#user-role-manager-inside"><i class="icon-help-circled"></i></span>
88
- </h3>
89
- <div class="inside" id="user-role-manager-inside">
90
- <div class="aam-postbox-inside">
91
- <ul class="nav nav-tabs" role="tablist">
92
- <li role="presentation" class="active"><a href="#roles" aria-controls="roles" role="tab" data-toggle="tab"><i class="icon-users"></i> <?php echo __('Roles', AAM_KEY); ?></a></li>
93
- <li role="presentation"><a href="#users" aria-controls="users" role="tab" data-toggle="tab"><i class="icon-user"></i> <?php echo __('Users', AAM_KEY); ?></a></li>
94
- <?php if (current_user_can('edit_users')) { ?>
95
- <li role="presentation"><a href="#visitor" aria-controls="visitor" role="tab" data-toggle="tab"><i class="icon-user-secret"></i> <?php echo __('Visitor', AAM_KEY); ?></a></li>
96
- <?php } ?>
97
- </ul>
98
- <div class="tab-content">
99
- <div role="tabpanel" class="tab-pane active" id="roles">
100
- <table id="role-list" class="table table-striped table-bordered">
101
- <thead>
102
- <tr>
103
- <th>ID</th>
104
- <th>Users</th>
105
- <th width="70%"><?php echo __('Role', AAM_KEY); ?></th>
106
- <th><?php echo __('Action', AAM_KEY); ?></th>
107
- </tr>
108
- </thead>
109
- <tbody></tbody>
110
- </table>
111
 
112
- <div class="modal fade" id="add-role-modal" tabindex="-1" role="dialog">
113
- <div class="modal-dialog modal-sm" role="document">
114
- <div class="modal-content">
115
- <div class="modal-header">
116
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
117
- <h4 class="modal-title"><?php echo __('Add New Role', AAM_KEY); ?></h4>
118
- </div>
119
- <div class="modal-body">
120
- <div class="form-group">
121
- <label for="new-role-name"><?php echo __('Role Name', AAM_KEY); ?><span class="aam-asterix">*</span></label>
122
- <input type="text" class="form-control" id="new-role-name" placeholder="<?php echo __('Enter Role Name', AAM_KEY); ?>" />
123
  </div>
124
- <div class="form-group">
125
- <label for="inherit-role-list"><?php echo __('Inherit Capabilities', AAM_KEY); ?></label>
126
- <select class="form-control" id="inherit-role-list">
127
- <option value=""><?php echo __('Select Role', AAM_KEY); ?></option>
128
- </select>
 
 
 
 
 
 
 
 
 
 
129
  </div>
130
- </div>
131
- <div class="modal-footer">
132
- <button type="button" class="btn btn-success" id="add-role-btn"><?php echo __('Add Role', AAM_KEY); ?></button>
133
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
134
  </div>
135
  </div>
136
  </div>
137
- </div>
138
 
139
- <div class="modal fade" id="edit-role-modal" tabindex="-1" role="dialog">
140
- <div class="modal-dialog modal-sm" role="document">
141
- <div class="modal-content">
142
- <div class="modal-header">
143
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
144
- <h4 class="modal-title"><?php echo __('Edit Role', AAM_KEY); ?></h4>
145
- </div>
146
- <div class="modal-body">
147
- <div class="form-group">
148
- <label for="new-role-name"><?php echo __('Role Name', AAM_KEY); ?></label>
149
- <input type="text" class="form-control" id="edit-role-name" placeholder="<?php echo __('Enter Role Name', AAM_KEY); ?>" />
 
 
 
 
 
150
  </div>
151
- </div>
152
- <div class="modal-footer">
153
- <button type="button" class="btn btn-success" id="edit-role-btn"><?php echo __('Update Role', AAM_KEY); ?></button>
154
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
155
  </div>
156
  </div>
157
  </div>
158
- </div>
159
 
160
- <div class="modal fade" id="delete-role-modal" tabindex="-1" role="dialog">
161
- <div class="modal-dialog modal-sm" role="document">
162
- <div class="modal-content">
163
- <div class="modal-header">
164
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
165
- <h4 class="modal-title"><?php echo __('Delete Role', AAM_KEY); ?></h4>
166
- </div>
167
- <div class="modal-body">
168
- <p class="text-center aam-confirm-message" data-message="<?php echo __('Are you sure that you want to delete %s role?', AAM_KEY); ?>"></p>
169
- </div>
170
- <div class="modal-footer">
171
- <button type="button" class="btn btn-danger" id="delete-role-btn"><?php echo __('Delete Role', AAM_KEY); ?></button>
172
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
 
173
  </div>
174
  </div>
175
  </div>
176
- </div>
177
 
178
- <div class="modal fade" id="role-notification-modal" tabindex="-1" role="dialog">
179
- <div class="modal-dialog" role="document">
180
- <div class="modal-content">
181
- <div class="modal-header">
182
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
183
- <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
184
- </div>
185
- <div class="modal-body">
186
- <p class="text-center aam-notification-message"><?php echo __('You are not allowed to delete this role because either you do not have a capability to "Delete Users" or there is at least one user assigned to it.', AAM_KEY); ?></p>
187
- </div>
188
- <div class="modal-footer">
189
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
 
190
  </div>
191
  </div>
192
  </div>
193
- </div>
194
 
195
- </div>
196
- <div role="tabpanel" class="tab-pane" id="users">
197
- <table id="user-list" class="table table-striped table-bordered">
198
- <thead>
199
- <tr>
200
- <th>ID</th>
201
- <th>Roles</th>
202
- <th width="70%"><?php echo __('Username', AAM_KEY); ?></th>
203
- <th><?php echo __('Action', AAM_KEY); ?></th>
204
- </tr>
205
- </thead>
206
- <tbody></tbody>
207
- </table>
208
 
209
- <div class="modal fade" id="user-notification-modal" tabindex="-1" role="dialog">
210
- <div class="modal-dialog modal-sm" role="document">
211
- <div class="modal-content">
212
- <div class="modal-header">
213
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
214
- <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
215
- </div>
216
- <div class="modal-body">
217
- <p class="text-center aam-notification-message"><?php echo __('You are not allowed to perform this action.', AAM_KEY); ?></p>
218
- </div>
219
- <div class="modal-footer">
220
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
 
221
  </div>
222
  </div>
223
  </div>
224
- </div>
225
 
226
- </div>
227
- <?php if (current_user_can('edit_users')) { ?>
228
- <div role="tabpanel" class="tab-pane" id="visitor">
229
- <div class="visitor-message">
230
- <span><?php echo __('Manage access to your website for visitors (any user that is not authenticated)', AAM_KEY); ?>.</span>
231
- <button class="btn btn-primary btn-block" id="manage-visitor"><i class="icon-cog"></i> <?php echo __('Manage Visitor', AAM_KEY); ?></button>
232
  </div>
 
 
 
 
 
 
 
 
233
  </div>
234
- <?php } ?>
235
  </div>
236
- </div>
237
- <div class="aam-help-context">
238
- <p class="aam-info aam-hint">
239
- <?php echo AAM_Backend_Helper::preparePhrase('Manage access for your users, roles and visitors. Please be careful with Administrator role as well as your admin user. [Database backup is strongly recommended]', 'b'); ?>
240
- </p>
241
 
242
- <p class="text-justify">
243
- <strong><?php echo __('Role Manager', AAM_KEY); ?></strong><br/>
244
- <?php echo __('With role manager you can manage access for any defined role, edit role\'s name, create new role or even delete existing (but only when there is no users assigned to it). You are not allowed to delete Administrator role.', AAM_KEY); ?>
245
- </p>
246
 
247
- <p class="text-justify">
248
- <strong><?php echo __('User Manager', AAM_KEY); ?></strong><br/>
249
- <?php echo __('Manage access for any user. As a bonus feature, you can block user. It means that user will be not able to login to your website anymore. Create or edit user actions link to the native WordPress create/edit user interface.', AAM_KEY); ?>
250
- </p>
251
 
252
- <p class="text-justify">
253
- <strong><?php echo __('Visitor Manager', AAM_KEY); ?></strong><br/>
254
- <?php echo __('Visitor is any user that is not authenticated to your website. Considering the fact that visitors do not have any access to backend, any features that ara backend related are disabled.', AAM_KEY); ?>
255
- </p>
256
-
257
- <div class="aam-info aam-social">
258
- <a href="http://vasyltech.com" target="_blank"><i class="icon-home"></i></a>
259
- <a href="http://twitter.com/vasyltech" target="_blank"><i class="icon-twitter"></i></a>
260
- <a href="https://github.com/VasylTech/advanced-access-manager" target="_blank"><i class="icon-github"></i></a>
 
261
  </div>
262
  </div>
263
  </div>
264
- </div>
265
- <?php do_action('aam-sidebar-ui-action', 'bottom'); ?>
266
- </div>
267
- </div>
268
- </div>
269
- </div>
270
-
271
- <div class="aam-welcome-message">
272
- <div class="row aam-no-margin aam-notification-container hidden">
273
- <div class="col-xs-12">
274
- <div class="row aam-notification">
275
- <div class="col-xs-4 col-md-2 aam-notification-icon">
276
- <i class="icon-attention-circled"></i>
277
- </div>
278
- <div class="col-xs-8 col-md-10 aam-notification-content">
279
- <ul class="aam-error-list"></ul>
280
  </div>
281
  </div>
282
  </div>
283
  </div>
284
-
285
- <h1><?php echo AAM_Backend_Helper::preparePhrase('Welcome to [Advanced Access Manager] [(aka AAM)]', 'strong', 'small'); ?></h1>
286
-
287
- <p class="aam-info aam-margin-top-xs">
288
- <?php echo sprintf(__('Follow us on twitter %s for the latest Advanced Access Manager news.', AAM_KEY), '<strong><a href="https://twitter.com/vasyltech/" target="_blank">@vasyltech</a></strong>'); ?>
289
- </p>
290
-
291
- <h2 class="aam-margin-top-xs"><?php echo __('What\'s New', AAM_KEY); ?></h2>
292
- <ul>
293
- <li><?php echo __('Brand new and much more intuitive user interface.', AAM_KEY); ?></li>
294
- <li><?php echo __('Fully responsive design so you can manage access to website even on your smart phone.', AAM_KEY); ?></li>
295
- <li><?php echo __('Better, more reliable and faster core functionality.', AAM_KEY); ?></li>
296
- <li><?php echo __('Completely new extension handler. In case of any file system failure, you can download an extension for manual installation.', AAM_KEY); ?></li>
297
- <li><?php echo __('Added "Manage Access" action to the list of user.', AAM_KEY); ?></li>
298
- </ul>
299
-
300
- <h2 class="aam-highlight aam-margin-top-xs"><?php echo __('Please be aware of the latest changes!', AAM_KEY); ?></h2>
301
- <ul>
302
- <li><?php echo __('"Save" button has been removed. Any changes that you perform are saved automatically.', AAM_KEY); ?></li>
303
- <li><?php echo sprintf('With the first release of AAM version 3, not all extensions from AAM version 2 available for download. More extensions are coming soon. Follow us on twitter %s for the latest news.', '<strong><a href="https://twitter.com/vasyltech/" target="_blank">@vasyltech</a></strong>'); ?></li>
304
- <li><?php echo __('License key for an extension is valid for one life domain only. All the licenses that were purchased before are still valid but limited to one domain with AAM version 3 (with AAM version 2 it is still unlimited until April 2016).', AAM_KEY); ?></li>
305
- <li><?php echo __('Development License is valid for 5 domains with AAM version 3 but is still unlimited with version 2 (only until April 2016).', AAM_KEY); ?></li>
306
- <li><?php echo __('Posts &amp; Pages settings from AAM version 2 are not compatible with AAM version 3.', AAM_KEY); ?></li>
307
- <li><?php echo __('You are not allowed to delete or lock an "Administrator" role.', AAM_KEY); ?></li>
308
- <li><?php echo __('There is no longer a "Super Admin" role.', AAM_KEY); ?></li>
309
- <li><?php echo __('You are not longer allowed to delete any user or group or users (but you still can do it within native WordPress interface).', AAM_KEY); ?></li>
310
- <li><?php echo __('You are not allowed to delete any capability (even the one that you created manually).', AAM_KEY); ?></li>
311
- </ul>
312
-
313
- <h3>Rollback to AAM version 2</h3>
314
- <p><?php echo sprintf(__('You can rolleback to the earlier version of AAM by simply downloading any previous version on %sthis page%s. After download, replace the wp-content/plugins/advanced-access-manager directory with the archive\'s content.'), '<a href="https://wordpress.org/plugins/advanced-access-manager/developers/" target="_blank">', '</a>'); ?></p>
315
-
316
- <p class="aam-margin-top-xs text-center">
317
- <a href="#" class="btn btn-lg btn-primary" id="confirm-welcome"><i class="icon-check"></i> <?php echo __('Ok, got it', AAM_KEY); ?></a>
318
- </p>
319
- </div>
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="wrap">
3
+ <div class="row aam-no-margin aam-notification-container<?php echo (AAM_Core_Console::hasIssues() ? '' : ' hidden') ?>">
4
+ <div class="col-xs-12">
5
+ <div class="row aam-notification">
6
+ <div class="col-xs-4 col-md-2 aam-notification-icon">
7
+ <i class="icon-attention-circled"></i>
8
+ </div>
9
+ <div class="col-xs-8 col-md-10 aam-notification-content">
10
+ <ul class="aam-error-list">
11
+ <?php foreach (AAM_Core_Console::getWarnings() as $message) { ?>
12
+ <li><?php echo $message; ?></li>
13
+ <?php } ?>
14
+ </ul>
15
+ </div>
16
  </div>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="modal fade" id="cache-info-modal" tabindex="-1" role="dialog">
21
+ <div class="modal-dialog" role="document">
22
+ <div class="modal-content">
23
+ <div class="modal-header">
24
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
25
+ <h4 class="modal-title"><?php echo __('Cache Information', AAM_KEY); ?></h4>
26
+ </div>
27
+ <div class="modal-body">
28
+ <p class="aam-info"><?php echo __('AAM main objective is to control access to your frontend and backend resources. In some cases your website may get slower because AAM performs additional checks. That is why it is important to have AAM caching turned on. Please follow few simple steps below to turn on the caching mechanism.', AAM_KEY); ?></p>
29
+ <ul class="aam-numeric-list">
30
+ <li><?php echo AAM_Backend_Helper::preparePhrase('Go to [Extensions] tab and click [Download] button for [AAM Utilities]', 'b', 'b', 'i'); ?>;</li>
31
+ <li><?php echo AAM_Backend_Helper::preparePhrase('After [AAM Utilities] installed successfully, go to [Utilities] tab and enable [Caching].', 'i', 'b', 'b'); ?></ol>
32
+ </ul>
33
+ </div>
34
+ <div class="modal-footer">
35
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
36
+ </div>
37
  </div>
38
  </div>
39
  </div>
40
+
41
+ <div class="row">
42
+ <div class="col-xs-12 col-md-8">
43
+ <h1 class="aam-current-subject"></h1>
44
+ </div>
45
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ <div class="row">
48
+ <div class="col-xs-12 col-md-8">
49
+ <div class="metabox-holder">
50
+ <div class="postbox">
51
+ <h3 class="hndle">
52
+ <span><?php echo __('Access Manager', AAM_KEY); ?></span>
53
+ <span class="aam-help-menu" data-target="#access-manager-inside"><i class="icon-help-circled"></i></span>
54
+ </h3>
55
+ <div class="inside" id="access-manager-inside">
56
+ <div class="aam-postbox-inside" id="aam-content"></div>
57
+ <div class="aam-help-context" >
58
+ <p class="aam-info aam-hint">
59
+ <strong><?php echo __('Note from the author', AAM_KEY); ?></strong><br/>
60
+ <?php echo __('Appreciate your interest in Advanced Access Manager (aka AAM). With a strong knowledge and experience in WordPress, AAM becomes a very powerful tool to manage access to your frontend and backend.', AAM_KEY); ?><br/>
61
+ <span class="aam-highlight"><?php echo __('Please notice!', AAM_KEY); ?></span> <?php echo AAM_Backend_Helper::preparePhrase('Power comes with responsibility. Make sure that you have enough knowledge in WordPress Roles and Capabilities because AAM is very closely tight to WordPress core. It is also very important [to have backup of your database before you start working with AAM] (there is no need to backup your files, AAM does not modify any physical files on your server and never did).', 'b'); ?><br/>
62
+ <?php echo __('AAM was thoroughly tested on the fresh installation of WordPress and in the latest versions of Chrome, Safari, IE and Firefox. If you have any issues, please make sure that there is no conflict with other plugins on your WordPress installation.', AAM_KEY); ?><br/>
63
+ <?php echo __('Please find below the short description of each feature that AAM offers.', AAM_KEY); ?>
64
+ </p>
65
 
66
+ <p class="text-justify">
67
+ <strong><?php echo __('Backend Menu', AAM_KEY); ?></strong><br/>
68
+ <?php echo __('Filter the admin menu. Please notice that it only filters the menu but does not restrict a direct access to the filtered menus. In order to completely restrict access to the menu, make sure that your role or user does not have capability that is assigned by WordPress core to that menu (the capability name is right next to the menu name).', AAM_KEY); ?>
69
+ </p>
70
 
71
+ <p class="text-justify">
72
+ <strong><?php echo __('Metaboxes &amp; Widgets', AAM_KEY); ?></strong><br/>
73
+ <?php echo __('Filter backend metaboxes and frontend widgets. If the list of metaboxes and widgets is empty, click the “Refresh” button. This will reinitialize the list. It is a possibility that this feature will not work on servers that fails to execute WordPress remote request functionwp_remote_request”.', AAM_KEY); ?>
74
+ </p>
75
 
76
+ <p class="text-justify">
77
+ <strong><?php echo __('Capabilities', AAM_KEY); ?></strong><br/>
78
+ <?php echo __('This is probably the most important and powerful feature that manages list of capabilities for roles and users. Please make sure that you are familiar with WordPress Roles and Capabilities before using this feature. Do not try to un-check any capability for the Administrator role because your might lose access to your backend. While creating a new capability, AAM takes the capability name without any additional processing or normalization; which means that if you created new capability “Manage Boats”, internally it retains the same exact name.', AAM_KEY); ?>
79
+ </p>
80
 
81
+ <p class="text-justify">
82
+ <strong><?php echo __('Posts &amp; Pages', AAM_KEY); ?></strong><br/>
83
+ <?php echo __('Manage access to your posts, pages and custom post types.', AAM_KEY); ?> <span class="aam-highlight"><?php echo __('Please notice!', AAM_KEY); ?></span> <?php echo __('This feature has limitations without AAM Plus Package extension.', AAM_KEY); ?>
84
+ </p>
85
+
86
+ <p class="text-justify">
87
+ <strong><?php echo __('Extensions', AAM_KEY); ?></strong><br/>
88
+ <?php echo sprintf(__('Extend AAM functionality with variety of extensions that can be either downloaded for free or purchased. All payment transactions are handled securely through PayPal and the PayPal Transaction ID is used to obtain the purchased extension (you can find Transaction ID in the email that PayPal send you after the purchase). Most of the time the extension is available for download almost immediately but it might take up to 2 hours for PayPal to notify our server about your payment. You are allowed to get the full refund within 30 days after the purchase, if extension did not meet your expectation. Please submit the %srefund form%s and we will issue a refund within next 3 business days.', AAM_KEY), '<a href="http://vasyltech.com/advanced-access-manager" target="_blank">', '</a>'); ?>
89
+ </p>
90
+
91
+ <div class="aam-info aam-social">
92
+ <a href="http://vasyltech.com" target="_blank"><i class="icon-home"></i></a>
93
+ <a href="http://twitter.com/vasyltech" target="_blank"><i class="icon-twitter"></i></a>
94
+ <a href="https://github.com/VasylTech/advanced-access-manager" target="_blank"><i class="icon-github"></i></a>
95
+ </div>
96
  </div>
97
  </div>
98
  </div>
99
  </div>
100
  </div>
 
101
 
102
+ <div class="col-xs-12 col-md-4">
103
+ <div class="metabox-holder">
104
+ <?php do_action('aam-sidebar-ui-action', 'top'); ?>
105
 
106
+ <div class="postbox">
107
+ <h3 class="hndle">
108
+ <span><?php echo __('User/Role Manager', AAM_KEY); ?></span>
109
+ <span class="aam-help-menu" data-target="#user-role-manager-inside"><i class="icon-help-circled"></i></span>
110
+ </h3>
111
+ <div class="inside" id="user-role-manager-inside">
112
+ <div class="aam-postbox-inside">
113
+ <ul class="nav nav-tabs" role="tablist">
114
+ <li role="presentation" class="active"><a href="#roles" aria-controls="roles" role="tab" data-toggle="tab"><i class="icon-users"></i> <?php echo __('Roles', AAM_KEY); ?></a></li>
115
+ <li role="presentation"><a href="#users" aria-controls="users" role="tab" data-toggle="tab"><i class="icon-user"></i> <?php echo __('Users', AAM_KEY); ?></a></li>
116
+ <?php if (current_user_can('edit_users')) { ?>
117
+ <li role="presentation"><a href="#visitor" aria-controls="visitor" role="tab" data-toggle="tab"><i class="icon-user-secret"></i> <?php echo __('Visitor', AAM_KEY); ?></a></li>
118
+ <?php } ?>
119
+ </ul>
120
+ <div class="tab-content">
121
+ <div role="tabpanel" class="tab-pane active" id="roles">
122
+ <table id="role-list" class="table table-striped table-bordered">
123
+ <thead>
124
+ <tr>
125
+ <th>ID</th>
126
+ <th>Users</th>
127
+ <th width="70%"><?php echo __('Role', AAM_KEY); ?></th>
128
+ <th><?php echo __('Action', AAM_KEY); ?></th>
129
+ </tr>
130
+ </thead>
131
+ <tbody></tbody>
132
+ </table>
133
 
134
+ <div class="modal fade" id="add-role-modal" tabindex="-1" role="dialog">
135
+ <div class="modal-dialog modal-sm" role="document">
136
+ <div class="modal-content">
137
+ <div class="modal-header">
138
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
139
+ <h4 class="modal-title"><?php echo __('Add New Role', AAM_KEY); ?></h4>
 
 
 
 
 
140
  </div>
141
+ <div class="modal-body">
142
+ <div class="form-group">
143
+ <label for="new-role-name"><?php echo __('Role Name', AAM_KEY); ?><span class="aam-asterix">*</span></label>
144
+ <input type="text" class="form-control" id="new-role-name" placeholder="<?php echo __('Enter Role Name', AAM_KEY); ?>" />
145
+ </div>
146
+ <div class="form-group">
147
+ <label for="inherit-role-list"><?php echo __('Inherit Capabilities', AAM_KEY); ?></label>
148
+ <select class="form-control" id="inherit-role-list">
149
+ <option value=""><?php echo __('Select Role', AAM_KEY); ?></option>
150
+ </select>
151
+ </div>
152
+ </div>
153
+ <div class="modal-footer">
154
+ <button type="button" class="btn btn-success" id="add-role-btn"><?php echo __('Add Role', AAM_KEY); ?></button>
155
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
156
  </div>
 
 
 
 
157
  </div>
158
  </div>
159
  </div>
 
160
 
161
+ <div class="modal fade" id="edit-role-modal" tabindex="-1" role="dialog">
162
+ <div class="modal-dialog modal-sm" role="document">
163
+ <div class="modal-content">
164
+ <div class="modal-header">
165
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
166
+ <h4 class="modal-title"><?php echo __('Edit Role', AAM_KEY); ?></h4>
167
+ </div>
168
+ <div class="modal-body">
169
+ <div class="form-group">
170
+ <label for="new-role-name"><?php echo __('Role Name', AAM_KEY); ?></label>
171
+ <input type="text" class="form-control" id="edit-role-name" placeholder="<?php echo __('Enter Role Name', AAM_KEY); ?>" />
172
+ </div>
173
+ </div>
174
+ <div class="modal-footer">
175
+ <button type="button" class="btn btn-success" id="edit-role-btn"><?php echo __('Update Role', AAM_KEY); ?></button>
176
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
177
  </div>
 
 
 
 
178
  </div>
179
  </div>
180
  </div>
 
181
 
182
+ <div class="modal fade" id="delete-role-modal" tabindex="-1" role="dialog">
183
+ <div class="modal-dialog modal-sm" role="document">
184
+ <div class="modal-content">
185
+ <div class="modal-header">
186
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
187
+ <h4 class="modal-title"><?php echo __('Delete Role', AAM_KEY); ?></h4>
188
+ </div>
189
+ <div class="modal-body">
190
+ <p class="text-center aam-confirm-message" data-message="<?php echo __('Are you sure that you want to delete %s role?', AAM_KEY); ?>"></p>
191
+ </div>
192
+ <div class="modal-footer">
193
+ <button type="button" class="btn btn-danger" id="delete-role-btn"><?php echo __('Delete Role', AAM_KEY); ?></button>
194
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
195
+ </div>
196
  </div>
197
  </div>
198
  </div>
 
199
 
200
+ <div class="modal fade" id="role-notification-modal" tabindex="-1" role="dialog">
201
+ <div class="modal-dialog" role="document">
202
+ <div class="modal-content">
203
+ <div class="modal-header">
204
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
205
+ <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
206
+ </div>
207
+ <div class="modal-body">
208
+ <p class="text-center aam-notification-message"><?php echo __('You are not allowed to delete this role because either you do not have a capability to "Delete Users" or there is at least one user assigned to it.', AAM_KEY); ?></p>
209
+ </div>
210
+ <div class="modal-footer">
211
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
212
+ </div>
213
  </div>
214
  </div>
215
  </div>
 
216
 
217
+ </div>
218
+ <div role="tabpanel" class="tab-pane" id="users">
219
+ <table id="user-list" class="table table-striped table-bordered">
220
+ <thead>
221
+ <tr>
222
+ <th>ID</th>
223
+ <th>Roles</th>
224
+ <th width="65%"><?php echo __('Username', AAM_KEY); ?></th>
225
+ <th><?php echo __('Action', AAM_KEY); ?></th>
226
+ </tr>
227
+ </thead>
228
+ <tbody></tbody>
229
+ </table>
230
 
231
+ <div class="modal fade" id="user-notification-modal" tabindex="-1" role="dialog">
232
+ <div class="modal-dialog modal-sm" role="document">
233
+ <div class="modal-content">
234
+ <div class="modal-header">
235
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
236
+ <h4 class="modal-title"><?php echo __('Notification', AAM_KEY); ?></h4>
237
+ </div>
238
+ <div class="modal-body">
239
+ <p class="text-center aam-notification-message"><?php echo __('You are not allowed to perform this action.', AAM_KEY); ?></p>
240
+ </div>
241
+ <div class="modal-footer">
242
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
243
+ </div>
244
  </div>
245
  </div>
246
  </div>
 
247
 
 
 
 
 
 
 
248
  </div>
249
+ <?php if (current_user_can('edit_users')) { ?>
250
+ <div role="tabpanel" class="tab-pane" id="visitor">
251
+ <div class="visitor-message">
252
+ <span><?php echo __('Manage access to your website for visitors (any user that is not authenticated)', AAM_KEY); ?>.</span>
253
+ <button class="btn btn-primary btn-block" id="manage-visitor"><i class="icon-cog"></i> <?php echo __('Manage Visitor', AAM_KEY); ?></button>
254
+ </div>
255
+ </div>
256
+ <?php } ?>
257
  </div>
 
258
  </div>
259
+ <div class="aam-help-context">
260
+ <p class="aam-info aam-hint">
261
+ <?php echo AAM_Backend_Helper::preparePhrase('Manage access for your users, roles and visitors. Please be careful with Administrator role as well as your admin user. [Database backup is strongly recommended]', 'b'); ?>
262
+ </p>
 
263
 
264
+ <p class="text-justify">
265
+ <strong><?php echo __('Role Manager', AAM_KEY); ?></strong><br/>
266
+ <?php echo __('With role manager you can manage access for any defined role, edit role\'s name, create new role or even delete existing (but only when there is no users assigned to it). You are not allowed to delete Administrator role.', AAM_KEY); ?>
267
+ </p>
268
 
269
+ <p class="text-justify">
270
+ <strong><?php echo __('User Manager', AAM_KEY); ?></strong><br/>
271
+ <?php echo __('Manage access for any user. As a bonus feature, you can block user. It means that user will be not able to login to your website anymore. Create or edit user actions link to the native WordPress create/edit user interface.', AAM_KEY); ?>
272
+ </p>
273
 
274
+ <p class="text-justify">
275
+ <strong><?php echo __('Visitor Manager', AAM_KEY); ?></strong><br/>
276
+ <?php echo __('Visitor is any user that is not authenticated to your website. Considering the fact that visitors do not have any access to backend, any features that ara backend related are disabled.', AAM_KEY); ?>
277
+ </p>
278
+
279
+ <div class="aam-info aam-social">
280
+ <a href="http://vasyltech.com" target="_blank"><i class="icon-home"></i></a>
281
+ <a href="http://twitter.com/vasyltech" target="_blank"><i class="icon-twitter"></i></a>
282
+ <a href="https://github.com/VasylTech/advanced-access-manager" target="_blank"><i class="icon-github"></i></a>
283
+ </div>
284
  </div>
285
  </div>
286
  </div>
287
+ <?php do_action('aam-sidebar-ui-action', 'bottom'); ?>
288
+
289
+ <!-- Error Fix Promotion: begin -->
290
+ <div class="postbox hidden" id="errorfix-promotion">
291
+ <h3 class="hndle">
292
+ <span>Website Error Fix</span>
293
+ <a href="http://phperrorfix.com" target="_blank" class="aam-help-menu"><i class="icon-help-circled"></i></a>
294
+ </h3>
295
+ <div class="inside">
296
+ <p class="aam-info">Keep your website error free with our patent pending <b>WP Error Fix</b>.</p>
297
+ <a href="#" class="btn btn-warning btn-lg btn-block" id="errorfix-install-btn">Install WP Error Fix</a>
298
+ </div>
299
+ </div>
300
+ <!-- Error Fix Promotion: end -->
 
 
301
  </div>
302
  </div>
303
  </div>
304
  </div>
305
+ <?php
306
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Application/Backend/view/main-panel.phtml CHANGED
@@ -1,21 +1,24 @@
1
- <div class="row">
2
- <div class="col-xs-12 col-md-4">
3
- <ul class="list-group" id="feature-list">
 
 
 
 
 
 
 
 
 
 
 
 
4
  <?php
5
- foreach (AAM_Backend_Feature::retriveList() as $i => $feature) {
6
- echo '<li class="list-group-item" data-feature="' . $feature->uid . '">';
7
- echo $feature->title;
8
- echo (empty($feature->notification) ? '' : ' <span class="badge">' . $feature->notification . '</span>');
9
- echo '</li>';
10
  }
11
  ?>
12
- </ul>
13
  </div>
14
- <div class="col-xs-12 col-md-8">
15
- <?php
16
- foreach (AAM_Backend_Feature::retriveList() as $feature) {
17
- echo $feature->view->getContent();
18
- }
19
- ?>
20
- </div>
21
- </div>
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="row">
3
+ <div class="col-xs-12 col-md-4">
4
+ <ul class="list-group" id="feature-list">
5
+ <?php
6
+ foreach (AAM_Backend_Feature::retriveList() as $i => $feature) {
7
+ echo '<li class="list-group-item" data-feature="' . $feature->uid . '">';
8
+ echo $feature->title;
9
+ echo (empty($feature->notification) ? '' : ' <span class="badge">' . $feature->notification . '</span>');
10
+ echo '</li>';
11
+ }
12
+ ?>
13
+ </ul>
14
+ </div>
15
+ <div class="col-xs-12 col-md-8">
16
  <?php
17
+ foreach (AAM_Backend_Feature::retriveList() as $feature) {
18
+ echo $feature->view->getContent();
 
 
 
19
  }
20
  ?>
21
+ </div>
22
  </div>
23
+ <?php
24
+ }
 
 
 
 
 
 
Application/Backend/view/object/capability.phtml CHANGED
@@ -1,57 +1,60 @@
1
- <div class="aam-feature" id="capability-content">
2
- <div class="row hidden" id="user-capability-note">
3
- <div class="col-xs-12">
4
- <p class="aam-info">
5
- <?php echo AAM_Backend_Helper::preparePhrase(__('[Please notice!] You are not allowed to assign or create a new capability that does not belong to user\'s role. Consider creating a new role with desired list of capabilities and then assign that role to user.', AAM_KEY), 'strong'); ?>
6
- </p>
 
 
7
  </div>
8
- </div>
9
- <div class="aam-feature-top-actions text-right">
10
- <div class="btn-group">
11
- <a href="#" class="btn btn-xs btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="capability-filter">
12
- <i class="icon-filter"></i> <?php echo __('Filter', AAM_KEY); ?> <span class="caret"></span>
13
- </a>
14
- <ul class="dropdown-menu" id="capability-groups">
15
- <?php foreach ($this->getGroupList() as $group) { ?>
16
- <li><a href="#"><?php echo $group; ?></a></li>
17
- <?php } ?>
18
- <li role="separator" class="divider"></li>
19
- <li><a href="#" data-clear="true"><?php echo __('All Capabilities', AAM_KEY); ?></a></li>
20
- </ul>
 
21
  </div>
22
- <a href="#" class="btn btn-xs btn-primary" id="add-capability"><i class="icon-plus"></i> <?php echo __('Create', AAM_KEY); ?></a>
23
- </div>
24
 
25
- <table id="capability-list" class="table table-striped table-bordered">
26
- <thead>
27
- <tr>
28
- <th>ID</th>
29
- <th width="35%"><?php echo __('Category', AAM_KEY); ?></th>
30
- <th width="50%"><?php echo __('Capability', AAM_KEY); ?></th>
31
- <th><?php echo __('Assign', AAM_KEY); ?></th>
32
- </tr>
33
- </thead>
34
- <tbody></tbody>
35
- </table>
36
 
37
- <div class="modal fade" id="add-capability-modal" tabindex="-1" role="dialog">
38
- <div class="modal-dialog modal-sm" role="document">
39
- <div class="modal-content">
40
- <div class="modal-header">
41
- <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
42
- <h4 class="modal-title"><?php echo __('Add New Capability', AAM_KEY); ?></h4>
43
- </div>
44
- <div class="modal-body">
45
- <div class="form-group">
46
- <label for="new-capability-name"><?php echo __('Capability Name', AAM_KEY); ?><span class="aam-asterix">*</span></label>
47
- <input type="text" class="form-control" id="new-capability-name" placeholder="<?php echo __('Enter Capability', AAM_KEY); ?>" />
 
 
 
 
 
48
  </div>
49
- </div>
50
- <div class="modal-footer">
51
- <button type="button" class="btn btn-success" id="add-capability-btn"><?php echo __('Add Capability', AAM_KEY); ?></button>
52
- <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
53
  </div>
54
  </div>
55
  </div>
56
  </div>
57
- </div>
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="capability-content">
3
+ <div class="row aam-user-note hidden">
4
+ <div class="col-xs-12">
5
+ <p class="aam-info">
6
+ <?php echo AAM_Backend_Helper::preparePhrase('[Please notice!] You are not allowed to assign or create a new capability that does not belong to user\'s role. Consider creating a new role with desired list of capabilities and then assign that role to user.', 'strong'); ?>
7
+ </p>
8
+ </div>
9
  </div>
10
+ <div class="aam-feature-top-actions text-right">
11
+ <div class="btn-group">
12
+ <a href="#" class="btn btn-xs btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="capability-filter">
13
+ <i class="icon-filter"></i> <?php echo __('Filter', AAM_KEY); ?> <span class="caret"></span>
14
+ </a>
15
+ <ul class="dropdown-menu" id="capability-groups" aria-labelledby="capability-filter">
16
+ <?php foreach ($this->getGroupList() as $group) { ?>
17
+ <li><a href="#"><?php echo $group; ?></a></li>
18
+ <?php } ?>
19
+ <li role="separator" class="divider"></li>
20
+ <li><a href="#" data-clear="true"><?php echo __('All Capabilities', AAM_KEY); ?></a></li>
21
+ </ul>
22
+ </div>
23
+ <a href="#" class="btn btn-xs btn-primary" id="add-capability"><i class="icon-plus"></i> <?php echo __('Create', AAM_KEY); ?></a>
24
  </div>
 
 
25
 
26
+ <table id="capability-list" class="table table-striped table-bordered">
27
+ <thead>
28
+ <tr>
29
+ <th>ID</th>
30
+ <th width="30%"><?php echo __('Category', AAM_KEY); ?></th>
31
+ <th width="50%"><?php echo __('Capability', AAM_KEY); ?></th>
32
+ <th><?php echo __('Actions', AAM_KEY); ?></th>
33
+ </tr>
34
+ </thead>
35
+ <tbody></tbody>
36
+ </table>
37
 
38
+ <div class="modal fade" id="add-capability-modal" tabindex="-1" role="dialog">
39
+ <div class="modal-dialog modal-sm" role="document">
40
+ <div class="modal-content">
41
+ <div class="modal-header">
42
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
43
+ <h4 class="modal-title"><?php echo __('Add New Capability', AAM_KEY); ?></h4>
44
+ </div>
45
+ <div class="modal-body">
46
+ <div class="form-group">
47
+ <label for="new-capability-name"><?php echo __('Capability Name', AAM_KEY); ?><span class="aam-asterix">*</span></label>
48
+ <input type="text" class="form-control" id="new-capability-name" placeholder="<?php echo __('Enter Capability', AAM_KEY); ?>" />
49
+ </div>
50
+ </div>
51
+ <div class="modal-footer">
52
+ <button type="button" class="btn btn-success" id="add-capability-btn"><?php echo __('Add Capability', AAM_KEY); ?></button>
53
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('Close', AAM_KEY); ?></button>
54
  </div>
 
 
 
 
55
  </div>
56
  </div>
57
  </div>
58
  </div>
59
+ <?php
60
+ }
Application/Backend/view/object/menu.phtml CHANGED
@@ -1,57 +1,70 @@
1
- <div class="aam-feature" id="admin_menu-content">
2
- <div class="row">
3
- <div class="col-xs-12">
4
- <p class="aam-info">
5
- <?php echo AAM_Backend_Helper::preparePhrase(__('Backend Menu feature does not restrict direct access to the page but rather filters it from the menu. In order to completely restrict access to the desired page, un-check the capability that is assigned to the menu [(the capability is shown right next to the menu title)].', AAM_KEY), 'small'); ?>
6
- </p>
7
- </div>
8
- </div>
9
- <div class="panel-group" id="admin-menu" role="tablist" aria-multiselectable="true">
10
- <?php
11
- $object = AAM_Backend_View::getSubject()->getObject('menu');
12
- foreach ($this->getMenu() as $i => $menu) {
13
- ?>
14
- <div class="panel panel-default">
15
- <div class="panel-heading" role="tab" id="menu-<?php echo $i; ?>-heading">
16
- <h4 class="panel-title">
17
- <a role="button" data-toggle="collapse" data-parent="#admin-menu" href="#menu-<?php echo $i; ?>" aria-controls="menu-<?php echo $i; ?>">
18
- <?php echo $menu['name']; ?> <small class="aam-menu-capability"><?php echo $menu['capability']; ?></small>
19
- </a>
20
- <?php echo ($object->has($menu['id']) ? '<i class="aam-panel-title-icon icon-eye-off text-danger"></i>' : ''); ?>
21
- </h4>
22
  </div>
 
 
23
 
24
- <div id="menu-<?php echo $i; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="menu-<?php echo $i; ?>-heading">
25
- <div class="panel-body">
26
- <?php if (!empty($menu['submenu'])) { ?>
27
- <div class="row aam-bordered">
28
- <?php echo ($object->has($menu['id']) ? '<div class="aam-lock"></div>' : ''); ?>
29
- <?php foreach ($menu['submenu'] as $j => $submenu) { ?>
30
- <div class="col-xs-12 col-md-6 aam-submenu-item">
31
- <label for="menu-item-<?php echo $i . $j; ?>"><?php echo $submenu['name']; ?> <small class="aam-menu-capability"><?php echo $submenu['capability']; ?></small></label>
32
- <input type="checkbox" class="aam-checkbox-danger" id="menu-item-<?php echo $i . $j; ?>" data-menu-id="<?php echo $submenu['id']; ?>"<?php echo ($object->has($submenu['id']) || $object->has($menu['id']) ? ' checked="checked"' : ''); ?> />
33
- <label for="menu-item-<?php echo $i . $j; ?>"></label>
34
- </div>
35
- <?php } ?>
36
- </div>
37
- <?php } ?>
 
 
 
 
 
 
 
 
38
 
39
- <div class="row<?php echo (!empty($menu['submenu']) ? ' aam-margin-top-xs' : ''); ?>">
40
- <div class="col-xs-10 col-md-6 col-xs-offset-1 col-md-offset-3">
41
- <?php if ($object->has($menu['id'])) { ?>
42
- <a href="#" class="btn btn-primary btn-sm btn-block aam-restrict-menu" data-menu-id="<?php echo $menu['id']; ?>" data-target="#menu-<?php echo $i; ?>">
43
- <i class="icon-eye"></i> <?php echo __('Show Menu', AAM_KEY); ?>
44
- </a>
45
- <?php } else { ?>
46
- <a href="#" class="btn btn-danger btn-sm btn-block aam-restrict-menu" data-menu-id="<?php echo $menu['id']; ?>" data-target="#menu-<?php echo $i; ?>">
47
- <i class="icon-eye-off"></i> <?php echo __('Hide Menu', AAM_KEY); ?>
48
- </a>
49
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  </div>
51
  </div>
52
  </div>
53
  </div>
54
- </div>
55
- <?php } ?>
56
  </div>
57
- </div>
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="admin_menu-content">
3
+ <div class="row<?php echo ($this->isOverwritten() ? '' : ' hidden'); ?>">
4
+ <div class="col-xs-12">
5
+ <div class="aam-overwrite">
6
+ <span><i class="icon-attention-circled"></i> <?php echo __('Settings may not be inherited', AAM_KEY); ?></span>
7
+ <span><a href="#" id="menu-reset"><?php echo __('Reset', AAM_KEY); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  </div>
9
+ </div>
10
+ </div>
11
 
12
+ <div class="row">
13
+ <div class="col-xs-12">
14
+ <p class="aam-info">
15
+ <?php echo AAM_Backend_Helper::preparePhrase('If checked, then menu is filtered. [Please notice]! This does not restrict direct access to the page but rather filters it from the menu. In order to completely restrict access to the desired page, un-check the capability that is assigned to the menu [(the capability is shown right next to the menu title)].', 'strong', 'small'); ?>
16
+ </p>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="panel-group" id="admin-menu" role="tablist" aria-multiselectable="true">
21
+ <?php
22
+ $object = AAM_Backend_View::getSubject()->getObject('menu');
23
+ foreach ($this->getMenu() as $i => $menu) {
24
+ ?>
25
+ <div class="panel panel-default">
26
+ <div class="panel-heading" role="tab" id="menu-<?php echo $i; ?>-heading">
27
+ <h4 class="panel-title">
28
+ <a role="button" data-toggle="collapse" data-parent="#admin-menu" href="#menu-<?php echo $i; ?>" aria-controls="menu-<?php echo $i; ?>">
29
+ <?php echo $menu['name']; ?> <small class="aam-menu-capability"><?php echo $menu['capability']; ?></small>
30
+ </a>
31
+ <?php echo ($object->has($menu['id']) ? '<i class="aam-panel-title-icon icon-eye-off text-danger"></i>' : ''); ?>
32
+ </h4>
33
+ </div>
34
 
35
+ <div id="menu-<?php echo $i; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="menu-<?php echo $i; ?>-heading">
36
+ <div class="panel-body">
37
+ <?php if (!empty($menu['submenu'])) { ?>
38
+ <div class="row aam-bordered">
39
+ <?php echo ($object->has($menu['id']) ? '<div class="aam-lock"></div>' : ''); ?>
40
+ <?php foreach ($menu['submenu'] as $j => $submenu) { ?>
41
+ <div class="col-xs-12 col-md-6 aam-submenu-item">
42
+ <label for="menu-item-<?php echo $i . $j; ?>"><?php echo $submenu['name']; ?> <small class="aam-menu-capability"><?php echo $submenu['capability']; ?></small></label>
43
+ <input type="checkbox" class="aam-checkbox-danger" id="menu-item-<?php echo $i . $j; ?>" data-menu-id="<?php echo $submenu['id']; ?>"<?php echo ($object->has($submenu['id']) || $object->has($menu['id']) ? ' checked="checked"' : ''); ?> />
44
+ <label for="menu-item-<?php echo $i . $j; ?>"></label>
45
+ </div>
46
+ <?php } ?>
47
+ </div>
48
+ <?php } ?>
49
+
50
+ <div class="row<?php echo (!empty($menu['submenu']) ? ' aam-margin-top-xs' : ''); ?>">
51
+ <div class="col-xs-10 col-md-6 col-xs-offset-1 col-md-offset-3">
52
+ <?php if ($object->has($menu['id'])) { ?>
53
+ <a href="#" class="btn btn-primary btn-sm btn-block aam-restrict-menu" data-menu-id="<?php echo $menu['id']; ?>" data-target="#menu-<?php echo $i; ?>">
54
+ <i class="icon-eye"></i> <?php echo __('Show Menu', AAM_KEY); ?>
55
+ </a>
56
+ <?php } else { ?>
57
+ <a href="#" class="btn btn-danger btn-sm btn-block aam-restrict-menu" data-menu-id="<?php echo $menu['id']; ?>" data-target="#menu-<?php echo $i; ?>">
58
+ <i class="icon-eye-off"></i> <?php echo __('Hide Menu', AAM_KEY); ?>
59
+ </a>
60
+ <?php } ?>
61
+ </div>
62
  </div>
63
  </div>
64
  </div>
65
  </div>
66
+ <?php } ?>
67
+ </div>
68
  </div>
69
+ <?php
70
+ }
Application/Backend/view/object/metabox.phtml CHANGED
@@ -1,58 +1,69 @@
1
- <div class="aam-feature" id="metabox-content">
2
- <div class="aam-feature-top-actions text-right">
3
- <a href="#" class="btn btn-xs btn-primary" id="refresh-metabox-list"><i class="icon-arrows-cw"></i> <?php echo __('Refresh', AAM_KEY); ?></a>
4
- </div>
 
 
 
 
 
 
5
 
6
- <?php $object = AAM_Backend_View::getSubject()->getObject('metabox'); ?>
7
- <?php $metaboxList = $this->getMetaboxList(); ?>
 
8
 
9
- <?php if (!empty($metaboxList)) { ?>
10
- <div class="panel-group" id="metabox-list" role="tablist">
11
- <?php foreach ($metaboxList as $screen => $metaboxes) { ?>
12
- <div class="panel panel-default">
13
- <div class="panel-heading" role="tab" id="group-<?php echo $screen; ?>-heading">
14
- <h4 class="panel-title">
15
- <a role="button" data-toggle="collapse" data-parent="#metabox-list" href="#group-<?php echo $screen; ?>" aria-controls="group-<?php echo $screen; ?>">
16
- <?php
17
- switch ($screen) {
18
- case 'dashboard':
19
- echo __('Dashboard Widgets', AAM_KEY);
20
- break;
21
 
22
- case 'widgets':
23
- echo __('Frontend Widgets', AAM_KEY);
24
- break;
 
 
 
 
 
 
 
 
 
25
 
26
- default:
27
- echo $wp_post_types[$screen]->labels->name;
28
- break;
29
- }
30
- ?>
31
- </a>
32
- </h4>
33
- </div>
34
- <div id="group-<?php echo $screen; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="group-<?php echo $screen; ?>-heading">
35
- <div class="panel-body">
36
- <div class="row aam-bordered">
37
- <?php
38
- foreach ($metaboxes as $metabox) { ?>
39
- <div class="col-xs-12 col-md-6 aam-submenu-item">
40
- <label for="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>"><?php echo $metabox['title']; ?></label>
41
- <input type="checkbox" class="aam-checkbox-danger" id="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>" data-metabox="<?php echo $screen; ?>|<?php echo $metabox['id']; ?>"<?php echo ($object->has($screen, $metabox['id']) ? ' checked="checked"' : ''); ?> />
42
- <label for="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>"></label>
43
- </div>
44
- <?php } ?>
 
 
 
 
45
  </div>
46
  </div>
47
  </div>
 
 
 
 
 
 
48
  </div>
49
- <?php } ?>
50
- </div>
51
- <?php } else { ?>
52
- <div class="row">
53
- <div class="col-xs-12 text-center">
54
- <p class="aam-notification-message"><?php echo __('The list of metaboxes and widgets is not initialized. Click Refresh button above.'); ?></p>
55
- </div>
56
  </div>
57
- <?php } ?>
58
- </div>
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="metabox-content">
3
+ <div class="row<?php echo ($this->isOverwritten() ? '' : ' hidden'); ?>">
4
+ <div class="col-xs-12">
5
+ <div class="aam-overwrite">
6
+ <span><i class="icon-attention-circled"></i> <?php echo __('Settings may not be inherited', AAM_KEY); ?></span>
7
+ <span><a href="#" id="metabox-reset"><?php echo __('Reset', AAM_KEY); ?></a>
8
+ </div>
9
+ </div>
10
+ </div>
11
 
12
+ <div class="aam-feature-top-actions text-right">
13
+ <a href="#" class="btn btn-xs btn-primary" id="refresh-metabox-list"><i class="icon-arrows-cw"></i> <?php echo __('Refresh', AAM_KEY); ?></a>
14
+ </div>
15
 
16
+ <?php $object = AAM_Backend_View::getSubject()->getObject('metabox'); ?>
17
+ <?php $metaboxList = $this->getMetaboxList(); ?>
 
 
 
 
 
 
 
 
 
 
18
 
19
+ <?php if (!empty($metaboxList)) { ?>
20
+ <div class="panel-group" id="metabox-list" role="tablist">
21
+ <?php foreach ($metaboxList as $screen => $metaboxes) { ?>
22
+ <div class="panel panel-default">
23
+ <div class="panel-heading" role="tab" id="group-<?php echo $screen; ?>-heading">
24
+ <h4 class="panel-title">
25
+ <a role="button" data-toggle="collapse" data-parent="#metabox-list" href="#group-<?php echo $screen; ?>" aria-controls="group-<?php echo $screen; ?>">
26
+ <?php
27
+ switch ($screen) {
28
+ case 'dashboard':
29
+ echo __('Dashboard Widgets', AAM_KEY);
30
+ break;
31
 
32
+ case 'widgets':
33
+ echo __('Frontend Widgets', AAM_KEY);
34
+ break;
35
+
36
+ default:
37
+ echo $wp_post_types[$screen]->labels->name;
38
+ break;
39
+ }
40
+ ?>
41
+ </a>
42
+ </h4>
43
+ </div>
44
+ <div id="group-<?php echo $screen; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="group-<?php echo $screen; ?>-heading">
45
+ <div class="panel-body">
46
+ <div class="row aam-bordered">
47
+ <?php foreach ($metaboxes as $metabox) { ?>
48
+ <div class="col-xs-12 col-md-6 aam-submenu-item">
49
+ <label for="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>"><?php echo $metabox['title']; ?></label>
50
+ <input type="checkbox" class="aam-checkbox-danger" id="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>" data-metabox="<?php echo $screen; ?>|<?php echo $metabox['id']; ?>"<?php echo ($object->has($screen, $metabox['id']) ? ' checked="checked"' : ''); ?> />
51
+ <label for="metabox-<?php echo $screen; ?>-<?php echo $metabox['id']; ?>"></label>
52
+ </div>
53
+ <?php } ?>
54
+ </div>
55
  </div>
56
  </div>
57
  </div>
58
+ <?php } ?>
59
+ </div>
60
+ <?php } else { ?>
61
+ <div class="row">
62
+ <div class="col-xs-12 text-center">
63
+ <p class="aam-notification-message"><?php echo __('The list of metaboxes and widgets is not initialized. Click Refresh button above.'); ?></p>
64
  </div>
65
+ </div>
66
+ <?php } ?>
 
 
 
 
 
67
  </div>
68
+ <?php
69
+ }
Application/Backend/view/object/post.phtml CHANGED
@@ -1,144 +1,205 @@
1
- <div class="aam-feature" id="post-content">
2
- <?php if (!defined('AAM_PLUS_PACKAGE')) { ?>
3
- <div class="row">
4
- <div class="col-xs-12">
5
- <p class="aam-info">
6
- <?php echo AAM_Backend_Helper::preparePhrase('You are allowed to manage access up to 10 posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension to unlock this limitation.', 'b'); ?>
7
- </p>
 
 
8
  </div>
9
- </div>
10
- <?php } ?>
11
-
12
- <div class="aam-post-breadcrumb">
13
- <a href="#" data-level="root"><i class="icon-home"></i> <?php echo __('Root', AAM_KEY); ?></a>
14
- </div>
15
 
16
- <div class="aam-post-manager-container">
17
- <table id="post-list" class="table table-striped table-bordered">
18
- <thead>
19
- <tr>
20
- <th>ID</th>
21
- <th>Link</th>
22
- <th width="5%">&nbsp;</th>
23
- <th width="75%"><?php echo __('Title', AAM_KEY); ?></th>
24
- <th><?php echo __('Actions', AAM_KEY); ?></th>
25
- </tr>
26
- </thead>
27
- <tbody></tbody>
28
- </table>
29
 
30
- <div class="aam-post-manager" data-type="type">
31
- <?php echo apply_filters('aam-post-type-ui-filter', AAM_Backend_View::getInstance()->loadPartial('post-type.phtml')); ?>
32
- <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
33
  </div>
34
 
35
- <div class="aam-post-manager" data-type="term">
36
- <?php echo apply_filters('aam-term-type-ui-filter', AAM_Backend_View::getInstance()->loadPartial('term-type.phtml')); ?>
37
- <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
38
  </div>
39
 
40
- <div class="aam-post-manager" data-type="post">
41
- <table class="table table-striped table-bordered">
42
- <tbody>
43
- <tr>
44
- <td colspan="2" class="aam-table-group">
45
- <i class="icon-doc-text-inv"></i> <strong><?php echo __('Frontend', AAM_KEY); ?></strong>
46
- </td>
47
- </tr>
48
-
49
- <tr>
50
- <td width="90%">
51
- <strong class="aam-block"><?php echo __('List', AAM_KEY); ?></strong>
52
- <p class="aam-hint">
53
- <?php echo __('Filter (exclude) post from any list on your website frontend.', AAM_KEY); ?>
54
- <span class="aam-highlight"><?php echo __('Warning!', AAM_KEY); ?></span>
55
- <?php echo __('If checked, this property may slowdown your website with large amount of posts.', AAM_KEY); ?>
56
- </p>
57
- </td>
58
- <td>
59
- <div class="aam-row-actions">
60
- <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.list"></i>
61
- </div>
62
- </td>
63
- </tr>
64
  <tr>
65
- <td>
66
- <strong class="aam-block"><?php echo __('Read', AAM_KEY); ?></strong>
67
- <p class="aam-hint">
68
- <?php echo __('Restrict access to read a post. If "List" option is not checked, a post will be still listed on your website frontend.', AAM_KEY); ?>
69
- </p>
70
- </td>
71
- <td>
72
- <div class="aam-row-actions">
73
- <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.read"></i>
74
- </div>
75
- </td>
76
  </tr>
77
- <tr>
78
- <td>
79
- <strong class="aam-block"><?php echo __('Comment', AAM_KEY); ?></strong>
80
- <p class="aam-hint">
81
- <?php echo __('Restrict access to comment on a post (if commenting feature is activated).', AAM_KEY); ?>
82
- </p>
83
- </td>
84
- <td>
85
- <div class="aam-row-actions">
86
- <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.comment"></i>
87
- </div>
88
- </td>
89
- </tr>
90
-
91
- <tr class="aam-backend-post-access">
92
- <td colspan="2" class="aam-table-group">
93
- <i class="icon-doc-text-inv"></i> <strong><?php echo __('Backend', AAM_KEY); ?></strong>
94
- </td>
95
- </tr>
96
-
97
- <tr class="aam-backend-post-access">
98
- <td>
99
- <strong class="aam-block"><?php echo __('List', AAM_KEY); ?></strong>
100
- <p class="aam-hint">
101
- <?php echo __('Filter (exclude) post from any list on your website backend.', AAM_KEY); ?>
102
- <span class="aam-highlight"><?php echo __('Warning!', AAM_KEY); ?></span>
103
- <?php echo __('If checked, this property may slowdown your backend with large amount of posts.', AAM_KEY); ?>
104
- </p>
105
- </td>
106
- <td>
107
- <div class="aam-row-actions">
108
- <i class="aam-row-action text-muted icon-check-empty" data-property="backend.list"></i>
109
- </div>
110
- </td>
111
- </tr>
112
- <tr class="aam-backend-post-access">
113
- <td>
114
- <strong class="aam-block"><?php echo __('Edit', AAM_KEY); ?></strong>
115
- <p class="aam-hint">
116
- <?php echo __('Restrict access to edit a post (also the link "Edit" and "Quick Edit" will be removed below the post title).', AAM_KEY); ?>
117
- </p>
118
- </td>
119
- <td>
120
- <div class="aam-row-actions">
121
- <i class="aam-row-action text-muted icon-check-empty" data-property="backend.edit"></i>
122
- </div>
123
- </td>
124
- </tr>
125
- <tr class="aam-backend-post-access">
126
- <td>
127
- <strong class="aam-block"><?php echo __('Delete', AAM_KEY); ?></strong>
128
- <p class="aam-hint">
129
- <?php echo __('Restrict access to trash or permanently delete a post (also the link "Trash" or "Delete Permanently" will be removed for a post).', AAM_KEY); ?>
130
- </p>
131
- </td>
132
- <td>
133
- <div class="aam-row-actions">
134
- <i class="aam-row-action text-muted icon-check-empty" data-property="backend.delete"></i>
135
- </div>
136
- </td>
137
- </tr>
138
-
139
- </tbody>
140
  </table>
141
- <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  </div>
143
  </div>
144
- </div>
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="aam-feature" id="post-content">
3
+ <?php if (!defined('AAM_PLUS_PACKAGE')) { ?>
4
+ <div class="row">
5
+ <div class="col-xs-12">
6
+ <p class="aam-info">
7
+ <?php echo AAM_Backend_Helper::preparePhrase('You are allowed to manage access up to 10 posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension to unlock this limitation.', 'b'); ?>
8
+ </p>
9
+ </div>
10
  </div>
11
+ <?php } ?>
 
 
 
 
 
12
 
13
+ <div class="aam-post-breadcrumb">
14
+ <a href="#" data-level="root"><i class="icon-home"></i> <?php echo __('Root', AAM_KEY); ?></a>
15
+ </div>
 
 
 
 
 
 
 
 
 
 
16
 
17
+ <div class="aam-overwrite hidden" id="post-overwritten">
18
+ <span><i class="icon-attention-circled"></i> <?php echo __('Settings may not be inherited', AAM_KEY); ?></span>
19
+ <span><a href="#" id="post-reset"><?php echo __('Reset', AAM_KEY); ?></a>&nbsp;|&nbsp;<a href="#aam-reset-info-modal" data-toggle="modal"><?php echo __('Help', AAM_KEY); ?></a></span>
20
  </div>
21
 
22
+ <div class="aam-inherited hidden" id="post-inherited">
23
+ <span><?php echo __('Settings inherited from', AAM_KEY); ?> <strong id="post-parent"></strong></span>
24
+ <span><a href="#aam-inheritance-modal" data-toggle="modal"><?php echo __('Help', AAM_KEY); ?></a></span>
25
  </div>
26
 
27
+ <div class="aam-post-manager-container">
28
+ <table id="post-list" class="table table-striped table-bordered">
29
+ <thead>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  <tr>
31
+ <th>ID</th>
32
+ <th>Link</th>
33
+ <th width="5%">&nbsp;</th>
34
+ <th width="75%"><?php echo __('Title', AAM_KEY); ?></th>
35
+ <th><?php echo __('Actions', AAM_KEY); ?></th>
 
 
 
 
 
 
36
  </tr>
37
+ </thead>
38
+ <tbody></tbody>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  </table>
40
+
41
+ <div class="aam-post-manager" data-type="type">
42
+ <?php echo apply_filters('aam-post-type-ui-filter', AAM_Backend_View::getInstance()->loadPartial('post-type.phtml')); ?>
43
+ <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
44
+ </div>
45
+
46
+ <div class="aam-post-manager" data-type="term">
47
+ <?php echo apply_filters('aam-term-type-ui-filter', AAM_Backend_View::getInstance()->loadPartial('term-type.phtml')); ?>
48
+ <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
49
+ </div>
50
+
51
+ <div class="aam-post-manager" data-type="post">
52
+ <table class="table table-striped table-bordered">
53
+ <tbody>
54
+ <tr>
55
+ <td colspan="2" class="aam-table-group">
56
+ <i class="icon-doc-text-inv"></i> <strong><?php echo __('Frontend', AAM_KEY); ?></strong>
57
+ </td>
58
+ </tr>
59
+
60
+ <tr>
61
+ <td width="90%">
62
+ <strong class="aam-block"><?php echo __('List', AAM_KEY); ?></strong>
63
+ <p class="aam-hint">
64
+ <?php echo __('Filter (exclude) post from any list on your website frontend.', AAM_KEY); ?>
65
+ <span class="aam-highlight"><?php echo __('Warning!', AAM_KEY); ?></span>
66
+ <?php echo __('If checked, this property may slowdown your website with large amount of posts.', AAM_KEY); ?>
67
+ </p>
68
+ </td>
69
+ <td>
70
+ <div class="aam-row-actions">
71
+ <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.list"></i>
72
+ </div>
73
+ </td>
74
+ </tr>
75
+ <tr>
76
+ <td>
77
+ <strong class="aam-block"><?php echo __('Read', AAM_KEY); ?></strong>
78
+ <p class="aam-hint">
79
+ <?php echo __('Restrict access to read a post. If "List" option is not checked, a post will be still listed on your website frontend.', AAM_KEY); ?>
80
+ </p>
81
+ </td>
82
+ <td>
83
+ <div class="aam-row-actions">
84
+ <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.read"></i>
85
+ </div>
86
+ </td>
87
+ </tr>
88
+ <tr>
89
+ <td>
90
+ <strong class="aam-block"><?php echo __('Comment', AAM_KEY); ?></strong>
91
+ <p class="aam-hint">
92
+ <?php echo __('Restrict access to comment on a post (if commenting feature is activated).', AAM_KEY); ?>
93
+ </p>
94
+ </td>
95
+ <td>
96
+ <div class="aam-row-actions">
97
+ <i class="aam-row-action text-muted icon-check-empty" data-property="frontend.comment"></i>
98
+ </div>
99
+ </td>
100
+ </tr>
101
+ <?php do_action('aam-post-access-option-action', 'post', 'frontend'); ?>
102
+
103
+ <tr class="aam-backend-post-access">
104
+ <td colspan="2" class="aam-table-group">
105
+ <i class="icon-doc-text-inv"></i> <strong><?php echo __('Backend', AAM_KEY); ?></strong>
106
+ </td>
107
+ </tr>
108
+
109
+ <tr class="aam-backend-post-access">
110
+ <td>
111
+ <strong class="aam-block"><?php echo __('List', AAM_KEY); ?></strong>
112
+ <p class="aam-hint">
113
+ <?php echo __('Filter (exclude) post from any list on your website backend.', AAM_KEY); ?>
114
+ <span class="aam-highlight"><?php echo __('Warning!', AAM_KEY); ?></span>
115
+ <?php echo __('If checked, this property may slowdown your backend with large amount of posts.', AAM_KEY); ?>
116
+ </p>
117
+ </td>
118
+ <td>
119
+ <div class="aam-row-actions">
120
+ <i class="aam-row-action text-muted icon-check-empty" data-property="backend.list"></i>
121
+ </div>
122
+ </td>
123
+ </tr>
124
+ <tr class="aam-backend-post-access">
125
+ <td>
126
+ <strong class="aam-block"><?php echo __('Edit', AAM_KEY); ?></strong>
127
+ <p class="aam-hint">
128
+ <?php echo __('Restrict access to edit a post (also the link "Edit" and "Quick Edit" will be removed below the post title).', AAM_KEY); ?>
129
+ </p>
130
+ </td>
131
+ <td>
132
+ <div class="aam-row-actions">
133
+ <i class="aam-row-action text-muted icon-check-empty" data-property="backend.edit"></i>
134
+ </div>
135
+ </td>
136
+ </tr>
137
+ <tr class="aam-backend-post-access">
138
+ <td>
139
+ <strong class="aam-block"><?php echo __('Delete', AAM_KEY); ?></strong>
140
+ <p class="aam-hint">
141
+ <?php echo __('Restrict access to trash or permanently delete a post (also the link "Trash" or "Delete Permanently" will be removed for a post).', AAM_KEY); ?>
142
+ </p>
143
+ </td>
144
+ <td>
145
+ <div class="aam-row-actions">
146
+ <i class="aam-row-action text-muted icon-check-empty" data-property="backend.delete"></i>
147
+ </div>
148
+ </td>
149
+ </tr>
150
+ <?php do_action('aam-post-access-option-action', 'post', 'backend'); ?>
151
+
152
+ </tbody>
153
+ </table>
154
+ <a href="#" class="btn btn-xs btn-primary post-back">&Lt; <?php echo __('Go Back', AAM_KEY); ?></a>
155
+ </div>
156
+ </div>
157
+
158
+ <div class="modal fade" id="aam-inheritance-modal" tabindex="-1" role="dialog">
159
+ <div class="modal-dialog" role="document">
160
+ <div class="modal-content">
161
+ <div class="modal-header">
162
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
163
+ <h4 class="modal-title"><?php echo __('Inheritance', AAM_KEY); ?></h4>
164
+ </div>
165
+ <div class="modal-body aam-info-modal">
166
+ <p><?php echo __('If no access settings defined for post* or category* AAM triggers the inheritance mechanism in order listed below. The inheritance process terminates when the first defined set of settings is found.', AAM_KEY); ?></p>
167
+ <ul class="aam-numeric-list">
168
+ <li><?php echo __('If caching is on, read the cached settings', AAM_KEY); ?>;</li>
169
+ <li><?php echo __('Read post\'s or category\'s settings', AAM_KEY); ?>;</li>
170
+ <li><?php echo __('If AAM Plus Package installed, iterate through the tree of parent categories and read settings', AAM_KEY); ?>;</li>
171
+ <li><?php echo __('If AAM Plus Package installed, read the default access settings for posts or categories', AAM_KEY); ?>;</li>
172
+ <li><?php echo __('If user, read settings from the parent role and repeat the same sequence of steps', AAM_KEY); ?>;</li>
173
+ </ul>
174
+
175
+ <p class="aam-info aam-hint">
176
+ * <?php echo AAM_Backend_Helper::preparePhrase('[post] - any post, page or custom post type', 'strong'); ?>;<br/>
177
+ * <?php echo AAM_Backend_Helper::preparePhrase('[category] - any taxonomy/term or custom taxonomy', 'strong'); ?>.
178
+ </p>
179
+ </div>
180
+ <div class="modal-footer">
181
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+
187
+ <div class="modal fade" id="aam-reset-info-modal" tabindex="-1" role="dialog">
188
+ <div class="modal-dialog" role="document">
189
+ <div class="modal-content">
190
+ <div class="modal-header">
191
+ <button type="button" class="close" data-dismiss="modal" aria-label="<?php echo __('Close', AAM_KEY); ?>"><span aria-hidden="true">&times;</span></button>
192
+ <h4 class="modal-title"><?php echo __('Reset Information', AAM_KEY); ?></h4>
193
+ </div>
194
+ <div class="modal-body aam-info-modal">
195
+ <p><?php echo AAM_Backend_Helper::preparePhrase('[Settings may not be inherited] message indicates that access settings for current post or category are not inherited from parent category, role or default settings because they were modified for this particular post or category. Click [Reset] if you need to reset the access.', 'strong', 'strong'); ?></p>
196
+ </div>
197
+ <div class="modal-footer">
198
+ <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo __('OK', AAM_KEY); ?></button>
199
+ </div>
200
+ </div>
201
+ </div>
202
  </div>
203
  </div>
204
+ <?php
205
+ }
Application/Backend/view/partial/post-type.phtml CHANGED
@@ -1,7 +1,10 @@
1
- <div class="row">
2
- <div class="col-xs-12">
3
- <p class="aam-info">
4
- <?php echo AAM_Backend_Helper::preparePhrase('Define the default access to your posts, pages, custom post types or categories. This feature is available only with [AAM Plus Package] extension. But you can still manage access to individual posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension.', 'b', 'b'); ?>
5
- </p>
 
 
6
  </div>
7
- </div>
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="row">
3
+ <div class="col-xs-12">
4
+ <p class="aam-info">
5
+ <?php echo AAM_Backend_Helper::preparePhrase('Define the default access to your posts, pages, custom post types or categories. This feature is available only with [AAM Plus Package] extension. But you can still manage access to individual posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension.', 'b', 'b'); ?>
6
+ </p>
7
+ </div>
8
  </div>
9
+ <?php
10
+ }
Application/Backend/view/partial/term-type.phtml CHANGED
@@ -1,7 +1,10 @@
1
- <div class="row">
2
- <div class="col-xs-12">
3
- <p class="aam-info">
4
- <?php echo AAM_Backend_Helper::preparePhrase('Managing default access to categories (terms) is available in [AAM Plus Package] only. But you can still manage access to individual posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension.', 'b', 'b'); ?>
5
- </p>
 
 
6
  </div>
7
- </div>
 
1
+ <?php if (defined('AAM_KEY')) { ?>
2
+ <div class="row">
3
+ <div class="col-xs-12">
4
+ <p class="aam-info">
5
+ <?php echo AAM_Backend_Helper::preparePhrase('Managing default access to categories (terms) is available in [AAM Plus Package] only. But you can still manage access to individual posts, pages or custom post types. Consider to purchase [AAM Plus Package] extension.', 'b', 'b'); ?>
6
+ </p>
7
+ </div>
8
  </div>
9
+ <?php
10
+ }
Application/Core/API.php CHANGED
@@ -150,9 +150,11 @@ final class AAM_Core_API {
150
  public static function maxLevel($caps, $default = 0) {
151
  $levels = array($default);
152
 
153
- foreach($caps as $cap => $granted) {
154
- if ($granted && preg_match('/^level_(10|[0-9])$/i', $cap, $match)) {
155
- $levels[] = intval($match[1]);
 
 
156
  }
157
  }
158
 
@@ -183,5 +185,24 @@ final class AAM_Core_API {
183
  }
184
  exit;
185
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
 
187
  }
150
  public static function maxLevel($caps, $default = 0) {
151
  $levels = array($default);
152
 
153
+ if (is_array($caps)) { //WP Error Fix bug report
154
+ foreach($caps as $cap => $granted) {
155
+ if ($granted && preg_match('/^level_(10|[0-9])$/i', $cap, $match)) {
156
+ $levels[] = intval($match[1]);
157
+ }
158
  }
159
  }
160
 
185
  }
186
  exit;
187
  }
188
+
189
+ /**
190
+ * Remove directory recursively
191
+ *
192
+ * @param string $pathname
193
+ *
194
+ * @return void
195
+ *
196
+ * @access public
197
+ */
198
+ public static function removeDirectory($pathname) {
199
+ $files = glob($pathname . '/*');
200
+
201
+ foreach ($files as $file) {
202
+ is_dir($file) ? self::removeDirectory($file) : @unlink($file);
203
+ }
204
+
205
+ @rmdir($pathname);
206
+ }
207
 
208
  }
Application/Core/Object.php CHANGED
@@ -23,7 +23,7 @@ abstract class AAM_Core_Object {
23
  * @access private
24
  */
25
  private $_subject = null;
26
-
27
  /**
28
  * Object options
29
  *
@@ -33,6 +33,15 @@ abstract class AAM_Core_Object {
33
  */
34
  private $_option = array();
35
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Constructor
38
  *
@@ -95,5 +104,47 @@ abstract class AAM_Core_Object {
95
  public function getOption() {
96
  return $this->_option;
97
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
23
  * @access private
24
  */
25
  private $_subject = null;
26
+
27
  /**
28
  * Object options
29
  *
33
  */
34
  private $_option = array();
35
 
36
+ /**
37
+ * Inheritance indicator
38
+ *
39
+ * @var null|string
40
+ *
41
+ * @access private
42
+ */
43
+ private $_inherited = null;
44
+
45
  /**
46
  * Constructor
47
  *
104
  public function getOption() {
105
  return $this->_option;
106
  }
107
+
108
+ /**
109
+ * Set Inherited flag
110
+ *
111
+ * @param string $inherited
112
+ *
113
+ * @return void
114
+ */
115
+ public function setInherited($inherited) {
116
+ $this->_inherited = $inherited;
117
+ }
118
+
119
+ /**
120
+ * Get Inherited flag
121
+ *
122
+ * @return null|string
123
+ *
124
+ * @access public
125
+ */
126
+ public function getInherited() {
127
+ return $this->_inherited;
128
+ }
129
 
130
+ /**
131
+ * Check if options were overwritten
132
+ *
133
+ * In order to consider options overwritten there are three conditions to be met:
134
+ * - Current subject has to have the parent subject;
135
+ * - Current object should have no empty option set;
136
+ * - The inherited flad should be null;
137
+ *
138
+ * @return boolean
139
+ *
140
+ * @access public
141
+ */
142
+ public function isOverwritten () {
143
+ $parent = $this->getSubject()->hasParent();
144
+ $option = $this->getOption();
145
+ $inherit = $this->getInherited();
146
+
147
+ return ($parent && !empty($option) && is_null($inherit));
148
+ }
149
+
150
  }
Application/Core/Object/Menu.php CHANGED
@@ -31,6 +31,7 @@ class AAM_Core_Object_Menu extends AAM_Core_Object {
31
 
32
  if (empty($option)) {
33
  $option = $this->getSubject()->inheritFromParent('menu');
 
34
  }
35
 
36
  $this->setOption($option);
@@ -113,5 +114,12 @@ class AAM_Core_Object_Menu extends AAM_Core_Object {
113
 
114
  return $this->getSubject()->updateOption($option, 'menu');
115
  }
 
 
 
 
 
 
 
116
 
117
  }
31
 
32
  if (empty($option)) {
33
  $option = $this->getSubject()->inheritFromParent('menu');
34
+ $this->setInherited(empty($option) ? null : 'role');
35
  }
36
 
37
  $this->setOption($option);
114
 
115
  return $this->getSubject()->updateOption($option, 'menu');
116
  }
117
+
118
+ /**
119
+ *
120
+ */
121
+ public function reset() {
122
+ return $this->getSubject()->deleteOption('menu');
123
+ }
124
 
125
  }
Application/Core/Object/Metabox.php CHANGED
@@ -31,6 +31,7 @@ class AAM_Core_Object_Metabox extends AAM_Core_Object {
31
 
32
  if (empty($option)) {
33
  $option = $this->getSubject()->inheritFromParent('metabox');
 
34
  }
35
 
36
  $this->setOption($option);
@@ -132,6 +133,14 @@ class AAM_Core_Object_Metabox extends AAM_Core_Object {
132
 
133
  return $this->getSubject()->updateOption($option, 'metabox');
134
  }
 
 
 
 
 
 
 
 
135
 
136
  /**
137
  *
31
 
32
  if (empty($option)) {
33
  $option = $this->getSubject()->inheritFromParent('metabox');
34
+ $this->setInherited(empty($option) ? null : 'role');
35
  }
36
 
37
  $this->setOption($option);
133
 
134
  return $this->getSubject()->updateOption($option, 'metabox');
135
  }
136
+
137
+ /**
138
+ *
139
+ */
140
+ public function reset() {
141
+ return $this->getSubject()->deleteOption('metabox');
142
+ }
143
+
144
 
145
  /**
146
  *
Application/Core/Object/Post.php CHANGED
@@ -61,23 +61,39 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
61
  public function read() {
62
  $subject = $this->getSubject();
63
  $opname = $this->getOptionName();
 
64
 
65
- //cache extension in place first
66
- $option = apply_filters('aam-read-cache-filter', null, $opname, $subject);
67
-
68
- if (empty($option)) { //no cache, than try to read it from DB
69
- $option = get_post_meta($this->getPost()->ID, $opname, true);
70
- }
71
 
72
- //try to inherit from parent
73
- if (empty($option)) {
74
- $option = $subject->inheritFromParent('post', $this->getPost()->ID);
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
-
77
- $this->setOption(apply_filters('aam-post-access-filter', $option, $this));
78
 
79
  //trigger caching mechanism
80
- do_action('aam-write-cache-action', $opname, $option, $subject);
 
 
 
 
 
 
81
  }
82
 
83
  /**
@@ -90,22 +106,23 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
90
  public function save($property, $checked) {
91
  $option = $this->getOption();
92
 
93
- if ($checked) {
94
- $option[$property] = $checked;
95
- } elseif (isset($option[$property])) {
96
- //this is important, because if you uncheck all options, AAM will try to
97
- //inherit settings from the parent. This way there is no need to
98
- //implement "Reset Settings" feature
99
- unset($option[$property]); //remove it
100
- }
101
-
102
- //clear cache
103
- do_action('aam-clear-cache-action', $this->getSubject());
104
 
105
  return update_post_meta(
106
  $this->getPost()->ID, $this->getOptionName(), $option
107
  );
108
  }
 
 
 
 
 
 
 
 
 
 
 
109
 
110
  /**
111
  * Set Post. Cover all unexpectd wierd issues with WP Core
@@ -167,5 +184,23 @@ class AAM_Core_Object_Post extends AAM_Core_Object {
167
  public function getPost() {
168
  return $this->_post;
169
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
 
171
  }
61
  public function read() {
62
  $subject = $this->getSubject();
63
  $opname = $this->getOptionName();
64
+ $chname = $opname . '|' . $this->getPost()->ID;
65
 
66
+ //read cache first
67
+ $option = apply_filters('aam-read-cache-filter', array(), $chname, $subject);
 
 
 
 
68
 
69
+ if ($option === false) { //if false, then the cache is empty but exist
70
+ $option = array();
71
+ } else {
72
+ if (empty($option)) { //no cache for this element
73
+ $option = get_post_meta($this->getPost()->ID, $opname, true);
74
+ }
75
+
76
+ //try to inherit from terms or default first - AAM Plus Package or any
77
+ //other extension that use this filter
78
+ $option = apply_filters('aam-post-access-filter', $option, $this);
79
+
80
+ //try to inherit from parent
81
+ if (empty($option)) {
82
+ $option = $subject->inheritFromParent('post', $this->getPost()->ID);
83
+ $this->setInherited(empty($option) ? null : 'role');
84
+ }
85
  }
86
+
87
+ $this->setOption($option);
88
 
89
  //trigger caching mechanism
90
+ do_action(
91
+ 'aam-write-cache-action',
92
+ $chname,
93
+ //if cache is on and result is empty, simply cache the false to speed-up
94
+ (empty($option) ? false : $option),
95
+ $subject
96
+ );
97
  }
98
 
99
  /**
106
  public function save($property, $checked) {
107
  $option = $this->getOption();
108
 
109
+ $option[$property] = $checked;
 
 
 
 
 
 
 
 
 
 
110
 
111
  return update_post_meta(
112
  $this->getPost()->ID, $this->getOptionName(), $option
113
  );
114
  }
115
+
116
+ /**
117
+ * Reset post settings
118
+ *
119
+ * @return boolean
120
+ *
121
+ * @access public
122
+ */
123
+ public function reset() {
124
+ return delete_post_meta($this->getPost()->ID, $this->getOptionName());
125
+ }
126
 
127
  /**
128
  * Set Post. Cover all unexpectd wierd issues with WP Core
184
  public function getPost() {
185
  return $this->_post;
186
  }
187
+
188
+ /**
189
+ * Check if options were overwritten
190
+ *
191
+ * In order to consider options overwritten there are three conditions to be met:
192
+ * - Current object should have no empty option set;
193
+ * - The inherited flad should be null;
194
+ *
195
+ * @return boolean
196
+ *
197
+ * @access public
198
+ */
199
+ public function isOverwritten () {
200
+ $option = $this->getOption();
201
+ $inherit = $this->getInherited();
202
+
203
+ return (!empty($option) && is_null($inherit));
204
+ }
205
 
206
  }
Application/Core/Repository.php CHANGED
@@ -51,6 +51,15 @@ class AAM_Core_Repository {
51
  * @static
52
  */
53
  private static $_instance = null;
 
 
 
 
 
 
 
 
 
54
 
55
  /**
56
  * Consturctor
@@ -87,15 +96,18 @@ class AAM_Core_Repository {
87
  * @access public
88
  */
89
  public function load() {
90
- $basedir = WP_CONTENT_DIR . self::RELPATH;
91
 
92
  if (file_exists($basedir)) {
93
  //iterate through each active extension and load it
94
- foreach (scandir($basedir) as $module) {
95
- if (!in_array($module, array('.', '..'))) {
96
- $this->bootstrapExtension($basedir . '/' . $module);
97
  }
98
  }
 
 
 
99
  }
100
  }
101
 
@@ -127,12 +139,12 @@ class AAM_Core_Repository {
127
  * @global type $wp_filesystem
128
  */
129
  public function addExtension($content) {
130
- $filepath = WP_CONTENT_DIR . self::RELPATH . '/' . uniqid('aam_');
131
 
132
  $response = file_put_contents($filepath, $content);
133
  if (!is_wp_error($response)) { //unzip the archive
134
  WP_Filesystem(false, false, true); //init filesystem
135
- $response = unzip_file($filepath, WP_CONTENT_DIR . self::RELPATH);
136
  if (!is_wp_error($response)) {
137
  $response = true;
138
  }
@@ -174,10 +186,10 @@ class AAM_Core_Repository {
174
  if (!defined($const)) { //extension does not exist
175
  $status = self::STATUS_DOWNLOAD;
176
  } elseif (!empty($cache[$title])) {
177
- $ver = constant($const);
178
- //Check if there is a version mismatch. Also ignore if there is no
179
  //license stored for this extension
180
- if ($ver != $cache[$title]->version && !empty($cache[$title]->license)) {
 
181
  $status = self::STATUS_UPDATE;
182
  }
183
  }
@@ -185,23 +197,42 @@ class AAM_Core_Repository {
185
  return $status;
186
  }
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  /**
189
  *
190
  * @return type
191
  */
192
  protected function prepareExtensionCache() {
193
- $list = AAM_Core_API::getOption('aam-extension-list', array());
194
- $licenses = AAM_Core_API::getOption('aam-extension-license', array());
195
-
196
- $cache = array();
197
- foreach ($list as $row) {
198
- $cache[$row->title] = $row;
199
- if (isset($licenses[$row->title])) {
200
- $cache[$row->title]->license = $licenses[$row->title];
 
 
 
 
 
201
  }
202
  }
203
 
204
- return $cache;
205
  }
206
 
207
  /**
@@ -217,7 +248,7 @@ class AAM_Core_Repository {
217
  $error = false;
218
 
219
  //create a directory if does not exist
220
- $basedir = WP_CONTENT_DIR . self::RELPATH;
221
  if (!file_exists($basedir)) {
222
  if (!@mkdir($basedir, fileperms(ABSPATH) & 0777 | 0755, true)) {
223
  $error = sprintf(__('Failed to create %s', AAM_KEY), $basedir);
@@ -230,5 +261,15 @@ class AAM_Core_Repository {
230
 
231
  return $error;
232
  }
 
 
 
 
 
 
 
 
 
 
233
 
234
  }
51
  * @static
52
  */
53
  private static $_instance = null;
54
+
55
+ /**
56
+ * Extension cache
57
+ *
58
+ * @var array
59
+ *
60
+ * @access protected
61
+ */
62
+ protected $cache = array();
63
 
64
  /**
65
  * Consturctor
96
  * @access public
97
  */
98
  public function load() {
99
+ $basedir = $this->getBasedir();
100
 
101
  if (file_exists($basedir)) {
102
  //iterate through each active extension and load it
103
+ foreach (scandir($basedir) as $extension) {
104
+ if (!in_array($extension, array('.', '..'))) {
105
+ $this->bootstrapExtension($basedir . '/' . $extension);
106
  }
107
  }
108
+ //Very important hook for cases when there is extensions dependancy.
109
+ //For example AAM Plus Package depends on AAM Utitlities properties
110
+ do_action('aam-post-extensions-load');
111
  }
112
  }
113
 
139
  * @global type $wp_filesystem
140
  */
141
  public function addExtension($content) {
142
+ $filepath = $this->getBasedir() . '/' . uniqid('aam_');
143
 
144
  $response = file_put_contents($filepath, $content);
145
  if (!is_wp_error($response)) { //unzip the archive
146
  WP_Filesystem(false, false, true); //init filesystem
147
+ $response = unzip_file($filepath, $this->getBasedir());
148
  if (!is_wp_error($response)) {
149
  $response = true;
150
  }
186
  if (!defined($const)) { //extension does not exist
187
  $status = self::STATUS_DOWNLOAD;
188
  } elseif (!empty($cache[$title])) {
189
+ //Check if user has the latest extension. Also ignore if there is no
 
190
  //license stored for this extension
191
+ $version = version_compare(constant($const), $cache[$title]->version);
192
+ if ($version == -1 && !empty($cache[$title]->license)) {
193
  $status = self::STATUS_UPDATE;
194
  }
195
  }
197
  return $status;
198
  }
199
 
200
+ /**
201
+ *
202
+ * @param type $slug
203
+ *
204
+ * @return type
205
+ */
206
+ public function pluginStatus($slug) {
207
+ require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
208
+
209
+ $plugin = plugins_api('plugin_information', array('slug' => $slug));
210
+
211
+ return install_plugin_install_status( $plugin);
212
+ }
213
+
214
  /**
215
  *
216
  * @return type
217
  */
218
  protected function prepareExtensionCache() {
219
+ if (empty($this->cache)) {
220
+ $list = AAM_Core_API::getOption('aam-extension-repository', array());
221
+ $licenses = AAM_Core_API::getOption('aam-extension-license', array());
222
+
223
+ //WP Error Fix bug report
224
+ $list = (is_array($list) ? $list : array());
225
+
226
+ $this->cache = array();
227
+ foreach ($list as $row) {
228
+ $this->cache[$row->title] = $row;
229
+ if (isset($licenses[$row->title])) {
230
+ $this->cache[$row->title]->license = $licenses[$row->title];
231
+ }
232
  }
233
  }
234
 
235
+ return $this->cache;
236
  }
237
 
238
  /**
248
  $error = false;
249
 
250
  //create a directory if does not exist
251
+ $basedir = $this->getBasedir();
252
  if (!file_exists($basedir)) {
253
  if (!@mkdir($basedir, fileperms(ABSPATH) & 0777 | 0755, true)) {
254
  $error = sprintf(__('Failed to create %s', AAM_KEY), $basedir);
261
 
262
  return $error;
263
  }
264
+
265
+ /**
266
+ *
267
+ * @return type
268
+ */
269
+ public function getBasedir() {
270
+ $basedir = WP_CONTENT_DIR . self::RELPATH;
271
+
272
+ return AAM_Core_ConfigPress::get('aam.extentionDir', $basedir);
273
+ }
274
 
275
  }
Application/Core/Server.php CHANGED
@@ -27,7 +27,7 @@ final class AAM_Core_Server {
27
  *
28
  * Fetch the extension list with versions from the server
29
  *
30
- * @return array|WP_Error
31
  *
32
  * @access public
33
  */
@@ -35,13 +35,12 @@ final class AAM_Core_Server {
35
  $response = self::send(self::SERVER_URL . '/check');
36
 
37
  if (!is_wp_error($response)) {
38
- if ($response->error === true) {
39
- $result = new WP_Error($response->code, $response->message);
40
- } else {
41
  $result = $response->products;
42
  }
43
  } else {
44
- $result = $response;
45
  }
46
 
47
  return $result;
27
  *
28
  * Fetch the extension list with versions from the server
29
  *
30
+ * @return array
31
  *
32
  * @access public
33
  */
35
  $response = self::send(self::SERVER_URL . '/check');
36
 
37
  if (!is_wp_error($response)) {
38
+ //WP Error Fix bug report
39
+ if ($response->error !== true && !empty($response->products)) {
 
40
  $result = $response->products;
41
  }
42
  } else {
43
+ $result = array();
44
  }
45
 
46
  return $result;
Application/Core/Subject.php CHANGED
@@ -78,7 +78,7 @@ abstract class AAM_Core_Subject {
78
  $subject = $this->getSubject();
79
 
80
  //make sure that method is callable
81
- if (method_exists($subject, $name)) {
82
  $response = call_user_func_array(array($subject, $name), $args);
83
  } else {
84
  $response = null;
@@ -180,11 +180,6 @@ abstract class AAM_Core_Subject {
180
  public function getObject($objectType, $id = 'none') {
181
  $object = null;
182
 
183
- //make sure that object group is defined
184
- if (!isset($this->_objects[$objectType])){
185
- $this->_objects[$objectType] = array();
186
- }
187
-
188
  //check if there is an object with specified ID
189
  if (!isset($this->_objects[$objectType][$id])) {
190
  $classname = 'AAM_Core_Object_' . ucfirst($objectType);
@@ -212,7 +207,9 @@ abstract class AAM_Core_Subject {
212
  * @return type
213
  */
214
  public function hasCapability($capability) {
215
- return $this->getSubject()->has_cap($capability);
 
 
216
  }
217
 
218
  /**
@@ -226,6 +223,16 @@ abstract class AAM_Core_Subject {
226
  public function save($param, $value, $object, $objectId = 0) {
227
  return $this->getObject($object, $objectId)->save($param, $value);
228
  }
 
 
 
 
 
 
 
 
 
 
229
 
230
  /**
231
  * Retrieve list of subject's capabilities
@@ -245,6 +252,11 @@ abstract class AAM_Core_Subject {
245
  */
246
  abstract protected function retrieveSubject();
247
 
 
 
 
 
 
248
  /**
249
  * Read object from parent subject
250
  *
@@ -256,7 +268,7 @@ abstract class AAM_Core_Subject {
256
  * @access public
257
  */
258
  public function inheritFromParent($object, $id = ''){
259
- if ($subject = $this->getParentSubject()){
260
  $option = $subject->getObject($object, $id)->getOption();
261
  } else {
262
  $option = null;
@@ -274,6 +286,20 @@ abstract class AAM_Core_Subject {
274
  *
275
  * @access public
276
  */
277
- abstract public function getParentSubject();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
 
279
  }
78
  $subject = $this->getSubject();
79
 
80
  //make sure that method is callable
81
+ if ($subject instanceof AAM_Core_Subject && method_exists($subject, $name)) {
82
  $response = call_user_func_array(array($subject, $name), $args);
83
  } else {
84
  $response = null;
180
  public function getObject($objectType, $id = 'none') {
181
  $object = null;
182
 
 
 
 
 
 
183
  //check if there is an object with specified ID
184
  if (!isset($this->_objects[$objectType][$id])) {
185
  $classname = 'AAM_Core_Object_' . ucfirst($objectType);
207
  * @return type
208
  */
209
  public function hasCapability($capability) {
210
+ $subject = $this->getSubject();
211
+
212
+ return ($subject ? $subject->has_cap($capability) : false);
213
  }
214
 
215
  /**
223
  public function save($param, $value, $object, $objectId = 0) {
224
  return $this->getObject($object, $objectId)->save($param, $value);
225
  }
226
+
227
+ /**
228
+ *
229
+ * @param type $object
230
+ * @param type $id
231
+ * @return type
232
+ */
233
+ public function deleteOption($object, $id = 0) {
234
+ return AAM_Core_API::deleteOption($this->getOptionName($object, $id));
235
+ }
236
 
237
  /**
238
  * Retrieve list of subject's capabilities
252
  */
253
  abstract protected function retrieveSubject();
254
 
255
+ /**
256
+ *
257
+ */
258
+ abstract public function getOptionName($object, $id);
259
+
260
  /**
261
  * Read object from parent subject
262
  *
268
  * @access public
269
  */
270
  public function inheritFromParent($object, $id = ''){
271
+ if ($subject = $this->getParent()){
272
  $option = $subject->getObject($object, $id)->getOption();
273
  } else {
274
  $option = null;
286
  *
287
  * @access public
288
  */
289
+ abstract public function getParent();
290
+
291
+ /**
292
+ * Check if subject has parent
293
+ *
294
+ * Return true if current subject has parent subject. Applicable only for User
295
+ * only were Role is a parent subject to it.
296
+ *
297
+ * @return boolean
298
+ *
299
+ * @access public
300
+ */
301
+ public function hasParent() {
302
+ return false;
303
+ }
304
 
305
  }
Application/Core/Subject/Role.php CHANGED
@@ -28,7 +28,7 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
28
  * @access protected
29
  */
30
  protected function retrieveSubject() {
31
- $roles = new WP_Roles;
32
  $role = $roles->get_role($this->getId());
33
 
34
  if (!is_null($role) && isset($role->capabilities)) {
@@ -49,14 +49,14 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
49
  */
50
  public function delete() {
51
  $status = false;
52
- $role = new WP_Roles;
53
 
54
  if ($this->getId() !== 'administrator') {
55
  $count = count_users();
56
  $stats = $count['avail_roles'];
57
 
58
  if (empty($stats[$this->getId()])) {
59
- $role->remove_role($this->getId());
60
  $status = true;
61
  }
62
  }
@@ -65,15 +65,19 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
65
  }
66
 
67
  /**
68
- *
69
- * @param type $name
 
 
70
  * @return boolean
 
 
71
  */
72
  public function update($name) {
73
- $role = new WP_Roles;
74
  if ($name) {
75
- $role->roles[$this->getId()]['name'] = $name;
76
- $status = AAM_Core_API::updateOption($role->role_key, $role->roles);
77
  } else {
78
  $status = false;
79
  }
@@ -91,7 +95,9 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
91
  * @access public
92
  */
93
  public function removeCapability($capability) {
94
- return $this->getSubject()->remove_cap($capability);
 
 
95
  }
96
 
97
  /**
@@ -106,12 +112,17 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
106
  * @access public
107
  */
108
  public function addCapability($capability) {
109
- return $this->getSubject()->add_cap($capability, 1);
 
 
110
  }
111
 
112
  /**
113
- *
114
- * @return type
 
 
 
115
  */
116
  public function getCapabilities() {
117
  return $this->getSubject()->capabilities;
@@ -146,23 +157,11 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
146
  /**
147
  *
148
  * @param type $object
149
- * @param type $object_id
150
- * @return type
151
- */
152
- public function deleteOption($object, $object_id = 0) {
153
- return AAM_Core_API::deleteOption(
154
- $this->getOptionName($object, $object_id)
155
- );
156
- }
157
-
158
- /**
159
- *
160
- * @param type $object
161
- * @param type $object_id
162
  * @return string
163
  */
164
- public function getOptionName($object, $object_id) {
165
- $name = "aam_{$object}" . ($object_id ? "_{$object_id}_" : '_');
166
  $name .= self::UID . '_' . $this->getId();
167
 
168
  return $name;
@@ -179,7 +178,7 @@ class AAM_Core_Subject_Role extends AAM_Core_Subject {
179
  /**
180
  * @inheritdoc
181
  */
182
- public function getParentSubject() {
183
  return null;
184
  }
185
 
28
  * @access protected
29
  */
30
  protected function retrieveSubject() {
31
+ $roles = AAM_Core_API::getRoles();
32
  $role = $roles->get_role($this->getId());
33
 
34
  if (!is_null($role) && isset($role->capabilities)) {
49
  */
50
  public function delete() {
51
  $status = false;
52
+ $roles = AAM_Core_API::getRoles();
53
 
54
  if ($this->getId() !== 'administrator') {
55
  $count = count_users();
56
  $stats = $count['avail_roles'];
57
 
58
  if (empty($stats[$this->getId()])) {
59
+ $roles->remove_role($this->getId());
60
  $status = true;
61
  }
62
  }
65
  }
66
 
67
  /**
68
+ * Update role name
69
+ *
70
+ * @param string $name
71
+ *
72
  * @return boolean
73
+ *
74
+ * @access public
75
  */
76
  public function update($name) {
77
+ $roles = AAM_Core_API::getRoles();
78
  if ($name) {
79
+ $roles->roles[$this->getId()]['name'] = $name;
80
+ $status = AAM_Core_API::updateOption($roles->role_key, $roles->roles);
81
  } else {
82
  $status = false;
83
  }
95
  * @access public
96
  */
97
  public function removeCapability($capability) {
98
+ $this->getSubject()->remove_cap($capability);
99
+
100
+ return true;
101
  }
102
 
103
  /**
112
  * @access public
113
  */
114
  public function addCapability($capability) {
115
+ $this->getSubject()->add_cap($capability, 1);
116
+
117
+ return true;
118
  }
119
 
120
  /**
121
+ * Get role's capabilities
122
+ *
123
+ * @return array
124
+ *
125
+ * @access public
126
  */
127
  public function getCapabilities() {
128
  return $this->getSubject()->capabilities;
157
  /**
158
  *
159
  * @param type $object
160
+ * @param type $id
 
 
 
 
 
 
 
 
 
 
 
 
161
  * @return string
162
  */
163
+ public function getOptionName($object, $id) {
164
+ $name = "aam_{$object}" . ($id ? "_{$id}_" : '_');
165
  $name .= self::UID . '_' . $this->getId();
166
 
167
  return $name;
178
  /**
179
  * @inheritdoc
180
  */
181
+ public function getParent() {
182
  return null;
183
  }
184
 
Application/Core/Subject/User.php CHANGED
@@ -200,18 +200,34 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
200
  $this->getOptionName($object, $id), $this->getId()
201
  );
202
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
 
204
  /**
205
  * @inheritdoc
206
  */
207
- public function getParentSubject() {
208
  //try to get this option from the User's Role
209
  $roles = $this->getSubject()->roles;
210
  //first user role is counted only. AAM does not support multi-roles
211
  $subject_role = array_shift($roles);
212
 
 
213
  if ($subject_role) {
214
- //in case of multisite & current user does not belong to the site
215
  $role = new AAM_Core_Subject_Role($subject_role);
216
  } else {
217
  $role = null;
@@ -233,6 +249,13 @@ class AAM_Core_Subject_User extends AAM_Core_Subject {
233
  public function getOptionName($object, $id) {
234
  return "aam_{$object}" . ($id ? "_{$id}" : '');
235
  }
 
 
 
 
 
 
 
236
 
237
  /**
238
  * Get Subject UID
200
  $this->getOptionName($object, $id), $this->getId()
201
  );
202
  }
203
+
204
+ /**
205
+ * Read user's option
206
+ *
207
+ * @param string $object
208
+ * @param string $id
209
+ *
210
+ * @return mixed
211
+ *
212
+ * @access public
213
+ */
214
+ public function deleteOption($object, $id = 0) {
215
+ return delete_user_option(
216
+ $this->getId(), $this->getOptionName($object, $id)
217
+ );
218
+ }
219
 
220
  /**
221
  * @inheritdoc
222
  */
223
+ public function getParent() {
224
  //try to get this option from the User's Role
225
  $roles = $this->getSubject()->roles;
226
  //first user role is counted only. AAM does not support multi-roles
227
  $subject_role = array_shift($roles);
228
 
229
+ //in case of multisite & current user does not belong to the site
230
  if ($subject_role) {
 
231
  $role = new AAM_Core_Subject_Role($subject_role);
232
  } else {
233
  $role = null;
249
  public function getOptionName($object, $id) {
250
  return "aam_{$object}" . ($id ? "_{$id}" : '');
251
  }
252
+
253
+ /**
254
+ * @inheritdoc
255
+ */
256
+ public function hasParent() {
257
+ return true;
258
+ }
259
 
260
  /**
261
  * Get Subject UID
Application/Core/Subject/Visitor.php CHANGED
@@ -23,12 +23,12 @@ class AAM_Core_Subject_Visitor extends AAM_Core_Subject {
23
  /**
24
  * Retrieve Visitor Subject
25
  *
26
- * @return stdClass
27
  *
28
  * @access protected
29
  */
30
  protected function retrieveSubject() {
31
- return new stdClass;
32
  }
33
 
34
  /**
@@ -64,18 +64,6 @@ class AAM_Core_Subject_Visitor extends AAM_Core_Subject {
64
  );
65
  }
66
 
67
- /**
68
- *
69
- * @param type $object
70
- * @param type $id
71
- * @return type
72
- */
73
- public function deleteOption($object, $id = 0) {
74
- return AAM_Core_API::deleteOption(
75
- $this->getOptionName($object, $id)
76
- );
77
- }
78
-
79
  /**
80
  *
81
  * @param type $object
@@ -97,7 +85,7 @@ class AAM_Core_Subject_Visitor extends AAM_Core_Subject {
97
  /**
98
  * @inheritdoc
99
  */
100
- public function getParentSubject() {
101
  return null;
102
  }
103
 
23
  /**
24
  * Retrieve Visitor Subject
25
  *
26
+ * @return null|AAM_Core_Subject
27
  *
28
  * @access protected
29
  */
30
  protected function retrieveSubject() {
31
+ return null;
32
  }
33
 
34
  /**
64
  );
65
  }
66
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  /**
68
  *
69
  * @param type $object
85
  /**
86
  * @inheritdoc
87
  */
88
+ public function getParent() {
89
  return null;
90
  }
91
 
Application/Frontend/Manager.php CHANGED
@@ -32,19 +32,21 @@ class AAM_Frontend_Manager {
32
  * @access public
33
  */
34
  public function __construct() {
35
- //control WordPress frontend
36
- add_action('wp', array($this, 'wp'), 999);
37
- //filter navigation pages & taxonomies
38
- add_filter('get_pages', array($this, 'getPages'));
39
- add_filter('wp_get_nav_menu_items', array($this, 'getNavigationMenu'));
40
- //widget filters
41
- add_filter('sidebars_widgets', array($this, 'widgetFilter'), 999);
42
- //get control over commenting stuff
43
- add_filter('comments_open', array($this, 'commentOpen'), 10, 2);
44
- //user login control
45
- add_filter('wp_authenticate_user', array($this, 'authenticate'), 1, 2);
46
- //add post filter for LIST restriction
47
- add_filter('the_posts', array($this, 'thePosts'), 999, 2);
 
 
48
  }
49
 
50
  /**
@@ -53,17 +55,19 @@ class AAM_Frontend_Manager {
53
  * @return void
54
  *
55
  * @access public
56
- * @global WP_Query $wp_query
57
  * @global WP_Post $post
58
  */
59
  public function wp() {
60
- global $wp_query, $post;
61
 
62
  $user = AAM::getUser();
63
- if (!$wp_query->is_home() && ($post instanceof WP_Post)) {
64
- if ($user->getObject('post', $post->ID)->has('frontend.read')) {
 
65
  AAM_Core_API::reject();
66
  }
 
 
67
  }
68
  }
69
 
32
  * @access public
33
  */
34
  public function __construct() {
35
+ if (apply_filters('aam-utility-property', 'frontend-access-control', true)) {
36
+ //control WordPress frontend
37
+ add_action('wp', array($this, 'wp'), 999);
38
+ //filter navigation pages & taxonomies
39
+ add_filter('get_pages', array($this, 'getPages'));
40
+ add_filter('wp_get_nav_menu_items', array($this, 'getNavigationMenu'));
41
+ //widget filters
42
+ add_filter('sidebars_widgets', array($this, 'widgetFilter'), 999);
43
+ //get control over commenting stuff
44
+ add_filter('comments_open', array($this, 'commentOpen'), 10, 2);
45
+ //user login control
46
+ add_filter('wp_authenticate_user', array($this, 'authenticate'), 1, 2);
47
+ //add post filter for LIST restriction
48
+ add_filter('the_posts', array($this, 'thePosts'), 999, 2);
49
+ }
50
  }
51
 
52
  /**
55
  * @return void
56
  *
57
  * @access public
 
58
  * @global WP_Post $post
59
  */
60
  public function wp() {
61
+ global $post;
62
 
63
  $user = AAM::getUser();
64
+ if (is_single() || is_page()) {
65
+ $object = $user->getObject('post', $post->ID);
66
+ if ($object->has('frontend.read')) {
67
  AAM_Core_API::reject();
68
  }
69
+ //trigger any action that is listeting
70
+ do_action('aam-wp-action', $object);
71
  }
72
  }
73
 
Lang/{en_US.mo → advanced-access-manager-en_US.mo} RENAMED
Binary file
Lang/{en_US.po → advanced-access-manager-en_US.po} RENAMED
@@ -1,13 +1,13 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: AAM\n"
4
- "POT-Creation-Date: 2015-11-22 10:19-0500\n"
5
  "PO-Revision-Date: \n"
6
  "Language-Team: WP AAM <vasyl@vasyltech.com>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "X-Generator: Poedit 1.8.6\n"
11
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
  "X-Poedit-SourceCharset: UTF-8\n"
13
  "X-Poedit-KeywordsList: __\n"
@@ -16,13 +16,13 @@ msgstr ""
16
  "Language: en_US\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
 
19
- #: media/js/aam-ui.js:43 media/js/aam-ui.js:1220
20
  #: Application/Backend/Localization.php:23
21
  msgid "Loading..."
22
  msgstr ""
23
 
24
  #: media/js/aam-ui.js:48 Application/Backend/Localization.php:24
25
- #: Application/Backend/view/index.phtml:121
26
  msgid "Select Role"
27
  msgstr ""
28
 
@@ -34,178 +34,226 @@ msgstr ""
34
  msgid "_TOTAL_ role(s)"
35
  msgstr ""
36
 
37
- #: media/js/aam-ui.js:89 media/js/aam-ui.js:431
38
  #: Application/Backend/Localization.php:27
39
- #: Application/Backend/view/object/capability.phtml:22
40
  msgid "Create"
41
  msgstr ""
42
 
43
  #: media/js/aam-ui.js:114 Application/Backend/Localization.php:28
44
- #: Application/Backend/view/index.phtml:87
45
  msgid "Users"
46
  msgstr ""
47
 
48
- #: media/js/aam-ui.js:211 media/js/aam-ui.js:255 media/js/aam-ui.js:891
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  #: Application/Backend/Localization.php:13
50
  msgid "Saving..."
51
  msgstr ""
52
 
53
- #: media/js/aam-ui.js:219 Application/Backend/Localization.php:29
54
  msgid "Failed to add new role"
55
  msgstr ""
56
 
57
- #: media/js/aam-ui.js:224 media/js/aam-ui.js:267 media/js/aam-ui.js:304
58
- #: media/js/aam-ui.js:396 media/js/aam-ui.js:687 media/js/aam-ui.js:724
59
- #: media/js/aam-ui.js:904 media/js/aam-ui.js:1051 media/js/aam-ui.js:1092
60
- #: media/js/aam-ui.js:1325 media/js/aam.js:220
61
  #: Application/Backend/Localization.php:15
62
  msgid "Application error"
63
  msgstr ""
64
 
65
- #: media/js/aam-ui.js:227 Application/Backend/Localization.php:30
66
- #: Application/Backend/view/index.phtml:126
67
  msgid "Add Role"
68
  msgstr ""
69
 
70
- #: media/js/aam-ui.js:262 Application/Backend/Localization.php:31
71
  msgid "Failed to update role"
72
  msgstr ""
73
 
74
- #: media/js/aam-ui.js:271 Application/Backend/Localization.php:32
75
- #: Application/Backend/view/extension.phtml:41
76
- #: Application/Backend/view/extension.phtml:59
77
- #: Application/Backend/view/extension.phtml:77
78
- #: Application/Backend/view/extension.phtml:95
79
  msgid "Update"
80
  msgstr ""
81
 
82
- #: media/js/aam-ui.js:294 Application/Backend/Localization.php:33
83
  msgid "Deleting..."
84
  msgstr ""
85
 
86
- #: media/js/aam-ui.js:300 Application/Backend/Localization.php:34
87
  msgid "Failed to delete role"
88
  msgstr ""
89
 
90
- #: media/js/aam-ui.js:308 Application/Backend/Localization.php:35
91
- #: Application/Backend/view/index.phtml:159
92
- #: Application/Backend/view/index.phtml:165
93
- msgid "Delete Role"
 
 
 
 
94
  msgstr ""
95
 
96
- #: media/js/aam-ui.js:391 Application/Backend/Localization.php:36
97
  msgid "Failed to block user"
98
  msgstr ""
99
 
100
- #: media/js/aam-ui.js:423 Application/Backend/Localization.php:37
101
  msgid "Search User"
102
  msgstr ""
103
 
104
- #: media/js/aam-ui.js:424 Application/Backend/Localization.php:38
105
  msgid "_TOTAL_ user(s)"
106
  msgstr ""
107
 
108
- #: media/js/aam-ui.js:448 Application/Backend/Localization.php:39
109
- #: Application/Backend/view/index.phtml:99
110
  msgid "Role"
111
  msgstr ""
112
 
113
- #: media/js/aam-ui.js:569 Application/Backend/Localization.php:40
 
 
 
 
 
 
 
 
114
  msgid "Anonymous"
115
  msgstr ""
116
 
117
- #: media/js/aam-ui.js:618 Application/Backend/Localization.php:17
118
- #: Application/Backend/view/object/menu.phtml:43
119
  msgid "Show Menu"
120
  msgstr ""
121
 
122
- #: media/js/aam-ui.js:633 Application/Backend/Localization.php:18
123
- #: Application/Backend/view/object/menu.phtml:47
124
  msgid "Hide Menu"
125
  msgstr ""
126
 
127
- #: media/js/aam-ui.js:719 Application/Backend/Localization.php:19
128
  msgid "Failed to retrieve mataboxes"
129
  msgstr ""
130
 
131
- #: media/js/aam-ui.js:779 Application/Backend/Localization.php:44
132
  msgid "Failed to grand capability - WordPress policy"
133
  msgstr ""
134
 
135
- #: media/js/aam-ui.js:814 Application/Backend/Localization.php:11
136
  msgid "Search Capability"
137
  msgstr ""
138
 
139
- #: media/js/aam-ui.js:815 Application/Backend/Localization.php:12
140
  msgid "_TOTAL_ capability(s)"
141
  msgstr ""
142
 
143
- #: media/js/aam-ui.js:899 Application/Backend/Localization.php:14
144
  msgid "Failed to add new capability"
145
  msgstr ""
146
 
147
- #: media/js/aam-ui.js:907 Application/Backend/Localization.php:16
148
- #: Application/Backend/view/object/capability.phtml:51
149
  msgid "Add Capability"
150
  msgstr ""
151
 
152
- #: media/js/aam-ui.js:1132 Application/Backend/Localization.php:20
 
 
 
 
 
 
 
 
 
 
 
 
153
  msgid "Search"
154
  msgstr ""
155
 
156
- #: media/js/aam-ui.js:1133 Application/Backend/Localization.php:21
157
  msgid "_TOTAL_ object(s)"
158
  msgstr ""
159
 
160
- #: media/js/aam-ui.js:1209 Application/Backend/Localization.php:22
161
  msgid "Failed"
162
  msgstr ""
163
 
164
- #: media/js/aam.js:128 Application/Backend/Localization.php:43
 
 
 
 
 
 
 
 
 
 
165
  msgid ""
166
  "Javascript error detected during the page load. AAM may not function "
167
  "properly."
168
  msgstr ""
169
 
170
- #: media/js/aam.js:159
171
  msgid "Current "
172
  msgstr ""
173
 
174
- #: Application/Backend/Capability.php:126
175
- #: Application/Backend/Capability.php:165
176
  msgid "System"
177
  msgstr ""
178
 
179
- #: Application/Backend/Capability.php:127
180
- #: Application/Backend/Capability.php:167 Application/Backend/Post.php:318
181
  msgid "Posts & Pages"
182
  msgstr ""
183
 
184
- #: Application/Backend/Capability.php:128
185
- #: Application/Backend/Capability.php:169
186
- msgid "Backend Interface"
 
187
  msgstr ""
188
 
189
- #: Application/Backend/Capability.php:129
190
- #: Application/Backend/Capability.php:171
191
  msgid "Miscellaneous"
192
  msgstr ""
193
 
194
- #: Application/Backend/Capability.php:190
195
- #: Application/Backend/view/index.phtml:55
196
  msgid "Capabilities"
197
  msgstr ""
198
 
199
- #: Application/Backend/Extension.php:88
200
  msgid "License key is missing."
201
  msgstr ""
202
 
203
- #: Application/Backend/Extension.php:149
204
- #: Application/Backend/view/index.phtml:65
205
  msgid "Extensions"
206
  msgstr ""
207
 
208
- #: Application/Backend/Filter.php:196 Application/Core/API.php:180
209
  msgid "Access Denied"
210
  msgstr ""
211
 
@@ -217,183 +265,221 @@ msgstr ""
217
  msgid "Current role"
218
  msgstr ""
219
 
220
- #: Application/Backend/Manager.php:89
221
  #, php-format
222
  msgid "Extension %s has new update available for download."
223
  msgstr ""
224
 
225
- #: Application/Backend/Manager.php:128
226
- msgid "Manage Access"
 
 
 
 
227
  msgstr ""
228
 
229
- #: Application/Backend/Manager.php:243 Application/Backend/Manager.php:244
230
  msgid "AAM"
231
  msgstr ""
232
 
233
- #: Application/Backend/Menu.php:161 Application/Backend/view/index.phtml:45
234
  msgid "Backend Menu"
235
  msgstr ""
236
 
237
- #: Application/Backend/Metabox.php:195
238
  msgid "Metaboxes & Widgets"
239
  msgstr ""
240
 
241
- #: Application/Backend/Post.php:72
242
  msgid "Base Level"
243
  msgstr ""
244
 
245
- #: Application/Backend/Post.php:276
246
  msgid "You reached your limitation."
247
  msgstr ""
248
 
249
- #: Application/Core/Repository.php:223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  #, php-format
251
  msgid "Failed to create %s"
252
  msgstr ""
253
 
254
- #: Application/Core/Repository.php:227
255
  #, php-format
256
  msgid "Directory %s is not writable"
257
  msgstr ""
258
 
259
- #: aam.php:149
260
  msgid "PHP 5.2 or higher is required."
261
  msgstr ""
262
 
263
- #: aam.php:151
264
  msgid "WP 3.8 or higher is required."
265
  msgstr ""
266
 
267
- #: Application/Backend/view/extension.phtml:10
268
  msgid "Install Extension"
269
  msgstr ""
270
 
271
- #: Application/Backend/view/extension.phtml:14
272
  msgid "License Key"
273
  msgstr ""
274
 
275
- #: Application/Backend/view/extension.phtml:18
276
  msgid "Install"
277
  msgstr ""
278
 
279
- #: Application/Backend/view/extension.phtml:25
280
  msgid "Extension"
281
  msgstr ""
282
 
283
- #: Application/Backend/view/extension.phtml:26
284
- #: Application/Backend/view/index.phtml:100
285
- #: Application/Backend/view/index.phtml:197
286
  msgid "Action"
287
  msgstr ""
288
 
289
- #: Application/Backend/view/extension.phtml:36
290
- msgid ""
291
- "Development license gives you an ability to download all the available "
292
- "extensions and use them to up to 5 life domains."
293
- msgstr ""
294
-
295
- #: Application/Backend/view/extension.phtml:43
296
- #: Application/Backend/view/extension.phtml:61
297
- msgid "Purchase"
298
  msgstr ""
299
 
300
- #: Application/Backend/view/extension.phtml:54
301
- msgid ""
302
- "Unlock limitations related to Posts and Pages feature. Extend basic AAM "
303
- "functionality with Page Categories and ability to manage access to your "
304
- "comments (AAM Plus Package adds new capabilities to the default list of "
305
- "WordPress capabilities like Edit Comments, Delete Comments, Spam Comments "
306
- "etc.)."
307
  msgstr ""
308
 
309
- #: Application/Backend/view/extension.phtml:72
310
- msgid "Various useful tools for AAM like caching or clear all settings."
311
  msgstr ""
312
 
313
- #: Application/Backend/view/extension.phtml:79
314
- #: Application/Backend/view/extension.phtml:97
315
- #: Application/Backend/view/extension.phtml:125
316
  msgid "Download"
317
  msgstr ""
318
 
319
- #: Application/Backend/view/extension.phtml:90
320
- msgid ""
321
- "Convenient way to navigate between different sites in the Network Admin "
322
- "Panel. This extension adds additional widget to the AAM page that allows to "
323
- "switch between different sites."
324
- msgstr ""
325
-
326
- #: Application/Backend/view/extension.phtml:105
327
  msgid "All extensions are installed and up to date."
328
  msgstr ""
329
 
330
- #: Application/Backend/view/extension.phtml:116
331
- #: Application/Backend/view/extension.phtml:136
332
- #: Application/Backend/view/extension.phtml:145
333
- #: Application/Backend/view/index.phtml:110
334
- #: Application/Backend/view/index.phtml:127
335
- #: Application/Backend/view/index.phtml:137
336
- #: Application/Backend/view/index.phtml:148
337
- #: Application/Backend/view/index.phtml:158
338
- #: Application/Backend/view/index.phtml:166
339
  #: Application/Backend/view/index.phtml:176
340
- #: Application/Backend/view/index.phtml:207
341
- #: Application/Backend/view/object/capability.phtml:41
342
- #: Application/Backend/view/object/capability.phtml:52
 
 
 
 
 
343
  msgid "Close"
344
  msgstr ""
345
 
346
- #: Application/Backend/view/extension.phtml:117
347
- #: Application/Backend/view/index.phtml:177
348
- #: Application/Backend/view/index.phtml:208
349
  msgid "Notification"
350
  msgstr ""
351
 
352
- #: Application/Backend/view/extension.phtml:121
353
- #, php-format
354
  msgid ""
355
- "Click \"Download\" button below for a manual installation. Simply unzip the "
356
- "archive to wp-content%s directory."
357
  msgstr ""
358
 
359
- #: Application/Backend/view/extension.phtml:126
360
  msgid "Cancel"
361
  msgstr ""
362
 
363
- #: Application/Backend/view/extension.phtml:137
364
  msgid "Install Extension Info"
365
  msgstr ""
366
 
367
- #: Application/Backend/view/extension.phtml:141
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  msgid ""
369
- "In order to install premium extension, please use PayPal transaction ID "
370
- "number that you recieved after the payment was completed successfully (it "
371
- "might take up to 2 hours for PayPal to send you the email). If you already "
372
- "purchased an extension for the older AAM version, use the license key but "
373
- "please remember that it is limited only to one life domain."
374
  msgstr ""
375
 
376
- #: Application/Backend/view/index.phtml:30
 
 
 
 
 
 
 
 
377
  msgid "Access Manager"
378
  msgstr ""
379
 
380
- #: Application/Backend/view/index.phtml:37
381
  msgid "Note from the author"
382
  msgstr ""
383
 
384
- #: Application/Backend/view/index.phtml:38
385
  msgid ""
386
  "Appreciate your interest in Advanced Access Manager (aka AAM). With a strong "
387
  "knowledge and experience in WordPress, AAM becomes a very powerful tool to "
388
  "manage access to your frontend and backend."
389
  msgstr ""
390
 
391
- #: Application/Backend/view/index.phtml:39
392
  #: Application/Backend/view/index.phtml:61
 
393
  msgid "Please notice!"
394
  msgstr ""
395
 
396
- #: Application/Backend/view/index.phtml:40
397
  msgid ""
398
  "AAM was thoroughly tested on the fresh installation of WordPress and in the "
399
  "latest versions of Chrome, Safari, IE and Firefox. If you have any issues, "
@@ -401,12 +487,12 @@ msgid ""
401
  "WordPress installation."
402
  msgstr ""
403
 
404
- #: Application/Backend/view/index.phtml:41
405
  msgid ""
406
  "Please find below the short description of each feature that AAM offers."
407
  msgstr ""
408
 
409
- #: Application/Backend/view/index.phtml:46
410
  msgid ""
411
  "Filter the admin menu. Please notice that it only filters the menu but does "
412
  "not restrict a direct access to the filtered menus. In order to completely "
@@ -415,11 +501,11 @@ msgid ""
415
  "name is right next to the menu name)."
416
  msgstr ""
417
 
418
- #: Application/Backend/view/index.phtml:50
419
  msgid "Metaboxes &amp; Widgets"
420
  msgstr ""
421
 
422
- #: Application/Backend/view/index.phtml:51
423
  msgid ""
424
  "Filter backend metaboxes and frontend widgets. If the list of metaboxes and "
425
  "widgets is empty, click the “Refresh” button. This will reinitialize the "
@@ -427,7 +513,7 @@ msgid ""
427
  "fails to execute WordPress remote request function “wp_remote_request”."
428
  msgstr ""
429
 
430
- #: Application/Backend/view/index.phtml:56
431
  msgid ""
432
  "This is probably the most important and powerful feature that manages list "
433
  "of capabilities for roles and users. Please make sure that you are familiar "
@@ -439,19 +525,19 @@ msgid ""
439
  "retains the same exact name."
440
  msgstr ""
441
 
442
- #: Application/Backend/view/index.phtml:60
443
  msgid "Posts &amp; Pages"
444
  msgstr ""
445
 
446
- #: Application/Backend/view/index.phtml:61
447
  msgid "Manage access to your posts, pages and custom post types."
448
  msgstr ""
449
 
450
- #: Application/Backend/view/index.phtml:61
451
  msgid "This feature has limitations without AAM Plus Package extension."
452
  msgstr ""
453
 
454
- #: Application/Backend/view/index.phtml:66
455
  #, php-format
456
  msgid ""
457
  "Extend AAM functionality with variety of extensions that can be either "
@@ -466,155 +552,150 @@ msgid ""
466
  "within next 3 business days."
467
  msgstr ""
468
 
469
- #: Application/Backend/view/index.phtml:80
470
  msgid "User/Role Manager"
471
  msgstr ""
472
 
473
- #: Application/Backend/view/index.phtml:86
474
  msgid "Roles"
475
  msgstr ""
476
 
477
- #: Application/Backend/view/index.phtml:89
478
  msgid "Visitor"
479
  msgstr ""
480
 
481
- #: Application/Backend/view/index.phtml:111
482
  msgid "Add New Role"
483
  msgstr ""
484
 
485
- #: Application/Backend/view/index.phtml:115
486
- #: Application/Backend/view/index.phtml:142
487
  msgid "Role Name"
488
  msgstr ""
489
 
490
- #: Application/Backend/view/index.phtml:116
491
- #: Application/Backend/view/index.phtml:143
492
  msgid "Enter Role Name"
493
  msgstr ""
494
 
495
- #: Application/Backend/view/index.phtml:119
496
  msgid "Inherit Capabilities"
497
  msgstr ""
498
 
499
- #: Application/Backend/view/index.phtml:138
500
  msgid "Edit Role"
501
  msgstr ""
502
 
503
- #: Application/Backend/view/index.phtml:147
504
  msgid "Update Role"
505
  msgstr ""
506
 
507
- #: Application/Backend/view/index.phtml:162
508
  #, php-format
509
  msgid "Are you sure that you want to delete %s role?"
510
  msgstr ""
511
 
512
- #: Application/Backend/view/index.phtml:180
513
  msgid ""
514
  "You are not allowed to delete this role because either you do not have a "
515
  "capability to \"Delete Users\" or there is at least one user assigned to it."
516
  msgstr ""
517
 
518
- #: Application/Backend/view/index.phtml:183
519
- #: Application/Backend/view/index.phtml:214
520
- msgid "OK"
521
- msgstr ""
522
-
523
- #: Application/Backend/view/index.phtml:196
524
  msgid "Username"
525
  msgstr ""
526
 
527
- #: Application/Backend/view/index.phtml:211
528
  msgid "You are not allowed to perform this action."
529
  msgstr ""
530
 
531
- #: Application/Backend/view/index.phtml:224
532
  msgid ""
533
  "Manage access to your website for visitors (any user that is not "
534
  "authenticated)"
535
  msgstr ""
536
 
537
- #: Application/Backend/view/index.phtml:225
538
  msgid "Manage Visitor"
539
  msgstr ""
540
 
541
- #: Application/Backend/view/index.phtml:237
542
  msgid "Role Manager"
543
  msgstr ""
544
 
545
- #: Application/Backend/view/index.phtml:238
546
  msgid ""
547
  "With role manager you can manage access for any defined role, edit role's "
548
  "name, create new role or even delete existing (but only when there is no "
549
  "users assigned to it). You are not allowed to delete Administrator role."
550
  msgstr ""
551
 
552
- #: Application/Backend/view/index.phtml:242
553
  msgid "User Manager"
554
  msgstr ""
555
 
556
- #: Application/Backend/view/index.phtml:243
557
  msgid ""
558
  "Manage access for any user. As a bonus feature, you can block user. It means "
559
  "that user will be not able to login to your website anymore. Create or edit "
560
  "user actions link to the native WordPress create/edit user interface."
561
  msgstr ""
562
 
563
- #: Application/Backend/view/index.phtml:247
564
  msgid "Visitor Manager"
565
  msgstr ""
566
 
567
- #: Application/Backend/view/index.phtml:248
568
  msgid ""
569
  "Visitor is any user that is not authenticated to your website. Considering "
570
  "the fact that visitors do not have any access to backend, any features that "
571
  "ara backend related are disabled."
572
  msgstr ""
573
 
574
- #: Application/Backend/view/index.phtml:276
575
  #, php-format
576
  msgid "Follow us on twitter %s for the latest Advanced Access Manager news."
577
  msgstr ""
578
 
579
- #: Application/Backend/view/index.phtml:279
580
  msgid "What's New"
581
  msgstr ""
582
 
583
- #: Application/Backend/view/index.phtml:281
584
  msgid "Brand new and much more intuitive user interface."
585
  msgstr ""
586
 
587
- #: Application/Backend/view/index.phtml:282
588
  msgid ""
589
  "Fully responsive design so you can manage access to website even on your "
590
  "smart phone."
591
  msgstr ""
592
 
593
- #: Application/Backend/view/index.phtml:283
594
  msgid "Better, more reliable and faster core functionality."
595
  msgstr ""
596
 
597
- #: Application/Backend/view/index.phtml:284
598
  msgid ""
599
  "Completely new extension handler. In case of any file system failure, you "
600
  "can download an extension for manual installation."
601
  msgstr ""
602
 
603
- #: Application/Backend/view/index.phtml:285
604
  msgid "Added \"Manage Access\" action to the list of user."
605
  msgstr ""
606
 
607
- #: Application/Backend/view/index.phtml:288
608
  msgid "Please be aware of the latest changes!"
609
  msgstr ""
610
 
611
- #: Application/Backend/view/index.phtml:290
612
  msgid ""
613
  "\"Save\" button has been removed. Any changes that you perform are saved "
614
  "automatically."
615
  msgstr ""
616
 
617
- #: Application/Backend/view/index.phtml:292
618
  msgid ""
619
  "License key for an extension is valid for one life domain only. All the "
620
  "licenses that were purchased before are still valid but limited to one "
@@ -622,39 +703,39 @@ msgid ""
622
  "April 2016)."
623
  msgstr ""
624
 
625
- #: Application/Backend/view/index.phtml:293
626
  msgid ""
627
  "Development License is valid for 5 domains with AAM version 3 but is still "
628
  "unlimited with version 2 (only until April 2016)."
629
  msgstr ""
630
 
631
- #: Application/Backend/view/index.phtml:294
632
  msgid ""
633
  "Posts &amp; Pages settings from AAM version 2 are not compatible with AAM "
634
  "version 3."
635
  msgstr ""
636
 
637
- #: Application/Backend/view/index.phtml:295
638
  msgid "You are not allowed to delete or lock an \"Administrator\" role."
639
  msgstr ""
640
 
641
- #: Application/Backend/view/index.phtml:296
642
  msgid "There is no longer a \"Super Admin\" role."
643
  msgstr ""
644
 
645
- #: Application/Backend/view/index.phtml:297
646
  msgid ""
647
  "You are not longer allowed to delete any user or group or users (but you "
648
  "still can do it within native WordPress interface)."
649
  msgstr ""
650
 
651
- #: Application/Backend/view/index.phtml:298
652
  msgid ""
653
  "You are not allowed to delete any capability (even the one that you created "
654
  "manually)."
655
  msgstr ""
656
 
657
- #: Application/Backend/view/index.phtml:302
658
  #, php-format
659
  msgid ""
660
  "You can rolleback to the earlier version of AAM by simply downloading any "
@@ -662,166 +743,202 @@ msgid ""
662
  "plugins/advanced-access-manager directory with the archive's content."
663
  msgstr ""
664
 
665
- #: Application/Backend/view/index.phtml:305
666
  msgid "Ok, got it"
667
  msgstr ""
668
 
669
- #: Application/Backend/view/object/capability.phtml:5
670
- msgid ""
671
- "[Please notice!] You are not allowed to assign or create a new capability "
672
- "that does not belong to user's role. Consider creating a new role with "
673
- "desired list of capabilities and then assign that role to user."
674
- msgstr ""
675
-
676
- #: Application/Backend/view/object/capability.phtml:12
677
  msgid "Filter"
678
  msgstr ""
679
 
680
- #: Application/Backend/view/object/capability.phtml:19
681
  msgid "All Capabilities"
682
  msgstr ""
683
 
684
- #: Application/Backend/view/object/capability.phtml:29
685
  msgid "Category"
686
  msgstr ""
687
 
688
- #: Application/Backend/view/object/capability.phtml:30
689
  msgid "Capability"
690
  msgstr ""
691
 
692
- #: Application/Backend/view/object/capability.phtml:31
693
- msgid "Assign"
 
694
  msgstr ""
695
 
696
- #: Application/Backend/view/object/capability.phtml:42
697
  msgid "Add New Capability"
698
  msgstr ""
699
 
700
- #: Application/Backend/view/object/capability.phtml:46
701
  msgid "Capability Name"
702
  msgstr ""
703
 
704
- #: Application/Backend/view/object/capability.phtml:47
705
  msgid "Enter Capability"
706
  msgstr ""
707
 
708
- #: Application/Backend/view/object/menu.phtml:5
709
- msgid ""
710
- "Backend Menu feature does not restrict direct access to the page but rather "
711
- "filters it from the menu. In order to completely restrict access to the "
712
- "desired page, un-check the capability that is assigned to the menu [(the "
713
- "capability is shown right next to the menu title)]."
714
  msgstr ""
715
 
716
- #: Application/Backend/view/object/metabox.phtml:3
 
 
 
 
 
 
717
  msgid "Refresh"
718
  msgstr ""
719
 
720
- #: Application/Backend/view/object/metabox.phtml:19
721
  msgid "Dashboard Widgets"
722
  msgstr ""
723
 
724
- #: Application/Backend/view/object/metabox.phtml:23
725
  msgid "Frontend Widgets"
726
  msgstr ""
727
 
728
- #: Application/Backend/view/object/metabox.phtml:54
729
  msgid ""
730
  "The list of metaboxes and widgets is not initialized. Click Refresh button "
731
  "above."
732
  msgstr ""
733
 
734
- #: Application/Backend/view/object/post.phtml:13
735
  msgid "Root"
736
  msgstr ""
737
 
 
 
 
 
 
738
  #: Application/Backend/view/object/post.phtml:23
739
- msgid "Title"
740
  msgstr ""
741
 
742
- #: Application/Backend/view/object/post.phtml:24
743
- msgid "Actions"
744
  msgstr ""
745
 
746
- #: Application/Backend/view/object/post.phtml:32
747
- #: Application/Backend/view/object/post.phtml:37
748
- #: Application/Backend/view/object/post.phtml:141
749
  msgid "Go Back"
750
  msgstr ""
751
 
752
- #: Application/Backend/view/object/post.phtml:45
753
  msgid "Frontend"
754
  msgstr ""
755
 
756
- #: Application/Backend/view/object/post.phtml:51
757
- #: Application/Backend/view/object/post.phtml:99
758
  msgid "List"
759
  msgstr ""
760
 
761
- #: Application/Backend/view/object/post.phtml:53
762
  msgid "Filter (exclude) post from any list on your website frontend."
763
  msgstr ""
764
 
765
- #: Application/Backend/view/object/post.phtml:54
766
- #: Application/Backend/view/object/post.phtml:102
767
  msgid "Warning!"
768
  msgstr ""
769
 
770
- #: Application/Backend/view/object/post.phtml:55
771
  msgid ""
772
  "If checked, this property may slowdown your website with large amount of "
773
  "posts."
774
  msgstr ""
775
 
776
- #: Application/Backend/view/object/post.phtml:66
777
  msgid "Read"
778
  msgstr ""
779
 
780
- #: Application/Backend/view/object/post.phtml:68
781
  msgid ""
782
  "Restrict access to read a post. If \"List\" option is not checked, a post "
783
  "will be still listed on your website frontend."
784
  msgstr ""
785
 
786
- #: Application/Backend/view/object/post.phtml:79
787
  msgid "Comment"
788
  msgstr ""
789
 
790
- #: Application/Backend/view/object/post.phtml:81
791
  msgid ""
792
  "Restrict access to comment on a post (if commenting feature is activated)."
793
  msgstr ""
794
 
795
- #: Application/Backend/view/object/post.phtml:93
796
- msgid "Backend"
797
- msgstr ""
798
-
799
- #: Application/Backend/view/object/post.phtml:101
800
  msgid "Filter (exclude) post from any list on your website backend."
801
  msgstr ""
802
 
803
- #: Application/Backend/view/object/post.phtml:103
804
  msgid ""
805
  "If checked, this property may slowdown your backend with large amount of "
806
  "posts."
807
  msgstr ""
808
 
809
- #: Application/Backend/view/object/post.phtml:114
810
- msgid "Edit"
811
- msgstr ""
812
-
813
- #: Application/Backend/view/object/post.phtml:116
814
  msgid ""
815
  "Restrict access to edit a post (also the link \"Edit\" and \"Quick Edit\" "
816
  "will be removed below the post title)."
817
  msgstr ""
818
 
819
- #: Application/Backend/view/object/post.phtml:127
820
  msgid "Delete"
821
  msgstr ""
822
 
823
- #: Application/Backend/view/object/post.phtml:129
824
  msgid ""
825
  "Restrict access to trash or permanently delete a post (also the link \"Trash"
826
  "\" or \"Delete Permanently\" will be removed for a post)."
827
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: AAM\n"
4
+ "POT-Creation-Date: 2016-03-06 19:12-0500\n"
5
  "PO-Revision-Date: \n"
6
  "Language-Team: WP AAM <vasyl@vasyltech.com>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
+ "X-Generator: Poedit 1.8.7\n"
11
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
  "X-Poedit-SourceCharset: UTF-8\n"
13
  "X-Poedit-KeywordsList: __\n"
16
  "Language: en_US\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
 
19
+ #: media/js/aam-ui.js:43 media/js/aam-ui.js:1317
20
  #: Application/Backend/Localization.php:23
21
  msgid "Loading..."
22
  msgstr ""
23
 
24
  #: media/js/aam-ui.js:48 Application/Backend/Localization.php:24
25
+ #: Application/Backend/view/index.phtml:149
26
  msgid "Select Role"
27
  msgstr ""
28
 
34
  msgid "_TOTAL_ role(s)"
35
  msgstr ""
36
 
37
+ #: media/js/aam-ui.js:89 media/js/aam-ui.js:442
38
  #: Application/Backend/Localization.php:27
39
+ #: Application/Backend/view/object/capability.phtml:23
40
  msgid "Create"
41
  msgstr ""
42
 
43
  #: media/js/aam-ui.js:114 Application/Backend/Localization.php:28
44
+ #: Application/Backend/view/index.phtml:115
45
  msgid "Users"
46
  msgstr ""
47
 
48
+ #: media/js/aam-ui.js:142 Application/Backend/Localization.php:45
49
+ msgid "Manage Role"
50
+ msgstr ""
51
+
52
+ #: media/js/aam-ui.js:157 Application/Backend/Localization.php:46
53
+ msgid "Edit Role Name"
54
+ msgstr ""
55
+
56
+ #: media/js/aam-ui.js:177 media/js/aam-ui.js:317
57
+ #: Application/Backend/Localization.php:35
58
+ #: Application/Backend/Localization.php:47
59
+ #: Application/Backend/view/index.phtml:187
60
+ #: Application/Backend/view/index.phtml:193
61
+ msgid "Delete Role"
62
+ msgstr ""
63
+
64
+ #: media/js/aam-ui.js:220 media/js/aam-ui.js:264 media/js/aam-ui.js:965
65
  #: Application/Backend/Localization.php:13
66
  msgid "Saving..."
67
  msgstr ""
68
 
69
+ #: media/js/aam-ui.js:228 Application/Backend/Localization.php:29
70
  msgid "Failed to add new role"
71
  msgstr ""
72
 
73
+ #: media/js/aam-ui.js:233 media/js/aam-ui.js:276 media/js/aam-ui.js:313
74
+ #: media/js/aam-ui.js:407 media/js/aam-ui.js:734 media/js/aam-ui.js:771
75
+ #: media/js/aam-ui.js:978 media/js/aam-ui.js:1146 media/js/aam-ui.js:1187
76
+ #: media/js/aam-ui.js:1463 media/js/aam.js:231
77
  #: Application/Backend/Localization.php:15
78
  msgid "Application error"
79
  msgstr ""
80
 
81
+ #: media/js/aam-ui.js:236 Application/Backend/Localization.php:30
82
+ #: Application/Backend/view/index.phtml:154
83
  msgid "Add Role"
84
  msgstr ""
85
 
86
+ #: media/js/aam-ui.js:271 Application/Backend/Localization.php:31
87
  msgid "Failed to update role"
88
  msgstr ""
89
 
90
+ #: media/js/aam-ui.js:280 Application/Backend/Localization.php:32
91
+ #: Application/Backend/view/extension.phtml:43
 
 
 
92
  msgid "Update"
93
  msgstr ""
94
 
95
+ #: media/js/aam-ui.js:303 Application/Backend/Localization.php:33
96
  msgid "Deleting..."
97
  msgstr ""
98
 
99
+ #: media/js/aam-ui.js:309 Application/Backend/Localization.php:34
100
  msgid "Failed to delete role"
101
  msgstr ""
102
 
103
+ #: media/js/aam-ui.js:390 media/js/aam-ui.js:391 media/js/aam-ui.js:534
104
+ #: Application/Backend/Localization.php:51
105
+ msgid "Unlock User"
106
+ msgstr ""
107
+
108
+ #: media/js/aam-ui.js:396 media/js/aam-ui.js:397 media/js/aam-ui.js:523
109
+ #: Application/Backend/Localization.php:50
110
+ msgid "Lock User"
111
  msgstr ""
112
 
113
+ #: media/js/aam-ui.js:402 Application/Backend/Localization.php:36
114
  msgid "Failed to block user"
115
  msgstr ""
116
 
117
+ #: media/js/aam-ui.js:434 Application/Backend/Localization.php:37
118
  msgid "Search User"
119
  msgstr ""
120
 
121
+ #: media/js/aam-ui.js:435 Application/Backend/Localization.php:38
122
  msgid "_TOTAL_ user(s)"
123
  msgstr ""
124
 
125
+ #: media/js/aam-ui.js:459 Application/Backend/Localization.php:39
126
+ #: Application/Backend/view/index.phtml:127
127
  msgid "Role"
128
  msgstr ""
129
 
130
+ #: media/js/aam-ui.js:483 Application/Backend/Localization.php:48
131
+ msgid "Manage User"
132
+ msgstr ""
133
+
134
+ #: media/js/aam-ui.js:504 Application/Backend/Localization.php:49
135
+ msgid "Edit User"
136
+ msgstr ""
137
+
138
+ #: media/js/aam-ui.js:592 Application/Backend/Localization.php:40
139
  msgid "Anonymous"
140
  msgstr ""
141
 
142
+ #: media/js/aam-ui.js:641 Application/Backend/Localization.php:17
143
+ #: Application/Backend/view/object/menu.phtml:54
144
  msgid "Show Menu"
145
  msgstr ""
146
 
147
+ #: media/js/aam-ui.js:656 Application/Backend/Localization.php:18
148
+ #: Application/Backend/view/object/menu.phtml:58
149
  msgid "Hide Menu"
150
  msgstr ""
151
 
152
+ #: media/js/aam-ui.js:766 Application/Backend/Localization.php:19
153
  msgid "Failed to retrieve mataboxes"
154
  msgstr ""
155
 
156
+ #: media/js/aam-ui.js:850 Application/Backend/Localization.php:53
157
  msgid "Failed to grand capability - WordPress policy"
158
  msgstr ""
159
 
160
+ #: media/js/aam-ui.js:885 Application/Backend/Localization.php:11
161
  msgid "Search Capability"
162
  msgstr ""
163
 
164
+ #: media/js/aam-ui.js:886 Application/Backend/Localization.php:12
165
  msgid "_TOTAL_ capability(s)"
166
  msgstr ""
167
 
168
+ #: media/js/aam-ui.js:973 Application/Backend/Localization.php:14
169
  msgid "Failed to add new capability"
170
  msgstr ""
171
 
172
+ #: media/js/aam-ui.js:981 Application/Backend/Localization.php:16
173
+ #: Application/Backend/view/object/capability.phtml:52
174
  msgid "Add Capability"
175
  msgstr ""
176
 
177
+ #: media/js/aam-ui.js:1131
178
+ msgid "parent role"
179
+ msgstr ""
180
+
181
+ #: media/js/aam-ui.js:1133
182
+ msgid "default settings"
183
+ msgstr ""
184
+
185
+ #: media/js/aam-ui.js:1135
186
+ msgid "parent category"
187
+ msgstr ""
188
+
189
+ #: media/js/aam-ui.js:1227 Application/Backend/Localization.php:20
190
  msgid "Search"
191
  msgstr ""
192
 
193
+ #: media/js/aam-ui.js:1228 Application/Backend/Localization.php:21
194
  msgid "_TOTAL_ object(s)"
195
  msgstr ""
196
 
197
+ #: media/js/aam-ui.js:1306 Application/Backend/Localization.php:22
198
  msgid "Failed"
199
  msgstr ""
200
 
201
+ #: media/js/aam-ui.js:1336 Application/Backend/Localization.php:43
202
+ #: Application/Backend/Manager.php:177
203
+ msgid "Manage Access"
204
+ msgstr ""
205
+
206
+ #: media/js/aam-ui.js:1347 Application/Backend/Localization.php:44
207
+ #: Application/Backend/view/object/post.phtml:125
208
+ msgid "Edit"
209
+ msgstr ""
210
+
211
+ #: media/js/aam.js:139 Application/Backend/Localization.php:52
212
  msgid ""
213
  "Javascript error detected during the page load. AAM may not function "
214
  "properly."
215
  msgstr ""
216
 
217
+ #: media/js/aam.js:170
218
  msgid "Current "
219
  msgstr ""
220
 
221
+ #: Application/Backend/Capability.php:141
222
+ #: Application/Backend/Capability.php:180
223
  msgid "System"
224
  msgstr ""
225
 
226
+ #: Application/Backend/Capability.php:142
227
+ #: Application/Backend/Capability.php:182 Application/Backend/Post.php:348
228
  msgid "Posts & Pages"
229
  msgstr ""
230
 
231
+ #: Application/Backend/Capability.php:143
232
+ #: Application/Backend/Capability.php:184
233
+ #: Application/Backend/view/object/post.phtml:104
234
+ msgid "Backend"
235
  msgstr ""
236
 
237
+ #: Application/Backend/Capability.php:144
238
+ #: Application/Backend/Capability.php:186
239
  msgid "Miscellaneous"
240
  msgstr ""
241
 
242
+ #: Application/Backend/Capability.php:205
243
+ #: Application/Backend/view/index.phtml:77
244
  msgid "Capabilities"
245
  msgstr ""
246
 
247
+ #: Application/Backend/Extension.php:99
248
  msgid "License key is missing."
249
  msgstr ""
250
 
251
+ #: Application/Backend/Extension.php:160
252
+ #: Application/Backend/view/index.phtml:87
253
  msgid "Extensions"
254
  msgstr ""
255
 
256
+ #: Application/Backend/Filter.php:193 Application/Core/API.php:180
257
  msgid "Access Denied"
258
  msgstr ""
259
 
265
  msgid "Current role"
266
  msgstr ""
267
 
268
+ #: Application/Backend/Manager.php:92
269
  #, php-format
270
  msgid "Extension %s has new update available for download."
271
  msgstr ""
272
 
273
+ #: Application/Backend/Manager.php:136
274
+ msgid "AAM caching is off. To speed-up the website turn it on."
275
+ msgstr ""
276
+
277
+ #: Application/Backend/Manager.php:139
278
+ msgid "Read more."
279
  msgstr ""
280
 
281
+ #: Application/Backend/Manager.php:293 Application/Backend/Manager.php:294
282
  msgid "AAM"
283
  msgstr ""
284
 
285
+ #: Application/Backend/Menu.php:183 Application/Backend/view/index.phtml:67
286
  msgid "Backend Menu"
287
  msgstr ""
288
 
289
+ #: Application/Backend/Metabox.php:217
290
  msgid "Metaboxes & Widgets"
291
  msgstr ""
292
 
293
+ #: Application/Backend/Post.php:71
294
  msgid "Base Level"
295
  msgstr ""
296
 
297
+ #: Application/Backend/Post.php:281
298
  msgid "You reached your limitation."
299
  msgstr ""
300
 
301
+ #: Application/Backend/ProductList.php:17
302
+ msgid ""
303
+ "Development license gives you an ability to download all the available "
304
+ "extensions and use them to up to 5 life domains."
305
+ msgstr ""
306
+
307
+ #: Application/Backend/ProductList.php:27
308
+ msgid ""
309
+ "Unlock limitations related to Posts and Pages feature. Extend basic AAM "
310
+ "functionality with Page Categories and ability to manage access to your "
311
+ "comments (AAM Plus Package adds new capabilities to the default list of "
312
+ "WordPress capabilities like Edit Comments, Delete Comments, Spam Comments "
313
+ "etc.)"
314
+ msgstr ""
315
+
316
+ #: Application/Backend/ProductList.php:37
317
+ msgid ""
318
+ "Extension for more advanced user and role administration. Based on user's "
319
+ "highest level capability, filter list of roles with higher level. Also "
320
+ "prevent from editing, promoting or deleting higher level users."
321
+ msgstr ""
322
+
323
+ #: Application/Backend/ProductList.php:46
324
+ msgid "Various useful tools for AAM like caching or clear all settings."
325
+ msgstr ""
326
+
327
+ #: Application/Backend/ProductList.php:54
328
+ msgid ""
329
+ "Convenient way to navigate between different sites in the Network Admin "
330
+ "Panel. This extension adds additional widget to the AAM page that allows to "
331
+ "switch between different sites."
332
+ msgstr ""
333
+
334
+ #: Application/Core/Repository.php:234
335
  #, php-format
336
  msgid "Failed to create %s"
337
  msgstr ""
338
 
339
+ #: Application/Core/Repository.php:238
340
  #, php-format
341
  msgid "Directory %s is not writable"
342
  msgstr ""
343
 
344
+ #: aam.php:152
345
  msgid "PHP 5.2 or higher is required."
346
  msgstr ""
347
 
348
+ #: aam.php:154
349
  msgid "WP 3.8 or higher is required."
350
  msgstr ""
351
 
352
+ #: Application/Backend/view/extension.phtml:11
353
  msgid "Install Extension"
354
  msgstr ""
355
 
356
+ #: Application/Backend/view/extension.phtml:15
357
  msgid "License Key"
358
  msgstr ""
359
 
360
+ #: Application/Backend/view/extension.phtml:19
361
  msgid "Install"
362
  msgstr ""
363
 
364
+ #: Application/Backend/view/extension.phtml:26
365
  msgid "Extension"
366
  msgstr ""
367
 
368
+ #: Application/Backend/view/extension.phtml:27
369
+ #: Application/Backend/view/index.phtml:128
370
+ #: Application/Backend/view/index.phtml:225
371
  msgid "Action"
372
  msgstr ""
373
 
374
+ #: Application/Backend/view/extension.phtml:34
375
+ msgid "Free"
 
 
 
 
 
 
 
376
  msgstr ""
377
 
378
+ #: Application/Backend/view/extension.phtml:41
379
+ msgid "Installed"
 
 
 
 
 
380
  msgstr ""
381
 
382
+ #: Application/Backend/view/extension.phtml:45
383
+ msgid "Purchase"
384
  msgstr ""
385
 
386
+ #: Application/Backend/view/extension.phtml:47
387
+ #: Application/Backend/view/extension.phtml:83
 
388
  msgid "Download"
389
  msgstr ""
390
 
391
+ #: Application/Backend/view/extension.phtml:56
 
 
 
 
 
 
 
392
  msgid "All extensions are installed and up to date."
393
  msgstr ""
394
 
395
+ #: Application/Backend/view/extension.phtml:67
396
+ #: Application/Backend/view/extension.phtml:94
397
+ #: Application/Backend/view/extension.phtml:103
398
+ #: Application/Backend/view/index.phtml:24
399
+ #: Application/Backend/view/index.phtml:138
400
+ #: Application/Backend/view/index.phtml:155
401
+ #: Application/Backend/view/index.phtml:165
 
 
402
  #: Application/Backend/view/index.phtml:176
403
+ #: Application/Backend/view/index.phtml:186
404
+ #: Application/Backend/view/index.phtml:194
405
+ #: Application/Backend/view/index.phtml:204
406
+ #: Application/Backend/view/index.phtml:235
407
+ #: Application/Backend/view/object/capability.phtml:42
408
+ #: Application/Backend/view/object/capability.phtml:53
409
+ #: Application/Backend/view/object/post.phtml:160
410
+ #: Application/Backend/view/object/post.phtml:189
411
  msgid "Close"
412
  msgstr ""
413
 
414
+ #: Application/Backend/view/extension.phtml:68
415
+ #: Application/Backend/view/index.phtml:205
416
+ #: Application/Backend/view/index.phtml:236
417
  msgid "Notification"
418
  msgstr ""
419
 
420
+ #: Application/Backend/view/extension.phtml:72
 
421
  msgid ""
422
+ "Extension requires manual installation. Please follow few simple steps below."
 
423
  msgstr ""
424
 
425
+ #: Application/Backend/view/extension.phtml:84
426
  msgid "Cancel"
427
  msgstr ""
428
 
429
+ #: Application/Backend/view/extension.phtml:95
430
  msgid "Install Extension Info"
431
  msgstr ""
432
 
433
+ #: Application/Backend/view/extension.phtml:99
434
+ msgid ""
435
+ "In order to install the extension, please use license number that you "
436
+ "recieved after the payment was completed successfully (it might take up to 2 "
437
+ "hours for PayPal to send you the email). If you already purchased an "
438
+ "extension for the older AAM version, use the license key but please remember "
439
+ "that it is limited only to one life domain."
440
+ msgstr ""
441
+
442
+ #: Application/Backend/view/index.phtml:25
443
+ msgid "Cache Information"
444
+ msgstr ""
445
+
446
+ #: Application/Backend/view/index.phtml:28
447
  msgid ""
448
+ "AAM main objective is to control access to your frontend and backend "
449
+ "resources. In some cases your website may get slower because AAM performs "
450
+ "additional checks. That is why it is important to have AAM caching turned "
451
+ "on. Please follow few simple steps below to turn on the caching mechanism."
 
452
  msgstr ""
453
 
454
+ #: Application/Backend/view/index.phtml:35
455
+ #: Application/Backend/view/index.phtml:211
456
+ #: Application/Backend/view/index.phtml:242
457
+ #: Application/Backend/view/object/post.phtml:179
458
+ #: Application/Backend/view/object/post.phtml:196
459
+ msgid "OK"
460
+ msgstr ""
461
+
462
+ #: Application/Backend/view/index.phtml:52
463
  msgid "Access Manager"
464
  msgstr ""
465
 
466
+ #: Application/Backend/view/index.phtml:59
467
  msgid "Note from the author"
468
  msgstr ""
469
 
470
+ #: Application/Backend/view/index.phtml:60
471
  msgid ""
472
  "Appreciate your interest in Advanced Access Manager (aka AAM). With a strong "
473
  "knowledge and experience in WordPress, AAM becomes a very powerful tool to "
474
  "manage access to your frontend and backend."
475
  msgstr ""
476
 
 
477
  #: Application/Backend/view/index.phtml:61
478
+ #: Application/Backend/view/index.phtml:83
479
  msgid "Please notice!"
480
  msgstr ""
481
 
482
+ #: Application/Backend/view/index.phtml:62
483
  msgid ""
484
  "AAM was thoroughly tested on the fresh installation of WordPress and in the "
485
  "latest versions of Chrome, Safari, IE and Firefox. If you have any issues, "
487
  "WordPress installation."
488
  msgstr ""
489
 
490
+ #: Application/Backend/view/index.phtml:63
491
  msgid ""
492
  "Please find below the short description of each feature that AAM offers."
493
  msgstr ""
494
 
495
+ #: Application/Backend/view/index.phtml:68
496
  msgid ""
497
  "Filter the admin menu. Please notice that it only filters the menu but does "
498
  "not restrict a direct access to the filtered menus. In order to completely "
501
  "name is right next to the menu name)."
502
  msgstr ""
503
 
504
+ #: Application/Backend/view/index.phtml:72
505
  msgid "Metaboxes &amp; Widgets"
506
  msgstr ""
507
 
508
+ #: Application/Backend/view/index.phtml:73
509
  msgid ""
510
  "Filter backend metaboxes and frontend widgets. If the list of metaboxes and "
511
  "widgets is empty, click the “Refresh” button. This will reinitialize the "
513
  "fails to execute WordPress remote request function “wp_remote_request”."
514
  msgstr ""
515
 
516
+ #: Application/Backend/view/index.phtml:78
517
  msgid ""
518
  "This is probably the most important and powerful feature that manages list "
519
  "of capabilities for roles and users. Please make sure that you are familiar "
525
  "retains the same exact name."
526
  msgstr ""
527
 
528
+ #: Application/Backend/view/index.phtml:82
529
  msgid "Posts &amp; Pages"
530
  msgstr ""
531
 
532
+ #: Application/Backend/view/index.phtml:83
533
  msgid "Manage access to your posts, pages and custom post types."
534
  msgstr ""
535
 
536
+ #: Application/Backend/view/index.phtml:83
537
  msgid "This feature has limitations without AAM Plus Package extension."
538
  msgstr ""
539
 
540
+ #: Application/Backend/view/index.phtml:88
541
  #, php-format
542
  msgid ""
543
  "Extend AAM functionality with variety of extensions that can be either "
552
  "within next 3 business days."
553
  msgstr ""
554
 
555
+ #: Application/Backend/view/index.phtml:108
556
  msgid "User/Role Manager"
557
  msgstr ""
558
 
559
+ #: Application/Backend/view/index.phtml:114
560
  msgid "Roles"
561
  msgstr ""
562
 
563
+ #: Application/Backend/view/index.phtml:117
564
  msgid "Visitor"
565
  msgstr ""
566
 
567
+ #: Application/Backend/view/index.phtml:139
568
  msgid "Add New Role"
569
  msgstr ""
570
 
571
+ #: Application/Backend/view/index.phtml:143
572
+ #: Application/Backend/view/index.phtml:170
573
  msgid "Role Name"
574
  msgstr ""
575
 
576
+ #: Application/Backend/view/index.phtml:144
577
+ #: Application/Backend/view/index.phtml:171
578
  msgid "Enter Role Name"
579
  msgstr ""
580
 
581
+ #: Application/Backend/view/index.phtml:147
582
  msgid "Inherit Capabilities"
583
  msgstr ""
584
 
585
+ #: Application/Backend/view/index.phtml:166
586
  msgid "Edit Role"
587
  msgstr ""
588
 
589
+ #: Application/Backend/view/index.phtml:175
590
  msgid "Update Role"
591
  msgstr ""
592
 
593
+ #: Application/Backend/view/index.phtml:190
594
  #, php-format
595
  msgid "Are you sure that you want to delete %s role?"
596
  msgstr ""
597
 
598
+ #: Application/Backend/view/index.phtml:208
599
  msgid ""
600
  "You are not allowed to delete this role because either you do not have a "
601
  "capability to \"Delete Users\" or there is at least one user assigned to it."
602
  msgstr ""
603
 
604
+ #: Application/Backend/view/index.phtml:224
 
 
 
 
 
605
  msgid "Username"
606
  msgstr ""
607
 
608
+ #: Application/Backend/view/index.phtml:239
609
  msgid "You are not allowed to perform this action."
610
  msgstr ""
611
 
612
+ #: Application/Backend/view/index.phtml:252
613
  msgid ""
614
  "Manage access to your website for visitors (any user that is not "
615
  "authenticated)"
616
  msgstr ""
617
 
618
+ #: Application/Backend/view/index.phtml:253
619
  msgid "Manage Visitor"
620
  msgstr ""
621
 
622
+ #: Application/Backend/view/index.phtml:265
623
  msgid "Role Manager"
624
  msgstr ""
625
 
626
+ #: Application/Backend/view/index.phtml:266
627
  msgid ""
628
  "With role manager you can manage access for any defined role, edit role's "
629
  "name, create new role or even delete existing (but only when there is no "
630
  "users assigned to it). You are not allowed to delete Administrator role."
631
  msgstr ""
632
 
633
+ #: Application/Backend/view/index.phtml:270
634
  msgid "User Manager"
635
  msgstr ""
636
 
637
+ #: Application/Backend/view/index.phtml:271
638
  msgid ""
639
  "Manage access for any user. As a bonus feature, you can block user. It means "
640
  "that user will be not able to login to your website anymore. Create or edit "
641
  "user actions link to the native WordPress create/edit user interface."
642
  msgstr ""
643
 
644
+ #: Application/Backend/view/index.phtml:275
645
  msgid "Visitor Manager"
646
  msgstr ""
647
 
648
+ #: Application/Backend/view/index.phtml:276
649
  msgid ""
650
  "Visitor is any user that is not authenticated to your website. Considering "
651
  "the fact that visitors do not have any access to backend, any features that "
652
  "ara backend related are disabled."
653
  msgstr ""
654
 
655
+ #: Application/Backend/view/index.phtml:310
656
  #, php-format
657
  msgid "Follow us on twitter %s for the latest Advanced Access Manager news."
658
  msgstr ""
659
 
660
+ #: Application/Backend/view/index.phtml:313
661
  msgid "What's New"
662
  msgstr ""
663
 
664
+ #: Application/Backend/view/index.phtml:315
665
  msgid "Brand new and much more intuitive user interface."
666
  msgstr ""
667
 
668
+ #: Application/Backend/view/index.phtml:316
669
  msgid ""
670
  "Fully responsive design so you can manage access to website even on your "
671
  "smart phone."
672
  msgstr ""
673
 
674
+ #: Application/Backend/view/index.phtml:317
675
  msgid "Better, more reliable and faster core functionality."
676
  msgstr ""
677
 
678
+ #: Application/Backend/view/index.phtml:318
679
  msgid ""
680
  "Completely new extension handler. In case of any file system failure, you "
681
  "can download an extension for manual installation."
682
  msgstr ""
683
 
684
+ #: Application/Backend/view/index.phtml:319
685
  msgid "Added \"Manage Access\" action to the list of user."
686
  msgstr ""
687
 
688
+ #: Application/Backend/view/index.phtml:322
689
  msgid "Please be aware of the latest changes!"
690
  msgstr ""
691
 
692
+ #: Application/Backend/view/index.phtml:324
693
  msgid ""
694
  "\"Save\" button has been removed. Any changes that you perform are saved "
695
  "automatically."
696
  msgstr ""
697
 
698
+ #: Application/Backend/view/index.phtml:326
699
  msgid ""
700
  "License key for an extension is valid for one life domain only. All the "
701
  "licenses that were purchased before are still valid but limited to one "
703
  "April 2016)."
704
  msgstr ""
705
 
706
+ #: Application/Backend/view/index.phtml:327
707
  msgid ""
708
  "Development License is valid for 5 domains with AAM version 3 but is still "
709
  "unlimited with version 2 (only until April 2016)."
710
  msgstr ""
711
 
712
+ #: Application/Backend/view/index.phtml:328
713
  msgid ""
714
  "Posts &amp; Pages settings from AAM version 2 are not compatible with AAM "
715
  "version 3."
716
  msgstr ""
717
 
718
+ #: Application/Backend/view/index.phtml:329
719
  msgid "You are not allowed to delete or lock an \"Administrator\" role."
720
  msgstr ""
721
 
722
+ #: Application/Backend/view/index.phtml:330
723
  msgid "There is no longer a \"Super Admin\" role."
724
  msgstr ""
725
 
726
+ #: Application/Backend/view/index.phtml:331
727
  msgid ""
728
  "You are not longer allowed to delete any user or group or users (but you "
729
  "still can do it within native WordPress interface)."
730
  msgstr ""
731
 
732
+ #: Application/Backend/view/index.phtml:332
733
  msgid ""
734
  "You are not allowed to delete any capability (even the one that you created "
735
  "manually)."
736
  msgstr ""
737
 
738
+ #: Application/Backend/view/index.phtml:336
739
  #, php-format
740
  msgid ""
741
  "You can rolleback to the earlier version of AAM by simply downloading any "
743
  "plugins/advanced-access-manager directory with the archive's content."
744
  msgstr ""
745
 
746
+ #: Application/Backend/view/index.phtml:339
747
  msgid "Ok, got it"
748
  msgstr ""
749
 
750
+ #: Application/Backend/view/object/capability.phtml:13
 
 
 
 
 
 
 
751
  msgid "Filter"
752
  msgstr ""
753
 
754
+ #: Application/Backend/view/object/capability.phtml:20
755
  msgid "All Capabilities"
756
  msgstr ""
757
 
758
+ #: Application/Backend/view/object/capability.phtml:30
759
  msgid "Category"
760
  msgstr ""
761
 
762
+ #: Application/Backend/view/object/capability.phtml:31
763
  msgid "Capability"
764
  msgstr ""
765
 
766
+ #: Application/Backend/view/object/capability.phtml:32
767
+ #: Application/Backend/view/object/post.phtml:35
768
+ msgid "Actions"
769
  msgstr ""
770
 
771
+ #: Application/Backend/view/object/capability.phtml:43
772
  msgid "Add New Capability"
773
  msgstr ""
774
 
775
+ #: Application/Backend/view/object/capability.phtml:47
776
  msgid "Capability Name"
777
  msgstr ""
778
 
779
+ #: Application/Backend/view/object/capability.phtml:48
780
  msgid "Enter Capability"
781
  msgstr ""
782
 
783
+ #: Application/Backend/view/object/menu.phtml:6
784
+ #: Application/Backend/view/object/metabox.phtml:6
785
+ #: Application/Backend/view/object/post.phtml:18
786
+ msgid "Settings may not be inherited"
 
 
787
  msgstr ""
788
 
789
+ #: Application/Backend/view/object/menu.phtml:7
790
+ #: Application/Backend/view/object/metabox.phtml:7
791
+ #: Application/Backend/view/object/post.phtml:19
792
+ msgid "Reset"
793
+ msgstr ""
794
+
795
+ #: Application/Backend/view/object/metabox.phtml:13
796
  msgid "Refresh"
797
  msgstr ""
798
 
799
+ #: Application/Backend/view/object/metabox.phtml:29
800
  msgid "Dashboard Widgets"
801
  msgstr ""
802
 
803
+ #: Application/Backend/view/object/metabox.phtml:33
804
  msgid "Frontend Widgets"
805
  msgstr ""
806
 
807
+ #: Application/Backend/view/object/metabox.phtml:63
808
  msgid ""
809
  "The list of metaboxes and widgets is not initialized. Click Refresh button "
810
  "above."
811
  msgstr ""
812
 
813
+ #: Application/Backend/view/object/post.phtml:14
814
  msgid "Root"
815
  msgstr ""
816
 
817
+ #: Application/Backend/view/object/post.phtml:19
818
+ #: Application/Backend/view/object/post.phtml:24
819
+ msgid "Help"
820
+ msgstr ""
821
+
822
  #: Application/Backend/view/object/post.phtml:23
823
+ msgid "Settings inherited from"
824
  msgstr ""
825
 
826
+ #: Application/Backend/view/object/post.phtml:34
827
+ msgid "Title"
828
  msgstr ""
829
 
830
+ #: Application/Backend/view/object/post.phtml:43
831
+ #: Application/Backend/view/object/post.phtml:48
832
+ #: Application/Backend/view/object/post.phtml:152
833
  msgid "Go Back"
834
  msgstr ""
835
 
836
+ #: Application/Backend/view/object/post.phtml:56
837
  msgid "Frontend"
838
  msgstr ""
839
 
840
+ #: Application/Backend/view/object/post.phtml:62
841
+ #: Application/Backend/view/object/post.phtml:110
842
  msgid "List"
843
  msgstr ""
844
 
845
+ #: Application/Backend/view/object/post.phtml:64
846
  msgid "Filter (exclude) post from any list on your website frontend."
847
  msgstr ""
848
 
849
+ #: Application/Backend/view/object/post.phtml:65
850
+ #: Application/Backend/view/object/post.phtml:113
851
  msgid "Warning!"
852
  msgstr ""
853
 
854
+ #: Application/Backend/view/object/post.phtml:66
855
  msgid ""
856
  "If checked, this property may slowdown your website with large amount of "
857
  "posts."
858
  msgstr ""
859
 
860
+ #: Application/Backend/view/object/post.phtml:77
861
  msgid "Read"
862
  msgstr ""
863
 
864
+ #: Application/Backend/view/object/post.phtml:79
865
  msgid ""
866
  "Restrict access to read a post. If \"List\" option is not checked, a post "
867
  "will be still listed on your website frontend."
868
  msgstr ""
869
 
870
+ #: Application/Backend/view/object/post.phtml:90
871
  msgid "Comment"
872
  msgstr ""
873
 
874
+ #: Application/Backend/view/object/post.phtml:92
875
  msgid ""
876
  "Restrict access to comment on a post (if commenting feature is activated)."
877
  msgstr ""
878
 
879
+ #: Application/Backend/view/object/post.phtml:112
 
 
 
 
880
  msgid "Filter (exclude) post from any list on your website backend."
881
  msgstr ""
882
 
883
+ #: Application/Backend/view/object/post.phtml:114
884
  msgid ""
885
  "If checked, this property may slowdown your backend with large amount of "
886
  "posts."
887
  msgstr ""
888
 
889
+ #: Application/Backend/view/object/post.phtml:127
 
 
 
 
890
  msgid ""
891
  "Restrict access to edit a post (also the link \"Edit\" and \"Quick Edit\" "
892
  "will be removed below the post title)."
893
  msgstr ""
894
 
895
+ #: Application/Backend/view/object/post.phtml:138
896
  msgid "Delete"
897
  msgstr ""
898
 
899
+ #: Application/Backend/view/object/post.phtml:140
900
  msgid ""
901
  "Restrict access to trash or permanently delete a post (also the link \"Trash"
902
  "\" or \"Delete Permanently\" will be removed for a post)."
903
  msgstr ""
904
+
905
+ #: Application/Backend/view/object/post.phtml:161
906
+ msgid "Inheritance"
907
+ msgstr ""
908
+
909
+ #: Application/Backend/view/object/post.phtml:164
910
+ msgid ""
911
+ "If no access settings defined for post* or category* AAM triggers the "
912
+ "inheritance mechanism in order listed below. The inheritance process "
913
+ "terminates when the first defined set of settings is found."
914
+ msgstr ""
915
+
916
+ #: Application/Backend/view/object/post.phtml:166
917
+ msgid "If caching is on, read the cached settings"
918
+ msgstr ""
919
+
920
+ #: Application/Backend/view/object/post.phtml:167
921
+ msgid "Read post's or category's settings"
922
+ msgstr ""
923
+
924
+ #: Application/Backend/view/object/post.phtml:168
925
+ msgid ""
926
+ "If AAM Plus Package installed, iterate through the tree of parent categories "
927
+ "and read settings"
928
+ msgstr ""
929
+
930
+ #: Application/Backend/view/object/post.phtml:169
931
+ msgid ""
932
+ "If AAM Plus Package installed, read the default access settings for posts or "
933
+ "categories"
934
+ msgstr ""
935
+
936
+ #: Application/Backend/view/object/post.phtml:170
937
+ msgid ""
938
+ "If user, read settings from the parent role and repeat the same sequence of "
939
+ "steps"
940
+ msgstr ""
941
+
942
+ #: Application/Backend/view/object/post.phtml:190
943
+ msgid "Reset Information"
944
+ msgstr ""
Lang/advanced-access-manager.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: AAM\n"
5
- "POT-Creation-Date: 2015-11-22 10:19-0500\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: WPAAM <support@wpaam.com>\n"
8
  "Language-Team: WP AAM <vasyl@vasyltech.com>\n"
@@ -17,13 +17,13 @@ msgstr ""
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
- #: media/js/aam-ui.js:43 media/js/aam-ui.js:1220
21
  #: Application/Backend/Localization.php:23
22
  msgid "Loading..."
23
  msgstr ""
24
 
25
  #: media/js/aam-ui.js:48 Application/Backend/Localization.php:24
26
- #: Application/Backend/view/index.phtml:121
27
  msgid "Select Role"
28
  msgstr ""
29
 
@@ -35,178 +35,226 @@ msgstr ""
35
  msgid "_TOTAL_ role(s)"
36
  msgstr ""
37
 
38
- #: media/js/aam-ui.js:89 media/js/aam-ui.js:431
39
  #: Application/Backend/Localization.php:27
40
- #: Application/Backend/view/object/capability.phtml:22
41
  msgid "Create"
42
  msgstr ""
43
 
44
  #: media/js/aam-ui.js:114 Application/Backend/Localization.php:28
45
- #: Application/Backend/view/index.phtml:87
46
  msgid "Users"
47
  msgstr ""
48
 
49
- #: media/js/aam-ui.js:211 media/js/aam-ui.js:255 media/js/aam-ui.js:891
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  #: Application/Backend/Localization.php:13
51
  msgid "Saving..."
52
  msgstr ""
53
 
54
- #: media/js/aam-ui.js:219 Application/Backend/Localization.php:29
55
  msgid "Failed to add new role"
56
  msgstr ""
57
 
58
- #: media/js/aam-ui.js:224 media/js/aam-ui.js:267 media/js/aam-ui.js:304
59
- #: media/js/aam-ui.js:396 media/js/aam-ui.js:687 media/js/aam-ui.js:724
60
- #: media/js/aam-ui.js:904 media/js/aam-ui.js:1051 media/js/aam-ui.js:1092
61
- #: media/js/aam-ui.js:1325 media/js/aam.js:220
62
  #: Application/Backend/Localization.php:15
63
  msgid "Application error"
64
  msgstr ""
65
 
66
- #: media/js/aam-ui.js:227 Application/Backend/Localization.php:30
67
- #: Application/Backend/view/index.phtml:126
68
  msgid "Add Role"
69
  msgstr ""
70
 
71
- #: media/js/aam-ui.js:262 Application/Backend/Localization.php:31
72
  msgid "Failed to update role"
73
  msgstr ""
74
 
75
- #: media/js/aam-ui.js:271 Application/Backend/Localization.php:32
76
- #: Application/Backend/view/extension.phtml:41
77
- #: Application/Backend/view/extension.phtml:59
78
- #: Application/Backend/view/extension.phtml:77
79
- #: Application/Backend/view/extension.phtml:95
80
  msgid "Update"
81
  msgstr ""
82
 
83
- #: media/js/aam-ui.js:294 Application/Backend/Localization.php:33
84
  msgid "Deleting..."
85
  msgstr ""
86
 
87
- #: media/js/aam-ui.js:300 Application/Backend/Localization.php:34
88
  msgid "Failed to delete role"
89
  msgstr ""
90
 
91
- #: media/js/aam-ui.js:308 Application/Backend/Localization.php:35
92
- #: Application/Backend/view/index.phtml:159
93
- #: Application/Backend/view/index.phtml:165
94
- msgid "Delete Role"
 
 
 
 
95
  msgstr ""
96
 
97
- #: media/js/aam-ui.js:391 Application/Backend/Localization.php:36
98
  msgid "Failed to block user"
99
  msgstr ""
100
 
101
- #: media/js/aam-ui.js:423 Application/Backend/Localization.php:37
102
  msgid "Search User"
103
  msgstr ""
104
 
105
- #: media/js/aam-ui.js:424 Application/Backend/Localization.php:38
106
  msgid "_TOTAL_ user(s)"
107
  msgstr ""
108
 
109
- #: media/js/aam-ui.js:448 Application/Backend/Localization.php:39
110
- #: Application/Backend/view/index.phtml:99
111
  msgid "Role"
112
  msgstr ""
113
 
114
- #: media/js/aam-ui.js:569 Application/Backend/Localization.php:40
 
 
 
 
 
 
 
 
115
  msgid "Anonymous"
116
  msgstr ""
117
 
118
- #: media/js/aam-ui.js:618 Application/Backend/Localization.php:17
119
- #: Application/Backend/view/object/menu.phtml:43
120
  msgid "Show Menu"
121
  msgstr ""
122
 
123
- #: media/js/aam-ui.js:633 Application/Backend/Localization.php:18
124
- #: Application/Backend/view/object/menu.phtml:47
125
  msgid "Hide Menu"
126
  msgstr ""
127
 
128
- #: media/js/aam-ui.js:719 Application/Backend/Localization.php:19
129
  msgid "Failed to retrieve mataboxes"
130
  msgstr ""
131
 
132
- #: media/js/aam-ui.js:779 Application/Backend/Localization.php:44
133
  msgid "Failed to grand capability - WordPress policy"
134
  msgstr ""
135
 
136
- #: media/js/aam-ui.js:814 Application/Backend/Localization.php:11
137
  msgid "Search Capability"
138
  msgstr ""
139
 
140
- #: media/js/aam-ui.js:815 Application/Backend/Localization.php:12
141
  msgid "_TOTAL_ capability(s)"
142
  msgstr ""
143
 
144
- #: media/js/aam-ui.js:899 Application/Backend/Localization.php:14
145
  msgid "Failed to add new capability"
146
  msgstr ""
147
 
148
- #: media/js/aam-ui.js:907 Application/Backend/Localization.php:16
149
- #: Application/Backend/view/object/capability.phtml:51
150
  msgid "Add Capability"
151
  msgstr ""
152
 
153
- #: media/js/aam-ui.js:1132 Application/Backend/Localization.php:20
 
 
 
 
 
 
 
 
 
 
 
 
154
  msgid "Search"
155
  msgstr ""
156
 
157
- #: media/js/aam-ui.js:1133 Application/Backend/Localization.php:21
158
  msgid "_TOTAL_ object(s)"
159
  msgstr ""
160
 
161
- #: media/js/aam-ui.js:1209 Application/Backend/Localization.php:22
162
  msgid "Failed"
163
  msgstr ""
164
 
165
- #: media/js/aam.js:128 Application/Backend/Localization.php:43
 
 
 
 
 
 
 
 
 
 
166
  msgid ""
167
  "Javascript error detected during the page load. AAM may not function "
168
  "properly."
169
  msgstr ""
170
 
171
- #: media/js/aam.js:159
172
  msgid "Current "
173
  msgstr ""
174
 
175
- #: Application/Backend/Capability.php:126
176
- #: Application/Backend/Capability.php:165
177
  msgid "System"
178
  msgstr ""
179
 
180
- #: Application/Backend/Capability.php:127
181
- #: Application/Backend/Capability.php:167 Application/Backend/Post.php:318
182
  msgid "Posts & Pages"
183
  msgstr ""
184
 
185
- #: Application/Backend/Capability.php:128
186
- #: Application/Backend/Capability.php:169
187
- msgid "Backend Interface"
 
188
  msgstr ""
189
 
190
- #: Application/Backend/Capability.php:129
191
- #: Application/Backend/Capability.php:171
192
  msgid "Miscellaneous"
193
  msgstr ""
194
 
195
- #: Application/Backend/Capability.php:190
196
- #: Application/Backend/view/index.phtml:55
197
  msgid "Capabilities"
198
  msgstr ""
199
 
200
- #: Application/Backend/Extension.php:88
201
  msgid "License key is missing."
202
  msgstr ""
203
 
204
- #: Application/Backend/Extension.php:149
205
- #: Application/Backend/view/index.phtml:65
206
  msgid "Extensions"
207
  msgstr ""
208
 
209
- #: Application/Backend/Filter.php:196 Application/Core/API.php:180
210
  msgid "Access Denied"
211
  msgstr ""
212
 
@@ -218,183 +266,221 @@ msgstr ""
218
  msgid "Current role"
219
  msgstr ""
220
 
221
- #: Application/Backend/Manager.php:89
222
  #, php-format
223
  msgid "Extension %s has new update available for download."
224
  msgstr ""
225
 
226
- #: Application/Backend/Manager.php:128
227
- msgid "Manage Access"
 
 
 
 
228
  msgstr ""
229
 
230
- #: Application/Backend/Manager.php:243 Application/Backend/Manager.php:244
231
  msgid "AAM"
232
  msgstr ""
233
 
234
- #: Application/Backend/Menu.php:161 Application/Backend/view/index.phtml:45
235
  msgid "Backend Menu"
236
  msgstr ""
237
 
238
- #: Application/Backend/Metabox.php:195
239
  msgid "Metaboxes & Widgets"
240
  msgstr ""
241
 
242
- #: Application/Backend/Post.php:72
243
  msgid "Base Level"
244
  msgstr ""
245
 
246
- #: Application/Backend/Post.php:276
247
  msgid "You reached your limitation."
248
  msgstr ""
249
 
250
- #: Application/Core/Repository.php:223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  #, php-format
252
  msgid "Failed to create %s"
253
  msgstr ""
254
 
255
- #: Application/Core/Repository.php:227
256
  #, php-format
257
  msgid "Directory %s is not writable"
258
  msgstr ""
259
 
260
- #: aam.php:149
261
  msgid "PHP 5.2 or higher is required."
262
  msgstr ""
263
 
264
- #: aam.php:151
265
  msgid "WP 3.8 or higher is required."
266
  msgstr ""
267
 
268
- #: Application/Backend/view/extension.phtml:10
269
  msgid "Install Extension"
270
  msgstr ""
271
 
272
- #: Application/Backend/view/extension.phtml:14
273
  msgid "License Key"
274
  msgstr ""
275
 
276
- #: Application/Backend/view/extension.phtml:18
277
  msgid "Install"
278
  msgstr ""
279
 
280
- #: Application/Backend/view/extension.phtml:25
281
  msgid "Extension"
282
  msgstr ""
283
 
284
- #: Application/Backend/view/extension.phtml:26
285
- #: Application/Backend/view/index.phtml:100
286
- #: Application/Backend/view/index.phtml:197
287
  msgid "Action"
288
  msgstr ""
289
 
290
- #: Application/Backend/view/extension.phtml:36
291
- msgid ""
292
- "Development license gives you an ability to download all the available "
293
- "extensions and use them to up to 5 life domains."
294
- msgstr ""
295
-
296
- #: Application/Backend/view/extension.phtml:43
297
- #: Application/Backend/view/extension.phtml:61
298
- msgid "Purchase"
299
  msgstr ""
300
 
301
- #: Application/Backend/view/extension.phtml:54
302
- msgid ""
303
- "Unlock limitations related to Posts and Pages feature. Extend basic AAM "
304
- "functionality with Page Categories and ability to manage access to your "
305
- "comments (AAM Plus Package adds new capabilities to the default list of "
306
- "WordPress capabilities like Edit Comments, Delete Comments, Spam Comments "
307
- "etc.)."
308
  msgstr ""
309
 
310
- #: Application/Backend/view/extension.phtml:72
311
- msgid "Various useful tools for AAM like caching or clear all settings."
312
  msgstr ""
313
 
314
- #: Application/Backend/view/extension.phtml:79
315
- #: Application/Backend/view/extension.phtml:97
316
- #: Application/Backend/view/extension.phtml:125
317
  msgid "Download"
318
  msgstr ""
319
 
320
- #: Application/Backend/view/extension.phtml:90
321
- msgid ""
322
- "Convenient way to navigate between different sites in the Network Admin "
323
- "Panel. This extension adds additional widget to the AAM page that allows to "
324
- "switch between different sites."
325
- msgstr ""
326
-
327
- #: Application/Backend/view/extension.phtml:105
328
  msgid "All extensions are installed and up to date."
329
  msgstr ""
330
 
331
- #: Application/Backend/view/extension.phtml:116
332
- #: Application/Backend/view/extension.phtml:136
333
- #: Application/Backend/view/extension.phtml:145
334
- #: Application/Backend/view/index.phtml:110
335
- #: Application/Backend/view/index.phtml:127
336
- #: Application/Backend/view/index.phtml:137
337
- #: Application/Backend/view/index.phtml:148
338
- #: Application/Backend/view/index.phtml:158
339
- #: Application/Backend/view/index.phtml:166
340
  #: Application/Backend/view/index.phtml:176
341
- #: Application/Backend/view/index.phtml:207
342
- #: Application/Backend/view/object/capability.phtml:41
343
- #: Application/Backend/view/object/capability.phtml:52
 
 
 
 
 
344
  msgid "Close"
345
  msgstr ""
346
 
347
- #: Application/Backend/view/extension.phtml:117
348
- #: Application/Backend/view/index.phtml:177
349
- #: Application/Backend/view/index.phtml:208
350
  msgid "Notification"
351
  msgstr ""
352
 
353
- #: Application/Backend/view/extension.phtml:121
354
- #, php-format
355
  msgid ""
356
- "Click \"Download\" button below for a manual installation. Simply unzip the "
357
- "archive to wp-content%s directory."
358
  msgstr ""
359
 
360
- #: Application/Backend/view/extension.phtml:126
361
  msgid "Cancel"
362
  msgstr ""
363
 
364
- #: Application/Backend/view/extension.phtml:137
365
  msgid "Install Extension Info"
366
  msgstr ""
367
 
368
- #: Application/Backend/view/extension.phtml:141
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  msgid ""
370
- "In order to install premium extension, please use PayPal transaction ID "
371
- "number that you recieved after the payment was completed successfully (it "
372
- "might take up to 2 hours for PayPal to send you the email). If you already "
373
- "purchased an extension for the older AAM version, use the license key but "
374
- "please remember that it is limited only to one life domain."
375
  msgstr ""
376
 
377
- #: Application/Backend/view/index.phtml:30
 
 
 
 
 
 
 
 
378
  msgid "Access Manager"
379
  msgstr ""
380
 
381
- #: Application/Backend/view/index.phtml:37
382
  msgid "Note from the author"
383
  msgstr ""
384
 
385
- #: Application/Backend/view/index.phtml:38
386
  msgid ""
387
  "Appreciate your interest in Advanced Access Manager (aka AAM). With a strong "
388
  "knowledge and experience in WordPress, AAM becomes a very powerful tool to "
389
  "manage access to your frontend and backend."
390
  msgstr ""
391
 
392
- #: Application/Backend/view/index.phtml:39
393
  #: Application/Backend/view/index.phtml:61
 
394
  msgid "Please notice!"
395
  msgstr ""
396
 
397
- #: Application/Backend/view/index.phtml:40
398
  msgid ""
399
  "AAM was thoroughly tested on the fresh installation of WordPress and in the "
400
  "latest versions of Chrome, Safari, IE and Firefox. If you have any issues, "
@@ -402,12 +488,12 @@ msgid ""
402
  "WordPress installation."
403
  msgstr ""
404
 
405
- #: Application/Backend/view/index.phtml:41
406
  msgid ""
407
  "Please find below the short description of each feature that AAM offers."
408
  msgstr ""
409
 
410
- #: Application/Backend/view/index.phtml:46
411
  msgid ""
412
  "Filter the admin menu. Please notice that it only filters the menu but does "
413
  "not restrict a direct access to the filtered menus. In order to completely "
@@ -416,11 +502,11 @@ msgid ""
416
  "name is right next to the menu name)."
417
  msgstr ""
418
 
419
- #: Application/Backend/view/index.phtml:50
420
  msgid "Metaboxes &amp; Widgets"
421
  msgstr ""
422
 
423
- #: Application/Backend/view/index.phtml:51
424
  msgid ""
425
  "Filter backend metaboxes and frontend widgets. If the list of metaboxes and "
426
  "widgets is empty, click the “Refresh” button. This will reinitialize the "
@@ -428,7 +514,7 @@ msgid ""
428
  "fails to execute WordPress remote request function “wp_remote_request”."
429
  msgstr ""
430
 
431
- #: Application/Backend/view/index.phtml:56
432
  msgid ""
433
  "This is probably the most important and powerful feature that manages list "
434
  "of capabilities for roles and users. Please make sure that you are familiar "
@@ -440,19 +526,19 @@ msgid ""
440
  "retains the same exact name."
441
  msgstr ""
442
 
443
- #: Application/Backend/view/index.phtml:60
444
  msgid "Posts &amp; Pages"
445
  msgstr ""
446
 
447
- #: Application/Backend/view/index.phtml:61
448
  msgid "Manage access to your posts, pages and custom post types."
449
  msgstr ""
450
 
451
- #: Application/Backend/view/index.phtml:61
452
  msgid "This feature has limitations without AAM Plus Package extension."
453
  msgstr ""
454
 
455
- #: Application/Backend/view/index.phtml:66
456
  #, php-format
457
  msgid ""
458
  "Extend AAM functionality with variety of extensions that can be either "
@@ -467,155 +553,150 @@ msgid ""
467
  "within next 3 business days."
468
  msgstr ""
469
 
470
- #: Application/Backend/view/index.phtml:80
471
  msgid "User/Role Manager"
472
  msgstr ""
473
 
474
- #: Application/Backend/view/index.phtml:86
475
  msgid "Roles"
476
  msgstr ""
477
 
478
- #: Application/Backend/view/index.phtml:89
479
  msgid "Visitor"
480
  msgstr ""
481
 
482
- #: Application/Backend/view/index.phtml:111
483
  msgid "Add New Role"
484
  msgstr ""
485
 
486
- #: Application/Backend/view/index.phtml:115
487
- #: Application/Backend/view/index.phtml:142
488
  msgid "Role Name"
489
  msgstr ""
490
 
491
- #: Application/Backend/view/index.phtml:116
492
- #: Application/Backend/view/index.phtml:143
493
  msgid "Enter Role Name"
494
  msgstr ""
495
 
496
- #: Application/Backend/view/index.phtml:119
497
  msgid "Inherit Capabilities"
498
  msgstr ""
499
 
500
- #: Application/Backend/view/index.phtml:138
501
  msgid "Edit Role"
502
  msgstr ""
503
 
504
- #: Application/Backend/view/index.phtml:147
505
  msgid "Update Role"
506
  msgstr ""
507
 
508
- #: Application/Backend/view/index.phtml:162
509
  #, php-format
510
  msgid "Are you sure that you want to delete %s role?"
511
  msgstr ""
512
 
513
- #: Application/Backend/view/index.phtml:180
514
  msgid ""
515
  "You are not allowed to delete this role because either you do not have a "
516
  "capability to \"Delete Users\" or there is at least one user assigned to it."
517
  msgstr ""
518
 
519
- #: Application/Backend/view/index.phtml:183
520
- #: Application/Backend/view/index.phtml:214
521
- msgid "OK"
522
- msgstr ""
523
-
524
- #: Application/Backend/view/index.phtml:196
525
  msgid "Username"
526
  msgstr ""
527
 
528
- #: Application/Backend/view/index.phtml:211
529
  msgid "You are not allowed to perform this action."
530
  msgstr ""
531
 
532
- #: Application/Backend/view/index.phtml:224
533
  msgid ""
534
  "Manage access to your website for visitors (any user that is not "
535
  "authenticated)"
536
  msgstr ""
537
 
538
- #: Application/Backend/view/index.phtml:225
539
  msgid "Manage Visitor"
540
  msgstr ""
541
 
542
- #: Application/Backend/view/index.phtml:237
543
  msgid "Role Manager"
544
  msgstr ""
545
 
546
- #: Application/Backend/view/index.phtml:238
547
  msgid ""
548
  "With role manager you can manage access for any defined role, edit role's "
549
  "name, create new role or even delete existing (but only when there is no "
550
  "users assigned to it). You are not allowed to delete Administrator role."
551
  msgstr ""
552
 
553
- #: Application/Backend/view/index.phtml:242
554
  msgid "User Manager"
555
  msgstr ""
556
 
557
- #: Application/Backend/view/index.phtml:243
558
  msgid ""
559
  "Manage access for any user. As a bonus feature, you can block user. It means "
560
  "that user will be not able to login to your website anymore. Create or edit "
561
  "user actions link to the native WordPress create/edit user interface."
562
  msgstr ""
563
 
564
- #: Application/Backend/view/index.phtml:247
565
  msgid "Visitor Manager"
566
  msgstr ""
567
 
568
- #: Application/Backend/view/index.phtml:248
569
  msgid ""
570
  "Visitor is any user that is not authenticated to your website. Considering "
571
  "the fact that visitors do not have any access to backend, any features that "
572
  "ara backend related are disabled."
573
  msgstr ""
574
 
575
- #: Application/Backend/view/index.phtml:276
576
  #, php-format
577
  msgid "Follow us on twitter %s for the latest Advanced Access Manager news."
578
  msgstr ""
579
 
580
- #: Application/Backend/view/index.phtml:279
581
  msgid "What's New"
582
  msgstr ""
583
 
584
- #: Application/Backend/view/index.phtml:281
585
  msgid "Brand new and much more intuitive user interface."
586
  msgstr ""
587
 
588
- #: Application/Backend/view/index.phtml:282
589
  msgid ""
590
  "Fully responsive design so you can manage access to website even on your "
591
  "smart phone."
592
  msgstr ""
593
 
594
- #: Application/Backend/view/index.phtml:283
595
  msgid "Better, more reliable and faster core functionality."
596
  msgstr ""
597
 
598
- #: Application/Backend/view/index.phtml:284
599
  msgid ""
600
  "Completely new extension handler. In case of any file system failure, you "
601
  "can download an extension for manual installation."
602
  msgstr ""
603
 
604
- #: Application/Backend/view/index.phtml:285
605
  msgid "Added \"Manage Access\" action to the list of user."
606
  msgstr ""
607
 
608
- #: Application/Backend/view/index.phtml:288
609
  msgid "Please be aware of the latest changes!"
610
  msgstr ""
611
 
612
- #: Application/Backend/view/index.phtml:290
613
  msgid ""
614
  "\"Save\" button has been removed. Any changes that you perform are saved "
615
  "automatically."
616
  msgstr ""
617
 
618
- #: Application/Backend/view/index.phtml:292
619
  msgid ""
620
  "License key for an extension is valid for one life domain only. All the "
621
  "licenses that were purchased before are still valid but limited to one "
@@ -623,39 +704,39 @@ msgid ""
623
  "April 2016)."
624
  msgstr ""
625
 
626
- #: Application/Backend/view/index.phtml:293
627
  msgid ""
628
  "Development License is valid for 5 domains with AAM version 3 but is still "
629
  "unlimited with version 2 (only until April 2016)."
630
  msgstr ""
631
 
632
- #: Application/Backend/view/index.phtml:294
633
  msgid ""
634
  "Posts &amp; Pages settings from AAM version 2 are not compatible with AAM "
635
  "version 3."
636
  msgstr ""
637
 
638
- #: Application/Backend/view/index.phtml:295
639
  msgid "You are not allowed to delete or lock an \"Administrator\" role."
640
  msgstr ""
641
 
642
- #: Application/Backend/view/index.phtml:296
643
  msgid "There is no longer a \"Super Admin\" role."
644
  msgstr ""
645
 
646
- #: Application/Backend/view/index.phtml:297
647
  msgid ""
648
  "You are not longer allowed to delete any user or group or users (but you "
649
  "still can do it within native WordPress interface)."
650
  msgstr ""
651
 
652
- #: Application/Backend/view/index.phtml:298
653
  msgid ""
654
  "You are not allowed to delete any capability (even the one that you created "
655
  "manually)."
656
  msgstr ""
657
 
658
- #: Application/Backend/view/index.phtml:302
659
  #, php-format
660
  msgid ""
661
  "You can rolleback to the earlier version of AAM by simply downloading any "
@@ -663,166 +744,202 @@ msgid ""
663
  "plugins/advanced-access-manager directory with the archive's content."
664
  msgstr ""
665
 
666
- #: Application/Backend/view/index.phtml:305
667
  msgid "Ok, got it"
668
  msgstr ""
669
 
670
- #: Application/Backend/view/object/capability.phtml:5
671
- msgid ""
672
- "[Please notice!] You are not allowed to assign or create a new capability "
673
- "that does not belong to user's role. Consider creating a new role with "
674
- "desired list of capabilities and then assign that role to user."
675
- msgstr ""
676
-
677
- #: Application/Backend/view/object/capability.phtml:12
678
  msgid "Filter"
679
  msgstr ""
680
 
681
- #: Application/Backend/view/object/capability.phtml:19
682
  msgid "All Capabilities"
683
  msgstr ""
684
 
685
- #: Application/Backend/view/object/capability.phtml:29
686
  msgid "Category"
687
  msgstr ""
688
 
689
- #: Application/Backend/view/object/capability.phtml:30
690
  msgid "Capability"
691
  msgstr ""
692
 
693
- #: Application/Backend/view/object/capability.phtml:31
694
- msgid "Assign"
 
695
  msgstr ""
696
 
697
- #: Application/Backend/view/object/capability.phtml:42
698
  msgid "Add New Capability"
699
  msgstr ""
700
 
701
- #: Application/Backend/view/object/capability.phtml:46
702
  msgid "Capability Name"
703
  msgstr ""
704
 
705
- #: Application/Backend/view/object/capability.phtml:47
706
  msgid "Enter Capability"
707
  msgstr ""
708
 
709
- #: Application/Backend/view/object/menu.phtml:5
710
- msgid ""
711
- "Backend Menu feature does not restrict direct access to the page but rather "
712
- "filters it from the menu. In order to completely restrict access to the "
713
- "desired page, un-check the capability that is assigned to the menu [(the "
714
- "capability is shown right next to the menu title)]."
715
  msgstr ""
716
 
717
- #: Application/Backend/view/object/metabox.phtml:3
 
 
 
 
 
 
718
  msgid "Refresh"
719
  msgstr ""
720
 
721
- #: Application/Backend/view/object/metabox.phtml:19
722
  msgid "Dashboard Widgets"
723
  msgstr ""
724
 
725
- #: Application/Backend/view/object/metabox.phtml:23
726
  msgid "Frontend Widgets"
727
  msgstr ""
728
 
729
- #: Application/Backend/view/object/metabox.phtml:54
730
  msgid ""
731
  "The list of metaboxes and widgets is not initialized. Click Refresh button "
732
  "above."
733
  msgstr ""
734
 
735
- #: Application/Backend/view/object/post.phtml:13
736
  msgid "Root"
737
  msgstr ""
738
 
 
 
 
 
 
739
  #: Application/Backend/view/object/post.phtml:23
740
- msgid "Title"
741
  msgstr ""
742
 
743
- #: Application/Backend/view/object/post.phtml:24
744
- msgid "Actions"
745
  msgstr ""
746
 
747
- #: Application/Backend/view/object/post.phtml:32
748
- #: Application/Backend/view/object/post.phtml:37
749
- #: Application/Backend/view/object/post.phtml:141
750
  msgid "Go Back"
751
  msgstr ""
752
 
753
- #: Application/Backend/view/object/post.phtml:45
754
  msgid "Frontend"
755
  msgstr ""
756
 
757
- #: Application/Backend/view/object/post.phtml:51
758
- #: Application/Backend/view/object/post.phtml:99
759
  msgid "List"
760
  msgstr ""
761
 
762
- #: Application/Backend/view/object/post.phtml:53
763
  msgid "Filter (exclude) post from any list on your website frontend."
764
  msgstr ""
765
 
766
- #: Application/Backend/view/object/post.phtml:54
767
- #: Application/Backend/view/object/post.phtml:102
768
  msgid "Warning!"
769
  msgstr ""
770
 
771
- #: Application/Backend/view/object/post.phtml:55
772
  msgid ""
773
  "If checked, this property may slowdown your website with large amount of "
774
  "posts."
775
  msgstr ""
776
 
777
- #: Application/Backend/view/object/post.phtml:66
778
  msgid "Read"
779
  msgstr ""
780
 
781
- #: Application/Backend/view/object/post.phtml:68
782
  msgid ""
783
  "Restrict access to read a post. If \"List\" option is not checked, a post "
784
  "will be still listed on your website frontend."
785
  msgstr ""
786
 
787
- #: Application/Backend/view/object/post.phtml:79
788
  msgid "Comment"
789
  msgstr ""
790
 
791
- #: Application/Backend/view/object/post.phtml:81
792
  msgid ""
793
  "Restrict access to comment on a post (if commenting feature is activated)."
794
  msgstr ""
795
 
796
- #: Application/Backend/view/object/post.phtml:93
797
- msgid "Backend"
798
- msgstr ""
799
-
800
- #: Application/Backend/view/object/post.phtml:101
801
  msgid "Filter (exclude) post from any list on your website backend."
802
  msgstr ""
803
 
804
- #: Application/Backend/view/object/post.phtml:103
805
  msgid ""
806
  "If checked, this property may slowdown your backend with large amount of "
807
  "posts."
808
  msgstr ""
809
 
810
- #: Application/Backend/view/object/post.phtml:114
811
- msgid "Edit"
812
- msgstr ""
813
-
814
- #: Application/Backend/view/object/post.phtml:116
815
  msgid ""
816
  "Restrict access to edit a post (also the link \"Edit\" and \"Quick Edit\" "
817
  "will be removed below the post title)."
818
  msgstr ""
819
 
820
- #: Application/Backend/view/object/post.phtml:127
821
  msgid "Delete"
822
  msgstr ""
823
 
824
- #: Application/Backend/view/object/post.phtml:129
825
  msgid ""
826
  "Restrict access to trash or permanently delete a post (also the link \"Trash"
827
  "\" or \"Delete Permanently\" will be removed for a post)."
828
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: AAM\n"
5
+ "POT-Creation-Date: 2015-12-09 19:35-0500\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: WPAAM <support@wpaam.com>\n"
8
  "Language-Team: WP AAM <vasyl@vasyltech.com>\n"
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
+ #: media/js/aam-ui.js:43 media/js/aam-ui.js:1317
21
  #: Application/Backend/Localization.php:23
22
  msgid "Loading..."
23
  msgstr ""
24
 
25
  #: media/js/aam-ui.js:48 Application/Backend/Localization.php:24
26
+ #: Application/Backend/view/index.phtml:149
27
  msgid "Select Role"
28
  msgstr ""
29
 
35
  msgid "_TOTAL_ role(s)"
36
  msgstr ""
37
 
38
+ #: media/js/aam-ui.js:89 media/js/aam-ui.js:442
39
  #: Application/Backend/Localization.php:27
40
+ #: Application/Backend/view/object/capability.phtml:23
41
  msgid "Create"
42
  msgstr ""
43
 
44
  #: media/js/aam-ui.js:114 Application/Backend/Localization.php:28
45
+ #: Application/Backend/view/index.phtml:115
46
  msgid "Users"
47
  msgstr ""
48
 
49
+ #: media/js/aam-ui.js:142 Application/Backend/Localization.php:45
50
+ msgid "Manage Role"
51
+ msgstr ""
52
+
53
+ #: media/js/aam-ui.js:157 Application/Backend/Localization.php:46
54
+ msgid "Edit Role Name"
55
+ msgstr ""
56
+
57
+ #: media/js/aam-ui.js:177 media/js/aam-ui.js:317
58
+ #: Application/Backend/Localization.php:35
59
+ #: Application/Backend/Localization.php:47
60
+ #: Application/Backend/view/index.phtml:187
61
+ #: Application/Backend/view/index.phtml:193
62
+ msgid "Delete Role"
63
+ msgstr ""
64
+
65
+ #: media/js/aam-ui.js:220 media/js/aam-ui.js:264 media/js/aam-ui.js:965
66
  #: Application/Backend/Localization.php:13
67
  msgid "Saving..."
68
  msgstr ""
69
 
70
+ #: media/js/aam-ui.js:228 Application/Backend/Localization.php:29
71
  msgid "Failed to add new role"
72
  msgstr ""
73
 
74
+ #: media/js/aam-ui.js:233 media/js/aam-ui.js:276 media/js/aam-ui.js:313
75
+ #: media/js/aam-ui.js:407 media/js/aam-ui.js:734 media/js/aam-ui.js:771
76
+ #: media/js/aam-ui.js:978 media/js/aam-ui.js:1146 media/js/aam-ui.js:1187
77
+ #: media/js/aam-ui.js:1463 media/js/aam.js:231
78
  #: Application/Backend/Localization.php:15
79
  msgid "Application error"
80
  msgstr ""
81
 
82
+ #: media/js/aam-ui.js:236 Application/Backend/Localization.php:30
83
+ #: Application/Backend/view/index.phtml:154
84
  msgid "Add Role"
85
  msgstr ""
86
 
87
+ #: media/js/aam-ui.js:271 Application/Backend/Localization.php:31
88
  msgid "Failed to update role"
89
  msgstr ""
90
 
91
+ #: media/js/aam-ui.js:280 Application/Backend/Localization.php:32
92
+ #: Application/Backend/view/extension.phtml:43
 
 
 
93
  msgid "Update"
94
  msgstr ""
95
 
96
+ #: media/js/aam-ui.js:303 Application/Backend/Localization.php:33
97
  msgid "Deleting..."
98
  msgstr ""
99
 
100
+ #: media/js/aam-ui.js:309 Application/Backend/Localization.php:34
101
  msgid "Failed to delete role"
102
  msgstr ""
103
 
104
+ #: media/js/aam-ui.js:390 media/js/aam-ui.js:391 media/js/aam-ui.js:534
105
+ #: Application/Backend/Localization.php:51
106
+ msgid "Unlock User"
107
+ msgstr ""
108
+
109
+ #: media/js/aam-ui.js:396 media/js/aam-ui.js:397 media/js/aam-ui.js:523
110
+ #: Application/Backend/Localization.php:50
111
+ msgid "Lock User"
112
  msgstr ""
113
 
114
+ #: media/js/aam-ui.js:402 Application/Backend/Localization.php:36
115
  msgid "Failed to block user"
116
  msgstr ""
117
 
118
+ #: media/js/aam-ui.js:434 Application/Backend/Localization.php:37
119
  msgid "Search User"
120
  msgstr ""
121
 
122
+ #: media/js/aam-ui.js:435 Application/Backend/Localization.php:38
123
  msgid "_TOTAL_ user(s)"
124
  msgstr ""
125
 
126
+ #: media/js/aam-ui.js:459 Application/Backend/Localization.php:39
127
+ #: Application/Backend/view/index.phtml:127
128
  msgid "Role"
129
  msgstr ""
130
 
131
+ #: media/js/aam-ui.js:483 Application/Backend/Localization.php:48
132
+ msgid "Manage User"
133
+ msgstr ""
134
+
135
+ #: media/js/aam-ui.js:504 Application/Backend/Localization.php:49
136
+ msgid "Edit User"
137
+ msgstr ""
138
+
139
+ #: media/js/aam-ui.js:592 Application/Backend/Localization.php:40
140
  msgid "Anonymous"
141
  msgstr ""
142
 
143
+ #: media/js/aam-ui.js:641 Application/Backend/Localization.php:17
144
+ #: Application/Backend/view/object/menu.phtml:54
145
  msgid "Show Menu"
146
  msgstr ""
147
 
148
+ #: media/js/aam-ui.js:656 Application/Backend/Localization.php:18
149
+ #: Application/Backend/view/object/menu.phtml:58
150
  msgid "Hide Menu"
151
  msgstr ""
152
 
153
+ #: media/js/aam-ui.js:766 Application/Backend/Localization.php:19
154
  msgid "Failed to retrieve mataboxes"
155
  msgstr ""
156
 
157
+ #: media/js/aam-ui.js:850 Application/Backend/Localization.php:53
158
  msgid "Failed to grand capability - WordPress policy"
159
  msgstr ""
160
 
161
+ #: media/js/aam-ui.js:885 Application/Backend/Localization.php:11
162
  msgid "Search Capability"
163
  msgstr ""
164
 
165
+ #: media/js/aam-ui.js:886 Application/Backend/Localization.php:12
166
  msgid "_TOTAL_ capability(s)"
167
  msgstr ""
168
 
169
+ #: media/js/aam-ui.js:973 Application/Backend/Localization.php:14
170
  msgid "Failed to add new capability"
171
  msgstr ""
172
 
173
+ #: media/js/aam-ui.js:981 Application/Backend/Localization.php:16
174
+ #: Application/Backend/view/object/capability.phtml:52
175
  msgid "Add Capability"
176
  msgstr ""
177
 
178
+ #: media/js/aam-ui.js:1131
179
+ msgid "parent role"
180
+ msgstr ""
181
+
182
+ #: media/js/aam-ui.js:1133
183
+ msgid "default settings"
184
+ msgstr ""
185
+
186
+ #: media/js/aam-ui.js:1135
187
+ msgid "parent category"
188
+ msgstr ""
189
+
190
+ #: media/js/aam-ui.js:1227 Application/Backend/Localization.php:20
191
  msgid "Search"
192
  msgstr ""
193
 
194
+ #: media/js/aam-ui.js:1228 Application/Backend/Localization.php:21
195
  msgid "_TOTAL_ object(s)"
196
  msgstr ""
197
 
198
+ #: media/js/aam-ui.js:1306 Application/Backend/Localization.php:22
199
  msgid "Failed"
200
  msgstr ""
201
 
202
+ #: media/js/aam-ui.js:1336 Application/Backend/Localization.php:43
203
+ #: Application/Backend/Manager.php:177
204
+ msgid "Manage Access"
205
+ msgstr ""
206
+
207
+ #: media/js/aam-ui.js:1347 Application/Backend/Localization.php:44
208
+ #: Application/Backend/view/object/post.phtml:125
209
+ msgid "Edit"
210
+ msgstr ""
211
+
212
+ #: media/js/aam.js:139 Application/Backend/Localization.php:52
213
  msgid ""
214
  "Javascript error detected during the page load. AAM may not function "
215
  "properly."
216
  msgstr ""
217
 
218
+ #: media/js/aam.js:170
219
  msgid "Current "
220
  msgstr ""
221
 
222
+ #: Application/Backend/Capability.php:141
223
+ #: Application/Backend/Capability.php:180
224
  msgid "System"
225
  msgstr ""
226
 
227
+ #: Application/Backend/Capability.php:142
228
+ #: Application/Backend/Capability.php:182 Application/Backend/Post.php:348
229
  msgid "Posts & Pages"
230
  msgstr ""
231
 
232
+ #: Application/Backend/Capability.php:143
233
+ #: Application/Backend/Capability.php:184
234
+ #: Application/Backend/view/object/post.phtml:104
235
+ msgid "Backend"
236
  msgstr ""
237
 
238
+ #: Application/Backend/Capability.php:144
239
+ #: Application/Backend/Capability.php:186
240
  msgid "Miscellaneous"
241
  msgstr ""
242
 
243
+ #: Application/Backend/Capability.php:205
244
+ #: Application/Backend/view/index.phtml:77
245
  msgid "Capabilities"
246
  msgstr ""
247
 
248
+ #: Application/Backend/Extension.php:99
249
  msgid "License key is missing."
250
  msgstr ""
251
 
252
+ #: Application/Backend/Extension.php:160
253
+ #: Application/Backend/view/index.phtml:87
254
  msgid "Extensions"
255
  msgstr ""
256
 
257
+ #: Application/Backend/Filter.php:193 Application/Core/API.php:180
258
  msgid "Access Denied"
259
  msgstr ""
260
 
266
  msgid "Current role"
267
  msgstr ""
268
 
269
+ #: Application/Backend/Manager.php:92
270
  #, php-format
271
  msgid "Extension %s has new update available for download."
272
  msgstr ""
273
 
274
+ #: Application/Backend/Manager.php:136
275
+ msgid "AAM caching is off. To speed-up the website turn it on."
276
+ msgstr ""
277
+
278
+ #: Application/Backend/Manager.php:139
279
+ msgid "Read more."
280
  msgstr ""
281
 
282
+ #: Application/Backend/Manager.php:293 Application/Backend/Manager.php:294
283
  msgid "AAM"
284
  msgstr ""
285
 
286
+ #: Application/Backend/Menu.php:183 Application/Backend/view/index.phtml:67
287
  msgid "Backend Menu"
288
  msgstr ""
289
 
290
+ #: Application/Backend/Metabox.php:217
291
  msgid "Metaboxes & Widgets"
292
  msgstr ""
293
 
294
+ #: Application/Backend/Post.php:71
295
  msgid "Base Level"
296
  msgstr ""
297
 
298
+ #: Application/Backend/Post.php:281
299
  msgid "You reached your limitation."
300
  msgstr ""
301
 
302
+ #: Application/Backend/ProductList.php:17
303
+ msgid ""
304
+ "Development license gives you an ability to download all the available "
305
+ "extensions and use them to up to 5 life domains."
306
+ msgstr ""
307
+
308
+ #: Application/Backend/ProductList.php:27
309
+ msgid ""
310
+ "Unlock limitations related to Posts and Pages feature. Extend basic AAM "
311
+ "functionality with Page Categories and ability to manage access to your "
312
+ "comments (AAM Plus Package adds new capabilities to the default list of "
313
+ "WordPress capabilities like Edit Comments, Delete Comments, Spam Comments "
314
+ "etc.)"
315
+ msgstr ""
316
+
317
+ #: Application/Backend/ProductList.php:37
318
+ msgid ""
319
+ "Extension for more advanced user and role administration. Based on user's "
320
+ "highest level capability, filter list of roles with higher level. Also "
321
+ "prevent from editing, promoting or deleting higher level users."
322
+ msgstr ""
323
+
324
+ #: Application/Backend/ProductList.php:46
325
+ msgid "Various useful tools for AAM like caching or clear all settings."
326
+ msgstr ""
327
+
328
+ #: Application/Backend/ProductList.php:54
329
+ msgid ""
330
+ "Convenient way to navigate between different sites in the Network Admin "
331
+ "Panel. This extension adds additional widget to the AAM page that allows to "
332
+ "switch between different sites."
333
+ msgstr ""
334
+
335
+ #: Application/Core/Repository.php:234
336
  #, php-format
337
  msgid "Failed to create %s"
338
  msgstr ""
339
 
340
+ #: Application/Core/Repository.php:238
341
  #, php-format
342
  msgid "Directory %s is not writable"
343
  msgstr ""
344
 
345
+ #: aam.php:152
346
  msgid "PHP 5.2 or higher is required."
347
  msgstr ""
348
 
349
+ #: aam.php:154
350
  msgid "WP 3.8 or higher is required."
351
  msgstr ""
352
 
353
+ #: Application/Backend/view/extension.phtml:11
354
  msgid "Install Extension"
355
  msgstr ""
356
 
357
+ #: Application/Backend/view/extension.phtml:15
358
  msgid "License Key"
359
  msgstr ""
360
 
361
+ #: Application/Backend/view/extension.phtml:19
362
  msgid "Install"
363
  msgstr ""
364
 
365
+ #: Application/Backend/view/extension.phtml:26
366
  msgid "Extension"
367
  msgstr ""
368
 
369
+ #: Application/Backend/view/extension.phtml:27
370
+ #: Application/Backend/view/index.phtml:128
371
+ #: Application/Backend/view/index.phtml:225
372
  msgid "Action"
373
  msgstr ""
374
 
375
+ #: Application/Backend/view/extension.phtml:34
376
+ msgid "Free"
 
 
 
 
 
 
 
377
  msgstr ""
378
 
379
+ #: Application/Backend/view/extension.phtml:41
380
+ msgid "Installed"
 
 
 
 
 
381
  msgstr ""
382
 
383
+ #: Application/Backend/view/extension.phtml:45
384
+ msgid "Purchase"
385
  msgstr ""
386
 
387
+ #: Application/Backend/view/extension.phtml:47
388
+ #: Application/Backend/view/extension.phtml:83
 
389
  msgid "Download"
390
  msgstr ""
391
 
392
+ #: Application/Backend/view/extension.phtml:56
 
 
 
 
 
 
 
393
  msgid "All extensions are installed and up to date."
394
  msgstr ""
395
 
396
+ #: Application/Backend/view/extension.phtml:67
397
+ #: Application/Backend/view/extension.phtml:94
398
+ #: Application/Backend/view/extension.phtml:103
399
+ #: Application/Backend/view/index.phtml:24
400
+ #: Application/Backend/view/index.phtml:138
401
+ #: Application/Backend/view/index.phtml:155
402
+ #: Application/Backend/view/index.phtml:165
 
 
403
  #: Application/Backend/view/index.phtml:176
404
+ #: Application/Backend/view/index.phtml:186
405
+ #: Application/Backend/view/index.phtml:194
406
+ #: Application/Backend/view/index.phtml:204
407
+ #: Application/Backend/view/index.phtml:235
408
+ #: Application/Backend/view/object/capability.phtml:42
409
+ #: Application/Backend/view/object/capability.phtml:53
410
+ #: Application/Backend/view/object/post.phtml:160
411
+ #: Application/Backend/view/object/post.phtml:189
412
  msgid "Close"
413
  msgstr ""
414
 
415
+ #: Application/Backend/view/extension.phtml:68
416
+ #: Application/Backend/view/index.phtml:205
417
+ #: Application/Backend/view/index.phtml:236
418
  msgid "Notification"
419
  msgstr ""
420
 
421
+ #: Application/Backend/view/extension.phtml:72
 
422
  msgid ""
423
+ "Extension requires manual installation. Please follow few simple steps below."
 
424
  msgstr ""
425
 
426
+ #: Application/Backend/view/extension.phtml:84
427
  msgid "Cancel"
428
  msgstr ""
429
 
430
+ #: Application/Backend/view/extension.phtml:95
431
  msgid "Install Extension Info"
432
  msgstr ""
433
 
434
+ #: Application/Backend/view/extension.phtml:99
435
+ msgid ""
436
+ "In order to install the extension, please use license number that you "
437
+ "recieved after the payment was completed successfully (it might take up to 2 "
438
+ "hours for PayPal to send you the email). If you already purchased an "
439
+ "extension for the older AAM version, use the license key but please remember "
440
+ "that it is limited only to one life domain."
441
+ msgstr ""
442
+
443
+ #: Application/Backend/view/index.phtml:25
444
+ msgid "Cache Information"
445
+ msgstr ""
446
+
447
+ #: Application/Backend/view/index.phtml:28
448
  msgid ""
449
+ "AAM main objective is to control access to your frontend and backend "
450
+ "resources. In some cases your website may get slower because AAM performs "
451
+ "additional checks. That is why it is important to have AAM caching turned "
452
+ "on. Please follow few simple steps below to turn on the caching mechanism."
 
453
  msgstr ""
454
 
455
+ #: Application/Backend/view/index.phtml:35
456
+ #: Application/Backend/view/index.phtml:211
457
+ #: Application/Backend/view/index.phtml:242
458
+ #: Application/Backend/view/object/post.phtml:179
459
+ #: Application/Backend/view/object/post.phtml:196
460
+ msgid "OK"
461
+ msgstr ""
462
+
463
+ #: Application/Backend/view/index.phtml:52
464
  msgid "Access Manager"
465
  msgstr ""
466
 
467
+ #: Application/Backend/view/index.phtml:59
468
  msgid "Note from the author"
469
  msgstr ""
470
 
471
+ #: Application/Backend/view/index.phtml:60
472
  msgid ""
473
  "Appreciate your interest in Advanced Access Manager (aka AAM). With a strong "
474
  "knowledge and experience in WordPress, AAM becomes a very powerful tool to "
475
  "manage access to your frontend and backend."
476
  msgstr ""
477
 
 
478
  #: Application/Backend/view/index.phtml:61
479
+ #: Application/Backend/view/index.phtml:83
480
  msgid "Please notice!"
481
  msgstr ""
482
 
483
+ #: Application/Backend/view/index.phtml:62
484
  msgid ""
485
  "AAM was thoroughly tested on the fresh installation of WordPress and in the "
486
  "latest versions of Chrome, Safari, IE and Firefox. If you have any issues, "
488
  "WordPress installation."
489
  msgstr ""
490
 
491
+ #: Application/Backend/view/index.phtml:63
492
  msgid ""
493
  "Please find below the short description of each feature that AAM offers."
494
  msgstr ""
495
 
496
+ #: Application/Backend/view/index.phtml:68
497
  msgid ""
498
  "Filter the admin menu. Please notice that it only filters the menu but does "
499
  "not restrict a direct access to the filtered menus. In order to completely "
502
  "name is right next to the menu name)."
503
  msgstr ""
504
 
505
+ #: Application/Backend/view/index.phtml:72
506
  msgid "Metaboxes &amp; Widgets"
507
  msgstr ""
508
 
509
+ #: Application/Backend/view/index.phtml:73
510
  msgid ""
511
  "Filter backend metaboxes and frontend widgets. If the list of metaboxes and "
512
  "widgets is empty, click the “Refresh” button. This will reinitialize the "
514
  "fails to execute WordPress remote request function “wp_remote_request”."
515
  msgstr ""
516
 
517
+ #: Application/Backend/view/index.phtml:78
518
  msgid ""
519
  "This is probably the most important and powerful feature that manages list "
520
  "of capabilities for roles and users. Please make sure that you are familiar "
526
  "retains the same exact name."
527
  msgstr ""
528
 
529
+ #: Application/Backend/view/index.phtml:82
530
  msgid "Posts &amp; Pages"
531
  msgstr ""
532
 
533
+ #: Application/Backend/view/index.phtml:83
534
  msgid "Manage access to your posts, pages and custom post types."
535
  msgstr ""
536
 
537
+ #: Application/Backend/view/index.phtml:83
538
  msgid "This feature has limitations without AAM Plus Package extension."
539
  msgstr ""
540
 
541
+ #: Application/Backend/view/index.phtml:88
542
  #, php-format
543
  msgid ""
544
  "Extend AAM functionality with variety of extensions that can be either "
553
  "within next 3 business days."
554
  msgstr ""
555
 
556
+ #: Application/Backend/view/index.phtml:108
557
  msgid "User/Role Manager"
558
  msgstr ""
559
 
560
+ #: Application/Backend/view/index.phtml:114
561
  msgid "Roles"
562
  msgstr ""
563
 
564
+ #: Application/Backend/view/index.phtml:117
565
  msgid "Visitor"
566
  msgstr ""
567
 
568
+ #: Application/Backend/view/index.phtml:139
569
  msgid "Add New Role"
570
  msgstr ""
571
 
572
+ #: Application/Backend/view/index.phtml:143
573
+ #: Application/Backend/view/index.phtml:170
574
  msgid "Role Name"
575
  msgstr ""
576
 
577
+ #: Application/Backend/view/index.phtml:144
578
+ #: Application/Backend/view/index.phtml:171
579
  msgid "Enter Role Name"
580
  msgstr ""
581
 
582
+ #: Application/Backend/view/index.phtml:147
583
  msgid "Inherit Capabilities"
584
  msgstr ""
585
 
586
+ #: Application/Backend/view/index.phtml:166
587
  msgid "Edit Role"
588
  msgstr ""
589
 
590
+ #: Application/Backend/view/index.phtml:175
591
  msgid "Update Role"
592
  msgstr ""
593
 
594
+ #: Application/Backend/view/index.phtml:190
595
  #, php-format
596
  msgid "Are you sure that you want to delete %s role?"
597
  msgstr ""
598
 
599
+ #: Application/Backend/view/index.phtml:208
600
  msgid ""
601
  "You are not allowed to delete this role because either you do not have a "
602
  "capability to \"Delete Users\" or there is at least one user assigned to it."
603
  msgstr ""
604
 
605
+ #: Application/Backend/view/index.phtml:224
 
 
 
 
 
606
  msgid "Username"
607
  msgstr ""
608
 
609
+ #: Application/Backend/view/index.phtml:239
610
  msgid "You are not allowed to perform this action."
611
  msgstr ""
612
 
613
+ #: Application/Backend/view/index.phtml:252
614
  msgid ""
615
  "Manage access to your website for visitors (any user that is not "
616
  "authenticated)"
617
  msgstr ""
618
 
619
+ #: Application/Backend/view/index.phtml:253
620
  msgid "Manage Visitor"
621
  msgstr ""
622
 
623
+ #: Application/Backend/view/index.phtml:265
624
  msgid "Role Manager"
625
  msgstr ""
626
 
627
+ #: Application/Backend/view/index.phtml:266
628
  msgid ""
629
  "With role manager you can manage access for any defined role, edit role's "
630
  "name, create new role or even delete existing (but only when there is no "
631
  "users assigned to it). You are not allowed to delete Administrator role."
632
  msgstr ""
633
 
634
+ #: Application/Backend/view/index.phtml:270
635
  msgid "User Manager"
636
  msgstr ""
637
 
638
+ #: Application/Backend/view/index.phtml:271
639
  msgid ""
640
  "Manage access for any user. As a bonus feature, you can block user. It means "
641
  "that user will be not able to login to your website anymore. Create or edit "
642
  "user actions link to the native WordPress create/edit user interface."
643
  msgstr ""
644
 
645
+ #: Application/Backend/view/index.phtml:275
646
  msgid "Visitor Manager"
647
  msgstr ""
648
 
649
+ #: Application/Backend/view/index.phtml:276
650
  msgid ""
651
  "Visitor is any user that is not authenticated to your website. Considering "
652
  "the fact that visitors do not have any access to backend, any features that "
653
  "ara backend related are disabled."
654
  msgstr ""
655
 
656
+ #: Application/Backend/view/index.phtml:310
657
  #, php-format
658
  msgid "Follow us on twitter %s for the latest Advanced Access Manager news."
659
  msgstr ""
660
 
661
+ #: Application/Backend/view/index.phtml:313
662
  msgid "What's New"
663
  msgstr ""
664
 
665
+ #: Application/Backend/view/index.phtml:315
666
  msgid "Brand new and much more intuitive user interface."
667
  msgstr ""
668
 
669
+ #: Application/Backend/view/index.phtml:316
670
  msgid ""
671
  "Fully responsive design so you can manage access to website even on your "
672
  "smart phone."
673
  msgstr ""
674
 
675
+ #: Application/Backend/view/index.phtml:317
676
  msgid "Better, more reliable and faster core functionality."
677
  msgstr ""
678
 
679
+ #: Application/Backend/view/index.phtml:318
680
  msgid ""
681
  "Completely new extension handler. In case of any file system failure, you "
682
  "can download an extension for manual installation."
683
  msgstr ""
684
 
685
+ #: Application/Backend/view/index.phtml:319
686
  msgid "Added \"Manage Access\" action to the list of user."
687
  msgstr ""
688
 
689
+ #: Application/Backend/view/index.phtml:322
690
  msgid "Please be aware of the latest changes!"
691
  msgstr ""
692
 
693
+ #: Application/Backend/view/index.phtml:324
694
  msgid ""
695
  "\"Save\" button has been removed. Any changes that you perform are saved "
696
  "automatically."
697
  msgstr ""
698
 
699
+ #: Application/Backend/view/index.phtml:326
700
  msgid ""
701
  "License key for an extension is valid for one life domain only. All the "
702
  "licenses that were purchased before are still valid but limited to one "
704
  "April 2016)."
705
  msgstr ""
706
 
707
+ #: Application/Backend/view/index.phtml:327
708
  msgid ""
709
  "Development License is valid for 5 domains with AAM version 3 but is still "
710
  "unlimited with version 2 (only until April 2016)."
711
  msgstr ""
712
 
713
+ #: Application/Backend/view/index.phtml:328
714
  msgid ""
715
  "Posts &amp; Pages settings from AAM version 2 are not compatible with AAM "
716
  "version 3."
717
  msgstr ""
718
 
719
+ #: Application/Backend/view/index.phtml:329
720
  msgid "You are not allowed to delete or lock an \"Administrator\" role."
721
  msgstr ""
722
 
723
+ #: Application/Backend/view/index.phtml:330
724
  msgid "There is no longer a \"Super Admin\" role."
725
  msgstr ""
726
 
727
+ #: Application/Backend/view/index.phtml:331
728
  msgid ""
729
  "You are not longer allowed to delete any user or group or users (but you "
730
  "still can do it within native WordPress interface)."
731
  msgstr ""
732
 
733
+ #: Application/Backend/view/index.phtml:332
734
  msgid ""
735
  "You are not allowed to delete any capability (even the one that you created "
736
  "manually)."
737
  msgstr ""
738
 
739
+ #: Application/Backend/view/index.phtml:336
740
  #, php-format
741
  msgid ""
742
  "You can rolleback to the earlier version of AAM by simply downloading any "
744
  "plugins/advanced-access-manager directory with the archive's content."
745
  msgstr ""
746
 
747
+ #: Application/Backend/view/index.phtml:339
748
  msgid "Ok, got it"
749
  msgstr ""
750
 
751
+ #: Application/Backend/view/object/capability.phtml:13
 
 
 
 
 
 
 
752
  msgid "Filter"
753
  msgstr ""
754
 
755
+ #: Application/Backend/view/object/capability.phtml:20
756
  msgid "All Capabilities"
757
  msgstr ""
758
 
759
+ #: Application/Backend/view/object/capability.phtml:30
760
  msgid "Category"
761
  msgstr ""
762
 
763
+ #: Application/Backend/view/object/capability.phtml:31
764
  msgid "Capability"
765
  msgstr ""
766
 
767
+ #: Application/Backend/view/object/capability.phtml:32
768
+ #: Application/Backend/view/object/post.phtml:35
769
+ msgid "Actions"
770
  msgstr ""
771
 
772
+ #: Application/Backend/view/object/capability.phtml:43
773
  msgid "Add New Capability"
774
  msgstr ""
775
 
776
+ #: Application/Backend/view/object/capability.phtml:47
777
  msgid "Capability Name"
778
  msgstr ""
779
 
780
+ #: Application/Backend/view/object/capability.phtml:48
781
  msgid "Enter Capability"
782
  msgstr ""
783
 
784
+ #: Application/Backend/view/object/menu.phtml:6
785
+ #: Application/Backend/view/object/metabox.phtml:6
786
+ #: Application/Backend/view/object/post.phtml:18
787
+ msgid "Settings may not be inherited"
 
 
788
  msgstr ""
789
 
790
+ #: Application/Backend/view/object/menu.phtml:7
791
+ #: Application/Backend/view/object/metabox.phtml:7
792
+ #: Application/Backend/view/object/post.phtml:19
793
+ msgid "Reset"
794
+ msgstr ""
795
+
796
+ #: Application/Backend/view/object/metabox.phtml:13
797
  msgid "Refresh"
798
  msgstr ""
799
 
800
+ #: Application/Backend/view/object/metabox.phtml:29
801
  msgid "Dashboard Widgets"
802
  msgstr ""
803
 
804
+ #: Application/Backend/view/object/metabox.phtml:33
805
  msgid "Frontend Widgets"
806
  msgstr ""
807
 
808
+ #: Application/Backend/view/object/metabox.phtml:63
809
  msgid ""
810
  "The list of metaboxes and widgets is not initialized. Click Refresh button "
811
  "above."
812
  msgstr ""
813
 
814
+ #: Application/Backend/view/object/post.phtml:14
815
  msgid "Root"
816
  msgstr ""
817
 
818
+ #: Application/Backend/view/object/post.phtml:19
819
+ #: Application/Backend/view/object/post.phtml:24
820
+ msgid "Help"
821
+ msgstr ""
822
+
823
  #: Application/Backend/view/object/post.phtml:23
824
+ msgid "Settings inherited from"
825
  msgstr ""
826
 
827
+ #: Application/Backend/view/object/post.phtml:34
828
+ msgid "Title"
829
  msgstr ""
830
 
831
+ #: Application/Backend/view/object/post.phtml:43
832
+ #: Application/Backend/view/object/post.phtml:48
833
+ #: Application/Backend/view/object/post.phtml:152
834
  msgid "Go Back"
835
  msgstr ""
836
 
837
+ #: Application/Backend/view/object/post.phtml:56
838
  msgid "Frontend"
839
  msgstr ""
840
 
841
+ #: Application/Backend/view/object/post.phtml:62
842
+ #: Application/Backend/view/object/post.phtml:110
843
  msgid "List"
844
  msgstr ""
845
 
846
+ #: Application/Backend/view/object/post.phtml:64
847
  msgid "Filter (exclude) post from any list on your website frontend."
848
  msgstr ""
849
 
850
+ #: Application/Backend/view/object/post.phtml:65
851
+ #: Application/Backend/view/object/post.phtml:113
852
  msgid "Warning!"
853
  msgstr ""
854
 
855
+ #: Application/Backend/view/object/post.phtml:66
856
  msgid ""
857
  "If checked, this property may slowdown your website with large amount of "
858
  "posts."
859
  msgstr ""
860
 
861
+ #: Application/Backend/view/object/post.phtml:77
862
  msgid "Read"
863
  msgstr ""
864
 
865
+ #: Application/Backend/view/object/post.phtml:79
866
  msgid ""
867
  "Restrict access to read a post. If \"List\" option is not checked, a post "
868
  "will be still listed on your website frontend."
869
  msgstr ""
870
 
871
+ #: Application/Backend/view/object/post.phtml:90
872
  msgid "Comment"
873
  msgstr ""
874
 
875
+ #: Application/Backend/view/object/post.phtml:92
876
  msgid ""
877
  "Restrict access to comment on a post (if commenting feature is activated)."
878
  msgstr ""
879
 
880
+ #: Application/Backend/view/object/post.phtml:112
 
 
 
 
881
  msgid "Filter (exclude) post from any list on your website backend."
882
  msgstr ""
883
 
884
+ #: Application/Backend/view/object/post.phtml:114
885
  msgid ""
886
  "If checked, this property may slowdown your backend with large amount of "
887
  "posts."
888
  msgstr ""
889
 
890
+ #: Application/Backend/view/object/post.phtml:127
 
 
 
 
891
  msgid ""
892
  "Restrict access to edit a post (also the link \"Edit\" and \"Quick Edit\" "
893
  "will be removed below the post title)."
894
  msgstr ""
895
 
896
+ #: Application/Backend/view/object/post.phtml:138
897
  msgid "Delete"
898
  msgstr ""
899
 
900
+ #: Application/Backend/view/object/post.phtml:140
901
  msgid ""
902
  "Restrict access to trash or permanently delete a post (also the link \"Trash"
903
  "\" or \"Delete Permanently\" will be removed for a post)."
904
  msgstr ""
905
+
906
+ #: Application/Backend/view/object/post.phtml:161
907
+ msgid "Inheritance"
908
+ msgstr ""
909
+
910
+ #: Application/Backend/view/object/post.phtml:164
911
+ msgid ""
912
+ "If no access settings defined for post* or category* AAM triggers the "
913
+ "inheritance mechanism in order listed below. The inheritance process "
914
+ "terminates when the first defined set of settings is found."
915
+ msgstr ""
916
+
917
+ #: Application/Backend/view/object/post.phtml:166
918
+ msgid "If caching is on, read the cached settings"
919
+ msgstr ""
920
+
921
+ #: Application/Backend/view/object/post.phtml:167
922
+ msgid "Read post's or category's settings"
923
+ msgstr ""
924
+
925
+ #: Application/Backend/view/object/post.phtml:168
926
+ msgid ""
927
+ "If AAM Plus Package installed, iterate through the tree of parent categories "
928
+ "and read settings"
929
+ msgstr ""
930
+
931
+ #: Application/Backend/view/object/post.phtml:169
932
+ msgid ""
933
+ "If AAM Plus Package installed, read the default access settings for posts or "
934
+ "categories"
935
+ msgstr ""
936
+
937
+ #: Application/Backend/view/object/post.phtml:170
938
+ msgid ""
939
+ "If user, read settings from the parent role and repeat the same sequence of "
940
+ "steps"
941
+ msgstr ""
942
+
943
+ #: Application/Backend/view/object/post.phtml:190
944
+ msgid "Reset Information"
945
+ msgstr ""
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.0
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: http://www.vasyltech.com
9
 
@@ -97,7 +97,11 @@ class AAM {
97
  * @access public
98
  */
99
  public static function isAAM() {
100
- return (AAM_Core_Request::get('page') == 'aam');
 
 
 
 
101
  }
102
 
103
  /**
@@ -110,7 +114,9 @@ class AAM {
110
  */
111
  public static function getInstance() {
112
  if (is_null(self::$_instance)) {
113
- load_plugin_textdomain(AAM_KEY, false, dirname(__FILE__) . '/Lang');
 
 
114
  self::$_instance = new self;
115
  }
116
 
@@ -129,8 +135,8 @@ class AAM {
129
  public static function cron() {
130
  //grab the server extension list
131
  $response = AAM_Core_Server::check();
132
- if (!is_wp_error($response)) {
133
- AAM_Core_API::updateOption('aam-extension-list', $response);
134
  }
135
  }
136
 
@@ -142,7 +148,7 @@ class AAM {
142
  * @access public
143
  */
144
  public static function activate() {
145
- global $wp_filesystem, $wp_version;
146
 
147
  //check PHP Version
148
  if (version_compare(PHP_VERSION, '5.2') == -1) {
@@ -152,13 +158,10 @@ class AAM {
152
  }
153
 
154
  //create an wp-content/aam folder if does not exist
155
- WP_Filesystem(); //initialize the WordPress filesystem
156
-
157
- $wp_content = $wp_filesystem->wp_content_dir();
158
-
159
- //make sure that we have always content dir
160
- if ($wp_filesystem->exists($wp_content . '/aam') === false) {
161
- $wp_filesystem->mkdir($wp_content . '/aam');
162
  }
163
  }
164
 
@@ -172,17 +175,17 @@ class AAM {
172
  * @access public
173
  */
174
  public static function uninstall() {
175
- global $wp_filesystem;
176
-
177
  //trigger any uninstall hook that is registered by any extension
178
  do_action('aam-uninstall-action');
179
 
180
- WP_Filesystem(); //initialize the WordPress filesystem
181
-
182
- $wp_content = $wp_filesystem->wp_content_dir();
183
-
184
- //remove the content directory
185
- $wp_filesystem->rmdir($wp_content . '/aam', true);
 
 
186
  }
187
 
188
  }
@@ -191,6 +194,7 @@ if (defined('ABSPATH')) {
191
  //define few common constants
192
  define('AAM_MEDIA', plugins_url('/media', __FILE__));
193
  define('AAM_KEY', 'advanced-access-manager');
 
194
 
195
  //register autoloader
196
  require (dirname(__FILE__) . '/autoloader.php');
3
  /**
4
  Plugin Name: Advanced Access Manager
5
  Description: Manage User and Role Access to WordPress Backend and Frontend.
6
+ Version: 3.1
7
  Author: Vasyl Martyniuk <vasyl@vasyltech.com>
8
  Author URI: http://www.vasyltech.com
9
 
97
  * @access public
98
  */
99
  public static function isAAM() {
100
+ $page = AAM_Core_Request::get('page');
101
+ $action = AAM_Core_Request::post('action');
102
+ $intersect = array_intersect(array('aam', 'aamc'), array($page, $action));
103
+
104
+ return (is_admin() && count($intersect));
105
  }
106
 
107
  /**
114
  */
115
  public static function getInstance() {
116
  if (is_null(self::$_instance)) {
117
+ load_plugin_textdomain(
118
+ AAM_KEY, false, dirname(plugin_basename(__FILE__)) . '/Lang/'
119
+ );
120
  self::$_instance = new self;
121
  }
122
 
135
  public static function cron() {
136
  //grab the server extension list
137
  $response = AAM_Core_Server::check();
138
+ if (!empty($response)) {
139
+ AAM_Core_API::updateOption('aam-extension-repository', $response);
140
  }
141
  }
142
 
148
  * @access public
149
  */
150
  public static function activate() {
151
+ global $wp_version;
152
 
153
  //check PHP Version
154
  if (version_compare(PHP_VERSION, '5.2') == -1) {
158
  }
159
 
160
  //create an wp-content/aam folder if does not exist
161
+ $dirname = WP_CONTENT_DIR . '/aam';
162
+
163
+ if (file_exists($dirname) === false) {
164
+ @mkdir($dirname, fileperms( ABSPATH ) & 0777 | 0755);
 
 
 
165
  }
166
  }
167
 
175
  * @access public
176
  */
177
  public static function uninstall() {
 
 
178
  //trigger any uninstall hook that is registered by any extension
179
  do_action('aam-uninstall-action');
180
 
181
+ //remove aam directory if exists
182
+ $dirname = WP_CONTENT_DIR . '/aam';
183
+ if (file_exists($dirname)) {
184
+ AAM_Core_API::removeDirectory($dirname);
185
+ }
186
+
187
+ //clear schedules
188
+ wp_clear_scheduled_hook('aam-cron');
189
  }
190
 
191
  }
194
  //define few common constants
195
  define('AAM_MEDIA', plugins_url('/media', __FILE__));
196
  define('AAM_KEY', 'advanced-access-manager');
197
+ define('AAM_BASE', dirname(__FILE__));
198
 
199
  //register autoloader
200
  require (dirname(__FILE__) . '/autoloader.php');
media/css/aam.css CHANGED
@@ -88,6 +88,9 @@
88
  .icon-download-cloud:before { content: '\e818'; } /* '' */
89
  .icon-github:before { content: '\e819'; } /* '' */
90
  .icon-twitter:before { content: '\e81a'; } /* '' */
 
 
 
91
 
92
  .animate-spin {
93
  -moz-animation: spin 2s infinite linear;
@@ -201,6 +204,10 @@ html, body {
201
  cursor: auto;
202
  }
203
 
 
 
 
 
204
  /** BOOTSTRAP **/
205
  .row {
206
  position: relative;
@@ -361,6 +368,11 @@ table.table-bordered.dataTable tbody th, table.table-bordered.dataTable tbody td
361
  }
362
 
363
  /** AAM **/
 
 
 
 
 
364
  input[type=checkbox] { /* to hide the checkbox itself */
365
  display:none;
366
  }
@@ -395,6 +407,14 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
395
  margin-right: 0;
396
  }
397
 
 
 
 
 
 
 
 
 
398
  .aam-lock {
399
  position: absolute;
400
  top: 0;
@@ -434,6 +454,42 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
434
  border: 1px solid #E5E5E5;
435
  }
436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  .row.aam-bordered {
438
  margin-left: 0;
439
  margin-right: 0;
@@ -483,18 +539,28 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
483
  }
484
 
485
  .aam-sticky-note {
486
- position: absolute;
487
- top: 10px;
488
- right: 0px;
489
- border: 1px solid #e5e5e5;
490
  -webkit-box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
491
  -moz-box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
492
  box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
493
- font-size: 1.6em;
494
  font-weight: 500;
495
  padding: 15px;
 
496
  z-index: 999;
497
- background-color: #FFFFFF;
 
 
 
 
 
 
 
 
 
498
  }
499
 
500
  .aam-submenu-item label {
@@ -536,9 +602,25 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
536
  padding: 10px;
537
  }
538
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
539
  .aam-help-menu {
540
  float: right;
541
- font-size: 1.2em;
542
  color: #337ab7;
543
  cursor: pointer;
544
  }
@@ -605,14 +687,23 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
605
  margin-bottom: 20px;
606
  }
607
 
 
 
 
 
 
 
 
608
  .aam-notification {
609
  border-left: 6px solid #F04748;
610
  background-color: #F5F5F5;
611
  padding: 10px;
612
  position: relative;
613
- border-radius: 4px;
614
- -moz-border-radius: 4px;
615
- -webkit-border-radius: 4px;
 
 
616
  }
617
 
618
  .aam-notification-icon {
@@ -658,53 +749,6 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
658
  text-align: justify;
659
  }
660
 
661
- .aam-welcome-message {
662
- background-color: #f1f1f1;
663
- color: #333333;
664
- position: absolute;
665
- top: 20px;
666
- right: 20px;
667
- width: 0;
668
- opacity: 0;
669
- padding: 10px 30px 15px 30px;
670
- z-index: 10000;
671
- visibility: hidden;
672
- -webkit-transition: all .5s ease-in-out;
673
- -moz-transition: all .5s ease-in-out;
674
- -o-transition: all .5s ease-in-out;
675
- transition: all .5s ease-in-out;
676
- -webkit-transition-delay: 1s;
677
- -moz-transition-delay: 1s;
678
- -o-transition-delay: 1s;
679
- transition-delay: 1s;
680
- }
681
-
682
- .aam-welcome-message.active {
683
- width: calc(100% - 15px);
684
- width: -moz-calc(100% - 15px);
685
- height: auto;
686
- opacity: 1;
687
- visibility: visible;
688
- }
689
-
690
- .aam-welcome-message h1 {
691
- font-size: 2.2em;
692
- }
693
-
694
- .aam-welcome-message ul {
695
- list-style: disc;
696
- margin-left: 30px;
697
- font-size: 1.2em;
698
- }
699
-
700
- .aam-welcome-message .aam-notification-container ul {
701
- list-style: none;
702
- }
703
-
704
- .aam-welcome-message p {
705
- font-size: 1.2em;
706
- }
707
-
708
  .dataTables_processing {
709
  border: 1px solid #cccccc;
710
  color: #337ab7;
@@ -728,4 +772,9 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
728
 
729
  .aam-current-subject strong {
730
  text-transform: capitalize;
 
 
 
 
 
731
  }
88
  .icon-download-cloud:before { content: '\e818'; } /* '' */
89
  .icon-github:before { content: '\e819'; } /* '' */
90
  .icon-twitter:before { content: '\e81a'; } /* '' */
91
+ .icon-sort-down:before { content: '\e81b'; } /* '' */
92
+ .icon-sort-up:before { content: '\e81c'; } /* '' */
93
+ .icon-sort:before { content: '\e81d'; } /* '' */
94
 
95
  .animate-spin {
96
  -moz-animation: spin 2s infinite linear;
204
  cursor: auto;
205
  }
206
 
207
+ .hndle a {
208
+ font-size: 1em;
209
+ }
210
+
211
  /** BOOTSTRAP **/
212
  .row {
213
  position: relative;
368
  }
369
 
370
  /** AAM **/
371
+ #capability-groups {
372
+ right: 0;
373
+ left: auto;
374
+ }
375
+
376
  input[type=checkbox] { /* to hide the checkbox itself */
377
  display:none;
378
  }
407
  margin-right: 0;
408
  }
409
 
410
+ .aam-outer-top-xs {
411
+ margin-top: 30px;
412
+ }
413
+
414
+ .aam-block {
415
+ display: block;
416
+ }
417
+
418
  .aam-lock {
419
  position: absolute;
420
  top: 0;
454
  border: 1px solid #E5E5E5;
455
  }
456
 
457
+ .aam-inherited {
458
+ padding: 5px 15px;
459
+ background-color: #337ab7;
460
+ color: #FFFFFF;
461
+ font-weight: 700;
462
+ margin-bottom: 15px;
463
+ letter-spacing: 1px;
464
+ }
465
+
466
+ .aam-overwrite {
467
+ padding: 5px 15px;
468
+ background-color: #f0ad4e;
469
+ color: #FFFFFF;
470
+ font-weight: 700;
471
+ margin-bottom: 15px;
472
+ letter-spacing: 1px;
473
+ }
474
+
475
+ .aam-overwrite a, .aam-inherited a{
476
+ color: #FFFFFF;
477
+ }
478
+
479
+ .aam-overwrite:after, .aam-inherited:after {
480
+ display: inline-block;
481
+ content: '';
482
+ clear: both;
483
+ }
484
+
485
+ .aam-overwrite span:first-child, .aam-inherited span:first-child {
486
+ float: left;
487
+ }
488
+
489
+ .aam-overwrite span:last-child, .aam-inherited span:last-child {
490
+ float: right;
491
+ }
492
+
493
  .row.aam-bordered {
494
  margin-left: 0;
495
  margin-right: 0;
539
  }
540
 
541
  .aam-sticky-note {
542
+ position: fixed;
543
+ top: 32px;
544
+ left: 160px;
545
+ width: calc(100% - 160px);
546
  -webkit-box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
547
  -moz-box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
548
  box-shadow: 0px 0px 12px 2px rgba(100,100,100,1);
549
+ font-size: 1.5em;
550
  font-weight: 500;
551
  padding: 15px;
552
+ text-align: center;
553
  z-index: 999;
554
+ color: #FFFFFF;
555
+ letter-spacing: 1px;
556
+ }
557
+
558
+ .aam-sticky-note.danger {
559
+ background-color: #a94442;
560
+ }
561
+
562
+ .aam-sticky-note.success {
563
+ background-color: #5cb85c;
564
  }
565
 
566
  .aam-submenu-item label {
602
  padding: 10px;
603
  }
604
 
605
+ .aam-extension-installed {
606
+ border: 1px solid transparent;
607
+ display: inline-block;
608
+ font-size: 14px;
609
+ font-weight: 400;
610
+ line-height: 1.42857;
611
+ margin-bottom: 0;
612
+ padding: 6px 12px;
613
+ text-align: center;
614
+ vertical-align: middle;
615
+ white-space: nowrap;
616
+ background-color: #666666;
617
+ color: #FFFFFF;
618
+ width: 100%;
619
+ }
620
+
621
  .aam-help-menu {
622
  float: right;
623
+ font-size: 1em;
624
  color: #337ab7;
625
  cursor: pointer;
626
  }
687
  margin-bottom: 20px;
688
  }
689
 
690
+ .aam-info-modal, .aam-info-modal p, .aam-info-modal ul {
691
+ font-size: 1.1em;
692
+ -moz-hyphens: auto;
693
+ word-wrap: break-word;
694
+ text-align: justify;
695
+ }
696
+
697
  .aam-notification {
698
  border-left: 6px solid #F04748;
699
  background-color: #F5F5F5;
700
  padding: 10px;
701
  position: relative;
702
+ }
703
+
704
+ .aam-numeric-list {
705
+ list-style: decimal;
706
+ padding-left: 15px;
707
  }
708
 
709
  .aam-notification-icon {
749
  text-align: justify;
750
  }
751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  .dataTables_processing {
753
  border: 1px solid #cccccc;
754
  color: #337ab7;
772
 
773
  .aam-current-subject strong {
774
  text-transform: capitalize;
775
+ }
776
+
777
+ .table h4 {
778
+ margin-top: 5px;
779
+ margin-bottom: 5px;
780
  }
media/css/datatables.min.css CHANGED
@@ -80,14 +80,17 @@ table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,ta
80
  right: 8px;
81
  }
82
  table.dataTable thead .sorting:after {
83
- content: "\e150";
 
84
  opacity: 0.2;
85
  }
86
  table.dataTable thead .sorting_asc:after {
87
- content: "\e155";
 
88
  }
89
  table.dataTable thead .sorting_desc:after {
90
- content: "\e156";
 
91
  }
92
  table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after {
93
  color: #eee;
@@ -233,4 +236,8 @@ table.dataTable>tbody>tr.child span.dtr-title {
233
  display: inline-block;
234
  font-weight: bold;
235
  min-width: 75px;
 
 
 
 
236
  }
80
  right: 8px;
81
  }
82
  table.dataTable thead .sorting:after {
83
+ font-family: "fontello";
84
+ content: "\e81d";
85
  opacity: 0.2;
86
  }
87
  table.dataTable thead .sorting_asc:after {
88
+ font-family: "fontello";
89
+ content: "\e81b";
90
  }
91
  table.dataTable thead .sorting_desc:after {
92
+ font-family: "fontello";
93
+ content: "\e81c";
94
  }
95
  table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after {
96
  color: #eee;
236
  display: inline-block;
237
  font-weight: bold;
238
  min-width: 75px;
239
+ }
240
+
241
+ .table small {
242
+ color: #777777;
243
  }
media/font/fontello.eot CHANGED
Binary file
media/font/fontello.svg CHANGED
@@ -33,6 +33,9 @@
33
  <glyph glyph-name="download-cloud" unicode="&#xe818;" d="m714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
34
  <glyph glyph-name="github" unicode="&#xe819;" d="m357 171q0-22-7-45t-24-43-40-19-41 19-24 43-7 45 7 46 24 43 41 19 40-19 24-43 7-46z m357 0q0-22-7-45t-24-43-40-19-41 19-24 43-7 45 7 46 24 43 41 19 40-19 24-43 7-46z m90 0q0 67-39 114t-104 47q-23 0-109-12-40-6-88-6t-87 6q-85 12-109 12-66 0-104-47t-39-114q0-49 18-85t45-58 68-33 78-17 83-4h94q46 0 83 4t78 17 69 33 45 58 18 85z m125 99q0-116-34-185-22-43-59-74t-79-48-95-27-96-12-93-3q-43 0-79 2t-82 7-85 17-77 28-67 46-48 64q-35 69-35 185 0 132 76 221-15 45-15 94 0 65 28 122 61 0 106-22t106-69q82 20 172 20 83 0 156-18 59 46 105 67t105 22q29-57 29-122 0-48-15-93 76-90 76-222z" horiz-adv-x="928.6" />
35
  <glyph glyph-name="twitter" unicode="&#xe81a;" d="m904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-3 43-3 126 0 224 77-59 2-105 36t-64 89q19-2 34-2 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 114 44-20-64-79-100 52 6 104 28z" horiz-adv-x="928.6" />
 
 
 
36
  </font>
37
  </defs>
38
  </svg>
33
  <glyph glyph-name="download-cloud" unicode="&#xe818;" d="m714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
34
  <glyph glyph-name="github" unicode="&#xe819;" d="m357 171q0-22-7-45t-24-43-40-19-41 19-24 43-7 45 7 46 24 43 41 19 40-19 24-43 7-46z m357 0q0-22-7-45t-24-43-40-19-41 19-24 43-7 45 7 46 24 43 41 19 40-19 24-43 7-46z m90 0q0 67-39 114t-104 47q-23 0-109-12-40-6-88-6t-87 6q-85 12-109 12-66 0-104-47t-39-114q0-49 18-85t45-58 68-33 78-17 83-4h94q46 0 83 4t78 17 69 33 45 58 18 85z m125 99q0-116-34-185-22-43-59-74t-79-48-95-27-96-12-93-3q-43 0-79 2t-82 7-85 17-77 28-67 46-48 64q-35 69-35 185 0 132 76 221-15 45-15 94 0 65 28 122 61 0 106-22t106-69q82 20 172 20 83 0 156-18 59 46 105 67t105 22q29-57 29-122 0-48-15-93 76-90 76-222z" horiz-adv-x="928.6" />
35
  <glyph glyph-name="twitter" unicode="&#xe81a;" d="m904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-3 43-3 126 0 224 77-59 2-105 36t-64 89q19-2 34-2 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 114 44-20-64-79-100 52 6 104 28z" horiz-adv-x="928.6" />
36
+ <glyph glyph-name="sort-down" unicode="&#xe81b;" d="m571 243q0-15-10-25l-250-250q-11-11-25-11t-25 11l-250 250q-11 10-11 25t11 25 25 11h500q14 0 25-11t10-25z" horiz-adv-x="571.4" />
37
+ <glyph glyph-name="sort-up" unicode="&#xe81c;" d="m571 457q0-14-10-25t-25-11h-500q-15 0-25 11t-11 25 11 25l250 250q10 11 25 11t25-11l250-250q10-10 10-25z" horiz-adv-x="571.4" />
38
+ <glyph glyph-name="sort" unicode="&#xe81d;" d="m571 243q0-15-10-25l-250-250q-11-11-25-11t-25 11l-250 250q-11 10-11 25t11 25 25 11h500q14 0 25-11t10-25z m0 214q0-14-10-25t-25-11h-500q-15 0-25 11t-11 25 11 25l250 250q10 11 25 11t25-11l250-250q10-10 10-25z" horiz-adv-x="571.4" />
39
  </font>
40
  </defs>
41
  </svg>
media/font/fontello.ttf CHANGED
Binary file
media/font/fontello.woff CHANGED
Binary file
media/js/aam-hook.js CHANGED
@@ -13,4 +13,4 @@ AAM_PageError = false;
13
  callback.call(null, msg, url, line, col, error);
14
  }
15
  };
16
- })();
13
  callback.call(null, msg, url, line, col, error);
14
  }
15
  };
16
+ })();
media/js/aam-ui.js CHANGED
@@ -13,7 +13,7 @@
13
  * @returns {void}
14
  */
15
  (function ($) {
16
-
17
  /**
18
  *
19
  * @param {type} id
@@ -21,7 +21,7 @@
21
  */
22
  function isCurrent(id) {
23
  var subject = aam.getSubject();
24
-
25
  return (subject.type === 'role' && subject.id === id);
26
  }
27
 
@@ -45,7 +45,7 @@
45
  },
46
  success: function (response) {
47
  $('#inherit-role-list').html(
48
- '<option value="">' + aam.__('Select Role') + '</option>'
49
  );
50
  for (var i in response) {
51
  $('#inherit-role-list').append(
@@ -59,7 +59,7 @@
59
  //initialize the role list table
60
  $('#role-list').DataTable({
61
  autoWidth: false,
62
- ordering: false,
63
  dom: 'ftrip',
64
  pagingType: 'simple',
65
  processing: true,
@@ -74,7 +74,8 @@
74
  }
75
  },
76
  columnDefs: [
77
- {visible: false, targets: [0, 1]}
 
78
  ],
79
  language: {
80
  search: '_INPUT_',
@@ -84,12 +85,12 @@
84
  },
85
  initComplete: function () {
86
  var create = $('<a/>', {
87
- 'href' : '#',
88
- 'class' : 'btn btn-primary'
89
  }).html('<i class="icon-plus"></i> ' + aam.__('Create'))
90
- .bind('click', function (event) {
91
  event.preventDefault();
92
-
93
  //clear add role form first
94
  $('#new-role-name', '#add-role-modal').val('');
95
  fetchRoleList();
@@ -107,14 +108,14 @@
107
  } else {
108
  $('td:eq(0)', row).html('<span>' + data[2] + '</span>');
109
  }
110
-
111
  //add subtitle
112
  $('td:eq(0)', row).append(
113
  $('<i/>', {'class': 'aam-row-subtitle'}).text(
114
  aam.__('Users') + ': ' + parseInt(data[1])
115
  )
116
  );
117
-
118
  var actions = data[3].split(',');
119
 
120
  var container = $('<div/>', {'class': 'aam-row-actions'});
@@ -123,20 +124,23 @@
123
  case 'manage':
124
  $(container).append($('<i/>', {
125
  'class': 'aam-row-action icon-cog text-info'
126
- }).bind('click', function() {
127
  aam.setSubject('role', data[0], data[2]);
128
  $('td:eq(0) span', row).replaceWith(
129
  '<strong>' + data[2] + '</strong>'
130
- );
131
  $('i.icon-cog', container).attr(
132
- 'class', 'aam-row-action icon-spin4 animate-spin'
133
- );
134
  aam.fetchContent();
135
  $('i.icon-spin4', container).attr(
136
- 'class', 'aam-row-action icon-cog text-info'
137
- );
138
  //Show add capability that may be hidden after manager user
139
  $('#add-capability').show();
 
 
 
140
  }));
141
  break;
142
 
@@ -149,6 +153,9 @@
149
  $('#edit-role-modal').modal('show').on('shown.bs.modal', function () {
150
  $('#edit-role-name').focus();
151
  });
 
 
 
152
  }));
153
  break;
154
 
@@ -159,13 +166,16 @@
159
  $('#delete-role-btn').data('role', data[0]);
160
  var message = $('#delete-role-modal .aam-confirm-message').data('message');
161
  $('#delete-role-modal .aam-confirm-message').html(
162
- message.replace(
163
- '%s',
164
- '<strong>' + event.data.role[2] + '</strong>'
165
- )
166
- );
167
 
168
  $('#delete-role-modal').modal('show');
 
 
 
169
  }));
170
  break;
171
 
@@ -217,7 +227,7 @@
217
  } else {
218
  aam.notification(
219
  'danger', aam.__('Failed to add new role')
220
- );
221
  }
222
  },
223
  error: function () {
@@ -259,7 +269,7 @@
259
  $('#role-list').DataTable().ajax.reload();
260
  } else {
261
  aam.notification(
262
- 'danger', aam.__('Failed to update role')
263
  );
264
  }
265
  },
@@ -275,7 +285,7 @@
275
  $('#edit-role-name').focus().parent().addClass('has-error');
276
  }
277
  });
278
-
279
  //edit role button
280
  $('#delete-role-btn').bind('click', function (event) {
281
  var _this = this;
@@ -301,7 +311,7 @@
301
  }
302
  },
303
  error: function () {
304
- aam.notification('danger', aam.__('Application error'));
305
  },
306
  complete: function () {
307
  $('#delete-role-modal').modal('hide');
@@ -309,7 +319,7 @@
309
  }
310
  });
311
  });
312
-
313
  //add setSubject hook
314
  aam.addHook('setSubject', function () {
315
  //clear highlight
@@ -322,7 +332,7 @@
322
  //show post & pages access control groups that belong to backend
323
  $('.aam-backend-post-access').show();
324
  });
325
-
326
  //in case interface needed to be reloaded
327
  aam.addHook('refresh', function () {
328
  $('#role-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
@@ -339,7 +349,7 @@
339
  * @returns {void}
340
  */
341
  (function ($) {
342
-
343
  /**
344
  *
345
  * @param {type} id
@@ -347,10 +357,10 @@
347
  */
348
  function isCurrent(id) {
349
  var subject = aam.getSubject();
350
-
351
  return (subject.type === 'user' && parseInt(subject.id) === id);
352
  }
353
-
354
  /**
355
  *
356
  * @param {type} id
@@ -359,7 +369,7 @@
359
  */
360
  function blockUser(id, btn) {
361
  var state = ($(btn).hasClass('icon-lock') ? 0 : 1);
362
-
363
  $.ajax(aamLocal.ajaxurl, {
364
  type: 'POST',
365
  dataType: 'json',
@@ -376,20 +386,22 @@
376
  success: function (response) {
377
  if (response.status === 'success') {
378
  if (state === 1) {
379
- $(btn).attr(
380
- 'class',
381
- 'aam-row-action icon-lock text-danger'
382
- );
 
383
  } else {
384
- $(btn).attr(
385
- 'class',
386
- 'aam-row-action icon-lock-open-alt text-warning'
387
- );
 
388
  }
389
  } else {
390
  aam.notification(
391
- 'danger', aam.__('Failed to block user')
392
- );
393
  }
394
  },
395
  error: function () {
@@ -397,7 +409,7 @@
397
  }
398
  });
399
  }
400
-
401
  //initialize the user list table
402
  $('#user-list').DataTable({
403
  autoWidth: false,
@@ -425,9 +437,9 @@
425
  infoFiltered: ''
426
  },
427
  initComplete: function () {
428
- var create = $('<a/>', {
429
- 'href' : '#',
430
- 'class' : 'btn btn-primary'
431
  }).html('<i class="icon-plus"></i> ' + aam.__('Create')).bind('click', function (event) {
432
  event.preventDefault();
433
  window.open(aamLocal.url.addUser, '_blank');
@@ -441,14 +453,14 @@
441
  } else {
442
  $('td:eq(0)', row).html('<span>' + data[2] + '</span>');
443
  }
444
-
445
  //add subtitle
446
  $('td:eq(0)', row).append(
447
- $('<i/>', {'class': 'aam-row-subtitle'}).text(
448
  aam.__('Role') + ': ' + data[1]
449
- )
450
- );
451
-
452
  var actions = data[3].split(',');
453
 
454
  var container = $('<div/>', {'class': 'aam-row-actions'});
@@ -457,19 +469,22 @@
457
  case 'manage':
458
  $(container).append($('<i/>', {
459
  'class': 'aam-row-action icon-cog text-info'
460
- }).bind('click', function() {
461
  aam.setSubject('user', data[0], data[2]);
462
  $('td:eq(0) span', row).replaceWith(
463
  '<strong>' + data[2] + '</strong>'
464
- );
465
  $('i.icon-cog', container).attr('class', 'aam-row-action icon-spin4 animate-spin');
466
  aam.fetchContent();
467
  $('i.icon-spin4', container).attr('class', 'aam-row-action icon-cog text-info');
468
  //make sure that there is no way user add's new capability
469
  $('#add-capability').hide();
 
 
 
470
  }));
471
  break;
472
-
473
  case 'no-manage':
474
  $(container).append($('<i/>', {
475
  'class': 'aam-row-action icon-cog text-muted'
@@ -483,11 +498,14 @@
483
  'class': 'aam-row-action icon-pencil text-warning'
484
  }).bind('click', function () {
485
  window.open(
486
- aamLocal.url.editUser + '?user_id=' + data[0], '_blank'
487
- );
 
 
 
488
  }));
489
  break;
490
-
491
  case 'no-edit':
492
  $(container).append($('<i/>', {
493
  'class': 'aam-row-action icon-pencil text-muted'
@@ -501,19 +519,25 @@
501
  'class': 'aam-row-action icon-lock-open-alt text-warning'
502
  }).bind('click', function () {
503
  blockUser(data[0], $(this));
 
 
 
504
  }));
505
  break;
506
-
507
  case 'unlock':
508
  $(container).append($('<i/>', {
509
  'class': 'aam-row-action icon-lock text-danger'
510
  }).bind('click', function () {
511
  blockUser(data[0], $(this));
 
 
 
512
  }));
513
  break;
514
-
515
- case 'no-lock':
516
- case 'no-unlock':
517
  $(container).append($('<i/>', {
518
  'class': 'aam-row-action icon-lock text-muted'
519
  }).bind('click', function () {
@@ -521,14 +545,33 @@
521
  }));
522
  break;
523
 
 
 
 
 
 
 
 
 
524
  default:
 
 
 
 
 
 
 
 
 
 
 
525
  break;
526
  }
527
  });
528
  $('td:eq(1)', row).html(container);
529
  }
530
  });
531
-
532
  //add setSubject hook
533
  aam.addHook('setSubject', function () {
534
  //clear highlight
@@ -541,12 +584,12 @@
541
  //show post & pages access control groups that belong to backend
542
  $('.aam-backend-post-access').show();
543
  });
544
-
545
  //in case interface needed to be reloaded
546
  aam.addHook('refresh', function () {
547
  $('#user-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
548
  });
549
-
550
  })(jQuery);
551
 
552
 
@@ -597,29 +640,29 @@
597
  function initialize() {
598
  $('.aam-restrict-menu').each(function () {
599
  $(this).bind('click', function () {
600
- var status = ($('i', $(this)).hasClass('icon-eye-off') ? 1 : 0);
601
  var target = $(this).data('target');
602
 
603
  $('i', $(this)).attr('class', 'icon-spin4 animate-spin');
604
 
605
  var result = aam.save($(this).data('menu-id'), status, 'menu');
606
-
607
  if (result.status === 'success') {
608
- if (status === 1) { //locked the menu
609
  $('input', target).each(function () {
610
  $(this).attr('checked', true);
611
  aam.save($(this).data('menu-id'), status, 'menu');
612
  });
613
  $('.aam-bordered', target).append(
614
  $('<div/>', {'class': 'aam-lock'})
615
- );
616
  $(this).removeClass('btn-danger').addClass('btn-primary');
617
  $(this).html(
618
- '<i class="icon-eye"></i>' + aam.__('Show Menu')
619
- );
620
  //add menu restricted indicator
621
  var ind = $('<i/>', {
622
- 'class' : 'aam-panel-title-icon icon-eye-off text-danger'
623
  });
624
  $('.panel-title', target + '-heading').append(ind);
625
  } else {
@@ -630,12 +673,12 @@
630
  $('.aam-lock', target).remove();
631
  $(this).removeClass('btn-primary').addClass('btn-danger');
632
  $(this).html(
633
- '<i class="icon-eye-off"></i>' + aam.__('Hide Menu')
634
- );
635
  $('.panel-title .icon-eye-off', target + '-heading').remove();
636
  }
637
  } else {
638
- $(this).attr('checked', (status ? false : true));
639
  }
640
  });
641
  });
@@ -643,10 +686,34 @@
643
  $('input[type="checkbox"]', '#admin-menu').each(function () {
644
  $(this).bind('click', function () {
645
  aam.save(
646
- $(this).data('menu-id'), !$(this).attr('checked'), 'menu'
 
 
647
  );
648
  });
649
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
650
  }
651
 
652
  aam.addHook('init', initialize);
@@ -716,8 +783,8 @@
716
  getContent();
717
  } else {
718
  aam.notification(
719
- 'danger', aam.__('Failed to retrieve mataboxes')
720
- );
721
  }
722
  },
723
  error: function () {
@@ -726,21 +793,45 @@
726
  complete: function () {
727
  $('i', '#refresh-metabox-list').attr(
728
  'class', 'icon-arrows-cw'
729
- );
730
  }
731
  });
732
 
733
  });
734
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
735
  $('input[type="checkbox"]', '#metabox-list').each(function () {
736
  $(this).bind('click', function () {
737
  aam.save(
738
- $(this).data('metabox'), !$(this).attr('checked'), 'metabox'
739
- );
 
 
740
  });
741
  });
742
  }
743
-
744
  aam.addHook('init', initialize);
745
 
746
  })(jQuery);
@@ -763,10 +854,10 @@
763
  */
764
  function save(capability, btn) {
765
  var granted = $(btn).hasClass('icon-check-empty') ? 1 : 0;
766
-
767
  //show indicator
768
  $(btn).attr('class', 'aam-row-action icon-spin4 animate-spin');
769
-
770
  if (aam.save(capability, granted, 'capability').status === 'success') {
771
  if (granted) {
772
  $(btn).attr('class', 'aam-row-action text-success icon-check');
@@ -774,7 +865,7 @@
774
  $(btn).attr('class', 'aam-row-action text-muted icon-check-empty');
775
  }
776
  } else {
777
- if (granted) {
778
  aam.notification(
779
  'danger', aam.__('Failed to grand capability - WordPress policy')
780
  );
@@ -817,13 +908,16 @@
817
  lengthMenu: '_MENU_'
818
  },
819
  createdRow: function (row, data) {
 
 
 
 
 
 
820
  var actions = data[3].split(',');
821
 
822
  var container = $('<div/>', {'class': 'aam-row-actions'});
823
  $.each(actions, function (i, action) {
824
- var checkbox = $('<input/>').attr({
825
- 'type': 'checkbox'
826
- });
827
  switch (action) {
828
  case 'unchecked':
829
  $(container).append($('<i/>', {
@@ -842,6 +936,11 @@
842
  break;
843
 
844
  default:
 
 
 
 
 
845
  break;
846
  }
847
  });
@@ -849,11 +948,6 @@
849
  }
850
  });
851
 
852
- //filter capability dropdown
853
- $('#capability-filter').bind('click', function () {
854
- $('.dropdown-menu').dropdown('toggle');
855
- });
856
-
857
  $('a', '#capability-groups').each(function () {
858
  $(this).bind('click', function () {
859
  var table = $('#capability-list').DataTable();
@@ -896,8 +990,8 @@
896
  $('#capability-list').DataTable().ajax.reload();
897
  } else {
898
  aam.notification(
899
- 'danger', aam.__('Failed to add new capability')
900
- );
901
  }
902
  },
903
  error: function () {
@@ -915,12 +1009,12 @@
915
  $('#add-capability-modal').on('shown.bs.modal', function (e) {
916
  $('#new-capability-name').focus();
917
  });
918
-
919
  //show or hide capability user note based on current subject
920
  if (aam.getSubject().type === 'user') {
921
- $('#user-capability-note').removeClass('hidden');
922
  } else {
923
- $('#user-capability-note').addClass('hidden');
924
  }
925
 
926
  }
@@ -983,14 +1077,14 @@
983
  function loadAccessForm(object, id, btn) {
984
  //reset the form first
985
  var container = $('.aam-post-manager[data-type="' + object + '"]');
986
-
987
- $('.aam-row-action', container).each(function() {
988
  $(this).attr({
989
- 'class' : 'aam-row-action text-muted icon-check-empty',
990
- 'data-type' : object,
991
- 'data-id' : id
992
  });
993
-
994
  //initialize each access property
995
  $(this).unbind('click').bind('click', function (event) {
996
  event.preventDefault();
@@ -1016,9 +1110,9 @@
1016
  }
1017
  }
1018
  });
1019
-
1020
  });
1021
-
1022
  $.ajax(aamLocal.ajaxurl, {
1023
  type: 'POST',
1024
  dataType: 'json',
@@ -1033,15 +1127,36 @@
1033
  },
1034
  beforeSend: function () {
1035
  $(btn).attr('class', 'aam-row-action icon-spin4 animate-spin');
 
1036
  },
1037
  success: function (response) {
1038
  //iterate through each property
1039
- for (var property in response) {
1040
- var checked = (response[property] ? 'text-danger icon-check' : 'text-muted icon-check-empty');
1041
 
1042
  $('[data-property="' + property + '"]', container).attr({
1043
- 'class' : 'aam-row-action ' + checked
1044
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1045
  }
1046
 
1047
  $('#post-list_wrapper').addClass('aam-hidden');
@@ -1055,7 +1170,7 @@
1055
  }
1056
  });
1057
  }
1058
-
1059
  /**
1060
  *
1061
  * @param {type} param
@@ -1066,7 +1181,7 @@
1066
  */
1067
  function save(param, value, object, object_id) {
1068
  var result = null;
1069
-
1070
  $.ajax(aamLocal.ajaxurl, {
1071
  type: 'POST',
1072
  dataType: 'json',
@@ -1092,10 +1207,10 @@
1092
  aam.notification('danger', aam.__('Application error'));
1093
  }
1094
  });
1095
-
1096
  return result;
1097
- };
1098
-
1099
  /**
1100
  *
1101
  * @returns {undefined}
@@ -1103,7 +1218,7 @@
1103
  function initialize() {
1104
  //reset filter to default list of post types
1105
  filter.type = null;
1106
-
1107
  //initialize the role list table
1108
  $('#post-list').DataTable({
1109
  autoWidth: false,
@@ -1145,7 +1260,7 @@
1145
  //reset the ajax queue
1146
  queue = new Array();
1147
  },
1148
- createdRow: function (row, data) {
1149
  //object type icon
1150
  switch (data[2]) {
1151
  case 'type':
@@ -1170,7 +1285,7 @@
1170
  //visual feedback - show loading icon
1171
  $('td:eq(0)', row).html(
1172
  '<i class="icon-spin4 animate-spin"></i>'
1173
- );
1174
  //set filter
1175
  filter[data[2]] = data[0];
1176
  //reset the ajax queue
@@ -1183,6 +1298,8 @@
1183
 
1184
  }).html(data[3]);
1185
  $('td:eq(1)', row).html(link);
 
 
1186
  }
1187
 
1188
  //add breadcrumb but only if not a type
@@ -1201,8 +1318,8 @@
1201
  success: function (response) {
1202
  if (response.status === 'success') {
1203
  $('td:eq(1) span', row).html(
1204
- response.breadcrumb
1205
- );
1206
  }
1207
  },
1208
  error: function () {
@@ -1216,10 +1333,10 @@
1216
  });
1217
  });
1218
  $('td:eq(1)', row).append(
1219
- $('<span/>', {'class': 'aam-row-subtitle'}).text(
1220
  aam.__('Loading...')
1221
- )
1222
- );
1223
  }
1224
 
1225
  //update the actions
@@ -1234,6 +1351,9 @@
1234
  }).bind('click', function () {
1235
  loadAccessForm(data[2], data[0], $(this));
1236
  addBreadcrumbLevel('edit', data[2], data[3]);
 
 
 
1237
  }));
1238
  break;
1239
 
@@ -1242,9 +1362,11 @@
1242
  'class': 'aam-row-action text-warning icon-pencil'
1243
  }).bind('click', function () {
1244
  window.open(data[1], '_blank');
 
 
 
1245
  }));
1246
  break;
1247
- break;
1248
 
1249
  default:
1250
  break;
@@ -1266,6 +1388,41 @@
1266
  $(this).nextAll().remove();
1267
  $('.aam-post-manager').removeClass('active');
1268
  $('#post-list_wrapper').removeClass('aam-hidden');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1269
  });
1270
 
1271
  //go back button
@@ -1277,6 +1434,7 @@
1277
  $('.aam-post-manager[data-type="' + type + '"]').removeClass('active');
1278
  $('#post-list_wrapper').removeClass('aam-hidden');
1279
  $('.aam-post-breadcrumb span:last').remove();
 
1280
  });
1281
  }
1282
 
@@ -1376,7 +1534,7 @@
1376
  $('i', $(this)).attr('class', 'icon-arrows-cw');
1377
  });
1378
  });
1379
-
1380
  //download extension
1381
  $('.aam-download-extension').each(function () {
1382
  $(this).bind('click', function (event) {
@@ -1396,11 +1554,11 @@
1396
  //bind the download handler
1397
  $('#download-extension').bind('click', function () {
1398
  download(
1399
- 'data:image/gif;base64,' + dump.content,
1400
  dump.title + '.zip',
1401
  'application/zip'
1402
- );
1403
- $('#extension-notification-modal').hide();
1404
  });
1405
  }
1406
 
@@ -1432,10 +1590,15 @@
1432
  $(this).addClass('active');
1433
  //show feature content
1434
  $('#' + $(this).data('feature') + '-content').addClass('active');
 
1435
  });
1436
  });
1437
-
1438
- $('li:eq(0)', '#feature-list').trigger('click');
 
 
 
 
1439
  }
1440
 
1441
  /**
@@ -1448,7 +1611,7 @@
1448
  dataType: 'html',
1449
  async: false,
1450
  data: {
1451
- action: 'aam-content',
1452
  _ajax_nonce: aamLocal.nonce,
1453
  subject: this.getSubject().type,
1454
  subjectId: this.getSubject().id
@@ -1456,7 +1619,7 @@
1456
  beforeSend: function () {
1457
  var loader = $('<div/>', {'class': 'aam-loading'}).html(
1458
  '<i class="icon-spin4 animate-spin"></i>'
1459
- );
1460
  $('#aam-content').html(loader);
1461
  },
1462
  success: function (response) {
13
  * @returns {void}
14
  */
15
  (function ($) {
16
+
17
  /**
18
  *
19
  * @param {type} id
21
  */
22
  function isCurrent(id) {
23
  var subject = aam.getSubject();
24
+
25
  return (subject.type === 'role' && subject.id === id);
26
  }
27
 
45
  },
46
  success: function (response) {
47
  $('#inherit-role-list').html(
48
+ '<option value="">' + aam.__('Select Role') + '</option>'
49
  );
50
  for (var i in response) {
51
  $('#inherit-role-list').append(
59
  //initialize the role list table
60
  $('#role-list').DataTable({
61
  autoWidth: false,
62
+ ordering: true,
63
  dom: 'ftrip',
64
  pagingType: 'simple',
65
  processing: true,
74
  }
75
  },
76
  columnDefs: [
77
+ {visible: false, targets: [0, 1]},
78
+ {sorting: false, targets: [0, 1, 3]}
79
  ],
80
  language: {
81
  search: '_INPUT_',
85
  },
86
  initComplete: function () {
87
  var create = $('<a/>', {
88
+ 'href': '#',
89
+ 'class': 'btn btn-primary'
90
  }).html('<i class="icon-plus"></i> ' + aam.__('Create'))
91
+ .bind('click', function (event) {
92
  event.preventDefault();
93
+
94
  //clear add role form first
95
  $('#new-role-name', '#add-role-modal').val('');
96
  fetchRoleList();
108
  } else {
109
  $('td:eq(0)', row).html('<span>' + data[2] + '</span>');
110
  }
111
+
112
  //add subtitle
113
  $('td:eq(0)', row).append(
114
  $('<i/>', {'class': 'aam-row-subtitle'}).text(
115
  aam.__('Users') + ': ' + parseInt(data[1])
116
  )
117
  );
118
+
119
  var actions = data[3].split(',');
120
 
121
  var container = $('<div/>', {'class': 'aam-row-actions'});
124
  case 'manage':
125
  $(container).append($('<i/>', {
126
  'class': 'aam-row-action icon-cog text-info'
127
+ }).bind('click', function () {
128
  aam.setSubject('role', data[0], data[2]);
129
  $('td:eq(0) span', row).replaceWith(
130
  '<strong>' + data[2] + '</strong>'
131
+ );
132
  $('i.icon-cog', container).attr(
133
+ 'class', 'aam-row-action icon-spin4 animate-spin'
134
+ );
135
  aam.fetchContent();
136
  $('i.icon-spin4', container).attr(
137
+ 'class', 'aam-row-action icon-cog text-info'
138
+ );
139
  //Show add capability that may be hidden after manager user
140
  $('#add-capability').show();
141
+ }).attr({
142
+ 'data-toggle': "tooltip",
143
+ 'title': aam.__('Manage Role')
144
  }));
145
  break;
146
 
153
  $('#edit-role-modal').modal('show').on('shown.bs.modal', function () {
154
  $('#edit-role-name').focus();
155
  });
156
+ }).attr({
157
+ 'data-toggle': "tooltip",
158
+ 'title': aam.__('Edit Role Name')
159
  }));
160
  break;
161
 
166
  $('#delete-role-btn').data('role', data[0]);
167
  var message = $('#delete-role-modal .aam-confirm-message').data('message');
168
  $('#delete-role-modal .aam-confirm-message').html(
169
+ message.replace(
170
+ '%s',
171
+ '<strong>' + event.data.role[2] + '</strong>'
172
+ )
173
+ );
174
 
175
  $('#delete-role-modal').modal('show');
176
+ }).attr({
177
+ 'data-toggle': "tooltip",
178
+ 'title': aam.__('Delete Role')
179
  }));
180
  break;
181
 
227
  } else {
228
  aam.notification(
229
  'danger', aam.__('Failed to add new role')
230
+ );
231
  }
232
  },
233
  error: function () {
269
  $('#role-list').DataTable().ajax.reload();
270
  } else {
271
  aam.notification(
272
+ 'danger', aam.__('Failed to update role')
273
  );
274
  }
275
  },
285
  $('#edit-role-name').focus().parent().addClass('has-error');
286
  }
287
  });
288
+
289
  //edit role button
290
  $('#delete-role-btn').bind('click', function (event) {
291
  var _this = this;
311
  }
312
  },
313
  error: function () {
314
+ aam.notification('danger', aam.__('Application error'));
315
  },
316
  complete: function () {
317
  $('#delete-role-modal').modal('hide');
319
  }
320
  });
321
  });
322
+
323
  //add setSubject hook
324
  aam.addHook('setSubject', function () {
325
  //clear highlight
332
  //show post & pages access control groups that belong to backend
333
  $('.aam-backend-post-access').show();
334
  });
335
+
336
  //in case interface needed to be reloaded
337
  aam.addHook('refresh', function () {
338
  $('#role-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
349
  * @returns {void}
350
  */
351
  (function ($) {
352
+
353
  /**
354
  *
355
  * @param {type} id
357
  */
358
  function isCurrent(id) {
359
  var subject = aam.getSubject();
360
+
361
  return (subject.type === 'user' && parseInt(subject.id) === id);
362
  }
363
+
364
  /**
365
  *
366
  * @param {type} id
369
  */
370
  function blockUser(id, btn) {
371
  var state = ($(btn).hasClass('icon-lock') ? 0 : 1);
372
+
373
  $.ajax(aamLocal.ajaxurl, {
374
  type: 'POST',
375
  dataType: 'json',
386
  success: function (response) {
387
  if (response.status === 'success') {
388
  if (state === 1) {
389
+ $(btn).attr({
390
+ 'class': 'aam-row-action icon-lock text-danger',
391
+ 'title': aam.__('Unlock User'),
392
+ 'data-original-title': aam.__('Unlock User')
393
+ });
394
  } else {
395
+ $(btn).attr({
396
+ 'class': 'aam-row-action icon-lock-open-alt text-warning',
397
+ 'title': aam.__('Lock User'),
398
+ 'data-original-title': aam.__('Lock User')
399
+ });
400
  }
401
  } else {
402
  aam.notification(
403
+ 'danger', aam.__('Failed to block user')
404
+ );
405
  }
406
  },
407
  error: function () {
409
  }
410
  });
411
  }
412
+
413
  //initialize the user list table
414
  $('#user-list').DataTable({
415
  autoWidth: false,
437
  infoFiltered: ''
438
  },
439
  initComplete: function () {
440
+ var create = $('<a/>', {
441
+ 'href': '#',
442
+ 'class': 'btn btn-primary'
443
  }).html('<i class="icon-plus"></i> ' + aam.__('Create')).bind('click', function (event) {
444
  event.preventDefault();
445
  window.open(aamLocal.url.addUser, '_blank');
453
  } else {
454
  $('td:eq(0)', row).html('<span>' + data[2] + '</span>');
455
  }
456
+
457
  //add subtitle
458
  $('td:eq(0)', row).append(
459
+ $('<i/>', {'class': 'aam-row-subtitle'}).text(
460
  aam.__('Role') + ': ' + data[1]
461
+ )
462
+ );
463
+
464
  var actions = data[3].split(',');
465
 
466
  var container = $('<div/>', {'class': 'aam-row-actions'});
469
  case 'manage':
470
  $(container).append($('<i/>', {
471
  'class': 'aam-row-action icon-cog text-info'
472
+ }).bind('click', function () {
473
  aam.setSubject('user', data[0], data[2]);
474
  $('td:eq(0) span', row).replaceWith(
475
  '<strong>' + data[2] + '</strong>'
476
+ );
477
  $('i.icon-cog', container).attr('class', 'aam-row-action icon-spin4 animate-spin');
478
  aam.fetchContent();
479
  $('i.icon-spin4', container).attr('class', 'aam-row-action icon-cog text-info');
480
  //make sure that there is no way user add's new capability
481
  $('#add-capability').hide();
482
+ }).attr({
483
+ 'data-toggle': "tooltip",
484
+ 'title': aam.__('Manage User')
485
  }));
486
  break;
487
+
488
  case 'no-manage':
489
  $(container).append($('<i/>', {
490
  'class': 'aam-row-action icon-cog text-muted'
498
  'class': 'aam-row-action icon-pencil text-warning'
499
  }).bind('click', function () {
500
  window.open(
501
+ aamLocal.url.editUser + '?user_id=' + data[0], '_blank'
502
+ );
503
+ }).attr({
504
+ 'data-toggle': "tooltip",
505
+ 'title': aam.__('Edit User')
506
  }));
507
  break;
508
+
509
  case 'no-edit':
510
  $(container).append($('<i/>', {
511
  'class': 'aam-row-action icon-pencil text-muted'
519
  'class': 'aam-row-action icon-lock-open-alt text-warning'
520
  }).bind('click', function () {
521
  blockUser(data[0], $(this));
522
+ }).attr({
523
+ 'data-toggle': "tooltip",
524
+ 'title': aam.__('Lock User')
525
  }));
526
  break;
527
+
528
  case 'unlock':
529
  $(container).append($('<i/>', {
530
  'class': 'aam-row-action icon-lock text-danger'
531
  }).bind('click', function () {
532
  blockUser(data[0], $(this));
533
+ }).attr({
534
+ 'data-toggle': "tooltip",
535
+ 'title': aam.__('Unlock User')
536
  }));
537
  break;
538
+
539
+ case 'no-lock':
540
+ case 'no-unlock':
541
  $(container).append($('<i/>', {
542
  'class': 'aam-row-action icon-lock text-muted'
543
  }).bind('click', function () {
545
  }));
546
  break;
547
 
548
+ case 'no-switch':
549
+ $(container).append($('<i/>', {
550
+ 'class': 'aam-row-action icon-arrows-cw text-muted'
551
+ }).bind('click', function () {
552
+ $('#user-notification-modal').modal('show');
553
+ }));
554
+ break;
555
+
556
  default:
557
+ var chunks = action.split('|');
558
+ if (chunks[0] === 'switch') {
559
+ $(container).append($('<i/>', {
560
+ 'class': 'aam-row-action icon-arrows-cw text-info'
561
+ }).bind('click', function () {
562
+ location.href = chunks[1].replace(/&amp;/g, '&');
563
+ }).attr({
564
+ 'data-toggle': "tooltip",
565
+ 'title': aam.__('Switch To User')
566
+ }));
567
+ }
568
  break;
569
  }
570
  });
571
  $('td:eq(1)', row).html(container);
572
  }
573
  });
574
+
575
  //add setSubject hook
576
  aam.addHook('setSubject', function () {
577
  //clear highlight
584
  //show post & pages access control groups that belong to backend
585
  $('.aam-backend-post-access').show();
586
  });
587
+
588
  //in case interface needed to be reloaded
589
  aam.addHook('refresh', function () {
590
  $('#user-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
591
  });
592
+
593
  })(jQuery);
594
 
595
 
640
  function initialize() {
641
  $('.aam-restrict-menu').each(function () {
642
  $(this).bind('click', function () {
643
+ var status = $('i', $(this)).hasClass('icon-eye-off');
644
  var target = $(this).data('target');
645
 
646
  $('i', $(this)).attr('class', 'icon-spin4 animate-spin');
647
 
648
  var result = aam.save($(this).data('menu-id'), status, 'menu');
649
+
650
  if (result.status === 'success') {
651
+ if (status) { //locked the menu
652
  $('input', target).each(function () {
653
  $(this).attr('checked', true);
654
  aam.save($(this).data('menu-id'), status, 'menu');
655
  });
656
  $('.aam-bordered', target).append(
657
  $('<div/>', {'class': 'aam-lock'})
658
+ );
659
  $(this).removeClass('btn-danger').addClass('btn-primary');
660
  $(this).html(
661
+ '<i class="icon-eye"></i>' + aam.__('Show Menu')
662
+ );
663
  //add menu restricted indicator
664
  var ind = $('<i/>', {
665
+ 'class': 'aam-panel-title-icon icon-eye-off text-danger'
666
  });
667
  $('.panel-title', target + '-heading').append(ind);
668
  } else {
673
  $('.aam-lock', target).remove();
674
  $(this).removeClass('btn-primary').addClass('btn-danger');
675
  $(this).html(
676
+ '<i class="icon-eye-off"></i>' + aam.__('Hide Menu')
677
+ );
678
  $('.panel-title .icon-eye-off', target + '-heading').remove();
679
  }
680
  } else {
681
+ $(this).attr('checked', !status);
682
  }
683
  });
684
  });
686
  $('input[type="checkbox"]', '#admin-menu').each(function () {
687
  $(this).bind('click', function () {
688
  aam.save(
689
+ $(this).data('menu-id'),
690
+ $(this).attr('checked') ? true : false,
691
+ 'menu'
692
  );
693
  });
694
  });
695
+
696
+ //reset button
697
+ $('#menu-reset').bind('click', function (event) {
698
+ event.preventDefault();
699
+
700
+ $.ajax(aamLocal.ajaxurl, {
701
+ type: 'POST',
702
+ dataType: 'json',
703
+ data: {
704
+ action: 'aam',
705
+ sub_action: 'Menu.reset',
706
+ _ajax_nonce: aamLocal.nonce,
707
+ subject: aam.getSubject().type,
708
+ subjectId: aam.getSubject().id
709
+ },
710
+ success: function (response) {
711
+ if (response.status === 'success') {
712
+ aam.fetchContent();
713
+ }
714
+ }
715
+ });
716
+ });
717
  }
718
 
719
  aam.addHook('init', initialize);
783
  getContent();
784
  } else {
785
  aam.notification(
786
+ 'danger', aam.__('Failed to retrieve mataboxes')
787
+ );
788
  }
789
  },
790
  error: function () {
793
  complete: function () {
794
  $('i', '#refresh-metabox-list').attr(
795
  'class', 'icon-arrows-cw'
796
+ );
797
  }
798
  });
799
 
800
  });
801
 
802
+ //reset button
803
+ $('#metabox-reset').bind('click', function (event) {
804
+ event.preventDefault();
805
+
806
+ $.ajax(aamLocal.ajaxurl, {
807
+ type: 'POST',
808
+ dataType: 'json',
809
+ data: {
810
+ action: 'aam',
811
+ sub_action: 'Metabox.reset',
812
+ _ajax_nonce: aamLocal.nonce,
813
+ subject: aam.getSubject().type,
814
+ subjectId: aam.getSubject().id
815
+ },
816
+ success: function (response) {
817
+ if (response.status === 'success') {
818
+ aam.fetchContent();
819
+ }
820
+ }
821
+ });
822
+ });
823
+
824
  $('input[type="checkbox"]', '#metabox-list').each(function () {
825
  $(this).bind('click', function () {
826
  aam.save(
827
+ $(this).data('metabox'),
828
+ $(this).attr('checked') ? true : false,
829
+ 'metabox'
830
+ );
831
  });
832
  });
833
  }
834
+
835
  aam.addHook('init', initialize);
836
 
837
  })(jQuery);
854
  */
855
  function save(capability, btn) {
856
  var granted = $(btn).hasClass('icon-check-empty') ? 1 : 0;
857
+
858
  //show indicator
859
  $(btn).attr('class', 'aam-row-action icon-spin4 animate-spin');
860
+
861
  if (aam.save(capability, granted, 'capability').status === 'success') {
862
  if (granted) {
863
  $(btn).attr('class', 'aam-row-action text-success icon-check');
865
  $(btn).attr('class', 'aam-row-action text-muted icon-check-empty');
866
  }
867
  } else {
868
+ if (granted) {
869
  aam.notification(
870
  'danger', aam.__('Failed to grand capability - WordPress policy')
871
  );
908
  lengthMenu: '_MENU_'
909
  },
910
  createdRow: function (row, data) {
911
+ //add also the internal capability representation next to the
912
+ //capability title
913
+ $('td:eq(1)', row).append(
914
+ '&nbsp;<small class="aam-block">' + data[0] + '</small>'
915
+ );
916
+
917
  var actions = data[3].split(',');
918
 
919
  var container = $('<div/>', {'class': 'aam-row-actions'});
920
  $.each(actions, function (i, action) {
 
 
 
921
  switch (action) {
922
  case 'unchecked':
923
  $(container).append($('<i/>', {
936
  break;
937
 
938
  default:
939
+ aam.triggerHook('decorate-capability-row', {
940
+ action: action,
941
+ container: container,
942
+ data: data
943
+ });
944
  break;
945
  }
946
  });
948
  }
949
  });
950
 
 
 
 
 
 
951
  $('a', '#capability-groups').each(function () {
952
  $(this).bind('click', function () {
953
  var table = $('#capability-list').DataTable();
990
  $('#capability-list').DataTable().ajax.reload();
991
  } else {
992
  aam.notification(
993
+ 'danger', aam.__('Failed to add new capability')
994
+ );
995
  }
996
  },
997
  error: function () {
1009
  $('#add-capability-modal').on('shown.bs.modal', function (e) {
1010
  $('#new-capability-name').focus();
1011
  });
1012
+
1013
  //show or hide capability user note based on current subject
1014
  if (aam.getSubject().type === 'user') {
1015
+ $('.aam-user-note').removeClass('hidden');
1016
  } else {
1017
+ $('.aam-user-note').addClass('hidden');
1018
  }
1019
 
1020
  }
1077
  function loadAccessForm(object, id, btn) {
1078
  //reset the form first
1079
  var container = $('.aam-post-manager[data-type="' + object + '"]');
1080
+
1081
+ $('.aam-row-action', container).each(function () {
1082
  $(this).attr({
1083
+ 'class': 'aam-row-action text-muted icon-check-empty',
1084
+ 'data-type': object,
1085
+ 'data-id': id
1086
  });
1087
+
1088
  //initialize each access property
1089
  $(this).unbind('click').bind('click', function (event) {
1090
  event.preventDefault();
1110
  }
1111
  }
1112
  });
1113
+
1114
  });
1115
+
1116
  $.ajax(aamLocal.ajaxurl, {
1117
  type: 'POST',
1118
  dataType: 'json',
1127
  },
1128
  beforeSend: function () {
1129
  $(btn).attr('class', 'aam-row-action icon-spin4 animate-spin');
1130
+ $('#post-overwritten, #post-inherited').addClass('hidden');
1131
  },
1132
  success: function (response) {
1133
  //iterate through each property
1134
+ for (var property in response.access) {
1135
+ var checked = (response.access[property] ? 'text-danger icon-check' : 'text-muted icon-check-empty');
1136
 
1137
  $('[data-property="' + property + '"]', container).attr({
1138
+ 'class': 'aam-row-action ' + checked
1139
  });
1140
+
1141
+ //check metadata and show message if necessary
1142
+ if (response.meta.overwritten === true) {
1143
+ $('#post-overwritten').removeClass('hidden');
1144
+ //add some specific attributes to reset button
1145
+ $('#post-reset').attr({
1146
+ 'data-type': object,
1147
+ 'data-id': id
1148
+ });
1149
+ } else if (response.meta.inherited !== null) {
1150
+ if (response.meta.inherited === 'role') {
1151
+ $('#post-parent').text(aam.__('parent role'));
1152
+ } else if (response.meta.inherited === 'default') {
1153
+ $('#post-parent').text(aam.__('default settings'));
1154
+ } else if (response.meta.inherited === 'term') {
1155
+ $('#post-parent').text(aam.__('parent category'));
1156
+ }
1157
+ $('#post-inherited').removeClass('hidden');
1158
+ }
1159
+
1160
  }
1161
 
1162
  $('#post-list_wrapper').addClass('aam-hidden');
1170
  }
1171
  });
1172
  }
1173
+
1174
  /**
1175
  *
1176
  * @param {type} param
1181
  */
1182
  function save(param, value, object, object_id) {
1183
  var result = null;
1184
+
1185
  $.ajax(aamLocal.ajaxurl, {
1186
  type: 'POST',
1187
  dataType: 'json',
1207
  aam.notification('danger', aam.__('Application error'));
1208
  }
1209
  });
1210
+
1211
  return result;
1212
+ }
1213
+
1214
  /**
1215
  *
1216
  * @returns {undefined}
1218
  function initialize() {
1219
  //reset filter to default list of post types
1220
  filter.type = null;
1221
+
1222
  //initialize the role list table
1223
  $('#post-list').DataTable({
1224
  autoWidth: false,
1260
  //reset the ajax queue
1261
  queue = new Array();
1262
  },
1263
+ rowCallback: function (row, data) {
1264
  //object type icon
1265
  switch (data[2]) {
1266
  case 'type':
1285
  //visual feedback - show loading icon
1286
  $('td:eq(0)', row).html(
1287
  '<i class="icon-spin4 animate-spin"></i>'
1288
+ );
1289
  //set filter
1290
  filter[data[2]] = data[0];
1291
  //reset the ajax queue
1298
 
1299
  }).html(data[3]);
1300
  $('td:eq(1)', row).html(link);
1301
+ } else { //reset the post/term title
1302
+ $('td:eq(1)', row).html(data[3]);
1303
  }
1304
 
1305
  //add breadcrumb but only if not a type
1318
  success: function (response) {
1319
  if (response.status === 'success') {
1320
  $('td:eq(1) span', row).html(
1321
+ response.breadcrumb
1322
+ );
1323
  }
1324
  },
1325
  error: function () {
1333
  });
1334
  });
1335
  $('td:eq(1)', row).append(
1336
+ $('<span/>', {'class': 'aam-row-subtitle'}).text(
1337
  aam.__('Loading...')
1338
+ )
1339
+ );
1340
  }
1341
 
1342
  //update the actions
1351
  }).bind('click', function () {
1352
  loadAccessForm(data[2], data[0], $(this));
1353
  addBreadcrumbLevel('edit', data[2], data[3]);
1354
+ }).attr({
1355
+ 'data-toggle': "tooltip",
1356
+ 'title': aam.__('Manage Access')
1357
  }));
1358
  break;
1359
 
1362
  'class': 'aam-row-action text-warning icon-pencil'
1363
  }).bind('click', function () {
1364
  window.open(data[1], '_blank');
1365
+ }).attr({
1366
+ 'data-toggle': "tooltip",
1367
+ 'title': aam.__('Edit')
1368
  }));
1369
  break;
 
1370
 
1371
  default:
1372
  break;
1388
  $(this).nextAll().remove();
1389
  $('.aam-post-manager').removeClass('active');
1390
  $('#post-list_wrapper').removeClass('aam-hidden');
1391
+ $('#post-overwritten, #post-inherited').addClass('hidden');
1392
+ });
1393
+
1394
+ //reset button
1395
+ $('#post-reset').bind('click', function (event) {
1396
+ event.preventDefault();
1397
+
1398
+ var type = $(this).attr('data-type');
1399
+ var id = $(this).attr('data-id');
1400
+
1401
+ $.ajax(aamLocal.ajaxurl, {
1402
+ type: 'POST',
1403
+ dataType: 'json',
1404
+ data: {
1405
+ action: 'aam',
1406
+ sub_action: 'Post.reset',
1407
+ _ajax_nonce: aamLocal.nonce,
1408
+ type: type,
1409
+ id: id,
1410
+ subject: aam.getSubject().type,
1411
+ subjectId: aam.getSubject().id
1412
+ },
1413
+ beforeSend: function () {
1414
+ },
1415
+ success: function (response) {
1416
+ if (response.status === 'success') {
1417
+ $('#post-overwritten').addClass('hidden');
1418
+ loadAccessForm(type, id);
1419
+ }
1420
+ },
1421
+ error: function () {
1422
+ },
1423
+ complete: function () {
1424
+ }
1425
+ });
1426
  });
1427
 
1428
  //go back button
1434
  $('.aam-post-manager[data-type="' + type + '"]').removeClass('active');
1435
  $('#post-list_wrapper').removeClass('aam-hidden');
1436
  $('.aam-post-breadcrumb span:last').remove();
1437
+ $('#post-overwritten, #post-inherited').addClass('hidden');
1438
  });
1439
  }
1440
 
1534
  $('i', $(this)).attr('class', 'icon-arrows-cw');
1535
  });
1536
  });
1537
+
1538
  //download extension
1539
  $('.aam-download-extension').each(function () {
1540
  $(this).bind('click', function (event) {
1554
  //bind the download handler
1555
  $('#download-extension').bind('click', function () {
1556
  download(
1557
+ 'data:application/zip;base64,' + dump.content,
1558
  dump.title + '.zip',
1559
  'application/zip'
1560
+ );
1561
+ $('#extension-notification-modal').modal('hide');
1562
  });
1563
  }
1564
 
1590
  $(this).addClass('active');
1591
  //show feature content
1592
  $('#' + $(this).data('feature') + '-content').addClass('active');
1593
+ location.hash = $(this).data('feature');
1594
  });
1595
  });
1596
+
1597
+ if (location.hash !== '') {
1598
+ $('li[data-feature="' + location.hash.substr(1) + '"]', '#feature-list').trigger('click');
1599
+ } else {
1600
+ $('li:eq(0)', '#feature-list').trigger('click');
1601
+ }
1602
  }
1603
 
1604
  /**
1611
  dataType: 'html',
1612
  async: false,
1613
  data: {
1614
+ action: 'aamc',
1615
  _ajax_nonce: aamLocal.nonce,
1616
  subject: this.getSubject().type,
1617
  subjectId: this.getSubject().id
1619
  beforeSend: function () {
1620
  var loader = $('<div/>', {'class': 'aam-loading'}).html(
1621
  '<i class="icon-spin4 animate-spin"></i>'
1622
+ );
1623
  $('#aam-content').html(loader);
1624
  },
1625
  success: function (response) {
media/js/aam.js CHANGED
@@ -45,13 +45,14 @@
45
  * Trigger UI hook
46
  *
47
  * @param {String} name
 
48
  *
49
  * @returns {void}
50
  */
51
- AAM.prototype.triggerHook = function (name) {
52
  if (typeof this.hooks[name] !== 'undefined') {
53
  for (var i in this.hooks[name]) {
54
- this.hooks[name][i].call(this);
55
  }
56
  }
57
  };
@@ -76,53 +77,33 @@
76
  $('.aam-help-menu').each(function() {
77
  var target = $(this).data('target');
78
 
79
- $(this).bind('click', function() {
80
- if ($(this).hasClass('active')) {
81
- $('.aam-help-context', target).removeClass('active');
82
- $('.aam-postbox-inside', target).show();
83
- $(this).removeClass('active');
84
- } else {
85
- $('.aam-postbox-inside', target).hide();
86
- $('.aam-help-context', target).addClass('active');
87
- $(this).addClass('active');
88
- }
89
- });
90
- });
91
-
92
- //welcome message
93
- if (parseInt(aamLocal.welcome) === 1) {
94
- $('.aam-welcome-message').toggleClass('active');
95
- $('.wrap').css('visibility', 'hidden');
96
- $('#confirm-welcome').bind('click', function (event) {
97
- event.preventDefault();
98
-
99
- $('i', $(this)).attr('class', 'icon-spin4 animate-spin');
100
-
101
- $.ajax(aamLocal.ajaxurl, {
102
- type: 'POST',
103
- dataType: 'json',
104
- data: {
105
- action: 'aam',
106
- sub_action: 'confirmWelcome',
107
- _ajax_nonce: aamLocal.nonce
108
- },
109
- beforeSend: function () {
110
- $('.aam-welcome-message').toggleClass('active');
111
- setTimeout(function() {
112
- $('.aam-welcome-message').remove();
113
- }, 1500);
114
- },
115
- complete: function () {
116
- $('.wrap').css('visibility', 'visible');
117
  }
118
  });
 
 
 
 
 
 
 
 
 
119
  });
120
- } else {
121
- $('.aam-welcome-message').remove();
122
- }
123
 
124
  //if there is an error detected during the AAM load, show it
125
- if (AAM_PageError) {
126
  $('.aam-error-list').append(
127
  $('<li/>').html(
128
  this.__('Javascript error detected during the page load. AAM may not function properly.')
@@ -130,6 +111,27 @@
130
  );
131
  $('.aam-notification-container').removeClass('hidden');
132
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  };
134
 
135
  /**
@@ -177,14 +179,14 @@
177
  * @returns {undefined}
178
  */
179
  AAM.prototype.notification = function (status, message) {
180
- var notification = $('<div/>', {'class': 'aam-sticky-note'});
181
- notification.append(
182
- $('<span/>', {'class': 'text-' + status}).text(message)
183
- );
184
  $('.wrap').append(notification);
 
185
  setTimeout(function () {
186
  $('.aam-sticky-note').remove();
187
- }, 5000);
188
  };
189
 
190
  /**
45
  * Trigger UI hook
46
  *
47
  * @param {String} name
48
+ * @param {Object} params
49
  *
50
  * @returns {void}
51
  */
52
+ AAM.prototype.triggerHook = function (name, params) {
53
  if (typeof this.hooks[name] !== 'undefined') {
54
  for (var i in this.hooks[name]) {
55
+ this.hooks[name][i].call(this, params);
56
  }
57
  }
58
  };
77
  $('.aam-help-menu').each(function() {
78
  var target = $(this).data('target');
79
 
80
+ if (target) {
81
+ $(this).bind('click', function() {
82
+ if ($(this).hasClass('active')) {
83
+ $('.aam-help-context', target).removeClass('active');
84
+ $('.aam-postbox-inside', target).show();
85
+ $(this).removeClass('active');
86
+ } else {
87
+ $('.aam-postbox-inside', target).hide();
88
+ $('.aam-help-context', target).addClass('active');
89
+ $(this).addClass('active');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
91
  });
92
+ }
93
+ });
94
+
95
+ //help tooltips
96
+ $('body').delegate('[data-toggle="tooltip"]', 'hover', function (event) {
97
+ event.preventDefault();
98
+ $(this).tooltip({
99
+ 'placement' : 'top',
100
+ 'container' : 'body'
101
  });
102
+ $(this).tooltip('show');
103
+ });
 
104
 
105
  //if there is an error detected during the AAM load, show it
106
+ if (typeof AAM_PageError !== 'undefined' && AAM_PageError) {
107
  $('.aam-error-list').append(
108
  $('<li/>').html(
109
  this.__('Javascript error detected during the page load. AAM may not function properly.')
111
  );
112
  $('.aam-notification-container').removeClass('hidden');
113
  }
114
+
115
+ //Error Fix promotion code
116
+ $.ajax(aamLocal.ajaxurl, {
117
+ type: 'POST',
118
+ dataType: 'json',
119
+ data: {
120
+ action: 'aam',
121
+ sub_action: 'getErrorFixStatus',
122
+ _ajax_nonce: aamLocal.nonce
123
+ },
124
+ success: function (response) {
125
+ if (response.status === 'show') {
126
+ $('#errorfix-promotion').removeClass('hidden');
127
+ $('#errorfix-install-btn').attr(
128
+ 'href', response.url.replace(/&amp;/g, '&')
129
+ );
130
+ } else {
131
+ $('#errorfix-promotion').remove();
132
+ }
133
+ }
134
+ });
135
  };
136
 
137
  /**
179
  * @returns {undefined}
180
  */
181
  AAM.prototype.notification = function (status, message) {
182
+ var notification = $('<div/>', {'class': 'aam-sticky-note ' + status});
183
+
184
+ notification.append($('<span/>').text(message));
 
185
  $('.wrap').append(notification);
186
+
187
  setTimeout(function () {
188
  $('.aam-sticky-note').remove();
189
+ }, 9000);
190
  };
191
 
192
  /**
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: vasyltech
3
  Tags: access, access manager, role, user, capability, admin, page, post, widget
4
  Requires at least: 3.8
5
- Tested up to: 4.3.1
6
- Stable tag: 3.0
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.
@@ -45,6 +45,82 @@ out more about the Advanced Access Manager.
45
 
46
  == Changelog ==
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  = 3.0 =
49
  * Brand new and much more intuitive user interface
50
  * Fully responsive design
2
  Contributors: vasyltech
3
  Tags: access, access manager, role, user, capability, admin, page, post, widget
4
  Requires at least: 3.8
5
+ Tested up to: 4.4
6
+ Stable tag: 3.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.
45
 
46
  == Changelog ==
47
 
48
+ = 3.1 =
49
+ * Integrated User Switch with AAM
50
+ * Fixed bugs reported by WP Error Fix
51
+ * Removed intro message
52
+ * Improved AAM speed
53
+ * Updated AAM Utilities extension
54
+ * Updated AAM Plus Package extension
55
+ * Added new AAM Skeleton Extension for developers
56
+
57
+ = 3.0.10 =
58
+ * Fixed bug reported by WP Error Fix when user's first role does not exist
59
+ * Fixed bug reported by WP Error Fix when roles has invalid capability set
60
+
61
+ = 3.0.9 =
62
+ * Added ability to extend the AAM Utilities property list
63
+ * Updated AAM Plus Package with ability to toggle the page categories feature
64
+ * Added WP Error Fix promotion tab
65
+ * Finalized and resolved all known issues
66
+
67
+ = 3.0.8 =
68
+ * Extended AAM with few extra core filters and actions
69
+ * Added role list sorting by name
70
+ * Added WP Error Fix item to the extension list
71
+ * Fixed the issue with language file
72
+
73
+ = 3.0.7 =
74
+ * Fixed the warning issue with newly installed AAM instance
75
+
76
+ = 3.0.6 =
77
+ * Fixed issue when server has security policy regarding file_get_content as URL
78
+ * Added filters to support Edit/Delete caps with AAM Utilities extension
79
+ * Updated AAM Utilities extension
80
+ * Refactored extension list manager
81
+ * Added AAM Role Filter extension
82
+ * Added AAM Post Filter extension
83
+ * Standardize the extension folder name
84
+
85
+ = 3.0.5 =
86
+ * Wrapped all *.phtml files into condition to avoid crash on direct file access
87
+ * Fixed bug with Visitor subject API
88
+ * Added internal capability id to the list of capabilities
89
+ * Fixed bug with strict standard notice
90
+ * Fixed bug when extension after update still indicates that update is needed
91
+ * Fixed bug when extensions were not able to load js & css on windows server
92
+ * Updated AAM Utilities extension
93
+ * Updated AAM Multisite extension
94
+
95
+ = 3.0.4 =
96
+ * Improved the Metaboxes & Widget filtering on user level
97
+ * Improved visual feedback for already installed extensions
98
+ * Fixed the bug when posts and categories were filtered on the AAM page
99
+ * Significantly improved the posts & pages inheritance mechanism
100
+ * Updated and fixed bugs in AAM Plus Package and AAM Utilities
101
+ * Improved AAM navigation during page reload
102
+ * Removed Trash post access option. Now Delete option is the same
103
+ * Added UI feedback on current posts, menu and metaboxes inheritance status
104
+ * Updated AAM Multisite extension
105
+
106
+ = 3.0.3 =
107
+ * Fixed bug with backend menu saving
108
+ * Fixed bug with metaboxes & widgets saving
109
+ * Fixed bug with WP_Filesystem when non-standard filesystem is used
110
+ * Optimized Posts & Pages breadcrumb load
111
+
112
+ = 3.0.2 =
113
+ * Fixed a bug with posts access within categories
114
+ * Significantly improved the caching mechanism
115
+ * Added mandatory notification if caching is not turned on
116
+ * Added more help content
117
+
118
+ = 3.0.1 =
119
+ * Fixed the bug with capability saving
120
+ * Fixed the bug with capability drop-down menu
121
+ * Made backend menu help is more clear
122
+ * Added tooltips to some UI buttons
123
+
124
  = 3.0 =
125
  * Brand new and much more intuitive user interface
126
  * Fully responsive design
screenshot-1.png DELETED
Binary file
screenshot-2.png DELETED
Binary file
screenshot-3.png DELETED
Binary file
screenshot-4.png DELETED
Binary file
screenshot-5.png DELETED
Binary file