Merge pull request #1190 from ultimatemember/feature/sorting_data_type

Sorting data type and order
This commit is contained in:
Mykyta Synelnikov
2023-06-12 13:21:40 +03:00
committed by GitHub
10 changed files with 228 additions and 57 deletions
@@ -146,6 +146,14 @@ textarea.um-forms-field.um-small-field {
flex: 0.9;
}
.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-admin-drag-fld .um-field-wrapper {
width: calc( 100% - 90px );
}
@@ -282,11 +282,23 @@ jQuery(document).ready( function() {
html += '<span class="um-field-icon"><i class="um-faicon-sort"></i></span>';
}
let dataTypesOptions = '';
jQuery.each( um_forms_data.md_sorting_data_types, function( key, label ) {
dataTypesOptions += '<option value="' + key + '">' + label + '</option>';
} );
html += '<span class="um-field-wrapper">' + selector_html + '</span>' +
'<span class="um-field-control">' +
'<a href="javascript:void(0);" class="um-select-delete">' + wp.i18n.__( 'Remove', 'ultimate-member' ) + '</a>' +
'</span>' +
'<span class="um-field-wrapper um-custom-order-fields"><label>' + wp.i18n.__( 'Meta key', 'ultimate-member' ) + ':&nbsp;<input type="text" name="meta_key" /></label></span>' +
'<span class="um-field-wrapper um-custom-order-fields"><label>' + wp.i18n.__( 'Data type', 'ultimate-member' ) + ':&nbsp;<select name="data_type" />' +
dataTypesOptions +
'</select></label></span>' +
'<span class="um-field-wrapper um-custom-order-fields"><label>' + wp.i18n.__( 'Order', 'ultimate-member' ) + ':&nbsp;<select name="order" />' +
'<option value="ASC">' + wp.i18n.__( 'ASC', 'ultimate-member' ) + '</option>' +
'<option value="DESC">' + wp.i18n.__( 'DESC', 'ultimate-member' ) + '</option>' +
'</select></label></span>' +
'<span class="um-field-wrapper um-custom-order-fields"><label>' + wp.i18n.__( 'Label', 'ultimate-member' ) + ':&nbsp;<input type="text" name="label" /></label></span>' +
'</li>';
list.append( html );
@@ -296,6 +308,8 @@ jQuery(document).ready( function() {
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields input[name="meta_key"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][meta_key]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields input[name="label"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][label]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields select[name="data_type"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][data_type]');
jQuery( '#' + list.data('id_attr') + '-' + k ).parents('li').find('.um-field-wrapper.um-custom-order-fields select[name="order"]').attr('name', 'um_metadata[_um_sorting_fields][other_data][' + k + '][order]');
});
+12 -3
View File
@@ -1,21 +1,18 @@
<?php
namespace um\admin;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'um\admin\Admin' ) ) {
/**
* Class Admin
* @package um\admin
*/
class Admin extends Admin_Functions {
/**
* @var string
*/
@@ -389,6 +386,12 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
'_um_sortby_custom_label' => array(
'sanitize' => 'text',
),
'_um_sortby_custom_type' => array(
'sanitize' => 'text',
),
'_um_sortby_custom_order' => array(
'sanitize' => 'text',
),
'_um_enable_sorting' => array(
'sanitize' => 'bool',
),
@@ -867,6 +870,12 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
if ( isset( $item['label'] ) ) {
$item['label'] = sanitize_text_field( $item['label'] );
}
if ( isset( $item['order'] ) ) {
$item['order'] = sanitize_text_field( $item['order'] );
}
if ( isset( $item['data_type'] ) ) {
$item['data_type'] = sanitize_text_field( $item['data_type'] );
}
return $item;
} else {
@@ -375,6 +375,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
),
admin_url( 'admin.php' )
),
'md_sorting_data_types' => UM()->member_directory()->sort_data_types,
)
);
+39 -12
View File
@@ -1617,16 +1617,30 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
if ( ! empty( $values ) && is_array( $values ) ) {
foreach ( $values as $k => $value ) {
$other_key = '';
$other_key = '';
$other_label = '';
$other_type = '';
$other_order = '';
if ( is_array( $value ) ) {
$keys = array_keys( $value );
$keys = array_keys( $value );
$other_key = $keys[0];
$labels = array_values( $value );
$other_label = $labels[0];
if ( ! empty( $value['label'] ) ) {
$other_label = $value['label'];
} else {
$labels = array_values( $value );
$other_label = $labels[0];
}
if ( ! empty( $value['type'] ) ) {
$other_type = $value['type'];
}
if ( ! empty( $value['order'] ) ) {
$other_order = $value['order'];
}
} else {
if ( ! in_array( $value, array_keys( $field_data['options'] ) ) ) {
if ( ! array_key_exists( $value, $field_data['options'] ) ) {
continue;
}
}
@@ -1636,7 +1650,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
if ( is_array( $value ) ) {
$selected = selected( $key == 'other', true, false );
$selected = selected( 'other' === $key, true, false );
} else {
$selected = selected( $key == $value, true, false );
}
@@ -1648,12 +1662,25 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
if ( $sorting ) {
$html .= '<span class="um-field-icon"><i class="um-faicon-sort"></i></span>';
}
$html .= "<span class=\"um-field-wrapper\">
<select $id_attr $name_attr $class_attr $data_attr>$options</select></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-select-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span>
<span class=\"um-field-wrapper um-custom-order-fields\"><label>" . __( 'Meta key', 'ultimate-member' ) . ":&nbsp;<input type=\"text\" name=\"um_metadata[_um_sorting_fields][other_data][" . $k . "][meta_key]\" value=\"" . esc_attr( $other_key ) . "\" /></label></span>
<span class=\"um-field-wrapper um-custom-order-fields\"><label>" . __( 'Label', 'ultimate-member' ) . ":&nbsp;<input type=\"text\" name=\"um_metadata[_um_sorting_fields][other_data][" . $k . "][label]\" value=\"" . esc_attr( $other_label ) . "\" /></label></span>
</li>";
$data_types_html = '';
foreach ( UM()->member_directory()->sort_data_types as $type_key => $type_label ) {
$data_types_html .= '<option value="' . esc_attr( $type_key ) . '" ' . selected( $other_type, $type_key, false ) . '>' . esc_html( $type_label ) . '</option>';
}
$html .= '<span class="um-field-wrapper">
<select ' . $id_attr . ' ' . $name_attr . ' ' . $class_attr . ' ' . $data_attr . '>' . $options . '</select></span>
<span class="um-field-control"><a href="javascript:void(0);" class="um-select-delete">' . __( 'Remove', 'ultimate-member' ) . '</a></span>
<span class="um-field-wrapper um-custom-order-fields"><label>' . __( 'Meta key', 'ultimate-member' ) . ':&nbsp;<input type="text" name="um_metadata[_um_sorting_fields][other_data][' . $k . '][meta_key]" value="' . esc_attr( $other_key ) . '" /></label></span>
<span class="um-field-wrapper um-custom-order-fields"><label>' . __( 'Data type', 'ultimate-member' ) . ':&nbsp;<select name="um_metadata[_um_sorting_fields][other_data][' . $k . '][data_type]" />' .
$data_types_html .
'</select></label></span>
<span class="um-field-wrapper um-custom-order-fields"><label>' . __( 'Order', 'ultimate-member' ) . ':&nbsp;<select name="um_metadata[_um_sorting_fields][other_data][' . $k . '][order]" />
<option value="ASC" ' . selected( $other_order, 'ASC', false ) . '>' . __( 'ASC', 'ultimate-member' ) . '</option>
<option value="DESC" ' . selected( $other_order, 'DESC', false ) . '>' . __( 'DESC', 'ultimate-member' ) . '</option>
</select></label></span>
<span class="um-field-wrapper um-custom-order-fields"><label>' . __( 'Label', 'ultimate-member' ) . ':&nbsp;<input type="text" name="um_metadata[_um_sorting_fields][other_data][' . $k . '][label]" value="' . esc_attr( $other_label ) . '" /></label></span>
</li>';
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
@@ -24,6 +24,27 @@ $fields = array(
'value' => UM()->query()->get_meta_value( '_um_sortby_custom', null, 'na' ),
'conditional' => array( '_um_sortby', '=', 'other' ),
),
array(
'id' => '_um_sortby_custom_type',
'type' => 'select',
'label' => __( 'Data type', 'ultimate-member' ),
'tooltip' => __( 'To correct sort by a custom field, choose a data type', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_sortby_custom_type', null, 'CHAR' ),
'options' => UM()->member_directory()->sort_data_types,
'conditional' => array( '_um_sortby', '=', 'other' ),
),
array(
'id' => '_um_sortby_custom_order',
'type' => 'select',
'label' => __( 'Order', 'ultimate-member' ),
'tooltip' => __( 'To correct sort by a custom field, choose an order', 'ultimate-member' ),
'value' => UM()->query()->get_meta_value( '_um_sortby_custom_order', null, 'ASC' ),
'options' => array(
'ASC' => __( 'ASC', 'ultimate-member' ),
'DESC' => __( 'DESC', 'ultimate-member' ),
),
'conditional' => array( '_um_sortby', '=', 'other' ),
),
array(
'id' => '_um_sortby_custom_label',
'type' => 'text',