From 177ef54d88a6abc17d34a7a6da5f1a14ef3c25bc Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Wed, 11 Sep 2019 13:01:44 +0300 Subject: [PATCH] - visual improvements for member directory; - fixed must search/filter option; --- assets/css/um-members.css | 24 +- assets/js/um-members.js | 267 +++++++++++++----- assets/js/um-members.min.js | 2 +- .../admin/templates/directory/general.php | 46 +-- includes/admin/templates/directory/search.php | 21 +- includes/class-config.php | 35 ++- includes/class-init.php | 2 +- includes/core/class-member-directory.php | 9 +- templates/_members-grid.php | 181 ------------ templates/members.php | 67 ++++- 10 files changed, 341 insertions(+), 313 deletions(-) delete mode 100644 templates/_members-grid.php diff --git a/assets/css/um-members.css b/assets/css/um-members.css index 8d41bff6..85eaef31 100644 --- a/assets/css/um-members.css +++ b/assets/css/um-members.css @@ -48,6 +48,14 @@ display: none; } +.select2-container .select2-results li.select2-results__option[aria-disabled=true] { + display: none; +} + +.um-directory .select2-container--disabled { + opacity: 0.6; +} + .um-search.um-search-1 .um-search-filter { width: 100%; padding: 0 0 10px 0; @@ -510,6 +518,11 @@ a.um-edit-profile-btn { z-index: 1; } +.um-member-directory-view-type.um-disabled, +.um-member-directory-view-type.um-disabled a { + cursor: default; +} + .um-members-list .um-member { width:100% !important; padding: 15px 10px; @@ -640,6 +653,7 @@ div.uimob500 .um-members-list .um-member-card-actions { } .um-members-overlay { + display: none; position: absolute; width: 100%; float: left; @@ -735,14 +749,15 @@ div.uimob500 .um-members-list .um-member-card-actions { .um-member-directory-sorting-a:hover, .um-member-directory-filters-a:hover, -.um-member-directory-view-type-a:hover { +.um-member-directory-view-type:not( .um-disabled ) .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 { +.um-member-directory-view-type .um-member-directory-view-type-a:hover, +.um-member-directory-view-type:not( .um-disabled ) .um-member-directory-view-type-a:focus { color:#ddd; text-decoration: none; } @@ -791,13 +806,10 @@ div.uimob500 .um-members-list .um-member-card-actions { } .um-directory .um-clear-filters { - /*margin-left: 20px;*/ + display: none; } .um-directory .um-clear-filters a { - /*float:left;*/ - /*display: inline-block;*/ - /*line-height: 25px;*/ padding: 3px 10px; margin: 0 10px; } diff --git a/assets/js/um-members.js b/assets/js/um-members.js index 20181771..81165486 100644 --- a/assets/js/um-members.js +++ b/assets/js/um-members.js @@ -69,6 +69,10 @@ function um_set_url_from_data( directory, key, value ) { }); var query_string = '?' + query_strings.join( '&' ); + if ( query_string === '?' ) { + query_string = ''; + } + window.history.pushState("string", "UM Member Directory", window.location.origin + window.location.pathname + query_string ); } @@ -221,6 +225,14 @@ function um_ajax_get_members( directory, args ) { directory.data( 'total_pages', answer.pagination.total_pages ); + if ( answer.pagination.total_pages ) { + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + } else { + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + } + jQuery( document ).trigger('um_members_rendered'); um_members_hide_preloader( directory ); @@ -271,11 +283,8 @@ function UM_Member_Grid( container ) { } - - -function um_change_tag( directory ) { +function um_get_filters_data( directory ) { var filters_data = []; - var filter_array = []; directory.find('.um-search-filter').each( function() { @@ -379,32 +388,31 @@ function um_change_tag( directory ) { filter_title = filter.find('div.um-slider-range').data('label'); var filter_value_title = filter.find('div.um-slider-range').data( 'placeholder' ).replace( '\{min_range\}', filter_value_from ) - .replace( '\{max_range\}', filter_value_to ) - .replace( '\{field_label\}', filter.find('div.um-slider-range').data('label') ); + .replace( '\{max_range\}', filter_value_to ) + .replace( '\{field_label\}', filter.find('div.um-slider-range').data('label') ); filters_data.push( {'name':filter_name, 'label':filter_title, 'value_label':filter_value_title, 'value':[filter_value_from, filter_value_to], 'type':filter_type} ); } }); + return filters_data; +} + + +function um_change_tag( directory ) { + var filters_data = um_get_filters_data( directory ); + directory.find('.um-members-filter-tag').remove(); var filtered_line = directory.find('.um-filtered-line'); - if( filtered_line.length ){ + if ( filtered_line.length ){ var filters_template = wp.template( 'um-members-filtered-line' ); filtered_line.prepend( filters_template( {'filters': filters_data} ) ); - if ( filters_data.length > 0 ) { - filtered_line.show(); - show_after_search = false; - } else { - filtered_line.hide(); - show_after_search = true; - } - if ( directory.find( '.um-members-filter-remove' ).length === 0 ) { - directory.find('.um-clear-filters-a').hide(); + directory.find('.um-clear-filters').hide(); } else { - directory.find('.um-clear-filters-a').show(); + directory.find('.um-clear-filters').show(); } } @@ -412,8 +420,59 @@ function um_change_tag( directory ) { } + +function um_run_search( directory ) { + if ( um_is_directory_busy( directory ) ) { + return; + } + um_members_show_preloader( directory ); + + var pre_search = um_get_data_for_directory( directory, 'search' ); + + var search = directory.find('.um-search-line').val(); + if ( search === pre_search || ( search === '' && typeof pre_search == 'undefined' ) ) { + return; + } + + directory.data( 'general_search', search ); + um_set_url_from_data( directory, 'search', search ); + + //set 1st page after search + directory.data( 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); + + var show_after_search = directory.data('must-search'); + var search = um_get_search( directory ); + if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { + if ( show_after_search === 1 ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } + } + + directory.data( 'searched', 1 ); + + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + + um_ajax_get_members( directory ); +} + + jQuery(document).ready( function() { + + jQuery( '.um-search-filter select' ).each( function() { + if ( jQuery(this).find('option:not(:disabled)').length === 1 ) { + jQuery(this).prop('disabled', true); + } + jQuery(this).select2('destroy').select2(); + }); + /** * Change View Type Handlers */ @@ -421,6 +480,10 @@ jQuery(document).ready( function() { //UI for change view type button jQuery( document.body ).on( 'mouseover', '.um-member-directory-view-type', function() { + if ( jQuery(this).hasClass('um-disabled') ) { + return; + } + var $obj = jQuery(this).find('.um-member-directory-view-type-a:visible'); $obj.hide(); @@ -431,6 +494,10 @@ jQuery(document).ready( function() { jQuery(this).find( '.um-member-directory-view-type-a:first' ).show().tipsy('show'); } }).on( 'mouseout', '.um-member-directory-view-type', function() { + if ( jQuery(this).hasClass('um-disabled') ) { + return; + } + jQuery(this).find('.um-member-directory-view-type-a').hide().tipsy('hide'); jQuery(this).find('.um-member-directory-view-type-a[data-type="' + jQuery(this).parents( '.um-directory' ).data('view_type') + '"]').show(); }); @@ -441,11 +508,16 @@ jQuery(document).ready( function() { if ( um_is_directory_busy( directory ) ) { return false; } - um_members_show_preloader( directory ); var $this = jQuery(this); var views = $this.parents('.um-member-directory-view-type'); + if ( views.hasClass('um-disabled') ) { + return; + } + + um_members_show_preloader( directory ); + var $obj = views.find('.um-member-directory-view-type-a:visible'); $obj.hide(); @@ -481,28 +553,8 @@ jQuery(document).ready( function() { //searching jQuery( document.body ).on( 'click', '.um-do-search', function() { - var directory = jQuery(this).parents('.um-directory'); - if ( um_is_directory_busy( directory ) ) { - return; - } - um_members_show_preloader( directory ); - - var pre_search = um_get_data_for_directory( directory, 'search' ); - - var search = directory.find('.um-search-line').val(); - if ( search === pre_search || ( search === '' && typeof pre_search == 'undefined' ) ) { - return; - } - - directory.data( 'general_search', search ); - um_set_url_from_data( directory, 'search', search ); - - //set 1st page after search - directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); - - um_ajax_get_members( directory ); + um_run_search( directory ); }); @@ -510,7 +562,7 @@ jQuery(document).ready( function() { jQuery( document.body ).on( 'keypress', '.um-search-line', function(e) { if ( e.which === 13 ) { var directory = jQuery(this).parents('.um-directory'); - directory.find('.um-do-search').trigger('click'); + um_run_search( directory ); } }); @@ -592,7 +644,11 @@ jQuery(document).ready( function() { directory.find('.pagi[data-page="' + page + '"]').addClass('current'); directory.data( 'page', page ); - um_set_url_from_data( directory, 'page', page ); + if ( page === 1 ) { + um_set_url_from_data( directory, 'page', '' ); + } else { + um_set_url_from_data( directory, 'page', page ); + } um_ajax_get_members( directory ); }); @@ -614,7 +670,11 @@ jQuery(document).ready( function() { directory.find('.pagi[data-page="' + page + '"]').addClass('current'); directory.data( 'page', page ); - um_set_url_from_data( directory, 'page', page ); + if ( page === 1 ) { + um_set_url_from_data( directory, 'page', '' ); + } else { + um_set_url_from_data( directory, 'page', page ); + } um_ajax_get_members( directory ); }); @@ -705,14 +765,25 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); } + //disable options and disable select if all options are disabled + jQuery(this).find('option[value="' + jQuery(this).val() + '"]').prop('disabled', true).hide(); + if ( jQuery(this).find('option:not(:disabled)').length === 1 ) { + jQuery(this).prop('disabled', true); + } + + jQuery(this).select2('destroy').select2(); jQuery(this).val('').trigger( 'change' ); um_ajax_get_members( directory ); um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); }); @@ -754,10 +825,14 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); um_ajax_get_members( directory ); um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); } } }); @@ -820,18 +895,22 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); um_ajax_get_members( directory ); um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); } }); - var $picker = $input.pickadate('picker'); - var $fname = elem.data('filter_name'); - var $frange = elem.data('range'); - var $directory = elem.parents('.um-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_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); if ( typeof query_value !== 'undefined' ) { @@ -905,19 +984,23 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); um_ajax_get_members( directory ); um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); } }); - var $picker = $input.pickatime('picker'); - var $fname = elem.data('filter_name'); - var $frange = elem.data('range'); - var $directory = elem.parents('.um-directory'); + var $picker = $input.pickatime('picker'); + var $fname = elem.data('filter_name'); + var $frange = elem.data('range'); + var $directory = elem.parents('.um-directory'); var query_value = um_get_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); if ( typeof query_value !== 'undefined' ) { @@ -960,6 +1043,16 @@ jQuery(document).ready( function() { um_set_url_from_data( directory, 'filter_' + filter_name, current_value ); + + var select = jQuery( '.um-search-filter select[name="' + filter_name + '"]' ); + select.find('option[value="' + removeItem + '"]').prop('disabled', false).show(); + + //disable options and disable select if all options are disabled + if ( select.find('option:not(:disabled)').length > 1 ) { + select.prop('disabled', false); + } + select.select2('destroy').select2(); + } else if ( type === 'slider' ) { um_set_url_from_data( directory, 'filter_' + filter_name + '_from','' ); um_set_url_from_data( directory, 'filter_' + filter_name + '_to', '' ); @@ -974,16 +1067,32 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); jQuery(this).parents('.um-members-filter-tag').remove(); - um_ajax_get_members( directory ); - if ( directory.find( '.um-members-filter-remove' ).length === 0 ) { - directory.find('.um-clear-filters-a').hide(); + directory.find('.um-clear-filters').hide(); } else { - directory.find('.um-clear-filters-a').show(); + directory.find('.um-clear-filters').show(); } + + var show_after_search = directory.data('must-search'); + var search = um_get_search( directory ); + if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { + if ( show_after_search === 1 ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } + } + + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + + um_ajax_get_members( directory ); }); @@ -1021,6 +1130,15 @@ jQuery(document).ready( function() { um_set_url_from_data( directory, 'filter_' + filter_name, current_value ); + var select = jQuery( '.um-search-filter select[name="' + filter_name + '"]' ); + select.find('option[value="' + removeItem + '"]').prop('disabled', false).show(); + + //disable options and disable select if all options are disabled + if ( select.find('option:not(:disabled)').length > 1 ) { + select.prop('disabled', false); + } + select.select2('destroy').select2(); + } else if ( type === 'slider' ) { um_set_url_from_data( directory, 'filter_' + filter_name + '_from','' ); um_set_url_from_data( directory, 'filter_' + filter_name + '_to', '' ); @@ -1035,12 +1153,26 @@ jQuery(document).ready( function() { //set 1st page after filtration directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); directory.find('.um-members-filter-tag').remove(); - um_ajax_get_members( directory ); - jQuery(this).hide(); + + var show_after_search = directory.data('must-search'); + var search = um_get_search( directory ); + if ( show_after_search === 1 && ! search ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } + + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + + um_ajax_get_members( directory ); }); @@ -1055,9 +1187,14 @@ jQuery(document).ready( function() { var hash = um_members_get_hash( directory ); um_member_directories.push( hash ); - var show_after_search = jQuery(this).data('show'); - if ( show_after_search !== false ) { - return; + var show_after_search = directory.data('must-search'); + var search = um_get_search( directory ); + + var filters_data = um_get_filters_data( directory ); + if ( ! filters_data.length && ! search ) { + if ( show_after_search === 1 ) { + return; + } } um_members_show_preloader( directory ); diff --git a/assets/js/um-members.min.js b/assets/js/um-members.min.js index fbb251e6..548571ec 100644 --- a/assets/js/um-members.min.js +++ b/assets/js/um-members.min.js @@ -1 +1 @@ -var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURI(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]});var _=[];jQuery.each(m,function(e){_.push(e+"="+m[e])});var u="?"+_.join("&");window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+u)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t=e.siblings(".um-slider-range").data("placeholder");t=r?t.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):t.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.find(".um-member-directory-sorting-options").length?e.find(".um-member-directory-sorting-options").val():""}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_ajax_get_members(m,e){var t=um_members_get_hash(m),r=um_get_current_page(m),a=um_get_search(m),i=um_get_sort(m),_=-(new Date).getTimezoneOffset()/60,u={directory_id:t,page:r,search:a,sorting:i,gmt_offset:_,post_refferer:m.data("base-post"),nonce:um_scripts.nonce};m.find(".um-search-filter").length&&m.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(m,"filter_"+r+"_from"),a=um_get_data_for_directory(m,"filter_"+r+"_to");void 0===t&&void 0===a||(u[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(m,"filter_"+r+"_from"),a=um_get_data_for_directory(m,"filter_"+r+"_to");void 0===t&&void 0===a||(u[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(m,"filter_"+r+"_from"),a=um_get_data_for_directory(m,"filter_"+r+"_to");void 0===t&&void 0===a||(u[r]=[t,a])}else{r=e.find("select").attr("name");var i=um_get_data_for_directory(m,"filter_"+r);void 0!==i&&(u[r]=i.split("||"))}}),wp.ajax.send("um_get_members",{data:u,success:function(e){um_member_directory_last_data[t]=e,um_build_template(m,e.users);var r=wp.template("um-members-pagination");m.find(".um-members-pagination-box").html(r(e)),m.data("total_pages",e.pagination.total_pages),jQuery(document).trigger("um_members_rendered"),um_members_hide_preloader(m)},error:function(e){console.log(e),um_members_hide_preloader(m)}})}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t);e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r)),e.addClass("um-loaded"),e.find(".um-members").length&&(UM_Member_Grid(e.find(".um-members")),jQuery(window).trigger("resize")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize")}function UM_Member_Grid(e){e.find(".um-member").length&&e.imagesLoaded(function(){e.masonry({itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"}).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_change_tag(d){var o=[];d.find(".um-search-filter").each(function(){var t,a,_,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)_="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(d,"filter_"+e+"_from"),t=um_get_data_for_directory(d,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=d.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),o.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:_})}}});else if(i.find("input.um-timepicker-filter").length)_="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(d,"filter_"+e+"_from"),t=um_get_data_for_directory(d,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=d.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),o.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:_})}}});else if(i.find("select").length){_="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder");var m=um_get_data_for_directory(d,"filter_"+t);m=void 0===m?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");o.push({name:t,label:a,value_label:r,value:m[e],type:_})})}else if(i.find("div.ui-slider").length){_="slider",t=i.find("div.ui-slider").data("field_name");var e=um_get_data_for_directory(d,"filter_"+t+"_from"),r=um_get_data_for_directory(d,"filter_"+t+"_to");if(void 0===e&&void 0===r)return;a=i.find("div.um-slider-range").data("label");var u=i.find("div.um-slider-range").data("placeholder").replace("{min_range}",e).replace("{max_range}",r).replace("{field_label}",i.find("div.um-slider-range").data("label"));o.push({name:t,label:a,value_label:u,value:[e,r],type:_})}}),d.find(".um-members-filter-tag").remove();var e=d.find(".um-filtered-line");if(e.length){var r=wp.template("um-members-filtered-line");e.prepend(r({filters:o})),0 $value ) { 'conditional' => array( implode( '|', $conditional ), '~', 1 ) ), array( - 'id' => '_um_roles', - '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(), + 'id' => '_um_roles', + '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(), 'columns' => 3, - 'value' => $_um_roles_value, + 'value' => $_um_roles_value, ), array( - 'id' => '_um_has_profile_photo', - 'type' => 'checkbox', - 'label' => __( 'Only show members who have uploaded a profile photo', 'ultimate-member' ), - 'tooltip' => __( 'If \'Use Gravatars\' as profile photo is enabled, this option is ignored', 'ultimate-member' ), - 'value' => UM()->query()->get_meta_value( '_um_has_profile_photo' ), + 'id' => '_um_has_profile_photo', + 'type' => 'checkbox', + 'label' => __( 'Only show members who have uploaded a profile photo', 'ultimate-member' ), + 'tooltip' => __( 'If \'Use Gravatars\' as profile photo is enabled, this option is ignored', 'ultimate-member' ), + 'value' => UM()->query()->get_meta_value( '_um_has_profile_photo' ), ), array( - 'id' => '_um_has_cover_photo', - 'type' => 'checkbox', - 'label' => __( 'Only show members who have uploaded a cover photo', 'ultimate-member' ), - 'value' => UM()->query()->get_meta_value( '_um_has_cover_photo' ), + 'id' => '_um_has_cover_photo', + 'type' => 'checkbox', + '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_show_these_users', - 'type' => 'textarea', - 'label' => __( 'Only show specific users (Enter one username per line)', 'ultimate-member' ), - 'value' => $show_these_users, - ) + 'id' => '_um_show_these_users', + 'type' => 'textarea', + 'label' => __( 'Only show specific users (Enter one username per line)', 'ultimate-member' ), + 'value' => $show_these_users, + ), ); /** @@ -111,9 +111,9 @@ foreach ( $view_types_options as $key => $value ) { $fields = apply_filters( 'um_admin_extend_directory_options_general', $fields ); UM()->admin_forms( array( - 'class' => 'um-member-directory-general um-half-column', - 'prefix_id' => 'um_metadata', - 'fields' => $fields + 'class' => 'um-member-directory-general um-half-column', + 'prefix_id' => 'um_metadata', + 'fields' => $fields ) )->render_form(); ?>
diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 7457fe32..6a2d6f0f 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -5,29 +5,10 @@ global $post_id; ?>
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; @@ -53,7 +34,7 @@ global $post_id; ?> * ?> */ $custom_search = apply_filters( 'um_admin_custom_search_filters', array() ); - $searchable_fields = UM()->builtin()->all_user_fields('date,time,url'); + $searchable_fields = UM()->builtin()->all_user_fields( 'date,time,url' ); $searchable_fields = $searchable_fields + $custom_search; $user_fields = array(); foreach ( $searchable_fields as $key => $arr ) { diff --git a/includes/class-config.php b/includes/class-config.php index d513519c..7aef7bba 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -138,26 +138,45 @@ if ( ! class_exists( 'um\Config' ) ) { ) ); $this->core_directory_meta['members'] = array( + '_um_core' => 'members', '_um_template' => 'members', '_um_mode' => 'directory', + '_um_view_types' => array( 'grid' ), + '_um_default_view' => 'grid', + '_um_roles' => array(), '_um_has_profile_photo' => 0, '_um_has_cover_photo' => 0, - '_um_show_social' => 0, - '_um_show_userinfo' => 0, - '_um_show_tagline' => 0, - '_um_search' => 0, - '_um_userinfo_animate' => '1', + '_um_show_these_users' => '', + '_um_sortby' => 'user_registered_desc', + '_um_sortby_custom' => '', + '_um_enable_sorting' => 0, + '_um_sorting_fields' => array(), + '_um_profile_photo' => '1', '_um_cover_photos' => '1', '_um_show_name' => '1', + '_um_show_tagline' => 0, + '_um_tagline_fields' => array(), + '_um_show_userinfo' => 0, + '_um_reveal_fields' => array(), + '_um_show_social' => 0, + '_um_userinfo_animate' => '1', + + '_um_search' => 0, + '_um_roles_can_search' => array(), + '_um_filters' => 0, + '_um_roles_can_filter' => array(), + '_um_search_fields' => array(), '_um_search_filters' => '', + + '_um_must_search' => 0, + '_um_max_users' => '', + '_um_profiles_per_page' => 12, + '_um_profiles_per_page_mobile' => 6, '_um_directory_header' => __( '{total_users} Members', 'ultimate-member' ), '_um_directory_header_single' => __( '{total_users} Member', 'ultimate-member' ), '_um_directory_no_users' => __( 'We are sorry. We cannot find any users who match your search criteria.', 'ultimate-member' ), - '_um_profiles_per_page' => 12, - '_um_profiles_per_page_mobile' => 6, - '_um_core' => 'members', ); $this->core_global_meta_all = array( diff --git a/includes/class-init.php b/includes/class-init.php index 19632833..0f508a35 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -15,7 +15,7 @@ if ( ! class_exists( 'UM' ) ) { * @method UM_Instagram_API Instagram_API() * @method UM_Mailchimp Mailchimp() * @method UM_Messaging_API Messaging_API() - * @method UM_myCRED_API myCRED_API() + * @method UM_myCRED myCRED() * @method UM_Notices_API Notices_API() * @method UM_Notifications_API Notifications_API() * @method UM_Online Online() diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index c8077d6d..61466e0b 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -411,6 +411,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { * ?> */ $attrs = apply_filters( 'um_search_fields', $attrs ); + + $unique_hash = substr( md5( $directory_data['form_id'] ), 10, 5 ); + ob_start(); switch ( $this->filter_types[ $filter ] ) { @@ -422,6 +425,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } case 'select': { + // getting value from GET line + $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? explode( '||', sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ) : array(); + if ( isset( $attrs['metakey'] ) && strstr( $attrs['metakey'], 'role_' ) ) { $shortcode_roles = get_post_meta( UM()->shortcodes()->form_id, '_um_roles', true ); $um_roles = UM()->roles()->get_roles( false ); @@ -475,7 +481,8 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $opt = $k; } ?> - diff --git a/templates/_members-grid.php b/templates/_members-grid.php deleted file mode 100644 index ad2b719d..00000000 --- a/templates/_members-grid.php +++ /dev/null @@ -1,181 +0,0 @@ - - -
- -
- - - -
- - - - options()->get( 'cover_thumb_sizes' ); - if ( UM()->mobile()->isTablet() ) { - $cover_size = $sizes[1]; - } else { - $cover_size = $sizes[0]; - } ?> - -
-
- - - -
-
- - options()->get( 'profile_photocorner' ); - - $default_size = UM()->options()->get( 'profile_photosize' ); - $default_size = str_replace( 'px', '', $default_size ); ?> - -
- - - -
- - - -
- - -
- - - -
- - */ - do_action( 'um_members_just_after_name', um_user( 'ID' ), $args ); - - if ( UM()->roles()->um_current_user_can( 'edit', um_user( 'ID' ) ) ) { ?> -
- - - -
- - */ - do_action( 'um_members_after_user_name', um_user( 'ID' ), $args ); - - if ( $show_tagline && ! empty( $tagline_fields ) && is_array( $tagline_fields ) ) { - - um_fetch_user( $member ); - - foreach( $tagline_fields as $key ) { - if ( $key ) { - $value = um_filtered_value( $key ); - if ( ! $value ) { - continue; - } ?> - -
- -
- - - -
- - -
- - -
- - - -
- fields()->get_label( $key ) ); ?>: -
- - -
- fields()->show_social_urls(); ?> -
- - -
- -
- -
- - - -
- -
- - - -
- -
\ No newline at end of file diff --git a/templates/members.php b/templates/members.php index 97b5e750..ea839ddc 100644 --- a/templates/members.php +++ b/templates/members.php @@ -123,15 +123,66 @@ foreach ( $args['view_types'] as $type ) { UM()->get_template( 'members-header.php', '', $args, true ); UM()->get_template( 'members-pagination.php', '', $args, true ); -if( isset( $args['must_search'] ) && $args['must_search'] == 1 ) { - $after_search = 'true'; +if ( isset( $args['must_search'] ) && $args['must_search'] == 1 ) { + $must_search = 1; } else { - $after_search = 'false'; + $must_search = 0; +} + + +$not_searched = false; +if ( ( ( $search && $show_search ) || ( $filters && $show_filters && count( $search_filters ) ) ) && isset( $args['must_search'] ) && $args['must_search'] == 1 ) { + $not_searched = true; + if ( $search && $show_search && ! empty( $search_from_url ) ) { + $not_searched = false; + } elseif ( $filters && $show_filters && count( $search_filters ) ) { + foreach ( $search_filters as $filter ) { + // getting value from GET line + switch ( UM()->member_directory()->filter_types[ $filter ] ) { + default: { + + $not_searched = apply_filters( 'um_member_directory_filter_value_from_url', $not_searched, $filter ); + + break; + } + case 'select': { + + // getting value from GET line + $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? explode( '||', sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ) : array(); + + if ( ! empty( $filter_from_url ) ) { + $not_searched = false; + } + + break; + } + case 'slider': { + // getting value from GET line + $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) ? sanitize_text_field( $_GET[ 'filter_' . $filter . '_' . $unique_hash ] ) : ''; + if ( ! empty( $filter_from_url ) ) { + $not_searched = false; + } + + break; + } + case 'datepicker': + case 'timepicker': { + // getting value from GET line + $filter_from_url = ! empty( $_GET[ 'filter_' . $filter . '_from_' . $unique_hash ] ) ? sanitize_text_field( $_GET[ 'filter_' . $filter . '_from_' . $unique_hash ] ) : ''; + if ( ! empty( $filter_from_url ) ) { + $not_searched = false; + } + + break; + } + } + } + } } ?>
@@ -153,7 +204,9 @@ if( isset( $args['must_search'] ) && $args['must_search'] == 1 ) { if ( ! empty( $args['enable_sorting'] ) && ! empty( $sorting_options ) && count( $sorting_options ) > 1 ) { ?>
- > $title ) { ?> @@ -176,13 +229,13 @@ if( isset( $args['must_search'] ) && $args['must_search'] == 1 ) { foreach ( UM()->member_directory()->view_types as $key => $value ) { if ( in_array( $key, $args['view_types'] ) ) { if ( empty( $view_types ) ) { ?> -
+