- added member directories' custom sorting labels;

This commit is contained in:
nikitasinelnikov
2020-01-13 10:18:30 +02:00
parent 16e0981e33
commit b1ca9ad49d
10 changed files with 1233 additions and 854 deletions
+116
View File
@@ -1370,6 +1370,122 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
return $html;
}
function render_md_sorting_fields( $field_data ) {
if ( empty( $field_data['id'] ) ) {
return false;
}
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$sorting = ! empty( $field_data['sorting'] ) ? $field_data['sorting'] : false;
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field';
$class .= ! empty( $sorting ) ? 'um-sorting-enabled' : '';
$class_attr = ' class="um-forms-field ' . $class . '" ';
$data = array(
'field_id' => $field_data['id'],
'id_attr' => $id
);
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" ';
}
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name = "{$name}[]";
$name_attr = ' name="' . $name . '" ';
$values = $this->get_field_value( $field_data );
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '<option value="' . $key . '">' . $option . '</option>';
}
$html = "<select class=\"um-hidden-multi-selects\" $data_attr>$options</select>";
$html .= "<ul class=\"um-multi-selects-list" . ( ! empty( $sorting ) ? ' um-sortable-multi-selects' : '' ) . "\" $data_attr>";
if ( $sorting && is_array( $values ) ) {
ksort( $values );
}
if ( ! empty( $values ) && is_array( $values ) ) {
foreach ( $values as $k => $value ) {
$other_key = '';
$other_label = '';
if ( is_array( $value ) ) {
$keys = array_keys( $value );
$other_key = $keys[0];
$labels = array_values( $value );
$other_label = $labels[0];
} else {
if ( ! in_array( $value, array_keys( $field_data['options'] ) ) ) {
continue;
}
}
$id_attr = ' id="' . esc_attr( $id . '-' . $k ) . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
if ( is_array( $value ) ) {
$selected = selected( $key == 'other', true, false );
} else {
$selected = selected( $key == $value, true, false );
}
$options .= '<option value="' . $key . '" ' . $selected . '>' . $option . '</option>';
}
$html .= '<li class="um-multi-selects-option-line' . ( ! empty( $sorting ) ? ' um-admin-drag-fld' : '' ) . '">';
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>";
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
while ( $i < $field_data['show_default_number'] ) {
$id_attr = ' id="' . $id . '-' . $i . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '<option value="' . $key . '">' . $option . '</option>';
}
$html .= '<li class="um-multi-selects-option-line' . ( ! empty( $sorting ) ? ' um-admin-drag-fld' : '' ) . '">';
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][" . $i . "][meta_key]\" value=\"\" /></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][" . $i . "][label]\" value=\"\" /></label></span>
</li>";
$i++;
}
}
$html .= "</ul><a href=\"javascript:void(0);\" class=\"button button-primary um-multi-selects-add-option\" data-name=\"$name\">{$field_data['add_text']}</a>";
return $html;
}
/**
* Get field value
*
+29 -1
View File
@@ -125,6 +125,30 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
$metakeys[] = '_completed';
$metakeys[] = '_reviews_avg';
$sortby_custom_keys = $wpdb->get_col( "SELECT DISTINCT meta_value FROM {$wpdb->postmeta} WHERE meta_key='_um_sortby_custom'" );
if ( empty( $sortby_custom_keys ) ) {
$sortby_custom_keys = array();
}
$sortby_custom_keys2 = $wpdb->get_col( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key='_um_sorting_fields'" );
if ( ! empty( $sortby_custom_keys2 ) ) {
foreach ( $sortby_custom_keys2 as $custom_val ) {
$custom_val = maybe_unserialize( $custom_val );
foreach ( $custom_val as $sort_value ) {
if ( is_array( $sort_value ) ) {
$field_keys = array_keys( $sort_value );
$sortby_custom_keys[] = $field_keys[0];
}
}
}
}
if ( ! empty( $sortby_custom_keys ) ) {
$sortby_custom_keys = array_unique( $sortby_custom_keys );
$metakeys = array_merge( $metakeys, $sortby_custom_keys );
}
$skip_fields = UM()->builtin()->get_fields_without_metakey();
$skip_fields = array_merge( $skip_fields, UM()->member_directory()->core_search_fields );
@@ -132,9 +156,13 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
$real_usermeta = ! empty( $real_usermeta ) ? $real_usermeta : array();
$real_usermeta = array_merge( $real_usermeta, array( 'um_member_directory_data' ) );
if ( ! empty( $sortby_custom_keys ) ) {
$real_usermeta = array_merge( $real_usermeta, $sortby_custom_keys );
}
$wp_usermeta_option = array_intersect( array_diff( $metakeys, $skip_fields ), $real_usermeta );
update_option( 'um_usermeta_fields', $wp_usermeta_option );
update_option( 'um_usermeta_fields', array_values( $wp_usermeta_option ) );
update_option( 'um_member_directory_update_meta', time() );