/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":135260,"date":"2026-05-26T23:53:27","date_gmt":"2026-05-26T23:53:27","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=135260"},"modified":"2026-05-27T10:08:29","modified_gmt":"2026-05-27T10:08:29","slug":"get-jackpot-france","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/get-jackpot-france\/","title":{"rendered":"Decouvrez le Jackpot Bob Casino et son Bonus Sans D\u00e9p\u00f4t Instantan\u00e9 en Ligne"},"content":{"rendered":"

En ce jour et \u00e2ge o\u00f9 les casinos en ligne multiplient les offres, le Jackpot Bob Casino fait son entr\u00e9e sur le march\u00e9 avec un bonus sans d\u00e9p\u00f4t instantan\u00e9 qui attire l’attention des joueurs fran\u00e7ais. Mais avant de vous lancer dans l’aventure, il est essentiel de comprendre les conditions et les limites de ce bonus, ainsi que les strat\u00e9gies n\u00e9cessaires pour gagner avec le Jackpot Bob Casino.<\/p>\n

Qu’est-ce que le Jackpot Bob Casino ?<\/h2>\n

Le Jackpot Bob Casino est une plateforme de jeu en ligne qui propose une vari\u00e9t\u00e9 de jeux de casino, notamment les jeux de slot, les jeux de table, et les jeux de loterie. Cette plateforme est accessible en ligne et offre une exp\u00e9rience de jeu immersive et s\u00e9curis\u00e9e.<\/p>\n

Avantages et Inconv\u00e9nients du Jackpot Bob Casino<\/p>\n

– Avantages : + Une vari\u00e9t\u00e9 de jeux de casino pour tous les go\u00fbts + Un bonus sans d\u00e9p\u00f4t instantan\u00e9 attractif + Une interface utilisateur intuitive et s\u00e9curis\u00e9e – Inconv\u00e9nients : + Les conditions de jeu peuvent \u00eatre complexes + Les limites du bonus sans d\u00e9p\u00f4t instantan\u00e9 peuvent \u00eatre restrictives<\/p>\n

Les Pitfalls de la Connexion au Jackpot Bob Casino<\/h3>\n

Si vous \u00eates pr\u00eat \u00e0 vous lancer dans l’aventure, il est essentiel de comprendre les risques et les erreurs potentielles qui peuvent survenir lors de la connexion au Jackpot Bob Casino. Pour \u00e9viter les probl\u00e8mes, veuillez visiter le site officiel du www.jackpot-bobfr.com<\/a> pour plus d’informations.<\/p>\n

Les Erreurs de Connexion au Jackpot Bob Casino<\/p>\n

– Les Causes des Erreurs de Connexion : + Les probl\u00e8mes de connexion Internet + Les erreurs de saisie du code d’acc\u00e8s + Les probl\u00e8mes de compatibilit\u00e9 du navigateur – Comment R\u00e9parer les Erreurs de Connexion au Jackpot Bob Casino : + V\u00e9rifier la connexion Internet + V\u00e9rifier la saisie du code d’acc\u00e8s + Mettre \u00e0 jour le navigateur<\/p>\n

Les Conditions et Limites du Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/h3>\n

Le Jackpot Bob Casino propose un bonus sans d\u00e9p\u00f4t instantan\u00e9 qui peut vous aider \u00e0 commencer votre aventure de jeu en ligne. Cependant, il est essentiel de comprendre les conditions de r\u00e9ussite et les limites de ce bonus.<\/p>\n

Les Conditions de R\u00e9ussite du Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/p>\n

– Les conditions de r\u00e9ussite : + Le bonus est attribu\u00e9 automatiquement apr\u00e8s la cr\u00e9ation du compte + Le bonus est valable pendant une p\u00e9riode de temps d\u00e9termin\u00e9e + Le bonus peut \u00eatre utilis\u00e9 pour jouer aux jeux de casino<\/p>\n

Les Limites du Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/p>\n

– Les Montants Maximums du Bonus Sans D\u00e9p\u00f4t Instantan\u00e9 : + Le montant maximum est de 100\u20ac – Les Jeux \u00c9ligibles au Bonus Sans D\u00e9p\u00f4t Instantan\u00e9 : + Les jeux de slot + Les jeux de table<\/p>\n

\"Decouvrez<\/p>\n

Les \u00c9tapes pour R\u00e9clamer Votre Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/h3>\n

Pour r\u00e9clamer votre bonus sans d\u00e9p\u00f4t instantan\u00e9, suivez les \u00e9tapes suivantes :<\/p>\n

Comment R\u00e9clamer Votre Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/p>\n

– Cr\u00e9ez un compte sur le site officiel du Jackpot Bob Casino – V\u00e9rifiez que vous remplissez les conditions de r\u00e9ussite – V\u00e9rifiez que vous avez utilis\u00e9 les jeux \u00e9ligibles<\/p>\n

Les Documents N\u00e9cessaires pour R\u00e9clamer Votre Bonus Sans D\u00e9p\u00f4t Instantan\u00e9<\/p>\n

– V\u00e9rifiez que vous avez fourni les documents n\u00e9cessaires pour la cr\u00e9ation du compte – V\u00e9rifiez que vous avez respect\u00e9 les conditions de r\u00e9ussite<\/p>\n

Les Meilleures Strat\u00e9gies pour Gagner avec le Jackpot Bob Casino<\/h3>\n

Pour gagner avec le Jackpot Bob Casino, suivez ces strat\u00e9gies :<\/p>\n

Les Strat\u00e9gies pour Gagner avec le Jackpot Bob Casino<\/p>\n

– Jouez aux jeux de slot avec une faible variance – Jouez aux jeux de table avec une strat\u00e9gie de gestion de bankroll – N’oubliez pas de prendre des pauses r\u00e9guli\u00e8res pour ne pas vous \u00e9puiser<\/p>\n

Les Conseils pour Am\u00e9liorer vos Chances de Gain avec le Jackpot Bob Casino<\/p>\n

– Jouez avec une faible mise initiale – N’oubliez pas de v\u00e9rifier les conditions de jeu avant de jouer – N’oubliez pas de suivre les r\u00e8gles de base des jeux de casino<\/p>\n","protected":false},"excerpt":{"rendered":"

En ce jour et \u00e2ge o\u00f9 les casinos en ligne multiplient les offres, le Jackpot Bob Casino fait son entr\u00e9e sur le march\u00e9 avec un bonus sans d\u00e9p\u00f4t instantan\u00e9 qui attire l’attention des joueurs fran\u00e7ais. Mais avant de vous lancer dans l’aventure, il est essentiel de comprendre les conditions et les…<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[113],"tags":[],"class_list":["post-135260","post","type-post","status-publish","format-standard","hentry","category-jackpot-bob"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/135260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=135260"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/135260\/revisions"}],"predecessor-version":[{"id":135261,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/135260\/revisions\/135261"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=135260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=135260"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=135260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}