mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
Merge branch 'master' of https://github.com/ultimatemember/ultimatemember
This commit is contained in:
@@ -181,6 +181,10 @@
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a.um-modal-btn:visited {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.um-modal-btn:hover {
|
||||
background: #44b0ec;
|
||||
color: #fff;
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
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;
|
||||
@@ -362,4 +367,34 @@ textarea.um-forms-field.um-small-field {
|
||||
.um-forms-line[data-field_type="same_page_update"] th,
|
||||
.um-forms-line[data-field_type="same_page_update"] td {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
.um-sortable-items-field .um-sortable-item {
|
||||
cursor: move !important;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
border: 1px solid #7e8993;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
background: #f1f1f1;
|
||||
height: 42px;
|
||||
line-height: 28px;
|
||||
display: flex;
|
||||
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 {
|
||||
font-size: 18px;
|
||||
width: 20px;
|
||||
text-align: left;
|
||||
margin: 0 10px 0 0;
|
||||
}
|
||||
@@ -139,6 +139,24 @@ jQuery(document).ready( function() {
|
||||
um_add_same_page_log( field_key, wp.i18n.__( 'Your upgrade was crashed, please contact with support', 'ultimate-member' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Sortable items
|
||||
*/
|
||||
jQuery('.um-sortable-items-field').sortable({
|
||||
items: '.um-sortable-item',
|
||||
connectWith: '.um-admin-drag-col,.um-admin-drag-group',
|
||||
forcePlaceholderSize: true,
|
||||
update: function( event, ui ) {
|
||||
var sortable_value = [];
|
||||
jQuery(this).find('li').each( function() {
|
||||
if ( ! jQuery(this).hasClass( 'um-hidden-item' ) ) {
|
||||
sortable_value.push( jQuery(this).data('tab-id') );
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(this).siblings('.um-sortable-items-value' ).val( sortable_value.join( ',' ) );
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
@@ -836,45 +854,95 @@ jQuery(document).ready( function() {
|
||||
}
|
||||
|
||||
} else if ( condition === '~' ) {
|
||||
|
||||
var field_id = form_line.find( form_line.data('field_type') ).data('field_id');
|
||||
var field_id;
|
||||
var visible_options = [];
|
||||
jQuery.each( condition_fields, function(i) {
|
||||
var condition_field = condition_fields[ i ];
|
||||
var lines_field;
|
||||
|
||||
var tagName = condition_field.prop("tagName").toLowerCase();
|
||||
if ( form_line.data('field_type') === 'sortable_items' ) {
|
||||
field_id = form_line.find( '.um-sortable-items-value' ).data('field_id');
|
||||
|
||||
if ( tagName === 'input' ) {
|
||||
var input_type = condition_field.attr('type');
|
||||
if ( input_type === 'checkbox' ) {
|
||||
if ( value == '1' && condition_field.is(':checked') ) {
|
||||
visible_options.push( condition_field.data( 'fill_' + field_id ) );
|
||||
jQuery.each( condition_fields, function(i) {
|
||||
var condition_field = condition_fields[ i ];
|
||||
|
||||
var tagName = condition_field.prop("tagName").toLowerCase();
|
||||
|
||||
if ( tagName === 'input' ) {
|
||||
var input_type = condition_field.attr('type');
|
||||
if ( input_type === 'checkbox' ) {
|
||||
if ( value == '1' && condition_field.is(':checked') ) {
|
||||
visible_options.push( condition_field.data( 'fill_' + field_id ) );
|
||||
}
|
||||
}
|
||||
} else if ( tagName == 'select' ) {
|
||||
if ( ! value && condition_field.val() ) {
|
||||
visible_options = visible_options.concat( condition_field.val() );
|
||||
visible_options = visible_options.filter( um_distinct );
|
||||
}
|
||||
}
|
||||
} else if ( tagName == 'select' ) {
|
||||
if ( ! value && condition_field.val() ) {
|
||||
visible_options = visible_options.concat( condition_field.val() );
|
||||
visible_options = visible_options.filter( um_distinct );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var lines_field = jQuery( '[data-field_id="' + field_id + '"]' );
|
||||
|
||||
if ( visible_options.length ) {
|
||||
lines_field.find( 'option' ).hide();
|
||||
jQuery.each( visible_options, function(i) {
|
||||
lines_field.find( 'option[value="' + visible_options[ i ] + '"]' ).show();
|
||||
});
|
||||
if ( visible_options.indexOf( lines_field.val() ) === -1 ) {
|
||||
lines_field.val( visible_options[0] );
|
||||
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
|
||||
lines_field.find( 'option[value="' + visible_options[0] + '"]' ).attr( 'selected', true ).prop( 'selected', true );
|
||||
|
||||
lines_field = jQuery( '[data-field_id="' + field_id + '"]' );
|
||||
|
||||
if ( visible_options.length ) {
|
||||
lines_field.siblings('.um-sortable-items-field').find('li').addClass('um-hidden-item');
|
||||
jQuery.each( visible_options, function(i) {
|
||||
lines_field.siblings('.um-sortable-items-field').find('li[data-tab-id="' + visible_options[ i ] + '"]').removeClass('um-hidden-item');
|
||||
});
|
||||
|
||||
var sortable_value = [];
|
||||
lines_field.siblings('.um-sortable-items-field').find('li').each( function() {
|
||||
if ( ! jQuery(this).hasClass( 'um-hidden-item' ) ) {
|
||||
sortable_value.push( jQuery(this).data('tab-id') );
|
||||
}
|
||||
});
|
||||
|
||||
lines_field.val( sortable_value.join( ',' ) );
|
||||
lines_field.siblings( '.um-sortable-items-field' ).sortable( 'refresh' );
|
||||
|
||||
own_condition = true;
|
||||
} else {
|
||||
lines_field.val( null );
|
||||
}
|
||||
own_condition = true;
|
||||
} else {
|
||||
lines_field.val( null );
|
||||
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
|
||||
field_id = form_line.find( form_line.data('field_type') ).data('field_id');
|
||||
|
||||
jQuery.each( condition_fields, function(i) {
|
||||
var condition_field = condition_fields[ i ];
|
||||
|
||||
var tagName = condition_field.prop("tagName").toLowerCase();
|
||||
|
||||
if ( tagName === 'input' ) {
|
||||
var input_type = condition_field.attr('type');
|
||||
if ( input_type === 'checkbox' ) {
|
||||
if ( value == '1' && condition_field.is(':checked') ) {
|
||||
visible_options.push( condition_field.data( 'fill_' + field_id ) );
|
||||
}
|
||||
}
|
||||
} else if ( tagName == 'select' ) {
|
||||
if ( ! value && condition_field.val() ) {
|
||||
visible_options = visible_options.concat( condition_field.val() );
|
||||
visible_options = visible_options.filter( um_distinct );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
lines_field = jQuery( '[data-field_id="' + field_id + '"]' );
|
||||
|
||||
if ( visible_options.length ) {
|
||||
lines_field.find( 'option' ).hide();
|
||||
jQuery.each( visible_options, function(i) {
|
||||
lines_field.find( 'option[value="' + visible_options[ i ] + '"]' ).show();
|
||||
});
|
||||
if ( visible_options.indexOf( lines_field.val() ) === -1 ) {
|
||||
lines_field.val( visible_options[0] );
|
||||
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
|
||||
lines_field.find( 'option[value="' + visible_options[0] + '"]' ).attr( 'selected', true ).prop( 'selected', true );
|
||||
}
|
||||
own_condition = true;
|
||||
} else {
|
||||
lines_field.val( null );
|
||||
lines_field.find( 'option' ).attr( 'selected', false ).prop( 'selected', false );
|
||||
}
|
||||
}
|
||||
|
||||
return ( own_condition && parent_condition );
|
||||
|
||||
@@ -411,12 +411,12 @@ jQuery(document).ready(function() {
|
||||
jQuery(document.body).on('click', 'span.um-admin-icon-clear', function(){
|
||||
var element = jQuery(this).parents('p');
|
||||
jQuery('#UM_fonticons a.um-admin-modal-back').attr('data-code', '');
|
||||
element.find('input[type=hidden]').val('');
|
||||
element.find('.um-admin-icon-value').html('No Icon');
|
||||
element.find('input[type="hidden"]').val('');
|
||||
element.find('.um-admin-icon-value').html( wp.i18n.__( 'No Icon', 'ultimate-member' ) );
|
||||
|
||||
element = jQuery(this).parents('td');
|
||||
element.find('input[type=hidden]').val('');
|
||||
element.find('.um-admin-icon-value').html('No Icon');
|
||||
element.find('input[type="hidden"]').val('');
|
||||
element.find('.um-admin-icon-value').html( wp.i18n.__( 'No Icon', 'ultimate-member' ) );
|
||||
jQuery(this).hide();
|
||||
});
|
||||
|
||||
@@ -424,7 +424,7 @@ jQuery(document).ready(function() {
|
||||
search font icons
|
||||
**/
|
||||
jQuery(document.body).on('keyup blur', '#_icon_search', function(){
|
||||
if ( jQuery(this).val().toLowerCase() != '' ) {
|
||||
if ( jQuery(this).val().toLowerCase() !== '' ) {
|
||||
jQuery('.um-admin-icons span').hide();
|
||||
jQuery('.um-admin-icons span[data-code*="'+jQuery(this).val().toLowerCase()+'"]').show();
|
||||
} else {
|
||||
|
||||
@@ -270,7 +270,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
|
||||
wp_register_style( 'um_admin_modal', $this->css_url . 'um-admin-modal.css', array( 'wp-color-picker' ), ultimatemember_version );
|
||||
wp_enqueue_style( 'um_admin_modal' );
|
||||
|
||||
wp_register_script( 'um_admin_modal', $this->js_url . 'um-admin-modal.js', array( 'jquery', 'editor', 'wp-util', 'wp-color-picker', 'wp-tinymce' ), ultimatemember_version, true );
|
||||
wp_register_script( 'um_admin_modal', $this->js_url . 'um-admin-modal.js', array( 'jquery', 'editor', 'wp-util', 'wp-color-picker', 'wp-tinymce', 'wp-i18n' ), ultimatemember_version, true );
|
||||
wp_enqueue_script( 'um_admin_modal' );
|
||||
}
|
||||
|
||||
|
||||
@@ -534,7 +534,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
|
||||
|
||||
$html .= '</span><input type="hidden" ' . $name_attr . ' ' . $id_attr . ' ' . $value_attr . ' />';
|
||||
|
||||
if ( get_post_meta( get_the_ID(), '_um_icon', true ) ) {
|
||||
if ( ! empty( $value ) ) {
|
||||
$html .= '<span class="um-admin-icon-clear show"><i class="um-icon-android-cancel"></i></span>';
|
||||
} else {
|
||||
$html .= '<span class="um-admin-icon-clear"><i class="um-icon-android-cancel"></i></span>';
|
||||
@@ -546,6 +546,77 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $field_data
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
function render_sortable_items( $field_data ) {
|
||||
if ( empty( $field_data['id'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( empty( $field_data['items'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
|
||||
$id_attr = ' id="' . esc_attr( $id ) . '" ';
|
||||
|
||||
$size = ! empty( $field_data['size'] ) ? ' um-' . $field_data['size'] . '-field ' : ' um-long-field';
|
||||
|
||||
$name = $field_data['id'];
|
||||
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
|
||||
$name_attr = ' name="' . $name . '" ';
|
||||
|
||||
$value = $this->get_field_value( $field_data );
|
||||
$value_attr = ' value="' . $value . '" ';
|
||||
|
||||
$data = array(
|
||||
'field_id' => $field_data['id']
|
||||
);
|
||||
|
||||
$data_attr = '';
|
||||
foreach ( $data as $key => $val ) {
|
||||
$data_attr .= ' data-' . $key . '="' . esc_attr( $val ) . '" ';
|
||||
}
|
||||
|
||||
$html = '<input class="um-sortable-items-value" type="hidden" ' . $name_attr . ' ' . $id_attr . ' ' . $value_attr . ' ' . $data_attr . ' />';
|
||||
$html .= '<ul class="um-sortable-items-field' . esc_attr( $size ) . '">';
|
||||
|
||||
if ( ! empty( $value ) ) {
|
||||
$value_array = explode( ',', $value );
|
||||
uksort( $field_data['items'], function( $a, $b ) use ( $value_array ) {
|
||||
|
||||
$arr_flip = array_flip( $value_array );
|
||||
|
||||
if ( ! isset( $arr_flip[ $b ] ) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( ! isset( $arr_flip[ $a ] ) ) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( $arr_flip[ $a ] == $arr_flip[ $b ] ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ( $arr_flip[ $a ] < $arr_flip[ $b ] ) ? -1 : 1;
|
||||
} );
|
||||
}
|
||||
|
||||
foreach ( $field_data['items'] as $tab_id => $tab_name ) {
|
||||
$content = apply_filters( 'um_render_sortable_items_item_html', $tab_name, $tab_id, $field_data );
|
||||
$html .= '<li data-tab-id="' . esc_attr( $tab_id ) . '" class="um-sortable-item"><span class="um-field-icon"><i class="um-faicon-sort"></i></span>' . $content . '</li>';
|
||||
}
|
||||
|
||||
$html .= '</ul>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $field_data
|
||||
*
|
||||
|
||||
@@ -20,6 +20,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
||||
*/
|
||||
private $form_nonce_added = false;
|
||||
private $directory_nonce_added = false;
|
||||
private $custom_nonce_added = false;
|
||||
|
||||
|
||||
/**
|
||||
@@ -787,7 +788,10 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
||||
$path = str_replace('}','', $path );
|
||||
|
||||
include_once $path . 'includes/admin/templates/'. $box['id'] . '.php';
|
||||
wp_nonce_field( basename( __FILE__ ), 'um_admin_save_metabox_custom_nonce' );
|
||||
if ( ! $this->custom_nonce_added ) {
|
||||
$this->custom_nonce_added = true;
|
||||
wp_nonce_field( basename( __FILE__ ), 'um_admin_save_metabox_custom_nonce' );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -353,7 +353,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
|
||||
exit('');
|
||||
} else {
|
||||
ob_start();
|
||||
include_once $this->packages_dir . DIRECTORY_SEPARATOR . $_POST['pack'] . DIRECTORY_SEPARATOR . 'init.php';
|
||||
include_once $this->packages_dir . DIRECTORY_SEPARATOR . sanitize_text_field( $_POST['pack'] ) . DIRECTORY_SEPARATOR . 'init.php';
|
||||
ob_get_flush();
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -138,6 +138,10 @@ if ( UM()->options()->get( 'members_page' ) ) {
|
||||
if ( $member_directory_id ) {
|
||||
UM()->options()->update( 'user_tags_base_directory' , $member_directory_id );
|
||||
}
|
||||
|
||||
UM()->options()->update( 'user_tags_slug' , 'user-tags' );
|
||||
|
||||
UM()->rewrite()->reset_rules();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<div class="um-admin-modal-foot">
|
||||
<a href="javascript:void(0);" class="button-primary um-admin-modal-back" data-code=""><?php _e( 'Finish', 'ultimate-member' ) ?></a>
|
||||
<a href="javascript:void(0);" class="button um-admin-modal-back um-admin-modal-cancel"><?php _e( 'Cancel', 'ultimate-member' ) ?></a>
|
||||
<a href="javascript:void(0);" class="button um-admin-modal-back um-admin-modal-cancel" data-action="UM_remove_modal"><?php _e( 'Cancel', 'ultimate-member' ) ?></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -55,7 +55,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
|
||||
'terms-conditions' => '2.1.1',
|
||||
'unsplash' => '2.0.2',
|
||||
'user-bookmarks' => '2.0.2',
|
||||
'user-location' => '1.0.0',
|
||||
'user-locations' => '1.0.0',
|
||||
'user-photos' => '2.0.4',
|
||||
'user-tags' => '2.1.0',
|
||||
'verified-users' => '2.0.5',
|
||||
|
||||
@@ -29,7 +29,7 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
* @method UM_WooCommerce_API WooCommerce_API()
|
||||
* @method UM_Terms_Conditions Terms_Conditions()
|
||||
* @method UM_Private_Content Private_Content()
|
||||
* @method UM_User_Location User_Location()
|
||||
* @method UM_User_Locations User_Locations()
|
||||
* @method UM_Photos_API Photos_API()
|
||||
* @method UM_Groups Groups()
|
||||
* @method UM_Frontend_Posting Frontend_Posting()
|
||||
|
||||
@@ -644,7 +644,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
|
||||
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata umm_sort ON ( umm_sort.user_id = u.ID AND umm_sort.um_key = '_um_last_login' )";
|
||||
|
||||
$this->sql_order = " ORDER BY CAST( umm_sort.um_value AS SIGNED ) {$order} ";
|
||||
$this->sql_order = " ORDER BY CAST( umm_sort.um_value AS SIGNED ) DESC ";
|
||||
|
||||
} elseif ( $sortby == 'last_first_name' ) {
|
||||
|
||||
|
||||
@@ -159,9 +159,9 @@ if ( ! class_exists( 'um\core\Plugin_Updater' ) ) {
|
||||
'key' => 'filesharing',
|
||||
'title' => 'File Sharing',
|
||||
),
|
||||
'um-user-location/um-user-location.php' => array(
|
||||
'key' => 'user-location',
|
||||
'title' => 'User Location',
|
||||
'um-user-locations/um-user-locations.php' => array(
|
||||
'key' => 'user-locations',
|
||||
'title' => 'User Locations',
|
||||
),
|
||||
'um-profile-tabs/um-profile-tabs.php' => array(
|
||||
'key' => 'profile_tabs',
|
||||
|
||||
+349
-349
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -42,7 +42,7 @@ Read about all of the plugin's features at [Ultimate Member](https://ultimatemem
|
||||
|
||||
Ultimate Member has a range of extensions that allow you to extend the power of the plugin. You can purchase all of these extensions at a significant discount with our [All Access Pass](https://ultimatemember.com/pricing/) or you can purchase extensions individually.
|
||||
|
||||
* [User Location](https://ultimatemember.com/extensions/user-location/) - Allow users to add geolocations to profiles and show them at the member directories
|
||||
* [User Locations](https://ultimatemember.com/extensions/user-locations/) - Allow to display users on a map on the member directory page and allow users to add their location via their profile
|
||||
* [Profile Tabs](https://ultimatemember.com/extensions/profile-tabs/) - Allow users to add custom tabs to profiles
|
||||
* [Unsplash](https://ultimatemember.com/extensions/unsplash/) - Allow users to select a profile cover photo from [Unsplash](https://unsplash.com/) from their profile
|
||||
* [User Bookmarks](https://ultimatemember.com/extensions/user-bookmarks/) - Allow users to bookmark content from your website
|
||||
|
||||
+1
-1
@@ -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.1.4-rc.1
|
||||
Version: 2.1.4
|
||||
Author: Ultimate Member
|
||||
Author URI: http://ultimatemember.com/
|
||||
Text Domain: ultimate-member
|
||||
|
||||
Reference in New Issue
Block a user