From 4041bbc6214ce4ce1c8400f3d929a2b0c99a67e5 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Mon, 29 Jan 2024 11:12:22 +0200 Subject: [PATCH 01/32] - exclude fields for default usermeta table --- includes/admin/core/class-admin-metabox.php | 1 + includes/admin/templates/directory/search.php | 16 +++++++++-- includes/core/class-member-directory.php | 28 +++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index f48dcad8..e8d54a7c 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1187,6 +1187,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) { delete_post_meta( $post_id, '_um_tagline_fields' ); delete_post_meta( $post_id, '_um_reveal_fields' ); delete_post_meta( $post_id, '_um_search_fields' ); + delete_post_meta( $post_id, '_um_search_exclude_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' ); diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 9cb32539..95b4a2b0 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -10,8 +10,9 @@ $_um_roles_search_value = empty( $_um_roles_search_value ) ? array() : $_um_role $_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_search_fields = get_post_meta( $post_id, '_um_search_fields', true ); -$_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?> +$_um_search_exclude_fields = get_post_meta( $post_id, '_um_search_exclude_fields', true ); +$_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true ); +$_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?>
@@ -38,6 +39,17 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?> 'columns' => 3, 'conditional' => array( '_um_search', '=', 1 ), ), + array( + 'id' => '_um_search_exclude_fields', + 'type' => 'multi_selects', + 'label' => __( 'Choose fields to exclude from search', 'ultimate-member' ), + 'value' => $_um_search_exclude_fields, + 'conditional' => array( '_um_filters', '=', 1 ), + 'options' => UM()->member_directory()->filter_fields, + 'add_text' => __( 'Add New Custom Field to Exclude', 'ultimate-member' ), + 'show_default_number' => 0, + 'sorting' => true, + ), array( 'id' => '_um_filters', 'type' => 'checkbox', diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 81e79a6d..dc11e710 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1642,10 +1642,34 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { */ public function general_search() { //general search + // phpcs:disable WordPress.Security.NonceVerification if ( ! empty( $_POST['search'] ) ) { // complex using with change_meta_sql function $search = $this->prepare_search( $_POST['search'] ); if ( ! empty( $search ) ) { + $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + if ( ! empty( $exclude_fields ) ) { + global $wpdb; + $exclude_users = array(); + $search_meta = '%' . $wpdb->esc_like( $search ) . '%'; + foreach ( $exclude_fields as $field ) { + $field_users = $wpdb->get_col( + $wpdb->prepare( + "SELECT user_id + FROM {$wpdb->usermeta} + WHERE meta_key = %s + AND meta_value LIKE %s", + $field, + $search_meta + ) + ); + + $exclude_users = array_merge( $exclude_users, $field_users ); + } + $exclude_users = array_unique( $exclude_users ); + } + $meta_query = array( 'relation' => 'OR', array( @@ -1665,10 +1689,14 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $meta_query = apply_filters( 'um_member_directory_general_search_meta_query', $meta_query, $search ); $this->query_args['meta_query'][] = $meta_query; + if ( ! empty( $exclude_users ) ) { + $this->query_args['exclude'] = $exclude_users; + } $this->is_search = true; } } + // phpcs:enable WordPress.Security.NonceVerification } /** From a6dae55d3d7248779a2fd42b9201b42f86c14710 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Mon, 29 Jan 2024 11:36:07 +0200 Subject: [PATCH 02/32] - fix excluded users --- includes/core/class-member-directory.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index dc11e710..00e7792f 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1690,6 +1690,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->query_args['meta_query'][] = $meta_query; if ( ! empty( $exclude_users ) ) { + if ( ! empty( $this->query_args['exclude'] ) ) { + $exclude_users = array_unique( array_merge( $exclude_users, $this->query_args['exclude'] ) ); + } $this->query_args['exclude'] = $exclude_users; } From 278b0def5cee6eb5c51db3a7a7a63499dd422111 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Mon, 29 Jan 2024 15:56:18 +0200 Subject: [PATCH 03/32] - fix excluded fields --- includes/core/class-member-directory.php | 39 +++++------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 00e7792f..b34a2626 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1642,34 +1642,10 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { */ public function general_search() { //general search - // phpcs:disable WordPress.Security.NonceVerification if ( ! empty( $_POST['search'] ) ) { // complex using with change_meta_sql function $search = $this->prepare_search( $_POST['search'] ); if ( ! empty( $search ) ) { - $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); - $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); - if ( ! empty( $exclude_fields ) ) { - global $wpdb; - $exclude_users = array(); - $search_meta = '%' . $wpdb->esc_like( $search ) . '%'; - foreach ( $exclude_fields as $field ) { - $field_users = $wpdb->get_col( - $wpdb->prepare( - "SELECT user_id - FROM {$wpdb->usermeta} - WHERE meta_key = %s - AND meta_value LIKE %s", - $field, - $search_meta - ) - ); - - $exclude_users = array_merge( $exclude_users, $field_users ); - } - $exclude_users = array_unique( $exclude_users ); - } - $meta_query = array( 'relation' => 'OR', array( @@ -1689,17 +1665,10 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $meta_query = apply_filters( 'um_member_directory_general_search_meta_query', $meta_query, $search ); $this->query_args['meta_query'][] = $meta_query; - if ( ! empty( $exclude_users ) ) { - if ( ! empty( $this->query_args['exclude'] ) ) { - $exclude_users = array_unique( array_merge( $exclude_users, $this->query_args['exclude'] ) ); - } - $this->query_args['exclude'] = $exclude_users; - } $this->is_search = true; } } - // phpcs:enable WordPress.Security.NonceVerification } /** @@ -1787,6 +1756,14 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } } + $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + if ( ! empty( $exclude_fields ) ) { + foreach ( $exclude_fields as $field ) { + $sql['join'] = str_replace( ",'" . $field . "'", '', $sql['join'] ); + } + } + return $sql; } From 37739fdd4774c2264e430e39fe0040bacfcd1804 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Tue, 30 Jan 2024 12:56:31 +0200 Subject: [PATCH 04/32] - exclude fields for um meta table --- includes/core/class-member-directory-meta.php | 12 +++++++++++- includes/core/class-member-directory.php | 16 ++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index bb094cde..a97020df 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -601,7 +601,17 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $search_like_string = apply_filters( 'um_member_directory_meta_search_like_type', '%' . $search_line . '%', $search_line ); - $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search})", $search_line, $search_like_string, '%' . serialize( (string) $search_line ) . '%' ); + $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + if ( ! empty( $exclude_fields ) ) { + $exclude_fields_sql = 'AND umm_search.um_key NOT IN ('; + foreach ( $exclude_fields as $exclude_field ) { + $exclude_fields_sql .= "'" . $exclude_field . "',"; + } + $exclude_fields_sql = rtrim( $exclude_fields_sql, ',' ); + $exclude_fields_sql .= ') '; + } + $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search}) {$exclude_fields_sql}", $search_line, $search_like_string, '%' . serialize( (string) $search_line ) . '%' ); $this->is_search = true; } diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index b34a2626..5e96d1cc 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1739,6 +1739,14 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $sql['join'] ); } + + $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + if ( ! empty( $exclude_fields ) ) { + foreach ( $exclude_fields as $field ) { + $sql['join'] = str_replace( ",'" . $field . "'", '', $sql['join'] ); + } + } } // Add OR instead AND to search in WP core fields user_email, user_login, user_display_name @@ -1756,14 +1764,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } } - $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); - $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); - if ( ! empty( $exclude_fields ) ) { - foreach ( $exclude_fields as $field ) { - $sql['join'] = str_replace( ",'" . $field . "'", '', $sql['join'] ); - } - } - return $sql; } From e1eaebce06fd1a91c566098ba987f8b7fffe88b3 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Wed, 7 Feb 2024 11:50:41 +0200 Subject: [PATCH 05/32] - include for core usermeta --- assets/js/admin/forms.js | 8 ++++++ includes/admin/core/class-admin-metabox.php | 1 + includes/admin/templates/directory/search.php | 12 ++++++++ includes/core/class-member-directory.php | 28 +++++++++++-------- 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/assets/js/admin/forms.js b/assets/js/admin/forms.js index f1eecce0..4d3317e6 100644 --- a/assets/js/admin/forms.js +++ b/assets/js/admin/forms.js @@ -433,6 +433,14 @@ jQuery(document).ready( function() { addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-selects').attr('id', list.data('id_attr') + '-' + k); }); + jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_exclude_fields][]"]').on('click', function() { + jQuery('.um-multi-selects-list[data-field_id="_um_search_include_fields"] li.um-multi-selects-option-line').remove(); + }); + + jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_include_fields][]"]').on('click', function() { + jQuery('.um-multi-selects-list[data-field_id="_um_search_exclude_fields"] li.um-multi-selects-option-line').remove(); + }); + var um_local_date = new Date(); var um_gmt_hours = -um_local_date.getTimezoneOffset() / 60; jQuery('input[name="um-gmt-offset"]').val( um_gmt_hours ); diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index e8d54a7c..c9e79f8b 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1188,6 +1188,7 @@ 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_search_exclude_fields' ); + delete_post_meta( $post_id, '_um_search_include_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' ); diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 95b4a2b0..7d78ef5c 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -11,6 +11,7 @@ $_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_search_exclude_fields = get_post_meta( $post_id, '_um_search_exclude_fields', true ); +$_um_search_include_fields = get_post_meta( $post_id, '_um_search_include_fields', true ); $_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true ); $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?> @@ -50,6 +51,17 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true 'show_default_number' => 0, 'sorting' => true, ), + array( + 'id' => '_um_search_include_fields', + 'type' => 'multi_selects', + 'label' => __( 'Choose fields to include to search', 'ultimate-member' ), + 'value' => $_um_search_include_fields, + 'conditional' => array( '_um_filters', '=', 1 ), + 'options' => UM()->member_directory()->filter_fields, + 'add_text' => __( 'Add New Custom Field to Include', 'ultimate-member' ), + 'show_default_number' => 0, + 'sorting' => true, + ), array( 'id' => '_um_filters', 'type' => 'checkbox', diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 5e96d1cc..ed0f1a0b 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1712,22 +1712,30 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $sql['where'] = str_replace( '#%&', '{' . $matches[0][0] . '}', $sql['where'] ); + $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + $include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true ); + if ( isset( $join_matches[1] ) ) { $meta_join_for_search = trim( $join_matches[1] ); // skip private invisible fields $custom_fields = array(); - foreach ( array_keys( UM()->builtin()->all_user_fields ) as $field_key ) { - if ( empty( $field_key ) ) { - continue; - } + if ( empty( $include_fields ) ) { + foreach ( array_keys( UM()->builtin()->all_user_fields ) as $field_key ) { + if ( empty( $field_key ) ) { + continue; + } - $data = UM()->fields()->get_field( $field_key ); - if ( ! um_can_view_field( $data ) ) { - continue; - } + $data = UM()->fields()->get_field( $field_key ); + if ( ! um_can_view_field( $data ) ) { + continue; + } - $custom_fields[] = $field_key; + $custom_fields[] = $field_key; + } + } else { + $custom_fields = $include_fields; } $custom_fields = apply_filters( 'um_general_search_custom_fields', $custom_fields ); @@ -1740,8 +1748,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { ); } - $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); - $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); if ( ! empty( $exclude_fields ) ) { foreach ( $exclude_fields as $field ) { $sql['join'] = str_replace( ",'" . $field . "'", '', $sql['join'] ); From ee1e1e1c1a4de96dad2a7228cf0ccb3e7cdd2180 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Wed, 7 Feb 2024 12:07:48 +0200 Subject: [PATCH 06/32] - include for custom usermeta --- includes/core/class-member-directory-meta.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index a97020df..4ae8c47e 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -603,15 +603,24 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + $include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true ); if ( ! empty( $exclude_fields ) ) { - $exclude_fields_sql = 'AND umm_search.um_key NOT IN ('; + $custom_fields_sql = 'AND umm_search.um_key NOT IN ('; foreach ( $exclude_fields as $exclude_field ) { - $exclude_fields_sql .= "'" . $exclude_field . "',"; + $custom_fields_sql .= "'" . $exclude_field . "',"; } - $exclude_fields_sql = rtrim( $exclude_fields_sql, ',' ); - $exclude_fields_sql .= ') '; + $custom_fields_sql = rtrim( $custom_fields_sql, ',' ); + $custom_fields_sql .= ') '; } - $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search}) {$exclude_fields_sql}", $search_line, $search_like_string, '%' . serialize( (string) $search_line ) . '%' ); + if ( ! empty( $include_fields ) ) { + $custom_fields_sql = 'AND umm_search.um_key IN ('; + foreach ( $include_fields as $include_field ) { + $custom_fields_sql .= "'" . $include_field . "',"; + } + $custom_fields_sql = rtrim( $custom_fields_sql, ',' ); + $custom_fields_sql .= ') '; + } + $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search}) {$custom_fields_sql}", $search_line, $search_like_string, '%' . serialize( (string) $search_line ) . '%' ); $this->is_search = true; } From fca552229745e8961dc8f0a9e8ef851611057beb Mon Sep 17 00:00:00 2001 From: ashubawork Date: Wed, 7 Feb 2024 12:13:05 +0200 Subject: [PATCH 07/32] - fix options --- includes/admin/templates/directory/search.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 7d78ef5c..0e73947c 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -45,22 +45,24 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true 'type' => 'multi_selects', 'label' => __( 'Choose fields to exclude from search', 'ultimate-member' ), 'value' => $_um_search_exclude_fields, - 'conditional' => array( '_um_filters', '=', 1 ), + 'conditional' => array( '_um_search', '=', 1 ), 'options' => UM()->member_directory()->filter_fields, 'add_text' => __( 'Add New Custom Field to Exclude', 'ultimate-member' ), 'show_default_number' => 0, 'sorting' => true, + 'tooltip' => __( 'Choose fields to exclude them from search. This option will delete all included fields.', 'ultimate-member' ), ), array( 'id' => '_um_search_include_fields', 'type' => 'multi_selects', - 'label' => __( 'Choose fields to include to search', 'ultimate-member' ), + 'label' => __( 'Choose fields to only include in the search', 'ultimate-member' ), 'value' => $_um_search_include_fields, - 'conditional' => array( '_um_filters', '=', 1 ), + 'conditional' => array( '_um_search', '=', 1 ), 'options' => UM()->member_directory()->filter_fields, 'add_text' => __( 'Add New Custom Field to Include', 'ultimate-member' ), 'show_default_number' => 0, 'sorting' => true, + 'tooltip' => __( 'Choose fields to only include them in the search. This option will delete all excluded fields.', 'ultimate-member' ), ), array( 'id' => '_um_filters', From 88de3adf8cb2e53d5673ce752fe7d793021fe5bc Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 6 Mar 2024 17:09:20 +0200 Subject: [PATCH 08/32] - version number updated; --- README.md | 2 +- readme.txt | 4 ++++ ultimate-member.php | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f3bb1b4f..2c56d669 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ GNU Version 2 or Any Later Version ### IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION -[Official Release Version: 2.8.4](https://github.com/ultimatemember/ultimatemember/releases/tag/2.8.4). +[Official Release Version: 2.8.5](https://github.com/ultimatemember/ultimatemember/releases/tag/2.8.5). ## Changelog diff --git a/readme.txt b/readme.txt index 4dfcefec..a45de4d8 100644 --- a/readme.txt +++ b/readme.txt @@ -167,6 +167,10 @@ No specific extensions are needed. But we highly recommended keep active these P IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION += 2.8.5 2024-03-xx = + + + = 2.8.4 2024-03-06 = **Enhancements** diff --git a/ultimate-member.php b/ultimate-member.php index 1498f852..2e0901db 100644 --- a/ultimate-member.php +++ b/ultimate-member.php @@ -3,7 +3,7 @@ * Plugin Name: Ultimate Member * Plugin URI: http://ultimatemember.com/ * Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress - * Version: 2.8.4 + * Version: 2.8.5-alpha * Author: Ultimate Member * Author URI: http://ultimatemember.com/ * Text Domain: ultimate-member From abc0b9b3313123fdb81177e8b7a2fa84eb8314c1 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 6 Mar 2024 23:52:25 +0200 Subject: [PATCH 09/32] - strict typing with UM settings; --- includes/admin/core/class-admin-settings.php | 3 + includes/class-config.php | 146 +++++++++---------- 2 files changed, 74 insertions(+), 75 deletions(-) diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 6b03f1e2..690853b9 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -1041,6 +1041,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'rest_api_version' => array( 'sanitize' => 'text', ), + 'disable_restriction_pre_queries' => array( + 'sanitize' => 'bool', + ), 'uninstall_on_delete' => array( 'sanitize' => 'bool', ), diff --git a/includes/class-config.php b/includes/class-config.php index a7b64e2f..5267b8cc 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -204,29 +204,7 @@ if ( ! class_exists( 'um\Config' ) ) { '_um_secondary_color', ); - /** - * UM hook - * - * @type filter - * @title um_core_form_meta_all - * @description Extend UM forms meta keys - * @input_vars - * [{"var":"$meta","type":"array","desc":"UM forms meta"}] - * @change_log - * ["Since: 2.0"] - * @usage - * - * @example - * - */ - $this->core_form_meta_all = apply_filters( 'um_core_form_meta_all', array( + $this->core_form_meta_all = array( /*Profile Form*/ '_um_profile_show_name' => 1, '_um_profile_show_social_links' => 0, @@ -279,62 +257,49 @@ if ( ! class_exists( 'um\Config' ) ) { '_um_directory_template' => 'members', '_um_directory_header' => __( '{total_users} Members', 'ultimate-member' ), '_um_directory_header_single' => __( '{total_users} Member', 'ultimate-member' ), - ) ); + ); + /** + * Filters the list of Ultimate Member forms meta. + * + * @param {array} $form_meta UM Forms meta. + * + * @return {array} Forms meta. + * + * @since 1.3.x + * @hook um_core_form_meta_all + * + * @example Add custom admin notice after {custom_update_key} action. + * function my_um_core_form_meta_all( $form_meta ) { + * // your code here + * $meta['my_meta_key'] = 'my_meta_value'; + * return $meta; + * } + * add_filter( 'um_core_form_meta_all', 'my_um_core_form_meta_all' ); + */ + $this->core_form_meta_all = apply_filters( 'um_core_form_meta_all', $this->core_form_meta_all ); $this->core_form_meta['register'] = array( - '_um_custom_fields' => 'a:6:{s:10:"user_login";a:15:{s:5:"title";s:8:"Username";s:7:"metakey";s:10:"user_login";s:4:"type";s:4:"text";s:5:"label";s:8:"Username";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:15:"unique_username";s:9:"min_chars";i:3;s:9:"max_chars";i:24;s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"user_email";a:13:{s:5:"title";s:14:"Email Address";s:7:"metakey";s:10:"user_email";s:4:"type";s:4:"text";s:5:"label";s:14:"E-mail Address";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"validate";s:12:"unique_email";s:8:"position";s:1:"4";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"5";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"first_name";a:12:{s:5:"title";s:10:"First Name";s:7:"metakey";s:10:"first_name";s:4:"type";s:4:"text";s:5:"label";s:10:"First Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"last_name";a:12:{s:5:"title";s:9:"Last Name";s:7:"metakey";s:9:"last_name";s:4:"type";s:4:"text";s:5:"label";s:9:"Last Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"3";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', - '_um_mode' => 'register', - '_um_core' => 'register', + '_um_custom_fields' => 'a:6:{s:10:"user_login";a:15:{s:5:"title";s:8:"Username";s:7:"metakey";s:10:"user_login";s:4:"type";s:4:"text";s:5:"label";s:8:"Username";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:15:"unique_username";s:9:"min_chars";i:3;s:9:"max_chars";i:24;s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"user_email";a:13:{s:5:"title";s:14:"Email Address";s:7:"metakey";s:10:"user_email";s:4:"type";s:4:"text";s:5:"label";s:14:"E-mail Address";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"validate";s:12:"unique_email";s:8:"position";s:1:"4";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"5";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"first_name";a:12:{s:5:"title";s:10:"First Name";s:7:"metakey";s:10:"first_name";s:4:"type";s:4:"text";s:5:"label";s:10:"First Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"last_name";a:12:{s:5:"title";s:9:"Last Name";s:7:"metakey";s:9:"last_name";s:4:"type";s:4:"text";s:5:"label";s:9:"Last Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"3";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', + '_um_mode' => 'register', + '_um_core' => 'register', '_um_register_use_custom_settings' => 0, ); $this->core_form_meta['login'] = array( - '_um_custom_fields' => 'a:3:{s:8:"username";a:13:{s:5:"title";s:18:"Username or Email";s:7:"metakey";s:8:"username";s:4:"type";s:4:"text";s:5:"label";s:18:"Username or E-mail";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:24:"unique_username_or_email";s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', - '_um_mode' => 'login', - '_um_core' => 'login', + '_um_custom_fields' => 'a:3:{s:8:"username";a:13:{s:5:"title";s:18:"Username or Email";s:7:"metakey";s:8:"username";s:4:"type";s:4:"text";s:5:"label";s:18:"Username or E-mail";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:24:"unique_username_or_email";s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', + '_um_mode' => 'login', + '_um_core' => 'login', '_um_login_use_custom_settings' => 0, ); $this->core_form_meta['profile'] = array( - '_um_custom_fields' => 'a:1:{s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', - '_um_mode' => 'profile', - '_um_core' => 'profile', + '_um_custom_fields' => 'a:1:{s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}', + '_um_mode' => 'profile', + '_um_core' => 'profile', '_um_profile_use_custom_settings' => 0, ); - - /** - * UM hook - * - * @type filter - * @title um_email_notifications - * @description Extend UM email notifications - * @input_vars - * [{"var":"$emails","type":"array","desc":"UM email notifications"}] - * @change_log - * ["Since: 2.0"] - * @usage - * - * @example - * 'my_email', - * 'title' => __( 'my_email_title','ultimate-member' ), - * 'subject' => 'my_email_subject', - * 'body' => 'my_email_body', - * 'description' => 'my_email_description', - * 'recipient' => 'user', // set 'admin' for make administrator as recipient - * 'default_active' => true // can be false for make disabled by default - * ); - * - * return $emails; - * } - * ?> - */ - $this->email_notifications = apply_filters( 'um_email_notifications', array( + $this->email_notifications = array( 'welcome_email' => array( 'key' => 'welcome_email', 'title' => __( 'Account Welcome Email','ultimate-member' ), @@ -514,24 +479,55 @@ if ( ! class_exists( 'um\Config' ) ) { 'recipient' => 'admin', 'default_active' => true, ), - ) ); + ); + /** + * Filters the list of Ultimate Member email notifications. + * + * @param {array} $email_notifications Email notifications. + * + * @return {array} Email notifications. + * + * @since 2.0.0 + * @hook um_email_notifications + * + * @example Add custom admin notice after {custom_update_key} action. + * function my_um_email_notifications( $notifications ) { + * // your code here + * $emails['my_email'] = array( + * 'key' => 'my_email', + * 'title' => __( 'my_email_title','ultimate-member' ), + * 'subject' => 'my_email_subject', + * 'body' => 'my_email_body', + * 'description' => 'my_email_description', + * 'recipient' => 'user', // set 'admin' for make administrator as recipient + * 'default_active' => true // can be false for make disabled by default + * ); + * + * return $emails; + * } + * add_filter( 'um_email_notifications', 'my_um_email_notifications' ); + */ + $this->email_notifications = apply_filters( 'um_email_notifications', $this->email_notifications ); - //settings defaults + // Settings defaults. $this->settings_defaults = array( - 'restricted_access_post_metabox' => array( 'post' => 1, 'page' => 1 ), - 'disable_restriction_pre_queries' => 0, - 'uninstall_on_delete' => 0, + 'restricted_access_post_metabox' => array( + 'post' => 1, + 'page' => 1, + ), + 'disable_restriction_pre_queries' => false, + 'uninstall_on_delete' => false, 'permalink_base' => 'user_login', 'permalink_base_custom_meta' => '', 'display_name' => 'full_name', 'display_name_field' => '', - 'author_redirect' => 1, + 'author_redirect' => true, 'members_page' => true, - 'use_gravatars' => 0, + 'use_gravatars' => false, 'use_um_gravatar_default_builtin_image' => 'default', - 'use_um_gravatar_default_image' => 0, + 'use_um_gravatar_default_image' => false, 'toggle_password' => false, - 'require_strongpass' => 0, + 'require_strongpass' => false, 'password_min_chars' => 8, 'password_max_chars' => 30, 'account_tab_password' => 1, From 41e9a50e0b99c3ea342542eee9dc5976bfa2ecb1 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 7 Mar 2024 02:02:03 +0200 Subject: [PATCH 10/32] - strict typing with UM settings; --- includes/admin/class-enqueue.php | 4 +- includes/admin/class-site-health.php | 2 +- includes/admin/core/class-admin-settings.php | 5 +- includes/class-config.php | 69 ++++++++++---------- includes/core/class-access.php | 8 +-- 5 files changed, 43 insertions(+), 45 deletions(-) diff --git a/includes/admin/class-enqueue.php b/includes/admin/class-enqueue.php index 5623c9e4..55f3a83a 100644 --- a/includes/admin/class-enqueue.php +++ b/includes/admin/class-enqueue.php @@ -104,7 +104,7 @@ final class Enqueue extends \um\common\Enqueue { wp_register_script( 'um_admin_blocks_shortcodes', $js_url . 'admin/block-renderer' . $suffix . '.js', array( 'wp-i18n', 'wp-blocks', 'wp-components' ), UM_VERSION, true ); wp_set_script_translations( 'um_admin_blocks_shortcodes', 'ultimate-member' ); - $notifications_enabled = 0; + $notifications_enabled = false; if ( false !== UM()->account()->is_notifications_tab_visible() ) { $notifications_enabled = UM()->options()->get( 'account_tab_notifications' ); } @@ -112,7 +112,7 @@ final class Enqueue extends \um\common\Enqueue { $um_account_settings = array( 'general' => array( 'label' => __( 'General', 'ultimate-member' ), - 'enabled' => 1, + 'enabled' => true, ), 'password' => array( 'label' => __( 'Password', 'ultimate-member' ), diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php index 69e59ab2..7f15dea0 100644 --- a/includes/admin/class-site-health.php +++ b/includes/admin/class-site-health.php @@ -513,7 +513,7 @@ class Site_Health { 'value' => UM()->options()->get( 'enable_reset_password_limit' ) ? $labels['yes'] : $labels['no'], ), ); - if ( 1 === absint( UM()->options()->get( 'enable_reset_password_limit' ) ) ) { + if ( UM()->options()->get( 'enable_reset_password_limit' ) ) { $access_other_settings['um-reset_password_limit_number'] = array( 'label' => __( 'Reset Password Limit ', 'ultimate-member' ), 'value' => UM()->options()->get( 'reset_password_limit_number' ), diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 690853b9..b1bc777a 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -786,6 +786,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'use_um_gravatar_default_image' => array( 'sanitize' => 'bool', ), + 'delete_comments' => array( + 'sanitize' => 'bool', + ), 'toggle_password' => array( 'sanitize' => 'bool', ), @@ -1416,7 +1419,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'args' => array( 'textarea_rows' => 6, ), - 'conditional' => array( 'account_tab_delete', '=', '1' ), ), array( 'id' => 'delete_account_no_pass_required_text', @@ -1426,7 +1428,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'args' => array( 'textarea_rows' => 6, ), - 'conditional' => array( 'account_tab_delete', '=', '0' ), ), ), ), diff --git a/includes/class-config.php b/includes/class-config.php index 5267b8cc..18fa98eb 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -530,65 +530,65 @@ if ( ! class_exists( 'um\Config' ) ) { 'require_strongpass' => false, 'password_min_chars' => 8, 'password_max_chars' => 30, - 'account_tab_password' => 1, - 'account_tab_privacy' => 1, - 'account_tab_notifications' => 1, - 'account_tab_delete' => 1, + 'account_tab_password' => true, + 'account_tab_privacy' => true, + 'account_tab_notifications' => true, + 'account_tab_delete' => true, 'delete_account_text' => __( 'Are you sure you want to delete your account? This will erase all of your account data from the site. To delete your account enter your password below.', 'ultimate-member' ), 'delete_account_no_pass_required_text' => __( 'Are you sure you want to delete your account? This will erase all of your account data from the site. To delete your account, click on the button below.', 'ultimate-member' ), - 'account_name' => 1, - 'account_name_disable' => 0, - 'account_name_require' => 1, - 'account_email' => 1, - 'account_general_password' => 0, - 'account_hide_in_directory' => 1, + 'account_name' => true, + 'account_name_disable' => false, + 'account_name_require' => true, + 'account_email' => true, + 'account_general_password' => false, + 'account_hide_in_directory' => true, 'account_hide_in_directory_default' => 'No', 'photo_thumb_sizes' => array( 40, 80, 190 ), 'cover_thumb_sizes' => array( 300, 600 ), 'accessible' => 0, 'access_redirect' => '', 'access_exclude_uris' => array(), - 'home_page_accessible' => 1, - 'category_page_accessible' => 1, - 'restricted_post_title_replace' => 1, + 'home_page_accessible' => true, + 'category_page_accessible' => true, + 'restricted_post_title_replace' => true, 'restricted_access_post_title' => __( 'Restricted content', 'ultimate-member' ), 'restricted_access_message' => '', - 'restricted_blocks' => 0, - 'enable_blocks' => 0, + 'restricted_blocks' => false, + 'enable_blocks' => false, 'restricted_block_message' => '', - 'enable_reset_password_limit' => 1, + 'enable_reset_password_limit' => true, 'reset_password_limit_number' => 3, 'change_password_request_limit' => false, 'blocked_emails' => '', 'blocked_words' => 'admin' . "\r\n" . 'administrator' . "\r\n" . 'webmaster' . "\r\n" . 'support' . "\r\n" . 'staff', 'allowed_choice_callbacks' => '', - 'allow_url_redirect_confirm' => 1, + 'allow_url_redirect_confirm' => true, 'default_avatar' => '', 'default_cover' => '', - 'disable_profile_photo_upload' => 0, - 'profile_show_metaicon' => 0, - 'profile_menu' => 1, + 'disable_profile_photo_upload' => false, + 'profile_show_metaicon' => false, + 'profile_menu' => true, 'profile_menu_default_tab' => 'main', - 'profile_menu_icons' => 1, - 'form_asterisk' => 0, + 'profile_menu_icons' => true, + 'form_asterisk' => false, 'profile_title' => '{display_name} | {site_name}', 'profile_desc' => '{display_name} is on {site_name}. Join {site_name} to view {display_name}\'s profile', 'admin_email' => get_bloginfo( 'admin_email' ), 'mail_from' => get_bloginfo( 'name' ), 'mail_from_addr' => get_bloginfo( 'admin_email' ), - 'email_html' => 1, - 'image_orientation_by_exif' => 0, + 'email_html' => true, + 'image_orientation_by_exif' => false, 'image_compression' => 60, 'image_max_width' => 1000, 'cover_min_width' => 1000, 'profile_photo_max_size' => 999999999, 'cover_photo_max_size' => 999999999, 'custom_roles_increment' => 1, - 'um_profile_object_cache_stop' => 0, + 'um_profile_object_cache_stop' => false, 'rest_api_version' => '2.0', - 'member_directory_own_table' => 0, + 'member_directory_own_table' => false, 'profile_show_bio' => false, - 'profile_show_html_bio' => 0, + 'profile_show_html_bio' => false, 'profile_bio_maxchars' => 180, 'profile_noindex' => 0, 'activation_link_expiry_time' => '', @@ -599,7 +599,7 @@ if ( ! class_exists( 'um\Config' ) ) { 'secure_notify_admins_banned_accounts' => false, 'secure_notify_admins_banned_accounts__interval' => 'instant', 'secure_allowed_redirect_hosts' => '', - 'delete_comments' => 0, + 'delete_comments' => false, ); add_filter( 'um_get_tabs_from_config', '__return_true' ); @@ -616,26 +616,26 @@ if ( ! class_exists( 'um\Config' ) ) { if ( ! isset( $tab['default_privacy'] ) ) { $this->settings_defaults[ 'profile_tab_' . $id . '_privacy' ] = 0; - $this->settings_defaults[ 'profile_tab_' . $id . '_roles' ] = ''; + $this->settings_defaults[ 'profile_tab_' . $id . '_roles' ] = ''; } } foreach ( $this->email_notifications as $key => $notification ) { - $this->settings_defaults[ $key . '_on' ] = ! empty( $notification['default_active'] ); + $this->settings_defaults[ $key . '_on' ] = ! empty( $notification['default_active'] ); $this->settings_defaults[ $key . '_sub' ] = $notification['subject']; - $this->settings_defaults[ $key ] = $notification['body']; + $this->settings_defaults[ $key ] = $notification['body']; } foreach ( $this->core_pages as $page_s => $page ) { $page_id = UM()->options()->get_core_page_id( $page_s ); + $this->settings_defaults[ $page_id ] = ''; } - foreach( $this->core_form_meta_all as $key => $value ) { + foreach ( $this->core_form_meta_all as $key => $value ) { $this->settings_defaults[ str_replace( '_um_', '', $key ) ] = $value; } - /** * UM hook * @@ -661,8 +661,6 @@ if ( ! class_exists( 'um\Config' ) ) { $this->permalinks = $this->get_core_pages(); - - $this->default_roles_metadata = array( /* * All caps map @@ -808,7 +806,6 @@ if ( ! class_exists( 'um\Config' ) ) { ); } - /** * Get UM Pages * diff --git a/includes/core/class-access.php b/includes/core/class-access.php index 1cafc3b9..fa91fa31 100644 --- a/includes/core/class-access.php +++ b/includes/core/class-access.php @@ -1772,10 +1772,10 @@ if ( ! class_exists( 'um\core\Access' ) ) { $access = UM()->options()->get( 'accessible' ); if ( $access == 2 ) { - //global settings for accessible home page + // Global settings for accessible home page $home_page_accessible = UM()->options()->get( 'home_page_accessible' ); - if ( $home_page_accessible == 0 ) { + if ( ! $home_page_accessible ) { //get redirect URL if not set get login page by default $redirect = UM()->options()->get( 'access_redirect' ); if ( ! $redirect ) { @@ -1795,9 +1795,9 @@ if ( ! class_exists( 'um\core\Access' ) ) { $access = UM()->options()->get( 'accessible' ); if ( $access == 2 ) { - //global settings for accessible home page + // Global settings for accessible home page $category_page_accessible = UM()->options()->get( 'category_page_accessible' ); - if ( $category_page_accessible == 0 ) { + if ( ! $category_page_accessible ) { //get redirect URL if not set get login page by default $redirect = UM()->options()->get( 'access_redirect' ); if ( ! $redirect ) { From 3b0e7f2f733a431a2ff0582b4367c05f26d28811 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 7 Mar 2024 02:30:57 +0200 Subject: [PATCH 11/32] - strict typing with UM settings; - wpcs; - hookdocs; --- includes/class-config.php | 222 +++++++++++++++++--------------------- includes/class-init.php | 88 +++++++-------- 2 files changed, 137 insertions(+), 173 deletions(-) diff --git a/includes/class-config.php b/includes/class-config.php index 18fa98eb..de0cda8a 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -662,123 +662,85 @@ if ( ! class_exists( 'um\Config' ) ) { $this->permalinks = $this->get_core_pages(); $this->default_roles_metadata = array( - /* - * All caps map - * - * '_um_can_access_wpadmin' => 1, - '_um_can_not_see_adminbar' => 0, - '_um_can_edit_everyone' => 1, - '_um_can_edit_roles' => '', - '_um_can_delete_everyone' => 1, - '_um_can_delete_roles' => '', - '_um_after_delete' => '', - '_um_delete_redirect_url' => '', - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_default_homepage' => 1, - '_um_redirect_homepage' => '', - '_um_after_login' => 'redirect_admin', - '_um_login_redirect_url' => '', - '_um_after_logout' => 'redirect_home', - '_um_logout_redirect_url' => '', - '_um_can_view_all' => 1, - '_um_can_view_roles' => '', - '_um_can_make_private_profile' => 1, - '_um_can_access_private_profile' => 1, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', - '_um_auto_approve_url' => '', - '_um_login_email_activate' => '', - '_um_checkmail_action' => '', - '_um_checkmail_message' => '', - '_um_checkmail_url' => '', - '_um_url_email_activate' => '', - '_um_pending_action' => '', - '_um_pending_message' => '', - '_um_pending_url' => '', - * - * */ - - - 'subscriber' => array( - '_um_can_access_wpadmin' => 0, - '_um_can_not_see_adminbar' => 1, - '_um_can_edit_everyone' => 0, - '_um_can_delete_everyone' => 0, - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_after_login' => 'redirect_profile', - '_um_after_logout' => 'redirect_home', - '_um_default_homepage' => 1, - '_um_can_view_all' => 1, - '_um_can_make_private_profile' => 0, - '_um_can_access_private_profile' => 0, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', + 'subscriber' => array( + '_um_can_access_wpadmin' => 0, + '_um_can_not_see_adminbar' => 1, + '_um_can_edit_everyone' => 0, + '_um_can_delete_everyone' => 0, + '_um_can_edit_profile' => 1, + '_um_can_delete_profile' => 1, + '_um_after_login' => 'redirect_profile', + '_um_after_logout' => 'redirect_home', + '_um_default_homepage' => 1, + '_um_can_view_all' => 1, + '_um_can_make_private_profile' => 0, + '_um_can_access_private_profile' => 0, + '_um_status' => 'approved', + '_um_auto_approve_act' => 'redirect_profile', ), - 'author' => array( - '_um_can_access_wpadmin' => 0, - '_um_can_not_see_adminbar' => 1, - '_um_can_edit_everyone' => 0, - '_um_can_delete_everyone' => 0, - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_after_login' => 'redirect_profile', - '_um_after_logout' => 'redirect_home', - '_um_default_homepage' => 1, - '_um_can_view_all' => 1, - '_um_can_make_private_profile' => 0, - '_um_can_access_private_profile' => 0, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', + 'author' => array( + '_um_can_access_wpadmin' => 0, + '_um_can_not_see_adminbar' => 1, + '_um_can_edit_everyone' => 0, + '_um_can_delete_everyone' => 0, + '_um_can_edit_profile' => 1, + '_um_can_delete_profile' => 1, + '_um_after_login' => 'redirect_profile', + '_um_after_logout' => 'redirect_home', + '_um_default_homepage' => 1, + '_um_can_view_all' => 1, + '_um_can_make_private_profile' => 0, + '_um_can_access_private_profile' => 0, + '_um_status' => 'approved', + '_um_auto_approve_act' => 'redirect_profile', ), - 'contributor' => array( - '_um_can_access_wpadmin' => 0, - '_um_can_not_see_adminbar' => 1, - '_um_can_edit_everyone' => 0, - '_um_can_delete_everyone' => 0, - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_after_login' => 'redirect_profile', - '_um_after_logout' => 'redirect_home', - '_um_default_homepage' => 1, - '_um_can_view_all' => 1, - '_um_can_make_private_profile' => 0, - '_um_can_access_private_profile' => 0, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', + 'contributor' => array( + '_um_can_access_wpadmin' => 0, + '_um_can_not_see_adminbar' => 1, + '_um_can_edit_everyone' => 0, + '_um_can_delete_everyone' => 0, + '_um_can_edit_profile' => 1, + '_um_can_delete_profile' => 1, + '_um_after_login' => 'redirect_profile', + '_um_after_logout' => 'redirect_home', + '_um_default_homepage' => 1, + '_um_can_view_all' => 1, + '_um_can_make_private_profile' => 0, + '_um_can_access_private_profile' => 0, + '_um_status' => 'approved', + '_um_auto_approve_act' => 'redirect_profile', ), - 'editor' => array( - '_um_can_access_wpadmin' => 0, - '_um_can_not_see_adminbar' => 1, - '_um_can_edit_everyone' => 0, - '_um_can_delete_everyone' => 0, - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_after_login' => 'redirect_profile', - '_um_after_logout' => 'redirect_home', - '_um_default_homepage' => 1, - '_um_can_view_all' => 1, - '_um_can_make_private_profile' => 0, - '_um_can_access_private_profile' => 0, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', + 'editor' => array( + '_um_can_access_wpadmin' => 0, + '_um_can_not_see_adminbar' => 1, + '_um_can_edit_everyone' => 0, + '_um_can_delete_everyone' => 0, + '_um_can_edit_profile' => 1, + '_um_can_delete_profile' => 1, + '_um_after_login' => 'redirect_profile', + '_um_after_logout' => 'redirect_home', + '_um_default_homepage' => 1, + '_um_can_view_all' => 1, + '_um_can_make_private_profile' => 0, + '_um_can_access_private_profile' => 0, + '_um_status' => 'approved', + '_um_auto_approve_act' => 'redirect_profile', ), 'administrator' => array( - '_um_can_access_wpadmin' => 1, - '_um_can_not_see_adminbar' => 0, - '_um_can_edit_everyone' => 1, - '_um_can_delete_everyone' => 1, - '_um_can_edit_profile' => 1, - '_um_can_delete_profile' => 1, - '_um_default_homepage' => 1, - '_um_after_login' => 'redirect_admin', - '_um_after_logout' => 'redirect_home', - '_um_can_view_all' => 1, - '_um_can_make_private_profile' => 1, - '_um_can_access_private_profile' => 1, - '_um_status' => 'approved', - '_um_auto_approve_act' => 'redirect_profile', + '_um_can_access_wpadmin' => 1, + '_um_can_not_see_adminbar' => 0, + '_um_can_edit_everyone' => 1, + '_um_can_delete_everyone' => 1, + '_um_can_edit_profile' => 1, + '_um_can_delete_profile' => 1, + '_um_default_homepage' => 1, + '_um_after_login' => 'redirect_admin', + '_um_after_logout' => 'redirect_home', + '_um_can_view_all' => 1, + '_um_can_make_private_profile' => 1, + '_um_can_access_private_profile' => 1, + '_um_status' => 'approved', + '_um_auto_approve_act' => 'redirect_profile', ), ); @@ -826,20 +788,34 @@ if ( ! class_exists( 'um\Config' ) ) { return $permalink; } - /** * @todo make config class not cycled */ - function set_core_page() { - $this->core_pages = apply_filters( 'um_core_pages', array( - 'user' => array( 'title' => __( 'User', 'ultimate-member' ) ), - 'login' => array( 'title' => __( 'Login', 'ultimate-member' ) ), - 'register' => array( 'title' => __( 'Register', 'ultimate-member' ) ), - 'members' => array( 'title' => __( 'Members', 'ultimate-member' ) ), - 'logout' => array( 'title' => __( 'Logout', 'ultimate-member' ) ), - 'account' => array( 'title' => __( 'Account', 'ultimate-member' ) ), - 'password-reset' => array( 'title' => __( 'Password Reset', 'ultimate-member' ) ), - ) ); + public function set_core_page() { + $this->core_pages = array( + 'user' => array( + 'title' => __( 'User', 'ultimate-member' ), + ), + 'login' => array( + 'title' => __( 'Login', 'ultimate-member' ), + ), + 'register' => array( + 'title' => __( 'Register', 'ultimate-member' ), + ), + 'members' => array( + 'title' => __( 'Members', 'ultimate-member' ), + ), + 'logout' => array( + 'title' => __( 'Logout', 'ultimate-member' ), + ), + 'account' => array( + 'title' => __( 'Account', 'ultimate-member' ), + ), + 'password-reset' => array( + 'title' => __( 'Password Reset', 'ultimate-member' ), + ), + ); + $this->core_pages = apply_filters( 'um_core_pages', $this->core_pages ); } /** diff --git a/includes/class-init.php b/includes/class-init.php index 0a7d33b4..886697f8 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -235,7 +235,6 @@ if ( ! class_exists( 'UM' ) ) { } } - /** * Loading UM textdomain * @@ -246,71 +245,61 @@ if ( ! class_exists( 'UM' ) ) { $language_locale = get_user_locale(); /** - * UM hook + * Filters the language locale before loading textdomain. * - * @type filter - * @title um_language_locale - * @description Change UM language locale - * @input_vars - * [{"var":"$locale","type":"string","desc":"UM language locale"}] - * @change_log - * ["Since: 2.0"] - * @usage add_filter( 'um_language_locale', 'function_name', 10, 1 ); - * @example - * Change UM language locale. + * function my_um_language_locale( $language_locale ) { + * $language_locale = 'es_ES'; + * return $language_locale; * } - * ?> + * add_filter( 'um_language_locale', 'my_um_language_locale' ); */ $language_locale = apply_filters( 'um_language_locale', $language_locale ); - /** - * UM hook + * Filters the plugin's textdomain. * - * @type filter - * @title um_language_textdomain - * @description Change UM textdomain - * @input_vars - * [{"var":"$domain","type":"string","desc":"UM Textdomain"}] - * @change_log - * ["Since: 2.0"] - * @usage add_filter( 'um_language_textdomain', 'function_name', 10, 1 ); - * @example - * Change UM language locale. + * function my_um_language_textdomain( $textdomain ) { + * $language_locale = 'ultimate-member-custom'; + * return $textdomain; * } - * ?> + * add_filter( 'um_language_textdomain', 'my_um_language_textdomain' ); */ $language_domain = apply_filters( 'um_language_textdomain', 'ultimate-member' ); $language_file = WP_LANG_DIR . '/plugins/' . $language_domain . '-' . $language_locale . '.mo'; /** - * UM hook + * Filters the path to the language file (*.mo). * - * @type filter - * @title um_language_file - * @description Change UM language file path - * @input_vars - * [{"var":"$language_file","type":"string","desc":"UM language file path"}] - * @change_log - * ["Since: 2.0"] - * @usage add_filter( 'um_language_file', 'function_name', 10, 1 ); - * @example - * Change UM language file path. + * function my_um_language_file( $language_file ) { + * $language_file = '{path-to-language-file}'; * return $language_file; * } - * ?> + * add_filter( 'um_language_file', 'my_um_language_file' ); */ $language_file = apply_filters( 'um_language_file', $language_file ); @@ -321,7 +310,6 @@ if ( ! class_exists( 'UM' ) ) { load_textdomain( $language_domain, $language_file ); } - /** * 1.3.x active extensions deactivate for properly running 2.0.x AJAX upgrades */ From 7c2b30526671cef0a3363fd41890d8c4de4f77eb Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 7 Mar 2024 10:17:38 +0200 Subject: [PATCH 12/32] - strict typing with UM settings; - wpcs; - hookdocs; - added um-deprecated-hooks.php file for leaving the comments about deprecated hooks; - plugin textdomain native method to register textdomains; --- includes/class-init.php | 66 +++++++------------------------- includes/um-deprecated-hooks.php | 47 +++++++++++++++++++++++ 2 files changed, 60 insertions(+), 53 deletions(-) create mode 100644 includes/um-deprecated-hooks.php diff --git a/includes/class-init.php b/includes/class-init.php index 886697f8..a8005d2a 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -236,37 +236,18 @@ if ( ! class_exists( 'UM' ) ) { } /** - * Loading UM textdomain + * Loading UM textdomain. * - * 'ultimate-member' by default + * Note: 'ultimate-member' is a default textdomain. + * + * @since 2.8.5 WordPress native functions are used to make this function clear. */ public function localize() { - // The function `get_user_locale()` will return `get_locale()` result by default if user or its locale is empty. - $language_locale = get_user_locale(); - - /** - * Filters the language locale before loading textdomain. - * - * @since 1.3.x - * @hook um_language_locale - * - * @param {string} $language_locale Current language locale. - * - * @return {string} Maybe changed language locale. - * - * @example Change UM language locale. - * function my_um_language_locale( $language_locale ) { - * $language_locale = 'es_ES'; - * return $language_locale; - * } - * add_filter( 'um_language_locale', 'my_um_language_locale' ); - */ - $language_locale = apply_filters( 'um_language_locale', $language_locale ); - + $default_domain = dirname( plugin_basename( UM_PLUGIN ) ); /** * Filters the plugin's textdomain. * - * @param {string} $textdomain Plugin's textdomain. + * @param {string} $domain Plugin's textdomain. * * @return {string} Maybe changed plugin's textdomain. * @@ -274,40 +255,19 @@ if ( ! class_exists( 'UM' ) ) { * @hook um_language_textdomain * * @example Change UM language locale. - * function my_um_language_textdomain( $textdomain ) { - * $language_locale = 'ultimate-member-custom'; - * return $textdomain; + * function my_um_language_textdomain( $domain ) { + * $domain = 'ultimate-member-custom'; + * return $domain; * } * add_filter( 'um_language_textdomain', 'my_um_language_textdomain' ); */ - $language_domain = apply_filters( 'um_language_textdomain', 'ultimate-member' ); - - $language_file = WP_LANG_DIR . '/plugins/' . $language_domain . '-' . $language_locale . '.mo'; - - /** - * Filters the path to the language file (*.mo). - * - * @param {string} $language_file Default path to the language file. - * - * @return {string} Language file path. - * - * @since 1.3.x - * @hook um_language_file - * - * @example Change UM language file path. - * function my_um_language_file( $language_file ) { - * $language_file = '{path-to-language-file}'; - * return $language_file; - * } - * add_filter( 'um_language_file', 'my_um_language_file' ); - */ - $language_file = apply_filters( 'um_language_file', $language_file ); + $domain = apply_filters( 'um_language_textdomain', $default_domain ); // Unload textdomain if it has already loaded. - if ( is_textdomain_loaded( $language_domain ) ) { - unload_textdomain( $language_domain, true ); + if ( is_textdomain_loaded( $domain ) ) { + unload_textdomain( $domain, true ); } - load_textdomain( $language_domain, $language_file ); + load_plugin_textdomain( $domain, false, $default_domain . '/languages' ); } /** diff --git a/includes/um-deprecated-hooks.php b/includes/um-deprecated-hooks.php new file mode 100644 index 00000000..86a01327 --- /dev/null +++ b/includes/um-deprecated-hooks.php @@ -0,0 +1,47 @@ +Change UM language locale. + * function my_um_language_locale( $language_locale ) { + * $language_locale = 'es_ES'; + * return $language_locale; + * } + * add_filter( 'um_language_locale', 'my_um_language_locale' ); + */ + +/** + * Filters the path to the language file (*.mo). + * + * @param {string} $language_file Default path to the language file. + * + * @return {string} Language file path. + * + * @since 1.3.x + * @depecated 2.8.5 Used WordPress native `load_plugin_textdomain()`. And can be replaced via WordPress native hook 'load_textdomain_mofile'. + * @hook um_language_file + * + * @example Change UM language file path. + * function my_um_language_file( $language_file ) { + * $language_file = '{path-to-language-file}'; + * return $language_file; + * } + * add_filter( 'um_language_file', 'my_um_language_file' ); + */ From 7aaf47dc2d0f90facd536a4d5ce89534bb0489ac Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 7 Mar 2024 14:56:55 +0200 Subject: [PATCH 13/32] - WPCS; - hookdocs; --- includes/admin/class-site-health.php | 2 +- includes/admin/core/class-admin-columns.php | 2 +- includes/admin/core/class-admin-settings.php | 36 ------ includes/class-config.php | 4 +- includes/core/class-options.php | 124 ++++++++++--------- includes/core/class-setup.php | 2 +- includes/core/um-actions-register.php | 2 +- 7 files changed, 70 insertions(+), 102 deletions(-) diff --git a/includes/admin/class-site-health.php b/includes/admin/class-site-health.php index 7f15dea0..30406f7c 100644 --- a/includes/admin/class-site-health.php +++ b/includes/admin/class-site-health.php @@ -165,7 +165,7 @@ class Site_Health { $pages = array(); $predefined_pages = UM()->config()->core_pages; foreach ( $predefined_pages as $page_s => $page ) { - $page_id = UM()->options()->get_core_page_id( $page_s ); + $page_id = UM()->options()->get_predefined_page_option_key( $page_s ); $page_title = ! empty( $page['title'] ) ? $page['title'] : ''; if ( empty( $page_title ) ) { continue; diff --git a/includes/admin/core/class-admin-columns.php b/includes/admin/core/class-admin-columns.php index 212edfac..9baa4527 100644 --- a/includes/admin/core/class-admin-columns.php +++ b/includes/admin/core/class-admin-columns.php @@ -244,7 +244,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) { public function add_display_post_states( $post_states, $post ) { foreach ( UM()->config()->core_pages as $page_key => $page_value ) { - $page_id = UM()->options()->get( UM()->options()->get_core_page_id( $page_key ) ); + $page_id = UM()->options()->get( UM()->options()->get_predefined_page_option_key( $page_key ) ); if ( $page_id == $post->ID ) { $post_states[ 'um_core_page_' . $page_key ] = sprintf( 'UM %s', $page_value['title'] ); diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index b1bc777a..74af0edc 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -249,42 +249,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { ), ); -// $core_pages = UM()->config()->core_pages; -// -// foreach ( $core_pages as $page_s => $page ) { -// $have_pages = UM()->query()->wp_pages(); -// $page_id = UM()->options()->get_core_page_id( $page_s ); -// -// $page_title = ! empty( $page['title'] ) ? $page['title'] : ''; -// -// if ( 'reached_maximum_limit' === $have_pages ) { -// $general_pages_fields[] = array( -// 'id' => $page_id, -// 'type' => 'text', -// // translators: %s: Page title -// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ), -// 'placeholder' => __( 'Add page ID', 'ultimate-member' ), -// 'compiler' => true, -// 'size' => 'small', -// ); -// } else { -// $general_pages_fields[] = array( -// 'id' => $page_id, -// 'type' => 'select', -// // translators: %s: Page title -// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ), -// 'options' => UM()->query()->wp_pages(), -// 'placeholder' => __( 'Choose a page...', 'ultimate-member' ), -// 'compiler' => true, -// 'size' => 'small', -// ); -// } -// -// $settings_map[ $page_id ] = array( -// 'sanitize' => 'absint', -// ); -// } - foreach ( UM()->config()->get( 'predefined_pages' ) as $slug => $page ) { $page_id = UM()->options()->get_predefined_page_option_key( $slug ); $page_title = ! empty( $page['title'] ) ? $page['title'] : ''; diff --git a/includes/class-config.php b/includes/class-config.php index de0cda8a..3d3039a5 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -627,7 +627,7 @@ if ( ! class_exists( 'um\Config' ) ) { } foreach ( $this->core_pages as $page_s => $page ) { - $page_id = UM()->options()->get_core_page_id( $page_s ); + $page_id = UM()->options()->get_predefined_page_option_key( $page_s ); $this->settings_defaults[ $page_id ] = ''; } @@ -781,7 +781,7 @@ if ( ! class_exists( 'um\Config' ) ) { } foreach ( $core_pages as $page_key ) { - $page_option_key = UM()->options()->get_core_page_id( $page_key ); + $page_option_key = UM()->options()->get_predefined_page_option_key( $page_key ); $permalink[ $page_key ] = UM()->options()->get( $page_option_key ); } diff --git a/includes/core/class-options.php b/includes/core/class-options.php index 66a0ca97..daf801e3 100644 --- a/includes/core/class-options.php +++ b/includes/core/class-options.php @@ -7,64 +7,56 @@ if ( ! defined( 'ABSPATH' ) ) { if ( ! class_exists( 'um\core\Options' ) ) { - /** * Class Options * @package um\core */ class Options { - /** * @var array */ - var $options = array(); - + private $options = array(); /** * Options constructor. */ - function __construct() { + public function __construct() { $this->init_variables(); } - /** * Set variables */ - function init_variables() { + private function init_variables() { $this->options = get_option( 'um_options', array() ); } - /** - * Get UM option value + * Get UM option value. * - * @param $option_id - * @return mixed|string|void + * @param string $option_id + * + * @return mixed */ - function get( $option_id ) { + public function get( $option_id ) { if ( isset( $this->options[ $option_id ] ) ) { /** - * UM hook + * Filters the plugin option. * - * @type filter - * @title um_get_option_filter__{$option_id} - * @description Change UM option on get by $option_id - * @input_vars - * [{"var":"$option","type":"array","desc":"Option Value"}] - * @change_log - * ["Since: 2.0"] - * @usage - * - * @example - * Change `option_1` value. + * function my_custom_option_1( $value ) { + * $value = 'option_1_custom_value'; + * return $value; * } - * ?> + * add_filter( 'um_get_option_filter__option_1', 'my_custom_option_1' ); */ return apply_filters( "um_get_option_filter__{$option_id}", $this->options[ $option_id ] ); } @@ -72,35 +64,30 @@ if ( ! class_exists( 'um\core\Options' ) ) { switch ( $option_id ) { case 'site_name': return get_bloginfo( 'name' ); - break; case 'admin_email': return get_bloginfo( 'admin_email' ); - break; default: return ''; - break; } } - /** * Update UM option value * * @param $option_id * @param $value */ - function update( $option_id, $value ) { + public function update( $option_id, $value ) { $this->options[ $option_id ] = $value; update_option( 'um_options', $this->options ); } - /** * Delete UM option * * @param $option_id */ - function remove( $option_id ) { + public function remove( $option_id ) { if ( ! empty( $this->options[ $option_id ] ) ) { unset( $this->options[ $option_id ] ); } @@ -108,16 +95,15 @@ if ( ! class_exists( 'um\core\Options' ) ) { update_option( 'um_options', $this->options ); } - /** * Get UM option default value * * @use UM()->config() * - * @param $option_id + * @param string $option_id * @return mixed */ - function get_default( $option_id ) { + public function get_default( $option_id ) { $settings_defaults = UM()->config()->settings_defaults; if ( ! isset( $settings_defaults[ $option_id ] ) ) { return false; @@ -136,40 +122,58 @@ if ( ! class_exists( 'um\core\Options' ) ) { * @return string */ public function get_predefined_page_option_key( $slug ) { + /** + * Filters the predefined page option key. + * + * @param {string} $option_key Predefined page option key. + * + * @return {string} Predefined page option key. + * + * @since 2.8.3 + * @hook um_predefined_page_option_key + * + * @example Change option key for login predefined page. + * function my_um_predefined_page_option_key( $option_key ) { + * if ( 'core_login' === $option_key ) { + * $option_key = 'core_login_custom'; + * } + * return $option_key; + * } + * add_filter( 'um_predefined_page_option_key', 'my_um_predefined_page_option_key' ); + */ return apply_filters( 'um_predefined_page_option_key', "core_{$slug}" ); } /** * Get core page ID * + * @todo Deprecate soon + * * @param string $key * - * @return mixed|void + * @return string */ - function get_core_page_id( $key ) { + public function get_core_page_id( $key ) { /** - * UM hook + * Filters the predefined page option key. * - * @type filter - * @title um_core_page_id_filter - * @description Change UM page slug - * @input_vars - * [{"var":"$slug","type":"array","desc":"UM page slug"}] - * @change_log - * ["Since: 2.0"] - * @usage - * - * @example - * Change option key for login predefined page. + * function my_um_core_page_id_filter( $page_key ) { + * if ( 'core_login' === $page_key ) { + * $page_key = 'core_login_custom'; + * } + * return $page_key; * } - * ?> + * add_filter( 'um_core_page_id_filter', 'my_um_core_page_id_filter' ); */ - return apply_filters( 'um_core_page_id_filter', 'core_' . $key ); + return apply_filters( 'um_core_page_id_filter', $this->get_predefined_page_option_key( $key ) ); } - } } diff --git a/includes/core/class-setup.php b/includes/core/class-setup.php index 305397b1..ae67f0ac 100644 --- a/includes/core/class-setup.php +++ b/includes/core/class-setup.php @@ -213,7 +213,7 @@ KEY meta_value_indx (um_value(191)) $options = get_option( 'um_options', array() ); foreach ( $core_pages as $slug => $page_id ) { - $key = UM()->options()->get_core_page_id( $slug ); + $key = UM()->options()->get_predefined_page_option_key( $slug ); $options[ $key ] = $page_id; } diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php index 5d4bf6ac..d79718c4 100644 --- a/includes/core/um-actions-register.php +++ b/includes/core/um-actions-register.php @@ -766,7 +766,7 @@ add_action( 'um_registration_set_extra_data', 'um_registration_set_profile_full_ * Redirect from default registration to UM registration page */ function um_form_register_redirect() { - $page_id = UM()->options()->get( UM()->options()->get_core_page_id( 'register' ) ); + $page_id = UM()->options()->get( UM()->options()->get_predefined_page_option_key( 'register' ) ); // Do not redirect if the registration page is not published. if ( ! empty( $page_id ) && 'publish' === get_post_status( $page_id ) ) { // Not `um_safe_redirect()` because predefined register page is situated on the same host. From b710e797d509b48d9156e2930fc60c72ed7a817f Mon Sep 17 00:00:00 2001 From: ashubawork Date: Mon, 11 Mar 2024 12:43:06 +0200 Subject: [PATCH 14/32] - fix CSS --- assets/css/admin/common.css | 114 ++++++++++++++++++++--------------- assets/css/admin/common.sass | 6 ++ 2 files changed, 73 insertions(+), 47 deletions(-) diff --git a/assets/css/admin/common.css b/assets/css/admin/common.css index 2dbef9c5..5db149f9 100644 --- a/assets/css/admin/common.css +++ b/assets/css/admin/common.css @@ -3,19 +3,23 @@ width: 18px; text-align: center; display: inline-block; - color: #7acf58; } - .um-adm-ico.inactive { - color: #c74a4a; } - .um-adm-ico.pointer { - cursor: pointer; } + color: #7acf58; +} +.um-adm-ico.inactive { + color: #c74a4a; +} +.um-adm-ico.pointer { + cursor: pointer; +} body.um-admin-modal-open { - overflow: hidden; } + overflow: hidden; +} .um-admin #major-publishing-actions { background-color: #fff !important; - border-top: 0; } - + border-top: 0; +} .um-admin a.button i, .um-admin a.button-primary i { font-size: 15px !important; @@ -23,36 +27,38 @@ body.um-admin-modal-open { width: 15px !important; text-align: center !important; margin: 0 5px 0 0 !important; - display: inline-block; } - .um-admin a.button i:before, - .um-admin a.button-primary i:before { - position: relative; - top: 1px; } + display: inline-block; +} +.um-admin a.button i:before, +.um-admin a.button-primary i:before { + position: relative; + top: 1px; +} .um-admin-metabox h6 { font-size: 14px; - margin: 12px 0 0 0; } - + margin: 12px 0 0 0; +} .um-admin-metabox h3 { - padding-left: 0 !important; } - + padding-left: 0 !important; +} .um-admin-metabox h4 { font-size: 14px; background: #f5f5f5; padding: 8px 4px; - color: #333; } - + color: #333; +} .um-admin-metabox p { - margin: 10px 0 0 0; } - + margin: 10px 0 0 0; +} .um-admin-metabox label { display: block; cursor: default; padding: 0 !important; font-size: 13px; - color: #666; } - -.um-admin-metabox input[type="text"] { + color: #666; +} +.um-admin-metabox input[type=text] { height: auto !important; width: 100%; max-width: 100%; @@ -60,15 +66,18 @@ body.um-admin-modal-open { box-sizing: border-box !important; font-size: 13px !important; line-height: 1.4em !important; - padding: 4px 10px !important; } - .um-admin-metabox input[type="text"]:disabled { - opacity: 0.7 !important; - color: #aaa !important; } - .um-admin-metabox input[type="text"].small { - width: 54px; } - .um-admin-metabox input[type="text"].um-admin-error { - border-color: #c74a4a !important; } - + padding: 4px 10px !important; +} +.um-admin-metabox input[type=text]:disabled { + opacity: 0.7 !important; + color: #aaa !important; +} +.um-admin-metabox input[type=text].small { + width: 54px; +} +.um-admin-metabox input[type=text].um-admin-error { + border-color: #c74a4a !important; +} .um-admin-metabox textarea { width: 100%; max-width: 100%; @@ -79,18 +88,21 @@ body.um-admin-modal-open { padding: 8px !important; color: #888 !important; min-height: 100px; - height: 100px; } - .um-admin-metabox textarea.tall { - min-height: 200px; - height: 200px; } - .um-admin-metabox textarea.um-admin-error { - border-color: #c74a4a !important; } + height: 100px; +} +.um-admin-metabox textarea.tall { + min-height: 200px; + height: 200px; +} +.um-admin-metabox textarea.um-admin-error { + border-color: #c74a4a !important; +} .um .picker__box, .um .picker__nav--prev:hover, .um .picker__nav--next:hover { - background: #0085ba; } - + background: #0085ba; +} .um .picker__footer, .um .picker__header, .um .picker__day--infocus:hover, @@ -103,13 +115,21 @@ body.um-admin-modal-open { .um .picker__list-item--selected, .um .picker__list-item--selected:hover, .um .picker--focused .picker__list-item--selected { - background: #008ec2; } + background: #008ec2; +} body.um .picker .picker__frame { - top: 32px; } - + top: 32px; +} body.um .picker .picker__footer > button:not(:disabled):not(.button) { - color: #fff; } - + color: #fff; +} body.um .picker .picker__footer > button.picker__button--close { - margin-top: 5px; } + margin-top: 5px; +} + +#um-metaboxes-contentbox-1 a, +#um-metaboxes-contentbox-2 a, +#um-metaboxes-contentbox-3 a { + white-space: normal; +} diff --git a/assets/css/admin/common.sass b/assets/css/admin/common.sass index 8eaa35aa..aa35e9c0 100644 --- a/assets/css/admin/common.sass +++ b/assets/css/admin/common.sass @@ -114,3 +114,9 @@ body.um color: #fff & > button.picker__button--close margin-top: 5px + +#um-metaboxes-contentbox-1, +#um-metaboxes-contentbox-2, +#um-metaboxes-contentbox-3 + a + white-space: normal From eda97a0d8f9a30f8a7c085fdafd68057bf11ff8a Mon Sep 17 00:00:00 2001 From: ashubawork Date: Wed, 13 Mar 2024 11:25:41 +0200 Subject: [PATCH 15/32] - add hook for select filter relation --- includes/core/class-member-directory-meta.php | 22 +++++- includes/core/class-member-directory.php | 76 ++++++++++++------- 2 files changed, 69 insertions(+), 29 deletions(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 41d8b18d..55574529 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -328,7 +328,27 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped. } - $values = implode( ' OR ', $values_array ); + /** + * Filters change select filter relation. + * + * @param {string} $relation. + * @param {string} $field field key. + * + * @return {string} relation. + * + * @since 2.8.5 + * @hook um_members_directory_filter_select_meta + * + * @example Change relation to 'AND'. + * function my_um_members_directory_filter_select_meta( $relation, $field ) { + * // your code here + * $relation = 'AND'; + * return $relation; + * } + * add_filter( 'um_members_directory_filter_select_meta', 'my_um_members_directory_filter_select_meta', 10, 2 ); + */ + $relation = apply_filters( 'um_members_directory_filter_select_meta', 'OR', $field ); + $values = implode( ' ' . $relation . ' ', $values_array ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare. $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field ); diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index f2de4fb8..02575354 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1873,35 +1873,54 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { case 'select': if ( is_array( $value ) ) { - $field_query = array( 'relation' => 'OR' ); + /** + * Filters change select filter relation. + * + * @param {array} $args query args. + * @param {string} $field field key. + * + * @return {array} query args. + * + * @since 2.8.5 + * @hook um_members_directory_filter_select + * + * @example Change relation to 'AND'. + * function my_um_members_directory_filter_select( $args, $field ) { + * // your code here + * $args = array( 'relation' => 'AND' ) + * return $args; + * } + * add_filter( 'um_members_directory_filter_select', 'my_um_members_directory_filter_select', 10, 2 ); + */ + $field_query = apply_filters( 'um_members_directory_filter_select', array( 'relation' => 'OR' ), $field ); foreach ( $value as $single_val ) { $single_val = trim( stripslashes( $single_val ) ); $arr_meta_query = array( array( - 'key' => $field, - 'value' => $single_val, - 'compare' => '=', + 'key' => $field, + 'value' => $single_val, + 'compare' => '=', ), array( - 'key' => $field, - 'value' => serialize( (string) $single_val ), - 'compare' => 'LIKE', + 'key' => $field, + 'value' => serialize( (string) $single_val ), + 'compare' => 'LIKE', ), array( - 'key' => $field, - 'value' => '"' . $single_val . '"', - 'compare' => 'LIKE', - ) + 'key' => $field, + 'value' => '"' . $single_val . '"', + 'compare' => 'LIKE', + ), ); if ( is_numeric( $single_val ) ) { $arr_meta_query[] = array( - 'key' => $field, - 'value' => serialize( (int) $single_val ), - 'compare' => 'LIKE', + 'key' => $field, + 'value' => serialize( absint( $single_val ) ), + 'compare' => 'LIKE', ); } @@ -2141,35 +2160,36 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $value = array( $value ); } - $field_query = array( 'relation' => 'OR' ); + /** This filter is documented in includes/core/class-member-directory.php */ + $field_query = apply_filters( 'um_members_directory_filter_select', array( 'relation' => 'OR' ), $field ); foreach ( $value as $single_val ) { $single_val = trim( $single_val ); $arr_meta_query = array( array( - 'key' => $field, - 'value' => $single_val, - 'compare' => '=', + 'key' => $field, + 'value' => $single_val, + 'compare' => '=', ), array( - 'key' => $field, - 'value' => serialize( (string) $single_val ), - 'compare' => 'LIKE', + 'key' => $field, + 'value' => serialize( (string) $single_val ), + 'compare' => 'LIKE', ), array( - 'key' => $field, - 'value' => '"' . $single_val . '"', - 'compare' => 'LIKE', - ) + 'key' => $field, + 'value' => '"' . $single_val . '"', + 'compare' => 'LIKE', + ), ); if ( is_numeric( $single_val ) ) { $arr_meta_query[] = array( - 'key' => $field, - 'value' => serialize( (int) $single_val ), - 'compare' => 'LIKE', + 'key' => $field, + 'value' => serialize( absint( $single_val ) ), + 'compare' => 'LIKE', ); } From 8981337c6e35b7d8119ae09c1bacfc01557b99c6 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Thu, 14 Mar 2024 09:25:51 +0200 Subject: [PATCH 16/32] - add esc_sql() --- includes/core/class-member-directory-meta.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 55574529..72a725e4 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -348,7 +348,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { * add_filter( 'um_members_directory_filter_select_meta', 'my_um_members_directory_filter_select_meta', 10, 2 ); */ $relation = apply_filters( 'um_members_directory_filter_select_meta', 'OR', $field ); - $values = implode( ' ' . $relation . ' ', $values_array ); + $values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare. $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field ); From 1ac57a9d6aafef8f05a72fbf3204f3f8817ee3a9 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Tue, 19 Mar 2024 14:29:38 +0200 Subject: [PATCH 17/32] - fix responsive CSS --- includes/admin/class-enqueue.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/class-enqueue.php b/includes/admin/class-enqueue.php index 55f3a83a..9c9bdc3f 100644 --- a/includes/admin/class-enqueue.php +++ b/includes/admin/class-enqueue.php @@ -192,7 +192,7 @@ final class Enqueue extends \um\common\Enqueue { wp_register_style( 'um_styles', $css_url . 'um-styles' . $suffix . '.css', array( 'um_ui', 'um_tipsy', 'um_raty', 'um_fonticons_ii', 'um_fonticons_fa', 'select2' ), UM_VERSION ); wp_register_style( 'um_profile', $css_url . 'um-profile' . $suffix . '.css', array(), UM_VERSION ); - wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array( 'um_profile', 'um_crop' ), UM_VERSION ); + wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array( 'um_profile' ), UM_VERSION ); wp_register_style( 'um_account', $css_url . 'um-account' . $suffix . '.css', array(), UM_VERSION ); wp_register_style( 'um_default_css', $css_url . 'um-old-default' . $suffix . '.css', array(), UM_VERSION ); From 6d4c275c6bd0d1dcaedf0aa2d838829d9cd29e85 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Wed, 20 Mar 2024 15:43:24 +0200 Subject: [PATCH 18/32] - fix grid in admin area --- includes/blocks/um-member-directories/build/index.asset.php | 2 +- includes/blocks/um-member-directories/build/index.js | 2 +- includes/blocks/um-member-directories/src/index.js | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/includes/blocks/um-member-directories/build/index.asset.php b/includes/blocks/um-member-directories/build/index.asset.php index 4c516119..83e8be83 100644 --- a/includes/blocks/um-member-directories/build/index.asset.php +++ b/includes/blocks/um-member-directories/build/index.asset.php @@ -1 +1 @@ - array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'a7aefdd7c81b99d7d5e3'); + array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-server-side-render'), 'version' => '5b1a8ec016836a5c26cd'); diff --git a/includes/blocks/um-member-directories/build/index.js b/includes/blocks/um-member-directories/build/index.js index 4a028c8b..7492c2d3 100644 --- a/includes/blocks/um-member-directories/build/index.js +++ b/includes/blocks/um-member-directories/build/index.js @@ -1 +1 @@ -!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,r=window.wp.data,n=window.wp.components,i=window.wp.blockEditor,o=window.wp.serverSideRender,l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:u}=e.attributes;const c=(0,i.useBlockProps)(),a=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!a)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===a.length)return"No posts found.";let d=[{id:"",title:""}].concat(a).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))}(); \ No newline at end of file +(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,r=window.wp.data,i=window.wp.components,n=window.wp.blockEditor,o=window.wp.serverSideRender;var l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:a}=e.attributes;const c=(0,n.useBlockProps)(),u=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!u)return(0,t.createElement)("p",null,(0,t.createElement)(i.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===u.length)return"No posts found.";let d=[{id:"",title:""}].concat(u).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(n.InspectorControls,null,(0,t.createElement)(i.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(i.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)})),jQuery(e.addedNodes).find(".um-member").each((function(){var e=jQuery(this).parent();UM_Member_Grid(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/includes/blocks/um-member-directories/src/index.js b/includes/blocks/um-member-directories/src/index.js index 18bbcc63..41e606b3 100644 --- a/includes/blocks/um-member-directories/src/index.js +++ b/includes/blocks/um-member-directories/src/index.js @@ -101,6 +101,10 @@ jQuery(window).on( 'load', function($) { um_datepicker_filter_init( directory ); um_timepicker_filter_init( directory ); }); + jQuery(mutation.addedNodes).find('.um-member').each(function() { + var directory = jQuery(this).parent(); + UM_Member_Grid(directory); + }); }); }); From 5be49b261a7a1a41ead4bbca965ca4d74b7e3802 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Thu, 21 Mar 2024 13:17:53 +0200 Subject: [PATCH 19/32] - fix date/time pickers --- includes/admin/class-enqueue.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/includes/admin/class-enqueue.php b/includes/admin/class-enqueue.php index 9c9bdc3f..d17bfc88 100644 --- a/includes/admin/class-enqueue.php +++ b/includes/admin/class-enqueue.php @@ -95,9 +95,10 @@ final class Enqueue extends \um\common\Enqueue { * @since 2.6.1 */ public function block_editor() { - $suffix = self::get_suffix(); - $js_url = self::get_url( 'js' ); - $css_url = self::get_url( 'css' ); + $suffix = self::get_suffix(); + $js_url = self::get_url( 'js' ); + $css_url = self::get_url( 'css' ); + $libs_url = self::get_url( 'libs' ); $this->load_gutenberg_js(); @@ -196,6 +197,10 @@ final class Enqueue extends \um\common\Enqueue { wp_register_style( 'um_account', $css_url . 'um-account' . $suffix . '.css', array(), UM_VERSION ); wp_register_style( 'um_default_css', $css_url . 'um-old-default' . $suffix . '.css', array(), UM_VERSION ); + wp_register_style( 'um_datetime', $libs_url . 'pickadate/default' . $suffix . '.css', array(), '3.6.2' ); + wp_register_style( 'um_datetime_date', $libs_url . 'pickadate/default.date' . $suffix . '.css', array( 'um_datetime' ), '3.6.2' ); + wp_register_style( 'um_datetime_time', $libs_url . 'pickadate/default.time' . $suffix . '.css', array( 'um_datetime' ), '3.6.2' ); + wp_enqueue_style( 'um_default_css' ); wp_enqueue_style( 'um_members' ); wp_enqueue_style( 'um_styles' ); @@ -203,6 +208,9 @@ final class Enqueue extends \um\common\Enqueue { wp_enqueue_style( 'um_responsive' ); wp_enqueue_style( 'um_account' ); + wp_enqueue_style( 'um_datetime_date' ); + wp_enqueue_style( 'um_datetime_time' ); + $custom_css = '.wp-block .um{opacity: 1;}.um_request_name {display: none !important;}'; wp_add_inline_style( 'um_styles', $custom_css ); From 5b79b03be76eef1f7afc05e5dfa124a7b9414f2a Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 26 Mar 2024 00:47:40 +0200 Subject: [PATCH 20/32] - fixed gender member directory filter with Male/Female field values; --- includes/core/class-member-directory-meta.php | 27 ++++++++++++++ includes/core/class-member-directory.php | 35 ++++++++++++++++--- readme.txt | 1 - 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 41d8b18d..4f321cf6 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -496,6 +496,33 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { } break; + case 'gender': + if ( ! is_array( $value ) ) { + $value = array( $value ); + } + + // $join_alias is pre-escaped. + $this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID"; + + $values_array = array(); + foreach ( $value as $single_val ) { + $single_val = trim( stripslashes( $single_val ) ); + + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $compare variables are pre-escaped. + $values_array[] = $wpdb->prepare( "{$join_alias}.um_value LIKE %s", '%"' . $wpdb->esc_like( $single_val ) . '"%' ); + $values_array[] = $wpdb->prepare( "{$join_alias}.um_value = %s", $single_val ); + // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped. + } + + $values = implode( ' OR ', $values_array ); + + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare. + $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field ); + + if ( ! $is_default ) { + $this->custom_filters_in_query[ $field ] = $value; + } + break; } } diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index f2de4fb8..34f87665 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1819,7 +1819,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { switch ( $field ) { default: - $filter_type = $this->filter_types[ $field ]; /** @@ -1975,7 +1974,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { if ( ! empty( $field_query ) && $field_query !== true ) { $this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $field_query ) ); } - break; case 'role': $value = array_map( 'strtolower', $value ); @@ -1991,7 +1989,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->query_args['role__in'] = array_merge( $default_role, $um_role ); } else { $this->query_args['role__in'] = $value; - }; + } $this->custom_filters_in_query[ $field ] = $this->query_args['role__in']; @@ -2016,7 +2014,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { break; case 'user_registered': - $offset = 0; if ( isset( $_POST['gmt_offset'] ) && is_numeric( $_POST['gmt_offset'] ) ) { $offset = (int) $_POST['gmt_offset']; @@ -2065,6 +2062,36 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) ); break; + case 'gender': + if ( is_array( $value ) ) { + $field_query = array( 'relation' => 'OR' ); + + foreach ( $value as $single_val ) { + $single_val = trim( stripslashes( $single_val ) ); + + $arr_meta_query = array( + array( + 'key' => $field, + 'value' => $single_val, + 'compare' => '=', + ), + array( + 'key' => $field, + 'value' => '"' . $single_val . '"', + 'compare' => 'LIKE', + ), + ); + + $field_query = array_merge( $field_query, $arr_meta_query ); + } + } + + if ( ! empty( $field_query ) ) { + $this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $field_query ) ); + + $this->custom_filters_in_query[ $field ] = $value; + } + break; } } } diff --git a/readme.txt b/readme.txt index a45de4d8..bb89947a 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,6 @@ Author URI: https://ultimatemember.com/ Plugin URI: https://ultimatemember.com/ Contributors: ultimatemember, champsupertramp, nsinelnikov -Donate link: Tags: community, member, membership, user-profile, user-registration Requires PHP: 5.6 Requires at least: 5.5 From d48bcac683757a57776e20a36d45068df36ddf82 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 27 Mar 2024 11:06:02 +0200 Subject: [PATCH 21/32] - fixed using esc_attr() in href="" attributes; --- includes/admin/class-secure.php | 2 +- includes/admin/core/class-admin-users.php | 2 +- includes/ajax/class-secure.php | 10 ++--- includes/core/class-external-integrations.php | 2 +- includes/core/class-fields.php | 2 +- includes/core/um-actions-account.php | 2 +- includes/core/um-filters-commenting.php | 37 ++++++++++--------- includes/core/um-filters-fields.php | 26 +++++++------ includes/um-short-functions.php | 2 +- 9 files changed, 44 insertions(+), 41 deletions(-) diff --git a/includes/admin/class-secure.php b/includes/admin/class-secure.php index be3980c1..d9d56af0 100644 --- a/includes/admin/class-secure.php +++ b/includes/admin/class-secure.php @@ -331,7 +331,7 @@ if ( ! class_exists( 'um\admin\Secure' ) ) { $val .= '
' . esc_html__( 'Blocked Due to Suspicious Activity', 'ultimate-member' ) . '
'; $nonce = wp_create_nonce( 'um-security-restore-account-nonce-' . $user_id ); $restore_account_url = admin_url( 'users.php?user_id=' . $user_id . '&um_secure_restore_account=1&_wpnonce=' . $nonce ); - $action = ' · ' . esc_html__( 'Restore Account', 'ultimate-member' ) . ''; + $action = ' · ' . esc_html__( 'Restore Account', 'ultimate-member' ) . ''; if ( ! empty( $datetime ) ) { $val .= '
' . human_time_diff( strtotime( $datetime ) ) . ' ' . __( 'ago', 'ultimate-member' ) . '' . $action . '
'; } diff --git a/includes/admin/core/class-admin-users.php b/includes/admin/core/class-admin-users.php index 0857740e..6582793a 100644 --- a/includes/admin/core/class-admin-users.php +++ b/includes/admin/core/class-admin-users.php @@ -274,7 +274,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) { public function user_row_actions( $actions, $user_object ) { $user_id = $user_object->ID; - $actions['frontend_profile'] = '' . __( 'View profile', 'ultimate-member' ) . ''; + $actions['frontend_profile'] = '' . __( 'View profile', 'ultimate-member' ) . ''; $submitted = get_user_meta( $user_id, 'submitted', true ); if ( ! empty( $submitted ) ) { diff --git a/includes/ajax/class-secure.php b/includes/ajax/class-secure.php index c57235eb..f69fc682 100644 --- a/includes/ajax/class-secure.php +++ b/includes/ajax/class-secure.php @@ -284,7 +284,7 @@ class Secure { if ( $suspicious_accounts_count > 0 ) { $lock_register_forms_url = admin_url( 'admin.php?page=um_options&tab=advanced§ion=secure&um_secure_lock_register_forms=1&_wpnonce=' . wp_create_nonce( 'um_secure_lock_register_forms' ) ); $content .= $br . esc_html__( '1. Please temporarily lock all your active Register forms.', 'ultimate-member' ); - $content .= ' ' . esc_html__( 'Click here to lock them now.', 'ultimate-member' ) . ''; + $content .= ' ' . esc_html__( 'Click here to lock them now.', 'ultimate-member' ) . ''; $content .= ' ' . esc_html__( 'You can unblock the Register forms later. Just go to Ultimate Member > Settings > Advanced > Security and uncheck the option "Lock All Register Forms".', 'ultimate-member' ); $content .= $br . $br; $suspicious_accounts_url = admin_url( 'users.php?um_status=inactive' ); @@ -300,24 +300,24 @@ class Secure { } $content .= esc_html__( '2. Review all suspicious accounts and delete them completely.', 'ultimate-member' ); - $content .= ' ' . esc_html__( 'Click here to review accounts.', 'ultimate-member' ) . ''; + $content .= ' ' . esc_html__( 'Click here to review accounts.', 'ultimate-member' ) . ''; $content .= $br . $br; $nonce = wp_create_nonce( 'um-secure-expire-session-nonce' ); $destroy_all_sessions_url = admin_url( '?um_secure_expire_all_sessions=1&_wpnonce=' . esc_attr( $nonce ) . '&except_me=1' ); $content .= esc_html__( '3. If accounts are suspicious to you, please destroy all user sessions to logout active users on your site.', 'ultimate-member' ); - $content .= ' ' . esc_html__( 'Click here to Destroy Sessions now', 'ultimate-member' ) . ''; + $content .= ' ' . esc_html__( 'Click here to Destroy Sessions now', 'ultimate-member' ) . ''; $content .= $br . $br; $content .= esc_html__( '4. Run a complete scan on your site using third-party Security plugins such as', 'ultimate-member' ); - $content .= ' ' . esc_html__( 'WPScan/Jetpack Protect or WordFence Security', 'ultimate-member' ) . '.'; + $content .= ' ' . esc_html__( 'WPScan/Jetpack Protect or WordFence Security', 'ultimate-member' ) . '.'; $content .= $br . $br; $nonce = wp_create_nonce( 'um-secure-enable-reset-pass-nonce' ); $reset_pass_sessions_url = admin_url( '?um_secure_enable_reset_password=1&_wpnonce=' . esc_attr( $nonce ) . '&except_me=1' ); $content .= esc_html__( '5. Force users to Reset their Passwords.', 'ultimate-member' ); - $content .= ' ' . esc_html__( 'Click here to enable this option', 'ultimate-member' ) . '.'; + $content .= ' ' . esc_html__( 'Click here to enable this option', 'ultimate-member' ) . '.'; $content .= ' ' . esc_html__( 'When this option is enabled, users will be asked to reset their passwords(one-time) on the next login in the UM Login form.', 'ultimate-member' ); $content .= $br . $br; diff --git a/includes/core/class-external-integrations.php b/includes/core/class-external-integrations.php index 905ae007..8a846efe 100644 --- a/includes/core/class-external-integrations.php +++ b/includes/core/class-external-integrations.php @@ -604,7 +604,7 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) { */ function render_status_icon( $link, $text, $img ) { - $icon_html = ''; + $icon_html = ''; $icon_html .= ''
diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php
index ca65616c..a1fb8151 100644
--- a/includes/core/class-fields.php
+++ b/includes/core/class-fields.php
@@ -3092,7 +3092,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
 							$fonticon    = UM()->files()->get_fonticon_by_ext( $file_type['ext'] );
 
 							$output .= '<div class='; - $output .= ''; + $output .= ''; $output .= ''; $output .= '' . esc_html( $file_field_name ) . ''; $output .= '
'; diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 84544975..3f2e3cae 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -612,7 +612,7 @@ function um_after_account_privacy( $args ) { $exports_url = wp_privacy_exports_url(); echo '

' . esc_html__( 'You could download your previous data:', 'ultimate-member' ) . '

'; - echo '' . esc_html__( 'Download Personal Data', 'ultimate-member' ) . ''; + echo '' . esc_html__( 'Download Personal Data', 'ultimate-member' ) . ''; echo '

' . esc_html__( 'You could send a new request for an export of personal your data.', 'ultimate-member' ) . '

'; } diff --git a/includes/core/um-filters-commenting.php b/includes/core/um-filters-commenting.php index acadc17f..b6f6f570 100644 --- a/includes/core/um-filters-commenting.php +++ b/includes/core/um-filters-commenting.php @@ -1,37 +1,38 @@ -user_id ) && ! empty( $comment->user_id ) ){ + if ( ! empty( $comment->user_id ) ) { if ( isset( UM()->user()->cached_user[ $comment->user_id ] ) && UM()->user()->cached_user[ $comment->user_id ] ) { - - $return = '' . UM()->user()->cached_user[$comment->user_id]['name'] . ''; - + $return = '' . UM()->user()->cached_user[ $comment->user_id ]['name'] . ''; } else { - um_fetch_user( $comment->user_id ); - UM()->user()->cached_user[ $comment->user_id ] = array('url' => um_user_profile_url(), 'name' => um_user('display_name') ); - $return = '' . UM()->user()->cached_user[$comment->user_id]['name'] . ''; + UM()->user()->cached_user[ $comment->user_id ] = array( + 'url' => um_user_profile_url(), + 'name' => um_user( 'display_name' ), + ); + + $return = '' . UM()->user()->cached_user[ $comment->user_id ]['name'] . ''; um_reset_user(); - } } return $return; } -add_filter('get_comment_author_link', 'um_comment_link_to_profile', 10000, 3 ); \ No newline at end of file +add_filter( 'get_comment_author_link', 'um_comment_link_to_profile', 10000, 3 ); diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php index 94423d43..e8724ad9 100644 --- a/includes/core/um-filters-fields.php +++ b/includes/core/um-filters-fields.php @@ -114,7 +114,7 @@ add_filter( 'um_profile_field_filter_hook__youtube_video', 'um_profile_field_fil function um_profile_field_filter_hook__spotify( $value, $data ) { if ( preg_match( '/https:\/\/open.spotify.com\/.*/', $value ) ) { if ( false !== strpos( $value, '/user/' ) ) { - $value = '' . esc_html( $value ) . ''; + $value = '' . esc_html( $value ) . ''; } else { $url = str_replace( 'open.spotify.com/', 'open.spotify.com/embed/', $value ); @@ -162,12 +162,10 @@ add_filter( 'um_profile_field_filter_hook__vimeo_video', 'um_profile_field_filte * @return int|string */ function um_profile_field_filter_hook__phone( $value, $data ) { - $value = '' . esc_html( $value ) . ''; + $value = '' . esc_html( $value ) . ''; return $value; } -add_filter( 'um_profile_field_filter_hook__phone_number', 'um_profile_field_filter_hook__phone', 99, 2 ); -add_filter( 'um_profile_field_filter_hook__mobile_number', 'um_profile_field_filter_hook__phone', 99, 2 ); - +add_filter( 'um_profile_field_filter_hook__tel', 'um_profile_field_filter_hook__phone', 99, 2 ); /** * Outputs a viber link @@ -178,8 +176,9 @@ add_filter( 'um_profile_field_filter_hook__mobile_number', 'um_profile_field_fil * @return int|string */ function um_profile_field_filter_hook__viber( $value, $data ) { - $value = str_replace('+', '', $value); - $value = '' . esc_html( $value ) . ''; + $value = str_replace( '+', '', $value ); + $url = 'viber://chat?number=%2B' . $value; + $value = '' . esc_html( $value ) . ''; return $value; } add_filter( 'um_profile_field_filter_hook__viber', 'um_profile_field_filter_hook__viber', 99, 2 ); @@ -194,8 +193,9 @@ add_filter( 'um_profile_field_filter_hook__viber', 'um_profile_field_filter_hook * @return int|string */ function um_profile_field_filter_hook__whatsapp( $value, $data ) { - $value = str_replace('+', '', $value); - $value = '' . esc_html( $value ) . ''; + $value = str_replace( '+', '', $value ); + $url = add_query_arg( array( 'phone' => $value ), 'https://api.whatsapp.com/send' ); + $value = '' . esc_html( $value ) . ''; return $value; } add_filter( 'um_profile_field_filter_hook__whatsapp', 'um_profile_field_filter_hook__whatsapp', 99, 2 ); @@ -391,7 +391,7 @@ function um_profile_field_filter_hook__file( $value, $data ) { } $value = '
- + ' . esc_attr( $value ) . ' @@ -465,11 +465,13 @@ function um_profile_field_filter_hook__( $value, $data, $type = '' ) { $url_rel = ( isset( $data['url_rel'] ) && 'nofollow' === $data['url_rel'] ) ? 'rel="nofollow"' : ''; $data['url_target'] = ( isset( $data['url_target'] ) ) ? $data['url_target'] : '_blank'; + $protocols = wp_allowed_protocols(); if ( false === strstr( $value, 'join.skype.com' ) ) { $value = 'skype:' . $value . '?chat'; + $protocols[] = 'skype'; } - $value = '' . esc_html( $alt ) . ''; + $value = '' . esc_html( $alt ) . ''; } else { // check $value is oEmbed if ( 'oembed' === $data['type'] ) { @@ -545,7 +547,7 @@ function um_profile_field_filter_hook__( $value, $data, $type = '' ) { if ( ! is_array( $value ) ) { if ( is_email( $value ) ) { - $value = '' . $value . ''; + $value = '' . $value . ''; } } else { $value = implode( ', ', $value ); diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php index 0b8e7d98..a26f0d5a 100644 --- a/includes/um-short-functions.php +++ b/includes/um-short-functions.php @@ -870,7 +870,7 @@ function um_user_submited_display( $k, $title, $data = array(), $style = true ) } if ( ! empty( $filedata['original_name'] ) ) { - $v = '' . esc_html( $filedata['original_name'] ) . ''; + $v = '' . esc_html( $filedata['original_name'] ) . ''; } else { $v = $baseurl . um_user( 'ID' ) . '/' . $file; } From e2b7c6edbc28a45cc5d6723c64210940b1652869 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 27 Mar 2024 11:43:37 +0200 Subject: [PATCH 22/32] - reviewed #1486; - fixed #1483; --- includes/core/class-fields.php | 22 ++++++++++++++-------- includes/core/um-filters-fields.php | 18 ------------------ 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index ca65616c..19de34ab 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -653,13 +653,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) { * @return string */ public function field_label( $label, $key, $data ) { - $output = null; - $output .= '
'; - - if ( ! empty( $data['icon'] ) && isset( $this->field_icons ) && 'off' !== $this->field_icons && ( 'label' === $this->field_icons || true === $this->viewing ) ) { - $output .= '
'; - } - if ( true === $this->viewing ) { /** * Filters Ultimate Member field label on the Profile form: View mode. @@ -730,13 +723,26 @@ if ( ! class_exists( 'um\core\Fields' ) ) { $label = apply_filters( 'um_edit_label_all_fields', $label, $data ); } + $output = null; + $output .= '
'; + + if ( ! empty( $data['icon'] ) && isset( $this->field_icons ) && 'off' !== $this->field_icons && ( 'label' === $this->field_icons || true === $this->viewing ) ) { + $output .= '
'; + } + $fields_without_metakey = UM()->builtin()->get_fields_without_metakey(); $for_attr = ''; if ( ! in_array( $data['type'], $fields_without_metakey, true ) ) { $for_attr = ' for="' . esc_attr( $key . UM()->form()->form_suffix ) . '"'; } - $output .= '' . __( $label, 'ultimate-member' ) . ''; + $output .= '' . esc_html__( $label, 'ultimate-member' ); + + if ( ! empty( $data['required'] ) && UM()->options()->get( 'form_asterisk' ) ) { + $output .= '*'; + } + + $output .= ''; if ( ! empty( $data['help'] ) && false === $this->viewing && false === strpos( $key, 'confirm_user_pass' ) ) { if ( ! UM()->mobile()->isMobile() ) { diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php index 94423d43..0819aab3 100644 --- a/includes/core/um-filters-fields.php +++ b/includes/core/um-filters-fields.php @@ -3,24 +3,6 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } -/** - * Field is required? - * - * @param $label - * @param $data - * - * @return string - */ -function um_edit_label_all_fields( $label, $data ) { - $asterisk = UM()->options()->get( 'form_asterisk' ); - if ( $asterisk && ! empty( $data['required'] ) ) { - $label .= '*'; - } - - return $label; -} -add_filter( 'um_edit_label_all_fields', 'um_edit_label_all_fields', 10, 2 ); - /** * Outputs a oEmbed field * From 1f70835b3f98985633f1c4320df159d5494aec02 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Wed, 27 Mar 2024 15:27:06 +0200 Subject: [PATCH 23/32] - new gulp version; - reviewed #1479; --- assets/css/admin/block.css | 17 +- assets/css/admin/builder-rtl.css | 33 +- assets/css/admin/builder.css | 838 ++++--- assets/css/admin/common.css | 8 +- assets/css/admin/common.sass | 6 - assets/css/admin/dashboard.css | 84 +- assets/css/admin/dashboard.min.css | 2 +- assets/css/admin/dashboard.sass | 46 +- assets/css/admin/directories-screen.css | 15 +- assets/css/admin/extensions.css | 145 +- assets/css/admin/forms-rtl.css | 8 +- assets/css/admin/forms-screen.css | 23 +- assets/css/admin/forms.css | 558 +++-- assets/css/admin/global.css | 95 +- assets/css/admin/global.min.css | 2 +- assets/css/admin/global.sass | 2 +- assets/css/admin/modal.css | 219 +- assets/css/admin/modal.sass | 14 +- assets/css/admin/nav-menu.css | 19 +- assets/css/admin/roles.css | 33 +- assets/css/admin/settings.css | 211 +- assets/css/admin/users.css | 30 +- assets/css/common.css | 23 +- assets/css/um-members-rtl.css | 124 +- assets/css/um-members.css | 2154 ++++++++++-------- gulpfile.js | 278 ++- includes/admin/templates/dashboard/users.php | 153 +- 27 files changed, 2934 insertions(+), 2206 deletions(-) diff --git a/assets/css/admin/block.css b/assets/css/admin/block.css index 69ad1ae3..bc34c405 100644 --- a/assets/css/admin/block.css +++ b/assets/css/admin/block.css @@ -1,14 +1,17 @@ .um_block_settings .um_block_settings_hide { - display: none; } - + display: none; +} .um_block_settings .components-select-control .components-select-control__input[multiple] { - height: auto; } - .um_block_settings .components-select-control .components-select-control__input[multiple] + .components-input-control__suffix { - display: none; } + height: auto; +} +.um_block_settings .components-select-control .components-select-control__input[multiple] + .components-input-control__suffix { + display: none; +} .um-block-notice { background: #fff; - font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif; font-size: 13px; padding: 20px; - border: 1px solid #000; } + border: 1px solid #000; +} \ No newline at end of file diff --git a/assets/css/admin/builder-rtl.css b/assets/css/admin/builder-rtl.css index 28ebb947..a7fe152f 100644 --- a/assets/css/admin/builder-rtl.css +++ b/assets/css/admin/builder-rtl.css @@ -1,29 +1,38 @@ .um-admin-drag-ctrls-demo.um-admin-drag-ctrls { left: 12px; - right: auto; } + right: auto; +} .um-admin-drag-row-icons { left: 0; - right: auto; } - .um-admin-drag-row-icons a { - float: right; } + right: auto; +} +.um-admin-drag-row-icons a { + float: right; +} .um-admin-drag-ctrls.columns { right: 0 !important; - left: auto; } - .um-admin-drag-ctrls.columns a { - float: right; } + left: auto; +} +.um-admin-drag-ctrls.columns a { + float: right; +} .um-admin-drag-rowsub-icons { right: auto; - left: 0; } + left: 0; +} .um-admin-drag-fld-icons { - float: left; } - .um-admin-drag-fld-icons a { - float: right; } + float: left; +} +.um-admin-drag-fld-icons a { + float: right; +} .um-admin-drag-fld-title, .um-admin-drag-fld-type { float: right; - margin: 0 20px 0 0; } + margin: 0 20px 0 0; +} \ No newline at end of file diff --git a/assets/css/admin/builder.css b/assets/css/admin/builder.css index c34e6978..104f6dd7 100644 --- a/assets/css/admin/builder.css +++ b/assets/css/admin/builder.css @@ -1,123 +1,145 @@ @-webkit-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @-moz-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @-ms-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} .um-admin-row-loading { position: absolute; width: 100%; - height: calc( 100% + 30px); + height: calc(100% + 30px); top: -30px; left: 0; background: rgba(241, 241, 241, 0.6); z-index: 999; - display: none; } - .um-admin-row-loading > span { - display: block; - -webkit-transition: 0.1s opacity; - -moz-transition: 0.1s opacity; - -ms-transition: 0.1s opacity; - -o-transition: 0.1s opacity; - transition: 0.1s opacity; - color: #c6c6c6 !important; - -webkit-animation: um-ajax-spinning 1.1s infinite linear; - animation: um-ajax-spinning 1.1s infinite linear; - border-top: 0.2em solid black; - border-right: 0.2em solid black; - border-bottom: 0.2em solid black; - border-left: 0.2em solid #c6c6c6; - font-size: 1.75em; - filter: alpha(opacity=0); - -ms-transform: translateZ(0); - transform: translateZ(0); - border-radius: 50%; - width: 40px; - height: 40px; - margin: -20px 0 0 -20px; - outline: 0; - padding: 0; - vertical-align: baseline; - position: absolute; - left: 50%; - top: 50%; } + display: none; +} +.um-admin-row-loading > span { + display: block; + -webkit-transition: 0.1s opacity; + -moz-transition: 0.1s opacity; + -ms-transition: 0.1s opacity; + -o-transition: 0.1s opacity; + transition: 0.1s opacity; + color: #c6c6c6 !important; + -webkit-animation: um-ajax-spinning 1.1s infinite linear; + animation: um-ajax-spinning 1.1s infinite linear; + border-top: 0.2em solid rgb(0, 0, 0); + border-right: 0.2em solid rgb(0, 0, 0); + border-bottom: 0.2em solid rgb(0, 0, 0); + border-left: 0.2em solid #c6c6c6; + font-size: 1.75em; + filter: alpha(opacity=0); + -ms-transform: translateZ(0); + transform: translateZ(0); + border-radius: 50%; + width: 40px; + height: 40px; + margin: -20px 0 0 -20px; + outline: 0; + padding: 0; + vertical-align: baseline; + position: absolute; + left: 50%; + top: 50%; +} .um-admin-boxed-links { width: 100%; - text-align: center; } - .um-admin-boxed-links a { - width: 33.3%; - float: left; - border-left: 1px solid #fff; - border-right: 1px solid #fff; - padding: 30px 25px !important; - background: #f8f8f8; - text-align: center; - display: inline-block !important; - font-size: 14px; - transition: all .2s linear; - text-decoration: none; - color: #666; - margin: 0 !important; - box-sizing: border-box !important; - border-radius: 2px; - font-weight: 600; } - .um-admin-boxed-links a:hover { - background: #eee; } - .um-admin-boxed-links a.um-admin-activebg { - background: #0085ba; - color: #fff; } - .um-admin-boxed-links a.um-admin-activebg:hover { - background: #0085ba; - color: #fff; } - .um-admin-boxed-links i { - font-size: 28px; - vertical-align: middle; - margin: 0 10px 0 0; } + text-align: center; +} +.um-admin-boxed-links a { + width: 33.3%; + float: left; + border-left: 1px solid #fff; + border-right: 1px solid #fff; + padding: 30px 25px !important; + background: #f8f8f8; + text-align: center; + display: inline-block !important; + font-size: 14px; + transition: all 0.2s linear; + text-decoration: none; + color: #666; + margin: 0 !important; + box-sizing: border-box !important; + border-radius: 2px; + font-weight: 600; +} +.um-admin-boxed-links a:hover { + background: #eee; +} +.um-admin-boxed-links a.um-admin-activebg { + background: #0085ba; + color: #fff; +} +.um-admin-boxed-links a.um-admin-activebg:hover { + background: #0085ba; + color: #fff; +} +.um-admin-boxed-links i { + font-size: 28px; + vertical-align: middle; + margin: 0 10px 0 0; +} .um-admin-half { float: left; - width: 48%; } - .um-admin-half select { - box-sizing: border-box; } - .um-admin-half.um-admin-right { - float: right; } - .um-admin-half p:first-child { - margin-top: 0; } - .um-admin-half .um { - opacity: 1; - margin-bottom: 0 !important; } + width: 48%; +} +.um-admin-half select { + box-sizing: border-box; +} +.um-admin-half.um-admin-right { + float: right; +} +.um-admin-half p:first-child { + margin-top: 0; +} +.um-admin-half .um { + opacity: 1; + margin-bottom: 0 !important; +} .um-admin-tri { float: left; width: 33%; - position: relative; } + position: relative; +} .um-admin-error-block, .um-admin-success-block { @@ -131,16 +153,20 @@ padding: 12px; font-size: 13px; line-height: 1em !important; - margin: 0 0 16px 0; } + margin: 0 0 16px 0; +} .um-admin-success-block { - background: #7acf58; } + background: #7acf58; +} .um-admin-cur-condition-template { - display: none; } + display: none; +} .dynamic-mce-content { - display: none; } + display: none; +} .um-admin-btns { line-height: 1.5em; @@ -149,70 +175,88 @@ flex-direction: row; justify-content: flex-start; align-items: baseline; - flex-wrap: wrap; } - .um-admin-btns .um-no-custom-fields { - margin: 0; } - .um-admin-btns a { - margin: 0 3px 8px 0 !important; - font-size: 12px !important; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; - display: flex !important; } - .um-admin-btns a.with-icon span { - color: #aaa; - font-size: 15px !important; - padding-left: 5px; - height: auto; - width: auto; } - .um-admin-btns a.with-icon:hover span { - color: #cb3838; } + flex-wrap: wrap; +} +.um-admin-btns .um-no-custom-fields { + margin: 0; +} +.um-admin-btns a { + margin: 0 3px 8px 0 !important; + font-size: 12px !important; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; + display: flex !important; +} +.um-admin-btns a.with-icon span { + color: #aaa; + font-size: 15px !important; + padding-left: 5px; + height: auto; + width: auto; +} +.um-admin-btns a.with-icon:hover span { + color: #cb3838; +} .um-admin-btn-toggle { - padding: 10px 0; } - .um-admin-btn-toggle p { - margin: 0 5px 0 0 !important; } - .um-admin-btn-toggle p.um-admin-reset-conditions a { - margin-bottom: 5px; } - .um-admin-btn-toggle a { - text-decoration: none; - color: #999; } - .um-admin-btn-toggle a.um-admin-new-condition { - margin-bottom: 5px; } - .um-admin-btn-toggle a.active { - color: #0085ba; } - .um-admin-btn-toggle a.active:hover { - color: #0085ba; } - .um-admin-btn-toggle i { - margin: 0 5px 0 0 !important; - height: 100%; - color: #666; - position: relative; - top: 1px; } + padding: 10px 0; +} +.um-admin-btn-toggle p { + margin: 0 5px 0 0 !important; +} +.um-admin-btn-toggle p.um-admin-reset-conditions a { + margin-bottom: 5px; +} +.um-admin-btn-toggle a { + text-decoration: none; + color: #999; +} +.um-admin-btn-toggle a.um-admin-new-condition { + margin-bottom: 5px; +} +.um-admin-btn-toggle a.active { + color: #0085ba; +} +.um-admin-btn-toggle a.active:hover { + color: #0085ba; +} +.um-admin-btn-toggle i { + margin: 0 5px 0 0 !important; + height: 100%; + color: #666; + position: relative; + top: 1px; +} .um-admin-btn-content { display: none; - padding: 5px 0 0 0; } - .um-admin-btn-content p { - float: left; - margin-right: 10px !important; - padding: 0 !important; } - .um-admin-btn-content p.um-admin-conditions-notice { - width: 100%; - margin: 0 0 9px 0 !important; } - .um-admin-btn-content .um-admin-cur-condition:not(:last-child) { - margin: 0 0 5px 0; } + padding: 5px 0 0 0; +} +.um-admin-btn-content p { + float: left; + margin-right: 10px !important; + padding: 0 !important; +} +.um-admin-btn-content p.um-admin-conditions-notice { + width: 100%; + margin: 0 0 9px 0 !important; +} +.um-admin-btn-content .um-admin-cur-condition:not(:last-child) { + margin: 0 0 5px 0; +} .um-admin-builder i { font-size: 15px !important; height: 100% !important; line-height: 100% !important; - margin: 0 5px 0 0 !important; } - + margin: 0 5px 0 0 !important; +} .um-admin-builder .um-admin-drag { - margin-top: 40px; } + margin-top: 40px; +} .um-admin-drag-add-field { display: block; @@ -221,52 +265,66 @@ line-height: 30px; text-align: center; color: #aaa; - text-decoration: none; } - .um-admin-drag-add-field:hover { - color: #0085ba; } - .um-admin-drag-add-field i { - font-size: 23px !important; - margin: 0 !important; } + text-decoration: none; +} +.um-admin-drag-add-field:hover { + color: #0085ba; +} +.um-admin-drag-add-field i { + font-size: 23px !important; + margin: 0 !important; +} .um-admin-drag-ctrls { position: absolute; top: -30px; - left: 0; } - .um-admin-drag-ctrls.um-admin-drag-ctrls-demo { - position: absolute; - right: 7px; - top: -30px; - left: auto; } - .um-admin-drag-ctrls a { - float: left; - margin: 0 5px 0 0; - height: 30px; - line-height: 30px; - background: #eee; - color: #888; - padding: 0 8px; - text-decoration: none; - border-radius: 2px 2px 0 0; } - .um-admin-drag-ctrls a:hover { - background-color: #e5e5e5; } - .um-admin-drag-ctrls a.active, .um-admin-drag-ctrls a.active:hover { - background-color: #0085ba; - color: #fff; } - .um-admin-drag-ctrls.columns a { - width: 30px !important; - background-image: url(../../img/builder/1-column.gif); - background-repeat: no-repeat; - background-position: center; } - .um-admin-drag-ctrls.columns a:nth-child(2) { - background-image: url(../../img/builder/2-columns.gif); } - .um-admin-drag-ctrls.columns a:last-child { - background-image: url(../../img/builder/3-columns.gif); } - .um-admin-drag-ctrls.columns a.active { - background-image: url(../../img/builder/1-column-active.gif); } - .um-admin-drag-ctrls.columns a.active:nth-child(2) { - background-image: url(../../img/builder/2-columns-active.gif); } - .um-admin-drag-ctrls.columns a.active:last-child { - background-image: url(../../img/builder/3-columns-active.gif); } + left: 0; +} +.um-admin-drag-ctrls.um-admin-drag-ctrls-demo { + position: absolute; + right: 7px; + top: -30px; + left: auto; +} +.um-admin-drag-ctrls a { + float: left; + margin: 0 5px 0 0; + height: 30px; + line-height: 30px; + background: #eee; + color: #888; + padding: 0 8px; + text-decoration: none; + border-radius: 2px 2px 0 0; +} +.um-admin-drag-ctrls a:hover { + background-color: #e5e5e5; +} +.um-admin-drag-ctrls a.active, .um-admin-drag-ctrls a.active:hover { + background-color: #0085ba; + color: #fff; +} +.um-admin-drag-ctrls.columns a { + width: 30px !important; + background-image: url(../../img/builder/1-column.gif); + background-repeat: no-repeat; + background-position: center; +} +.um-admin-drag-ctrls.columns a:nth-child(2) { + background-image: url(../../img/builder/2-columns.gif); +} +.um-admin-drag-ctrls.columns a:last-child { + background-image: url(../../img/builder/3-columns.gif); +} +.um-admin-drag-ctrls.columns a.active { + background-image: url(../../img/builder/1-column-active.gif); +} +.um-admin-drag-ctrls.columns a.active:nth-child(2) { + background-image: url(../../img/builder/2-columns-active.gif); +} +.um-admin-drag-ctrls.columns a.active:last-child { + background-image: url(../../img/builder/3-columns-active.gif); +} .um-admin-drag { width: 100%; @@ -275,7 +333,8 @@ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; position: relative; - padding: 60px 20px 20px 20px; } + padding: 60px 20px 20px 20px; +} .um-admin-drag-row { width: 100%; @@ -285,51 +344,59 @@ -webkit-box-sizing: border-box; position: relative; padding: 60px 20px 20px 20px; - margin: 0 0 60px 0; } - .um-admin-drag-row:last-child { - margin-bottom: 0; } + margin: 0 0 60px 0; +} +.um-admin-drag-row:last-child { + margin-bottom: 0; +} .um-admin-drag-row-icons { position: absolute; right: 0; top: -30px; - height: 30px; } - .um-admin-drag-row-icons a { - text-decoration: none; - color: #fff; - width: 40px; - height: 30px; - line-height: 30px; - text-align: center; - display: block !important; - float: left; - background: #0085ba; - padding: 0 4px; - transition: all .2s linear; - border-left: 1px solid #379dd5; } - .um-admin-drag-row-icons a:hover { - background: #008ec2; } - .um-admin-drag-row-icons span { - cursor: move !important; - text-decoration: none; - color: #fff; - width: 40px; - height: 30px; - line-height: 30px; - text-align: center; - display: block !important; - float: left; - background: #0085ba; - padding: 0 4px; - transition: all .2s linear; - border-left: 1px solid #379dd5; } - .um-admin-drag-row-icons span:hover { - background: #008ec2; } - .um-admin-drag-row-icons i { - font-size: 18px !important; - margin: 0 !important; - top: 2px; - position: relative; } + height: 30px; +} +.um-admin-drag-row-icons a { + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #0085ba; + padding: 0 4px; + transition: all 0.2s linear; + border-left: 1px solid #379dd5; +} +.um-admin-drag-row-icons a:hover { + background: #008ec2; +} +.um-admin-drag-row-icons span { + cursor: move !important; + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #0085ba; + padding: 0 4px; + transition: all 0.2s linear; + border-left: 1px solid #379dd5; +} +.um-admin-drag-row-icons span:hover { + background: #008ec2; +} +.um-admin-drag-row-icons i { + font-size: 18px !important; + margin: 0 !important; + top: 2px; + position: relative; +} .um-admin-drag-rowsub { position: relative; @@ -338,51 +405,59 @@ -webkit-box-sizing: border-box; background: #f1f1f1; padding: 20px; - margin: 0 0 60px 0; } - .um-admin-drag-rowsub:last-child { - margin-bottom: 0; } + margin: 0 0 60px 0; +} +.um-admin-drag-rowsub:last-child { + margin-bottom: 0; +} .um-admin-drag-rowsub-icons { position: absolute; right: 0; top: -30px; - height: 30px; } - .um-admin-drag-rowsub-icons a { - text-decoration: none; - color: #fff; - width: 40px; - height: 30px; - line-height: 30px; - text-align: center; - display: block !important; - float: left; - background: #0085ba; - padding: 0 4px; - transition: all .2s linear; - border-left: 1px solid #379dd5; } - .um-admin-drag-rowsub-icons a:hover { - background: #008ec2; } - .um-admin-drag-rowsub-icons span { - cursor: move !important; - text-decoration: none; - color: #fff; - width: 40px; - height: 30px; - line-height: 30px; - text-align: center; - display: block !important; - float: left; - background: #0085ba; - padding: 0 4px; - transition: all .2s linear; - border-left: 1px solid #379dd5; } - .um-admin-drag-rowsub-icons span:hover { - background: #008ec2; } - .um-admin-drag-rowsub-icons i { - font-size: 18px !important; - margin: 0 !important; - top: 2px; - position: relative; } + height: 30px; +} +.um-admin-drag-rowsub-icons a { + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #0085ba; + padding: 0 4px; + transition: all 0.2s linear; + border-left: 1px solid #379dd5; +} +.um-admin-drag-rowsub-icons a:hover { + background: #008ec2; +} +.um-admin-drag-rowsub-icons span { + cursor: move !important; + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #0085ba; + padding: 0 4px; + transition: all 0.2s linear; + border-left: 1px solid #379dd5; +} +.um-admin-drag-rowsub-icons span:hover { + background: #008ec2; +} +.um-admin-drag-rowsub-icons i { + font-size: 18px !important; + margin: 0 !important; + top: 2px; + position: relative; +} .um-admin-drag-col { float: left; @@ -390,51 +465,65 @@ background: #fff; border: 1px dashed #bbb; box-sizing: border-box; - padding: 20px; } - .um-admin-drag-col.cols-3 { - width: 32%; } - .um-admin-drag-col.cols-3.cols-last { - width: 32%; } - .um-admin-drag-col.cols-3.cols-middle { - width: 32%; - margin: 0 2%; } - .um-admin-drag-col.cols-3 .um-admin-drag-fld-title { - height: auto; - line-height: 18px; - margin: 10px; - margin-bottom: 0; } - .um-admin-drag-col.cols-3 .um-admin-drag-fld-type { - height: auto; - line-height: 18px; - margin: 0 0 10px 0; } - .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons { - float: none; - position: absolute; - bottom: 0; - right: 0; - height: 30px; - display: none; } - .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group { - float: left; - position: relative; - bottom: auto; - right: auto; - height: 30px; - display: block; } - .um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons { - display: block; } - .um-admin-drag-col.cols-1 { - width: 100%; } - .um-admin-drag-col.cols-1.cols-last { - width: 100%; } - .um-admin-drag-col.cols-2 { - width: 49%; - margin: 0 1% 0 0; } - .um-admin-drag-col.cols-2.cols-last { - width: 49%; - margin: 0 0 0 1%; } - .um-admin-drag-col > .um-admin-drag-fld:last-of-type { - margin-bottom: 20px; } + padding: 20px; +} +.um-admin-drag-col.cols-3 { + width: 32%; +} +.um-admin-drag-col.cols-3.cols-last { + width: 32%; +} +.um-admin-drag-col.cols-3.cols-middle { + width: 32%; + margin: 0 2%; +} +.um-admin-drag-col.cols-3 .um-admin-drag-fld-title { + height: auto; + line-height: 18px; + margin: 10px; + margin-bottom: 0; +} +.um-admin-drag-col.cols-3 .um-admin-drag-fld-type { + height: auto; + line-height: 18px; + margin: 0 0 10px 0; +} +.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons { + float: none; + position: absolute; + bottom: 0; + right: 0; + height: 30px; + display: none; +} +.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group { + float: left; + position: relative; + bottom: auto; + right: auto; + height: 30px; + display: block; +} +.um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons { + display: block; +} +.um-admin-drag-col.cols-1 { + width: 100%; +} +.um-admin-drag-col.cols-1.cols-last { + width: 100%; +} +.um-admin-drag-col.cols-2 { + width: 49%; + margin: 0 1% 0 0; +} +.um-admin-drag-col.cols-2.cols-last { + width: 49%; + margin: 0 0 0 1%; +} +.um-admin-drag-col > .um-admin-drag-fld:last-of-type { + margin-bottom: 20px; +} .um-admin-drag-addrow { text-align: center; @@ -443,12 +532,15 @@ cursor: pointer; border: 1px dashed #bbb; padding: 10px 0; - margin: 20px 0 0 0; } - .um-admin-drag-addrow i { - font-size: 23px !important; - margin: 0 !important; } - .um-admin-drag-addrow:hover { - color: #0085ba; } + margin: 20px 0 0 0; +} +.um-admin-drag-addrow i { + font-size: 23px !important; + margin: 0 !important; +} +.um-admin-drag-addrow:hover { + color: #0085ba; +} .um-admin-drag-fld { display: block; @@ -456,10 +548,12 @@ border: 1px solid #dddddd; margin: 0 0 15px 0; background: #f5f5f5; - cursor: move !important; } - .um-admin-drag-fld.um-field-type-group { - background: #555; - border: 0; } + cursor: move !important; +} +.um-admin-drag-fld.um-field-type-group { + background: #555; + border: 0; +} .um-admin-drag-fld-title { float: left; @@ -468,19 +562,23 @@ color: #666; height: 30px; line-height: 30px; - margin: 0 0 0 20px; } - .um-admin-drag-fld-title.um-field-type-group { - color: #fff; } - .um-admin-drag-fld-title i { - width: 24px; - display: inline-block; - text-align: center; } + margin: 0 0 0 20px; +} +.um-admin-drag-fld-title.um-field-type-group { + color: #fff; +} +.um-admin-drag-fld-title i { + width: 24px; + display: inline-block; + text-align: center; +} .um-admin-drag-group { background: #fcfcfc; cursor: default; padding: 20px; - border: 1px dashed #bbb; } + border: 1px dashed #bbb; +} .um-admin-drag-fld-type { float: left; @@ -489,60 +587,72 @@ line-height: 30px; margin: 0 0 0 20px; font-weight: 400; - color: #999; } - .um-admin-drag-fld-type.um-field-type-group { - color: #fff; } + color: #999; +} +.um-admin-drag-fld-type.um-field-type-group { + color: #fff; +} .um-admin-drag-fld-icons { - float: right; } - .um-admin-drag-fld-icons a { - text-decoration: none; - color: #fff; - width: 40px; - height: 30px; - line-height: 30px; - text-align: center; - display: block !important; - float: left; - background: #0085ba; - padding: 0 4px; - transition: all .2s linear; - border-left: 1px solid #379dd5; } - .um-admin-drag-fld-icons a:hover { - background: #008ec2; } - .um-admin-drag-fld-icons i { - font-size: 18px !important; - margin: 0 !important; - top: 2px; - position: relative; } - .um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field { - display: none !important; } + float: right; +} +.um-admin-drag-fld-icons a { + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #0085ba; + padding: 0 4px; + transition: all 0.2s linear; + border-left: 1px solid #379dd5; +} +.um-admin-drag-fld-icons a:hover { + background: #008ec2; +} +.um-admin-drag-fld-icons i { + font-size: 18px !important; + margin: 0 !important; + top: 2px; + position: relative; +} +.um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field { + display: none !important; +} .um-row-placeholder { width: 100%; border: 2px dashed #aaa; - box-sizing: border-box; } + box-sizing: border-box; +} .um-rowsub-placeholder { width: 100%; border: 2px dashed #ccc; box-sizing: border-box; - display: block; } + display: block; +} .um-fld-placeholder { display: block; border: 1px dashed #ddd; background: #fff; box-sizing: border-box; - width: 100%; } + width: 100%; +} .um-admin-modal #UM_preview_form .um-admin-modal-body { - position: relative; } - .um-admin-modal #UM_preview_form .um-admin-modal-body .um-admin-preview-overlay { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - background-color: rgba(255, 255, 255, 0); - z-index: 100; } + position: relative; +} +.um-admin-modal #UM_preview_form .um-admin-modal-body .um-admin-preview-overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(255, 255, 255, 0); + z-index: 100; +} \ No newline at end of file diff --git a/assets/css/admin/common.css b/assets/css/admin/common.css index 5db149f9..1358ba92 100644 --- a/assets/css/admin/common.css +++ b/assets/css/admin/common.css @@ -126,10 +126,4 @@ body.um .picker .picker__footer > button:not(:disabled):not(.button) { } body.um .picker .picker__footer > button.picker__button--close { margin-top: 5px; -} - -#um-metaboxes-contentbox-1 a, -#um-metaboxes-contentbox-2 a, -#um-metaboxes-contentbox-3 a { - white-space: normal; -} +} \ No newline at end of file diff --git a/assets/css/admin/common.sass b/assets/css/admin/common.sass index aa35e9c0..8eaa35aa 100644 --- a/assets/css/admin/common.sass +++ b/assets/css/admin/common.sass @@ -114,9 +114,3 @@ body.um color: #fff & > button.picker__button--close margin-top: 5px - -#um-metaboxes-contentbox-1, -#um-metaboxes-contentbox-2, -#um-metaboxes-contentbox-3 - a - white-space: normal diff --git a/assets/css/admin/dashboard.css b/assets/css/admin/dashboard.css index 0504fde1..d850aa2c 100644 --- a/assets/css/admin/dashboard.css +++ b/assets/css/admin/dashboard.css @@ -8,60 +8,74 @@ border-radius: 3px; top: 5px; left: 3px; - border: none !important; } - + border: none !important; +} #um-metaboxes-general.wrap a.red, #um-metaboxes-general.wrap span.red { - color: #c74a4a; } - + color: #c74a4a; +} #um-metaboxes-general.wrap span.ok { - color: #7acf58; } + color: #7acf58; +} .um-metabox-holder p.sub { padding: 0 4px 2px 4px; margin: 0 0 8px 0; color: #8F8F8F; font-size: 14px; - border-bottom: 1px solid #ECECEC; } - -.um-metabox-holder .table { - float: left; - width: 45%; } - .um-metabox-holder .table td { - white-space: nowrap; - font-size: 12px; } - + border-bottom: 1px solid #ECECEC; +} .um-metabox-holder a.warning { color: #c74a4a !important; background: transparent !important; - border: 0; } - -.um-metabox-holder .table_right { - float: right; - width: 45%; } - -.um-metabox-holder td.b { - padding-right: 6px; - text-align: right; - font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; - font-size: 14px; - width: 1%; } - .um-metabox-holder td.b a { - font-size: 18px; } - + border: 0; +} .um-metabox-holder .norm i { display: inline-block; width: 30px; - text-align: center; } - + text-align: center; +} .um-metabox-holder .norm p { - margin: 5px 0; } - + margin: 5px 0; +} .um-metabox-holder .norm .count { font-size: 16px; - font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; color: #999; width: 40px; display: inline-block; text-align: right; - margin-right: 10px; } + margin-right: 10px; +} + +#um-users-overview-table { + width: 100%; +} +#um-users-overview-table td { + width: 50%; + vertical-align: middle; + padding: 0 0 0 5px; + box-sizing: border-box; +} +#um-users-overview-table td:first-child { + padding: 0 5px 0 0; +} +#um-users-overview-table td > span { + width: 100%; + direction: ltr; + display: grid; + grid-gap: 6px; + grid-template-columns: repeat(2, minmax(20px, auto)); + align-content: start; + align-items: center; + justify-content: start; + justify-items: center; +} +#um-users-overview-table td > span a { + word-break: break-word; +} +#um-users-overview-table td > span a.count { + justify-self: end; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-size: 18px; +} \ No newline at end of file diff --git a/assets/css/admin/dashboard.min.css b/assets/css/admin/dashboard.min.css index 121b1a39..e667635c 100644 --- a/assets/css/admin/dashboard.min.css +++ b/assets/css/admin/dashboard.min.css @@ -1 +1 @@ -#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder .table{float:left;width:45%}.um-metabox-holder .table td{white-space:nowrap;font-size:12px}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .table_right{float:right;width:45%}.um-metabox-holder td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}.um-metabox-holder td.b a{font-size:18px}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px} \ No newline at end of file +#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px}#um-users-overview-table{width:100%}#um-users-overview-table td{width:50%;vertical-align:middle;padding:0 0 0 5px;box-sizing:border-box}#um-users-overview-table td:first-child{padding:0 5px 0 0}#um-users-overview-table td>span{width:100%;direction:ltr;display:grid;grid-gap:6px;grid-template-columns:repeat(2,minmax(20px,auto));align-content:start;align-items:center;justify-content:start;justify-items:center}#um-users-overview-table td>span a{word-break:break-word}#um-users-overview-table td>span a.count{justify-self:end;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:18px} \ No newline at end of file diff --git a/assets/css/admin/dashboard.sass b/assets/css/admin/dashboard.sass index 63702151..57bbcde8 100644 --- a/assets/css/admin/dashboard.sass +++ b/assets/css/admin/dashboard.sass @@ -30,31 +30,11 @@ font-size: 14px border-bottom: 1px solid #ECECEC - .table - float: left - width: 45% - td - white-space: nowrap - font-size: 12px - a.warning color: #{$admin-warning} !important background: transparent !important border: 0 - .table_right - float: right - width: 45% - - td.b - padding-right: 6px - text-align: right - font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif - font-size: 14px - width: 1% - a - font-size: 18px - .norm i display: inline-block @@ -72,3 +52,29 @@ display: inline-block text-align: right margin-right: 10px + +#um-users-overview-table + width: 100% + td + width: 50% + vertical-align: middle + padding: 0 0 0 5px + box-sizing: border-box + &:first-child + padding: 0 5px 0 0 + td > span + width: 100% + direction: ltr + display: grid + grid-gap: 6px + grid-template-columns: repeat(2, minmax(20px, auto)) + align-content: start + align-items: center + justify-content: start + justify-items: center + a + word-break: break-word + &.count + justify-self: end + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif + font-size: 18px diff --git a/assets/css/admin/directories-screen.css b/assets/css/admin/directories-screen.css index 0f801ad2..1bcc98b0 100644 --- a/assets/css/admin/directories-screen.css +++ b/assets/css/admin/directories-screen.css @@ -1,13 +1,16 @@ .um-admin.post-type-um_directory .wp-list-table.posts .manage-column.column-id { - width: 60px; } - + width: 60px; +} .um-admin.post-type-um_directory .wp-list-table.posts .manage-column.column-shortcode { - width: 35%; } - + width: 35%; +} .um-admin.post-type-um_directory .wp-list-table.posts .column-is_default { width: 120px; - text-align: center !important; } + text-align: center !important; +} @media screen and (max-width: 782px) { .um-admin.post-type-um_directory .wp-list-table.posts td.column-is_default { - text-align: left !important; } } + text-align: left !important; + } +} \ No newline at end of file diff --git a/assets/css/admin/extensions.css b/assets/css/admin/extensions.css index 791e3607..59d7033a 100644 --- a/assets/css/admin/extensions.css +++ b/assets/css/admin/extensions.css @@ -10,8 +10,8 @@ -ms-grid-template-columns: repeat(3, 1fr); -ms-grid-gap: 10px; -ms-grid-auto-rows: minmax(max-content, auto); - align-items: center; } - + align-items: center; +} #um-extensions-wrap .plugin-card { display: flex; flex-direction: column; @@ -20,8 +20,8 @@ flex-wrap: nowrap; width: 100%; margin: 0; - padding: 20px; } - + padding: 20px; +} #um-extensions-wrap .plugin-image-wrapper { display: flex; flex-direction: row; @@ -35,43 +35,48 @@ border-radius: 60px; box-shadow: 0 2px 9px rgba(50, 50, 93, 0.21); border: solid 4px #fff; - overflow: hidden; } - #um-extensions-wrap .plugin-image-wrapper a { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - background-color: #7856ff; } - + overflow: hidden; +} +#um-extensions-wrap .plugin-image-wrapper a { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + background-color: #7856ff; +} #um-extensions-wrap a.plugin-image { - display: block; } - #um-extensions-wrap a.plugin-image img { - display: block; } - #um-extensions-wrap a.plugin-image.svg-image { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - flex-wrap: nowrap; } - #um-extensions-wrap a.plugin-image.svg-image img { - filter: invert(1); - background-color: transparent; - width: 38px; - height: auto; } - #um-extensions-wrap a.plugin-image:not(.svg-image) img { - width: 70px; - margin: 0; - height: 70px; - padding: 0; } - + display: block; +} +#um-extensions-wrap a.plugin-image img { + display: block; +} +#um-extensions-wrap a.plugin-image.svg-image { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + flex-wrap: nowrap; +} +#um-extensions-wrap a.plugin-image.svg-image img { + filter: invert(1); + background-color: transparent; + width: 38px; + height: auto; +} +#um-extensions-wrap a.plugin-image:not(.svg-image) img { + width: 70px; + margin: 0; + height: 70px; + padding: 0; +} #um-extensions-wrap #um_bbpress_image { background-color: #fff !important; filter: none !important; - width: 70px !important; } - + width: 70px !important; +} #um-extensions-wrap #um_mycred_image { - background-color: #fff; } - + background-color: #fff; +} #um-extensions-wrap #um_groups_image, #um-extensions-wrap #um_profile-tabs_image, #um-extensions-wrap #um_user-tags_image, @@ -80,44 +85,46 @@ #um-extensions-wrap #um_verified-users_image, #um-extensions-wrap #um_private-content_image, #um-extensions-wrap #um_online-users_image { - width: 36px !important; } - + width: 36px !important; +} #um-extensions-wrap #um_notices_image, #um-extensions-wrap #um_social-activity_image, #um-extensions-wrap #um_profile-completeness_image, #um-extensions-wrap #um_private-messages_image, #um-extensions-wrap #um_user-photos_image, #um-extensions-wrap #um_terms-conditions_image { - width: 29px !important; } - + width: 29px !important; +} #um-extensions-wrap #um_social-login_image { - width: 28px !important; } - + width: 28px !important; +} #um-extensions-wrap #um_real-time-notifications_image, #um-extensions-wrap #um_user-notes_image { - width: 26px !important; } - + width: 26px !important; +} #um-extensions-wrap #um_followers_image, #um-extensions-wrap #um_user-locations_image { - width: 32px !important; } - + width: 32px !important; +} #um-extensions-wrap #um_user-bookmarks_image { - width: 23px !important; } - + width: 23px !important; +} #um-extensions-wrap .plugin-card-top { margin: 0; padding: 20px 0 0 0; width: 100%; - min-height: 100px; } - #um-extensions-wrap .plugin-card-top h3 { - text-align: center; - margin: 0 0 20px 0; - padding: 0; } - #um-extensions-wrap .plugin-card-top .desc { - text-align: center; - margin: 0 !important; - padding: 0 !important; } - + min-height: 100px; +} +#um-extensions-wrap .plugin-card-top h3 { + text-align: center; + margin: 0 0 20px 0; + padding: 0; +} +#um-extensions-wrap .plugin-card-top .desc { + text-align: center; + margin: 0 !important; + padding: 0 !important; +} #um-extensions-wrap .plugin-action-links { display: flex; flex-direction: row; @@ -125,22 +132,28 @@ align-items: baseline; flex-wrap: nowrap; width: 100%; - padding: 20px 0 0 0; } + padding: 20px 0 0 0; +} @media (max-width: 1152px) { #um-extensions-wrap .plugin-card-top { - min-height: 120px; } } - + min-height: 120px; + } +} @media (max-width: 992px) { #um-extensions-wrap #the-list { grid-template-columns: repeat(2, 1fr); - -ms-grid-template-columns: repeat(2, 1fr); } } - + -ms-grid-template-columns: repeat(2, 1fr); + } +} @media (max-width: 782px) { #um-extensions-wrap #the-list { grid-template-columns: repeat(1, 1fr); - -ms-grid-template-columns: repeat(1, 1fr); } } - + -ms-grid-template-columns: repeat(1, 1fr); + } +} @media screen and (max-width: 782px) { #um-extensions-wrap .plugin-card-top { - min-height: 80px; } } + min-height: 80px; + } +} \ No newline at end of file diff --git a/assets/css/admin/forms-rtl.css b/assets/css/admin/forms-rtl.css index ced0caf4..02e638cf 100644 --- a/assets/css/admin/forms-rtl.css +++ b/assets/css/admin/forms-rtl.css @@ -1,5 +1,7 @@ .um-form-fields-section { padding: 0 0 0 10px; - float: right; } - .um-form-fields-section label input { - float: right; } + float: right; +} +.um-form-fields-section label input { + float: right; +} \ No newline at end of file diff --git a/assets/css/admin/forms-screen.css b/assets/css/admin/forms-screen.css index ccc42f00..27ae7402 100644 --- a/assets/css/admin/forms-screen.css +++ b/assets/css/admin/forms-screen.css @@ -1,17 +1,18 @@ .um-admin.post-type-um_form .manage-column.column-id { - width: 60px; } - + width: 60px; +} .um-admin.post-type-um_form .manage-column.column-mode { - width: 100px; } - + width: 100px; +} .um-admin.post-type-um_form .manage-column.column-is_default { - width: 60px; } - + width: 60px; +} .um-admin.post-type-um_form .manage-column.column-title { - width: 200px; } - + width: 200px; +} .um-admin.post-type-um_form .manage-column.column-shortcode { - width: 200px; } - + width: 200px; +} .um-admin.post-type-um_form td.column-shortcode, .um-admin.post-type-um_form td.column-id { - font-size: 14px; } + font-size: 14px; +} \ No newline at end of file diff --git a/assets/css/admin/forms.css b/assets/css/admin/forms.css index f56b0922..6001b47d 100644 --- a/assets/css/admin/forms.css +++ b/assets/css/admin/forms.css @@ -1,20 +1,21 @@ .um-form-table .um-forms-line[data-conditional] { - display: none; } - + display: none; +} .um-form-table .um-forms-line label .um-req { color: #a00; margin: 0 0 0 3px; - font-weight: normal; } - + font-weight: normal; +} .um-form-table .um-forms-line .um-text-delete { color: #a00; - float: left; } - .um-form-table .um-forms-line .um-text-delete:hover { - color: red; } - + float: left; +} +.um-form-table .um-forms-line .um-text-delete:hover { + color: red; +} .um-form-table .um-forms-line .um-multi-text-add-option { - margin-bottom: 14px; } - + margin-bottom: 14px; +} .um-form-table .um-forms-line .icon_preview { display: none; max-width: 200px; @@ -25,115 +26,131 @@ background: #f7f7f7; border-radius: 3px; height: auto; - width: auto !important; } - + width: auto !important; +} .um-form-table .um-forms-line td .um-same-page-update-wrapper { display: none; - margin: 7px 0 0 0; } - .um-form-table .um-forms-line td .um-same-page-update-wrapper input.um-admin-form-same-page-update { - margin: 7px 0 0 0; } - .um-form-table .um-forms-line td .um-same-page-update-wrapper .upgrade_log { - margin: 7px 0 0 0; - width: 100%; - height: 150px; - overflow: auto; - border: 1px solid #a1a1a1; } - -.um-form-table .um-forms-line[data-field_type="same_page_update"] { - vertical-align: baseline; } - .um-form-table .um-forms-line[data-field_type="same_page_update"] th, - .um-form-table .um-forms-line[data-field_type="same_page_update"] td { - vertical-align: baseline; } - + margin: 7px 0 0 0; +} +.um-form-table .um-forms-line td .um-same-page-update-wrapper input.um-admin-form-same-page-update { + margin: 7px 0 0 0; +} +.um-form-table .um-forms-line td .um-same-page-update-wrapper .upgrade_log { + margin: 7px 0 0 0; + width: 100%; + height: 150px; + overflow: auto; + border: 1px solid #a1a1a1; +} +.um-form-table .um-forms-line[data-field_type=same_page_update] { + vertical-align: baseline; +} +.um-form-table .um-forms-line[data-field_type=same_page_update] th, +.um-form-table .um-forms-line[data-field_type=same_page_update] td { + vertical-align: baseline; +} .um-form-table.um-third-column .um-forms-line th { - width: 33%; } - + width: 33%; +} .um-form-table.um-half-column .um-forms-line th { - width: 50%; } - + width: 50%; +} .um-form-table.um-two-thirds-column .um-forms-line th { - width: 83%; } - + width: 83%; +} .um-form-table.um-top-label .um-forms-line td { - padding: 0 0 15px 0; } - .um-form-table.um-top-label .um-forms-line td label { - margin: 0 0 5px 0; - display: inline-block; } - -.um-form-table.um-top-label .um-forms-line[data-field_type="icon"] td label { + padding: 0 0 15px 0; +} +.um-form-table.um-top-label .um-forms-line td label { + margin: 0 0 5px 0; + display: inline-block; +} +.um-form-table.um-top-label .um-forms-line[data-field_type=icon] td label { width: 100%; display: block; - margin: 0 0 5px 0; } + margin: 0 0 5px 0; +} .um-external-link-icon { width: 1em; height: 1em; margin: 0; vertical-align: middle; - fill: currentcolor; } + fill: currentcolor; +} .um_admin_fonticon_wrapper { display: flex; flex-direction: row; justify-content: flex-start; align-items: center; - flex-wrap: nowrap; } - .um_admin_fonticon_wrapper .um-admin-icon-value { - line-height: 1; } - .um_admin_fonticon_wrapper .um-admin-icon-value i { - top: 0; } + flex-wrap: nowrap; +} +.um_admin_fonticon_wrapper .um-admin-icon-value { + line-height: 1; +} +.um_admin_fonticon_wrapper .um-admin-icon-value i { + top: 0; +} -input[type="text"].um-forms-field, -input[type="url"].um-forms-field, -input[type="number"].um-forms-field, -input[type="date"].um-forms-field, -input[type="time"].um-forms-field, -input[type="password"].um-forms-field, +input[type=text].um-forms-field, +input[type=url].um-forms-field, +input[type=number].um-forms-field, +input[type=date].um-forms-field, +input[type=time].um-forms-field, +input[type=password].um-forms-field, select.um-forms-field, textarea.um-forms-field { - box-sizing: border-box; } - input[type="text"].um-forms-field.um-long-field, - input[type="url"].um-forms-field.um-long-field, - input[type="number"].um-forms-field.um-long-field, - input[type="date"].um-forms-field.um-long-field, - input[type="time"].um-forms-field.um-long-field, - input[type="password"].um-forms-field.um-long-field, - select.um-forms-field.um-long-field, - textarea.um-forms-field.um-long-field { - width: 100% !important; } - input[type="text"].um-forms-field.um-medium-field, - input[type="url"].um-forms-field.um-medium-field, - input[type="number"].um-forms-field.um-medium-field, - input[type="date"].um-forms-field.um-medium-field, - input[type="time"].um-forms-field.um-medium-field, - input[type="password"].um-forms-field.um-medium-field, - select.um-forms-field.um-medium-field, - textarea.um-forms-field.um-medium-field { - width: 50% !important; } - input[type="text"].um-forms-field.um-small-field, - input[type="url"].um-forms-field.um-small-field, - input[type="number"].um-forms-field.um-small-field, - input[type="date"].um-forms-field.um-small-field, - input[type="time"].um-forms-field.um-small-field, - input[type="password"].um-forms-field.um-small-field, - select.um-forms-field.um-small-field, - textarea.um-forms-field.um-small-field { - width: 25% !important; } + box-sizing: border-box; +} +input[type=text].um-forms-field.um-long-field, +input[type=url].um-forms-field.um-long-field, +input[type=number].um-forms-field.um-long-field, +input[type=date].um-forms-field.um-long-field, +input[type=time].um-forms-field.um-long-field, +input[type=password].um-forms-field.um-long-field, +select.um-forms-field.um-long-field, +textarea.um-forms-field.um-long-field { + width: 100% !important; +} +input[type=text].um-forms-field.um-medium-field, +input[type=url].um-forms-field.um-medium-field, +input[type=number].um-forms-field.um-medium-field, +input[type=date].um-forms-field.um-medium-field, +input[type=time].um-forms-field.um-medium-field, +input[type=password].um-forms-field.um-medium-field, +select.um-forms-field.um-medium-field, +textarea.um-forms-field.um-medium-field { + width: 50% !important; +} +input[type=text].um-forms-field.um-small-field, +input[type=url].um-forms-field.um-small-field, +input[type=number].um-forms-field.um-small-field, +input[type=date].um-forms-field.um-small-field, +input[type=time].um-forms-field.um-small-field, +input[type=password].um-forms-field.um-small-field, +select.um-forms-field.um-small-field, +textarea.um-forms-field.um-small-field { + width: 25% !important; +} -input[type="number"].um-forms-field { - padding-right: 0; } +input[type=number].um-forms-field { + padding-right: 0; +} .um-multi-text-list, .um-multi-selects-list, .um-md-default-filters-list { float: left; width: 100%; - margin: 0 0 10px 0; } + margin: 0 0 10px 0; +} .um-hidden-multi-text, .um-hidden-multi-selects, .um-hidden-md-default-filters { - display: none !important; } + display: none !important; +} .um-md-default-filters-option-line { float: left; @@ -141,128 +158,153 @@ input[type="number"].um-forms-field { clear: both; border-bottom: 1px solid #eee; padding: 0 0 5px 0; - margin: 5px 0 0 0; } - .um-md-default-filters-option-line .um-field-wrapper { - float: left; - width: calc( 100% - 60px); - line-height: 30px; - box-sizing: border-box; } - .um-md-default-filters-option-line .um-field-wrapper2 { - float: left; - width: calc( 100% - 60px); - line-height: 30px; - box-sizing: border-box; } - .um-md-default-filters-option-line .um-field-wrapper2.um { - margin: 5px 0 0 0; } - .um-md-default-filters-option-line .um-field-wrapper2 .ui-slider-range.ui-widget-header { - background: #44b0ec; - border: 1px solid #44b0ec !important; - margin-top: -1px; } - .um-md-default-filters-option-line .um-field-wrapper2 > select { - width: 100%; - float: left; } - .um-md-default-filters-option-line .um-field-wrapper2 > input { - width: 100%; - float: left; } - .um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter { - width: calc( 50% - 7px) !important; - float: left; } - .um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter:first-child, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter:first-child { - margin-right: 11px; } - .um-md-default-filters-option-line .um-field-wrapper2 .um-slider { - margin: 5px 9px 0 9px; - width: calc( 100% - 18px); - box-sizing: border-box; - display: block; } - .um-md-default-filters-option-line .um-field-control { - float: left; - width: 60px; - line-height: 30px; - padding: 0 10px; - box-sizing: border-box; } + margin: 5px 0 0 0; +} +.um-md-default-filters-option-line .um-field-wrapper { + float: left; + width: calc(100% - 60px); + line-height: 30px; + box-sizing: border-box; +} +.um-md-default-filters-option-line .um-field-wrapper2 { + float: left; + width: calc(100% - 60px); + line-height: 30px; + box-sizing: border-box; +} +.um-md-default-filters-option-line .um-field-wrapper2.um { + margin: 5px 0 0 0; +} +.um-md-default-filters-option-line .um-field-wrapper2 .ui-slider-range.ui-widget-header { + background: #44b0ec; + border: 1px solid #44b0ec !important; + margin-top: -1px; +} +.um-md-default-filters-option-line .um-field-wrapper2 > select { + width: 100%; + float: left; +} +.um-md-default-filters-option-line .um-field-wrapper2 > input { + width: 100%; + float: left; +} +.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter { + width: calc(50% - 7px) !important; + float: left; +} +.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter:first-child, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter:first-child { + margin-right: 11px; +} +.um-md-default-filters-option-line .um-field-wrapper2 .um-slider { + margin: 5px 9px 0 9px; + width: calc(100% - 18px); + box-sizing: border-box; + display: block; +} +.um-md-default-filters-option-line .um-field-control { + float: left; + width: 60px; + line-height: 30px; + padding: 0 10px; + box-sizing: border-box; +} .um-multi-selects-option-line { float: left; width: 100%; padding: 0; clear: both; - margin: 0 0 5px 0; } - .um-multi-selects-option-line.um-admin-drag-fld { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; - background: none; - border: none; } - .um-multi-selects-option-line.um-admin-drag-fld .um-field-wrapper { - width: calc( 100% - 90px); } - .um-multi-selects-option-line.um-admin-drag-fld .um-field-icon { - float: left; - width: 20px; - text-align: left; - line-height: 30px; } - .um-multi-selects-option-line .um-field-wrapper { - float: left; - width: calc( 100% - 60px); - line-height: 30px; - box-sizing: border-box; } - .um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields { - margin: 5px 0 0 0; } - .um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label { - float: left; - width: 100%; - line-height: 30px; - box-sizing: border-box; - margin: 0 !important; - padding: 0 !important; - font-weight: bold; - display: flex; - flex-direction: row; - justify-content: space-beetween; - align-items: baseline; - flex-wrap: nowrap; } - .um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label input[type="text"], - .um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label select { - width: auto; - display: inline; - font-weight: normal; - max-width: 70%; - flex: 0.9; } - .um-multi-selects-option-line .um-field-wrapper input, - .um-multi-selects-option-line .um-field-wrapper select { - float: left; - width: 100%; - margin: 0; } - .um-multi-selects-option-line .um-field-control { - float: left; - width: 60px; - line-height: 30px; - padding: 0 10px; - box-sizing: border-box; } + margin: 0 0 5px 0; +} +.um-multi-selects-option-line.um-admin-drag-fld { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; + background: none; + border: none; +} +.um-multi-selects-option-line.um-admin-drag-fld .um-field-wrapper { + width: calc(100% - 90px); +} +.um-multi-selects-option-line.um-admin-drag-fld .um-field-icon { + float: left; + width: 20px; + text-align: left; + line-height: 30px; +} +.um-multi-selects-option-line .um-field-wrapper { + float: left; + width: calc(100% - 60px); + line-height: 30px; + box-sizing: border-box; +} +.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields { + margin: 5px 0 0 0; +} +.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label { + float: left; + width: 100%; + line-height: 30px; + box-sizing: border-box; + margin: 0 !important; + padding: 0 !important; + font-weight: bold; + display: flex; + flex-direction: row; + justify-content: space-beetween; + align-items: baseline; + flex-wrap: nowrap; +} +.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label input[type=text], +.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label select { + width: auto; + display: inline; + font-weight: normal; + max-width: 70%; + flex: 0.9; +} +.um-multi-selects-option-line .um-field-wrapper input, +.um-multi-selects-option-line .um-field-wrapper select { + float: left; + width: 100%; + margin: 0; +} +.um-multi-selects-option-line .um-field-control { + float: left; + width: 60px; + line-height: 30px; + padding: 0 10px; + box-sizing: border-box; +} .um-multi-text-option-line { float: left; width: 100%; padding: 0; clear: both; - margin: 0 0 5px 0; } - .um-multi-text-option-line .um-field-wrapper { - float: left; - width: calc( 100% - 90px); - line-height: 30px; - box-sizing: border-box; } - .um-multi-text-option-line .um-field-wrapper input, - .um-multi-text-option-line .um-field-wrapper select { - float: left; - width: 100%; - margin: 0; } - .um-multi-text-option-line .um-field-control { - float: left; - width: 60px; - line-height: 30px; - padding: 0 10px; - box-sizing: border-box; } + margin: 0 0 5px 0; +} +.um-multi-text-option-line .um-field-wrapper { + float: left; + width: calc(100% - 90px); + line-height: 30px; + box-sizing: border-box; +} +.um-multi-text-option-line .um-field-wrapper input, +.um-multi-text-option-line .um-field-wrapper select { + float: left; + width: 100%; + margin: 0; +} +.um-multi-text-option-line .um-field-control { + float: left; + width: 60px; + line-height: 30px; + padding: 0 10px; + box-sizing: border-box; +} .um-form-fields-section { float: left; @@ -271,52 +313,66 @@ input[type="number"].um-forms-field { padding: 0 10px 0 0; box-sizing: border-box; -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-form-fields-section label { - float: left; - width: 100%; - margin: 0; - padding: 0; } - .um-form-fields-section label input { - float: left; - margin-top: 0; } - .um-form-fields-section label span { - float: left; - width: calc( 100% - 20px); } + -webkit-box-sizing: border-box; +} +.um-form-fields-section label { + float: left; + width: 100%; + margin: 0; + padding: 0; +} +.um-form-fields-section label input { + float: left; + margin-top: 0; +} +.um-form-fields-section label span { + float: left; + width: calc(100% - 20px); +} @media screen and (max-width: 782px) { - input[type="text"].um-forms-field.um-medium-field, + input[type=text].um-forms-field.um-medium-field, select.um-forms-field.um-medium-field, textarea.um-forms-field.um-medium-field { - width: 100% !important; } - input[type="text"].um-forms-field.um-small-field, + width: 100% !important; + } + input[type=text].um-forms-field.um-small-field, select.um-forms-field.um-small-field, textarea.um-forms-field.um-small-field { - width: 50% !important; } + width: 50% !important; + } .um-form-fields-section { - width: 100% !important; } + width: 100% !important; + } .um-admin-metabox .um-form-fields-section label { line-height: 22px !important; - margin: 0 0 12px 0 !important; } - .um-admin-metabox .um-form-fields-section label span { - width: calc( 100% - 30px); } + margin: 0 0 12px 0 !important; + } + .um-admin-metabox .um-form-fields-section label span { + width: calc(100% - 30px); + } .um-multi-text-option-line, .um-multi-selects-option-line { - margin: 0 0 6px 0; } + margin: 0 0 6px 0; + } .um-forms-line label { float: left; - width: 100%; } + width: 100%; + } .um-form-table.um-third-column .um-forms-line th, .um-form-table.um-half-column .um-forms-line th, .um-form-table.um-two-thirds-column .um-forms-line th { float: left; width: 100%; - margin-bottom: 5px; } - .um-form-table.um-third-column .um-forms-line th label, .um-form-table.um-half-column .um-forms-line th label, .um-form-table.um-two-thirds-column .um-forms-line th label { - float: left; - width: 100%; } + margin-bottom: 5px; + } + .um-form-table.um-third-column .um-forms-line th label, .um-form-table.um-half-column .um-forms-line th label, .um-form-table.um-two-thirds-column .um-forms-line th label { + float: left; + width: 100%; + } .um-form-table.um-third-column .um-forms-line td, .um-form-table.um-half-column .um-forms-line td, .um-form-table.um-two-thirds-column .um-forms-line td { float: left; - width: 100%; } } - + width: 100%; + } +} .um-sortable-items-field .um-sortable-item { cursor: move !important; padding: 5px; @@ -333,38 +389,48 @@ input[type="number"].um-forms-field { flex-direction: row; justify-content: flex-start; align-items: center; - flex-wrap: nowrap; } - .um-sortable-items-field .um-sortable-item.um-hidden-item { - display: none; } - .um-sortable-items-field .um-sortable-item .um-field-icon { - width: 20px; - text-align: left; - margin: 0 10px 0 0; } + flex-wrap: nowrap; +} +.um-sortable-items-field .um-sortable-item.um-hidden-item { + display: none; +} +.um-sortable-items-field .um-sortable-item .um-field-icon { + width: 20px; + text-align: left; + margin: 0 10px 0 0; +} -.wp-picker-container input.wp-color-picker[type="text"] { +.wp-picker-container input.wp-color-picker[type=text] { width: 68px !important; float: left !important; padding: 2px 4px !important; - border-width: 1px !important; } + border-width: 1px !important; +} span.um-admin-icon-value { margin: 0 10px; - font-size: 13px; } - span.um-admin-icon-value i { - font-size: 28px; - color: #0085ba; - position: relative; - top: 5px; } + font-size: 13px; +} +span.um-admin-icon-value i { + font-size: 28px; + color: #0085ba; + position: relative; + top: 5px; +} span.um-admin-icon-clear { display: none; cursor: pointer; position: relative; - color: #ccc; } - span.um-admin-icon-clear.show { - display: inline-block; } - span.um-admin-icon-clear:hover { - color: #777; } - span.um-admin-icon-clear i { - font-size: 20px; - vertical-align: middle; } + color: #ccc; +} +span.um-admin-icon-clear.show { + display: inline-block; +} +span.um-admin-icon-clear:hover { + color: #777; +} +span.um-admin-icon-clear i { + font-size: 20px; + vertical-align: middle; +} \ No newline at end of file diff --git a/assets/css/admin/global.css b/assets/css/admin/global.css index 1dc29641..1c512a8a 100644 --- a/assets/css/admin/global.css +++ b/assets/css/admin/global.css @@ -1,34 +1,44 @@ ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after { - display: none !important; } - + display: none !important; +} ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after { - right: -9999999px; } - + right: -9999999px; +} ul#adminmenu > li#toplevel_page_ultimatemember.current > a.current:after { - display: none !important; } + display: none !important; +} .um-admin-notice { border-color: #0085ba; - color: #555; } - .um-admin-notice.error { - border-color: #dc3232; } - .um-admin-notice.notice-warning { - border-color: #dba617; } - .um-admin-notice a { - text-decoration: none; - color: #0085ba; } - .um-admin-notice a:hover { - color: #44b0ec; } - .um-admin-notice a.button-primary { - background-color: #0085ba; - border-color: #0085ba; } - .um-admin-notice a.button-primary:hover { - background-color: #008ec2; - border-color: #008ec2; } - .um-admin-notice a.button-secondary { - opacity: 0.7; } - .um-admin-notice a.button-secondary:hover { - opacity: 0.9; } + color: #555; +} +.um-admin-notice.error { + border-color: #dc3232; +} +.um-admin-notice.notice-warning { + border-color: #dba617; +} +.um-admin-notice a { + text-decoration: none; + color: #0085ba; +} +.um-admin-notice a:hover { + color: #44b0ec; +} +.um-admin-notice a.button-primary { + background-color: #0085ba; + border-color: #0085ba; +} +.um-admin-notice a.button-primary:hover { + background-color: #008ec2; + border-color: #008ec2; +} +.um-admin-notice a.button-secondary { + opacity: 0.7; +} +.um-admin-notice a.button-secondary:hover { + opacity: 0.9; +} /* UM Tooltip ( future helptip ) */ .um .ui-tooltip.um_tooltip { @@ -41,19 +51,28 @@ ul#adminmenu > li#toplevel_page_ultimatemember.current > a.current:after { font-size: 12px; border-radius: 5px; border: none !important; - text-shadow: none !important; } + text-shadow: none !important; +} .um_tooltip { cursor: pointer; - vertical-align: middle; } - .um_tooltip:hover { - opacity: 1; } - .um_tooltip:hover:before { - opacity: 0.8; } - .um_tooltip.dashicons, .um_tooltip.dashicons:before { - height: 22px; } - .um_tooltip.dashicons-editor-help:before { - float: left; - font-size: 20px; - line-height: 20px; - color: rgba(0, 0, 0, 0.85) !important; } + vertical-align: middle; +} +.um_tooltip:hover { + opacity: 1; +} +.um_tooltip:hover:before { + opacity: 0.8; +} +.um_tooltip.dashicons { + height: 22px; +} +.um_tooltip.dashicons:before { + height: 22px; +} +.um_tooltip.dashicons-editor-help:before { + float: left; + font-size: 20px; + line-height: 20px; + color: rgba(0, 0, 0, 0.85) !important; +} \ No newline at end of file diff --git a/assets/css/admin/global.min.css b/assets/css/admin/global.min.css index f1fbda47..d8429501 100644 --- a/assets/css/admin/global.min.css +++ b/assets/css/admin/global.min.css @@ -1 +1 @@ -ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after{display:none!important}ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}ul#adminmenu>li#toplevel_page_ultimatemember.current>a.current:after{display:none!important}.um-admin-notice{border-color:#0085ba;color:#555}.um-admin-notice.error{border-color:#dc3232}.um-admin-notice.notice-warning{border-color:#dba617}.um-admin-notice a{text-decoration:none;color:#0085ba}.um-admin-notice a:hover{color:#44b0ec}.um-admin-notice a.button-primary{background-color:#0085ba;border-color:#0085ba}.um-admin-notice a.button-primary:hover{background-color:#008ec2;border-color:#008ec2}.um-admin-notice a.button-secondary{opacity:.7}.um-admin-notice a.button-secondary:hover{opacity:.9}.um .ui-tooltip.um_tooltip{padding:8px;color:#eee!important;background:rgba(0,0,0,.85)!important;position:absolute;z-index:10002;max-width:300px;font-size:12px;border-radius:5px;border:none!important;text-shadow:none!important}.um_tooltip{cursor:pointer;vertical-align:middle}.um_tooltip:hover{opacity:1}.um_tooltip:hover:before{opacity:.8}.um_tooltip.dashicons,.um_tooltip.dashicons:before{height:22px}.um_tooltip.dashicons-editor-help:before{float:left;font-size:20px;line-height:20px;color:rgba(0,0,0,.85)!important} \ No newline at end of file +ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after{display:none!important}ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}ul#adminmenu>li#toplevel_page_ultimatemember.current>a.current:after{display:none!important}.um-admin-notice{border-color:#0085ba;color:#555}.um-admin-notice.error{border-color:#dc3232}.um-admin-notice.notice-warning{border-color:#dba617}.um-admin-notice a{text-decoration:none;color:#0085ba}.um-admin-notice a:hover{color:#44b0ec}.um-admin-notice a.button-primary{background-color:#0085ba;border-color:#0085ba}.um-admin-notice a.button-primary:hover{background-color:#008ec2;border-color:#008ec2}.um-admin-notice a.button-secondary{opacity:.7}.um-admin-notice a.button-secondary:hover{opacity:.9}.um .ui-tooltip.um_tooltip{padding:8px;color:#eee!important;background:rgba(0,0,0,.85)!important;position:absolute;z-index:10002;max-width:300px;font-size:12px;border-radius:5px;border:none!important;text-shadow:none!important}.um_tooltip{cursor:pointer;vertical-align:middle}.um_tooltip:hover{opacity:1}.um_tooltip:hover:before{opacity:.8}.um_tooltip.dashicons{height:22px}.um_tooltip.dashicons:before{height:22px}.um_tooltip.dashicons-editor-help:before{float:left;font-size:20px;line-height:20px;color:rgba(0,0,0,.85)!important} \ No newline at end of file diff --git a/assets/css/admin/global.sass b/assets/css/admin/global.sass index 5e62c3bd..f6e87482 100644 --- a/assets/css/admin/global.sass +++ b/assets/css/admin/global.sass @@ -57,7 +57,7 @@ ul#adminmenu &.dashicons height: 22px &:before - @extend .#{$helptip}.dashicons + height: 22px &.dashicons-editor-help:before float: left font-size: 20px diff --git a/assets/css/admin/modal.css b/assets/css/admin/modal.css index a666a9eb..aa09bc48 100644 --- a/assets/css/admin/modal.css +++ b/assets/css/admin/modal.css @@ -5,7 +5,8 @@ position: fixed; top: 0; left: 0; - z-index: 10000; } + z-index: 10000; +} .um-admin-modal { border-radius: 3px; @@ -17,59 +18,78 @@ z-index: 10001; box-sizing: border-box; width: 730px; - margin-left: -365px; } - .um-admin-modal.normal { - width: 730px; - margin-left: -365px; } - .um-admin-modal.smaller { - width: 500px; - margin-left: -250px; } - .um-admin-modal.small { - width: 400px; - margin-left: -200px; } - .um-admin-modal input[type="submit"].button-primary { - padding: 0 12px !important; - vertical-align: middle !important; - line-height: 24px !important; } - .um-admin-modal .um-admin-modal-body { - padding: 10px 20px 10px 20px; - max-height: 500px; - overflow: auto; } - .um-admin-modal .um-admin-modal-body.um-admin-metabox label { - margin: 0 !important; } - .um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h { - margin-top: 12px; } - .um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label { - margin: 0 0 4px 0 !important; } - .um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap { - margin: 0 0 4px 0 !important; } - .um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea { - border: 0 !important; } - .um-admin-modal a.button-primary { - padding: 0 12px !important; - vertical-align: middle !important; } - .um-admin-modal a.button { - padding: 0 12px !important; - vertical-align: middle !important; } - .um-admin-modal a.button i:before { - display: block; - top: 0; } - .um-admin-modal h3 { - font-size: 14px; - line-height: 14px; - font-weight: normal; - color: #fff; } - .um-admin-modal h4 { - margin: 0 0 10px 0 !important; } - .um-admin-modal label { - font-size: 13px; - color: #aaa; } - .um-admin-modal p { - font-size: 13px; - color: #aaa; } - .um-admin-modal.loading .um-admin-modal-body { - height: 200px; - background: url(../../img/ajax-loader.gif) no-repeat center; } + margin-left: -365px; +} +.um-admin-modal.normal { + width: 730px; + margin-left: -365px; +} +.um-admin-modal.smaller { + width: 500px; + margin-left: -250px; +} +.um-admin-modal.small { + width: 400px; + margin-left: -200px; +} +.um-admin-modal input[type=submit].button-primary { + padding: 0 12px !important; + vertical-align: middle !important; + line-height: 24px !important; +} +.um-admin-modal .um-admin-modal-body { + padding: 10px 20px 10px 20px; + max-height: 500px; + overflow: auto; +} +.um-admin-modal .um-admin-modal-body.um-admin-metabox label { + margin: 0 !important; +} +.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h { + margin-top: 12px; +} +.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label { + margin: 0 0 4px 0 !important; +} +.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap { + margin: 0 0 4px 0 !important; +} +.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea { + border: 0 !important; +} +.um-admin-modal a.button-primary { + padding: 0 12px !important; + vertical-align: middle !important; +} +.um-admin-modal a.button { + padding: 0 12px !important; + vertical-align: middle !important; +} +.um-admin-modal a.button i:before { + display: block; + top: 0; +} +.um-admin-modal h3 { + font-size: 14px; + line-height: 14px; + font-weight: normal; + color: #fff; +} +.um-admin-modal h4 { + margin: 0 0 10px 0 !important; +} +.um-admin-modal label { + font-size: 13px; + color: #aaa; +} +.um-admin-modal p { + font-size: 13px; + color: #aaa; +} +.um-admin-modal.loading .um-admin-modal-body { + height: 200px; + background: url(../../img/ajax-loader.gif) no-repeat center; +} .um-admin-modal-close { position: absolute; @@ -78,63 +98,76 @@ top: 14px; font-size: 22px; text-decoration: none; - opacity: 0.4; } - .um-admin-modal-close:hover { - opacity: 1; } + opacity: 0.4; +} +.um-admin-modal-close:hover { + opacity: 1; +} .um-admin-modal-head { padding: 4px 20px; background: #0085ba; position: relative; - border-radius: 3px 3px 0 0; } + border-radius: 3px 3px 0 0; +} .um-admin-modal-foot { padding: 20px 0 !important; border-top: 1px solid #ddd; text-align: center; background: #eee; - border-radius: 0 0 3px 3px; } - .um-admin-modal-foot a, - .um-admin-modal-foot input { - margin: 0 10px !important; - font-size: 14px !important; } + border-radius: 0 0 3px 3px; +} +.um-admin-modal-foot a, +.um-admin-modal-foot input { + margin: 0 10px !important; + font-size: 14px !important; +} #UM_fonticons div.um-admin-metabox { - padding-bottom: 22px !important; } + padding-bottom: 22px !important; +} p._icon_search { position: relative; width: 85% !important; margin: 0 auto !important; - padding: 12px 0 0 0 !important; } - p._icon_search:before { - position: absolute; - right: 6px; - top: 12px; - font-size: 20px; - content: "\f4a4"; - font-family: "Ionicons"; - color: #999; } - p._icon_search:before input[type="text"] { - padding-right: 40px !important; } + padding: 12px 0 0 0 !important; +} +p._icon_search:before { + position: absolute; + right: 6px; + top: 12px; + font-size: 20px; + content: "\f4a4"; + font-family: "Ionicons"; + color: #999; +} +p._icon_search:before input[type=text] { + padding-right: 40px !important; +} .um-admin-icons { padding: 0 0 15px 12px; - float: left; } - .um-admin-icons span { - cursor: pointer; - float: left; - margin: 5px; - color: #777; - border: 4px solid #eee; - border-radius: 3px; } - .um-admin-icons span:hover, .um-admin-icons span.highlighted { - color: #0085ba; - border-color: #0085ba; } - .um-admin-icons i { - vertical-align: middle !important; - font-size: 24px; - width: 24px; - text-align: center; - padding: 15px 20px; - display: inline-block; } + float: left; +} +.um-admin-icons span { + cursor: pointer; + float: left; + margin: 5px; + color: #777; + border: 4px solid #eee; + border-radius: 3px; +} +.um-admin-icons span:hover, .um-admin-icons span.highlighted { + color: #0085ba; + border-color: #0085ba; +} +.um-admin-icons i { + vertical-align: middle !important; + font-size: 24px; + width: 24px; + text-align: center; + padding: 15px 20px; + display: inline-block; +} \ No newline at end of file diff --git a/assets/css/admin/modal.sass b/assets/css/admin/modal.sass index d450f068..3c4a3f4e 100644 --- a/assets/css/admin/modal.sass +++ b/assets/css/admin/modal.sass @@ -1,11 +1,11 @@ .um-admin-overlay - background: rgba( 0, 0, 0, 0.7) - width: 100% - height: 100% - position: fixed - top: 0 - left: 0 - z-index: 10000 + background: rgba( 0, 0, 0, 0.7) + width: 100% + height: 100% + position: fixed + top: 0 + left: 0 + z-index: 10000 .um-admin-modal border-radius: 3px diff --git a/assets/css/admin/nav-menu.css b/assets/css/admin/nav-menu.css index e1c369b3..9065644c 100644 --- a/assets/css/admin/nav-menu.css +++ b/assets/css/admin/nav-menu.css @@ -1,11 +1,14 @@ .wp-admin p.um-nav-roles { display: none; - margin-top: 5px; } - .wp-admin p.um-nav-roles label { - margin-top: 2px !important; - margin-bottom: 2px !important; } - .wp-admin p.um-nav-roles label input[type="checkbox"] { - margin-top: 2px !important; } - + margin-top: 5px; +} +.wp-admin p.um-nav-roles label { + margin-top: 2px !important; + margin-bottom: 2px !important; +} +.wp-admin p.um-nav-roles label input[type=checkbox] { + margin-top: 2px !important; +} .wp-admin p.um-nav-mode { - margin-top: 10px; } + margin-top: 10px; +} \ No newline at end of file diff --git a/assets/css/admin/roles.css b/assets/css/admin/roles.css index 039088db..63ff1d51 100644 --- a/assets/css/admin/roles.css +++ b/assets/css/admin/roles.css @@ -1,39 +1,46 @@ #um-roles .row-actions .reset a { - color: #a00; } - #um-roles .row-actions .reset a:hover { - color: red; } + color: #a00; +} +#um-roles .row-actions .reset a:hover { + color: red; +} .wp-list-table.roles .column-core, .wp-list-table.roles .column-users { width: 15%; - text-align: center !important; } - + text-align: center !important; +} .wp-list-table.roles .column-admin_access, .wp-list-table.roles .column-priority { width: 10%; - text-align: center !important; } + text-align: center !important; +} @media screen and (max-width: 782px) { .wp-list-table.roles .column-core, .wp-list-table.roles .column-users, .wp-list-table.roles .column-admin_access, .wp-list-table.roles .column-priority { - text-align: left !important; } } - + text-align: left !important; + } +} #um-admin-form-wp-capabilities .um-metadata-line th { - width: auto; } - + width: auto; +} #um-admin-form-wp-capabilities .um-metadata-line td { - width: 20px; } + width: 20px; +} #um_edit_role #titlewrap > span { width: 40px; font-size: 24px; float: left; display: block; - line-height: 37px; } + line-height: 37px; +} #um-admin-form-publish #major-publishing-actions { padding-top: 0; padding-left: 0; - padding-right: 0; } + padding-right: 0; +} \ No newline at end of file diff --git a/assets/css/admin/settings.css b/assets/css/admin/settings.css index 55cec4ca..54385c77 100644 --- a/assets/css/admin/settings.css +++ b/assets/css/admin/settings.css @@ -1,5 +1,6 @@ .um-settings-section .description { - font-style: italic; } + font-style: italic; +} .um-notification-status { margin-right: 18px; @@ -9,74 +10,93 @@ float: left; box-sizing: border-box; -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-notification-status.um-notification-is-active { - color: #7acf58; } + -webkit-box-sizing: border-box; +} +.um-notification-status.um-notification-is-active { + color: #7acf58; +} .um-email-configure span { - line-height: 24px; } + line-height: 24px; +} .um-long-field { - width: 100%; } + width: 100%; +} .um-medium-field { - width: 50%; } + width: 50%; +} .um-small-field { - width: 25%; } + width: 25%; +} .column-configure { width: 10%; - text-align: right; } + text-align: right; +} th.column-email.column-primary { - padding-left: 48px; } + padding-left: 48px; +} .um-form-table .um-forms-line td { - padding-right: 0; } + padding-right: 0; +} #um-settings-emails { - margin: 15px 0; } + margin: 15px 0; +} #um-settings-template-versions { - margin: 15px 0; } - #um-settings-template-versions .wp-list-table .column-core_version { - width: 100px; - text-align: center; } - #um-settings-template-versions .wp-list-table .column-theme_version { - width: 100px; - text-align: center; } - #um-settings-template-versions .wp-list-table .column-status { - width: 260px; } + margin: 15px 0; +} +#um-settings-template-versions .wp-list-table .column-core_version { + width: 100px; + text-align: center; +} +#um-settings-template-versions .wp-list-table .column-theme_version { + width: 100px; + text-align: center; +} +#um-settings-template-versions .wp-list-table .column-status { + width: 260px; +} #um-settings-form { float: left; width: 100%; - margin: 0; } - #um-settings-form .subsubsub { - float: left; - width: 100%; } - #um-settings-form h2.title a.um-back-button { - font-weight: normal; - font-size: 30px; - line-height: 1; - text-decoration: none; - margin-right: 5px; } + margin: 0; +} +#um-settings-form .subsubsub { + float: left; + width: 100%; +} +#um-settings-form h2.title a.um-back-button { + font-weight: normal; + font-size: 30px; + line-height: 1; + text-decoration: none; + margin-right: 5px; +} .um-settings-line .multi-checkbox-line { float: left; width: 100%; clear: both; margin: 0 0 10px 0; - padding: 0; } - + padding: 0; +} .um-settings-line .multi-checkbox-column { float: left; margin: 0; - padding: 0; } - .um-settings-line .multi-checkbox-column label { - float: left; - width: 100%; } + padding: 0; +} +.um-settings-line .multi-checkbox-column label { + float: left; + width: 100%; +} .wrap-licenses .form-table, .wrap-licenses thead, @@ -86,8 +106,8 @@ th.column-email.column-primary { .wrap-licenses td, .wrap-licenses th, .wrap-licenses caption { - display: block; } - + display: block; +} .wrap-licenses .form-table tr { float: left; margin: 0 15px 15px 0; @@ -98,23 +118,23 @@ th.column-email.column-primary { padding: 14px; min-height: 240px; position: relative; - box-sizing: border-box; } - + box-sizing: border-box; +} .wrap-licenses .form-table th { background: #f9f9f9; padding: 14px; border-bottom: 1px solid #ccc; margin: -14px -14px 20px; - width: 100%; } - + width: 100%; +} .wrap-licenses .form-table td { - padding: 0; } - + padding: 0; +} .wrap-licenses td input.regular-text { margin: 0 0 8px; - width: 100%; } - -.wrap-licenses .edd-license-data[class*="edd-license-"] { + width: 100%; +} +.wrap-licenses .edd-license-data[class*=edd-license-] { position: absolute; background: #fafafa; padding: 14px; @@ -123,75 +143,92 @@ th.column-email.column-primary { min-height: 67px; width: 100%; bottom: 14px; - box-sizing: border-box; } - .wrap-licenses .edd-license-data[class*="edd-license-"] a { - color: #444; } - .wrap-licenses .edd-license-data[class*="edd-license-"] a:hover { - text-decoration: none; } - + box-sizing: border-box; +} +.wrap-licenses .edd-license-data[class*=edd-license-] a { + color: #444; +} +.wrap-licenses .edd-license-data[class*=edd-license-] a:hover { + text-decoration: none; +} .wrap-licenses .edd-license-data.license-expires-soon-notice { background-color: #00a0d2; color: #fff; - border-color: #00a0d2; } - .wrap-licenses .edd-license-data.license-expires-soon-notice a { - color: #fff; } - .wrap-licenses .edd-license-data.license-expires-soon-notice a:hover { - text-decoration: none; } - + border-color: #00a0d2; +} +.wrap-licenses .edd-license-data.license-expires-soon-notice a { + color: #fff; +} +.wrap-licenses .edd-license-data.license-expires-soon-notice a:hover { + text-decoration: none; +} .wrap-licenses .edd-license-data.edd-license-expired { background-color: #e24e4e; color: #fff; - border-color: #e24e4e; } - .wrap-licenses .edd-license-data.edd-license-expired a { - color: #fff; } - .wrap-licenses .edd-license-data.edd-license-expired a:hover { - text-decoration: none; } - + border-color: #e24e4e; +} +.wrap-licenses .edd-license-data.edd-license-expired a { + color: #fff; +} +.wrap-licenses .edd-license-data.edd-license-expired a:hover { + text-decoration: none; +} .wrap-licenses .edd-license-data.edd-license-valid { background-color: #5abc55; color: #fff; - border-color: #5abc55; } - + border-color: #5abc55; +} .wrap-licenses .edd-license-data.edd-license-error, .wrap-licenses .edd-license-data.edd-license-missing, .wrap-licenses .edd-license-data.edd-license-invalid, .wrap-licenses .edd-license-data.edd-license-site_inactive, .wrap-licenses .edd-license-data.edd-license-item_name_mismatch { background-color: #ffebcd; - border-color: #ffebcd; } - + border-color: #ffebcd; +} .wrap-licenses .edd-license-data p { font-size: 13px; - margin-top: 0; } - + margin-top: 0; +} .wrap-licenses ~ p.submit { - clear: both; } + clear: both; +} @media screen and (max-width: 980px) { .wrap-licenses .form-table tr { - width: calc( 50% - 15px); - max-width: none; } } - + width: calc(50% - 15px); + max-width: none; + } +} @media screen and (max-width: 782px) { #um-settings-template-versions .wp-list-table .column-core_version, #um-settings-template-versions .wp-list-table .column-theme_version { width: auto; - text-align: left; } + text-align: left; + } .wrap-licenses .form-table tr { width: 100%; margin-right: 0; - max-width: none; } + max-width: none; + } .um-settings-line .multi-checkbox-column { - width: 100% !important; } - .um-settings-line .multi-checkbox-column label { - line-height: 30px !important; } + width: 100% !important; + } + .um-settings-line .multi-checkbox-column label { + line-height: 30px !important; + } .um-medium-field { - width: 100%; } + width: 100%; + } .um-small-field { - width: 50%; } } - + width: 50%; + } +} .um_setting_ajax_button_response.complete { color: #7acf58; - font-style: italic; } + font-style: italic; +} .wp-core-ui .button.um_license_activate, .wp-core-ui .button.um_license_deactivate, .wp-core-ui .button.um_license_reactivate { - margin-top: 5px; } + margin-top: 5px; +} .um-media-upload .um-media-upload-url { - margin-bottom: 5px; } + margin-bottom: 5px; +} \ No newline at end of file diff --git a/assets/css/admin/users.css b/assets/css/admin/users.css index 806eb9b5..bb7b01fc 100644 --- a/assets/css/admin/users.css +++ b/assets/css/admin/users.css @@ -1,29 +1,33 @@ .um-admin.users-php .subsubsub li.subsep { display: block; visibility: hidden; - height: 0; } + height: 0; +} .um-admin-modal .um-admin-infobox label { font-weight: bold; display: block; color: #333; - cursor: default; } - + cursor: default; +} .um-admin-modal .um-admin-infobox p { color: #666; - padding-top: 15px; } - + padding-top: 15px; +} .um-admin-modal .um-admin-infobox > p:not(:first-child) { - border-top: 1px solid #e5e5e5; } - + border-top: 1px solid #e5e5e5; +} .um-admin-modal .um-admin-infobox > p:first-child { margin-top: 0; - padding-top: 0; } - + padding-top: 0; +} .um-admin-modal .um-admin-infobox > .um-row > p { - border-top: 1px solid #e5e5e5; } - .um-admin-modal .um-admin-infobox > .um-row > p:last-child { - margin-bottom: 0; } + border-top: 1px solid #e5e5e5; +} +.um-admin-modal .um-admin-infobox > .um-row > p:last-child { + margin-bottom: 0; +} #UM_preview_registration .um-admin-modal-foot { - display: none; } + display: none; +} \ No newline at end of file diff --git a/assets/css/common.css b/assets/css/common.css index bbe821a6..cffc705e 100644 --- a/assets/css/common.css +++ b/assets/css/common.css @@ -2,8 +2,8 @@ .um .tipsy, .um-page .tipsy { z-index: 9999999999; - font-size: inherit; } - + font-size: inherit; +} .um .tipsy-inner, .um-page .tipsy-inner { background-color: #333333; @@ -15,20 +15,21 @@ line-height: 17px; word-wrap: break-word; -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - + -moz-osx-font-smoothing: grayscale; +} .um .tipsy-arrow-n, .um-page .tipsy-arrow-n { - border-bottom-color: #333; } - + border-bottom-color: #333; +} .um .tipsy-arrow-s, .um-page .tipsy-arrow-s { - border-top-color: #333; } - + border-top-color: #333; +} .um .tipsy-arrow-e, .um-page .tipsy-arrow-e { - border-left-color: #333; } - + border-left-color: #333; +} .um .tipsy-arrow-w, .um-page .tipsy-arrow-w { - border-right-color: #333; } + border-right-color: #333; +} \ No newline at end of file diff --git a/assets/css/um-members-rtl.css b/assets/css/um-members-rtl.css index 301343a7..8ac2812a 100644 --- a/assets/css/um-members-rtl.css +++ b/assets/css/um-members-rtl.css @@ -1,85 +1,93 @@ .um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { - justify-content: flex-start; } - + justify-content: flex-start; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a a { - margin: 0 0 0 5px; } - + margin: 0 0 0 5px; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown { right: -12px; - left: auto; } - + left: auto; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a a { - margin: 0 0 0 5px; } - + margin: 0 0 0 5px; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input { - margin: 0 0 0 5px !important; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) { - margin: 0 5px 0 0 !important; } - + margin: 0 0 0 5px !important; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) { + margin: 0 5px 0 0 !important; +} .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag { - margin: 0 0 5px 10px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child { - margin-left: 10px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove { - margin-left: 0; - margin-right: 10px; } - + margin: 0 0 5px 10px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child { + margin-left: 10px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove { + margin-left: 0; + margin-right: 10px; +} .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn:before { margin-right: 0; - margin-left: 8px; } - + margin-left: 8px; +} .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo { - margin: 0 0 0 15px; } - + margin: 0 0 0 15px; +} .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-new-dropdown { right: auto; left: 0; - text-align: right; } - + text-align: right; +} .um-directory .um-members-pagination-box .um-members-pagi { - align-items: center; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow { - transform: rotate(180deg); } - + align-items: center; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow { + transform: rotate(180deg); +} .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - margin: 0 0 0 2px; } - + margin: 0 0 0 2px; +} .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-new-dropdown { right: auto; - left: 0; } - + left: 0; +} .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - margin: 0 0 0 5px; } - + margin: 0 0 0 5px; +} .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { - align-items: flex-start; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - margin: 0 0 0 10px; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - margin: 0 0 5px 10px; } - + align-items: flex-start; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { + margin: 0 0 0 10px; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + margin: 0 0 5px 10px; +} .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - margin: 0 0 0 10px; } - + margin: 0 0 0 10px; +} .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - margin: 0 0 0 10px; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - margin: 0 0 5px 10px; } + margin: 0 0 0 10px; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + margin: 0 0 5px 10px; +} \ No newline at end of file diff --git a/assets/css/um-members.css b/assets/css/um-members.css index ced7458c..edecd6cc 100644 --- a/assets/css/um-members.css +++ b/assets/css/um-members.css @@ -1,35 +1,43 @@ @-webkit-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @-moz-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @-ms-keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} @keyframes um-ajax-spinning { 0% { -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); + } 100% { -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } - + transform: rotate(360deg); + } +} .um-new-dropdown { font-size: 16px; margin: 0; @@ -46,18 +54,22 @@ -webkit-box-sizing: border-box; border-radius: 5px 5px 5px 5px; -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; } - .um-new-dropdown ul { - margin: 0; - padding: 0; } - .um-new-dropdown ul li { - list-style-type: none; - padding: 0; - margin: 0; } - .um-new-dropdown ul li a { - display: block; - padding: 8px 12px; - line-height: 1; } + -webkit-border-radius: 5px 5px 5px 5px; +} +.um-new-dropdown ul { + margin: 0; + padding: 0; +} +.um-new-dropdown ul li { + list-style-type: none; + padding: 0; + margin: 0; +} +.um-new-dropdown ul li a { + display: block; + padding: 8px 12px; + line-height: 1; +} .um-new-dropdown-arr { position: absolute; @@ -66,23 +78,27 @@ height: 24px; overflow: hidden; z-index: 15; - color: #eee; } - .um-new-dropdown-arr * { - display: block; - width: 24px; - height: 24px; - vertical-align: bottom; - overflow: hidden; - line-height: 24px; } + color: #eee; +} +.um-new-dropdown-arr * { + display: block; + width: 24px; + height: 24px; + vertical-align: bottom; + overflow: hidden; + line-height: 24px; +} body #content .um-directory a { text-decoration: none; border-bottom: none; - box-shadow: none; } - body #content .um-directory a:hover, body #content .um-directory a:focus { - text-decoration: none; - border-bottom: none; - box-shadow: none; } + box-shadow: none; +} +body #content .um-directory a:hover, body #content .um-directory a:focus { + text-decoration: none; + border-bottom: none; + box-shadow: none; +} .um-directory { display: flex; @@ -90,928 +106,1146 @@ body #content .um-directory a { justify-content: flex-start; align-items: stretch; flex-wrap: nowrap; - position: relative; } - .um-directory a { - text-decoration: none; - border-bottom: none; - box-shadow: none; } - .um-directory a:hover, .um-directory a:focus { - text-decoration: none; - border-bottom: none; - box-shadow: none; } - .um-directory .select2-container--disabled { - opacity: 0.6; } - .um-directory .um-members-overlay { - display: none; - position: absolute; - width: 100%; - top: 0; - bottom: 0; - background: none; - z-index: 2; } - .um-directory .um-members-overlay .um-ajax-loading { - -webkit-transition: 0.1s opacity; - -moz-transition: 0.1s opacity; - -ms-transition: 0.1s opacity; - -o-transition: 0.1s opacity; - transition: 0.1s opacity; - color: #c6c6c6 !important; - -webkit-animation: um-ajax-spinning 1.1s infinite linear; - animation: um-ajax-spinning 1.1s infinite linear; - border-top: 0.2em solid rgba(198, 198, 198, 0.2); - border-right: 0.2em solid rgba(198, 198, 198, 0.2); - border-bottom: 0.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); - 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-directory .um-member-directory-header { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - flex-wrap: nowrap; - width: 100%; } - .um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-filters-bar { - padding: 0 0 10px 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row:not(.um-member-directory-filters-bar) { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - margin: 0 0 10px 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row.um-header-row-invisible { - margin: 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { - justify-content: flex-end; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; - width: 60%; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label { - flex: 1; - margin: 0 10px 0 0; - min-width: 90px; - max-width: 85%; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label span { - display: none; - margin: 0 5px 0 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label .um-search-line { - -webkit-appearance: textfield; - width: 100%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line .um-do-search { - min-width: 15%; - width: auto; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - flex-wrap: nowrap; - width: 100%; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - font-size: 30px; - line-height: 30px; - margin: 0 10px 0 0; - width: 30px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type .um-member-directory-view-type-a { - color: #ddd; - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type.um-disabled { - cursor: default; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type.um-disabled a { - cursor: default; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type:not(.um-disabled) .um-member-directory-view-type-a:hover { - color: #ccc; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type:not(.um-disabled) .um-member-directory-view-type-a:focus { - color: #ddd; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - flex: 5; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - position: relative; - cursor: pointer; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a a { - margin: 0 5px 0 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a i.um-faicon-caret-down { - display: inline; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a i.um-faicon-caret-up { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a.um-member-directory-sorting-visible i.um-faicon-caret-down { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a.um-member-directory-sorting-visible i.um-faicon-caret-up { - display: inline; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown { - top: 24px; - width: 200px; - left: -12px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown li a[data-selected="1"] { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: baseline; - flex-wrap: nowrap; - flex: 2; - text-align: right; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - cursor: pointer; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a a { - margin: 0 5px 0 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a i.um-faicon-caret-down { - display: inline; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a i.um-faicon-caret-up { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a.um-member-directory-filters-visible i.um-faicon-caret-down { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a.um-member-directory-filters-visible i.um-faicon-caret-up { - display: inline; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search { - margin: 0; - width: 100%; - display: grid; - grid-template-rows: auto 1fr; - grid-template-columns: repeat(3, 1fr); - grid-gap: 10px; - grid-auto-rows: minmax(max-content, auto); - -ms-grid-template-rows: auto 1fr; - -ms-grid-template-columns: repeat(3, 1fr); - -ms-grid-gap: 10px; - -ms-grid-auto-rows: minmax(max-content, auto); - align-items: center; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - width: 100%; - position: relative; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter .select2-container { - float: left; - width: 100% !important; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter .um-s1 { - width: 100%; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-text-filter-type input { - width: 100%; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type { - flex-direction: column; - align-items: stretch; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider { - width: calc( 100% - 16px); } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider .ui-slider-range.ui-widget-header { - background: #44b0ec; - border: 1px solid #44b0ec !important; - margin-top: -1px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider.ui-slider.ui-slider-horizontal { - border: 1px solid #ddd !important; - box-sizing: border-box; - margin: 4px 8px 0 8px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider-range { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - margin: 6px 0 0 8px; - font-size: 0.8em; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input { - width: calc( 50% - 5px); - margin: 0 5px 0 0 !important; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) { - margin: 0 0 0 5px !important; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search[style*="overflow: hidden;"] .um-search-filter { - pointer-events: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-search.um-search-invisible { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: wrap; - margin: 0; - padding: 0; - box-sizing: border-box; - border: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; - margin: 0 10px 5px 0; - padding: 0 10px; - border-radius: 3px; - cursor: default; - background: #f1f1f1; - font-size: 13px; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child { - margin-left: 0; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .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-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove:hover { - color: #a00; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-clear-filters { - display: none; } - .um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-clear-filters a { - padding: 3px 10px; - margin: 0 10px; } - .um-directory .um-members-wrapper { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - flex-wrap: nowrap; - width: 100%; - margin: 0 0 10px 0; - padding: 0; - position: relative; - height: 300px; } - .um-directory .um-members-wrapper .um-members-intro { - text-align: center; - margin: 0 0 10px 0; } - .um-directory .um-members-wrapper .um-members-total { - font-size: 20px; - font-weight: 300; } - .um-directory .um-members-wrapper .um-members { - width: 100%; - margin: 0; - padding: 0; - -ms-word-break: break-all; - word-break: break-word; - word-wrap: break-word; } - .um-directory .um-members-wrapper .um-members .um-member { - border: 1px solid #ddd; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1 a img { - -moz-border-radius: 999px !important; - -webkit-border-radius: 999px !important; - border-radius: 999px !important; } - .um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1.radius-2 a img { - -moz-border-radius: 4px !important; - -webkit-border-radius: 4px !important; - border-radius: 4px !important; } - .um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1.radius-3 a img { - -moz-border-radius: 0 !important; - -webkit-border-radius: 0 !important; - border-radius: 0 !important; } - .um-directory .um-members-wrapper .um-members .um-member .um-member-card .um-member-name { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; } - .um-directory .um-members-wrapper .um-members .um-member .um-member-card .um-member-name a { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; } - .um-directory .um-members-wrapper .um-members img { - display: block; - overflow: hidden; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - margin: 0; - padding: 0; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { - width: 5%; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member { - float: left; - width: 30%; - background: #fff; - text-align: center; - margin-bottom: 40px; - position: relative; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status { - display: none; - background: #999; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.inactive, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.rejected { - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - padding: 7px 15px; - color: #fff; - z-index: 10; - font-size: 13px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.awaiting_admin_review { - background: #c74a4a; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo { - padding: 40px 0 20px 0; - text-align: center; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo a { - text-decoration: none; - box-shadow: none !important; - display: inline !important; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo a img { - display: inline !important; - border: 5px solid #fff; - background: #fff; - width: 140px; - height: 140px; - float: none !important; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.inactive, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.rejected { - opacity: 0.7; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.with-cover .um-member-photo { - padding-top: 0; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.with-cover .um-member-photo a img { - width: 90px; - height: 90px; - position: relative; - top: -35px; - margin-bottom: -45px; - float: none; - opacity: 1; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover { - background-color: #eee; - box-sizing: border-box; - position: relative; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover[data-ratio] { - overflow-y: hidden; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover .um-member-cover-e { - text-align: center; - box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover .um-member-cover-e img { - width: 100% !important; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card { - padding-bottom: 15px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card.no-photo { - padding-top: 30px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-name { - margin: 0 0 4px 0; - justify-content: center; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-name a { - font-size: 16px; - line-height: 26px; - color: #444; - font-weight: 700; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn { - margin: 2px 0; - height: 40px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn { - padding: 10px 15px !important; - transition: none !important; - display: inline-block !important; - margin: 0 auto !important; - min-width: 110px; - width: auto; - text-align: center; - font-size: 13px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn:before { - font-family: "FontAwesome"; - margin-right: 8px; - width: 14px; - text-align: left; - display: inline-block; - font-size: 16px; - position: relative; - left: 0; - top: 1px; - content: "\f013"; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-tagline { - font-size: 13px; - line-height: 22px; - color: #999; - padding: 0 15px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta { - display: none; - margin: 20px 15px 0 15px; - padding: 15px 0; - border-top: 1px solid #e5e5e5; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta.no-animate { - display: block; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline { - font-size: 13px; - padding: 12px 0 0 0; - line-height: 16px; - vertical-align: middle; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline strong { - display: block; - clear: both; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline span { - display: block; - text-align: center; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect { - padding-top: 20px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect a { - display: inline-block; - width: 40px; - line-height: 40px; - height: 40px; - -moz-border-radius: 999px; - -webkit-border-radius: 999px; - border-radius: 999px; - color: #fff !important; - opacity: 0.85; - margin: 0 1px; - font-size: 22px; - transition: 0.25s; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect a:hover { - opacity: 1; - color: #fff; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less { - display: none; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less a { - color: #666; - display: inline-block; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less a i { - display: block; - font-size: 32px; - height: 32px; - line-height: 32px; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-more a { - color: #666; - display: inline-block; } - .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-more a i { - display: block; - font-size: 32px; - height: 32px; - line-height: 32px; } - .um-directory .um-members-wrapper .um-members.um-members-list { - display: grid; - grid-template-rows: auto 1fr; - grid-template-columns: repeat(1, 1fr); - grid-gap: 10px; - grid-auto-rows: minmax(max-content, auto); - -ms-grid-template-rows: auto 1fr; - -ms-grid-template-columns: repeat(1, 1fr); - -ms-grid-gap: 10px; - -ms-grid-auto-rows: minmax(max-content, auto); - align-items: center; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - flex-wrap: nowrap; - width: 100%; - padding: 15px; - margin: 0; - background: #fff; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status { - display: none; - background: #999; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.inactive, .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.rejected { - display: block; - width: 100%; - padding: 7px 15px; - margin-bottom: 10px; - color: #fff; - font-size: 13px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.awaiting_admin_review { - background: #c74a4a; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: flex-start; - flex-wrap: nowrap; - width: 100%; - margin: 0 0 10px 0; - padding: 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo { - width: 100px; - margin: 0 15px 0 0; - padding: 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo a { - width: 100px; - height: 100px; - display: block; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo a img { - width: 100px; - height: 100px; - position: relative; - top: 0; - margin: 0; - margin-bottom: 0; - border: none; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: flex-start; - flex-wrap: nowrap; - width: calc( 100% - 115px); - padding: 0; - margin: 0; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card.no-photo { - width: 100%; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - flex-wrap: nowrap; - width: calc( 100% - 30px); - margin: 0 10px 0 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header { - width: 100%; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header .um-member-name { - margin: 0 0 4px 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header .um-member-name a { - font-size: 16px; - line-height: 26px; - color: #444; - font-weight: 700; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-tagline { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: wrap; - width: 100%; - font-size: 13px; - color: #999; - padding: 0; - box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main { - width: 100%; - padding: 0; - box-sizing: border-box; - display: none; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main.no-animate { - display: block; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta { - float: left; - width: 100%; - display: block; - margin: 10px 0 0 0; - box-sizing: border-box; - border: none; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-metaline { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: wrap; - font-size: 13px; - padding: 12px 0 0 0; - line-height: 16px; - width: 100%; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect { - padding-top: 10px; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect a { - display: inline-block; - width: 40px; - line-height: 40px; - height: 40px; - -moz-border-radius: 999px; - -webkit-border-radius: 999px; - border-radius: 999px; - color: #fff !important; - opacity: 0.85; - margin: 0 1px; - font-size: 22px; - transition: 0.25s; - text-align: center; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect a:hover { - opacity: 1; - color: #fff; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-end; - flex-wrap: nowrap; - width: 20px; - text-align: right; - padding: 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog { - position: relative; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-member-actions-a { - line-height: 1; - display: block; - color: #666; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-member-actions-a i { - display: block; - font-size: 20px; - line-height: 1; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-new-dropdown { - width: 180px; - right: 0; - text-align: left; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions a { - box-sizing: border-box; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - flex-wrap: nowrap; - width: 100%; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - width: calc( 100% - 145px); - margin: 0 10px 0 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - margin: 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons > :not(:last-child) { - margin: 0 10px 0 0; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons { - width: 20px; - text-align: right; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more a { - color: #666; - display: inline-block; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more a i { - display: block; - font-size: 28px; - height: 28px; - line-height: 28px; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: baseline; - flex-wrap: nowrap; - display: none; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less a { - color: #666; - display: inline-block; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less a i { - display: block; - font-size: 28px; - height: 28px; - line-height: 28px; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo.no-reveal .um-member-card-footer-buttons { - width: 100%; } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo:not(.no-reveal) .um-member-card-footer-buttons { - width: calc( 100% - 30px); } - .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { - width: calc( 100% - 125px); } - .um-directory .um-members-wrapper .um-members .um-members-none { - text-align: center; - font-size: 18px; } - .um-directory .um-members-pagination-box { - width: 100%; - float: left; - margin: 0 0 10px 0; - padding: 0; } - .um-directory .um-members-pagination-box .um-members-pagi { - display: flex; - flex-direction: row; - justify-content: center; - align-items: baseline; - flex-wrap: nowrap; - width: 100%; - margin: 0; - padding: 0; - font-size: 15px; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi { - cursor: pointer; - display: inline-block; - width: auto; - height: 34px; - line-height: 34px; - transition: all .2s linear; - padding: 0 14px; - color: #666 !important; - font-weight: normal; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow { - line-height: 38px; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow i:before { - font-size: 20px; - vertical-align: middle !important; - height: 34px; - line-height: 34px; - top: -2px; - position: relative; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.current { - cursor: default; - color: #fff !important; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.current:hover { - color: #fff !important; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.disabled { - cursor: default; - opacity: .4; } - .um-directory .um-members-pagination-box .um-members-pagi .pagi.none { - color: #aaa !important; } - .um-directory .um-members-pagination-box .um-members-pagidrop { - width: 100%; - float: left; - margin: 0; - text-align: center; - padding: 5px 0; - font-size: 15px; } - .um-directory.um-loaded .um-members-wrapper { - height: auto; } - .um-directory[data-view_type="list"] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type="list"] { - display: block; } - .um-directory[data-view_type="grid"] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type="grid"] { - display: block; } - .um-directory[data-view_type="map"] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type="map"] { - display: block; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { - width: 100%; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { - justify-content: flex-start; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line { - flex-wrap: wrap; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - width: 20px; - font-size: 20px; - line-height: 20px; - margin: 0 2px 0 0; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting { - width: calc( 100% - 25px); - justify-content: flex-end; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-new-dropdown { - right: 0; - left: auto; } - .um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters { - flex: none; - width: 100%; } - .um-directory.uimob340 .um-member-directory-header .um-search { - grid-template-columns: repeat(1, 1fr); } - .um-directory.uimob340 .um-members-wrapper .um-members .um-member { - width: 100%; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { - width: 0; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member { - padding: 10px; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - width: 50px; - margin: 0 10px 0 0; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { - width: 50px; - height: 50px; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { - width: 50px; - height: 50px; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { - width: calc( 100% - 60px); } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { - align-items: flex-start; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; - flex-wrap: nowrap; - width: calc( 100% - 90px); - margin: 0 10px 0 0; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - margin: 0 0 5px 0; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper a.um-button { - width: 100% !important; } - .um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { - width: calc( 100% - 70px); } - .um-directory.uimob340 .um-members-pagination-box .um-members-pagi { - display: none; } - .um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { - width: 100%; } - .um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { - justify-content: flex-start; } - .um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { - width: 20px; - font-size: 20px; - line-height: 20px; - margin: 0 5px 0 0; } - .um-directory.uimob500 .um-member-directory-header .um-search { - grid-template-columns: repeat(1, 1fr); } - .um-directory.uimob500 .um-members-wrapper .um-members .um-member { - width: 100%; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { - width: 0; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - width: 70px; - margin: 0 10px 0 0; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { - width: 70px; - height: 70px; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { - width: 70px; - height: 70px; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { - width: calc( 100% - 80px); } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { - align-items: flex-start; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - flex-wrap: wrap; - width: calc( 100% - 110px); - margin: 0 10px 0 0; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - margin: 0 10px 5px 0; } - .um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { - width: calc( 100% - 90px); } - .um-directory.uimob500 .um-members-pagination-box .um-members-pagi { - display: none; } - .um-directory.uimob800 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { - width: 100%; } - .um-directory.uimob800 .um-member-directory-header .um-search { - grid-template-columns: repeat(2, 1fr); } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { - width: 4%; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-grid .um-member { - width: 48%; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { - width: 80px; - margin: 0 10px 0 0; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { - width: 80px; - height: 80px; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { - width: 80px; - height: 80px; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { - width: calc( 100% - 90px); } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { - align-items: flex-start; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { - flex-wrap: wrap; - width: calc( 100% - 120px); - margin: 0 10px 0 0; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { - margin: 0 10px 5px 0; } - .um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { - width: calc( 100% - 100px); } - .um-directory.uimob960 .um-member-directory-header .um-search { - grid-template-columns: repeat(2, 1fr); } - .um-directory.uimob960 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { - width: 4%; } - .um-directory.uimob960 .um-members-wrapper .um-members.um-members-grid .um-member { - width: 48%; } + position: relative; +} +.um-directory a { + text-decoration: none; + border-bottom: none; + box-shadow: none; +} +.um-directory a:hover, .um-directory a:focus { + text-decoration: none; + border-bottom: none; + box-shadow: none; +} +.um-directory .select2-container--disabled { + opacity: 0.6; +} +.um-directory .um-members-overlay { + display: none; + position: absolute; + width: 100%; + top: 0; + bottom: 0; + background: none; + z-index: 2; +} +.um-directory .um-members-overlay .um-ajax-loading { + -webkit-transition: 0.1s opacity; + -moz-transition: 0.1s opacity; + -ms-transition: 0.1s opacity; + -o-transition: 0.1s opacity; + transition: 0.1s opacity; + color: #c6c6c6 !important; + -webkit-animation: um-ajax-spinning 1.1s infinite linear; + animation: um-ajax-spinning 1.1s infinite linear; + border-top: 0.2em solid rgba(198, 198, 198, 0.2); + border-right: 0.2em solid rgba(198, 198, 198, 0.2); + border-bottom: 0.2em solid rgba(198, 198, 198, 0.2); + border-left: 0.2em solid #c6c6c6; + font-size: 1.75em; + position: absolute; + left: calc(50% - 1.75em); + top: calc(50% - 1.75em); + 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-directory .um-member-directory-header { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-wrap: nowrap; + width: 100%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-filters-bar { + padding: 0 0 10px 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row:not(.um-member-directory-filters-bar) { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + margin: 0 0 10px 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row.um-header-row-invisible { + margin: 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { + justify-content: flex-end; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; + width: 60%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label { + flex: 1; + margin: 0 10px 0 0; + min-width: 90px; + max-width: 85%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label span { + display: none; + margin: 0 5px 0 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label .um-search-line { + -webkit-appearance: textfield; + width: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line .um-do-search { + min-width: 15%; + width: auto; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + flex-wrap: nowrap; + width: 100%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { + font-size: 30px; + line-height: 30px; + margin: 0 10px 0 0; + width: 30px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type .um-member-directory-view-type-a { + color: #ddd; + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type.um-disabled { + cursor: default; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type.um-disabled a { + cursor: default; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type:not(.um-disabled) .um-member-directory-view-type-a:hover { + color: #ccc; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type:not(.um-disabled) .um-member-directory-view-type-a:focus { + color: #ddd; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + flex: 5; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + position: relative; + cursor: pointer; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a a { + margin: 0 5px 0 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a i.um-faicon-caret-down { + display: inline; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a i.um-faicon-caret-up { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a.um-member-directory-sorting-visible i.um-faicon-caret-down { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a.um-member-directory-sorting-visible i.um-faicon-caret-up { + display: inline; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown { + top: 24px; + width: 200px; + left: -12px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown li a[data-selected="1"] { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: baseline; + flex-wrap: nowrap; + flex: 2; + text-align: right; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + cursor: pointer; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a a { + margin: 0 5px 0 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a i.um-faicon-caret-down { + display: inline; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a i.um-faicon-caret-up { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a.um-member-directory-filters-visible i.um-faicon-caret-down { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a.um-member-directory-filters-visible i.um-faicon-caret-up { + display: inline; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search { + margin: 0; + width: 100%; + display: grid; + grid-template-rows: auto 1fr; + grid-template-columns: repeat(3, 1fr); + grid-gap: 10px; + grid-auto-rows: minmax(max-content, auto); + -ms-grid-template-rows: auto 1fr; + -ms-grid-template-columns: repeat(3, 1fr); + -ms-grid-gap: 10px; + -ms-grid-auto-rows: minmax(max-content, auto); + align-items: center; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + width: 100%; + position: relative; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter .select2-container { + float: left; + width: 100% !important; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter .um-s1 { + width: 100%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-text-filter-type input { + width: 100%; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type { + flex-direction: column; + align-items: stretch; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider { + width: calc(100% - 16px); +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider .ui-slider-range.ui-widget-header { + background: #44b0ec; + border: 1px solid #44b0ec !important; + margin-top: -1px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider.ui-slider.ui-slider-horizontal { + border: 1px solid #ddd !important; + box-sizing: border-box; + margin: 4px 8px 0 8px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-slider-filter-type .um-slider-range { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + margin: 6px 0 0 8px; + font-size: 0.8em; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input { + width: calc(50% - 5px); + margin: 0 5px 0 0 !important; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) { + margin: 0 0 0 5px !important; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search[style*="overflow: hidden;"] .um-search-filter { + pointer-events: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-search.um-search-invisible { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: wrap; + margin: 0; + padding: 0; + box-sizing: border-box; + border: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; + margin: 0 10px 5px 0; + padding: 0 10px; + border-radius: 3px; + cursor: default; + background: #f1f1f1; + font-size: 13px; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child { + margin-left: 0; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .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-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove:hover { + color: #a00; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-clear-filters { + display: none; +} +.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-clear-filters a { + padding: 3px 10px; + margin: 0 10px; +} +.um-directory .um-members-wrapper { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-wrap: nowrap; + width: 100%; + margin: 0 0 10px 0; + padding: 0; + position: relative; + height: 300px; +} +.um-directory .um-members-wrapper .um-members-intro { + text-align: center; + margin: 0 0 10px 0; +} +.um-directory .um-members-wrapper .um-members-total { + font-size: 20px; + font-weight: 300; +} +.um-directory .um-members-wrapper .um-members { + width: 100%; + margin: 0; + padding: 0; + -ms-word-break: break-all; + word-break: break-word; + word-wrap: break-word; +} +.um-directory .um-members-wrapper .um-members .um-member { + border: 1px solid #ddd; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1 a img { + -moz-border-radius: 999px !important; + -webkit-border-radius: 999px !important; + border-radius: 999px !important; +} +.um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1.radius-2 a img { + -moz-border-radius: 4px !important; + -webkit-border-radius: 4px !important; + border-radius: 4px !important; +} +.um-directory .um-members-wrapper .um-members .um-member .um-member-photo.radius-1.radius-3 a img { + -moz-border-radius: 0 !important; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; +} +.um-directory .um-members-wrapper .um-members .um-member .um-member-card .um-member-name { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; +} +.um-directory .um-members-wrapper .um-members .um-member .um-member-card .um-member-name a { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: nowrap; +} +.um-directory .um-members-wrapper .um-members img { + display: block; + overflow: hidden; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + margin: 0; + padding: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { + width: 5%; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member { + float: left; + width: 30%; + background: #fff; + text-align: center; + margin-bottom: 40px; + position: relative; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status { + display: none; + background: #999; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.inactive, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.rejected { + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + padding: 7px 15px; + color: #fff; + z-index: 10; + font-size: 13px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-status.awaiting_admin_review { + background: #c74a4a; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo { + padding: 40px 0 20px 0; + text-align: center; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo a { + text-decoration: none; + box-shadow: none !important; + display: inline !important; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-photo a img { + display: inline !important; + border: 5px solid #fff; + background: #fff; + width: 140px; + height: 140px; + float: none !important; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.inactive, .um-directory .um-members-wrapper .um-members.um-members-grid .um-member.rejected { + opacity: 0.7; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member.with-cover .um-member-photo { + padding-top: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member.with-cover .um-member-photo a img { + width: 90px; + height: 90px; + position: relative; + top: -35px; + margin-bottom: -45px; + float: none; + opacity: 1; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover { + background-color: #eee; + box-sizing: border-box; + position: relative; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover[data-ratio] { + overflow-y: hidden; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover .um-member-cover-e { + text-align: center; + box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-cover .um-member-cover-e img { + width: 100% !important; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card { + padding-bottom: 15px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card.no-photo { + padding-top: 30px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-name { + margin: 0 0 4px 0; + justify-content: center; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-name a { + font-size: 16px; + line-height: 26px; + color: #444; + font-weight: 700; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn { + margin: 2px 0; + height: 40px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn { + padding: 10px 15px !important; + transition: none !important; + display: inline-block !important; + margin: 0 auto !important; + min-width: 110px; + width: auto; + text-align: center; + font-size: 13px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn:before { + font-family: "FontAwesome"; + margin-right: 8px; + width: 14px; + text-align: left; + display: inline-block; + font-size: 16px; + position: relative; + left: 0; + top: 1px; + content: "\f013"; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-tagline { + font-size: 13px; + line-height: 22px; + color: #999; + padding: 0 15px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta { + display: none; + margin: 20px 15px 0 15px; + padding: 15px 0; + border-top: 1px solid #e5e5e5; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta.no-animate { + display: block; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline { + font-size: 13px; + padding: 12px 0 0 0; + line-height: 16px; + vertical-align: middle; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline strong { + display: block; + clear: both; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-metaline span { + display: block; + text-align: center; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect { + padding-top: 20px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect a { + display: inline-block; + width: 40px; + line-height: 40px; + height: 40px; + -moz-border-radius: 999px; + -webkit-border-radius: 999px; + border-radius: 999px; + color: #fff !important; + opacity: 0.85; + margin: 0 1px; + font-size: 22px; + transition: 0.25s; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-meta .um-member-connect a:hover { + opacity: 1; + color: #fff; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less { + display: none; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less a { + color: #666; + display: inline-block; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-less a i { + display: block; + font-size: 32px; + height: 32px; + line-height: 32px; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-more a { + color: #666; + display: inline-block; +} +.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-member-meta-main .um-member-more a i { + display: block; + font-size: 32px; + height: 32px; + line-height: 32px; +} +.um-directory .um-members-wrapper .um-members.um-members-list { + display: grid; + grid-template-rows: auto 1fr; + grid-template-columns: repeat(1, 1fr); + grid-gap: 10px; + grid-auto-rows: minmax(max-content, auto); + -ms-grid-template-rows: auto 1fr; + -ms-grid-template-columns: repeat(1, 1fr); + -ms-grid-gap: 10px; + -ms-grid-auto-rows: minmax(max-content, auto); + align-items: center; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-wrap: nowrap; + width: 100%; + padding: 15px; + margin: 0; + background: #fff; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status { + display: none; + background: #999; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.awaiting_admin_review, .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.inactive, .um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.rejected { + display: block; + width: 100%; + padding: 7px 15px; + margin-bottom: 10px; + color: #fff; + font-size: 13px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-status.awaiting_admin_review { + background: #c74a4a; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + flex-wrap: nowrap; + width: 100%; + margin: 0 0 10px 0; + padding: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo { + width: 100px; + margin: 0 15px 0 0; + padding: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo a { + width: 100px; + height: 100px; + display: block; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo a img { + width: 100px; + height: 100px; + position: relative; + top: 0; + margin: 0; + margin-bottom: 0; + border: none; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + flex-wrap: nowrap; + width: calc(100% - 115px); + padding: 0; + margin: 0; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card.no-photo { + width: 100%; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-wrap: nowrap; + width: calc(100% - 30px); + margin: 0 10px 0 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header { + width: 100%; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header .um-member-name { + margin: 0 0 4px 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-card-header .um-member-name a { + font-size: 16px; + line-height: 26px; + color: #444; + font-weight: 700; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-tagline { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: wrap; + width: 100%; + font-size: 13px; + color: #999; + padding: 0; + box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main { + width: 100%; + padding: 0; + box-sizing: border-box; + display: none; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main.no-animate { + display: block; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta { + float: left; + width: 100%; + display: block; + margin: 10px 0 0 0; + box-sizing: border-box; + border: none; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-metaline { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex-wrap: wrap; + font-size: 13px; + padding: 12px 0 0 0; + line-height: 16px; + width: 100%; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect { + padding-top: 10px; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect a { + display: inline-block; + width: 40px; + line-height: 40px; + height: 40px; + -moz-border-radius: 999px; + -webkit-border-radius: 999px; + border-radius: 999px; + color: #fff !important; + opacity: 0.85; + margin: 0 1px; + font-size: 22px; + transition: 0.25s; + text-align: center; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content .um-member-meta-main .um-member-meta .um-member-connect a:hover { + opacity: 1; + color: #fff; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-end; + flex-wrap: nowrap; + width: 20px; + text-align: right; + padding: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog { + position: relative; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-member-actions-a { + line-height: 1; + display: block; + color: #666; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-member-actions-a i { + display: block; + font-size: 20px; + line-height: 1; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-new-dropdown { + width: 180px; + right: 0; + text-align: left; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions a { + box-sizing: border-box; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + flex-wrap: nowrap; + width: 100%; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + width: calc(100% - 145px); + margin: 0 10px 0 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + margin: 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons > :not(:last-child) { + margin: 0 10px 0 0; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons { + width: 20px; + text-align: right; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more a { + color: #666; + display: inline-block; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-more a i { + display: block; + font-size: 28px; + height: 28px; + line-height: 28px; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: baseline; + flex-wrap: nowrap; + display: none; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less a { + color: #666; + display: inline-block; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-reveal-buttons .um-member-less a i { + display: block; + font-size: 28px; + height: 28px; + line-height: 28px; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo.no-reveal .um-member-card-footer-buttons { + width: 100%; +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-photo:not(.no-reveal) .um-member-card-footer-buttons { + width: calc(100% - 30px); +} +.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { + width: calc(100% - 125px); +} +.um-directory .um-members-wrapper .um-members .um-members-none { + text-align: center; + font-size: 18px; +} +.um-directory .um-members-pagination-box { + width: 100%; + float: left; + margin: 0 0 10px 0; + padding: 0; +} +.um-directory .um-members-pagination-box .um-members-pagi { + display: flex; + flex-direction: row; + justify-content: center; + align-items: baseline; + flex-wrap: nowrap; + width: 100%; + margin: 0; + padding: 0; + font-size: 15px; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi { + cursor: pointer; + display: inline-block; + width: auto; + height: 34px; + line-height: 34px; + transition: all 0.2s linear; + padding: 0 14px; + color: #666 !important; + font-weight: normal; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow { + line-height: 38px; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow i:before { + font-size: 20px; + vertical-align: middle !important; + height: 34px; + line-height: 34px; + top: -2px; + position: relative; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.current { + cursor: default; + color: #fff !important; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.current:hover { + color: #fff !important; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.disabled { + cursor: default; + opacity: 0.4; +} +.um-directory .um-members-pagination-box .um-members-pagi .pagi.none { + color: #aaa !important; +} +.um-directory .um-members-pagination-box .um-members-pagidrop { + width: 100%; + float: left; + margin: 0; + text-align: center; + padding: 5px 0; + font-size: 15px; +} +.um-directory.um-loaded .um-members-wrapper { + height: auto; +} +.um-directory[data-view_type=list] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type=list] { + display: block; +} +.um-directory[data-view_type=grid] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type=grid] { + display: block; +} +.um-directory[data-view_type=map] .um-member-directory-header .um-member-directory-header-row .um-member-directory-view-type .um-member-directory-view-type-a[data-type=map] { + display: block; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { + width: 100%; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { + justify-content: flex-start; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line { + flex-wrap: wrap; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { + width: 20px; + font-size: 20px; + line-height: 20px; + margin: 0 2px 0 0; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting { + width: calc(100% - 25px); + justify-content: flex-end; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-new-dropdown { + right: 0; + left: auto; +} +.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters { + flex: none; + width: 100%; +} +.um-directory.uimob340 .um-member-directory-header .um-search { + grid-template-columns: repeat(1, 1fr); +} +.um-directory.uimob340 .um-members-wrapper .um-members .um-member { + width: 100%; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { + width: 0; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member { + padding: 10px; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { + width: 50px; + margin: 0 10px 0 0; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { + width: 50px; + height: 50px; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { + width: 50px; + height: 50px; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { + width: calc(100% - 60px); +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { + align-items: flex-start; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-wrap: nowrap; + width: calc(100% - 90px); + margin: 0 10px 0 0; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + margin: 0 0 5px 0; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper a.um-button { + width: 100% !important; +} +.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { + width: calc(100% - 70px); +} +.um-directory.uimob340 .um-members-pagination-box .um-members-pagi { + display: none; +} +.um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { + width: 100%; +} +.um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row { + justify-content: flex-start; +} +.um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type { + width: 20px; + font-size: 20px; + line-height: 20px; + margin: 0 5px 0 0; +} +.um-directory.uimob500 .um-member-directory-header .um-search { + grid-template-columns: repeat(1, 1fr); +} +.um-directory.uimob500 .um-members-wrapper .um-members .um-member { + width: 100%; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { + width: 0; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { + width: 70px; + margin: 0 10px 0 0; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { + width: 70px; + height: 70px; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { + width: 70px; + height: 70px; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { + width: calc(100% - 80px); +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { + align-items: flex-start; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { + flex-wrap: wrap; + width: calc(100% - 110px); + margin: 0 10px 0 0; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + margin: 0 10px 5px 0; +} +.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { + width: calc(100% - 90px); +} +.um-directory.uimob500 .um-members-pagination-box .um-members-pagi { + display: none; +} +.um-directory.uimob800 .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line { + width: 100%; +} +.um-directory.uimob800 .um-member-directory-header .um-search { + grid-template-columns: repeat(2, 1fr); +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { + width: 4%; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-grid .um-member { + width: 48%; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo { + width: 80px; + margin: 0 10px 0 0; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a { + width: 80px; + height: 80px; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo a img { + width: 80px; + height: 80px; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card { + width: calc(100% - 90px); +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer { + align-items: flex-start; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons { + flex-wrap: wrap; + width: calc(100% - 120px); + margin: 0 10px 0 0; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper { + margin: 0 10px 5px 0; +} +.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer.no-reveal:not(.no-photo) .um-member-card-footer-buttons { + width: calc(100% - 100px); +} +.um-directory.uimob960 .um-member-directory-header .um-search { + grid-template-columns: repeat(2, 1fr); +} +.um-directory.uimob960 .um-members-wrapper .um-members.um-members-grid .um-gutter-sizer { + width: 4%; +} +.um-directory.uimob960 .um-members-wrapper .um-members.um-members-grid .um-member { + width: 48%; +} .select2-container .select2-results li.select2-results__option[aria-disabled=true] { - display: none; } + display: none; +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 5a9ae908..12039bd5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,97 +2,283 @@ Ultimate Member dependencies */ -var gulp = require('gulp') -, uglify = require('gulp-uglify'), - sass = require('gulp-sass'), - rename = require('gulp-rename'), - cleanCSS = require( 'gulp-clean-css' ); +// var gulp = require('gulp') +// , uglify = require('gulp-uglify'), +// sass = require('gulp-sass'), +// rename = require('gulp-rename'), +// cleanCSS = require( 'gulp-clean-css' ); + +const { src, dest, parallel } = require( 'gulp' ); +const sass = require( 'gulp-sass' )( require( 'sass' ) ); +const uglify = require( 'gulp-uglify' ); +const cleanCSS = require( 'gulp-clean-css' ); +const rename = require( 'gulp-rename' ); // task -gulp.task( 'default', function ( done ) { - sass.compiler = require( 'node-sass' ); +// gulp.task( 'default', function ( done ) { +// sass.compiler = require( 'node-sass' ); +// +// gulp.src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( gulp.dest( 'assets/css' ) ); +// +// gulp.src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/js/' ) ); +// +// gulp.src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/js/admin/' ) ); +// gulp.src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/css/admin/' ) ); +// +// gulp.src(['assets/css/*.css', '!assets/css/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/css/' ) ); +// +// // full CSS files +// gulp.src(['assets/css/admin/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( gulp.dest( 'assets/css/admin/' ) ); +// // min CSS files +// gulp.src(['assets/css/admin/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/css/admin/' ) ); +// +// // full CSS files +// gulp.src(['assets/css/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( gulp.dest( 'assets/css/' ) ); +// // min CSS files +// gulp.src(['assets/css/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/css/' ) ); +// +// gulp.src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/legacy/fonticons/' ) ); +// +// // Dropdown lib +// // full CSS files +// gulp.src(['assets/libs/dropdown/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( gulp.dest( 'assets/libs/dropdown/' ) ); +// // min CSS files +// gulp.src(['assets/libs/dropdown/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/dropdown/' ) ); +// gulp.src(['assets/libs/dropdown/*.js', '!assets/libs/dropdown/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/dropdown/' ) ); +// +// // Modal lib +// // full CSS files +// gulp.src(['assets/libs/modal/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( gulp.dest( 'assets/libs/modal/' ) ); +// // min CSS files +// gulp.src(['assets/libs/modal/*.sass']) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/modal/' ) ); +// gulp.src(['assets/libs/modal/*.js', '!assets/libs/modal/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/modal/' ) ); +// +// // Raty lib +// gulp.src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/raty/' ) ); +// gulp.src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/raty/' ) ); +// +// // Tipsy lib +// gulp.src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/tipsy/' ) ); +// gulp.src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/tipsy/' ) ); +// +// // Pickadate lib +// gulp.src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',]) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( gulp.dest( 'assets/libs/pickadate/' ) ); +// gulp.src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/pickadate/' ) ); +// gulp.src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',]) +// .pipe( uglify() ) +// .pipe( rename({ suffix: '.min' }) ) +// .pipe( gulp.dest( 'assets/libs/pickadate/translations/' ) ); +// +// done(); +// }); +// +// function js( path ) { +// return src( ['assets/' + path + '/js/*.js', '!assets/' + path + '/js/*.min.js'] ) +// .pipe( uglify() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( dest( 'assets/' + path + '/js' ) ); +// } +// +// function css( path ) { +// sass.compiler = require( 'node-sass' ); +// +// var src_array = exclude_css( path ); +// return src( src_array ) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( dest( 'assets/' + path + '/css' ) ); +// } +// +// function min_css( path ) { +// sass.compiler = require( 'node-sass' ); +// +// var src_array = exclude_css( path ); +// return src( src_array ) +// .pipe( sass().on( 'error', sass.logError ) ) +// .pipe( cleanCSS() ) +// .pipe( rename( { suffix: '.min' } ) ) +// .pipe( dest( 'assets/' + path + '/css' ) ); +// } - gulp.src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( gulp.dest( 'assets/css' ) ); +function defaultTask( done ) { + // sass.compiler = require( 'node-sass' ); - gulp.src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files - .pipe( uglify() ) - .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/js/' ) ); + src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( dest( 'assets/css' ) ); - gulp.src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files - .pipe( uglify() ) - .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/js/admin/' ) ); - gulp.src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',]) + src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files + .pipe( uglify() ) + .pipe( rename({ suffix: '.min' }) ) + .pipe( dest( 'assets/js/' ) ); + + src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files + .pipe( uglify() ) + .pipe( rename({ suffix: '.min' }) ) + .pipe( dest( 'assets/js/admin/' ) ); + src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/css/admin/' ) ); + .pipe( dest( 'assets/css/admin/' ) ); - gulp.src(['assets/css/*.css', '!assets/css/*.min.css',]) + src(['assets/css/*.css', '!assets/css/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/css/' ) ); + .pipe( dest( 'assets/css/' ) ); // full CSS files - gulp.src(['assets/css/admin/*.sass']) + src(['assets/css/admin/*.sass']) .pipe( sass().on( 'error', sass.logError ) ) - .pipe( gulp.dest( 'assets/css/admin/' ) ); + .pipe( dest( 'assets/css/admin/' ) ); // min CSS files - gulp.src(['assets/css/admin/*.sass']) + src(['assets/css/admin/*.sass']) .pipe( sass().on( 'error', sass.logError ) ) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/css/admin/' ) ); + .pipe( dest( 'assets/css/admin/' ) ); // full CSS files - gulp.src(['assets/css/*.sass']) + src(['assets/css/*.sass']) .pipe( sass().on( 'error', sass.logError ) ) - .pipe( gulp.dest( 'assets/css/' ) ); + .pipe( dest( 'assets/css/' ) ); // min CSS files - gulp.src(['assets/css/*.sass']) + src(['assets/css/*.sass']) .pipe( sass().on( 'error', sass.logError ) ) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/css/' ) ); + .pipe( dest( 'assets/css/' ) ); - gulp.src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',]) + src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/libs/legacy/fonticons/' ) ); + .pipe( dest( 'assets/libs/legacy/fonticons/' ) ); + + // Dropdown lib + // full CSS files + src(['assets/libs/dropdown/*.sass']) + .pipe( sass().on( 'error', sass.logError ) ) + .pipe( dest( 'assets/libs/dropdown/' ) ); + // min CSS files + src(['assets/libs/dropdown/*.sass']) + .pipe( sass().on( 'error', sass.logError ) ) + .pipe( cleanCSS() ) + .pipe( rename( { suffix: '.min' } ) ) + .pipe( dest( 'assets/libs/dropdown/' ) ); + src(['assets/libs/dropdown/*.js', '!assets/libs/dropdown/*.min.js',]) + .pipe( uglify() ) + .pipe( rename({ suffix: '.min' }) ) + .pipe( dest( 'assets/libs/dropdown/' ) ); + + // Modal lib + // full CSS files + src(['assets/libs/modal/*.sass']) + .pipe( sass().on( 'error', sass.logError ) ) + .pipe( dest( 'assets/libs/modal/' ) ); + // min CSS files + src(['assets/libs/modal/*.sass']) + .pipe( sass().on( 'error', sass.logError ) ) + .pipe( cleanCSS() ) + .pipe( rename( { suffix: '.min' } ) ) + .pipe( dest( 'assets/libs/modal/' ) ); + src(['assets/libs/modal/*.js', '!assets/libs/modal/*.min.js',]) + .pipe( uglify() ) + .pipe( rename({ suffix: '.min' }) ) + .pipe( dest( 'assets/libs/modal/' ) ); // Raty lib - gulp.src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',]) + src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/libs/raty/' ) ); - gulp.src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',]) + .pipe( dest( 'assets/libs/raty/' ) ); + src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',]) .pipe( uglify() ) .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/libs/raty/' ) ); + .pipe( dest( 'assets/libs/raty/' ) ); // Tipsy lib - gulp.src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',]) + src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/libs/tipsy/' ) ); - gulp.src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',]) + .pipe( dest( 'assets/libs/tipsy/' ) ); + src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',]) .pipe( uglify() ) .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/libs/tipsy/' ) ); + .pipe( dest( 'assets/libs/tipsy/' ) ); // Pickadate lib - gulp.src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',]) + src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',]) .pipe( cleanCSS() ) .pipe( rename( { suffix: '.min' } ) ) - .pipe( gulp.dest( 'assets/libs/pickadate/' ) ); - gulp.src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',]) + .pipe( dest( 'assets/libs/pickadate/' ) ); + src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',]) .pipe( uglify() ) .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/libs/pickadate/' ) ); - gulp.src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',]) + .pipe( dest( 'assets/libs/pickadate/' ) ); + src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',]) .pipe( uglify() ) .pipe( rename({ suffix: '.min' }) ) - .pipe( gulp.dest( 'assets/libs/pickadate/translations/' ) ); + .pipe( dest( 'assets/libs/pickadate/translations/' ) ); - done(); -}); + done(); +} +exports.default = defaultTask; diff --git a/includes/admin/templates/dashboard/users.php b/includes/admin/templates/dashboard/users.php index a018976a..5be7fde9 100644 --- a/includes/admin/templates/dashboard/users.php +++ b/includes/admin/templates/dashboard/users.php @@ -1,93 +1,74 @@ - + - -
- - - - + + + + + + + + + + +
- + + + - - - - - - - - - - - - -
+ + query()->count_users(); ?> - -
- - query()->count_users_by_status( 'approved' ); ?> - - - - - -
- - query()->count_users_by_status( 'rejected' ); ?> - - - - - -
- - - - + +
+ + + query()->count_users_by_status( 'awaiting_admin_review' ); ?> + + + + + +
+ + + query()->count_users_by_status( 'approved' ); ?> + + + + + + + + + query()->count_users_by_status( 'awaiting_email_confirmation' ); ?> + + + + + +
+ + + query()->count_users_by_status( 'rejected' ); ?> + + + + + + + + query()->count_users_by_status( 'inactive' ); ?> + + + + + +
From fdef6c134931830e871d96f5e3d74196f6189c87 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Thu, 28 Mar 2024 11:38:34 +0200 Subject: [PATCH 24/32] - disable duplicate emails --- includes/core/um-actions-account.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 84544975..878ad847 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -552,8 +552,12 @@ add_action( 'um_after_user_account_updated', 'um_after_user_account_updated_perm * @param $changed */ function um_account_updated_notification( $user_id, $changed ) { - um_fetch_user( $user_id ); - UM()->mail()->send( um_user( 'user_email' ), 'changedaccount_email' ); + // phpcs:disable WordPress.Security.NonceVerification + if ( 'password' !== $_POST['_um_account_tab'] || 1 !== absint( UM()->options()->get( 'changedpw_email_on' ) ) ) { + um_fetch_user( $user_id ); + UM()->mail()->send( um_user( 'user_email' ), 'changedaccount_email' ); + } + // phpcs:enable WordPress.Security.NonceVerification } add_action( 'um_after_user_account_updated', 'um_account_updated_notification', 20, 2 ); From 6839e07b10b7756ee5b26705e7be7ecf3dbd7179 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 28 Mar 2024 12:24:29 +0200 Subject: [PATCH 25/32] - reviewed #1480; --- includes/core/class-member-directory-meta.php | 47 +++++++------- includes/core/class-member-directory.php | 65 +++++++++---------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 7b187931..563d8bcc 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -224,6 +224,27 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $blog_id = get_current_blog_id(); + /** + * Filters member directory select-type filter relation in query. + * + * @param {string} $relation Relation `OR` or `AND`. `OR` by default. + * @param {string} $field Field key. + * + * @return {string} Relation. + * + * @since 2.8.5 + * @hook um_members_directory_select_filter_relation + * + * @example Change relation to 'AND'. + * function my_um_members_directory_select_filter_relation( $relation, $field ) { + * // your code here + * $relation = 'AND'; + * return $relation; + * } + * add_filter( 'um_members_directory_select_filter_relation', 'my_um_members_directory_select_filter_relation', 10, 2 ); + */ + $relation = apply_filters( 'um_members_directory_select_filter_relation', 'OR', $field ); + switch ( $field ) { default: $filter_type = $this->filter_types[ $field ]; @@ -328,27 +349,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped. } - /** - * Filters change select filter relation. - * - * @param {string} $relation. - * @param {string} $field field key. - * - * @return {string} relation. - * - * @since 2.8.5 - * @hook um_members_directory_filter_select_meta - * - * @example Change relation to 'AND'. - * function my_um_members_directory_filter_select_meta( $relation, $field ) { - * // your code here - * $relation = 'AND'; - * return $relation; - * } - * add_filter( 'um_members_directory_filter_select_meta', 'my_um_members_directory_filter_select_meta', 10, 2 ); - */ - $relation = apply_filters( 'um_members_directory_filter_select_meta', 'OR', $field ); - $values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array ); + $values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare. $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field ); @@ -441,7 +442,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { } // $roles_clauses is pre-prepared. - $this->where_clauses[] = '( ' . implode( ' OR ', $roles_clauses ) . ' )'; + $this->where_clauses[] = '( ' . implode( ' ' . esc_sql( $relation ) . ' ', $roles_clauses ) . ' )'; if ( ! $is_default ) { $this->custom_filters_in_query[ $field ] = $value; @@ -534,7 +535,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped. } - $values = implode( ' OR ', $values_array ); + $values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare. $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field ); diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index a6acb377..c73f6382 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1785,6 +1785,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { * Handle filters request */ function filters( $directory_data ) { + global $wpdb; //filters $filter_query = array(); if ( ! empty( $directory_data['search_fields'] ) ) { @@ -1817,6 +1818,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { continue; } + /** This filter is documented in includes/core/class-member-directory-meta.php */ + $relation = apply_filters( 'um_members_directory_select_filter_relation', 'OR', $field ); + switch ( $field ) { default: $filter_type = $this->filter_types[ $field ]; @@ -1872,26 +1876,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { case 'select': if ( is_array( $value ) ) { - /** - * Filters change select filter relation. - * - * @param {array} $args query args. - * @param {string} $field field key. - * - * @return {array} query args. - * - * @since 2.8.5 - * @hook um_members_directory_filter_select - * - * @example Change relation to 'AND'. - * function my_um_members_directory_filter_select( $args, $field ) { - * // your code here - * $args = array( 'relation' => 'AND' ) - * return $args; - * } - * add_filter( 'um_members_directory_filter_select', 'my_um_members_directory_filter_select', 10, 2 ); - */ - $field_query = apply_filters( 'um_members_directory_filter_select', array( 'relation' => 'OR' ), $field ); + $field_query = array( 'relation' => esc_sql( $relation ) ); foreach ( $value as $single_val ) { $single_val = trim( stripslashes( $single_val ) ); @@ -1997,21 +1982,35 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { case 'role': $value = array_map( 'strtolower', $value ); - if ( ! empty( $this->query_args['role__in'] ) ) { - $this->query_args['role__in'] = is_array( $this->query_args['role__in'] ) ? $this->query_args['role__in'] : array( $this->query_args['role__in'] ); - $default_role = array_intersect( $this->query_args['role__in'], $value ); - $um_role = array_diff( $value, $default_role ); - - foreach ( $um_role as $key => &$val ) { - $val = 'um_' . str_replace( ' ', '-', $val ); + if ( 'OR' !== $relation ) { + $role__in_clauses = array( 'relation' => $relation ); + foreach ( $value as $role ) { + $role__in_clauses[] = array( + 'key' => $wpdb->get_blog_prefix() . 'capabilities', + 'value' => '"' . $role . '"', + 'compare' => 'LIKE', + ); } - $this->query_args['role__in'] = array_merge( $default_role, $um_role ); + + $this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $role__in_clauses ) ); + + $this->custom_filters_in_query[ $field ] = $value; } else { - $this->query_args['role__in'] = $value; + if ( ! empty( $this->query_args['role__in'] ) ) { + $this->query_args['role__in'] = is_array( $this->query_args['role__in'] ) ? $this->query_args['role__in'] : array( $this->query_args['role__in'] ); + $default_role = array_intersect( $this->query_args['role__in'], $value ); + $um_role = array_diff( $value, $default_role ); + + foreach ( $um_role as $key => &$val ) { + $val = 'um_' . str_replace( ' ', '-', $val ); + } + $this->query_args['role__in'] = array_merge( $default_role, $um_role ); + } else { + $this->query_args['role__in'] = $value; + } + + $this->custom_filters_in_query[ $field ] = $this->query_args['role__in']; } - - $this->custom_filters_in_query[ $field ] = $this->query_args['role__in']; - break; case 'birth_date': $from_date = date( 'Y/m/d', mktime( 0,0,0, date( 'm', time() ), date( 'd', time() ), date( 'Y', time() - min( $value ) * YEAR_IN_SECONDS ) ) ); @@ -2083,7 +2082,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { break; case 'gender': if ( is_array( $value ) ) { - $field_query = array( 'relation' => 'OR' ); + $field_query = array( 'relation' => $relation ); foreach ( $value as $single_val ) { $single_val = trim( stripslashes( $single_val ) ); From 9f75a4c322ba66d81314107606fb82e91764b0f7 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Thu, 28 Mar 2024 12:52:00 +0200 Subject: [PATCH 26/32] - Remove media URL in user role settings if there is no default media --- assets/js/admin/forms.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/assets/js/admin/forms.js b/assets/js/admin/forms.js index f1eecce0..8293f370 100644 --- a/assets/js/admin/forms.js +++ b/assets/js/admin/forms.js @@ -820,10 +820,16 @@ jQuery(document).ready( function() { jQuery('.um-clear-image').on('click', function(e) { var clear_button = jQuery(this); - var default_image_url = clear_button.siblings('.um-forms-field').data('default'); + var default_image_url = ''; + if ( undefined !== clear_button.siblings('.um-forms-field').data('default') ) { + default_image_url = clear_button.siblings('.um-forms-field').data('default'); + } clear_button.siblings('.um-set-image').show(); clear_button.hide(); clear_button.siblings('.icon_preview').attr( 'src', default_image_url ); + if ( '' === default_image_url ) { + clear_button.siblings('.icon_preview').hide(); + } clear_button.siblings('.um-media-upload-data-id').val(''); clear_button.siblings('.um-media-upload-data-width').val(''); clear_button.siblings('.um-media-upload-data-height').val(''); From 6cededaaf5da4e3e915721678cb3f872170ea076 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 28 Mar 2024 15:47:08 +0200 Subject: [PATCH 27/32] - reviewed #1494; --- assets/js/admin/forms.js | 9 +++++---- assets/js/admin/forms.min.js | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/js/admin/forms.js b/assets/js/admin/forms.js index 8293f370..ea7522b8 100644 --- a/assets/js/admin/forms.js +++ b/assets/js/admin/forms.js @@ -819,11 +819,12 @@ jQuery(document).ready( function() { }); jQuery('.um-clear-image').on('click', function(e) { - var clear_button = jQuery(this); - var default_image_url = ''; - if ( undefined !== clear_button.siblings('.um-forms-field').data('default') ) { - default_image_url = clear_button.siblings('.um-forms-field').data('default'); + let clear_button = jQuery(this); + let default_image_url = clear_button.siblings('.um-forms-field').data('default'); + if ( undefined === default_image_url ) { + default_image_url = ''; } + clear_button.siblings('.um-set-image').show(); clear_button.hide(); clear_button.siblings('.icon_preview').attr( 'src', default_image_url ); diff --git a/assets/js/admin/forms.min.js b/assets/js/admin/forms.min.js index 0dce460a..bda056ab 100644 --- a/assets/js/admin/forms.min.js +++ b/assets/js/admin/forms.min.js @@ -1 +1 @@ -function um_admin_init_users_select(){function e(a){var t;if(!a.id)return a.text;if(void 0!==a.img)t=jQuery(' '+a.text+"");else{let e;t=(e=void 0!==a.element&&void 0!==a.element.attributes["data-img"]?a.element.attributes["data-img"].value:e)?jQuery(' '+a.text+""):jQuery(""+a.text+"")}return t}var a,t;jQuery(".um-user-select-field:visible:not(.um-select2-inited)").length&&(a={ajax:{url:wp.ajax.settings.url,dataType:"json",delay:250,data:function(e){var a={action:"um_get_users",search:e.term,page:e.page||1,nonce:um_admin_scripts.nonce};return jQuery.each(jQuery(this)[0].attributes,function(){var e;this.specified&&-1!==this.name.indexOf("data-ajax-args-")&&(e=this.name.replace("data-ajax-args-","").trim(),a[e]=this.value)}),a},processResults:function(e,a){a.page=a.page||1;var t=[];return e.data.users&&jQuery.each(e.data.users,function(e,a){void 0!==a.img?t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")",img:a.img}):t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")"})}),{results:t,pagination:{more:20*a.page")}function um_same_page_wrong_ajax(e){um_add_same_page_log(e,wp.i18n.__("Wrong AJAX response...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}function um_same_page_something_wrong(e){um_add_same_page_log(e,wp.i18n.__("Something went wrong with AJAX request...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}jQuery(document).ready(function(){um_admin_init_users_select(),um_admin_init_pages_select(),jQuery(document.body).on("click",".um-forms-field[data-log-object]",function(){var e=jQuery(this).data("log-object");jQuery(this).is(":checked")?jQuery(this).parents("label").siblings(".um-same-page-update-"+e).show():jQuery(this).parents("label").siblings(".um-same-page-update-"+e).hide()}),jQuery(document.body).on("click",".um-admin-form-same-page-update",function(){var t,a,i,s=jQuery(this).data("upgrade_cb");jQuery(this).prop("disabled",!0),um_add_same_page_log(s,wp.i18n.__("Upgrade Process Started...","ultimate-member")),"sync_metatable"===s?(t=0,a=500,jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_usermeta_fields",nonce:um_admin_scripts.nonce},success:function(e){i=1,um_add_same_page_log(s,wp.i18n.__("Getting metadata","ultimate-member")),jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_get_metadata",nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data.count?(um_add_same_page_log(s,wp.i18n.__("There are ","ultimate-member")+e.data.count+wp.i18n.__(" metadata rows...","ultimate-member")),um_add_same_page_log(s,wp.i18n.__("Start metadata upgrading...","ultimate-member")),t=Math.ceil(e.data.count/a),function a(){i<=t?jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_update_metadata_per_page",page:i,nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data?(um_add_same_page_log(s,e.data.message),i++,a()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}}):window.location=um_forms_data.successfully_redirect}()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}})},error:function(){um_same_page_something_wrong(s)}})):wp.hooks.doAction("um_same_page_upgrade",s)}),jQuery(".um-sortable-items-field").sortable({items:".um-sortable-item",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0,update:function(e,a){var t=[];jQuery(this).find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||t.push(jQuery(this).data("tab-id"))}),jQuery(this).siblings(".um-sortable-items-value").val(t.join(","))}}),jQuery(".um-multi-selects-list.um-sortable-multi-selects").sortable({items:".um-admin-drag-fld",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0}),jQuery('.um-multi-selects-list[data-field_id="_um_sorting_fields"] li').each(function(){"other"===jQuery(this).find(".um-field-wrapper:not(.um-custom-order-fields) select").val()?jQuery(this).find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery('.um-forms-line[data-field_type="md_sorting_fields"] .um-multi-selects-add-option').on("click",function(){var e=jQuery(this).siblings("ul.um-multi-selects-list"),a=e.hasClass("um-sortable-multi-selects"),t=(e.data("field_id"),0),i=(0").append(e.siblings(".um-hidden-multi-selects").clone()).html()),s='
  • ';a&&(s+='');let l="";jQuery.each(um_forms_data.md_sorting_data_types,function(e,a){l+='"}),s+=''+i+''+wp.i18n.__("Remove","ultimate-member")+'
  • ',e.append(s),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t).trigger("change"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][meta_key]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][label]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][data_type]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][order]")}),jQuery(document.body).on("change",'.um-multi-selects-list[data-field_id="_um_sorting_fields"] .um-field-wrapper:not(.um-custom-order-fields) select',function(){"other"===jQuery(this).val()?jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery(document.body).on("click",".um-multi-selects-option-line .um-select-delete",function(){jQuery(this).parents("li.um-multi-selects-option-line").remove()}),jQuery(document.body).on("click",".um-md-default-filters-option-line .um-select-delete",function(){jQuery(this).parents("li.um-md-default-filters-option-line").remove()}),jQuery(".um-multi-selects-add-option").on("click",function(){var e,a,t,i;jQuery(this).parents('.um-forms-line[data-field_type="md_sorting_fields"]').length||(a=(e=jQuery(this).siblings("ul.um-multi-selects-list")).hasClass("um-sortable-multi-selects"),e.data("field_id"),(t=0)',a&&(i+=''),i+=''+jQuery("
    ").append(e.siblings(".um-hidden-multi-selects").clone()).html()+''+wp.i18n.__("Remove","ultimate-member")+"",e.append(i),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t))});var t,e=-(new Date).getTimezoneOffset()/60,i=(jQuery('input[name="um-gmt-offset"]').val(e),jQuery(".um-admin-metabox").find(".um-slider").each(function(){var e=jQuery(this),a=parseInt(e.data("min")),t=parseInt(e.data("max")),a=[a=void 0!==jQuery("#"+e.data("field_name")+"_min").val()?jQuery("#"+e.data("field_name")+"_min").val():a,t=void 0!==jQuery("#"+e.data("field_name")+"_max").val()?jQuery("#"+e.data("field_name")+"_max").val():t];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),jQuery(".um-admin-metabox").find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}}).pickadate("picker").set("select",1e3*e.data("value"))}),jQuery(".um-admin-metabox").find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})}),!1);function s(e,a){var t,i="",s=e.siblings(".um-slider-range").data("placeholder-s"),l=e.siblings(".um-slider-range").data("placeholder-p"),a=a?(i=(a.values[0]===a.values[1]?s.replace("{value}",a.values[0]):l.replace("{min_range}",a.values[0]).replace("{max_range}",a.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=a.values[0],a.values[1]):(i=(e.slider("values",0)===e.slider("values",1)?s.replace("{value}",e.slider("values",0)):l.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(i),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(a)}function a(){jQuery(".um-forms-line").removeClass("um-forms-line-conditioned").each(function(){void 0===jQuery(this).data("conditional")||jQuery(this).hasClass("um-forms-line-conditioned")||(!function i(e){e.addClass("um-forms-line-conditioned");var a=e.data("conditional");var t=a[1];var s=a[2];var l=e.data("prefix");var n=!0;{var r,u;"="===t||"!="===t?-1===a[0].indexOf("||")&&void 0!==(u=jQuery("#"+l+"_"+a[0])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line"))):"~"===t?(m=a[0].split("|"),r=[],jQuery.each(m,function(e){r.push(jQuery("#"+l+"_"+m[e]))}),void 0!==r[0].parents(".um-forms-line").data("conditional")&&(n=i(r[0].parents(".um-forms-line")))):"><"===t&&void 0!==(u=jQuery("#"+l+"_"+a[0]+"_"+a[2])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line")))}var d=!1;{var m,o,c,p,f,_,g,h;if("="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?e.is(":checked"):!e.is(":checked"):Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s):"select"===t&&(d=Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?u.is(":checked"):!u.is(":checked"):Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s):"select"==g&&(d=Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s),d&&n);if("!="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?!e.is(":checked"):e.is(":checked"):e.val()!=s):"select"===t&&(d=e.val()!=s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?!u.is(":checked"):u.is(":checked"):u.val()!=s):"select"==g&&(d=u.val()!=s),d&&n);if("~"===t)return p=[],"sortable_items"===e.data("field_type")?(c=e.find(".um-sortable-items-value").data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.siblings(".um-sortable-items-field").find("li").addClass("um-hidden-item"),jQuery.each(p,function(e){f.siblings(".um-sortable-items-field").find('li[data-tab-id="'+p[e]+'"]').removeClass("um-hidden-item")}),_=[],f.siblings(".um-sortable-items-field").find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||_.push(jQuery(this).data("tab-id"))}),f.val(_.join(",")),f.siblings(".um-sortable-items-field").sortable("refresh"),d=!0):f.val(null)):(c=e.find(e.data("field_type")).data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.find("option").hide(),jQuery.each(p,function(e){f.find('option[value="'+p[e]+'"]').show()}),-1===p.indexOf(f.val())&&(f.val(p[0]),f.find("option").attr("selected",!1).prop("selected",!1),f.find('option[value="'+p[0]+'"]').attr("selected",!0).prop("selected",!0)),d=!0):(f.val(null),f.find("option").attr("selected",!1).prop("selected",!1))),d&&n;if("><"===t)return g=u.prop("tagName").toLowerCase(),(d="input"==g&&"checkbox"==(h=u.attr("type"))?u.is(":checked"):d)&&n}return!1}(jQuery(this))?jQuery(this).hide():(jQuery(this).show(),um_admin_init_users_select()))})}function y(e,a,t){return t.indexOf(e)===a}jQuery(document.body).on("change",".um-md-default-filters-option-line .um-field-wrapper select",function(){var t,e,a;i||(e=(t=jQuery(this)).val(),a=t.data("member_directory"),i=!0,wp.ajax.send("um_member_directory_default_filter_settings",{data:{key:e,directory_id:a,nonce:um_admin_scripts.nonce},success:function(e){var a=t.parents(".um-md-default-filters-option-line").find(".um-field-wrapper2");a.html(e.field_html),i=!1,a.find(".um-slider").each(function(){var e=jQuery(this),a=[parseInt(e.data("min")),parseInt(e.data("max"))];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}})}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})})},error:function(e){return!1}}))}),jQuery(".um-md-default-filters-add-option").on("click",function(){var e,a,t;i||((e=jQuery(this).siblings("ul.um-md-default-filters-list")).data("field_id"),(a=0)").append(e.siblings(".um-hidden-md-default-filters").clone()).html(),e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+'
  • '),e.find("li:last .um-hidden-md-default-filters").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-md-default-filters").attr("id",e.data("id_attr")+"-"+a),e.find("li:last .um-field-wrapper select").trigger("change"))}),jQuery(document.body).on("click",".um-text-delete",function(){jQuery(this).parents("li.um-multi-text-option-line").remove()}),jQuery(".um-multi-text-add-option").on("click",function(){var e=jQuery(this).siblings("ul.um-multi-text-list"),a=0,t=(0").append(e.siblings(".um-hidden-multi-text").clone()).html()),i=e.data("item_class");e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+"
  • "),e.find("li:last .um-hidden-multi-text").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-text").attr("id",e.data("id_attr")+"-"+a)}),jQuery(".um-media-upload").each(function(){var e=jQuery(this).find(".um-forms-field"),a=e.data("default");""!=e.val()&&e.val()!=a?(e.siblings(".um-set-image").hide(),e.siblings(".um-clear-image").show(),e.siblings(".icon_preview").show()):(e.val()==a&&e.siblings(".icon_preview").show(),e.siblings(".um-set-image").show(),e.siblings(".um-clear-image").hide())}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&(jQuery(".um-set-image").on("click",function(e){var a=jQuery(this);e.preventDefault(),t&&t.remove(),(t=wp.media({title:a.data("upload_frame"),button:{text:wp.i18n.__("Select","ultimate-member")},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();a.siblings(".icon_preview").attr("src",e.url).show(),a.siblings(".um-forms-field").val(e.url),a.siblings(".um-media-upload-data-id").val(e.id),a.siblings(".um-media-upload-data-width").val(e.width),a.siblings(".um-media-upload-data-height").val(e.height),a.siblings(".um-media-upload-data-thumbnail").val(e.thumbnail),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(e.url),a.siblings(".um-clear-image").show(),a.hide(),jQuery(document).trigger("um_media_upload_select",[a,e])}),t.open()}),jQuery(".icon_preview").on("click",function(e){jQuery(this).siblings(".um-set-image").trigger("click")}),jQuery(".um-clear-image").on("click",function(e){var a=jQuery(this),t=a.siblings(".um-forms-field").data("default");a.siblings(".um-set-image").show(),a.hide(),a.siblings(".icon_preview").attr("src",t),a.siblings(".um-media-upload-data-id").val(""),a.siblings(".um-media-upload-data-width").val(""),a.siblings(".um-media-upload-data-height").val(""),a.siblings(".um-media-upload-data-thumbnail").val(""),a.siblings(".um-forms-field").val(t),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(t),jQuery(document).trigger("um_media_upload_clear",a)})),jQuery(document.body).on("change",".um-forms-field",function(){(0 '+a.text+"");else{let e;t=(e=void 0!==a.element&&void 0!==a.element.attributes["data-img"]?a.element.attributes["data-img"].value:e)?jQuery(' '+a.text+""):jQuery(""+a.text+"")}return t}var a,t;jQuery(".um-user-select-field:visible:not(.um-select2-inited)").length&&(a={ajax:{url:wp.ajax.settings.url,dataType:"json",delay:250,data:function(e){var a={action:"um_get_users",search:e.term,page:e.page||1,nonce:um_admin_scripts.nonce};return jQuery.each(jQuery(this)[0].attributes,function(){var e;this.specified&&-1!==this.name.indexOf("data-ajax-args-")&&(e=this.name.replace("data-ajax-args-","").trim(),a[e]=this.value)}),a},processResults:function(e,a){a.page=a.page||1;var t=[];return e.data.users&&jQuery.each(e.data.users,function(e,a){void 0!==a.img?t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")",img:a.img}):t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")"})}),{results:t,pagination:{more:20*a.page")}function um_same_page_wrong_ajax(e){um_add_same_page_log(e,wp.i18n.__("Wrong AJAX response...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}function um_same_page_something_wrong(e){um_add_same_page_log(e,wp.i18n.__("Something went wrong with AJAX request...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}jQuery(document).ready(function(){um_admin_init_users_select(),um_admin_init_pages_select(),jQuery(document.body).on("click",".um-forms-field[data-log-object]",function(){var e=jQuery(this).data("log-object");jQuery(this).is(":checked")?jQuery(this).parents("label").siblings(".um-same-page-update-"+e).show():jQuery(this).parents("label").siblings(".um-same-page-update-"+e).hide()}),jQuery(document.body).on("click",".um-admin-form-same-page-update",function(){var t,a,i,s=jQuery(this).data("upgrade_cb");jQuery(this).prop("disabled",!0),um_add_same_page_log(s,wp.i18n.__("Upgrade Process Started...","ultimate-member")),"sync_metatable"===s?(t=0,a=500,jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_usermeta_fields",nonce:um_admin_scripts.nonce},success:function(e){i=1,um_add_same_page_log(s,wp.i18n.__("Getting metadata","ultimate-member")),jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_get_metadata",nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data.count?(um_add_same_page_log(s,wp.i18n.__("There are ","ultimate-member")+e.data.count+wp.i18n.__(" metadata rows...","ultimate-member")),um_add_same_page_log(s,wp.i18n.__("Start metadata upgrading...","ultimate-member")),t=Math.ceil(e.data.count/a),function a(){i<=t?jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_update_metadata_per_page",page:i,nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data?(um_add_same_page_log(s,e.data.message),i++,a()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}}):window.location=um_forms_data.successfully_redirect}()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}})},error:function(){um_same_page_something_wrong(s)}})):wp.hooks.doAction("um_same_page_upgrade",s)}),jQuery(".um-sortable-items-field").sortable({items:".um-sortable-item",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0,update:function(e,a){var t=[];jQuery(this).find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||t.push(jQuery(this).data("tab-id"))}),jQuery(this).siblings(".um-sortable-items-value").val(t.join(","))}}),jQuery(".um-multi-selects-list.um-sortable-multi-selects").sortable({items:".um-admin-drag-fld",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0}),jQuery('.um-multi-selects-list[data-field_id="_um_sorting_fields"] li').each(function(){"other"===jQuery(this).find(".um-field-wrapper:not(.um-custom-order-fields) select").val()?jQuery(this).find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery('.um-forms-line[data-field_type="md_sorting_fields"] .um-multi-selects-add-option').on("click",function(){var e=jQuery(this).siblings("ul.um-multi-selects-list"),a=e.hasClass("um-sortable-multi-selects"),t=(e.data("field_id"),0),i=(0").append(e.siblings(".um-hidden-multi-selects").clone()).html()),s='
  • ';a&&(s+='');let l="";jQuery.each(um_forms_data.md_sorting_data_types,function(e,a){l+='"}),s+=''+i+''+wp.i18n.__("Remove","ultimate-member")+'
  • ',e.append(s),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t).trigger("change"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][meta_key]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][label]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][data_type]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][order]")}),jQuery(document.body).on("change",'.um-multi-selects-list[data-field_id="_um_sorting_fields"] .um-field-wrapper:not(.um-custom-order-fields) select',function(){"other"===jQuery(this).val()?jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery(document.body).on("click",".um-multi-selects-option-line .um-select-delete",function(){jQuery(this).parents("li.um-multi-selects-option-line").remove()}),jQuery(document.body).on("click",".um-md-default-filters-option-line .um-select-delete",function(){jQuery(this).parents("li.um-md-default-filters-option-line").remove()}),jQuery(".um-multi-selects-add-option").on("click",function(){var e,a,t,i;jQuery(this).parents('.um-forms-line[data-field_type="md_sorting_fields"]').length||(a=(e=jQuery(this).siblings("ul.um-multi-selects-list")).hasClass("um-sortable-multi-selects"),e.data("field_id"),(t=0)',a&&(i+=''),i+=''+jQuery("
    ").append(e.siblings(".um-hidden-multi-selects").clone()).html()+''+wp.i18n.__("Remove","ultimate-member")+"",e.append(i),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t))});var t,e=-(new Date).getTimezoneOffset()/60,i=(jQuery('input[name="um-gmt-offset"]').val(e),jQuery(".um-admin-metabox").find(".um-slider").each(function(){var e=jQuery(this),a=parseInt(e.data("min")),t=parseInt(e.data("max")),a=[a=void 0!==jQuery("#"+e.data("field_name")+"_min").val()?jQuery("#"+e.data("field_name")+"_min").val():a,t=void 0!==jQuery("#"+e.data("field_name")+"_max").val()?jQuery("#"+e.data("field_name")+"_max").val():t];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),jQuery(".um-admin-metabox").find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}}).pickadate("picker").set("select",1e3*e.data("value"))}),jQuery(".um-admin-metabox").find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})}),!1);function s(e,a){var t,i="",s=e.siblings(".um-slider-range").data("placeholder-s"),l=e.siblings(".um-slider-range").data("placeholder-p"),a=a?(i=(a.values[0]===a.values[1]?s.replace("{value}",a.values[0]):l.replace("{min_range}",a.values[0]).replace("{max_range}",a.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=a.values[0],a.values[1]):(i=(e.slider("values",0)===e.slider("values",1)?s.replace("{value}",e.slider("values",0)):l.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(i),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(a)}function a(){jQuery(".um-forms-line").removeClass("um-forms-line-conditioned").each(function(){void 0===jQuery(this).data("conditional")||jQuery(this).hasClass("um-forms-line-conditioned")||(!function i(e){e.addClass("um-forms-line-conditioned");var a=e.data("conditional");var t=a[1];var s=a[2];var l=e.data("prefix");var n=!0;{var r,u;"="===t||"!="===t?-1===a[0].indexOf("||")&&void 0!==(u=jQuery("#"+l+"_"+a[0])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line"))):"~"===t?(m=a[0].split("|"),r=[],jQuery.each(m,function(e){r.push(jQuery("#"+l+"_"+m[e]))}),void 0!==r[0].parents(".um-forms-line").data("conditional")&&(n=i(r[0].parents(".um-forms-line")))):"><"===t&&void 0!==(u=jQuery("#"+l+"_"+a[0]+"_"+a[2])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line")))}var d=!1;{var m,o,c,p,f,_,g,h;if("="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?e.is(":checked"):!e.is(":checked"):Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s):"select"===t&&(d=Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?u.is(":checked"):!u.is(":checked"):Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s):"select"==g&&(d=Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s),d&&n);if("!="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?!e.is(":checked"):e.is(":checked"):e.val()!=s):"select"===t&&(d=e.val()!=s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?!u.is(":checked"):u.is(":checked"):u.val()!=s):"select"==g&&(d=u.val()!=s),d&&n);if("~"===t)return p=[],"sortable_items"===e.data("field_type")?(c=e.find(".um-sortable-items-value").data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.siblings(".um-sortable-items-field").find("li").addClass("um-hidden-item"),jQuery.each(p,function(e){f.siblings(".um-sortable-items-field").find('li[data-tab-id="'+p[e]+'"]').removeClass("um-hidden-item")}),_=[],f.siblings(".um-sortable-items-field").find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||_.push(jQuery(this).data("tab-id"))}),f.val(_.join(",")),f.siblings(".um-sortable-items-field").sortable("refresh"),d=!0):f.val(null)):(c=e.find(e.data("field_type")).data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.find("option").hide(),jQuery.each(p,function(e){f.find('option[value="'+p[e]+'"]').show()}),-1===p.indexOf(f.val())&&(f.val(p[0]),f.find("option").attr("selected",!1).prop("selected",!1),f.find('option[value="'+p[0]+'"]').attr("selected",!0).prop("selected",!0)),d=!0):(f.val(null),f.find("option").attr("selected",!1).prop("selected",!1))),d&&n;if("><"===t)return g=u.prop("tagName").toLowerCase(),(d="input"==g&&"checkbox"==(h=u.attr("type"))?u.is(":checked"):d)&&n}return!1}(jQuery(this))?jQuery(this).hide():(jQuery(this).show(),um_admin_init_users_select()))})}function y(e,a,t){return t.indexOf(e)===a}jQuery(document.body).on("change",".um-md-default-filters-option-line .um-field-wrapper select",function(){var t,e,a;i||(e=(t=jQuery(this)).val(),a=t.data("member_directory"),i=!0,wp.ajax.send("um_member_directory_default_filter_settings",{data:{key:e,directory_id:a,nonce:um_admin_scripts.nonce},success:function(e){var a=t.parents(".um-md-default-filters-option-line").find(".um-field-wrapper2");a.html(e.field_html),i=!1,a.find(".um-slider").each(function(){var e=jQuery(this),a=[parseInt(e.data("min")),parseInt(e.data("max"))];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}})}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})})},error:function(e){return!1}}))}),jQuery(".um-md-default-filters-add-option").on("click",function(){var e,a,t;i||((e=jQuery(this).siblings("ul.um-md-default-filters-list")).data("field_id"),(a=0)").append(e.siblings(".um-hidden-md-default-filters").clone()).html(),e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+'
  • '),e.find("li:last .um-hidden-md-default-filters").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-md-default-filters").attr("id",e.data("id_attr")+"-"+a),e.find("li:last .um-field-wrapper select").trigger("change"))}),jQuery(document.body).on("click",".um-text-delete",function(){jQuery(this).parents("li.um-multi-text-option-line").remove()}),jQuery(".um-multi-text-add-option").on("click",function(){var e=jQuery(this).siblings("ul.um-multi-text-list"),a=0,t=(0").append(e.siblings(".um-hidden-multi-text").clone()).html()),i=e.data("item_class");e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+"
  • "),e.find("li:last .um-hidden-multi-text").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-text").attr("id",e.data("id_attr")+"-"+a)}),jQuery(".um-media-upload").each(function(){var e=jQuery(this).find(".um-forms-field"),a=e.data("default");""!=e.val()&&e.val()!=a?(e.siblings(".um-set-image").hide(),e.siblings(".um-clear-image").show(),e.siblings(".icon_preview").show()):(e.val()==a&&e.siblings(".icon_preview").show(),e.siblings(".um-set-image").show(),e.siblings(".um-clear-image").hide())}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&(jQuery(".um-set-image").on("click",function(e){var a=jQuery(this);e.preventDefault(),t&&t.remove(),(t=wp.media({title:a.data("upload_frame"),button:{text:wp.i18n.__("Select","ultimate-member")},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();a.siblings(".icon_preview").attr("src",e.url).show(),a.siblings(".um-forms-field").val(e.url),a.siblings(".um-media-upload-data-id").val(e.id),a.siblings(".um-media-upload-data-width").val(e.width),a.siblings(".um-media-upload-data-height").val(e.height),a.siblings(".um-media-upload-data-thumbnail").val(e.thumbnail),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(e.url),a.siblings(".um-clear-image").show(),a.hide(),jQuery(document).trigger("um_media_upload_select",[a,e])}),t.open()}),jQuery(".icon_preview").on("click",function(e){jQuery(this).siblings(".um-set-image").trigger("click")}),jQuery(".um-clear-image").on("click",function(e){var a=jQuery(this);let t=a.siblings(".um-forms-field").data("default");void 0===t&&(t=""),a.siblings(".um-set-image").show(),a.hide(),a.siblings(".icon_preview").attr("src",t),""===t&&a.siblings(".icon_preview").hide(),a.siblings(".um-media-upload-data-id").val(""),a.siblings(".um-media-upload-data-width").val(""),a.siblings(".um-media-upload-data-height").val(""),a.siblings(".um-media-upload-data-thumbnail").val(""),a.siblings(".um-forms-field").val(t),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(t),jQuery(document).trigger("um_media_upload_clear",a)})),jQuery(document.body).on("change",".um-forms-field",function(){(0 Date: Thu, 28 Mar 2024 15:59:50 +0200 Subject: [PATCH 28/32] - reviewed #1476; --- includes/core/um-actions-account.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 878ad847..366bf0f5 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -553,7 +553,8 @@ add_action( 'um_after_user_account_updated', 'um_after_user_account_updated_perm */ function um_account_updated_notification( $user_id, $changed ) { // phpcs:disable WordPress.Security.NonceVerification - if ( 'password' !== $_POST['_um_account_tab'] || 1 !== absint( UM()->options()->get( 'changedpw_email_on' ) ) ) { + if ( 'password' !== $_POST['_um_account_tab'] || ! UM()->options()->get( 'changedpw_email_on' ) ) { + // Avoid email duplicates (account changed and password changed) on the password change tab. um_fetch_user( $user_id ); UM()->mail()->send( um_user( 'user_email' ), 'changedaccount_email' ); } From 3029b2581dee7cbd8e94c3f7ab62321493d084fe Mon Sep 17 00:00:00 2001 From: ashubawork Date: Mon, 1 Apr 2024 16:37:33 +0300 Subject: [PATCH 29/32] - fix space in username after reset password with SMTP --- includes/core/class-password.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/core/class-password.php b/includes/core/class-password.php index 3028456a..66a7bfcf 100644 --- a/includes/core/class-password.php +++ b/includes/core/class-password.php @@ -57,7 +57,7 @@ if ( ! class_exists( 'um\core\Password' ) ) { array( 'act' => 'reset_password', 'hash' => $reset_key, - 'login' => $user_data->user_login, + 'login' => rawurlencode( $user_data->user_login ), ), um_get_core_page( 'password-reset' ) ); From a4d20fe4fd423f3fba2c9a86013d189dda93b7d2 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 2 Apr 2024 17:28:54 +0300 Subject: [PATCH 30/32] - reviewed #1481; --- includes/core/class-account.php | 2 +- includes/core/class-builtin.php | 17 ++++++ includes/core/class-fields.php | 8 +++ includes/core/class-member-directory-meta.php | 11 +++- includes/core/class-member-directory.php | 52 ++++++++++++++++++- includes/core/class-profile.php | 7 +++ includes/core/um-actions-account.php | 9 +++- 7 files changed, 101 insertions(+), 5 deletions(-) diff --git a/includes/core/class-account.php b/includes/core/class-account.php index 1128a08e..65df44e9 100644 --- a/includes/core/class-account.php +++ b/includes/core/class-account.php @@ -576,7 +576,7 @@ if ( ! class_exists( 'um\core\Account' ) ) { case 'privacy': - $args = 'profile_privacy,profile_noindex,hide_in_members'; + $args = 'profile_privacy,profile_noindex,hide_in_members,um_show_last_login'; /** * UM hook * diff --git a/includes/core/class-builtin.php b/includes/core/class-builtin.php index 4939fbd2..cf3b7958 100644 --- a/includes/core/class-builtin.php +++ b/includes/core/class-builtin.php @@ -1336,6 +1336,23 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { 'required_opt' => array( 'members_page', true ), ), + 'um_show_last_login' => array( + 'title' => __( 'Show my last login?', 'ultimate-member' ), + 'metakey' => 'um_show_last_login', + 'type' => 'radio', + 'label' => __( 'Show my last login?', 'ultimate-member' ), + 'help' => __( 'Here you can hide last login field on profile page and card in member directory', 'ultimate-member' ), + 'required' => 0, + 'public' => 1, + 'editable' => true, + 'default' => 'yes', + 'options' => array( + 'no' => __( 'No', 'ultimate-member' ), + 'yes' => __( 'Yes', 'ultimate-member' ), + ), + 'account_only' => true, + ), + 'delete_account' => array( 'title' => __( 'Delete Account', 'ultimate-member' ), 'metakey' => 'delete_account', diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 19de34ab..209de055 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -4284,6 +4284,14 @@ if ( ! class_exists( 'um\core\Fields' ) ) { * @throws \Exception */ public function view_field( $key, $data, $rule = false ) { + if ( '_um_last_login' === $key ) { + $profile_id = um_user( 'ID' ); + $show_last_login = get_user_meta( $profile_id, 'um_show_last_login', true ); + if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) { + return ''; + } + } + $output = ''; // Get whole field data. diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 563d8bcc..560b79fe 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -504,13 +504,22 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { } } + $value = array_map( + function( $date ) { + return is_numeric( $date ) ? $date : strtotime( $date ); + }, + $value + ); + $from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset $to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59 // $join_alias is pre-escaped. $this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID"; + $join_alias_ll = $join_alias . '_show_las_login'; + $this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias_ll} ON {$join_alias_ll}.user_id = u.ID AND {$join_alias_ll}.um_key = 'um_show_last_login'"; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped. - $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = '_um_last_login' AND {$join_alias}.um_value BETWEEN %s AND %s )", $from_date, $to_date ); + $this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = '_um_last_login' AND {$join_alias}.um_value BETWEEN %s AND %s AND ( {$join_alias_ll}.um_value IS NULL OR {$join_alias_ll}.um_value != %s ) )", $from_date, $to_date, 'a:1:{i:0;s:2:"no";}' ); if ( ! $is_default ) { $this->custom_filters_in_query[ $field ] = $value; diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index c73f6382..b93dea1a 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -2067,6 +2067,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $from_date = (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ); // client time zone offset $to_date = (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59 $meta_query = array( + 'relation' => 'AND', array( 'key' => '_um_last_login', 'value' => array( gmdate( 'Y-m-d H:i:s', $from_date ), gmdate( 'Y-m-d H:i:s', $to_date ) ), @@ -2074,6 +2075,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { 'inclusive' => true, 'type' => 'DATETIME', ), + array( + 'relation' => 'OR', + array( + 'key' => 'um_show_last_login', + 'compare' => 'NOT EXISTS', + ), + array( + 'key' => 'um_show_last_login', + 'value' => 'a:1:{i:0;s:2:"no";}', + 'compare' => '!=', + ), + ), ); $this->custom_filters_in_query[ $field ] = $value; @@ -2344,9 +2357,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $offset = $gmt_offset; } - $from_date = (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ); // client time zone offset - $to_date = (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59 + $value = array_map( + function( $date ) { + return is_numeric( $date ) ? $date : strtotime( $date ); + }, + $value + ); + + $from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset + $to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59 + $meta_query = array( + 'relation' => 'AND', array( 'key' => '_um_last_login', 'value' => array( $from_date, $to_date ), @@ -2354,6 +2376,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { 'inclusive' => true, 'type' => 'DATETIME', ), + array( + 'relation' => 'OR', + array( + 'key' => 'um_show_last_login', + 'compare' => 'NOT EXISTS', + ), + array( + 'key' => 'um_show_last_login', + 'value' => 'a:1:{i:0;s:2:"no";}', + 'compare' => '!=', + ), + ), ); $this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) ); @@ -2559,6 +2593,13 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { continue; } + if ( '_um_last_login' === $key ) { + $show_last_login = get_user_meta( $user_id, 'um_show_last_login', true ); + if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) { + continue; + } + } + $value = um_filtered_value( $key ); if ( ! $value ) { @@ -2583,6 +2624,13 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { continue; } + if ( '_um_last_login' === $key ) { + $show_last_login = get_user_meta( $user_id, 'um_show_last_login', true ); + if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) { + continue; + } + } + $value = um_filtered_value( $key ); if ( ! $value ) { continue; diff --git a/includes/core/class-profile.php b/includes/core/class-profile.php index ca698a96..b469209e 100644 --- a/includes/core/class-profile.php +++ b/includes/core/class-profile.php @@ -418,6 +418,13 @@ if ( ! class_exists( 'um\core\Profile' ) ) { if ( ! empty( $array ) ) { foreach ( $array as $key ) { if ( $key ) { + if ( '_um_last_login' === $key ) { + $show_last_login = get_user_meta( um_user( 'ID' ), 'um_show_last_login', true ); + if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) { + continue; + } + } + $data = array(); if ( isset( UM()->builtin()->all_user_fields[ $key ] ) ) { $data = UM()->builtin()->all_user_fields[ $key ]; diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 366bf0f5..0a2d9bfa 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -330,7 +330,7 @@ function um_submit_account_details( $args ) { $v = sanitize_text_field( $v ); } elseif ( 'user_email' === $k ) { $v = sanitize_email( $v ); - } elseif ( 'hide_in_members' === $k ) { + } elseif ( 'hide_in_members' === $k || 'um_show_last_login' === $k ) { $v = array_map( 'sanitize_text_field', $v ); } @@ -351,6 +351,13 @@ function um_submit_account_details( $args ) { } } + if ( isset( $changes['um_show_last_login'] ) ) { + if ( 'yes' === $changes['um_show_last_login'] || array_intersect( array( 'yes' ), $changes['um_show_last_login'] ) ) { + delete_user_meta( $user_id, 'um_show_last_login' ); + unset( $changes['um_show_last_login'] ); + } + } + /** * UM hook * From 7e240edb6dea2f589cc732bb3afdf670e1fedcae Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 9 Apr 2024 13:55:39 +0300 Subject: [PATCH 31/32] - reviewed #1442; --- assets/css/admin/dashboard.css | 3 +- assets/css/admin/dashboard.min.css | 2 +- assets/css/admin/dashboard.sass | 3 +- assets/js/admin/forms.min.js | 2 +- changelog.txt | 15 ++++ includes/admin/templates/directory/search.php | 12 +-- includes/core/class-member-directory-meta.php | 46 ++++++----- includes/core/class-member-directory.php | 82 +++++++++++++++---- readme.txt | 24 +++++- ultimate-member.php | 2 +- 10 files changed, 139 insertions(+), 52 deletions(-) diff --git a/assets/css/admin/dashboard.css b/assets/css/admin/dashboard.css index d850aa2c..5c30772d 100644 --- a/assets/css/admin/dashboard.css +++ b/assets/css/admin/dashboard.css @@ -52,7 +52,8 @@ width: 100%; } #um-users-overview-table td { - width: 50%; + width: auto; + min-width: 120px; vertical-align: middle; padding: 0 0 0 5px; box-sizing: border-box; diff --git a/assets/css/admin/dashboard.min.css b/assets/css/admin/dashboard.min.css index e667635c..e1e4da47 100644 --- a/assets/css/admin/dashboard.min.css +++ b/assets/css/admin/dashboard.min.css @@ -1 +1 @@ -#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px}#um-users-overview-table{width:100%}#um-users-overview-table td{width:50%;vertical-align:middle;padding:0 0 0 5px;box-sizing:border-box}#um-users-overview-table td:first-child{padding:0 5px 0 0}#um-users-overview-table td>span{width:100%;direction:ltr;display:grid;grid-gap:6px;grid-template-columns:repeat(2,minmax(20px,auto));align-content:start;align-items:center;justify-content:start;justify-items:center}#um-users-overview-table td>span a{word-break:break-word}#um-users-overview-table td>span a.count{justify-self:end;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:18px} \ No newline at end of file +#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px}#um-users-overview-table{width:100%}#um-users-overview-table td{width:auto;min-width:120px;vertical-align:middle;padding:0 0 0 5px;box-sizing:border-box}#um-users-overview-table td:first-child{padding:0 5px 0 0}#um-users-overview-table td>span{width:100%;direction:ltr;display:grid;grid-gap:6px;grid-template-columns:repeat(2,minmax(20px,auto));align-content:start;align-items:center;justify-content:start;justify-items:center}#um-users-overview-table td>span a{word-break:break-word}#um-users-overview-table td>span a.count{justify-self:end;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:18px} \ No newline at end of file diff --git a/assets/css/admin/dashboard.sass b/assets/css/admin/dashboard.sass index 57bbcde8..dc8999d2 100644 --- a/assets/css/admin/dashboard.sass +++ b/assets/css/admin/dashboard.sass @@ -56,7 +56,8 @@ #um-users-overview-table width: 100% td - width: 50% + width: auto + min-width: 120px vertical-align: middle padding: 0 0 0 5px box-sizing: border-box diff --git a/assets/js/admin/forms.min.js b/assets/js/admin/forms.min.js index bda056ab..8fadc9e8 100644 --- a/assets/js/admin/forms.min.js +++ b/assets/js/admin/forms.min.js @@ -1 +1 @@ -function um_admin_init_users_select(){function e(a){var t;if(!a.id)return a.text;if(void 0!==a.img)t=jQuery(' '+a.text+"");else{let e;t=(e=void 0!==a.element&&void 0!==a.element.attributes["data-img"]?a.element.attributes["data-img"].value:e)?jQuery(' '+a.text+""):jQuery(""+a.text+"")}return t}var a,t;jQuery(".um-user-select-field:visible:not(.um-select2-inited)").length&&(a={ajax:{url:wp.ajax.settings.url,dataType:"json",delay:250,data:function(e){var a={action:"um_get_users",search:e.term,page:e.page||1,nonce:um_admin_scripts.nonce};return jQuery.each(jQuery(this)[0].attributes,function(){var e;this.specified&&-1!==this.name.indexOf("data-ajax-args-")&&(e=this.name.replace("data-ajax-args-","").trim(),a[e]=this.value)}),a},processResults:function(e,a){a.page=a.page||1;var t=[];return e.data.users&&jQuery.each(e.data.users,function(e,a){void 0!==a.img?t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")",img:a.img}):t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")"})}),{results:t,pagination:{more:20*a.page")}function um_same_page_wrong_ajax(e){um_add_same_page_log(e,wp.i18n.__("Wrong AJAX response...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}function um_same_page_something_wrong(e){um_add_same_page_log(e,wp.i18n.__("Something went wrong with AJAX request...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}jQuery(document).ready(function(){um_admin_init_users_select(),um_admin_init_pages_select(),jQuery(document.body).on("click",".um-forms-field[data-log-object]",function(){var e=jQuery(this).data("log-object");jQuery(this).is(":checked")?jQuery(this).parents("label").siblings(".um-same-page-update-"+e).show():jQuery(this).parents("label").siblings(".um-same-page-update-"+e).hide()}),jQuery(document.body).on("click",".um-admin-form-same-page-update",function(){var t,a,i,s=jQuery(this).data("upgrade_cb");jQuery(this).prop("disabled",!0),um_add_same_page_log(s,wp.i18n.__("Upgrade Process Started...","ultimate-member")),"sync_metatable"===s?(t=0,a=500,jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_usermeta_fields",nonce:um_admin_scripts.nonce},success:function(e){i=1,um_add_same_page_log(s,wp.i18n.__("Getting metadata","ultimate-member")),jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_get_metadata",nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data.count?(um_add_same_page_log(s,wp.i18n.__("There are ","ultimate-member")+e.data.count+wp.i18n.__(" metadata rows...","ultimate-member")),um_add_same_page_log(s,wp.i18n.__("Start metadata upgrading...","ultimate-member")),t=Math.ceil(e.data.count/a),function a(){i<=t?jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_update_metadata_per_page",page:i,nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data?(um_add_same_page_log(s,e.data.message),i++,a()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}}):window.location=um_forms_data.successfully_redirect}()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}})},error:function(){um_same_page_something_wrong(s)}})):wp.hooks.doAction("um_same_page_upgrade",s)}),jQuery(".um-sortable-items-field").sortable({items:".um-sortable-item",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0,update:function(e,a){var t=[];jQuery(this).find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||t.push(jQuery(this).data("tab-id"))}),jQuery(this).siblings(".um-sortable-items-value").val(t.join(","))}}),jQuery(".um-multi-selects-list.um-sortable-multi-selects").sortable({items:".um-admin-drag-fld",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0}),jQuery('.um-multi-selects-list[data-field_id="_um_sorting_fields"] li').each(function(){"other"===jQuery(this).find(".um-field-wrapper:not(.um-custom-order-fields) select").val()?jQuery(this).find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery('.um-forms-line[data-field_type="md_sorting_fields"] .um-multi-selects-add-option').on("click",function(){var e=jQuery(this).siblings("ul.um-multi-selects-list"),a=e.hasClass("um-sortable-multi-selects"),t=(e.data("field_id"),0),i=(0").append(e.siblings(".um-hidden-multi-selects").clone()).html()),s='
  • ';a&&(s+='');let l="";jQuery.each(um_forms_data.md_sorting_data_types,function(e,a){l+='"}),s+=''+i+''+wp.i18n.__("Remove","ultimate-member")+'
  • ',e.append(s),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t).trigger("change"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][meta_key]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][label]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][data_type]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][order]")}),jQuery(document.body).on("change",'.um-multi-selects-list[data-field_id="_um_sorting_fields"] .um-field-wrapper:not(.um-custom-order-fields) select',function(){"other"===jQuery(this).val()?jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery(document.body).on("click",".um-multi-selects-option-line .um-select-delete",function(){jQuery(this).parents("li.um-multi-selects-option-line").remove()}),jQuery(document.body).on("click",".um-md-default-filters-option-line .um-select-delete",function(){jQuery(this).parents("li.um-md-default-filters-option-line").remove()}),jQuery(".um-multi-selects-add-option").on("click",function(){var e,a,t,i;jQuery(this).parents('.um-forms-line[data-field_type="md_sorting_fields"]').length||(a=(e=jQuery(this).siblings("ul.um-multi-selects-list")).hasClass("um-sortable-multi-selects"),e.data("field_id"),(t=0)',a&&(i+=''),i+=''+jQuery("
    ").append(e.siblings(".um-hidden-multi-selects").clone()).html()+''+wp.i18n.__("Remove","ultimate-member")+"",e.append(i),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t))});var t,e=-(new Date).getTimezoneOffset()/60,i=(jQuery('input[name="um-gmt-offset"]').val(e),jQuery(".um-admin-metabox").find(".um-slider").each(function(){var e=jQuery(this),a=parseInt(e.data("min")),t=parseInt(e.data("max")),a=[a=void 0!==jQuery("#"+e.data("field_name")+"_min").val()?jQuery("#"+e.data("field_name")+"_min").val():a,t=void 0!==jQuery("#"+e.data("field_name")+"_max").val()?jQuery("#"+e.data("field_name")+"_max").val():t];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),jQuery(".um-admin-metabox").find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}}).pickadate("picker").set("select",1e3*e.data("value"))}),jQuery(".um-admin-metabox").find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})}),!1);function s(e,a){var t,i="",s=e.siblings(".um-slider-range").data("placeholder-s"),l=e.siblings(".um-slider-range").data("placeholder-p"),a=a?(i=(a.values[0]===a.values[1]?s.replace("{value}",a.values[0]):l.replace("{min_range}",a.values[0]).replace("{max_range}",a.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=a.values[0],a.values[1]):(i=(e.slider("values",0)===e.slider("values",1)?s.replace("{value}",e.slider("values",0)):l.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(i),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(a)}function a(){jQuery(".um-forms-line").removeClass("um-forms-line-conditioned").each(function(){void 0===jQuery(this).data("conditional")||jQuery(this).hasClass("um-forms-line-conditioned")||(!function i(e){e.addClass("um-forms-line-conditioned");var a=e.data("conditional");var t=a[1];var s=a[2];var l=e.data("prefix");var n=!0;{var r,u;"="===t||"!="===t?-1===a[0].indexOf("||")&&void 0!==(u=jQuery("#"+l+"_"+a[0])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line"))):"~"===t?(m=a[0].split("|"),r=[],jQuery.each(m,function(e){r.push(jQuery("#"+l+"_"+m[e]))}),void 0!==r[0].parents(".um-forms-line").data("conditional")&&(n=i(r[0].parents(".um-forms-line")))):"><"===t&&void 0!==(u=jQuery("#"+l+"_"+a[0]+"_"+a[2])).parents(".um-forms-line").data("conditional")&&(n=i(u.parents(".um-forms-line")))}var d=!1;{var m,o,c,p,f,_,g,h;if("="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?e.is(":checked"):!e.is(":checked"):Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s):"select"===t&&(d=Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?u.is(":checked"):!u.is(":checked"):Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s):"select"==g&&(d=Array.isArray(s)?-1!==s.indexOf(u.val()):u.val()==s),d&&n);if("!="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?!e.is(":checked"):e.is(":checked"):e.val()!=s):"select"===t&&(d=e.val()!=s),d&&n&&(o=!0)}),o):("input"==(g=u.prop("tagName").toLowerCase())?(h=u.attr("type"),d="checkbox"==h?"1"==s?!u.is(":checked"):u.is(":checked"):u.val()!=s):"select"==g&&(d=u.val()!=s),d&&n);if("~"===t)return p=[],"sortable_items"===e.data("field_type")?(c=e.find(".um-sortable-items-value").data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.siblings(".um-sortable-items-field").find("li").addClass("um-hidden-item"),jQuery.each(p,function(e){f.siblings(".um-sortable-items-field").find('li[data-tab-id="'+p[e]+'"]').removeClass("um-hidden-item")}),_=[],f.siblings(".um-sortable-items-field").find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||_.push(jQuery(this).data("tab-id"))}),f.val(_.join(",")),f.siblings(".um-sortable-items-field").sortable("refresh"),d=!0):f.val(null)):(c=e.find(e.data("field_type")).data("field_id"),jQuery.each(r,function(e){var e=r[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.find("option").hide(),jQuery.each(p,function(e){f.find('option[value="'+p[e]+'"]').show()}),-1===p.indexOf(f.val())&&(f.val(p[0]),f.find("option").attr("selected",!1).prop("selected",!1),f.find('option[value="'+p[0]+'"]').attr("selected",!0).prop("selected",!0)),d=!0):(f.val(null),f.find("option").attr("selected",!1).prop("selected",!1))),d&&n;if("><"===t)return g=u.prop("tagName").toLowerCase(),(d="input"==g&&"checkbox"==(h=u.attr("type"))?u.is(":checked"):d)&&n}return!1}(jQuery(this))?jQuery(this).hide():(jQuery(this).show(),um_admin_init_users_select()))})}function y(e,a,t){return t.indexOf(e)===a}jQuery(document.body).on("change",".um-md-default-filters-option-line .um-field-wrapper select",function(){var t,e,a;i||(e=(t=jQuery(this)).val(),a=t.data("member_directory"),i=!0,wp.ajax.send("um_member_directory_default_filter_settings",{data:{key:e,directory_id:a,nonce:um_admin_scripts.nonce},success:function(e){var a=t.parents(".um-md-default-filters-option-line").find(".um-field-wrapper2");a.html(e.field_html),i=!1,a.find(".um-slider").each(function(){var e=jQuery(this),a=[parseInt(e.data("min")),parseInt(e.data("max"))];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}})}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})})},error:function(e){return!1}}))}),jQuery(".um-md-default-filters-add-option").on("click",function(){var e,a,t;i||((e=jQuery(this).siblings("ul.um-md-default-filters-list")).data("field_id"),(a=0)").append(e.siblings(".um-hidden-md-default-filters").clone()).html(),e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+'
  • '),e.find("li:last .um-hidden-md-default-filters").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-md-default-filters").attr("id",e.data("id_attr")+"-"+a),e.find("li:last .um-field-wrapper select").trigger("change"))}),jQuery(document.body).on("click",".um-text-delete",function(){jQuery(this).parents("li.um-multi-text-option-line").remove()}),jQuery(".um-multi-text-add-option").on("click",function(){var e=jQuery(this).siblings("ul.um-multi-text-list"),a=0,t=(0").append(e.siblings(".um-hidden-multi-text").clone()).html()),i=e.data("item_class");e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+"
  • "),e.find("li:last .um-hidden-multi-text").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-text").attr("id",e.data("id_attr")+"-"+a)}),jQuery(".um-media-upload").each(function(){var e=jQuery(this).find(".um-forms-field"),a=e.data("default");""!=e.val()&&e.val()!=a?(e.siblings(".um-set-image").hide(),e.siblings(".um-clear-image").show(),e.siblings(".icon_preview").show()):(e.val()==a&&e.siblings(".icon_preview").show(),e.siblings(".um-set-image").show(),e.siblings(".um-clear-image").hide())}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&(jQuery(".um-set-image").on("click",function(e){var a=jQuery(this);e.preventDefault(),t&&t.remove(),(t=wp.media({title:a.data("upload_frame"),button:{text:wp.i18n.__("Select","ultimate-member")},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();a.siblings(".icon_preview").attr("src",e.url).show(),a.siblings(".um-forms-field").val(e.url),a.siblings(".um-media-upload-data-id").val(e.id),a.siblings(".um-media-upload-data-width").val(e.width),a.siblings(".um-media-upload-data-height").val(e.height),a.siblings(".um-media-upload-data-thumbnail").val(e.thumbnail),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(e.url),a.siblings(".um-clear-image").show(),a.hide(),jQuery(document).trigger("um_media_upload_select",[a,e])}),t.open()}),jQuery(".icon_preview").on("click",function(e){jQuery(this).siblings(".um-set-image").trigger("click")}),jQuery(".um-clear-image").on("click",function(e){var a=jQuery(this);let t=a.siblings(".um-forms-field").data("default");void 0===t&&(t=""),a.siblings(".um-set-image").show(),a.hide(),a.siblings(".icon_preview").attr("src",t),""===t&&a.siblings(".icon_preview").hide(),a.siblings(".um-media-upload-data-id").val(""),a.siblings(".um-media-upload-data-width").val(""),a.siblings(".um-media-upload-data-height").val(""),a.siblings(".um-media-upload-data-thumbnail").val(""),a.siblings(".um-forms-field").val(t),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(t),jQuery(document).trigger("um_media_upload_clear",a)})),jQuery(document.body).on("change",".um-forms-field",function(){(0 '+a.text+"");else{let e;t=(e=void 0!==a.element&&void 0!==a.element.attributes["data-img"]?a.element.attributes["data-img"].value:e)?jQuery(' '+a.text+""):jQuery(""+a.text+"")}return t}var a,t;jQuery(".um-user-select-field:visible:not(.um-select2-inited)").length&&(a={ajax:{url:wp.ajax.settings.url,dataType:"json",delay:250,data:function(e){var a={action:"um_get_users",search:e.term,page:e.page||1,nonce:um_admin_scripts.nonce};return jQuery.each(jQuery(this)[0].attributes,function(){var e;this.specified&&-1!==this.name.indexOf("data-ajax-args-")&&(e=this.name.replace("data-ajax-args-","").trim(),a[e]=this.value)}),a},processResults:function(e,a){a.page=a.page||1;var t=[];return e.data.users&&jQuery.each(e.data.users,function(e,a){void 0!==a.img?t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")",img:a.img}):t.push({id:a.ID,text:a.user_login+" (#"+a.ID+")"})}),{results:t,pagination:{more:20*a.page")}function um_same_page_wrong_ajax(e){um_add_same_page_log(e,wp.i18n.__("Wrong AJAX response...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}function um_same_page_something_wrong(e){um_add_same_page_log(e,wp.i18n.__("Something went wrong with AJAX request...","ultimate-member")),um_add_same_page_log(e,wp.i18n.__("Your upgrade was crashed, please contact with support","ultimate-member"))}jQuery(document).ready(function(){um_admin_init_users_select(),um_admin_init_pages_select(),jQuery(document.body).on("click",".um-forms-field[data-log-object]",function(){var e=jQuery(this).data("log-object");jQuery(this).is(":checked")?jQuery(this).parents("label").siblings(".um-same-page-update-"+e).show():jQuery(this).parents("label").siblings(".um-same-page-update-"+e).hide()}),jQuery(document.body).on("click",".um-admin-form-same-page-update",function(){var t,a,i,s=jQuery(this).data("upgrade_cb");jQuery(this).prop("disabled",!0),um_add_same_page_log(s,wp.i18n.__("Upgrade Process Started...","ultimate-member")),"sync_metatable"===s?(t=0,a=500,jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_usermeta_fields",nonce:um_admin_scripts.nonce},success:function(e){i=1,um_add_same_page_log(s,wp.i18n.__("Getting metadata","ultimate-member")),jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_get_metadata",nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data.count?(um_add_same_page_log(s,wp.i18n.__("There are ","ultimate-member")+e.data.count+wp.i18n.__(" metadata rows...","ultimate-member")),um_add_same_page_log(s,wp.i18n.__("Start metadata upgrading...","ultimate-member")),t=Math.ceil(e.data.count/a),function a(){i<=t?jQuery.ajax({url:wp.ajax.settings.url,type:"POST",dataType:"json",data:{action:"um_same_page_update",cb_func:"um_update_metadata_per_page",page:i,nonce:um_admin_scripts.nonce},success:function(e){void 0!==e.data?(um_add_same_page_log(s,e.data.message),i++,a()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}}):window.location=um_forms_data.successfully_redirect}()):um_same_page_wrong_ajax(s)},error:function(){um_same_page_something_wrong(s)}})},error:function(){um_same_page_something_wrong(s)}})):wp.hooks.doAction("um_same_page_upgrade",s)}),jQuery(".um-sortable-items-field").sortable({items:".um-sortable-item",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0,update:function(e,a){var t=[];jQuery(this).find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||t.push(jQuery(this).data("tab-id"))}),jQuery(this).siblings(".um-sortable-items-value").val(t.join(","))}}),jQuery(".um-multi-selects-list.um-sortable-multi-selects").sortable({items:".um-admin-drag-fld",connectWith:".um-admin-drag-col,.um-admin-drag-group",forcePlaceholderSize:!0}),jQuery('.um-multi-selects-list[data-field_id="_um_sorting_fields"] li').each(function(){"other"===jQuery(this).find(".um-field-wrapper:not(.um-custom-order-fields) select").val()?jQuery(this).find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery('.um-forms-line[data-field_type="md_sorting_fields"] .um-multi-selects-add-option').on("click",function(){var e=jQuery(this).siblings("ul.um-multi-selects-list"),a=e.hasClass("um-sortable-multi-selects"),t=(e.data("field_id"),0),i=(0").append(e.siblings(".um-hidden-multi-selects").clone()).html()),s='
  • ';a&&(s+='');let l="";jQuery.each(um_forms_data.md_sorting_data_types,function(e,a){l+='"}),s+=''+i+''+wp.i18n.__("Remove","ultimate-member")+'
  • ',e.append(s),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t).trigger("change"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][meta_key]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][label]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][data_type]"),jQuery("#"+e.data("id_attr")+"-"+t).parents("li").find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr("name","um_metadata[_um_sorting_fields][other_data]["+t+"][order]")}),jQuery(document.body).on("change",'.um-multi-selects-list[data-field_id="_um_sorting_fields"] .um-field-wrapper:not(.um-custom-order-fields) select',function(){"other"===jQuery(this).val()?jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").show():jQuery(this).parents("li").find(".um-field-wrapper.um-custom-order-fields").hide()}),jQuery(document.body).on("click",".um-multi-selects-option-line .um-select-delete",function(){jQuery(this).parents("li.um-multi-selects-option-line").remove()}),jQuery(document.body).on("click",".um-md-default-filters-option-line .um-select-delete",function(){jQuery(this).parents("li.um-md-default-filters-option-line").remove()}),jQuery(".um-multi-selects-add-option").on("click",function(){var e,a,t,i;jQuery(this).parents('.um-forms-line[data-field_type="md_sorting_fields"]').length||(a=(e=jQuery(this).siblings("ul.um-multi-selects-list")).hasClass("um-sortable-multi-selects"),e.data("field_id"),(t=0)',a&&(i+=''),i+=''+jQuery("
    ").append(e.siblings(".um-hidden-multi-selects").clone()).html()+''+wp.i18n.__("Remove","ultimate-member")+"",e.append(i),e.find("li:last .um-hidden-multi-selects").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-selects").attr("id",e.data("id_attr")+"-"+t))}),jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_exclude_fields][]"]').on("click",function(){jQuery('.um-multi-selects-list[data-field_id="_um_search_include_fields"] li.um-multi-selects-option-line').remove()}),jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_include_fields][]"]').on("click",function(){jQuery('.um-multi-selects-list[data-field_id="_um_search_exclude_fields"] li.um-multi-selects-option-line').remove()});var t,e=-(new Date).getTimezoneOffset()/60,i=(jQuery('input[name="um-gmt-offset"]').val(e),jQuery(".um-admin-metabox").find(".um-slider").each(function(){var e=jQuery(this),a=parseInt(e.data("min")),t=parseInt(e.data("max")),a=[a=void 0!==jQuery("#"+e.data("field_name")+"_min").val()?jQuery("#"+e.data("field_name")+"_min").val():a,t=void 0!==jQuery("#"+e.data("field_name")+"_max").val()?jQuery("#"+e.data("field_name")+"_max").val():t];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),jQuery(".um-admin-metabox").find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}}).pickadate("picker").set("select",1e3*e.data("value"))}),jQuery(".um-admin-metabox").find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})}),!1);function s(e,a){var t,i="",s=e.siblings(".um-slider-range").data("placeholder-s"),l=e.siblings(".um-slider-range").data("placeholder-p"),a=a?(i=(a.values[0]===a.values[1]?s.replace("{value}",a.values[0]):l.replace("{min_range}",a.values[0]).replace("{max_range}",a.values[1])).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=a.values[0],a.values[1]):(i=(e.slider("values",0)===e.slider("values",1)?s.replace("{value}",e.slider("values",0)):l.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1))).replace("{field_label}",e.siblings(".um-slider-range").data("label")),t=e.slider("values",0),e.slider("values",1));e.siblings(".um-slider-range").html(i),e.siblings(".um_range_min").val(t),e.siblings(".um_range_max").val(a)}function a(){jQuery(".um-forms-line").removeClass("um-forms-line-conditioned").each(function(){void 0===jQuery(this).data("conditional")||jQuery(this).hasClass("um-forms-line-conditioned")||(!function i(e){e.addClass("um-forms-line-conditioned");var a=e.data("conditional");var t=a[1];var s=a[2];var l=e.data("prefix");var n=!0;{var u,r;"="===t||"!="===t?-1===a[0].indexOf("||")&&void 0!==(r=jQuery("#"+l+"_"+a[0])).parents(".um-forms-line").data("conditional")&&(n=i(r.parents(".um-forms-line"))):"~"===t?(m=a[0].split("|"),u=[],jQuery.each(m,function(e){u.push(jQuery("#"+l+"_"+m[e]))}),void 0!==u[0].parents(".um-forms-line").data("conditional")&&(n=i(u[0].parents(".um-forms-line")))):"><"===t&&void 0!==(r=jQuery("#"+l+"_"+a[0]+"_"+a[2])).parents(".um-forms-line").data("conditional")&&(n=i(r.parents(".um-forms-line")))}var d=!1;{var m,o,c,p,f,_,h,g;if("="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?e.is(":checked"):!e.is(":checked"):Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s):"select"===t&&(d=Array.isArray(s)?-1!==s.indexOf(e.val()):e.val()==s),d&&n&&(o=!0)}),o):("input"==(h=r.prop("tagName").toLowerCase())?(g=r.attr("type"),d="checkbox"==g?"1"==s?r.is(":checked"):!r.is(":checked"):Array.isArray(s)?-1!==s.indexOf(r.val()):r.val()==s):"select"==h&&(d=Array.isArray(s)?-1!==s.indexOf(r.val()):r.val()==s),d&&n);if("!="===t)return-1!==a[0].indexOf("||")?(m=a[0].split("||"),o=!1,jQuery.each(m,function(e){var a,e=jQuery("#"+l+"_"+m[e]),t=(n=!(d=!1),void 0!==e.parents(".um-forms-line").data("conditional")&&(n=i(e.parents(".um-forms-line"))),e.prop("tagName").toLowerCase());"input"===t?(a=e.attr("type"),d="checkbox"===a?"1"==s?!e.is(":checked"):e.is(":checked"):e.val()!=s):"select"===t&&(d=e.val()!=s),d&&n&&(o=!0)}),o):("input"==(h=r.prop("tagName").toLowerCase())?(g=r.attr("type"),d="checkbox"==g?"1"==s?!r.is(":checked"):r.is(":checked"):r.val()!=s):"select"==h&&(d=r.val()!=s),d&&n);if("~"===t)return p=[],"sortable_items"===e.data("field_type")?(c=e.find(".um-sortable-items-value").data("field_id"),jQuery.each(u,function(e){var e=u[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.siblings(".um-sortable-items-field").find("li").addClass("um-hidden-item"),jQuery.each(p,function(e){f.siblings(".um-sortable-items-field").find('li[data-tab-id="'+p[e]+'"]').removeClass("um-hidden-item")}),_=[],f.siblings(".um-sortable-items-field").find("li").each(function(){jQuery(this).hasClass("um-hidden-item")||_.push(jQuery(this).data("tab-id"))}),f.val(_.join(",")),f.siblings(".um-sortable-items-field").sortable("refresh"),d=!0):f.val(null)):(c=e.find(e.data("field_type")).data("field_id"),jQuery.each(u,function(e){var e=u[e],a=e.prop("tagName").toLowerCase();"input"===a?"checkbox"===e.attr("type")&&"1"==s&&e.is(":checked")&&p.push(e.data("fill_"+c)):"select"==a&&!s&&e.val()&&(p=(p=p.concat(e.val())).filter(y))}),f=jQuery('[data-field_id="'+c+'"]'),p.length?(f.find("option").hide(),jQuery.each(p,function(e){f.find('option[value="'+p[e]+'"]').show()}),-1===p.indexOf(f.val())&&(f.val(p[0]),f.find("option").attr("selected",!1).prop("selected",!1),f.find('option[value="'+p[0]+'"]').attr("selected",!0).prop("selected",!0)),d=!0):(f.val(null),f.find("option").attr("selected",!1).prop("selected",!1))),d&&n;if("><"===t)return h=r.prop("tagName").toLowerCase(),(d="input"==h&&"checkbox"==(g=r.attr("type"))?r.is(":checked"):d)&&n}return!1}(jQuery(this))?jQuery(this).hide():(jQuery(this).show(),um_admin_init_users_select()))})}function y(e,a,t){return t.indexOf(e)===a}jQuery(document.body).on("change",".um-md-default-filters-option-line .um-field-wrapper select",function(){var t,e,a;i||(e=(t=jQuery(this)).val(),a=t.data("member_directory"),i=!0,wp.ajax.send("um_member_directory_default_filter_settings",{data:{key:e,directory_id:a,nonce:um_admin_scripts.nonce},success:function(e){var a=t.parents(".um-md-default-filters-option-line").find(".um-field-wrapper2");a.html(e.field_html),i=!1,a.find(".um-slider").each(function(){var e=jQuery(this),a=[parseInt(e.data("min")),parseInt(e.data("max"))];e.slider({range:!0,min:parseInt(e.data("min")),max:parseInt(e.data("max")),values:a,create:function(e,a){},step:1,slide:function(e,a){s(jQuery(this),a)},stop:function(e,a){}}),s(e)}),a.find(".um-datepicker-filter").each(function(){var e=jQuery(this),a=new Date(1e3*e.data("date_min")),t=new Date(1e3*e.data("date_max"));e.pickadate({selectYears:!0,min:a,max:t,formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){e.blur(),e.siblings(".picker").find(".picker__button--close").addClass("button")},onClose:function(){e.blur()},onSet:function(e){}})}),a.find(".um-timepicker-filter").each(function(){var e=jQuery(this),a=e.data("min"),t=e.data("max"),a=a.split(":"),t=t.split(":");e.pickatime({format:e.data("format"),interval:parseInt(e.data("intervals")),min:[a[0],a[1]],max:[t[0],t[1]],formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){e.blur()},onClose:function(){e.blur()},onSet:function(e){}})})},error:function(e){return!1}}))}),jQuery(".um-md-default-filters-add-option").on("click",function(){var e,a,t;i||((e=jQuery(this).siblings("ul.um-md-default-filters-list")).data("field_id"),(a=0)").append(e.siblings(".um-hidden-md-default-filters").clone()).html(),e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+'
  • '),e.find("li:last .um-hidden-md-default-filters").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-md-default-filters").attr("id",e.data("id_attr")+"-"+a),e.find("li:last .um-field-wrapper select").trigger("change"))}),jQuery(document.body).on("click",".um-text-delete",function(){jQuery(this).parents("li.um-multi-text-option-line").remove()}),jQuery(".um-multi-text-add-option").on("click",function(){var e=jQuery(this).siblings("ul.um-multi-text-list"),a=0,t=(0").append(e.siblings(".um-hidden-multi-text").clone()).html()),i=e.data("item_class");e.append('
  • '+t+''+wp.i18n.__("Remove","ultimate-member")+"
  • "),e.find("li:last .um-hidden-multi-text").attr("name",jQuery(this).data("name")).addClass("um-forms-field um-long-field").removeClass("um-hidden-multi-text").attr("id",e.data("id_attr")+"-"+a)}),jQuery(".um-media-upload").each(function(){var e=jQuery(this).find(".um-forms-field"),a=e.data("default");""!=e.val()&&e.val()!=a?(e.siblings(".um-set-image").hide(),e.siblings(".um-clear-image").show(),e.siblings(".icon_preview").show()):(e.val()==a&&e.siblings(".icon_preview").show(),e.siblings(".um-set-image").show(),e.siblings(".um-clear-image").hide())}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&(jQuery(".um-set-image").on("click",function(e){var a=jQuery(this);e.preventDefault(),t&&t.remove(),(t=wp.media({title:a.data("upload_frame"),button:{text:wp.i18n.__("Select","ultimate-member")},multiple:!1})).on("select",function(){var e=t.state().get("selection").first().toJSON();a.siblings(".icon_preview").attr("src",e.url).show(),a.siblings(".um-forms-field").val(e.url),a.siblings(".um-media-upload-data-id").val(e.id),a.siblings(".um-media-upload-data-width").val(e.width),a.siblings(".um-media-upload-data-height").val(e.height),a.siblings(".um-media-upload-data-thumbnail").val(e.thumbnail),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(e.url),a.siblings(".um-clear-image").show(),a.hide(),jQuery(document).trigger("um_media_upload_select",[a,e])}),t.open()}),jQuery(".icon_preview").on("click",function(e){jQuery(this).siblings(".um-set-image").trigger("click")}),jQuery(".um-clear-image").on("click",function(e){var a=jQuery(this);let t=a.siblings(".um-forms-field").data("default");void 0===t&&(t=""),a.siblings(".um-set-image").show(),a.hide(),a.siblings(".icon_preview").attr("src",t),""===t&&a.siblings(".icon_preview").hide(),a.siblings(".um-media-upload-data-id").val(""),a.siblings(".um-media-upload-data-width").val(""),a.siblings(".um-media-upload-data-height").val(""),a.siblings(".um-media-upload-data-thumbnail").val(""),a.siblings(".um-forms-field").val(t),a.siblings(".um-media-upload-data-url").trigger("change"),a.siblings(".um-media-upload-url").val(t),jQuery(document).trigger("um_media_upload_clear",a)})),jQuery(document.body).on("change",".um-forms-field",function(){(0 Privacy setting + - Added: Exclude and Include fields for member directory searching + +* Bugfixes: + + - Fixed: URL attributes escaping (CVE-2024-2765) + - Fixed: wp-admin Ultimate Member > Dashboard layouts + - Fixed: Required fields labels + - Fixed: Change password and update account email notifications duplicates + - Fixed: Clear media JS in wp-admin settings + = 2.8.4: March 6, 2024 = * Enhancements: diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 0e73947c..dce4221d 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -43,11 +43,11 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true array( 'id' => '_um_search_exclude_fields', 'type' => 'multi_selects', - 'label' => __( 'Choose fields to exclude from search', 'ultimate-member' ), + 'label' => __( 'Exclude fields from search', 'ultimate-member' ), 'value' => $_um_search_exclude_fields, 'conditional' => array( '_um_search', '=', 1 ), - 'options' => UM()->member_directory()->filter_fields, - 'add_text' => __( 'Add New Custom Field to Exclude', 'ultimate-member' ), + 'options' => UM()->member_directory()->searching_fields, + 'add_text' => __( 'Add New', 'ultimate-member' ), 'show_default_number' => 0, 'sorting' => true, 'tooltip' => __( 'Choose fields to exclude them from search. This option will delete all included fields.', 'ultimate-member' ), @@ -55,11 +55,11 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true array( 'id' => '_um_search_include_fields', 'type' => 'multi_selects', - 'label' => __( 'Choose fields to only include in the search', 'ultimate-member' ), + 'label' => __( 'Fields to search by', 'ultimate-member' ), 'value' => $_um_search_include_fields, 'conditional' => array( '_um_search', '=', 1 ), - 'options' => UM()->member_directory()->filter_fields, - 'add_text' => __( 'Add New Custom Field to Include', 'ultimate-member' ), + 'options' => UM()->member_directory()->searching_fields, + 'add_text' => __( 'Add New', 'ultimate-member' ), 'show_default_number' => 0, 'sorting' => true, 'tooltip' => __( 'Choose fields to only include them in the search. This option will delete all excluded fields.', 'ultimate-member' ), diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index 3b2f7b57..c3bc651f 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -706,13 +706,29 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { // phpcs:enable WordPress.Security.NonceVerification -- verified via `UM()->check_ajax_nonce();`. if ( ! empty( $search_line ) ) { $searches = array(); - foreach ( $this->core_search_fields as $field ) { - $field = esc_sql( $field ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $field is pre-escaped. - $searches[] = $wpdb->prepare( "u.{$field} LIKE %s", '%' . $wpdb->esc_like( $search_line ) . '%' ); + + $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); + $include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true ); + + $core_search = $this->get_core_search_fields(); + if ( ! empty( $include_fields ) ) { + $core_search = array_intersect( $core_search, $include_fields ); + } + if ( ! empty( $exclude_fields ) ) { + $core_search = array_diff( $core_search, $exclude_fields ); + } + if ( ! empty( $core_search ) ) { + foreach ( $core_search as $field ) { + $field = esc_sql( $field ); + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $field is pre-escaped. + $searches[] = $wpdb->prepare( "u.{$field} LIKE %s", '%' . $wpdb->esc_like( $search_line ) . '%' ); + } } $core_search = implode( ' OR ', $searches ); + if ( ! empty( $core_search ) ) { + $core_search = ' OR ' . $core_search; + } $this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata umm_search ON umm_search.user_id = u.ID"; @@ -720,27 +736,17 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $search_like_string = apply_filters( 'um_member_directory_meta_search_like_type', '%' . $wpdb->esc_like( $search_line ) . '%', $search_line ); - $directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) ); - $exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true ); - $include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true ); + $custom_fields_sql = ''; + if ( ! empty( $exclude_fields ) ) { - $custom_fields_sql = 'AND umm_search.um_key NOT IN ('; - foreach ( $exclude_fields as $exclude_field ) { - $custom_fields_sql .= "'" . $exclude_field . "',"; - } - $custom_fields_sql = rtrim( $custom_fields_sql, ',' ); - $custom_fields_sql .= ') '; + $custom_fields_sql = " AND umm_search.um_key NOT IN ('" . implode( "','", $exclude_fields ) . "') "; } if ( ! empty( $include_fields ) ) { - $custom_fields_sql = 'AND umm_search.um_key IN ('; - foreach ( $include_fields as $include_field ) { - $custom_fields_sql .= "'" . $include_field . "',"; - } - $custom_fields_sql = rtrim( $custom_fields_sql, ',' ); - $custom_fields_sql .= ') '; + $custom_fields_sql = " AND umm_search.um_key IN ('" . implode( "','", $include_fields ) . "') "; } + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $core_search and $additional_search are pre-prepared. - $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search}) {$custom_fields_sql}", $search_line, $search_like_string, '%' . $wpdb->esc_like( maybe_serialize( (string) $search_line ) ) . '%' ); + $this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s{$core_search}{$additional_search}){$custom_fields_sql}", $search_line, $search_like_string, '%' . $wpdb->esc_like( maybe_serialize( (string) $search_line ) ) . '%' ); $this->is_search = true; } diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 6f82e7a0..5be87b0d 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -42,6 +42,11 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { */ var $filter_fields = array(); + /** + * @var array + */ + public $searching_fields = array(); + /** * @var array @@ -122,7 +127,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { * Get the WordPress core searching fields in wp_users query. * @return array */ - private function get_core_search_fields() { + protected function get_core_search_fields() { /** * Filters the WordPress core searching fields in wp_users query for UM Member directory query. * @@ -433,6 +438,25 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->filter_supported_fields = apply_filters( 'um_members_directory_custom_field_types_supported_filter', array( 'date', 'time', 'select', 'multiselect', 'radio', 'checkbox', 'rating', 'text', 'textarea', 'number' ) ); + $core_search_keys = $this->get_core_search_fields(); + + $this->searching_fields = array(); + if ( ! empty( UM()->builtin()->all_user_fields() ) ) { + foreach ( UM()->builtin()->all_user_fields() as $key => $data ) { + if ( in_array( $key, $core_search_keys, true ) ) { + if ( isset( $data['title'] ) && array_search( $data['title'], $this->searching_fields, true ) !== false ) { + $data['title'] = $data['title'] . ' (' . $key . ')'; + } + + $title = isset( $data['title'] ) ? $data['title'] : ( isset( $data['label'] ) ? $data['label'] : '' ); + if ( empty( $title ) ) { + continue; + } + + $this->searching_fields[ $key ] = $title; + } + } + } if ( ! empty( UM()->builtin()->saved_fields ) ) { foreach ( UM()->builtin()->saved_fields as $key => $data ) { @@ -459,6 +483,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { ksort( $this->filter_fields ); + $this->searching_fields = array_merge( $this->searching_fields, $this->filter_fields ); + asort( $this->searching_fields ); + $this->filter_types = apply_filters( 'um_members_directory_filter_types', array( 'country' => 'select', 'gender' => 'select', @@ -1757,38 +1784,57 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $custom_fields[] = $field_key; } } else { - $custom_fields = $include_fields; + foreach ( $include_fields as $field_key ) { + if ( empty( $field_key ) ) { + continue; + } + + $data = UM()->fields()->get_field( $field_key ); + if ( ! um_can_view_field( $data ) ) { + continue; + } + + $custom_fields[] = $field_key; + } } $custom_fields = apply_filters( 'um_general_search_custom_fields', $custom_fields ); if ( ! empty( $custom_fields ) ) { + if ( ! empty( $exclude_fields ) ) { + $custom_fields = array_diff( $custom_fields, $exclude_fields ); + } + $sql['join'] = preg_replace( '/(' . $meta_join_for_search . ' ON \( ' . $wpdb->users . '\.ID = ' . $meta_join_for_search . '\.user_id )(\))/im', "$1 AND " . $meta_join_for_search . ".meta_key IN( '" . implode( "','", $custom_fields ) . "' ) $2", $sql['join'] ); } - - if ( ! empty( $exclude_fields ) ) { - foreach ( $exclude_fields as $field ) { - $sql['join'] = str_replace( ",'" . $field . "'", '', $sql['join'] ); - } - } } - // Add OR instead AND to search in WP core fields user_email, user_login, user_display_name - $search_where = $context->get_search_sql( $search, $this->get_core_search_fields(), 'both' ); + $core_search = $this->get_core_search_fields(); + if ( ! empty( $include_fields ) ) { + $core_search = array_intersect( $core_search, $include_fields ); + } + if ( ! empty( $exclude_fields ) ) { + $core_search = array_diff( $core_search, $exclude_fields ); + } - $search_where = preg_replace( '/ AND \((.*?)\)/im', "$1 OR", $search_where ); + if ( ! empty( $core_search ) ) { + // Add OR instead AND to search in WP core fields user_email, user_login, user_display_name + $search_where = $context->get_search_sql( $search, $core_search, 'both' ); - // str_replace( '/', '\/', wp_slash( $search ) ) means that we add backslashes to special symbols + add backslash to slash(/) symbol for proper regular pattern. - $sql['where'] = preg_replace( - '/(' . $meta_join_for_search . '.meta_value = \'' . str_replace( '/', '\/', wp_slash( $search ) ) . '\')/im', - trim( $search_where ) . " $1", - $sql['where'], - 1 - ); + $search_where = preg_replace( '/ AND \((.*?)\)/im', "$1 OR", $search_where ); + + // str_replace( '/', '\/', wp_slash( $search ) ) means that we add backslashes to special symbols + add backslash to slash(/) symbol for proper regular pattern. + $sql['where'] = preg_replace( + '/(' . $meta_join_for_search . '.meta_value = \'' . str_replace( '/', '\/', wp_slash( $search ) ) . '\')/im', + trim( $search_where ) . " $1", + $sql['where'], + 1 + ); + } } } diff --git a/readme.txt b/readme.txt index bb89947a..d4fc99c7 100644 --- a/readme.txt +++ b/readme.txt @@ -5,8 +5,8 @@ Contributors: ultimatemember, champsupertramp, nsinelnikov Tags: community, member, membership, user-profile, user-registration Requires PHP: 5.6 Requires at least: 5.5 -Tested up to: 6.4 -Stable tag: 2.8.4 +Tested up to: 6.5 +Stable tag: 2.8.5 License: GNU Version 2 or Any Later Version License URI: http://www.gnu.org/licenses/gpl-3.0.txt @@ -166,9 +166,22 @@ No specific extensions are needed. But we highly recommended keep active these P IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION -= 2.8.5 2024-03-xx = += 2.8.5 2024-04-09 = +**Enhancements** +* Added: "Hide my last login" via the Account > Privacy setting +* Added: Exclude and Include fields for member directory searching + +**Bugfixes** + +* Fixed: URL attributes escaping (CVE-2024-2765) +* Fixed: wp-admin Ultimate Member > Dashboard layouts +* Fixed: Required fields labels +* Fixed: Change password and update account email notifications duplicates +* Fixed: Clear media JS in wp-admin settings + +**Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade** = 2.8.4 2024-03-06 = @@ -184,6 +197,8 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI * Fixed: Password reset url for the approved user who didn't set their password after registration without password * Fixed: Conflict with WebP Uploads +**Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade** + = 2.8.3 2024-02-19 = **Enhancements** @@ -316,6 +331,9 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI == Upgrade Notice == += 2.8.5 = +This version fixes a security related bug. Upgrade immediately. + = 2.8.4 = This version fixes a security related bug. Upgrade immediately. diff --git a/ultimate-member.php b/ultimate-member.php index 2e0901db..d7e522b3 100644 --- a/ultimate-member.php +++ b/ultimate-member.php @@ -3,7 +3,7 @@ * Plugin Name: Ultimate Member * Plugin URI: http://ultimatemember.com/ * Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress - * Version: 2.8.5-alpha + * Version: 2.8.5 * Author: Ultimate Member * Author URI: http://ultimatemember.com/ * Text Domain: ultimate-member From 94218838d23565c724452f859a1b3ffc8aa160cd Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Tue, 9 Apr 2024 15:33:52 +0300 Subject: [PATCH 32/32] - updated readme.txt; --- changelog.txt | 4 ++++ readme.txt | 2 ++ 2 files changed, 6 insertions(+) diff --git a/changelog.txt b/changelog.txt index 31178246..78469402 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,6 +6,7 @@ - Added: "Hide my last login" via the Account > Privacy setting - Added: Exclude and Include fields for member directory searching + - Tweak: Compatibility with WordPress 6.5 * Bugfixes: @@ -13,8 +14,11 @@ - Fixed: wp-admin Ultimate Member > Dashboard layouts - Fixed: Required fields labels - Fixed: Change password and update account email notifications duplicates + - Fixed: Reset Password urlencoded username - Fixed: Clear media JS in wp-admin settings +* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade + = 2.8.4: March 6, 2024 = * Enhancements: diff --git a/readme.txt b/readme.txt index d4fc99c7..f628c62e 100644 --- a/readme.txt +++ b/readme.txt @@ -172,6 +172,7 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI * Added: "Hide my last login" via the Account > Privacy setting * Added: Exclude and Include fields for member directory searching +* Tweak: Compatibility with WordPress 6.5 **Bugfixes** @@ -179,6 +180,7 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI * Fixed: wp-admin Ultimate Member > Dashboard layouts * Fixed: Required fields labels * Fixed: Change password and update account email notifications duplicates +* Fixed: Reset Password urlencoded username * Fixed: Clear media JS in wp-admin settings **Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade**