key . $id;
}
/**
* Add customize config
*
* @param WP_Customize_Manager $wp_customize
* @param string $section_id
*/
function add_customize( $wp_customize, $section_id ) {
$wp_customize->add_setting(
$this->get_name( '__enable' ),
array(
'sanitize_callback' => 'onepress_sanitize_text',
'default' => false,
)
);
$wp_customize->add_control(
$this->get_name( '__enable' ),
array(
'label' => __( 'Enable in section navigation', 'onepress' ),
'section' => $section_id,
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
$this->get_name( '__disable_mobile' ),
array(
'sanitize_callback' => 'onepress_sanitize_text',
'default' => false,
)
);
$wp_customize->add_control(
$this->get_name( '__disable_mobile' ),
array(
'label' => __( 'Disable the section navigation on mobile', 'onepress' ),
'section' => $section_id,
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
$this->get_name( '__enable_label' ),
array(
'sanitize_callback' => 'onepress_sanitize_text',
'default' => 1,
)
);
$wp_customize->add_control(
$this->get_name( '__enable_label' ),
array(
'label' => __( 'Enable navigation labels', 'onepress' ),
'description' => __( 'By default navigation label is section title.', 'onepress' ),
'section' => $section_id,
'type' => 'checkbox',
)
);
// Color Settings.
$wp_customize->add_setting(
$this->get_name( '__color' ),
array(
'sanitize_callback' => 'sanitize_hex_color_no_hash',
'sanitize_js_callback' => 'maybe_hash_hex_color',
'default' => '',
)
);
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
$this->get_name( '__color' ),
array(
'label' => esc_html__( 'Dots color', 'onepress' ),
'section' => $section_id,
'description' => '',
)
)
);
// Color Settings.
$wp_customize->add_setting(
$this->get_name( '__color2' ),
array(
'sanitize_callback' => 'sanitize_hex_color_no_hash',
'sanitize_js_callback' => 'maybe_hash_hex_color',
'default' => '',
)
);
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
$this->get_name( '__color2' ),
array(
'label' => esc_html__( 'Dots inverse color', 'onepress' ),
'section' => $section_id,
'description' => '',
)
)
);
// Color Settings.
$wp_customize->add_setting(
$this->get_name( '__label_bg' ),
array(
'sanitize_callback' => 'onepress_sanitize_color_alpha',
'default' => '',
)
);
$wp_customize->add_control(
new OnePress_Alpha_Color_Control(
$wp_customize,
$this->get_name( '__label_bg' ),
array(
'label' => esc_html__( 'Label Background', 'onepress' ),
'section' => $section_id,
'description' => '',
)
)
);
// Color Settings.
$wp_customize->add_setting(
$this->get_name( '__label_color' ),
array(
'sanitize_callback' => 'onepress_sanitize_color_alpha',
'default' => '',
)
);
$wp_customize->add_control(
new OnePress_Alpha_Color_Control(
$wp_customize,
$this->get_name( '__label_color' ),
array(
'label' => esc_html__( 'Label Color', 'onepress' ),
'section' => $section_id,
'description' => '',
)
)
);
// Section Settings.
foreach ( $this->get_sections() as $id => $args ) {
/**
* @since 2.1.1
*/
if ( Onepress_Config::is_section_active( $id ) ) {
$name = $this->get_name( $id );
$wp_customize->add_setting(
$id . '_em',
array(
'sanitize_callback' => 'onepress_sanitize_text',
)
);
$wp_customize->add_control(
new OnePress_Misc_Control(
$wp_customize,
$id . '_em',
array(
'type' => 'custom_message',
'section' => $section_id,
'description' => '
' . esc_html( $args['label'] ) . '
',
)
)
);
$wp_customize->add_setting(
$name,
array(
'sanitize_callback' => 'onepress_sanitize_checkbox',
'default' => $args['default'],
// 'transport' => 'postMessage'
)
);
$wp_customize->add_control(
$name,
array(
'label' => __( 'Enable in section navigation', 'onepress' ),
'section' => $section_id,
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
$name . '_inverse',
array(
'sanitize_callback' => 'onepress_sanitize_checkbox',
'default' => isset( $args['inverse'] ) ? $args['inverse'] : false,
// 'transport' => 'postMessage'
)
);
$wp_customize->add_control(
$name . '_inverse',
array(
'label' => __( 'Inverse dots color', 'onepress' ),
'section' => $section_id,
'type' => 'checkbox',
)
);
$wp_customize->add_setting(
$name . '_label',
array(
'sanitize_callback' => 'sanitize_text_field',
'default' => '',
// 'transport' => 'postMessage'
)
);
$wp_customize->add_control(
$name . '_label',
array(
'label' => __( 'Custom navigation label', 'onepress' ),
'section' => $section_id,
)
);
} // end if section active
} // end loop
}
/**
*
* Get sections settings
*
* @return array
*/
function get_settings() {
$data = apply_filters( 'onepress_dots_navigation_get_settings', false );
if ( $data ) {
return $data;
}
$data = array();
$sections = $this->get_sections();
foreach ( $sections as $id => $args ) {
/**
* Get settings for enabled sections only.
*
* @since 2.1.1
*/
if ( Onepress_Config::is_section_active( $id ) ) {
if ( ! get_theme_mod( 'onepress_' . $id . '_disable', false )
|| ( isset( $args['show_section'] ) && $args['show_section'] )
) {
$name = $this->get_name( $id );
// $enable = get_theme_mod( $name, $args['default'] );
$translated_id = ( isset( $args['id'] ) && $args['id'] ) ? $args['id'] : $id;
$el_id = sanitize_title( get_theme_mod( 'onepress_' . $id . '_id', $translated_id, false ) );
if ( ! $el_id ) {
$el_id = $id;
}
$data[ $el_id ] = array(
'id' => $el_id,
'_id' => $id,
'inverse' => get_theme_mod( $this->get_name( $id . '_inverse' ), isset( $args['inverse'] ) ? $args['inverse'] : false ),
'enable' => get_theme_mod( $name, $args['default'] ) ? true : false,
'title' => get_theme_mod( 'onepress_' . $id . '_title', $args['title'] ),
);
$custom_title = get_theme_mod( $this->get_name( $id . '_label' ), false );
if ( $custom_title ) {
$data[ $el_id ]['title'] = $custom_title;
}
}
}
}
return $data;
}
/**
* Add scripts
* load only enabled
*/
function scripts() {
if ( get_theme_mod( $this->get_name( '__enable' ), false ) ) {
if ( is_front_page() ) {
wp_enqueue_script( 'jquery.bully', get_template_directory_uri() . '/assets/js/jquery.bully.js', array( 'jquery' ), false, true );
wp_localize_script(
'jquery.bully',
'Onepress_Bully',
array(
'enable_label' => get_theme_mod( $this->get_name( '__enable_label' ), true ) ? true : false,
'disable_mobile' => get_theme_mod( $this->get_name( '__disable_mobile' ), false ) ? true : false,
'sections' => $this->get_settings(),
)
);
}
}
}
/**
* Add custom style
* load only enabled
*
* @param string $code
*
* @return string
*/
function custom_style( $code = false ) {
if ( get_theme_mod( $this->get_name( '__enable' ), false ) ) {
$color = sanitize_hex_color_no_hash( get_theme_mod( $this->get_name( '__color' ) ) );
if ( $color ) {
$code .= " body .c-bully { color: #{$color}; } ";
}
$color2 = sanitize_hex_color_no_hash( get_theme_mod( $this->get_name( '__color2' ) ) );
if ( $color2 ) {
$code .= " body .c-bully.c-bully--inversed { color: #{$color2}; } ";
}
$bg = get_theme_mod( $this->get_name( '__label_bg' ) );
$bg_color = onepress_sanitize_color_alpha( $bg );
if ( $bg_color ) {
$code .= " body .c-bully .c-bully__title { background-color: {$bg_color}; } ";
}
$color = get_theme_mod( $this->get_name( '__label_color' ) );
$color = onepress_sanitize_color_alpha( $color );
if ( $color ) {
$code .= " body .c-bully .c-bully__title { color: {$color}; } ";
}
}
return $code;
}
/**
* Inits
*/
function init() {
add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ) );
add_filter( 'onepress_custom_css', array( $this, 'custom_style' ) );
}
}
Onepress_Dots_Navigation::get_instance()->init();