mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-15 12:43:33 +09:00
- member directory code merge;
This commit is contained in:
Vendored
+1311
File diff suppressed because it is too large
Load Diff
+549
-1
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -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();
|
||||
});
|
||||
|
||||
});
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -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" ){
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -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;
|
||||
}
|
||||
|
||||
});
|
||||
@@ -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>";
|
||||
}
|
||||
|
||||
@@ -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 & 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 );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(); ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
+1158
-68
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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' );
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;?>}}}: </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>
|
||||
@@ -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
@@ -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}}}">×</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>
|
||||
Reference in New Issue
Block a user