diff --git a/assets/css/admin/settings.css b/assets/css/admin/settings.css index 567c6ff5..ffb296f5 100644 --- a/assets/css/admin/settings.css +++ b/assets/css/admin/settings.css @@ -1,14 +1,3 @@ -#um-settings-wrap .subsubsub { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex-wrap: wrap; - margin-left: -3px; - margin-right: -3px; } - #um-settings-wrap .subsubsub a { - margin: 0 3px; } - .um-settings-section .description { font-style: italic; } diff --git a/assets/css/admin/settings.min.css b/assets/css/admin/settings.min.css index a086dd80..909bc2e5 100644 --- a/assets/css/admin/settings.min.css +++ b/assets/css/admin/settings.min.css @@ -1 +1 @@ -#um-settings-wrap .subsubsub{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:wrap;margin-left:-3px;margin-right:-3px}#um-settings-wrap .subsubsub a{margin:0 3px}.um-settings-section .description{font-style:italic}.um-notification-status{margin-right:18px;font-size:28px;line-height:22px;color:#c74a4a;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}.um-email-configure span{line-height:24px}.um-long-field{width:100%}.um-medium-field{width:50%}.um-small-field{width:25%}.column-configure{width:60px;text-align:center}th.column-email.column-primary{padding-left:48px}.um-form-table .um-forms-line td{padding-right: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-line .multi-checkbox-line{float:left;width:100%;clear:both;margin:0 0 10px 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%}.wrap-licenses .form-table,.wrap-licenses caption,.wrap-licenses tbody,.wrap-licenses td,.wrap-licenses tfoot,.wrap-licenses th,.wrap-licenses thead,.wrap-licenses tr{display:block}.wrap-licenses .form-table tr{float:left;margin:0 15px 15px 0;background:#fff;border:1px solid #ccc;width:30.5%;max-width:350px;padding:14px;min-height:240px;position:relative;box-sizing:border-box}.wrap-licenses .form-table th{background:#f9f9f9;padding:14px;border-bottom:1px solid #ccc;margin:-14px -14px 20px;width:100%}.wrap-licenses .form-table td{padding:0}.wrap-licenses td input.regular-text{margin:0 0 8px;width:100%}.wrap-licenses .edd-license-data[class*=edd-license-]{position:absolute;background:#fafafa;padding:14px;border-top:1px solid #eee;margin:20px -14px -14px;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}.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}.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}.wrap-licenses .edd-license-data.edd-license-valid{background-color:#5abc55;color:#fff;border-color:#5abc55}.wrap-licenses .edd-license-data.edd-license-error,.wrap-licenses .edd-license-data.edd-license-invalid,.wrap-licenses .edd-license-data.edd-license-item_name_mismatch,.wrap-licenses .edd-license-data.edd-license-missing,.wrap-licenses .edd-license-data.edd-license-site_inactive{background-color:#ffebcd;border-color:#ffebcd}.wrap-licenses .edd-license-data p{font-size:13px;margin-top:0}.wrap-licenses~p.submit{clear:both}@media screen and (max-width:980px){.wrap-licenses .form-table tr{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}.wrap-licenses .form-table tr{width:100%;margin-right:0;max-width:none}.um-settings-line .multi-checkbox-column{width:100%!important}.um-settings-line .multi-checkbox-column label{line-height:30px!important}.um-medium-field{width:100%}.um-small-field{width:50%}}.um_setting_ajax_button_response.complete{color:#7acf58;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}.um-media-upload .um-media-upload-url{margin-bottom:5px} \ No newline at end of file +.um-settings-section .description{font-style:italic}.um-notification-status{margin-right:18px;font-size:28px;line-height:22px;color:#c74a4a;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}.um-email-configure span{line-height:24px}.um-long-field{width:100%}.um-medium-field{width:50%}.um-small-field{width:25%}.column-configure{width:60px;text-align:center}th.column-email.column-primary{padding-left:48px}.um-form-table .um-forms-line td{padding-right: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-line .multi-checkbox-line{float:left;width:100%;clear:both;margin:0 0 10px 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%}.wrap-licenses .form-table,.wrap-licenses caption,.wrap-licenses tbody,.wrap-licenses td,.wrap-licenses tfoot,.wrap-licenses th,.wrap-licenses thead,.wrap-licenses tr{display:block}.wrap-licenses .form-table tr{float:left;margin:0 15px 15px 0;background:#fff;border:1px solid #ccc;width:30.5%;max-width:350px;padding:14px;min-height:240px;position:relative;box-sizing:border-box}.wrap-licenses .form-table th{background:#f9f9f9;padding:14px;border-bottom:1px solid #ccc;margin:-14px -14px 20px;width:100%}.wrap-licenses .form-table td{padding:0}.wrap-licenses td input.regular-text{margin:0 0 8px;width:100%}.wrap-licenses .edd-license-data[class*=edd-license-]{position:absolute;background:#fafafa;padding:14px;border-top:1px solid #eee;margin:20px -14px -14px;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}.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}.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}.wrap-licenses .edd-license-data.edd-license-valid{background-color:#5abc55;color:#fff;border-color:#5abc55}.wrap-licenses .edd-license-data.edd-license-error,.wrap-licenses .edd-license-data.edd-license-invalid,.wrap-licenses .edd-license-data.edd-license-item_name_mismatch,.wrap-licenses .edd-license-data.edd-license-missing,.wrap-licenses .edd-license-data.edd-license-site_inactive{background-color:#ffebcd;border-color:#ffebcd}.wrap-licenses .edd-license-data p{font-size:13px;margin-top:0}.wrap-licenses~p.submit{clear:both}@media screen and (max-width:980px){.wrap-licenses .form-table tr{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}.wrap-licenses .form-table tr{width:100%;margin-right:0;max-width:none}.um-settings-line .multi-checkbox-column{width:100%!important}.um-settings-line .multi-checkbox-column label{line-height:30px!important}.um-medium-field{width:100%}.um-small-field{width:50%}}.um_setting_ajax_button_response.complete{color:#7acf58;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}.um-media-upload .um-media-upload-url{margin-bottom:5px} \ No newline at end of file diff --git a/assets/css/admin/settings.sass b/assets/css/admin/settings.sass index e6eec3c2..1d3dc722 100644 --- a/assets/css/admin/settings.sass +++ b/assets/css/admin/settings.sass @@ -2,13 +2,13 @@ @import "mixins" @import "colors" -##{$prefix}settings-wrap - .subsubsub - +flex( row, flex-start, center, wrap ) - margin-left: -3px - margin-right: -3px - a - margin: 0 3px +//##{$prefix}settings-wrap +// .subsubsub +// +flex( row, flex-start, center, wrap ) +// margin-left: -3px +// margin-right: -3px +// a +// margin: 0 3px .#{$prefix}settings-section .description diff --git a/includes/admin/class-enqueue.php b/includes/admin/class-enqueue.php index 604933af..20c6e3da 100644 --- a/includes/admin/class-enqueue.php +++ b/includes/admin/class-enqueue.php @@ -589,6 +589,12 @@ final class Enqueue extends \um\common\Enqueue { wp_enqueue_script( 'um_admin_secure' ); } + // phpcs:ignore WordPress.Security.NonceVerification + if ( isset( $_GET['tab'] ) && 'appearance' === $_GET['tab'] && empty( $_GET['section'] ) ) { + // Init WP Media Uploader on the UM > Settings > Appearance > Profile screen. + wp_enqueue_media(); + } + wp_register_style( 'um_admin_settings', $css_url . 'admin/settings' . $suffix . '.css', array(), UM_VERSION ); wp_enqueue_style( 'um_admin_settings' ); diff --git a/includes/admin/core/class-admin-forms-settings.php b/includes/admin/core/class-admin-forms-settings.php index ba52b817..37ad481f 100644 --- a/includes/admin/core/class-admin-forms-settings.php +++ b/includes/admin/core/class-admin-forms-settings.php @@ -1,12 +1,12 @@ options()->get_default( $field_data['id' . $i] ); + public function get_field_value( $field_data, $i = '' ) { + $default_key = 'default' . $i; + $value_key = 'value' . $i; + $id_key = 'id' . $i; - if ( $field_data['type'] == 'checkbox' || $field_data['type'] == 'multi_checkbox' ) { - if ( isset( $field_data['value' . $i] ) ) { - return $field_data['value' . $i]; - } else { - $value = UM()->options()->get( $field_data['id' . $i] ); - $value = is_string( $value ) ? stripslashes( $value ) : $value; - return '' !== $value ? $value : $default; - } - } else { - if ( isset( $field_data['value' . $i] ) ) { - return $field_data['value'. $i]; - } else { - $value = UM()->options()->get( $field_data['id' . $i] ); - $value = is_string( $value ) ? stripslashes( $value ) : $value; - return isset( $value ) ? $value : $default; + $default = isset( $field_data[ $default_key ] ) ? $field_data[ $default_key ] : UM()->options()->get_default( $field_data[ $id_key ] ); + + if ( in_array( $field_data['type'], array( 'checkbox', 'multi_checkbox' ), true ) ) { + if ( isset( $field_data[ $value_key ] ) ) { + return $field_data[ $value_key ]; } + + $value = UM()->options()->get( $field_data[ $id_key ] ); + $value = is_string( $value ) ? stripslashes( $value ) : $value; + return '' !== $value ? $value : $default; } - } + if ( isset( $field_data[ $value_key ] ) ) { + return $field_data[ $value_key ]; + } + + $value = UM()->options()->get( $field_data[ $id_key ] ); + $value = is_string( $value ) ? stripslashes( $value ) : $value; + return isset( $value ) ? $value : $default; + } } } diff --git a/includes/admin/core/class-admin-forms.php b/includes/admin/core/class-admin-forms.php index 55c150bd..6e1e3816 100644 --- a/includes/admin/core/class-admin-forms.php +++ b/includes/admin/core/class-admin-forms.php @@ -52,7 +52,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { * @param bool $echo * @return string */ - function render_form( $echo = true ) { + public function render_form( $echo = true ) { if ( empty( $this->form_data['fields'] ) ) { return ''; diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 7df53ec9..913bc1b9 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -44,15 +44,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { //settings structure handlers add_action( 'um_settings_page_before_email__content', array( $this, 'settings_before_email_tab' ) ); - add_filter( 'um_settings_section_email__content', array( $this, 'settings_email_tab' ), 10, 1 ); - - //enqueue wp_media for profiles tab - add_action( 'um_settings_page_appearance__before_section', array( $this, 'settings_appearance_profile_tab' ) ); + add_filter( 'um_settings_section_custom_fields', array( $this, 'email_section_custom_fields' ), 10, 2 ); //custom content for licenses tab - add_filter( 'um_settings_section_licenses__content', array( $this, 'settings_licenses_tab' ), 10, 2 ); - - add_filter( 'um_settings_section_install_info__content', array( $this, 'settings_install_info_tab' ), 10, 2 ); + add_filter( 'um_settings_section_licenses__custom_content', array( $this, 'settings_licenses_tab' ), 10, 3 ); + add_filter( 'um_settings_section_advanced_override_templates_custom_content', array( $this, 'settings_override_templates_tab' ), 10, 3 ); //custom content for override templates tab add_action( 'plugins_loaded', array( $this, 'um_check_template_version' ), 10 ); @@ -74,12 +70,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { add_filter( 'um_change_settings_before_save', array( $this, 'set_default_if_empty' ), 9, 1 ); add_filter( 'um_change_settings_before_save', array( $this, 'remove_empty_values' ), 10, 1 ); - - add_action( 'admin_init', array( &$this, 'um_download_install_info' ) ); } - public function same_page_update_ajax() { UM()->admin()->check_ajax_nonce(); @@ -1942,14 +1935,17 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { return $settings; } - /** * @param $tab * @param $section * * @return array */ - function get_section_fields( $tab, $section ) { + public function get_section_fields( $tab, $section ) { + $custom_section_fields = apply_filters( 'um_settings_section_custom_fields', false, $tab, $section ); + if ( false !== $custom_section_fields ) { + return $custom_section_fields; + } if ( empty( $this->settings_structure[ $tab ] ) ) { return array(); @@ -1957,7 +1953,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { if ( ! empty( $this->settings_structure[ $tab ]['sections'][ $section ]['fields'] ) ) { return $this->settings_structure[ $tab ]['sections'][ $section ]['fields']; - } elseif ( ! empty( $this->settings_structure[ $tab ]['fields'] ) ) { + } + + if ( ! empty( $this->settings_structure[ $tab ]['fields'] ) ) { return $this->settings_structure[ $tab ]['fields']; } @@ -1971,10 +1969,20 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { $current_tab = empty( $_GET['tab'] ) ? '' : sanitize_key( $_GET['tab'] ); $current_subtab = empty( $_GET['section'] ) ? '' : sanitize_key( $_GET['section'] ); - echo '