mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 10:46:11 +09:00
- added text-type filters;
- added limitation for select-type filters for getting only exists options; - added fixes for member directory styles;
This commit is contained in:
@@ -107,7 +107,7 @@ body #content .um-directory a {
|
||||
width: 100%;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
background: none;
|
||||
z-index: 2; }
|
||||
.um-directory .um-members-overlay .um-ajax-loading {
|
||||
-webkit-transition: 0.1s opacity;
|
||||
@@ -144,6 +144,8 @@ body #content .um-directory a {
|
||||
align-items: stretch;
|
||||
flex-wrap: nowrap;
|
||||
width: 100%; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-filters-bar {
|
||||
padding: 0 0 10px 0; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row:not(.um-member-directory-filters-bar) {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -172,9 +174,13 @@ body #content .um-directory a {
|
||||
margin: 0 5px 0 0; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label .um-search-line {
|
||||
-webkit-appearance: textfield;
|
||||
width: 100%; }
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line .um-do-search {
|
||||
min-width: 15%; }
|
||||
min-width: 15%;
|
||||
width: auto; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -279,6 +285,8 @@ body #content .um-directory a {
|
||||
width: 100% !important; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter .um-s1 {
|
||||
width: 100%; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-text-filter-type input {
|
||||
width: 100%; }
|
||||
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type {
|
||||
flex-direction: column;
|
||||
align-items: stretch; }
|
||||
@@ -595,7 +603,7 @@ body #content .um-directory a {
|
||||
width: 100%;
|
||||
padding: 15px;
|
||||
margin: 0;
|
||||
background: none;
|
||||
background: #fff;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box; }
|
||||
@@ -651,6 +659,8 @@ body #content .um-directory a {
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box; }
|
||||
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card.no-photo {
|
||||
width: 100%; }
|
||||
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -803,6 +813,12 @@ body #content .um-directory a {
|
||||
font-size: 28px;
|
||||
height: 28px;
|
||||
line-height: 28px; }
|
||||
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo.no-reveal .um-member-card-footer-buttons {
|
||||
width: 100%; }
|
||||
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo:not(.no-reveal) .um-member-card-footer-buttons {
|
||||
width: calc( 100% - 30px); }
|
||||
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons {
|
||||
width: calc( 100% - 125px); }
|
||||
.um-directory .um-members-wrapper .um-members .um-members-none {
|
||||
text-align: center;
|
||||
font-size: 18px; }
|
||||
@@ -918,6 +934,8 @@ body #content .um-directory a {
|
||||
margin: 0 0 5px 0; }
|
||||
.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper a.um-button {
|
||||
width: 100% !important; }
|
||||
.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons {
|
||||
width: calc( 100% - 70px); }
|
||||
.um-directory.uimob340 .um-members-pagination-box .um-members-pagi {
|
||||
display: none; }
|
||||
.um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line {
|
||||
@@ -954,6 +972,8 @@ body #content .um-directory a {
|
||||
margin: 0 10px 0 0; }
|
||||
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
|
||||
margin: 0 10px 5px 0; }
|
||||
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons {
|
||||
width: calc( 100% - 90px); }
|
||||
.um-directory.uimob500 .um-members-pagination-box .um-members-pagi {
|
||||
display: none; }
|
||||
.um-directory.uimob800 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line {
|
||||
@@ -983,6 +1003,8 @@ body #content .um-directory a {
|
||||
margin: 0 10px 0 0; }
|
||||
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
|
||||
margin: 0 10px 5px 0; }
|
||||
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons {
|
||||
width: calc( 100% - 100px); }
|
||||
.um-directory.uimob960 .um-member-directory-header .um-search {
|
||||
grid-template-columns: repeat(2, 1fr); }
|
||||
.um-directory.uimob960 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer {
|
||||
|
||||
@@ -126,6 +126,7 @@ div.uimob800 .um-account-side li a.current:hover
|
||||
}
|
||||
|
||||
.um .um-form input[type=text],
|
||||
.um .um-form input[type=search],
|
||||
.um .um-form input[type=tel],
|
||||
.um .um-form input[type=number],
|
||||
.um .um-form input[type=password],
|
||||
@@ -145,6 +146,7 @@ div.uimob800 .um-account-side li a.current:hover
|
||||
}
|
||||
|
||||
.um .um-form input[type=text]:focus,
|
||||
.um .um-form input[type=search]:focus,
|
||||
.um .um-form input[type=tel]:focus,
|
||||
.um .um-form input[type=number]:focus,
|
||||
.um .um-form input[type=password]:focus,
|
||||
@@ -155,6 +157,7 @@ div.uimob800 .um-account-side li a.current:hover
|
||||
}
|
||||
|
||||
.um .um-form input[type=text],
|
||||
.um .um-form input[type=search],
|
||||
.um .um-form input[type=tel],
|
||||
.um .um-form input[type=number],
|
||||
.um .um-form input[type=password],
|
||||
@@ -166,6 +169,7 @@ div.uimob800 .um-account-side li a.current:hover
|
||||
}
|
||||
|
||||
.um .um-form input[type=text]:focus,
|
||||
.um .um-form input[type=search]:focus,
|
||||
.um .um-form input[type=tel]:focus,
|
||||
.um .um-form input[type=number]:focus,
|
||||
.um .um-form input[type=password]:focus,
|
||||
@@ -174,6 +178,7 @@ div.uimob800 .um-account-side li a.current:hover
|
||||
}
|
||||
|
||||
.um .um-form input[type=text],
|
||||
.um .um-form input[type=search],
|
||||
.um .um-form input[type=tel],
|
||||
.um .um-form input[type=password],
|
||||
.um .um-form textarea
|
||||
|
||||
@@ -391,6 +391,7 @@ p.um-notice.warning a {
|
||||
}
|
||||
|
||||
.um-form input[type=text],
|
||||
.um-form input[type=search],
|
||||
.um-form input[type=tel],
|
||||
.um-form input[type=number],
|
||||
.um-form input[type=password] {
|
||||
@@ -418,6 +419,7 @@ p.um-notice.warning a {
|
||||
}
|
||||
|
||||
.um-form input[type=text]:focus,
|
||||
.um-form input[type=search]:focus,
|
||||
.um-form input[type=tel]:focus,
|
||||
.um-form input[type=number]:focus,
|
||||
.um-form input[type=password]:focus,
|
||||
|
||||
+116
-7
@@ -216,12 +216,18 @@ function um_ajax_get_members( directory, args ) {
|
||||
if ( typeof value_from != 'undefined' || typeof value_to != 'undefined' ) {
|
||||
request[ filter_name ] = [ value_from, value_to ];
|
||||
}
|
||||
} else {
|
||||
} else if ( filter.find( 'select' ).length ) {
|
||||
var filter_name = filter.find('select').attr('name');
|
||||
var value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
if ( typeof value != 'undefined' ) {
|
||||
request[ filter_name ] = value.split( '||' );
|
||||
}
|
||||
} else {
|
||||
var filter_name = filter.find('input[type="text"]').attr('name');
|
||||
var value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
if ( typeof value != 'undefined' ) {
|
||||
request[ filter_name ] = value;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -274,7 +280,9 @@ function um_build_template( directory, data ) {
|
||||
|
||||
var header_template = wp.template( 'um-members-header' );
|
||||
directory.find('.um-members-intro').remove();
|
||||
directory.find('.um-members-wrapper').prepend( header_template( data ) );
|
||||
if ( typeof data.is_search != 'undefined' && data.is_search ) {
|
||||
directory.find('.um-members-wrapper').prepend( header_template( data ) );
|
||||
}
|
||||
|
||||
directory.addClass('um-loaded');
|
||||
|
||||
@@ -402,6 +410,21 @@ function um_get_filters_data( directory ) {
|
||||
filters_data.push( {'name':filter_name, 'label':filter_title, 'value_label':filter_value_title, 'value':filter_value[ i ], 'type':filter_type} );
|
||||
});
|
||||
|
||||
} else if( filter.find('input[type="text"]').length ) {
|
||||
|
||||
filter_type = 'text';
|
||||
filter_name = filter.find('input[type="text"]').attr('name');
|
||||
filter_title = filter.find('input[type="text"]').attr('placeholder');
|
||||
|
||||
var filter_value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
if ( typeof filter_value == 'undefined' ) {
|
||||
filter_value = '';
|
||||
}
|
||||
|
||||
if ( filter_value != '' ) {
|
||||
filters_data.push( {'name':filter_name, 'label':filter_title, 'value_label':filter_value, 'value':filter_value, 'type':filter_type} );
|
||||
}
|
||||
|
||||
} else if( filter.find('div.ui-slider').length ) {
|
||||
filter_type = 'slider';
|
||||
|
||||
@@ -433,7 +456,7 @@ function um_change_tag( directory ) {
|
||||
directory.find('.um-members-filter-tag').remove();
|
||||
|
||||
var filtered_line = directory.find('.um-filtered-line');
|
||||
if ( filtered_line.length ){
|
||||
if ( filtered_line.length ) {
|
||||
var filters_template = wp.template( 'um-members-filtered-line' );
|
||||
filtered_line.prepend( filters_template( {'filters': filters_data} ) );
|
||||
|
||||
@@ -865,20 +888,101 @@ jQuery(document.body).ready( function() {
|
||||
});
|
||||
|
||||
|
||||
jQuery( document.body ).on( 'click', '.um-directory .um-members-filter-remove', function() {
|
||||
jQuery( document.body ).on( 'blur', '.um-directory .um-search-filter input[type="text"]', function() {
|
||||
var directory = jQuery(this).parents('.um-directory');
|
||||
|
||||
if ( um_is_directory_busy( directory ) || ! directory ) {
|
||||
if ( um_is_directory_busy( directory ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var current_value = jQuery(this).val();
|
||||
var filter_name = jQuery(this).prop('name');
|
||||
var url_value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
|
||||
if ( typeof url_value == 'undefined' ) {
|
||||
url_value = '';
|
||||
}
|
||||
|
||||
if ( current_value === url_value ) {
|
||||
return;
|
||||
}
|
||||
|
||||
um_members_show_preloader( directory );
|
||||
um_set_url_from_data( directory, 'filter_' + filter_name, current_value );
|
||||
|
||||
//set 1st page after filtration
|
||||
directory.data( 'page', 1 );
|
||||
um_set_url_from_data( directory, 'page', '' );
|
||||
|
||||
um_ajax_get_members( directory );
|
||||
|
||||
um_change_tag( directory );
|
||||
|
||||
directory.data( 'searched', 1 );
|
||||
directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false );
|
||||
directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' );
|
||||
});
|
||||
|
||||
|
||||
//make search on Enter click
|
||||
jQuery( document.body ).on( 'keypress', '.um-directory .um-search-filter input[type="text"]', function(e) {
|
||||
if ( e.which === 13 ) {
|
||||
var directory = jQuery(this).parents('.um-directory');
|
||||
|
||||
if ( um_is_directory_busy( directory ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var current_value = jQuery(this).val();
|
||||
var filter_name = jQuery(this).prop('name');
|
||||
var url_value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
|
||||
if ( typeof url_value == 'undefined' ) {
|
||||
url_value = '';
|
||||
}
|
||||
|
||||
if ( current_value === url_value ) {
|
||||
return;
|
||||
}
|
||||
|
||||
um_members_show_preloader( directory );
|
||||
um_set_url_from_data( directory, 'filter_' + filter_name, current_value );
|
||||
|
||||
//set 1st page after filtration
|
||||
directory.data( 'page', 1 );
|
||||
um_set_url_from_data( directory, 'page', '' );
|
||||
|
||||
um_ajax_get_members( directory );
|
||||
|
||||
um_change_tag( directory );
|
||||
|
||||
directory.data( 'searched', 1 );
|
||||
directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false );
|
||||
directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
jQuery( document.body ).on( 'click', '.um-directory .um-members-filter-remove', function() {
|
||||
var directory = jQuery(this).parents('.um-directory');
|
||||
|
||||
if ( um_is_directory_busy(directory) || ! directory ) {
|
||||
return;
|
||||
}
|
||||
|
||||
um_members_show_preloader(directory);
|
||||
|
||||
var removeItem = jQuery(this).data('value');
|
||||
var filter_name = jQuery(this).data('name');
|
||||
|
||||
var type = jQuery(this).data('type');
|
||||
if ( type === 'select' ) {
|
||||
if ( type === 'text' ) {
|
||||
um_set_url_from_data( directory, 'filter_' + filter_name,'' );
|
||||
|
||||
jQuery( '.um-search-filter input[name="' + filter_name + '"]' ).val('');
|
||||
|
||||
} else if ( type === 'select' ) {
|
||||
|
||||
var current_value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
if ( typeof current_value == 'undefined' ) {
|
||||
@@ -967,7 +1071,12 @@ jQuery(document.body).ready( function() {
|
||||
var filter_name = jQuery(this).data('name');
|
||||
|
||||
var type = jQuery(this).data('type');
|
||||
if ( type === 'select' ) {
|
||||
if ( type === 'text' ) {
|
||||
um_set_url_from_data( directory, 'filter_' + filter_name,'' );
|
||||
|
||||
jQuery( '.um-search-filter input[name="' + filter_name + '"]' ).val('');
|
||||
|
||||
} else if ( type === 'select' ) {
|
||||
|
||||
var current_value = um_get_data_for_directory( directory, 'filter_' + filter_name );
|
||||
if ( typeof current_value == 'undefined' ) {
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -89,7 +89,7 @@ body
|
||||
width: 100%
|
||||
top: 0
|
||||
bottom: 0
|
||||
background: rgba(255, 255, 255, 0.8)
|
||||
background: none
|
||||
z-index: 2
|
||||
.um-ajax-loading
|
||||
+transition(.1s,opacity)
|
||||
@@ -120,6 +120,8 @@ body
|
||||
+flex( column, flex-start, stretch, nowrap )
|
||||
width: 100%
|
||||
.um-member-directory-header-row
|
||||
&.um-member-directory-filters-bar
|
||||
padding: 0 0 10px 0
|
||||
&:not(.um-member-directory-filters-bar)
|
||||
+flex( row, flex-start, baseline, nowrap )
|
||||
margin: 0 0 10px 0
|
||||
@@ -141,8 +143,10 @@ body
|
||||
.um-search-line
|
||||
-webkit-appearance: textfield
|
||||
width: 100%
|
||||
+border-box
|
||||
.um-do-search
|
||||
min-width: 15%
|
||||
width: auto
|
||||
.um-member-directory-nav-line
|
||||
+flex( row, space-between, center, nowrap )
|
||||
width: 100%
|
||||
@@ -236,6 +240,9 @@ body
|
||||
|
||||
.um-s1
|
||||
width: 100%
|
||||
&.um-text-filter-type
|
||||
input
|
||||
width: 100%
|
||||
&.um-slider-filter-type
|
||||
flex-direction: column
|
||||
align-items: stretch
|
||||
@@ -560,7 +567,7 @@ body
|
||||
width: 100%
|
||||
padding: 15px
|
||||
margin: 0
|
||||
background: none
|
||||
background: #fff
|
||||
+border-box
|
||||
.um-member-status
|
||||
display: none
|
||||
@@ -605,6 +612,8 @@ body
|
||||
padding: 0
|
||||
margin: 0
|
||||
+border-box
|
||||
&.no-photo
|
||||
width: 100%
|
||||
|
||||
.um-member-card-content
|
||||
+flex( column, flex-start, stretch, nowrap )
|
||||
@@ -733,6 +742,16 @@ body
|
||||
font-size: 28px
|
||||
height: 28px
|
||||
line-height: 28px
|
||||
&.no-photo.no-reveal
|
||||
.um-member-card-footer-buttons
|
||||
width: 100%
|
||||
&.no-photo:not(.no-reveal)
|
||||
.um-member-card-footer-buttons
|
||||
width: calc( 100% - 30px )
|
||||
&.no-reveal:not(.no-photo)
|
||||
.um-member-card-footer-buttons
|
||||
width: calc( 100% - 125px )
|
||||
|
||||
|
||||
|
||||
.um-members-none
|
||||
@@ -873,6 +892,9 @@ body
|
||||
margin: 0 0 5px 0
|
||||
a.um-button
|
||||
width: 100% !important
|
||||
&.no-reveal:not(.no-photo)
|
||||
.um-member-card-footer-buttons
|
||||
width: calc( 100% - 70px )
|
||||
.um-members-pagination-box
|
||||
.um-members-pagi
|
||||
display: none
|
||||
@@ -921,6 +943,9 @@ body
|
||||
margin: 0 10px 0 0
|
||||
.um-members-list-footer-button-wrapper
|
||||
margin: 0 10px 5px 0
|
||||
&.no-reveal:not(.no-photo)
|
||||
.um-member-card-footer-buttons
|
||||
width: calc( 100% - 90px )
|
||||
.um-members-pagination-box
|
||||
.um-members-pagi
|
||||
display: none
|
||||
@@ -961,6 +986,9 @@ body
|
||||
margin: 0 10px 0 0
|
||||
.um-members-list-footer-button-wrapper
|
||||
margin: 0 10px 5px 0
|
||||
&.no-reveal:not(.no-photo)
|
||||
.um-member-card-footer-buttons
|
||||
width: calc( 100% - 100px )
|
||||
&.uimob960
|
||||
.um-member-directory-header
|
||||
.um-search
|
||||
|
||||
@@ -87,6 +87,9 @@ if ( ! empty( $member_directories ) && ! is_wp_error( $member_directories ) ) {
|
||||
update_post_meta( $id, '_um_roles_can_filter', $can_search_roles );
|
||||
update_post_meta( $id, '_um_search_fields', $filter_fields );
|
||||
update_post_meta( $id, '_um_search_fields_old', $search_fields_old );
|
||||
|
||||
update_post_meta( $id, '_um_filters_expanded', 1 );
|
||||
update_post_meta( $id, '_um_filters_is_collapsible', 0 );
|
||||
} else {
|
||||
update_post_meta( $id, '_um_search', 0 );
|
||||
update_post_meta( $id, '_um_filters', 0 );
|
||||
|
||||
@@ -97,10 +97,18 @@ global $post_id; ?>
|
||||
'id' => '_um_filters_expanded',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Expand the filter bar by default', 'ultimate-member' ),
|
||||
'tooltip' => __( 'If turned on, filters bar will be visible after a page loading and can be collapsed', 'ultimate-member' ),
|
||||
'tooltip' => __( 'If turned on, filters bar will be visible after a page loading', 'ultimate-member' ),
|
||||
'value' => UM()->query()->get_meta_value( '_um_filters_expanded' ),
|
||||
'conditional' => array( '_um_filters', '=', 1 )
|
||||
),
|
||||
array(
|
||||
'id' => '_um_filters_is_collapsible',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Can filter bar be collapsed', 'ultimate-member' ),
|
||||
'tooltip' => __( 'If turned on, filters bar can be collapsed after a page loading', 'ultimate-member' ),
|
||||
'value' => UM()->query()->get_meta_value( '_um_filters_is_collapsible' ),
|
||||
'conditional' => array( '_um_filters_expanded', '=', 1 )
|
||||
),
|
||||
array(
|
||||
'id' => '_um_search_filters',
|
||||
'type' => 'md_default_filters',
|
||||
|
||||
@@ -169,6 +169,7 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
'_um_roles_can_filter' => array(),
|
||||
'_um_search_fields' => array(),
|
||||
'_um_filters_expanded' => 0,
|
||||
'_um_filters_is_collapsible' => 1,
|
||||
'_um_search_filters' => array(),
|
||||
|
||||
'_um_must_search' => 0,
|
||||
|
||||
@@ -51,12 +51,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
var $filter_supported_fields = array();
|
||||
|
||||
|
||||
var $filter_types = array(
|
||||
// 'select',
|
||||
// 'slider',
|
||||
// 'datepicker',
|
||||
// 'timepicker',
|
||||
);
|
||||
var $filter_types = array();
|
||||
|
||||
|
||||
var $core_search_fields = array(
|
||||
@@ -86,6 +81,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
var $avatar_size;
|
||||
|
||||
|
||||
/**
|
||||
* @var bool Searching marker
|
||||
*/
|
||||
var $is_search = false;
|
||||
|
||||
|
||||
/**
|
||||
* Member_Directory constructor.
|
||||
*/
|
||||
@@ -257,19 +258,31 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
|
||||
// Filters
|
||||
$this->filter_fields = array(
|
||||
'country' => __( 'Country', 'ultimate-member' ),
|
||||
'gender' => __( 'Gender', 'ultimate-member' ),
|
||||
'languages' => __( 'Languages', 'ultimate-member' ),
|
||||
'role' => __( 'Roles', 'ultimate-member' ),
|
||||
'birth_date' => __( 'Age', 'ultimate-member' ),
|
||||
'last_login' => __( 'Last Login', 'ultimate-member' ),
|
||||
'user_registered' => __( 'User Registered', 'ultimate-member' ),
|
||||
'country' => __( 'Country', 'ultimate-member' ),
|
||||
'gender' => __( 'Gender', 'ultimate-member' ),
|
||||
'languages' => __( 'Languages', 'ultimate-member' ),
|
||||
'role' => __( 'Roles', 'ultimate-member' ),
|
||||
'birth_date' => __( 'Age', 'ultimate-member' ),
|
||||
'last_login' => __( 'Last Login', 'ultimate-member' ),
|
||||
'user_registered' => __( 'User Registered', 'ultimate-member' ),
|
||||
'first_name' => __( 'First Name', 'ultimate-member' ),
|
||||
'last_name' => __( 'Last Name', 'ultimate-member' ),
|
||||
'nickname' => __( 'Nickname', 'ultimate-member' ),
|
||||
'secondary_user_email' => __( 'Secondary E-mail Address', 'ultimate-member' ),
|
||||
'description' => __( 'Biography', 'ultimate-member' ),
|
||||
'phone_number' => __( 'Phone Number', 'ultimate-member' ),
|
||||
'mobile_number' => __( 'Mobile Number', 'ultimate-member' ),
|
||||
);
|
||||
|
||||
$this->filter_supported_fields = apply_filters( 'um_members_directory_custom_field_types_supported_filter', array( 'date', 'time', 'select', 'multiselect', 'radio', 'checkbox', 'rating' ) );
|
||||
$this->filter_supported_fields = apply_filters( 'um_members_directory_custom_field_types_supported_filter', array( 'date', 'time', 'select', 'multiselect', 'radio', 'checkbox', 'rating', 'text', 'textarea' ) );
|
||||
|
||||
if ( ! empty( UM()->builtin()->saved_fields ) ) {
|
||||
foreach ( UM()->builtin()->saved_fields as $key => $data ) {
|
||||
|
||||
if ( $key == '_um_last_login' ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isset( $data['type'] ) && in_array( $data['type'], $this->filter_supported_fields ) ) {
|
||||
if ( isset( $data['title'] ) && array_search( $data['title'], $this->filter_fields ) !== false ) {
|
||||
$data['title'] = $data['title'] . ' (' . $key . ')';
|
||||
@@ -296,13 +309,20 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
*/
|
||||
function init_filter_types() {
|
||||
$this->filter_types = apply_filters( 'um_members_directory_filter_types', array(
|
||||
'country' => 'select',
|
||||
'gender' => 'select',
|
||||
'languages' => 'select',
|
||||
'role' => 'select',
|
||||
'birth_date' => 'slider',
|
||||
'last_login' => 'datepicker',
|
||||
'user_registered' => 'datepicker',
|
||||
'country' => 'select',
|
||||
'gender' => 'select',
|
||||
'languages' => 'select',
|
||||
'role' => 'select',
|
||||
'birth_date' => 'slider',
|
||||
'last_login' => 'datepicker',
|
||||
'user_registered' => 'datepicker',
|
||||
'first_name' => 'text',
|
||||
'last_name' => 'text',
|
||||
'nickname' => 'text',
|
||||
'secondary_user_email' => 'text',
|
||||
'description' => 'text',
|
||||
'phone_number' => 'text',
|
||||
'mobile_number' => 'text',
|
||||
) );
|
||||
|
||||
$fields = UM()->builtin()->all_user_fields;
|
||||
@@ -316,6 +336,10 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
default:
|
||||
$value = apply_filters( 'um_custom_field_filter_type', 'select', $fields[ $key ] );
|
||||
break;
|
||||
case 'text':
|
||||
case 'textarea':
|
||||
$value = 'text';
|
||||
break;
|
||||
case 'date':
|
||||
$value = 'datepicker';
|
||||
break;
|
||||
@@ -426,11 +450,56 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
|
||||
break;
|
||||
}
|
||||
case 'text': {
|
||||
$filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? $_GET[ 'filter_' . $filter . '_' . $unique_hash ] : ''; ?>
|
||||
|
||||
<input type="text" autocomplete="off" id="<?php echo $filter; ?>" name="<?php echo $filter; ?>"
|
||||
placeholder="<?php esc_attr_e( stripslashes( $attrs['label'] ), 'ultimate-member' ); ?>"
|
||||
value="<?php echo esc_attr( $filter_from_url ) ?>" class="um-form-field" />
|
||||
|
||||
<?php break;
|
||||
}
|
||||
case 'select': {
|
||||
|
||||
// getting value from GET line
|
||||
$filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? explode( '||', sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ) : array();
|
||||
|
||||
// new
|
||||
global $wpdb;
|
||||
|
||||
if ( $attrs['metakey'] != 'role_select' ) {
|
||||
$values_array = $wpdb->get_col(
|
||||
$wpdb->prepare(
|
||||
"SELECT DISTINCT meta_value
|
||||
FROM $wpdb->usermeta
|
||||
WHERE meta_key = %s AND
|
||||
meta_value != ''",
|
||||
$attrs['metakey']
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$users_roles = count_users();
|
||||
$values_array = ( ! empty( $users_roles['avail_roles'] ) && is_array( $users_roles['avail_roles'] ) ) ? array_keys( array_filter( $users_roles['avail_roles'] ) ) : array();
|
||||
}
|
||||
|
||||
if ( ! empty( $values_array ) && in_array( $attrs['type'], array( 'select','multiselect', 'checkbox', 'radio' ) ) ) {
|
||||
$values_array = array_map( 'maybe_unserialize', $values_array );
|
||||
$temp_values = array();
|
||||
foreach ( $values_array as $values ) {
|
||||
if ( is_array( $values ) ) {
|
||||
$temp_values = array_merge( $temp_values, $values );
|
||||
} else {
|
||||
$temp_values[] = $values;
|
||||
}
|
||||
}
|
||||
$values_array = array_unique( $temp_values );
|
||||
}
|
||||
|
||||
if ( empty( $values_array ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// old
|
||||
if ( isset( $attrs['metakey'] ) && strstr( $attrs['metakey'], 'role_' ) ) {
|
||||
$shortcode_roles = get_post_meta( $directory_data['form_id'], '_um_roles', true );
|
||||
$um_roles = UM()->roles()->get_roles( false );
|
||||
@@ -446,58 +515,64 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
$custom_dropdown = '';
|
||||
if ( ! empty( $attrs['custom_dropdown_options_source'] ) ) {
|
||||
$attrs['custom'] = true;
|
||||
$attrs['options'] = UM()->fields()->get_options_from_callback( $attrs, $attrs['type'] );
|
||||
$custom_dropdown = ' data-um-ajax-source="' . esc_attr( $attrs['custom_dropdown_options_source'] ) . '"';
|
||||
}
|
||||
|
||||
if ( $attrs['metakey'] != 'role_select' ) {
|
||||
$attrs['options'] = array_intersect( $attrs['options'], $values_array );
|
||||
} else {
|
||||
$attrs['options'] = array_intersect_key( $attrs['options'], array_flip( $values_array ) );
|
||||
}
|
||||
|
||||
$attrs['options'] = apply_filters( 'um_member_directory_filter_select_options', $attrs['options'], $values_array, $attrs );
|
||||
|
||||
if ( empty( $attrs['options'] ) || ! is_array( $attrs['options'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( isset( $attrs['label'] ) ) {
|
||||
$attrs['label'] = strip_tags( $attrs['label'] );
|
||||
}
|
||||
|
||||
if ( isset( $attrs['options'] ) && is_array( $attrs['options'] ) ) {
|
||||
asort( $attrs['options'] );
|
||||
}
|
||||
asort( $attrs['options'] ); ?>
|
||||
|
||||
$custom_dropdown = ! empty( $attrs['custom_dropdown_options_source'] ) ? ' data-um-ajax-source="' . $attrs['custom_dropdown_options_source'] . '"' : '';
|
||||
<select class="um-s1" id="<?php echo $filter; ?>" name="<?php echo $filter; ?>"
|
||||
data-placeholder="<?php esc_attr_e( stripslashes( $attrs['label'] ), 'ultimate-member' ); ?>"
|
||||
<?php echo $custom_dropdown; ?>>
|
||||
|
||||
if ( ! empty( $attrs['options'] ) || ! empty( $custom_dropdown ) ) { ?>
|
||||
<option></option>
|
||||
|
||||
<select class="um-s1" id="<?php echo $filter; ?>" name="<?php echo $filter; ?>"
|
||||
data-placeholder="<?php esc_attr_e( stripslashes( $attrs['label'] ), 'ultimate-member' ); ?>"
|
||||
<?php echo $custom_dropdown; ?>>
|
||||
<?php if ( ! empty( $attrs['options'] ) ) {
|
||||
foreach ( $attrs['options'] as $k => $v ) {
|
||||
|
||||
<option></option>
|
||||
$v = stripslashes( $v );
|
||||
|
||||
<?php if ( ! empty( $attrs['options'] ) ) {
|
||||
foreach ( $attrs['options'] as $k => $v ) {
|
||||
$opt = $v;
|
||||
|
||||
$v = stripslashes( $v );
|
||||
if ( strstr( $filter, 'role_' ) ) {
|
||||
$opt = $k;
|
||||
}
|
||||
|
||||
$opt = $v;
|
||||
if ( isset( $attrs['custom'] ) ) {
|
||||
$opt = $k;
|
||||
} ?>
|
||||
|
||||
if ( strstr( $filter, 'role_' ) ) {
|
||||
$opt = $k;
|
||||
}
|
||||
<option value="<?php echo esc_attr( $opt ); ?>" data-value_label="<?php esc_attr_e( $v, 'ultimate-member' ); ?>"
|
||||
<?php disabled( ! empty( $filter_from_url ) && in_array( $opt, $filter_from_url ) ) ?>
|
||||
<?php selected( $opt == $default_value ) ?>>
|
||||
<?php _e( $v, 'ultimate-member' ); ?>
|
||||
</option>
|
||||
|
||||
if ( isset( $attrs['custom'] ) ) {
|
||||
$opt = $k;
|
||||
} ?>
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
<option value="<?php echo esc_attr( $opt ); ?>" data-value_label="<?php esc_attr_e( $v, 'ultimate-member' ); ?>"
|
||||
<?php disabled( ! empty( $filter_from_url ) && in_array( $opt, $filter_from_url ) ) ?>
|
||||
<?php selected( $opt == $default_value ) ?>>
|
||||
<?php _e( $v, 'ultimate-member' ); ?>
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<?php }
|
||||
} ?>
|
||||
|
||||
</select>
|
||||
|
||||
<?php }
|
||||
|
||||
break;
|
||||
<?php break;
|
||||
}
|
||||
case 'slider': {
|
||||
$range = $this->slider_filters_range( $filter, $directory_data );
|
||||
@@ -1164,6 +1239,8 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
$meta_query = apply_filters( 'um_member_directory_general_search_meta_query', $meta_query, $_POST['search'] );
|
||||
|
||||
$this->query_args['meta_query'][] = $meta_query;
|
||||
|
||||
$this->is_search = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1244,6 +1321,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->is_search = true;
|
||||
foreach ( $filter_query as $field => $value ) {
|
||||
|
||||
switch ( $field ) {
|
||||
@@ -1282,11 +1360,30 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
$field_query = apply_filters( "um_query_args_{$field}_{$filter_type}__filter", false, $field, $value, $filter_type );
|
||||
|
||||
break;
|
||||
case 'text':
|
||||
|
||||
$value = stripslashes( $value );
|
||||
|
||||
$field_query = array(
|
||||
'relation' => 'OR',
|
||||
array(
|
||||
'key' => $field,
|
||||
'value' => trim( $value ),
|
||||
'compare' => 'LIKE',
|
||||
),
|
||||
);
|
||||
|
||||
$this->custom_filters_in_query[ $field ] = $value;
|
||||
|
||||
break;
|
||||
|
||||
case 'select':
|
||||
if ( is_array( $value ) ) {
|
||||
$field_query = array( 'relation' => 'OR' );
|
||||
|
||||
foreach ( $value as $single_val ) {
|
||||
$single_val = stripslashes( $single_val );
|
||||
|
||||
$arr_meta_query = array(
|
||||
array(
|
||||
'key' => $field,
|
||||
@@ -1733,7 +1830,17 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
$current_page = ! empty( $_POST['page'] ) ? $_POST['page'] : 1;
|
||||
|
||||
$total_users = ( ! empty( $directory_data['max_users'] ) && $directory_data['max_users'] <= $result->total_users ) ? $directory_data['max_users'] : $result->total_users;
|
||||
$total_pages = ceil( $total_users / $directory_data['profiles_per_page'] );
|
||||
|
||||
// number of profiles for mobile
|
||||
$profiles_per_page = $directory_data['profiles_per_page'];
|
||||
if ( UM()->mobile()->isMobile() && isset( $directory_data['profiles_per_page_mobile'] ) ) {
|
||||
$profiles_per_page = $directory_data['profiles_per_page_mobile'];
|
||||
}
|
||||
|
||||
$total_pages = 1;
|
||||
if ( ! empty( $profiles_per_page ) ) {
|
||||
$total_pages = ceil( $total_users / $profiles_per_page );
|
||||
}
|
||||
|
||||
if ( ! empty( $total_pages ) ) {
|
||||
$index1 = 0 - ( $current_page - 2 ) + 1;
|
||||
@@ -2135,7 +2242,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
um_reset_user();
|
||||
// end of user card
|
||||
|
||||
wp_send_json_success( array( 'pagination' => $pagination_data, 'users' => $users ) );
|
||||
wp_send_json_success( array( 'pagination' => $pagination_data, 'users' => $users, 'is_search' => $this->is_search ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -116,24 +116,22 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="um-member-card-footer">
|
||||
<div class="um-member-card-footer <?php echo ! $profile_photo ? 'no-photo' : '' ?> <?php if ( $show_userinfo && $userinfo_animate ) { ?><# if ( ! $show_block ) { #>no-reveal<# } #><?php } ?>">
|
||||
|
||||
<div class="um-member-card-footer-buttons">
|
||||
<?php do_action( 'um_members_list_just_after_actions_tmpl', $args ); ?>
|
||||
</div>
|
||||
|
||||
<?php if ( $show_userinfo ) { ?>
|
||||
<?php if ( $show_userinfo && $userinfo_animate ) { ?>
|
||||
<# if ( $show_block ) { #>
|
||||
<?php if ( $userinfo_animate ) { ?>
|
||||
<div class="um-member-card-reveal-buttons">
|
||||
<div class="um-member-more">
|
||||
<a href="javascript:void(0);"><i class="um-faicon-angle-down"></i></a>
|
||||
</div>
|
||||
<div class="um-member-less">
|
||||
<a href="javascript:void(0);"><i class="um-faicon-angle-up"></i></a>
|
||||
</div>
|
||||
<div class="um-member-card-reveal-buttons">
|
||||
<div class="um-member-more">
|
||||
<a href="javascript:void(0);"><i class="um-faicon-angle-down"></i></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="um-member-less">
|
||||
<a href="javascript:void(0);"><i class="um-faicon-angle-up"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<# } #>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
@@ -113,7 +113,11 @@ if ( ! empty( $args['enable_sorting'] ) && ! empty( $sorting_options ) && count(
|
||||
$classes .= ' um-member-with-sorting';
|
||||
}
|
||||
|
||||
$filters_collapsible = true;
|
||||
$filters_expanded = ! empty( $args['filters_expanded'] ) ? true : false;
|
||||
if ( $filters_expanded ) {
|
||||
$filters_collapsible = ! empty( $args['filters_is_collapsible'] ) ? true : false;
|
||||
}
|
||||
|
||||
//send $args variable to the templates
|
||||
$args['args'] = $args;
|
||||
@@ -183,7 +187,7 @@ if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $sea
|
||||
data-sorting="<?php echo esc_attr( $sort_from_url ) ?>">
|
||||
<div class="um-members-overlay"><div class="um-ajax-loading"></div></div>
|
||||
|
||||
<div class="um-member-directory-header">
|
||||
<div class="um-member-directory-header um-form">
|
||||
<?php if ( $search && $show_search ) { ?>
|
||||
<div class="um-member-directory-header-row um-member-directory-search-row">
|
||||
<div class="um-member-directory-search-line">
|
||||
@@ -191,7 +195,7 @@ if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $sea
|
||||
<span><?php _e( 'Search:', 'ultimate-member' ); ?></span>
|
||||
<input type="search" class="um-search-line" placeholder="<?php esc_attr_e( 'Search', 'ultimate-member' ) ?>" value="<?php echo esc_attr( $search_from_url ) ?>" aria-label="<?php esc_attr_e( 'Search', 'ultimate-member' ) ?>" speech />
|
||||
</label>
|
||||
<input type="button" class="um-do-search" value="<?php esc_attr_e( 'Search', 'ultimate-member' ); ?>" />
|
||||
<input type="button" class="um-do-search um-button" value="<?php esc_attr_e( 'Search', 'ultimate-member' ); ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<?php }
|
||||
@@ -245,7 +249,7 @@ if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $sea
|
||||
|
||||
<?php }
|
||||
|
||||
if ( $filters && $show_filters && count( $search_filters ) ) { ?>
|
||||
if ( $filters && $show_filters && count( $search_filters ) && $filters_collapsible ) { ?>
|
||||
<span class="um-member-directory-filters">
|
||||
<span class="um-member-directory-filters-a<?php if ( $filters_expanded ) { ?> um-member-directory-filters-visible<?php } ?>">
|
||||
<a href="javascript:void(0);">
|
||||
|
||||
Reference in New Issue
Block a user