PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.1.2
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.1.2
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.1.2, at admin/menus/class-menus.php

290 lines 9.9 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-menu" 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 $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 $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 $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">
100 <span class="list-controls">
101 <a href="<?php echo admin_url( 'nav-menus.php?page-tab=all&selectall=1#users-wp-menu' ); ?>" class="select-all"><?php _e( 'Select all', 'geodirectory' ); ?></a>
102 </span>
103 <span class="add-to-menu">
104 <input type="submit"<?php if ( function_exists( 'wp_nav_menu_disabled_check' ) ) : wp_nav_menu_disabled_check( $nav_menu_selected_id ); endif; ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'userswp' ); ?>" name="add-custom-menu-item" id="submit-users-wp-menu" />
105 <span class="spinner"></span>
106 </span>
107 </p>
108 </div><!-- /#users_wp-menu -->
109
110 <?php
111
112 }
113
114 /**
115 * Create a fake post object for the wp menu manager.
116 * This function creates the list of Logged-In only pages,
117 * for the admin menu manager.
118 *
119 * @since 1.0.0
120 * @return mixed A URL or an array of pages.
121 */
122 public function users_wp_nav_menu_get_common_pages() {
123
124 $users_page_data = uwp_get_page_url_data('users_page', 'array');
125
126 $users_wp_menu_items = array();
127
128
129 if (!empty($users_page_data)) {
130 $users_wp_menu_items[] = $users_page_data;
131 }
132
133
134 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_common_pages', $users_wp_menu_items );
135
136 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
137
138 return $page_args;
139
140 }
141
142 /**
143 * Create a fake post object for the wp menu manager.
144 * This function creates the list of Logged-In only pages,
145 * for the admin menu manager.
146 *
147 * @since 1.0.0
148 * @return mixed A URL or an array of pages.
149 */
150 public function users_wp_nav_menu_get_loggedin_pages() {
151
152 $account_page_data = uwp_get_page_url_data('account_page', 'array');
153 $change_page_data = uwp_get_page_url_data('change_page', 'array');
154 $profile_page_data = uwp_get_page_url_data('profile_page', 'array');
155
156 $users_wp_menu_items = array();
157
158 if (!empty($account_page_data)) {
159 $users_wp_menu_items[] = $account_page_data;
160 }
161
162 if (!empty($change_page_data)) {
163 $users_wp_menu_items[] = $change_page_data;
164 }
165
166 if (!empty($profile_page_data)) {
167 $users_wp_menu_items[] = $profile_page_data;
168 }
169
170 $users_wp_menu_items[] = array(
171 'name' => __( 'Log out', 'userswp' ),
172 'slug' => 'logout',
173 'link' => wp_login_url(),
174 );
175
176 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedin_pages', $users_wp_menu_items );
177
178 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
179
180 return $page_args;
181
182 }
183
184 /**
185 * Create a fake post object for the wp menu manager.
186 * This function creates the list of Logged-Out only pages,
187 * for the admin menu manager.
188 *
189 * @since 1.0.0
190 * @return mixed A URL or an array of pages.
191 */
192 public function users_wp_nav_menu_get_loggedout_pages() {
193
194 $register_page_data = uwp_get_page_url_data('register_page', 'array');
195 $login_page_data = uwp_get_page_url_data('login_page', 'array');
196 $forgot_page_data = uwp_get_page_url_data('forgot_page', 'array');
197
198 $users_wp_menu_items = array();
199
200 if (!empty($register_page_data)) {
201 $users_wp_menu_items[] = $register_page_data;
202 }
203
204 if (!empty($login_page_data)) {
205 $users_wp_menu_items[] = $login_page_data;
206 }
207
208 if (!empty($forgot_page_data)) {
209 $users_wp_menu_items[] = $forgot_page_data;
210 }
211
212
213 $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedout_pages', $users_wp_menu_items );
214
215 $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items);
216
217 return $page_args;
218
219 }
220
221 /**
222 * Restrict various items from view if editing a users_wp menu.
223 *
224 * @since 1.0.0
225 * @return void
226 */
227 public function users_wp_admin_wp_nav_menu_restrict_items() {
228 ?>
229 <script type="text/javascript">
230 jQuery( '#menu-to-edit').on( 'click', 'a.item-edit', function() {
231 var settings = jQuery(this).closest( '.menu-item-bar' ).next( '.menu-item-settings' );
232 var css_class = settings.find( '.edit-menu-item-classes' );
233
234 if( css_class.val().match("^users_wp-") ) {
235 css_class.attr( 'readonly', 'readonly' );
236 settings.find( '.field-url' ).css( 'display', 'none' );
237 }
238 });
239 </script>
240 <?php
241 }
242
243 /**
244 * Prepare items for nav menu page arguments
245 *
246 * @since 1.0.0
247 * @return mixed
248 */
249 public function users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items) {
250 // If there's nothing to show, we're done
251 if ( count( $users_wp_menu_items ) < 1 ) {
252 return false;
253 }
254
255 $page_args = array();
256
257 foreach ( $users_wp_menu_items as $users_wp_item ) {
258 $page_args[ $users_wp_item['slug'] ] = (object) array(
259 'ID' => -1,
260 'post_title' => $users_wp_item['name'],
261 'post_author' => 0,
262 'post_date' => 0,
263 'post_excerpt' => $users_wp_item['slug'],
264 'post_type' => 'page',
265 'post_status' => 'publish',
266 'comment_status' => 'closed',
267 'guid' => $users_wp_item['link']
268 );
269 }
270
271 return $page_args;
272 }
273
274 /**
275 * Add UsersWP setting page link to the WP admin bar.
276 *
277 * @since 1.1.2
278 * @return void
279 */
280 public function admin_bar_menu($wp_admin_bar){
281 if ( current_user_can( 'manage_options' ) ) {
282 $wp_admin_bar->add_menu( array(
283 'parent' => 'appearance',
284 'id' => 'userswp',
285 'title' => __( 'UsersWP', 'userswp' ),
286 'href' => admin_url( 'admin.php?page=userswp' )
287 ) );
288 }
289 }
290 }