esc_html__( 'Speed Up', 'modula-speedup' ),
'title' => esc_html__( 'Optimize your images', 'modula-speedup' ),
"icon" => "dashicons dashicons-dashboard",
'priority' => 75,
);
return $tabs;
}
/**
* Add video related settings.
*
* @since 1.0.0
*
* @return array $fields.
*/
public function modula_speedup_fields( $fields ){
$fields['speedup'] = array(
'enable_optimization' => array(
"name" => esc_html__('Compression', 'modula-speedup'),
"type" => "speedup-select",
'default' => 'default',
"values" => array(
'default' => esc_html__('Default', 'modula-speedup'),
'enabled' => esc_html__('Enabled', 'modula-speedup'),
'disabled' => esc_html__('Disabled', 'modula-speedup'),
),
"description" => esc_html__('Adjust this setting to enable image optimization.', 'modula-speedup'),
'priority' => 1,
),
"thumbnail_optimization" => array(
"name" => esc_html__('Thumbnail Compression', 'modula-speedup'),
"type" => "speedup-select",
"description" => esc_html__('Choose the compression level for your gallery’s image thumbnails', 'modula-speedup'),
'default' => 'default',
"values" => array(
'default' => esc_html__('Default', 'modula-speedup'),
'lossless' => esc_html__('Lossless Compresion', 'modula-speedup'),
'lossy' => esc_html__('Lossy Compresion', 'modula-speedup'),
'glossy' => esc_html__('Glossy Compresion', 'modula-speedup'),
'disabled' => esc_html__('Disable Compresion', 'modula-speedup'),
),
'priority' => 5,
),
"lightbox_optimization" => array(
"name" => esc_html__('Lightbox Compression', 'modula-speedup'),
"type" => "speedup-select",
"description" => esc_html__('Choose the compression level of your gallery image when it is opened in the selected lightbox.', 'modula-speedup'),
'default' => 'default',
"values" => array(
'default' => esc_html__('Default', 'modula-speedup'),
'lossless' => esc_html__('Lossless Compresion', 'modula-speedup'),
'lossy' => esc_html__('Lossy Compresion', 'modula-speedup'),
'glossy' => esc_html__('Glossy Compresion', 'modula-speedup'),
'disabled' => esc_html__('Disable Compresion', 'modula-speedup'),
),
'priority' => 10,
),
"modula_speed_help" => array(
"name" => '',
"type" => "content",
"content" => $this->compression_description(),
'priority' => 15,
),
);
return $fields;
}
/**
* Add default for item's video url.
*
* @since 1.0.0
*
* @return array $defaults.
*/
public function default_settings( $defaults ){
$defaults['enable-optimization'] = 'default';
$defaults['thumbnail_optimization'] = 'default';
$defaults['lightbox_optimization'] = 'default';
return $defaults;
}
public function compression_description(){
$description = ' ';
$description .= sprintf( esc_html__( 'When set to *default* the Modula default gallery optimization settings you have chosen under %sModula > Settings%s will be used.', 'modula-speedup' ), '', '' );
$description .= '
';
$description .= sprintf( '%s. %s', esc_html__( 'Lossless Compression', 'modula-speedup' ), esc_html__( 'File sizes will be reduced by removing unnecessary image information (and statistical redundancies) resulting in no loss of quality.', 'modula-speedup' ) );
$description .= '
';
$description .= sprintf( '%s. %s', esc_html__( 'Lossy Compression', 'modula-speedup' ), esc_html__( 'File sizes will be significantly reduced, resulting in a slight loss of image quality that is visible.', 'modula-speedup' ) );
$description .= '
';
$description .= sprintf( '%s. %s', esc_html__( 'Glossy Compression', 'modula-speedup' ), esc_html__( 'Glossy is the best choice if you care about your website’s load time and and you believe that a slight loss of page speed is an acceptable compromise for top-notch image quality.', 'modula-speedup' ) );
$description .= ' ';
return $description;
}
public function add_compression_tab( $tabs ){
$tabs['compression'] = array(
'label' => esc_html__( 'SpeedUp Settings', 'modula-speedup' ),
'priority' => 30,
);
return $tabs;
}
public function render_compression_tab() {
include 'tabs/compression.php';
}
public function register_compression_option() {
// creates our settings in the options table
register_setting('modula_speedup', 'modula_speedup', array( $this, 'sanitize_option' ) );
}
public function sanitize_option( $current ) {
$defaults = array(
'enable_optimization' => 'disabled',
'thumbnail_optimization' => 'lossy',
'lightbox_optimization' => 'lossless',
);
$accepted_values = array( 'lossless', 'lossy', 'glossy', 'disabled' );
$new = array();
if ( isset( $current['enable_optimization'] ) ) {
$new['enable_optimization'] = 'enabled';
}else{
$new['enable_optimization'] = 'disabled';
}
if ( isset( $current['thumbnail_optimization'] ) && in_array( $current['thumbnail_optimization'], $accepted_values ) ) {
$new['thumbnail_optimization'] = $current['thumbnail_optimization'];
}
if ( isset( $current['lightbox_optimization'] ) && in_array( $current['lightbox_optimization'], $accepted_values ) ) {
$new['lightbox_optimization'] = $current['lightbox_optimization'];
}
$new = wp_parse_args( $new, $defaults );
return $new;
}
public function render_field_type( $html, $field, $value ){
$defaults = get_option( 'modula_speedup', array(
'enable_optimization' => 'disabled',
'thumbnail_optimization' => 'lossy',
'lightbox_optimization' => 'lossless',
) );
$html = '';
$style = '';
if ( 'default' != $value ) {
$style = 'display:none';
}
$html .= 'Default Status: ' . $defaults[ $field['id'] ] . '';
return $html;
}
public function check_if_optimize( $status, $settings ){
if ( ! isset( $settings['enable_optimization'] ) ) {
return $status;
}
$defaults = get_option( 'modula_speedup', array(
'enable_optimization' => 'disabled',
'thumbnail_optimization' => 'lossy',
'lightbox_optimization' => 'lossless',
) );
if ( ( 'default' == $settings['enable_optimization'] && 'enabled' == $defaults['enable_optimization'] ) || 'enabled' == $settings['enable_optimization'] ) {
return false;
}
return $status;
}
}
// Load the main plugin class.
$modula_speedup_settings = Modula_SpeedUp_Setings::get_instance();