PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.49
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.49
1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 All 172 releases
userswp / admin / menus / class-menus.php

class-menus.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.2.49, at admin/menus/class-menus.php

336 lines 11.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The nav menu specific functionality of the plugin.
4 *
5 * @link http://wpgeodirectory.com
6 * @since 1.0.0
7 *
8 * @package userswp
9 * @subpackage userswp/admin/menus
10 */
11
12 /**
13 * The Nav menu specific functionality of the plugin.
14 *
15 * @package userswp
16 * @subpackage userswp/admin/menus
17 * @author GeoDirectory Team <info@wpgeodirectory.com>
18 */
19 class UsersWP_Menus {
20
21 /**
22 * Load new metabox for nav menu ui.
23 *
24 * @since 1.0.0
25 * @return void
26 */
27 public function users_wp_admin_menu_metabox() {
28 add_meta_box( 'add-users-wp-nav-menu', esc_html__( 'UsersWP Endpoints', 'userswp' ), array($this, 'users_wp_admin_do_wp_nav_menu_metabox'), 'nav-menus', 'side', 'default' );
29 add_action( 'admin_print_footer_scripts', array($this, 'users_wp_admin_wp_nav_menu_restrict_items') );
30 }
31
32 /**
33 * Build and populate the users_wp metabox into the menu manager ui.
34 *
35 * @since 1.0.0
36 * @return void
37 */
38 public function users_wp_admin_do_wp_nav_menu_metabox() {
39
40 global $nav_menu_selected_id;
41
42 $walker = new UsersWP_Walker_Nav_Menu_Checklist( false );
43 $args = array( 'walker' => $walker );
44
45 $post_type_name = 'users_wp';
46
47 $tabs = array();
48
49 $tabs['common']['label'] = __( 'Common', 'userswp' );
50 $tabs['common']['pages'] = $this->users_wp_nav_menu_get_common_pages();
51
52 $tabs['loggedin']['label'] = __( 'Logged-In', 'userswp' );
53 $tabs['loggedin']['pages'] = $this->users_wp_nav_menu_get_loggedin_pages();
54
55 $tabs['loggedout']['label'] = __( 'Logged-Out', 'userswp' );
56 $tabs['loggedout']['pages'] = $this->users_wp_nav_menu_get_loggedout_pages();
57
58 ?>
59
60 <div id="users-wp-endpoints" class="posttypediv">
61 <h4><?php esc_html_e( 'Common', 'userswp' ) ?></h4>
62 <p><?php esc_html_e( 'Common links are visible to everyone.', 'userswp' ) ?></p>
63
64 <div id="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-common" class="tabs-panel tabs-panel-active">
65 <ul id="users_wp-menu-checklist-common" class="categorychecklist form-no-clear">
66 <?php
67 if ($tabs['common']['pages']) {
68 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $tabs['common']['pages'] ), 0, (object) $args );
69 }
70 ?>
71 </ul>
72 </div>
73 <h4><?php esc_html_e( 'Logged-In', 'userswp' ) ?></h4>
74 <p><?php esc_html_e( 'Logged-In links are not visible to visitors who are not logged in.', 'userswp' ) ?></p>
75
76 <div id="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-loggedin" class="tabs-panel tabs-panel-active">
77 <ul id="users_wp-menu-checklist-loggedin" class="categorychecklist form-no-clear">
78 <?php
79 if ($tabs['loggedin']['pages']) {
80 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $tabs['loggedin']['pages'] ), 0, (object) $args );
81 }
82 ?>
83 </ul>
84 </div>
85
86 <h4><?php esc_html_e( 'Logged-Out', 'userswp' ) ?></h4>
87 <p><?php esc_html_e( 'Logged-Out links are not visible to users who are logged in.', 'userswp' ) ?></p>
88
89 <div id="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-loggedin" class="tabs-panel tabs-panel-active">
90 <ul id="users_wp-menu-checklist-loggedin" class="categorychecklist form-no-clear">
91 <?php
92 if ($tabs['loggedout']['pages']) {
93 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $tabs['loggedout']['pages'] ), 0, (object) $args );
94 }
95 ?>
96 </ul>
97 </div>
98
99 <p class="button-controls wp-clearfix" data-items-type="users-wp-endpoints">
100 <span class="list-controls hide-if-no-js">
101 <input type="checkbox" id="users-wp-endpoints-tab" class="select-all">
102 <label for="users-wp-endpoints-tab"><?php esc_html_e( 'Select all', 'userswp' ); ?></label>
103 </span>
104
105 <span class="add-to-menu">
106 <input type="submit" class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to menu', 'userswp' ); ?>" name="add-users-wp-endpoints-item" id="submit-users-wp-endpoints">
107 <span class="spinner"></span>
108 </span>
109 </p>
110 </div><!-- /#users_wp-menu -->
111
112 <?php
113
114 }
115
116 /**
117 * Create a fake post object for the wp menu manager.
118 * This function creates the list of Logged-In only pages,
119 * for the admin menu manager.
120 *
121 * @since 1.0.0
122 * @return mixed A URL or an array of pages.
123 */
124 public function users_wp_nav_menu_get_common_pages() {
125
126 $users_page_data = uwp_get_page_url_data('users_page', 'array');
127
128 $users_wp_menu_items = array();
129
130
131 if (!empty($users_page_data)) {
132 $users_wp_menu_items['users'] = $users_page_data;
133 }
134
135
136 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_common_pages', $users_wp_menu_items );
137
138 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
139
140 return $page_args;
141
142 }
143
144 /**
145 * Create a fake post object for the wp menu manager.
146 * This function creates the list of Logged-In only pages,
147 * for the admin menu manager.
148 *
149 * @since 1.0.0
150 * @return mixed A URL or an array of pages.
151 */
152 public function users_wp_nav_menu_get_loggedin_pages() {
153
154 $account_page_data = uwp_get_page_url_data('account_page', 'array');
155 $change_page_data = uwp_get_page_url_data('change_page', 'array');
156 $profile_page_data = uwp_get_page_url_data('profile_page', 'array');
157
158 $users_wp_menu_items = array();
159
160 if (!empty($account_page_data)) {
161 $users_wp_menu_items['account'] = $account_page_data;
162 }
163
164 if (!empty($change_page_data)) {
165 $users_wp_menu_items['change'] = $change_page_data;
166 }
167
168 if (!empty($profile_page_data)) {
169 $users_wp_menu_items['profile'] = $profile_page_data;
170 }
171
172 $users_wp_menu_items['logout'] = array(
173 'name' => __( 'Log out', 'userswp' ),
174 'slug' => 'logout',
175 'link' => wp_login_url(),
176 );
177
178 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedin_pages', $users_wp_menu_items );
179
180 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
181
182 return $page_args;
183
184 }
185
186 /**
187 * Create a fake post object for the wp menu manager.
188 * This function creates the list of Logged-Out only pages,
189 * for the admin menu manager.
190 *
191 * @since 1.0.0
192 * @return mixed A URL or an array of pages.
193 */
194 public function users_wp_nav_menu_get_loggedout_pages() {
195
196 $register_page_data = uwp_get_page_url_data('register_page', 'array');
197 $login_page_data = uwp_get_page_url_data('login_page', 'array');
198 $forgot_page_data = uwp_get_page_url_data('forgot_page', 'array');
199
200 $users_wp_menu_items = array();
201
202 if (!empty($register_page_data)) {
203 $users_wp_menu_items['register'] = $register_page_data;
204 }
205
206 if (!empty($login_page_data)) {
207 $users_wp_menu_items['login'] = $login_page_data;
208 }
209
210 if (!empty($forgot_page_data)) {
211 $users_wp_menu_items['forgot'] = $forgot_page_data;
212 }
213
214
215 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedout_pages', $users_wp_menu_items );
216
217 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
218
219 return $page_args;
220
221 }
222
223 /**
224 * Restrict various items from view if editing a users_wp menu.
225 *
226 * @since 1.0.0
227 * @return void
228 */
229 public function users_wp_admin_wp_nav_menu_restrict_items() {
230 ?>
231 <script type="text/javascript">
232 jQuery( '#menu-to-edit').on( 'click', 'a.item-edit', function() {
233 var settings = jQuery(this).closest( '.menu-item-bar' ).next( '.menu-item-settings' );
234 var css_class = settings.find( '.edit-menu-item-classes' );
235
236 if( css_class.val().match("^users_wp-") ) {
237 css_class.attr( 'readonly', 'readonly' );
238 settings.find( '.field-url' ).css( 'display', 'none' );
239 }
240 });
241 </script>
242 <?php
243 }
244
245 /**
246 * Prepare items for nav menu page arguments
247 *
248 * @since 1.0.0
249 * @return mixed
250 */
251 public function users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items) {
252 // If there's nothing to show, we're done
253 if ( count( $users_wp_menu_items ) < 1 ) {
254 return false;
255 }
256
257 // print_r($users_wp_menu_items);
258
259 $page_args = array();
260
261 foreach ( $users_wp_menu_items as $type => $users_wp_item ) {
262 $page_args[ $users_wp_item['slug'] ] = (object) array(
263 'ID' => -1,
264 'post_title' => $users_wp_item['name'],
265 'post_author' => 0,
266 'post_date' => 0,
267 'post_excerpt' => $users_wp_item['slug'],
268 'post_type' => 'page',
269 'post_status' => 'publish',
270 'comment_status' => 'closed',
271 'guid' => $users_wp_item['link'],
272 'lightbox_class' => "users-wp-$type-nav",
273 );
274
275 }
276
277 return $page_args;
278 }
279
280 /**
281 * Add UsersWP setting page link to the WP admin bar.
282 *
283 * @since 1.1.2
284 * @return void
285 */
286 public function admin_bar_menu($wp_admin_bar){
287 if ( !is_admin() && current_user_can( 'manage_options' ) ) {
288 $wp_admin_bar->add_node( array(
289 'parent' => 'appearance',
290 'id' => 'userswp',
291 'title' => __( 'UsersWP', 'userswp' ),
292 'href' => admin_url( 'admin.php?page=userswp' )
293 ) );
294 }
295 }
296
297 /**
298 * Returns endpoints for UWP menu in setup wizard.
299 *
300 * @since 1.2.0.13
301 * @return array
302 */
303 public function get_endpoints() {
304 $items = array();
305 $items['pages'] = array();
306 $loop_index = 999;
307 $uwp_pages = array('users_page','profile_page','register_page','login_page','account_page','forgot_page','logout');
308 if( !empty( $uwp_pages) ) {
309 foreach ( $uwp_pages as $page ) {
310 if( !empty( $page ) && 'logout' != $page ) {
311 $page_data = uwp_get_page_url_data($page, 'array');
312 } else{
313 $page_data = array(
314 'name' => __( 'Log out', 'userswp' ),
315 'slug' => 'logout',
316 'link' => wp_login_url(),
317 );
318 }
319 $page_class = !empty( $page ) ? str_replace('_page','',$page) : '';
320 $item = new stdClass();
321 $item->object = 'custom';
322 $item->menu_item_parent = 0;
323 $item->type = 'custom';
324 $item->title = $page_data['name'];
325 $item->url = $page_data['link'];
326 $item->target = '';
327 $item->attr_title = '';
328 $item->classes = array("users-wp-menu users-wp-$page_class-nav");
329 $item->xfn = '';
330 $items['pages'][] = $item;
331 }
332 }
333
334 return apply_filters( 'uwp_menu_items', $items,$loop_index );
335 }
336 }