- member directory code merge;

This commit is contained in:
nikitasinelnikov
2019-08-14 10:54:16 +03:00
parent 7262ec773c
commit 4a5863db51
25 changed files with 4917 additions and 475 deletions
+1311
View File
File diff suppressed because it is too large Load Diff
+549 -1
View File
@@ -370,4 +370,552 @@ a.um-edit-profile-btn:before {content: "\f013"}
a.um-edit-profile-btn {
font-size: 13px;
}
}
.um-member a.um-follow-btn:before {content: "\f234"}
.um-member a.um-unfollow-btn:before {content: "\f235"}
.um-member a.um-friend-btn:before {content: "\f234"}
.um-member a.um-unfriend-btn:before {content: "\f235"}
/* NEW STYLES FOR VIEW TYPE LIST*/
.um-directory .um-member-directory-header {
box-sizing: border-box;
padding: 20px 0;
width: 100%;
}
#content .um-member-directory-header a {
border-bottom: none;
box-shadow: none;
text-decoration: none;
}
#content .um-members-wrapper .um-member-photo a {
text-decoration: none;
box-shadow: none !important;
}
.um-directory .um-member-directory-search-line{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
line-height: 30px;
margin-bottom: 5px;
padding: 0px;
vertical-align: middle;
float: left;
width: 100%;
}
.um-directory .um-member-with-view:not(.um-member-with-sorting) .um-member-directory-search-line,
.um-directory .um-member-with-filters:not(.um-member-with-sorting) .um-member-directory-search-line {
float: left;
width: calc( 100% - 40px );
}
.um-directory .um-member-with-filters.um-member-with-view:not(.um-member-with-sorting) .um-member-directory-search-line {
float: left;
width: calc( 100% - 75px );
}
.um-directory:not(.uimob340):not(.uimob500):not(.uimob800) .um-member-with-sorting .um-member-directory-search-line{
width: 48%;
}
.um-directory .um-member-directory-search-line .um-search-line {
border-radius: 2px 0px 0px 2px;
display: block;
float: left;
line-height: 30px;
vertical-align: middle;
width: calc( 85% );
}
.um-directory.uimob340 .um-member-directory-search-line .um-search-line,
.um-directory.uimob500 .um-member-directory-search-line .um-search-line {
width: calc( 100% - 40px );
}
.um-directory .um-member-directory-search-line .um-do-search {
border-radius: 0px 2px 2px 0px !important;
float: left;
height: 40px;
line-height: 30px;
margin: 0;
padding: 11px 2px !important;
vertical-align: middle;
width: 15%;
}
.um-directory.uimob340 .um-member-directory-search-line .um-do-search,
.um-directory.uimob500 .um-member-directory-search-line .um-do-search {
width: 40px;
}
.um-directory .um-member-directory-search-line .um-do-search i {
margin: 0;
padding: 0;
}
.um-directory .um-member-directory-actions {
float: right;
}
.um-directory .um-member-directory-sorting{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
font-size: 30px;
height: 30px;
line-height: 30px;
position: relative;
vertical-align: middle;
width: 100%;
}
.um-directory .um-member-with-view .um-member-directory-sorting,
.um-directory .um-member-with-filters .um-member-directory-sorting {
float: left;
width: calc( 100% - 40px );
}
.um-directory .um-member-with-filters.um-member-with-view .um-member-directory-sorting {
float: left;
width: calc( 100% - 75px );
}
.um-directory:not(.uimob340):not(.uimob500):not(.uimob800) .um-member-with-search .um-member-directory-sorting{
float: left;
margin-left: 4%;
width: 48%;
}
.um-directory:not(.uimob340):not(.uimob500):not(.uimob800) .um-member-with-search.um-member-with-view .um-member-directory-sorting,
.um-directory:not(.uimob340):not(.uimob500):not(.uimob800) .um-member-with-search.um-member-with-filters .um-member-directory-sorting {
float: left;
width: calc( 48% - 40px );
}
.um-directory:not(.uimob340):not(.uimob500):not(.uimob800) .um-member-with-search.um-member-with-filters.um-member-with-view .um-member-directory-sorting {
float: left;
width: calc( 48% - 75px );
}
.um-member-directory-sorting .select2-container,
.um-search-filter .select2-container {
float:left;
width:100% !important;
}
.um-member-directory-sorting .select2.select2-container .select2-selection .select2-selection__arrow:before {
content:"\f0dc" !important;
font-family: "FontAwesome" !important;
font-style: normal !important;
font-weight: normal !important;
font-variant: normal !important;
text-transform: none !important;
speak: none;
line-height: 36px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.um-member-directory-sorting-a {
padding-top: 5px;
margin-left: 5px;
float: left;
}
.um-member-directory-filters {
float: left;
padding: 5px 10px 5px 0;
vertical-align: middle;
line-height: 30px;
font-size: 30px;
height: 30px;
}
.um-member-directory-view-type {
/*float: left;*/
float: right;
padding: 5px 0;
position: relative;
vertical-align: middle;
font-size: 30px;
height: 30px;
line-height: 30px;
z-index: 1;
}
.um-members-list .um-member {
width:100% !important;
padding: 15px 0;
margin-bottom: 20px;
box-sizing: border-box;
}
.um-members-list .um-member .um-member-photo {
float: left;
padding: 0;
width: 100px;
margin: 27px 15px 0 0;
}
.um-members-list .um-member .um-member-card {
float: left;
padding: 0;
width: calc( 100% - 300px );
margin: 0;
text-align: left;
box-sizing: border-box;
}
.um-members-list .um-member-card-actions {
width: 185px;
float:right;
text-align: right;
padding: 0;
}
.um-members-list .um-member-card-actions a {
min-width: 185px;
box-sizing: border-box;
}
.um-members-list .um-member-card-actions div[class$="stats"] {
text-align: center;
}
div.uimob340 .um-members-list .um-member-card-actions,
div.uimob500 .um-members-list .um-member-card-actions {
min-width: auto;
width: 100%;
float:left;
text-align: center;
}
.um-members-list .um-member-meta-main {
width: 100%;
float:left;
text-align: left;
padding: 0 10px;
box-sizing: border-box;
}
.um-members-list .um-member-meta-main .um-member-connect a {
text-align: center;
}
.um-members-list .um-member-meta-main .um-member-more,
.um-members-list .um-member-meta-main .um-member-meta,
.um-members-list .um-member-meta-main .um-member-less {
float: left;
width: 100%;
}
.um-members-list .um-member-metaline {
clear: both;
text-align: left;
width: 100%;
}
.um-members-list .um-member-metaline span strong,
.um-members-list .um-member-metaline span span {
float: left;
}
.um-members-list .um-members-friend-stats div {
margin-left: 0;
}
.um-members-list .um-member-tagline {
padding-left: 0;
}
.um-members-list .um-member-meta-main {
padding-left: 0;
}
.um-members-list .um-member-meta.no-animate {
padding-top: 0;
margin-top: 0;
}
.um-members-list .um-member-connect {
padding-top: 10px;
}
.um-members-list .um-member-metaline span {
text-align: left;
}
.um-members-wrapper {
width: 100%;
float:left;
margin: 0 0 10px 0;
padding: 0;
position: relative;
height: 300px;
}
.um-directory.um-loaded .um-members-wrapper {
height: auto;
}
.um-members-pagination-box {
width: 100%;
float:left;
margin: 0 0 10px 0;
padding: 0;
}
.um-members-pagi,
.um-members-pagidrop {
width: 100%;
float:left;
margin: 0;
padding: 0;
}
.um-members-overlay {
position: absolute;
width: 100%;
float: left;
top:0;
bottom:0;
background: rgba( 0, 0, 0, 0 );
/*background: rgba( 0, 0, 0, 0.8 );*/
}
@-webkit-keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0);
transform: rotate(0)
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg)
}
}
@keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0);
transform: rotate(0)
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg)
}
}
.um-ajax-loading {
color: #c6c6c6 !important;
-webkit-transition: .1s opacity!important;
-moz-transition: .1s opacity!important;
-ms-transition: .1s opacity!important;
-o-transition: .1s opacity!important;
transition: .1s opacity!important;
-webkit-animation: um-ajax-spinning 1.1s infinite linear;
animation: um-ajax-spinning 1.1s infinite linear;
border-top: .2em solid rgba(198, 198, 198, 0.2);
border-right: .2em solid rgba(198, 198, 198, 0.2);
border-bottom: .2em solid rgba(198, 198, 198, 0.2);
border-left: .2em solid #c6c6c6;
font-size: 1.75em;
position: absolute;
left: calc(50% - 1.75em);
top: calc(50% - 1.75em);
/* opacity: 0; */
filter: alpha(opacity=0);
-ms-transform: translateZ(0);
transform: translateZ(0);
border-radius: 50%;
display: block;
width: 2.5em;
height: 2.5em;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline;
}
.um-members-pagi .pagi {
cursor: pointer;
}
.um-members-pagi .pagi.current,
.um-members-pagi .pagi.disabled {
cursor: default;
}
.um-member-directory-sorting-a,
.um-member-directory-filters-a,
.um-member-directory-view-type-a {
color:#ddd;
}
.um-directory .um-member-directory-view-type-a {
display: none;
}
.um-directory[data-view_type="list"] .um-member-directory-view-type-a[data-type="list"] {
display: block;
}
.um-directory[data-view_type="grid"] .um-member-directory-view-type-a[data-type="grid"] {
display: block;
}
.um-directory[data-view_type="map"] .um-member-directory-view-type-a[data-type="map"] {
display: block;
}
.um-member-directory-sorting-a:hover,
.um-member-directory-filters-a:hover,
.um-member-directory-view-type-a:hover {
color:#ccc !important;
text-decoration: none;
}
.um-member-directory-sorting-a:focus,
.um-member-directory-filters-a:focus,
.um-member-directory-view-type-a:focus {
color:#ddd;
text-decoration: none;
}
.um-members-list .um-member-meta {
display: block;
margin: 10px 0 0 0;
padding: 15px 0;
box-sizing: border-box;
border: none;
}
.um-directory .um-filtered-line {
display: none;
margin: 0 0 10px 0;
padding: 0;
box-sizing: border-box;
border: none;
}
.um-directory .um-search-submit {
text-align: center;
}
.um-directory .um-search-submit .um-close-filter {
margin: 0 !important;
}
.um-directory .um-filtered-line {
line-height: 30px;
}
.um-directory .um-members-filter-tag {
float: left;
display: inline-block;
margin: 4px 10px;
padding: 3px 10px;
border-radius: 3px;
line-height: 25px;
cursor: default;
background: #f1f1f1;
font-size: 13px;
}
.um-directory .um-clear-filters {
float:left;
display: inline-block;
margin-left: 20px;
line-height: 25px;
}
.um-directory .um-clear-filters a {
float:left;
display: inline-block;
line-height: 25px;
padding: 3px 10px;
margin: 4px 10px;
}
.um-directory .um-members-filter-tag:first-child {
margin-left: 0;
}
.um-directory .um-members-filter-tag .um-members-filter-remove {
float:right;
display: inline-block;
margin-left: 10px;
cursor: pointer;
font-weight: bold;
font-size: 20px;
}
.um-directory .um-members-filter-tag .um-members-filter-remove:hover {
color:#a00;
}
.um-slider .ui-slider-range.ui-widget-header {
background: #44b0ec;
border: 2px solid #44b0ec !important;
margin-top: -2px;
}
.um-slider.ui-slider.ui-slider-horizontal {
border: 2px solid #ddd !important;
box-sizing: border-box;
}
.um-slider {
float: left;
margin-left: 2%;
margin-right: 2%;
width: 96%;
}
.um-slider-range {
float:left;
width:100%;
text-align: left;
padding-top: 6px;
box-sizing: border-box;
}
.um-member-directory-header .um-s1 {
width:100%;
}
.um .um-form .um-half-filter {
width:calc( 50% - 10px );
margin: 0 10px 0 0 !important;
float:left;
}
.um .um-form .um-half-filter:nth-child(even) {
margin: 0 0 0 10px !important;
}
/* new */
.um .um-filter-resset {
width: 22px;
height: 22px;
position: absolute;
text-decoration: none;
box-shadow: none;
font-size: 40px;
color: #a2a2a2;
line-height: 23px;
cursor: pointer;
top: -18px;
right: -20px;
}
.um .um-filter-resset.um-reset-hidden {
display: none;
}
.um-search .um-search-filter {
position: relative;
}
.um-search[style*="overflow: hidden;"] .um-search-filter {
pointer-events: none;
}
.um-dropdown li a {
min-width: 185px;
box-sizing: border-box;
}
-13
View File
@@ -204,22 +204,9 @@ function um_responsive(){
});
jQuery('.um-members').each(function(){
UM_Member_Grid( jQuery(this) );
});
UM_domenus();
}
function UM_Member_Grid( container ) {
container.masonry({
itemSelector: '.um-member',
columnWidth: '.um-member',
gutter: '.um-gutter-sizer'
});
}
function initImageUpload_UM( trigger ) {
+1 -1
View File
File diff suppressed because one or more lines are too long
+718
View File
@@ -1,5 +1,461 @@
var um_members_directory_busy = [];
var um_member_directories = [];
//first page loading
jQuery( '.um-directory' ).each( function() {
var directory = jQuery(this);
um_member_directories.push( directory.data('hash') );
//show preloader at first
um_members_show_preloader( directory );
if ( directory.find('.um-member-directory-sorting-options').length ) {
var sorting = directory.find('.um-member-directory-sorting-options').val();
}
var show_after_search = false;
//set search line from session storage
if ( directory.find('.um-search-line').length ) {
var general_search = directory.find('.um-search-line').val();
}
// if ( jQuery('#tmpl-um-members-filtered-line').length ) {
// var unique_id = um_members_get_unique_id( directory );
// var filters_data = [];
//
// var filter_array = [];
//
// directory.find('.um-search-filter').each( function() {
//
// var filter = jQuery(this);
// var hoper,
// filter_name,
// query_value,
// filter_title,
// filter_range,
// filter_value_title;
//
// if( filter.find('input.um-datepicker-filter').length ) {
// hoper = 'datepicker';
//
// filter.find('input.um-datepicker-filter').each(function() {
// var _this = jQuery(this);
// var obj = {};
//
// if( _this.length ) {
// query_value = um_get_directory_storage( directory, 'filter_' + _this.data('filter_name') );
// filter_name = _this.data('filter_name');
// filter_range = _this.data('range');
//
// if ( query_value !== null ) {
// if( query_value[filter_range] ) {
// obj.name = filter_name;
// obj.label = _this.attr('placeholder');
// obj.range = filter_range;
// obj.value_title = _this.val();
// filter_array.push(obj);
// }
// }
// }
// });
//
// } else if( filter.find('select').length ) {
// hoper = 'select';
//
// filter_name = filter.find('select').attr('name');
// query_value = um_get_directory_storage( directory, 'filter_' + filter_name );
//
// filter_title = filter.find('select').data('placeholder');
// filter_value_title;
//
// } else if( filter.find('div.ui-slider').length ) {
// hoper = 'slider';
//
// filter_name = filter.find('div.ui-slider').data('field_name');
// query_value = um_get_directory_storage( directory, 'filter_' + filter_name );
//
// filter_title = filter.find('div.um-slider-range').data('label');
// filter_value_title;
//
// }
//
// if ( typeof( query_value ) != 'undefined' && query_value != null) {
// if ( typeof( query_value ) == 'string' ) {
// filter_value_title = filter.find('select option[value="' + query_value + '"]').data('value_label');
// filters_data.push( {'name':filter_name, 'label':filter_title, 'value_label':filter_value_title, 'value':query_value, 'unique_id':unique_id} );
// } else if( hoper == 'datepicker' ) { // после сформированных данных
// jQuery.each( filter_array, function(e) {
// var find = filters_data.find(function (item) {
// return item.name == filter_array[e].name && item.range == filter_array[e].range;
// });
// if( typeof( find ) == 'undefined' ) {
// filters_data.push(
// {
// 'name':filter_array[e].name,
// 'range':filter_array[e].range,
// 'label':filter_array[e].label,
// 'value_label':filter_array[e].value_title,
// 'value':query_value[filter_array[e].range],
// 'unique_id':unique_id
// }
// );
// }
// })
//
// } else if( hoper == 'slider' ) {
// filter_value_title = query_value[0] + " - " + query_value[1];
// filters_data.push( {'name':filter_name, 'label':filter_title, 'value_label': filter_value_title, 'value': query_value, 'unique_id':unique_id} );
// } else {
// jQuery.each( query_value, function(e) {
// filter_value_title = filter.find('select option[value="' + query_value[e] + '"]').data('value_label');
// filters_data.push( {'name': filter_name, 'label':filter_title, 'value_label':filter_value_title, 'value':query_value[e], 'unique_id':unique_id} );
// });
// }
// }
// });
//
//
// directory.find('.um-members-filter-tag').remove();
//
// var filters_template = wp.template( 'um-members-filtered-line' );
// directory.find('.um-filtered-line').prepend( filters_template( {'filters': filters_data} ) );
//
// if ( filters_data.length > 0 ) {
// directory.find('.um-filtered-line').show();
// show_after_search = false;
// } else {
// directory.find('.um-filtered-line').hide();
// show_after_search = true;
// }
// }
if ( jQuery('#tmpl-um-members-filtered-line').length ) {
um_change_tag( directory );
}
if ( directory.data( 'only_search' ) > 0 && show_after_search ) {
um_members_hide_preloader( directory );
return;
}
um_ajax_get_members( directory );
});
function um_parse_current_url() {
var data = {};
var query = window.location.search.substring(1);
var attrs = query.split( '&' );
jQuery.each( attrs, function( i ) {
var attr = attrs[ i ].split( '=' );
data[ attr[0] ] = attr[1];
});
return data;
}
function get_data_for_directory( hash, search_key ) {
var data = {};
var url_data = um_parse_current_url();
jQuery.each( url_data, function( key ) {
if ( key.indexOf( '_' + hash ) !== -1 ) {
data[ key.replace( '_' + hash, '' ) ] = url_data[ key ];
}
});
if ( ! search_key ) {
return data;
} else {
return data[ search_key ];
}
}
function um_members_get_hash( directory ) {
return directory.data( 'hash' );
}
function um_is_directory_busy( directory ) {
var hash = um_members_get_hash( directory );
return typeof um_members_directory_busy[ hash ] != 'undefined' && um_members_directory_busy[ hash ];
}
function um_members_show_preloader( directory ) {
um_members_directory_busy[ um_members_get_hash( directory ) ] = true;
directory.find('.um-members-overlay').show();
}
function um_members_hide_preloader( directory ) {
um_members_directory_busy[ um_members_get_hash( directory ) ] = false;
directory.find('.um-members-overlay').hide();
}
function um_set_range_label( slider, ui ) {
var placeholder = slider.siblings( '.um-slider-range' ).data( 'placeholder' );
if( ui ) {
placeholder = placeholder.replace( '\{min_range\}', ui.values[ 0 ] )
.replace( '\{max_range\}', ui.values[ 1 ] )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
} else {
placeholder = placeholder.replace( '\{min_range\}', slider.slider( "values", 0 ) )
.replace( '\{max_range\}', slider.slider( "values", 1 ) )
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
slider.siblings( '.um-slider-range' ).html( placeholder );
slider.siblings( ".um_range_min" ).val( slider.slider( "values", 0 ) );
slider.siblings( ".um_range_max" ).val( slider.slider( "values", 1 ) );
}
function um_ajax_get_members( directory ) {
var directory_id = directory.data('unique_id');
directory_id = directory_id.replace("um-", "");
var local_date = new Date();
var gmt_hours = -local_date.getTimezoneOffset()/60;
var request = {
page: um_get_directory_storage( directory, 'page' ),
args: window['um_members_args_' + directory_id],
gmt_offset: gmt_hours,
nonce: um_scripts.nonce,
referrer_url: window.location.href
};
if ( directory.find('.um-member-directory-sorting-options').length ) {
request.sorting = um_get_directory_storage( directory, 'sorting' );
}
if ( directory.find('.um-search-line').length ) {
request.general_search = um_get_directory_storage( directory, 'general_search' );
}
if ( directory.find('.um-search-filter').length ) {
directory.find('.um-search-filter').each( function() {
var filter = jQuery(this);
if ( filter.find( '.um-slider' ).length ) {
var filter_name = filter.find( '.um-slider' ).data('field_name');
var value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( value !== null ) {
request[ filter_name ] = value;
request['is_filters'] = true;
}
} else if ( filter.find( '.um-datepicker-filter' ).length ) {
var filter_name = filter.find( '.um-datepicker-filter' ).data('filter_name');
var value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( value !== null ) {
request[ filter_name ] = value;
request['is_filters'] = true;
}
} else {
var filter_name = filter.find('select').attr('name');
var value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( value !== null ) {
request[ filter_name ] = value;
request['is_filters'] = true;
}
}
});
}
return wp.ajax.send( 'um_get_members', {
data: request,
success: function( answer ) {
//set last data hard for using on layouts reloading
um_set_directory_storage( directory, 'last_data', answer, true );
um_build_template( directory, answer );
um_members_hide_preloader( directory );
var pagination_template = wp.template( 'um-members-pagination' );
directory.find('.um-members-pagination-box').html( pagination_template( answer ) );
directory.data( 'total_pages', answer.pagination.total_pages );
jQuery( document ).trigger('um_members_rendered');
},
error: function( data ) {
console.log( data );
}
});
}
function um_build_template( directory, data ) {
var layout = um_get_directory_storage( directory, 'layout' );
var template = wp.template( 'um-member-' + layout );
directory.find('.um-members-grid, .um-members-list').remove();
directory.find('.um-members-wrapper').prepend( template( data ) );
directory.addClass('um-loaded');
if ( directory.find('.um-members').length ) {
UM_Member_Grid( directory.find('.um-members') );
jQuery( window ).trigger( 'resize' );
}
jQuery( document ).trigger( "um_build_template", [ directory, data ] );
jQuery( window ).trigger( "resize" );
}
function UM_Member_Grid( container ) {
if ( container.find( '.um-member' ).length ) {
container.imagesLoaded( function() {
var $grid = container.masonry({
itemSelector: '.um-member',
columnWidth: '.um-member',
gutter: '.um-gutter-sizer'
});
$grid.on( 'layoutComplete', function( event, laidOutItems ) {
jQuery( document ).trigger( "um_grid_initialized", [ event, laidOutItems ] );
});
});
}
}
jQuery(document).ready(function() {
//slider filter
jQuery( '.um-slider' ).each( function() {
var slider = jQuery( this );
var directory = jQuery(this).parents('.um-directory');
var default_value = get_data_for_directory( um_members_get_hash( directory ), slider.data('field_name') );
//var default_value = um_get_directory_storage( directory, 'filter_' + slider.data('field_name') );
if ( default_value == null ) {
default_value = [ parseInt( slider.data('min') ), parseInt( slider.data('max') ) ];
}
slider.slider({
range: true,
min: parseInt( slider.data('min') ),
max: parseInt( slider.data('max') ),
values: default_value,
create: function( event, ui ) {
//console.log( ui );
},
step: 1,
slide: function( event, ui ) {
um_set_range_label( jQuery( this ), ui );
},
stop: function( event, ui ) {
if ( ! um_is_directory_busy( directory ) ) {
um_set_directory_storage( directory, 'filter_' + jQuery(this).data('field_name'), ui.values, true );
um_set_directory_storage( directory, 'page', 1, true );
um_change_tag( directory );
um_ajax_get_members( directory );
}
}
});
um_set_range_label( slider );
});
//datepicker filter
jQuery('.um-datepicker-filter').each( function() {
var elem = jQuery(this);
var min = new Date( elem.data('date_min')*1000 );
var max = new Date( elem.data('date_max')*1000 );
var $input = elem.pickadate({
selectYears: true,
min: min,
max: max,
formatSubmit: 'yyyy/mm/dd',
hiddenName: true,
onOpen: function() {
elem.blur();
},
onClose: function() {
elem.blur();
},
onSet: function( context ) {
var directory = elem.parents('.um-directory');
if ( um_is_directory_busy( directory ) ) {
return;
}
var filter_name = elem.data( 'filter_name' );
var range = elem.data( 'range' );
var current_value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( current_value === null ) {
current_value = {};
}
var select_val = context.select / 1000;
var change_val = elem.val();
if ( range === 'from' ) {
if( select_val !== null && !isNaN( select_val ) ) {
current_value.from = select_val;
} else {
if( change_val == '' ) {
delete current_value.from;
//console.warn('Elem val from: ' + change_val);
}
}
} else if ( range === 'to' ) {
if( select_val !== null && !isNaN( select_val ) ) {
current_value.to = select_val;
} else {
if( change_val == '' ) {
delete current_value.to;
//console.warn('Elem val to: ' + change_val);
}
}
}
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
//set 1st page after filtration
um_set_directory_storage( directory, 'page', 1, true );
um_ajax_get_members( directory );
um_change_tag( directory );
}
});
var $picker = $input.pickadate('picker');
var $fname = elem.data('filter_name');
var $frange = elem.data('range');
var $directory = elem.parents('.um-directory');
var query_value = um_get_directory_storage( $directory, 'filter_' + $fname );
if ( query_value !== null ) {
if( typeof( query_value[$frange] ) !== 'undefined' ) {
$picker.set( 'select', query_value[$frange]*1000 );
}
}
});
jQuery('.um-members').each(function(){
UM_Member_Grid( jQuery(this) );
});
@@ -63,4 +519,266 @@ jQuery(document).ready(function() {
return false;
});
//change layout
jQuery( document.body ).on( 'click', '.um-member-directory-view-type-a', function() {
var directory = jQuery(this).parents('.um-directory');
var $this = jQuery(this);
if ( um_is_directory_busy( directory ) ) {
return false;
}
var layout = um_get_directory_storage( directory, 'layout' );
var view_type = directory.find('.um-member-directory-view-type-a').parent();
var summ_elem = jQuery(this).parent().find('.um-member-directory-view-type-a').length;
var elem_next,
tooltip_title;
view_type.find('.um-member-directory-view-type-a').each( function ( index, elem ) {
if( jQuery(elem).data('type') == layout ) {
if( index === summ_elem - 1) {
elem_next = jQuery(elem).parent().find('.um-member-directory-view-type-a').eq(0);
tooltip_title = jQuery(elem_next).next().attr('default-title');
} else {
elem_next = jQuery(elem).parent().find('.um-member-directory-view-type-a').eq( index + 1 );
if( index === summ_elem - 2) {
tooltip_title = jQuery(elem).parent().find('.um-member-directory-view-type-a').eq(0).attr('default-title');
} else {
tooltip_title = jQuery(elem_next).next().attr('default-title');
}
}
}
});
jQuery(this).parent().find('.um-member-directory-view-type-a').hide();
elem_next.show();
elem_next.attr( 'original-title', tooltip_title );
layout = jQuery(elem_next).data('type');
um_set_directory_storage( directory, 'layout', layout, true );
directory.data( 'view_type', layout );
var data = um_get_directory_storage( directory, 'last_data' );
if ( data !== null ) {
um_build_template( directory, data );
} else {
var show_after_search = false;
//set search line from session storage
if ( directory.find('.um-search-line').length ) {
var general_search = um_get_directory_storage( directory, 'general_search' );
if ( general_search === null ) {
//show results after search
show_after_search = true;
}
}
if ( jQuery('#tmpl-um-members-filtered-line').length ) {
var filters_data = [];
directory.find('.um-search-filter').each( function() {
var filter = jQuery(this);
var filter_name = filter.find('select').attr('name');
var query_value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( typeof( query_value ) != 'undefined' ) {
if ( typeof( query_value ) == 'string' ) {
filters_data.push( {'name':filter_name} );
} else {
jQuery.each( query_value, function() {
filters_data.push( {'name': filter_name} );
});
}
}
});
show_after_search = ( filters_data.length <= 0 );
}
if ( parseInt( directory.data( 'only_search' ) ) === 1 && show_after_search ) {
return;
}
um_members_show_preloader( directory );
um_ajax_get_members( directory );
}
});
//filters controls
jQuery('.um-member-directory-filters').click( function() {
var search_bar = jQuery(this).parents('.um-directory').find('.um-search');
if ( search_bar.is(':visible') ) {
search_bar.slideUp(650);
} else {
search_bar.slideDown(650);
}
});
jQuery('.um-close-filter').click( function() {
var search_bar = jQuery(this).parents('.um-directory').find('.um-search');
search_bar.slideUp(650);
});
//filtration process
jQuery( document.body ).on( 'change', '.um-search-filter select', function() {
if ( jQuery(this).val() === '' ) {
return;
}
var directory = jQuery(this).parents('.um-directory');
if ( um_is_directory_busy( directory ) ) {
return;
}
var filter_name = jQuery(this).prop('name');
var current_value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( current_value === null ) {
current_value = [];
}
if ( -1 === jQuery.inArray( jQuery(this).val(), current_value ) ) {
current_value.push( jQuery(this).val() );
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
//set 1st page after filtration
um_set_directory_storage( directory, 'page', 1, true );
}
jQuery(this).val('').trigger('change');
um_ajax_get_members( directory );
um_change_tag( directory );
});
jQuery( document.body ).on( 'click', '.um-members-filter-remove', function() {
var directory = jQuery(this).parents('.um-directory');
if ( um_is_directory_busy( directory ) ) {
return;
}
var range = jQuery(this).data('range');
var removeItem = jQuery(this).data('value');
var filter_name = jQuery(this).data('name');
var current_value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( current_value !== null && -1 != jQuery.inArray( removeItem.toString(), current_value ) ) {
current_value = jQuery.grep( current_value, function( value ) {
return value != removeItem;
});
if ( current_value.length > 0 ) {
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
}
//set 1st page after filtration
um_set_directory_storage( directory, 'page', 1, true );
jQuery(this).parents('.um-members-filter-tag').remove();
} else if( current_value !== null && current_value[range] !== undefined ) {
directory.find('input.um-datepicker-filter[data-filter_name="' + filter_name + '"][data-range="' + range + '"]').val('').change();
delete current_value[range];
if ( jQuery.isEmptyObject( current_value ) === false ) {
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
}
jQuery(this).parents('.um-members-filter-tag').remove();
} else {
if( current_value.length > 1 && current_value.includes(removeItem)) {
current_value.splice( current_value.indexOf(removeItem), 1 );
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
}
jQuery(this).parents('.um-members-filter-tag').remove();
var slider = jQuery(directory).find('div.um-slider');
slider.slider( "values", [ parseInt( slider.data('min') ), parseInt( slider.data('max') ) ] );
//um_set_range_label( slider );
}
um_ajax_get_members( directory );
if ( directory.find( '.um-members-filter-remove' ).length === 0 ) {
directory.find('.um-clear-filters-a').hide();
} else {
directory.find('.um-clear-filters-a').show();
}
});
jQuery( document.body ).on( 'click', '.um-clear-filters-a', function() {
var directory = jQuery(this).parents('.um-directory');
if ( um_is_directory_busy( directory ) ) {
return;
}
directory.find( '.um-members-filter-remove' ).each( function() {
var removeItem = jQuery(this).data('value');
var filter_name = jQuery(this).data('name');
var range = jQuery(this).data('range');
//um_delete_directory_storage( directory, 'filter_' + filter_name );
var current_value = um_get_directory_storage( directory, 'filter_' + filter_name );
if ( current_value !== null && -1 != jQuery.inArray( removeItem.toString(), current_value ) ) {
current_value = jQuery.grep( current_value, function( value ) {
return value != removeItem;
});
if ( current_value.length > 0 ) {
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
}
//set 1st page after filtration
um_set_directory_storage( directory, 'page', 1, true );
jQuery(this).parents('.um-members-filter-tag').remove();
} else if( current_value !== null && current_value[range] !== undefined ) {
directory.find('input.um-datepicker-filter[data-filter_name="' + filter_name + '"][data-range="' + range + '"]').val('').change();
delete current_value[range];
if ( jQuery.isEmptyObject( current_value ) === false ) {
um_set_directory_storage( directory, 'filter_' + filter_name, current_value, true );
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
}
jQuery(this).parents('.um-members-filter-tag').remove();
} else {
um_delete_directory_storage( directory, 'filter_' + filter_name );
jQuery(this).parents('.um-members-filter-tag').remove();
var slider = jQuery(directory).find('div.um-slider');
slider.slider( "values", [ parseInt( slider.data('min') ), parseInt( slider.data('max') ) ] );
um_set_range_label( slider );
}
});
//set 1st page after filtration
um_set_directory_storage( directory, 'page', 1, true );
directory.find('.um-members-filter-tag').remove();
um_ajax_get_members( directory );
jQuery(this).hide();
});
});
+1 -1
View File
File diff suppressed because one or more lines are too long
+5
View File
@@ -123,6 +123,11 @@ jQuery(document).ready(function() {
allowClear: false,
minimumResultsForSearch: 10
});
jQuery(".um-s3").select2({
allowClear: false,
minimumResultsForSearch: -1
});
}
if( typeof(jQuery.fn.tipsy) === "function" ){
+1 -1
View File
File diff suppressed because one or more lines are too long
+111 -22
View File
@@ -186,6 +186,11 @@ jQuery(document).ready( function() {
}
function um_distinct( value, index, self ) {
return self.indexOf( value ) === index;
}
/**
* Conditional logic
*
@@ -206,10 +211,12 @@ jQuery(document).ready( function() {
var parent_condition = true;
if ( condition === '=' || condition === '!=' ) {
var condition_field = jQuery( '#' + prefix + '_' + conditional[0] );
if ( conditional[0].indexOf( '||' ) === -1 ) {
var condition_field = jQuery( '#' + prefix + '_' + conditional[0] );
if ( typeof condition_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( condition_field.parents('.um-forms-line') );
if ( typeof condition_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( condition_field.parents('.um-forms-line') );
}
}
} else if ( condition === '~' ) {
var selectors = conditional[0].split('|');
@@ -224,31 +231,106 @@ jQuery(document).ready( function() {
var own_condition = false;
if ( condition === '=' ) {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( conditional[0].indexOf( '||' ) !== -1 ) {
var selectors = conditional[0].split('||');
var complete_condition = false;
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? condition_field.is(':checked') : ! condition_field.is(':checked');
} else {
jQuery.each( selectors, function(i) {
var cond_field = jQuery( '#' + prefix + '_' + selectors[i] );
own_condition = false;
parent_condition = true;
if ( typeof cond_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( cond_field.parents('.um-forms-line') );
}
var tagName = cond_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = cond_field.attr('type');
if ( input_type === 'checkbox' ) {
own_condition = ( value == '1' ) ? cond_field.is(':checked') : ! cond_field.is(':checked');
} else {
own_condition = ( cond_field.val() == value );
}
} else if ( tagName === 'select' ) {
own_condition = ( cond_field.val() == value );
}
if ( own_condition && parent_condition ) {
complete_condition = true;
}
});
return complete_condition;
} else {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? condition_field.is(':checked') : ! condition_field.is(':checked');
} else {
own_condition = ( condition_field.val() == value );
}
} else if ( tagName == 'select' ) {
own_condition = ( condition_field.val() == value );
}
} else if ( tagName == 'select' ) {
own_condition = ( condition_field.val() == value );
}
} else if ( condition === '!=' ) {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? ! condition_field.is(':checked') : condition_field.is(':checked');
} else {
return ( own_condition && parent_condition );
}
} else if ( condition === '!=' ) {
if ( conditional[0].indexOf( '||' ) !== -1 ) {
var selectors = conditional[0].split('||');
var complete_condition = false;
jQuery.each( selectors, function(i) {
var cond_field = jQuery( '#' + prefix + '_' + selectors[i] );
own_condition = false;
parent_condition = true;
if ( typeof cond_field.parents('.um-forms-line').data('conditional') !== 'undefined' ) {
parent_condition = check_condition( cond_field.parents('.um-forms-line') );
}
var tagName = cond_field.prop("tagName").toLowerCase();
if ( tagName === 'input' ) {
var input_type = cond_field.attr('type');
if ( input_type === 'checkbox' ) {
own_condition = ( value == '1' ) ? ! cond_field.is(':checked') : cond_field.is(':checked');
} else {
own_condition = ( cond_field.val() != value );
}
} else if ( tagName === 'select' ) {
own_condition = ( cond_field.val() != value );
}
if ( own_condition && parent_condition ) {
complete_condition = true;
}
});
return complete_condition;
} else {
var tagName = condition_field.prop("tagName").toLowerCase();
if ( tagName == 'input' ) {
var input_type = condition_field.attr('type');
if ( input_type == 'checkbox' ) {
own_condition = ( value == '1' ) ? ! condition_field.is(':checked') : condition_field.is(':checked');
} else {
own_condition = ( condition_field.val() != value );
}
} else if ( tagName == 'select' ) {
own_condition = ( condition_field.val() != value );
}
} else if ( tagName == 'select' ) {
own_condition = ( condition_field.val() != value );
return ( own_condition && parent_condition );
}
} else if ( condition === '~' ) {
var field_id = form_line.find( form_line.data('field_type') ).data('field_id');
@@ -265,6 +347,11 @@ jQuery(document).ready( function() {
visible_options.push( condition_field.data( 'fill_' + field_id ) );
}
}
} else if ( tagName == 'select' ) {
if ( ! value && condition_field.val() ) {
visible_options = visible_options.concat( condition_field.val() );
visible_options = visible_options.filter( um_distinct );
}
}
});
@@ -285,9 +372,11 @@ jQuery(document).ready( function() {
lines_field.val( null );
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
}
return ( own_condition && parent_condition );
}
return ( own_condition && parent_condition );
return false;
}
});
+65 -1
View File
@@ -411,6 +411,54 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
}
/**
* Render text field
*
* @param $field_data
*
* @return bool|string
*/
function render_number( $field_data ) {
if ( empty( $field_data['id'] ) ) {
return false;
}
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . esc_attr( $id ) . '" ';
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field';
$class_attr = ' class="um-forms-field ' . esc_attr( $class ) . '" ';
$data = array(
'field_id' => $field_data['id']
);
if ( ! empty( $field_data['attr'] ) && is_array( $field_data['attr'] ) ){
$data = array_merge( $data, $field_data['attr'] );
}
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" ';
}
$placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . esc_attr( $field_data['placeholder'] ) . '"' : '';
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . esc_attr( $value ) . '" ';
$html = "<input type=\"number\" $id_attr $class_attr $name_attr $data_attr $value_attr $placeholder_attr />";
return $html;
}
/**
* @param $field_data
*
@@ -908,8 +956,24 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
$for_attr = ' for="' . esc_attr( $id . '_' . $k ) . '" ';
$name_attr = ' name="' . $name . '[' . $k . ']" ';
$data = array(
'field_id' => $field_data['id'] . '_' . $k,
);
if ( ! empty( $field_data['data'] ) ) {
$data = array_merge( $data, $field_data['data'] );
}
$data_attr = '';
foreach ( $data as $key => $value ) {
if ( $value == 'checkbox_key' ) {
$value = $k;
}
$data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" ';
}
$html .= "<label $for_attr>
<input type=\"checkbox\" " . checked( in_array( $k, $values ), true, false ) . "$id_attr $name_attr value=\"1\" $class_attr>
<input type=\"checkbox\" " . checked( in_array( $k, $values ), true, false ) . "$id_attr $name_attr $data_attr value=\"1\" $class_attr>
<span>$title</span>
</label>";
}
+25 -6
View File
@@ -776,6 +776,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
*/
function add_metabox_directory() {
add_meta_box( 'um-admin-form-general', __( 'General Options', 'ultimate-member' ), array( &$this, 'load_metabox_directory' ), 'um_directory', 'normal', 'default' );
add_meta_box( 'um-admin-form-sorting', __( 'Sorting', 'ultimate-member' ), array( &$this, 'load_metabox_directory' ), 'um_directory', 'normal', 'default' );
add_meta_box( 'um-admin-form-profile', __( 'Profile Card', 'ultimate-member' ), array( &$this, 'load_metabox_directory' ), 'um_directory', 'normal', 'default' );
add_meta_box( 'um-admin-form-search', __( 'Search Options', 'ultimate-member' ), array( &$this, 'load_metabox_directory' ), 'um_directory', 'normal', 'default' );
add_meta_box( 'um-admin-form-pagination', __( 'Results &amp; Pagination', 'ultimate-member' ), array( &$this, 'load_metabox_directory' ), 'um_directory', 'normal', 'default' );
@@ -1014,26 +1015,31 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
*
* @param $post_id
* @param $post
*
* @return mixed
*/
function save_metabox_directory( $post_id, $post ) {
global $wpdb;
// validate nonce
if ( !isset( $_POST['um_admin_save_metabox_directory_nonce'] ) || !wp_verify_nonce( $_POST['um_admin_save_metabox_directory_nonce'], basename( __FILE__ ) ) ) return $post_id;
if ( ! isset( $_POST['um_admin_save_metabox_directory_nonce'] ) || ! wp_verify_nonce( $_POST['um_admin_save_metabox_directory_nonce'], basename( __FILE__ ) ) ) {
return;
}
// validate post type
if ( $post->post_type != 'um_directory' ) return $post_id;
if ( $post->post_type != 'um_directory' ) {
return;
}
// validate user
$post_type = get_post_type_object( $post->post_type );
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) ) return $post_id;
if ( ! current_user_can( $post_type->cap->edit_post, $post_id ) ) {
return;
}
$where = array( 'ID' => $post_id );
if ( empty( $_POST['post_title'] ) )
if ( empty( $_POST['post_title'] ) ) {
$_POST['post_title'] = 'Directory #'.$post_id;
}
$wpdb->update( $wpdb->posts, array( 'post_title' => $_POST['post_title'] ), $where );
@@ -1043,30 +1049,43 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
delete_post_meta( $post_id, '_um_reveal_fields' );
delete_post_meta( $post_id, '_um_search_fields' );
delete_post_meta( $post_id, '_um_roles_can_search' );
delete_post_meta( $post_id, '_um_roles_can_filter' );
delete_post_meta( $post_id, '_um_show_these_users' );
//save metadata
foreach ( $_POST['um_metadata'] as $k => $v ) {
if ( $k == '_um_show_these_users' && trim( $_POST['um_metadata'][ $k ] ) ) {
$v = preg_split( '/[\r\n]+/', $v, -1, PREG_SPLIT_NO_EMPTY );
}
if ( strstr( $k, '_um_' ) ) {
if ( $k === '_um_is_default' ) {
$mode = UM()->query()->get_attr( 'mode', $post_id );
if ( ! empty( $mode ) ) {
$posts = $wpdb->get_col(
"SELECT post_id
FROM {$wpdb->postmeta}
WHERE meta_key = '_um_mode' AND
meta_value = 'directory'"
);
foreach ( $posts as $p_id ) {
delete_post_meta( $p_id, '_um_is_default' );
}
}
}
$v = apply_filters( 'um_member_directory_meta_value_before_save', $v, $k, $post_id );
update_post_meta( $post_id, $k, $v );
}
}
}
+43 -62
View File
@@ -1,5 +1,6 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit;
global $post_id;
$meta = get_post_custom( get_the_ID() );
foreach( $meta as $k => $v ) {
@@ -8,67 +9,63 @@ foreach( $meta as $k => $v ) {
}
}
$roles_array = array();
foreach ( UM()->roles()->get_roles() as $key => $value ) {
$_um_roles = UM()->query()->get_meta_value( '_um_roles', $key );
if ( ! empty( $_um_roles ) )
$roles_array[] = $_um_roles;
}
$_um_roles_value = get_post_meta( $post_id, '_um_roles', true );
$_um_roles_value = empty( $_um_roles_value ) ? array() : $_um_roles_value;
$show_these_users = get_post_meta( get_the_ID(), '_um_show_these_users', true );
if ( $show_these_users ) {
$show_these_users = implode( "\n", str_replace( "\r", "", $show_these_users ) );
} ?>
}
$_um_view_types_value = get_post_meta( $post_id, '_um_view_types', true );
$_um_view_types_value = empty( $_um_view_types_value ) ? array( 'grid' ) : $_um_view_types_value;
$view_types_options = array_map( function( $item ) {
return $item['title'];
}, UM()->member_directory()->view_types );
$conditional = array();
foreach ( $view_types_options as $key => $value ) {
$conditional[] = '_um_view_types_' . $key;
}
?>
<div class="um-admin-metabox">
<?php
/**
* UM hook
*
* @type filter
* @title um_admin_directory_sort_users_select
* @description Extend Sort Types for Member Directory
* @input_vars
* [{"var":"$sort_types","type":"array","desc":"Sort Types"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_admin_directory_sort_users_select', 'function_name', 10, 1 );
* @example
* <?php
* add_filter( 'um_admin_directory_sort_users_select', 'my_directory_sort_users_select', 10, 1 );
* function my_directory_sort_users_select( $sort_types ) {
* // your code here
* return $sort_types;
* }
* ?>
*/
$sort_options = apply_filters( 'um_admin_directory_sort_users_select', array(
'user_registered_desc' => __( 'New users first', 'ultimate-member' ),
'user_registered_asc' => __( 'Old users first', 'ultimate-member' ),
'last_login' => __( 'Last login', 'ultimate-member' ),
'display_name' => __( 'Display Name', 'ultimate-member' ),
'first_name' => __( 'First Name', 'ultimate-member' ),
'last_name' => __( 'Last Name', 'ultimate-member' ),
'random' => __( 'Random', 'ultimate-member' ),
'other' => __( 'Other (custom field)', 'ultimate-member' ),
) );
$fields = array(
<?php $fields = array(
array(
'id' => '_um_mode',
'type' => 'hidden',
'value' => 'directory',
'id' => '_um_mode',
'type' => 'hidden',
'value' => 'directory',
),
array(
'id' => '_um_view_types',
'type' => 'multi_checkbox',
'label' => __( 'View type(s)', 'ultimate-member' ),
'tooltip' => __( 'View type a specific parameter in the directory', 'ultimate-member' ),
'options' => $view_types_options,
'columns' => 3,
'value' => $_um_view_types_value,
'data' => array( 'fill__um_default_view' => 'checkbox_key' ),
),
array(
'id' => '_um_default_view',
'type' => 'select',
'label' => __( 'Default view type', 'ultimate-member' ),
'tooltip' => __( 'Default directory view type', 'ultimate-member' ),
'options' => $view_types_options,
'value' => UM()->query()->get_meta_value( '_um_default_view', null, '' ),
'conditional' => array( implode( '|', $conditional ), '~', 1 )
),
array(
'id' => '_um_roles',
'type' => 'select',
'type' => 'multi_checkbox',
'label' => __( 'User Roles to Display', 'ultimate-member' ),
'tooltip' => __( 'If you do not want to show all members, select only user roles to appear in this directory', 'ultimate-member' ),
'options' => UM()->roles()->get_roles(),
'multi' => true,
'value' => $roles_array,
'columns' => 3,
'value' => $_um_roles_value,
),
array(
'id' => '_um_has_profile_photo',
@@ -83,22 +80,6 @@ if ( $show_these_users ) {
'label' => __( 'Only show members who have uploaded a cover photo', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_has_cover_photo' ),
),
array(
'id' => '_um_sortby',
'type' => 'select',
'label' => __( 'Sort users by', 'ultimate-member' ),
'tooltip' => __( 'Sort users by a specific parameter in the directory', 'ultimate-member' ),
'options' => $sort_options,
'value' => UM()->query()->get_meta_value( '_um_sortby' ),
),
array(
'id' => '_um_sortby_custom',
'type' => 'text',
'label' => __( 'Meta key', 'ultimate-member' ),
'tooltip' => __( 'To sort by a custom field, enter the meta key of field here', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_sortby_custom', null, 'na' ),
'conditional' => array( '_um_sortby', '=', 'other' )
),
array(
'id' => '_um_show_these_users',
'type' => 'textarea',
@@ -3,33 +3,62 @@
<div class="um-admin-metabox">
<?php UM()->admin_forms( array(
'class' => 'um-member-directory-pagination um-half-column',
'prefix_id' => 'um_metadata',
'fields' => array(
'class' => 'um-member-directory-pagination um-half-column',
'prefix_id' => 'um_metadata',
'fields' => array(
array(
'id' => '_um_profiles_per_page',
'type' => 'text',
'label' => __( 'Number of profiles per page', 'ultimate-member' ),
'tooltip' => __( 'Number of profiles to appear on page for standard users', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profiles_per_page', null, 12 ),
'size' => 'small'
'id' => '_um_must_search',
'type' => 'checkbox',
'label' => __( 'Show results only after search/filtration', 'ultimate-member' ),
'tooltip' => __( 'If turned on, member results will only appear after search/filter is performed', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_must_search' ),
'conditional' => array( '_um_search||_um_filters', '=', 1 ),
),
array(
'id' => '_um_profiles_per_page_mobile',
'type' => 'text',
'label' => __( 'Number of profiles per page (for Mobiles & Tablets)', 'ultimate-member' ),
'tooltip' => __( 'Number of profiles to appear on page for mobile users', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profiles_per_page_mobile', null, 8 ),
'size' => 'small'
'id' => '_um_max_users',
'type' => 'number',
'label' => __( 'Maximum number of profiles', 'ultimate-member' ),
'tooltip' => __( 'Use this setting to control the maximum number of profiles to appear in this directory. Leave blank to disable this limit', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_max_users', null, 'na' ),
'size' => 'small'
),
array(
'id' => '_um_max_users',
'type' => 'text',
'label' => __( 'Maximum number of profiles', 'ultimate-member' ),
'tooltip' => __( 'Use this setting to control the maximum number of profiles to appear in this directory. Leave blank to disable this limit', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_max_users', null, 'na' ),
'size' => 'small'
)
'id' => '_um_profiles_per_page',
'type' => 'number',
'label' => __( 'Number of profiles per page', 'ultimate-member' ),
'tooltip' => __( 'Number of profiles to appear on page for standard users', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profiles_per_page', null, 12 ),
'size' => 'small'
),
array(
'id' => '_um_profiles_per_page_mobile',
'type' => 'number',
'label' => __( 'Number of profiles per page (for Mobiles & Tablets)', 'ultimate-member' ),
'tooltip' => __( 'Number of profiles to appear on page for mobile users', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profiles_per_page_mobile', null, 8 ),
'size' => 'small'
),
array(
'id' => '_um_directory_header',
'type' => 'text',
'label' => __( 'Results Text', 'ultimate-member' ),
'tooltip' => __( 'Customize the search result text . e.g. Found 3,000 Members. Leave this blank to not show result text', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_header', null, __( '{total_users} Members', 'ultimate-member' ) ),
),
array(
'id' => '_um_directory_header_single',
'type' => 'text',
'label' => __( 'Single Result Text', 'ultimate-member' ),
'tooltip' => __( 'Same as above but in case of 1 user found only', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_header_single', null, __( '{total_users} Member', 'ultimate-member' ) ),
),
array(
'id' => '_um_directory_no_users',
'type' => 'text',
'label' => __( 'Custom text if no users were found', 'ultimate-member' ),
'tooltip' => __( 'This is the text that is displayed if no users are found during a search', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_no_users', null, __( 'We are sorry. We cannot find any users who match your search criteria.', 'ultimate-member' ) ),
),
)
) )->render_form(); ?>
+96 -70
View File
@@ -12,77 +12,103 @@
$_um_tagline_fields = get_post_meta( $post_id, '_um_tagline_fields', true );
$_um_reveal_fields = get_post_meta( $post_id, '_um_reveal_fields', true );
$fields = array(
array(
'id' => '_um_profile_photo',
'type' => 'checkbox',
'label' => __( 'Enable Profile Photo', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profile_photo', null, 1 ),
),
array(
'id' => '_um_cover_photos',
'type' => 'checkbox',
'label' => __( 'Enable Cover Photo', 'ultimate-member' ),
'tooltip' => __( 'If turned on, the users cover photo will appear in the directory', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_cover_photos', null, 1 ),
),
array(
'id' => '_um_show_name',
'type' => 'checkbox',
'label' => __( 'Show display name', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_name', null, 1 ),
),
array(
'id' => '_um_show_tagline',
'type' => 'checkbox',
'label' => __( 'Show tagline below profile name', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_tagline' ),
),
array(
'id' => '_um_tagline_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to display in tagline', 'ultimate-member' ),
'value' => $_um_tagline_fields,
'conditional' => array( '_um_show_tagline', '=', 1 ),
'add_text' => __( 'Add New Custom Field', 'ultimate-member' ),
'options' => $user_fields,
'show_default_number' => 1,
),
array(
'id' => '_um_show_userinfo',
'type' => 'checkbox',
'label' => __( 'Show extra user information below tagline?', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_userinfo' ),
),
array(
'id' => '_um_reveal_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to display in reveal section', 'ultimate-member' ),
'value' => $_um_reveal_fields,
'add_text' => __( 'Add New Custom Field', 'ultimate-member' ),
'conditional' => array( '_um_show_userinfo', '=', 1 ),
'options' => $user_fields,
'show_default_number' => 1,
),
array(
'id' => '_um_show_social',
'type' => 'checkbox',
'label' => __( 'Show social connect icons', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_social' ),
'conditional' => array( '_um_show_userinfo', '=', 1 )
),
array(
'id' => '_um_userinfo_animate',
'type' => 'checkbox',
'label' => __( 'Enable reveal section transition by default', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_userinfo_animate' ),
'conditional' => array( '_um_show_userinfo', '=', 1 )
),
);
/**
* UM hook
*
* @type filter
* @title um_admin_extend_directory_options_general
* @description Extend Directory options fields
* @input_vars
* [{"var":"$fields","type":"array","desc":"Directory options fields"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_admin_directory_sort_users_select', 'function_name', 10, 1 );
* @example
* <?php
* add_filter( 'um_admin_directory_sort_users_select', 'my_directory_sort_users_select', 10, 1 );
* function my_directory_sort_users_select( $sort_types ) {
* // your code here
* return $sort_types;
* }
* ?>
*/
$fields = apply_filters( 'um_admin_extend_directory_options_profile', $fields );
UM()->admin_forms( array(
'class' => 'um-member-directory-profile um-half-column',
'prefix_id' => 'um_metadata',
'fields' => array(
array(
'id' => '_um_profile_photo',
'type' => 'checkbox',
'label' => __( 'Enable Profile Photo', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_profile_photo', null, 1 ),
),
array(
'id' => '_um_cover_photos',
'type' => 'checkbox',
'label' => __( 'Enable Cover Photo', 'ultimate-member' ),
'tooltip' => __( 'If turned on, the users cover photo will appear in the directory', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_cover_photos', null, 1 ),
),
array(
'id' => '_um_show_name',
'type' => 'checkbox',
'label' => __( 'Show display name', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_name', null, 1 ),
),
array(
'id' => '_um_show_tagline',
'type' => 'checkbox',
'label' => __( 'Show tagline below profile name', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_tagline' ),
),
array(
'id' => '_um_tagline_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to display in tagline', 'ultimate-member' ),
'value' => $_um_tagline_fields,
'conditional' => array( '_um_show_tagline', '=', 1 ),
'add_text' => __( 'Add New Custom Field','ultimate-member' ),
'options' => $user_fields,
'show_default_number' => 1,
),
array(
'id' => '_um_show_userinfo',
'type' => 'checkbox',
'label' => __( 'Show extra user information below tagline?', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_userinfo' ),
),
array(
'id' => '_um_userinfo_animate',
'type' => 'checkbox',
'label' => __( 'Enable reveal section transition by default', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_userinfo_animate' ),
'conditional' => array( '_um_show_userinfo', '=', 1 )
),
array(
'id' => '_um_reveal_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to display in reveal section', 'ultimate-member' ),
'value' => $_um_reveal_fields,
'add_text' => __( 'Add New Custom Field', 'ultimate-member' ),
'conditional' => array( '_um_show_userinfo', '=', 1 ),
'options' => $user_fields,
'show_default_number' => 1,
),
array(
'id' => '_um_show_social',
'type' => 'checkbox',
'label' => __( 'Show social connect icons', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_show_social' ),
'conditional' => array( '_um_show_userinfo', '=', 1 )
)
)
'class' => 'um-member-directory-profile um-half-column',
'prefix_id' => 'um_metadata',
'fields' => $fields,
) )->render_form(); ?>
<div class="um-admin-clear"></div>
</div>
+73 -68
View File
@@ -1,14 +1,35 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<?php if ( ! defined( 'ABSPATH' ) ) exit;
global $post_id; ?>
<div class="um-admin-metabox">
<?php
$can_search_array = array();
foreach ( UM()->roles()->get_roles() as $key => $value ) {
$_um_roles_can_search = UM()->query()->get_meta_value( '_um_roles_can_search', $key );
if ( ! empty( $_um_roles_can_search ) )
$can_search_array[] = $_um_roles_can_search;
}
/*$_um_roles_search_value = array();
$_um_roles_search = get_post_meta( $post_id, '_um_roles_can_search', true );
if ( ! empty( $_um_roles_search ) ) {
foreach ( UM()->roles()->get_roles() as $key => $value ) {
if ( in_array( $key, array_keys( $_um_roles_search ) ) ) {
$_um_roles_search_value[] = $key;
}
}
}*/
$_um_roles_search_value = get_post_meta( $post_id, '_um_roles_can_search', true );
$_um_roles_search_value = empty( $_um_roles_search_value ) ? array() : $_um_roles_search_value;
/*$_um_roles_filter_value = array();
$_um_roles_filter = get_post_meta( $post_id, '_um_roles_can_filter', true );
if ( ! empty( $_um_roles_filter ) ) {
foreach ( UM()->roles()->get_roles() as $key => $value ) {
if ( in_array( $key, array_keys( $_um_roles_filter ) ) ) {
$_um_roles_filter_value[] = $key;
}
}
}*/
$_um_roles_filter_value = get_post_meta( $post_id, '_um_roles_can_filter', true );
$_um_roles_filter_value = empty( $_um_roles_filter_value ) ? array() : $_um_roles_filter_value;
/**
* UM hook
@@ -36,84 +57,68 @@
$searchable_fields = $searchable_fields + $custom_search;
$user_fields = array();
foreach ( $searchable_fields as $key => $arr ) {
$user_fields[$key] = isset( $arr['title'] ) ? $arr['title'] : '';
$user_fields[ $key ] = isset( $arr['title'] ) ? $arr['title'] : '';
}
$post_id = get_the_ID();
$_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true );
//$post_id = get_the_ID();
$_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true );
UM()->admin_forms( array(
'class' => 'um-member-directory-search um-half-column',
'prefix_id' => 'um_metadata',
'fields' => array(
'class' => 'um-member-directory-search um-half-column',
'prefix_id' => 'um_metadata',
'fields' => array(
array(
'id' => '_um_search',
'type' => 'checkbox',
'label' => __( 'Enable Search feature', 'ultimate-member' ),
'tooltip' => __( 'If turned on, users will be able to search members in this directory', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_search' ),
'id' => '_um_search',
'type' => 'checkbox',
'label' => __( 'Enable Search feature', 'ultimate-member' ),
'tooltip' => __( 'If turned on, users will be able to search members in this directory', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_search' ),
),
array(
'id' => '_um_must_search',
'type' => 'checkbox',
'label' => __( 'Show results only after search', 'ultimate-member' ),
'tooltip' => __( 'If turned on, member results will only appear after search is performed', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_must_search' ),
'id' => '_um_roles_can_search',
'type' => 'multi_checkbox',
'label' => __( 'User Roles that can use search', 'ultimate-member' ),
'tooltip' => __( 'If you want to allow specific user roles to be able to search only', 'ultimate-member' ),
'value' => $_um_roles_search_value,
'options' => UM()->roles()->get_roles(),
'columns' => 3,
'conditional' => array( '_um_search', '=', 1 )
),
array(
'id' => '_um_roles_can_search',
'type' => 'select',
'multi' => true,
'label' => __( 'User Roles that can use search', 'ultimate-member' ),
'tooltip' => __( 'If you want to allow specific user roles to be able to search only', 'ultimate-member' ),
'value' => $can_search_array,
'options' => UM()->roles()->get_roles(),
'conditional' => array( '_um_search', '=', 1 )
'id' => '_um_filters',
'type' => 'checkbox',
'label' => __( 'Enable Filters feature', 'ultimate-member' ),
'tooltip' => __( 'If turned on, users will be able to filter members in this directory', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_filters' ),
),
array(
'id' => '_um_search_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to enable in search', 'ultimate-member' ),
'value' => $_um_search_fields,
'conditional' => array( '_um_search', '=', 1 ),
'options' => $user_fields,
'add_text' => __( 'Add New Custom Field','ultimate-member' ),
'show_default_number' => 1,
'id' => '_um_roles_can_filter',
'type' => 'multi_checkbox',
'label' => __( 'User Roles that can use filters', 'ultimate-member' ),
'tooltip' => __( 'If you want to allow specific user roles to be able to filter only', 'ultimate-member' ),
'value' => $_um_roles_filter_value,
'options' => UM()->roles()->get_roles(),
'columns' => 3,
'conditional' => array( '_um_filters', '=', 1 )
),
array(
'id' => '_um_search_filters',
'type' => 'text',
'label' => __( 'Additional search filters', 'ultimate-member' ),
'tooltip' => __( 'Additional search filters like URL parameters' ),
'value' => UM()->query()->get_meta_value('_um_search_filters', null, '' ),
'conditional' => array( '_um_search', '=', 1 ),
'placeholder' => 'field1=val1&field2=val2'
'id' => '_um_search_fields',
'type' => 'multi_selects',
'label' => __( 'Choose filter(s) meta to enable', 'ultimate-member' ),
'value' => $_um_search_fields,
'conditional' => array( '_um_filters', '=', 1 ),
'options' => UM()->member_directory()->filter_fields,
'add_text' => __( 'Add New Custom Field', 'ultimate-member' ),
'show_default_number' => 1,
),
array(
'id' => '_um_directory_header',
'type' => 'text',
'label' => __( 'Results Text', 'ultimate-member' ),
'tooltip' => __( 'Customize the search result text . e.g. Found 3,000 Members. Leave this blank to not show result text', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_header', null, __('{total_users} Members','ultimate-member') ),
'conditional' => array( '_um_search', '=', 1 )
'id' => '_um_search_filters',
'type' => 'text',
'label' => __( 'Default filters', 'ultimate-member' ),
'tooltip' => __( 'You can set default filters like URL parameters', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_search_filters', null, 'na' ),
'placeholder' => 'field1=val1&field2=val2'
),
array(
'id' => '_um_directory_header_single',
'type' => 'text',
'label' => __( 'Single Result Text', 'ultimate-member' ),
'tooltip' => __( 'Same as above but in case of 1 user found only', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_header_single', null, __('{total_users} Member','ultimate-member') ),
'conditional' => array( '_um_search', '=', 1 )
),
array(
'id' => '_um_directory_no_users',
'type' => 'text',
'label' => __( 'Custom text if no users were found', 'ultimate-member' ),
'tooltip' => __( 'This is the text that is displayed if no users are found during a search', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value('_um_directory_no_users', null, __('We are sorry. We cannot find any users who match your search criteria.','ultimate-member') ),
'conditional' => array( '_um_search', '=', 1 )
)
)
) )->render_form(); ?>
@@ -0,0 +1,54 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit;
global $post_id;
$_um_sorting_fields = get_post_meta( $post_id, '_um_sorting_fields', true );
$_um_sorting_fields = empty( $_um_sorting_fields ) ? array() : $_um_sorting_fields; ?>
<div class="um-admin-metabox">
<?php $fields = array(
array(
'id' => '_um_sortby',
'type' => 'select',
'label' => __( 'Default sort users by', 'ultimate-member' ),
'tooltip' => __( 'Default sorting users by a specific parameter in the directory', 'ultimate-member' ),
'options' => UM()->member_directory()->default_sorting,
'value' => UM()->query()->get_meta_value( '_um_sortby' ),
),
array(
'id' => '_um_sortby_custom',
'type' => 'text',
'label' => __( 'Meta key', 'ultimate-member' ),
'tooltip' => __( 'To sort by a custom field, enter the meta key of field here', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_sortby_custom', null, 'na' ),
'conditional' => array( '_um_sortby', '=', 'other' )
),
array(
'id' => '_um_enable_sorting',
'type' => 'checkbox',
'label' => __( 'Enable custom sorting', 'ultimate-member' ),
'tooltip' => __( 'Whether to provide an ability to change the sorting on the directory page', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_enable_sorting' ),
),
array(
'id' => '_um_sorting_fields',
'type' => 'multi_selects',
'label' => __( 'Choose field(s) to enable in sorting', 'ultimate-member' ),
'value' => $_um_sorting_fields,
'options' => UM()->member_directory()->sort_fields,
'add_text' => __( 'Add New Field', 'ultimate-member' ),
'show_default_number' => 1,
'conditional' => array( '_um_enable_sorting', '=', 1 )
)
);
UM()->admin_forms( array(
'class' => 'um-member-directory-sorting um-half-column',
'prefix_id' => 'um_metadata',
'fields' => $fields
) )->render_form(); ?>
<div class="um-admin-clear"></div>
</div>
+14
View File
@@ -563,6 +563,7 @@ if ( ! class_exists( 'UM' ) ) {
$this->mobile();
$this->external_integrations();
$this->gdpr();
$this->member_directory();
//if multisite networks active
if ( is_multisite() ) {
@@ -572,6 +573,19 @@ if ( ! class_exists( 'UM' ) ) {
}
/**
* @since 2.1.0
*
* @return um\core\Member_Directory()
*/
function member_directory() {
if ( empty( $this->classes['member_directory'] ) ) {
$this->classes['member_directory'] = new um\core\Member_Directory();
}
return $this->classes['member_directory'];
}
/**
* Get extension API
*
+5 -2
View File
@@ -135,7 +135,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
) );
wp_localize_script( 'um_scripts', 'um_scripts', $localize_data );
wp_register_script('um_members', $this->js_baseurl . 'um-members' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
wp_register_script('um_members', $this->js_baseurl . 'um-members' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'jquery-ui-slider' ), ultimatemember_version, true );
wp_register_script('um_profile', $this->js_baseurl . 'um-profile' . $this->suffix . '.js', array( 'jquery', 'wp-util' ), ultimatemember_version, true );
wp_register_script('um_account', $this->js_baseurl . 'um-account' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true );
@@ -166,7 +166,10 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
wp_register_style( 'um_responsive', $this->css_baseurl . 'um-responsive.css', array( 'um_profile', 'um_crop' ), ultimatemember_version );
wp_register_style( 'um_styles', $this->css_baseurl . 'um-styles.css', array(), ultimatemember_version );
wp_register_style( 'um_members', $this->css_baseurl . 'um-members.css', array(), ultimatemember_version );
wp_register_style( 'um_ui', $this->css_baseurl . 'jquery-ui.css', array(), ultimatemember_version );
wp_register_style( 'um_members', $this->css_baseurl . 'um-members.css', array( 'um_ui' ), ultimatemember_version );
wp_register_style( 'um_profile', $this->css_baseurl . 'um-profile.css', array(), ultimatemember_version );
wp_register_style( 'um_account', $this->css_baseurl . 'um-account.css', array(), ultimatemember_version );
wp_register_style( 'um_misc', $this->css_baseurl . 'um-misc.css', array(), ultimatemember_version );
+194
View File
@@ -0,0 +1,194 @@
<?php
namespace um\core;
if ( ! defined( 'ABSPATH' ) ) exit;
if ( ! class_exists( 'um\core\Member_Directory' ) ) {
/**
* Class Member_Directory
* @package um\core
*/
class Member_Directory {
/**
* Member Directory Views
*
* @var array
*/
var $view_types = array();
/**
* @var array
*/
var $sort_fields = array();
/**
* @var array
*/
var $default_sorting = array();
/**
* @var array
*/
var $filter_fields = array();
var $filter_supported_fields = array();
var $filter_types = array(
'select',
'slider',
'datepicker',
'timepicker',
);
/**
* Member_Directory constructor.
*/
function __construct() {
add_filter( 'plugins_loaded', array( &$this, 'init_variables' ), 99999 );
add_filter( 'um_member_directory_meta_value_before_save', array( &$this, 'before_save_data' ), 10, 3 );
}
/**
* @param $value
* @param $key
* @param $post_id
*
* @return array
*/
function before_save_data( $value, $key, $post_id ) {
$post = get_post( $post_id );
if ( $post->post_type == 'um_directory' ) {
if ( ! empty( $value ) && in_array( $key, array( '_um_view_types', '_um_roles', '_um_roles_can_search', '_um_roles_can_filter' ) ) ) {
$value = array_keys( $value );
}
}
return $value;
}
/**
*
*/
function init_variables() {
// Types
$this->view_types = apply_filters( 'um_member_directory_views', array(
'grid' => array( 'title' => __( 'Grid', 'ultimate-member' ), 'icon' => 'um-faicon-th' ),
'list' => array( 'title' => __( 'List', 'ultimate-member' ), 'icon' => 'um-faicon-list' ),
) );
// Sort
$this->sort_fields = apply_filters( 'um_members_directory_sort_fields', array(
'user_registered_desc' => __( 'New Users First', 'ultimate-member' ),
'user_registered_asc' => __( 'Old Users First', 'ultimate-member' ),
'username' => __( 'Username', 'ultimate-member' ),
'first_name' => __( 'First Name', 'ultimate-member' ),
'last_name' => __( 'Last Name', 'ultimate-member' ),
'display_name' => __( 'Display Name', 'ultimate-member' ),
'last_login' => __( 'Last Login', 'ultimate-member' ),
) );
asort( $this->sort_fields );
$this->default_sorting = apply_filters( 'um_members_directory_default_sort', array_merge( $this->sort_fields, array(
'random' => __( 'Random', 'ultimate-member' ),
'other' => __( 'Other (Custom Field)', 'ultimate-member' ),
) ) );
asort( $this->default_sorting );
// <!-- <option value="description">Biography</option> to Search-->
//<!-- <option value="user_email">E-mail Address</option> to Search-->
//<!-- <option value="first_name">First Name</option> to Search-->
//<!-- <option value="last_name">Last Name</option> to Search-->
//<!-- <option value="mobile_number">Mobile Number</option> to Search-->
//<!-- <option value="nickname">Nickname</option> to Search-->
//<!-- <option value="phone_number">Phone Number</option> to Search-->
//<!-- <option value="secondary_user_email">Secondary E-mail Address</option> to Search-->
//<!-- <option value="user_login">Username</option> to Search-->
//<!-- <option value="username">Username or E-mail</option> - username to Search-->
//<!-- <option value="gm">gm</option> - google maps field to Search-->
//<!-- <option value="numberr">number</option> - number field to Search-->
//<!-- <option value="scm">scm</option> - Soundcloud field to Search-->
//<!-- <option value="test">test</option> - text box field to Search-->
//<!-- <option value="textareaa">textareaa</option> - textarea field to Search-->
//<!-- <option value="vimeov">vimeov</option> - Vimeo field to Search-->
//<!-- <option value="youtubev">youtubev</option> - Youtube field to Search-->
//<!-- URL fields to Search-->
//<!-- Password skip-->
//<!-- File, Image Upload maybe search by file,image name-->
//<!---->
//<!---->
//<!-- DatePicker, TimePicker to Filter-->
//<!-- Rating field to Filter-->
//<!-- needs to be added 'birth_date' - Age to Filter-->
//<!-- <option value="checkboxx">checkbox</option> - checkbox field to Filter-->
//<!-- <option value="drop">drop</option> - select field to Filter-->
//<!-- <option value="radi">radi</option> - radio field to Filter-->
//<!-- <option value="multidrop">multidrop</option> - multiselect field to Filter-->
//<!-- <option value="role_radio">Roles (Radio)</option> - roles merge to Filter-->
//<!-- <option value="user_registered">Registration Date</option> - to Filter-->
//<!-- <option value="gender">Gender</option> to Filter-->
//<!-- <option value="languages">Languages</option> to Filter-->
//<!-- <option value="_um_last_login">Last Login</option> to Filter-->
//<!-- <option value="country">Country</option> to Filter-->
//<!---->
//<!-- So there are next filters:-->
//<!---->
//<!-- Predefined Fields:-->
//<!-- Country, Gender, Age(Birth Date field), Last Login, User Registered-->
//<!-- Languages, Roles (merge dropdown+radio)-->
//<!---->
//<!-- Custom Fields:-->
//<!-- all TimePicker, Datepicker,-->
//<!-- Rating field(by stars), Checkbox, Radio, Select, Multi-select custom fields-->
// 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' ),
);
$this->filter_supported_fields = apply_filters( 'um_members_directory_custom_field_types_supported_filter', array( 'date', 'time', 'select', 'multiselect', 'radio', 'checkbox', 'rating' ) );
foreach ( UM()->builtin()->saved_fields as $key => $data ) {
if ( isset( $data['type'] ) && in_array( $data['type'], $this->filter_supported_fields ) ) {
if ( array_search( $data['title'], $this->filter_fields ) !== false ) {
$data['title'] = $data['title'] . ' (' . $key . ')';
}
$this->filter_fields[ $key ] = $data['title'];
}
}
$this->filter_fields = apply_filters( 'um_members_directory_filter_fields', $this->filter_fields );
ksort( $this->filter_fields );
}
}
}
File diff suppressed because it is too large Load Diff
+96 -74
View File
@@ -261,6 +261,99 @@ function um_submit_form_errors_hook( $args ) {
add_action( 'um_submit_form_errors_hook', 'um_submit_form_errors_hook', 10 );
function um_check_conditions_on_submit( $condition, $fields, $args ) {
$continue = false;
list( $visibility, $parent_key, $op, $parent_value ) = $condition;
if ( ! isset( $args[ $parent_key ] ) ) {
$continue = true;
return $continue;
}
if ( ! empty( $fields[ $parent_key ]['conditions'] ) ) {
foreach ( $fields[ $parent_key ]['conditions'] as $parent_condition ) {
$continue = um_check_conditions_on_submit( $parent_condition, $fields, $args );
if ( ! empty( $continue ) ) {
return $continue;
}
}
}
$cond_value = ( $fields[ $parent_key ]['type'] == 'radio' ) ? $args[ $parent_key ][0] : $args[ $parent_key ];
if ( $visibility == 'hide' ) {
if ( $op == 'empty' ) {
if ( empty( $cond_value ) ) {
$continue = true;
}
} elseif ( $op == 'not empty' ) {
if ( ! empty( $cond_value ) ) {
$continue = true;
}
} elseif ( $op == 'equals to' ) {
if ( $cond_value == $parent_value ) {
$continue = true;
}
} elseif ( $op == 'not equals' ) {
if ( $cond_value != $parent_value ) {
$continue = true;
}
} elseif ( $op == 'greater than' ) {
if ( $cond_value > $parent_value ) {
$continue = true;
}
} elseif ( $op == 'less than' ) {
if ( $cond_value < $parent_value ) {
$continue = true;
}
} elseif ( $op == 'contains' ) {
if ( is_string( $cond_value ) && strstr( $cond_value, $parent_value ) ) {
$continue = true;
}
if( is_array( $cond_value ) && in_array( $parent_value, $cond_value ) ) {
$continue = true;
}
}
} elseif ( $visibility == 'show' ) {
if ( $op == 'empty' ) {
if ( ! empty( $cond_value ) ) {
$continue = true;
}
} elseif ( $op == 'not empty' ) {
if ( empty( $cond_value ) ) {
$continue = true;
}
} elseif ( $op == 'equals to' ) {
if ( $cond_value != $parent_value ) {
$continue = true;
}
} elseif ( $op == 'not equals' ) {
if ( $cond_value == $parent_value ) {
$continue = true;
}
} elseif ( $op == 'greater than' ) {
if ( $cond_value <= $parent_value ) {
$continue = true;
}
} elseif ( $op == 'less than' ) {
if ( $cond_value >= $parent_value ) {
$continue = true;
}
} elseif ( $op == 'contains' ) {
if ( is_string( $cond_value ) && ! strstr( $cond_value, $parent_value ) ) {
$continue = true;
}
if( is_array( $cond_value ) && !in_array( $parent_value, $cond_value ) ) {
$continue = true;
}
}
}
return $continue;
}
/**
* Error processing hook : standard
*
@@ -312,80 +405,9 @@ function um_submit_form_errors_hook_( $args ) {
if ( ! empty( $array['conditions'] ) ) {
foreach ( $array['conditions'] as $condition ) {
list( $visibility, $parent_key, $op, $parent_value ) = $condition;
if ( ! isset( $args[ $parent_key ] ) ) {
continue;
}
$cond_value = ( $fields[ $parent_key ]['type'] == 'radio' ) ? $args[ $parent_key ][0] : $args[ $parent_key ];
if ( $visibility == 'hide' ) {
if ( $op == 'empty' ) {
if ( empty( $cond_value ) ) {
continue 2;
}
} elseif ( $op == 'not empty' ) {
if ( ! empty( $cond_value ) ) {
continue;
}
} elseif ( $op == 'equals to' ) {
if ( $cond_value == $parent_value ) {
continue;
}
} elseif ( $op == 'not equals' ) {
if ( $cond_value != $parent_value ) {
continue;
}
} elseif ( $op == 'greater than' ) {
if ( $cond_value > $parent_value ) {
continue;
}
} elseif ( $op == 'less than' ) {
if ( $cond_value < $parent_value ) {
continue;
}
} elseif ( $op == 'contains' ) {
if ( is_string( $cond_value ) && strstr( $cond_value, $parent_value ) ) {
continue;
}
if( is_array( $cond_value ) && in_array( $parent_value, $cond_value ) ) {
continue;
}
}
} elseif ( $visibility == 'show' ) {
if ( $op == 'empty' ) {
if ( ! empty( $cond_value ) ) {
continue;
}
} elseif ( $op == 'not empty' ) {
if ( empty( $cond_value ) ) {
continue;
}
} elseif ( $op == 'equals to' ) {
if ( $cond_value != $parent_value ) {
continue;
}
} elseif ( $op == 'not equals' ) {
if ( $cond_value == $parent_value ) {
continue;
}
} elseif ( $op == 'greater than' ) {
if ( $cond_value <= $parent_value ) {
continue;
}
} elseif ( $op == 'less than' ) {
if ( $cond_value >= $parent_value ) {
continue;
}
} elseif ( $op == 'contains' ) {
if ( is_string( $cond_value ) && ! strstr( $cond_value, $parent_value ) ) {
continue;
}
if( is_array( $cond_value ) && !in_array( $parent_value, $cond_value ) ) {
continue;
}
}
$continue = um_check_conditions_on_submit( $condition, $fields, $args );
if ( $continue === true ) {
continue 2;
}
}
}
+1 -1
View File
@@ -94,7 +94,7 @@ function um_members_directory_search( $args ) {
}
}
add_action( 'um_members_directory_search', 'um_members_directory_search' );
//add_action( 'um_members_directory_search', 'um_members_directory_search' );
/**
+130
View File
@@ -0,0 +1,130 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<script type="text/template" id="tmpl-um-member-list">
<div class="um-members-list">
<div class="um-clear"></div>
<div class="um-members-intro">
<div class="um-members-total">
<# if ( data.args.show_count ) { #>
<# if ( data.users.length == 1 ) { #>
{{{data.pagination.header_single}}}
<# } else if ( data.users.length > 1 ) { #>
{{{data.pagination.header}}}
<# } #>
<# } #>
</div>
</div>
<div class="um-clear"></div>
<# if ( data.users.length > 0 ) { #>
<# _.each( data.users, function( user, key, list ) { #>
<div class="um-member um-role-{{{user.role}}} {{{user.account_status}}} <?php if ( $cover_photos ) { echo 'with-cover'; } ?>">
<div class="um-clear"></div>
<span class="um-member-status {{{user.account_status}}}">{{{user.account_status_name}}}</span>
<?php if ( $profile_photo ) :
$default_size = str_replace( 'px', '', UM()->options()->get( 'profile_photosize' ) );
$corner = UM()->options()->get( 'profile_photocorner' );
?>
<div class="um-member-photo radius-<?php echo $corner; ?>">
<a href="{{{user.profile_url}}}" title="{{{user.display_name}}}"> {{{user.avatar}}} </a>
</div>
<?php endif; ?>
<div class="um-member-card <?php echo ! $profile_photo ? 'no-photo' : '' ?>">
<div class="um-member-card-header">
<?php if ( $show_name ) : ?>
<div class="um-member-name">
<a href="{{{user.profile_url}}}" title="{{{user.display_name}}}"> {{{user.display_name_html}}} </a>
</div>
<?php endif; ?>
<?php do_action( 'um_members_after_user_name_tmpl', $args ); ?>
{{{user.hook_after_user_name}}}
</div>
<div class="um-member-card-content">
<?php
if ( $show_tagline && is_array( $tagline_fields ) ) :
foreach ( $tagline_fields as $key ) :
if ( empty( $key ) ) {
continue;
}
?>
<# if ( user.<?php echo $key;?> ) { #>
<div class="um-member-tagline um-member-tagline-<?php echo $key;?>"> {{{user.<?php echo $key;?>}}} </div>
<# } #>
<?php
endforeach;
endif;
?>
</div>
<?php if ( $show_userinfo ) : ?>
<div class="um-member-meta-main">
<div class="um-member-meta no-animate">
<?php
foreach ( $reveal_fields as $key ) :
if ( empty( $key ) ) {
continue;
}
?>
<# if ( user.<?php echo $key;?> ) { #>
<div class="um-member-metaline um-member-metaline-<?php echo $key; ?>"> <span> <strong>{{{user.label_<?php echo $key;?>}}}:&nbsp;</strong> {{{user.<?php echo $key;?>}}} </span> </div>
<# } #>
<?php endforeach; ?>
<?php if ( $show_social ) : ?>
<div class="um-member-connect">{{{user.social_urls}}}</div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
</div>
<div class="um-member-card-actions">
<# if ( user.actions.length > 0 ) { #>
<# _.each( user.actions, function( action, action_key, action_list ) { #>
<div class="{{{action.wrapper_class}}}">
<a href="{{{action.url}}}" class="{{{action.class}}}">
{{{action.title}}}
</a>
</div>
<# }); #>
<# } #>
<?php do_action( 'um_members_just_after_name_tmpl', $args ); ?>
{{{user.hook_just_after_name}}}
</div>
<div class="um-clear"></div>
</div>
<div class="um-clear"></div>
<# }); #>
<# } else { #>
<div class="um-members-none">
<p><?php echo $args['no_users']; ?></p>
</div>
<# } #>
<div class="um-clear"></div>
</div>
</script>
+27
View File
@@ -0,0 +1,27 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<script type="text/template" id="tmpl-um-members-pagination">
<# if ( data.pagination.pages_to_show.length > 0 ) { #>
<div class="um-members-pagidrop uimob340-show uimob500-show">
<?php _e( 'Jump to page:','ultimate-member' ); ?>
<select class="um-s2 um-members-pagi-dropdown" style="width: 100px;display:inline-block;">
<# _.each( data.pagination.pages_to_show, function( page, key, list ) { #>
<option value="{{{page}}}" <# if ( page == data.pagination.current_page ) { #>selected<# } #>>{{{page}}} <?php _e( 'of','ultimate-member' ) ?> {{{data.pagination.total_pages}}}</option>
<# }); #>
</select>
</div>
<div class="um-members-pagi uimob340-hide uimob500-hide">
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == 1 ) { #>disabled<# } #>" data-page="first"><i class="um-faicon-angle-double-left"></i></span>
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == 1 ) { #>disabled<# } #>" data-page="prev"><i class="um-faicon-angle-left"></i></span>
<# _.each( data.pagination.pages_to_show, function( page, key, list ) { #>
<span class="pagi <# if ( page == data.pagination.current_page ) { #>current<# } #>" data-page="{{{page}}}">{{{page}}}</span>
<# }); #>
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == data.pagination.total_pages ) { #>disabled<# } #>" data-page="next"><i class="um-faicon-angle-right"></i></span>
<span class="pagi pagi-arrow <# if ( data.pagination.current_page == data.pagination.total_pages ) { #>disabled<# } #>" data-page="last"><i class="um-faicon-angle-double-right"></i></span>
</div>
<# } #>
</script>
+188 -62
View File
@@ -1,73 +1,197 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<?php if ( ! defined( 'ABSPATH' ) ) exit;
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>">
// Get default and real arguments
$def_args = array();
foreach ( UM()->config()->core_directory_meta['members'] as $k => $v ) {
$key = str_replace( '_um_', '', $k );
$def_args[ $key ] = $v;
}
$args = array_merge( $def_args, $args );
//current user priority role
$priority_user_role = false;
if ( is_user_logged_in() ) {
$priority_user_role = UM()->roles()->get_priority_user_role( um_user( 'ID' ) );
}
// Views
$single_view = false;
$current_view = 'grid';
if ( empty( $args['view_types'] ) || ! is_array( $args['view_types'] ) ) {
$args['view_types'] = array(
'grid',
'list'
);
}
if ( count( $args['view_types'] ) == 1 ) {
$single_view = true;
$current_view = $args['view_types'][0];
} else {
$args['default_view'] = ! empty( $args['default_view'] ) ? $args['default_view'] : $args['view_types'][0];
$current_view = ( ! empty( $_GET['view_type'] ) && in_array( $_GET['view_type'], $args['view_types'] ) ) ? $_GET['view_type'] : $args['default_view'];
}
// Sorting
$default_sorting = ! empty( $args['sortby'] ) ? $args['sortby'] : 'user_registered_desc';
if ( $args['enable_sorting'] ) {
$sorting_options = empty( $args['sorting_fields'] ) ? array() : $args['sorting_fields'];
if ( ! in_array( $default_sorting, $sorting_options ) ) {
$sorting_options[] = $default_sorting;
}
if ( ! empty( $sorting_options ) ) {
$all_sorting_options = UM()->member_directory()->sort_fields;
$sorting_options = array_intersect_key( $all_sorting_options, array_flip( $sorting_options ) );
}
}
//Search
$search = isset( $args['search'] ) ? $args['search'] : false;
$show_search = empty( $args['roles_can_search'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $args['roles_can_search'] ) );
//Filters
$filters = isset( $args['filters'] ) ? $args['filters'] : false;
$show_filters = empty( $args['roles_can_filter'] ) || ( ! empty( $priority_user_role ) && in_array( $priority_user_role, $args['roles_can_filter'] ) );
$search_filters = array();
if ( isset( $args['search_fields'] ) ) {
$search_filters = apply_filters( 'um_frontend_member_search_filters', array_unique( array_filter( $args['search_fields'] ) ) );
}
// Classes
$classes = '';
if ( $search && $show_search ) {
$classes .= ' um-member-with-search';
}
if ( $filters && $show_filters && count( $search_filters ) ) {
$classes .= ' um-member-with-filters';
}
if ( ! $single_view ) {
$classes .= ' um-member-with-view';
}
if ( $args['enable_sorting'] && ! empty( $sorting_options ) && count( $sorting_options ) > 1 ) {
$classes .= ' um-member-with-sorting';
} ?>
<div class="um <?php echo esc_attr( $this->get_class( $mode ) ); ?> um-<?php echo esc_attr( $form_id ); ?>" data-view_type="<?php echo esc_attr( $current_view ) ?>" data-hash="<?php echo esc_attr( substr( md5( $form_id ), 10, 5 ) ) ?>">
<div class="um-form">
<?php
/**
* UM hook
*
* @type action
* @title um_members_directory_search
* @description Member directory search
* @input_vars
* [{"var":"$args","type":"array","desc":"Member directory shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_members_directory_search', 'function_name', 10, 1 );
* @example
* <?php
* add_action( 'um_members_directory_search', 'my_members_directory_search', 10, 1 );
* function my_members_directory_search( $args ) {
* // your code here
* }
* ?>
*/
do_action( 'um_members_directory_search', $args );
<div class="um-member-directory-header <?php echo esc_attr( $classes ) ?>">
<?php if ( $search && $show_search ) { ?>
<div class="um-member-directory-search-line">
<input type="text" class="um-search-line" placeholder="<?php esc_attr_e( 'Search', 'ultimate-member' ) ?>" value="" />
<div class="uimob340-show uimob500-show">
<a href="javascript:void(0);" class="um-button um-do-search um-tip-n" title="<?php esc_attr_e( 'Search', 'ultimate-member' ); ?>">
<i class="um-faicon-search"></i>
</a>
</div>
<div class="uimob340-hide uimob500-hide">
<a href="javascript:void(0);" class="um-button um-do-search"><?php _e( 'Search', 'ultimate-member' ); ?></a>
</div>
</div>
<?php }
/**
* UM hook
*
* @type action
* @title um_members_directory_head
* @description Member directory header
* @input_vars
* [{"var":"$args","type":"array","desc":"Member directory shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_members_directory_head', 'function_name', 10, 1 );
* @example
* <?php
* add_action( 'um_members_directory_head', 'my_members_directory_head', 10, 1 );
* function my_members_directory_head( $args ) {
* // your code here
* }
* ?>
*/
if ( $args['enable_sorting'] && ! empty( $sorting_options ) && count( $sorting_options ) > 1 ) { ?>
<div class="um-member-directory-sorting">
<select class="um-s3 um-member-directory-sorting-options" id="um-member-directory-sorting-select-<?php echo esc_attr( $form_id ) ?>" data-placeholder="<?php esc_attr_e( 'Sort By', 'ultimate-member' ); ?>">
<?php foreach ( $sorting_options as $value => $title ) { ?>
<option value="<?php echo $value ?>" <?php selected( $default_sorting, $value ) ?>><?php echo $title ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
<div class="um-member-directory-actions">
<?php if ( $filters && $show_filters && count( $search_filters ) ) { ?>
<div class="um-member-directory-filters">
<a href="javascript:void(0);" class="um-member-directory-filters-a um-tip-n" title="<?php esc_attr_e( 'Filters', 'ultimate-member' ); ?>">
<i class="um-faicon-sliders"></i>
</a>
</div>
<?php } ?>
<?php if ( ! $single_view ) {
$view_types = 0;
foreach ( UM()->member_directory()->view_types as $key => $value ) {
if ( in_array( $key, $args['view_types'] ) ) {
if ( empty( $view_types ) ) { ?>
<div class="um-member-directory-view-type">
<?php }
$view_types++; ?>
<a href="javascript:void(0)"
class="um-member-directory-view-type-a um-tip-n"
data-type="<?php echo $key; ?>"
title="<?php printf( esc_attr__( 'Change to %s', 'ultimate-member' ), $value['title'] ) ?>"
default-title="<?php echo esc_attr( $value['title'] ); ?>"
next-item="" ><i class="<?php echo $value['icon']; ?>"></i></a>
<?php }
}
if ( ! empty( $view_types ) ) { ?>
</div>
<?php }
} ?>
</div>
</div>
<div class="um-clear"></div>
<?php if ( $filters && $show_filters && count( $search_filters ) ) {
if ( ! empty( $args['filters'] ) && is_array( $search_filters ) ) { ?>
<script type="text/template" id="tmpl-um-members-filtered-line">
<# if ( data.filters.length > 0 ) { #>
<# _.each( data.filters, function( filter, key, list ) { #>
<div class="um-members-filter-tag">
<strong>{{{filter.label}}}</strong>: {{{filter.value_label}}}
<div class="um-members-filter-remove" data-name="{{{filter.name}}}" data-value="{{{filter.value}}}" data-range="{{{filter.range}}}">&times;</div></div>
<# }); #>
<# } #>
</script>
<div class="um-search um-search-<?php echo count( $search_filters ) ?>">
<?php foreach ( $search_filters as $i => $filter ) {
$filter_content = UM()->members()->show_filter( $filter );
if ( empty( $filter_content ) ) {
continue;
} ?>
<div class="um-search-filter"> <?php echo $filter_content; ?> </div>
<?php } ?>
<div class="um-clear"></div>
</div>
<div class="um-filtered-line">
<div class="um-clear-filters"><a href="javascript:void(0);" class="um-clear-filters-a"><?php esc_attr_e( 'Clear All Filters', 'ultimate-member' ); ?></a></div>
</div>
<?php
}
}
do_action( 'um_members_directory_head', $args );
?>
/**
* UM hook
*
* @type action
* @title um_members_directory_display
* @description Member directory display content
* @input_vars
* [{"var":"$args","type":"array","desc":"Member directory shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_members_directory_display', 'function_name', 10, 1 );
* @example
* <?php
* add_action( 'um_members_directory_display', 'my_members_directory_display', 10, 1 );
* function my_members_directory_display( $args ) {
* // your code here
* }
* ?>
*/
do_action( 'um_members_directory_display', $args );
<div class="um-members-wrapper">
<div class="um-members-overlay"><div class="um-ajax-loading"></div></div>
</div>
<div class="um-clear"></div>
<div class="um-members-pagination-box"></div>
<?php
/**
* UM hook
*
@@ -88,5 +212,7 @@
* ?>
*/
do_action( 'um_members_directory_footer', $args ); ?>
<div class="um-clear"></div>
</div>
</div>