/* 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":139931,"date":"2026-06-10T16:21:18","date_gmt":"2026-06-10T16:21:18","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=139931"},"modified":"2026-06-10T16:21:18","modified_gmt":"2026-06-10T16:21:18","slug":"casino-turbowinz","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/casino-turbowinz\/","title":{"rendered":"Envie d’une aventure excitante au TurboWinz Casino en France ?"},"content":{"rendered":"
Dans l’environnement dynamique des casinos en ligne fran\u00e7ais, TurboWinz Casino se distingue par son approche incontestablement moderne et son engagement envers une immersion de jeu optimale et divertissante. Ce site, con\u00e7u pour les joueurs fran\u00e7ais en qu\u00eate de sensations fortes et de distraction de qualit\u00e9, propose une interface intuitive et une s\u00e9lection de jeux attentivement choisie. L’insistance est mis sur la vitesse des transactions et la s\u00e9curit\u00e9 des joueurs, le tout dans un cadre l\u00e9gal et r\u00e9gul\u00e9, offrant ainsi une plateforme de confiance pour se consacrer \u00e0 ses jeux favoris depuis la France.<\/p>\n
D\u00e8s l’arriv\u00e9e, TurboWinz Casino transporte le joueur dans un large \u00e9ventail de jeux, des slots les plus r\u00e9centes aux versions modernes des classiques du casino. Les partenariats avec des \u00e9diteurs de logiciels de premier plan garantissent une qualit\u00e9 d’image et de son exceptionnelle, ainsi qu’une jouabilit\u00e9 innovante. Que l’on choisisse les th\u00e8mes fantastiques, les aventures historiques ou les fruits classiques, il y en a pour tous les go\u00fbts. Cette diversit\u00e9 permet que chaque session de jeu sur la plateforme est une nouvelle d\u00e9couverte, renouvelant sans cesse constamment l’int\u00e9r\u00eat et le plaisir des joueurs fran\u00e7ais.<\/p>\n
L’excellence d’un casino en ligne se mesure aussi \u00e0 la cr\u00e9dibilit\u00e9 de son support. TurboWinz Casino propose \u00e0 sa client\u00e8le fran\u00e7aise un service client accessible et qualifi\u00e9, apte \u00e0 r\u00e9pondre en langue fran\u00e7aise. Qu’il s’agisse une question technique, une clarification sur une promotion ou une aide sur un retrait, les conseillers sont accessibles via plusieurs canaux comme le chat en direct ou l’email. Cette rapidit\u00e9 et cette disponibilit\u00e9 accroissent le sentiment de s\u00e9curit\u00e9 et de respect, primordial pour construire une relation de confiance \u00e0 long terme avec les utilisateurs.<\/p>\n
Les tours gratuits forment l’une des offres les plus estim\u00e9es des joueurs, et TurboWinz Casino en a fait un fondement de son approche. Ces tours propos\u00e9s, souvent dans le cadre d’un bonus de bienvenue ou de promotions r\u00e9currentes, permettent de d\u00e9couvrir de nouvelles machines \u00e0 sous sans mobiliser son propre capital. C’est une opportunit\u00e9 parfaite pour essayer les m\u00e9caniques de jeu, savourer les fonctionnalit\u00e9s bonus et, pourquoi pas, d\u00e9crocher de premiers gains. Pour les joueurs en France, c’est une mani\u00e8re \u00e0 la fois raisonnable et excitante de commencer l’aventure sur une plateforme qui mise sur la g\u00e9n\u00e9rosit\u00e9.<\/p>\n
Pour c\u00e9l\u00e9brer le d\u00e9but de l’aventure, TurboWinz Casino offre un accueil chaleureux \u00e0 ses nouveaux membres avec une offre de bienvenue comp\u00e9titive et adapt\u00e9e. Cette promotion, souvent compos\u00e9e d’un match sur le premier d\u00e9p\u00f4t et d’un lot de tours gratuits, donne un coup de pouce imm\u00e9diat au solde de jeu. Elle est pens\u00e9e pour \u00e9tendre le temps de jeu et accro\u00eetre les chances de succ\u00e8s d\u00e8s les premiers instants. Il est primordial pour les joueurs de s’attarder de lire les conditions associ\u00e9es, notamment les exigences de mise, pour jouir pleinement de cette offre dans le cadre r\u00e9glementaire fran\u00e7ais.<\/p>\n
Pour profiter au maximum des offres promotionnelles, une strat\u00e9gie simple revient \u00e0 bien planifier son premier d\u00e9p\u00f4t en fonction du jeu pr\u00e9f\u00e9r\u00e9. Certains jeux participent plus que d’autres au remplissage des conditions de mise. Il est aussi judicieux de consulter r\u00e9guli\u00e8rement la section d\u00e9di\u00e9e aux promotions, car TurboWinz Casino Turbowinz<\/a> renouvelle ses propositions pour garder sa communaut\u00e9 fran\u00e7aise. Une gestion responsable de son budget, coupl\u00e9e \u00e0 une compr\u00e9hension claire des r\u00e8gles, mue ces bonus en leviers d’amusement et non en source de complication.<\/p>\n Agir en France suppose de se plier \u00e0 un dispositif l\u00e9gal exigeant, et TurboWinz Casino se conforme \u00e0 ces obligations avec professionnalisme. La site est titulaire d’une autorisation d\u00e9livr\u00e9e par une autorit\u00e9 de jeu reconnue, attestant que ses services sont contr\u00f4l\u00e9es et loyales. Les renseignements confidentiels et mon\u00e9taires des utilisateurs sont s\u00e9curis\u00e9es par un cryptage avanc\u00e9 de type SSL, garantissant la confidentialit\u00e9 des transactions. Ce contexte fiable est primordial pour autoriser aux membres fran\u00e7ais de se concentrer pleinement sur le plaisir, l’esprit serein.<\/p>\n Saisir les pratiques modernes suppose proposer une exp\u00e9rience de jeu parfaite sur chaque terminal. TurboWinz Casino se distingue dans ce domaine avec une plateforme totalement optimis\u00e9e aux smartphones et tablettes. Que l’on emploie un appareil iOS ou Android, on peut d’acc\u00e9der en un clin d’\u0153il au panel int\u00e9gral de jeux, de r\u00e9aliser des d\u00e9p\u00f4ts et de retirer ses gains sans t\u00e9l\u00e9chargement obligatoire via un navigateur mobile. Cette flexibilit\u00e9 permet aux joueurs en France de b\u00e9n\u00e9ficier de leurs jeux de pr\u00e9dilection lors de leurs parcours habituels ou depuis leur canap\u00e9, sans compromis sur la qualit\u00e9.<\/p>\n Cr\u00e9er un compte sur TurboWinz Casino est un processus intentionnellement simplifi\u00e9 pour garantir un d\u00e9but rapide. Il est n\u00e9cessaire de se transporter sur la plate-forme, de compl\u00e9ter le formulaire d\\’inscription avec des informations exactes et de valider son compte conform\u00e9ment la proc\u00e9dure normale de v\u00e9rification d\\’identit\u00e9, une exigence l\u00e9gale en France. Une fois cette \u00e9tape accomplie, le utilisateur peut d\u00e9couvrir le lobby, consulter promotions en cours, et r\u00e9aliser un premier d\u00e9p\u00f4t en s\u00e9lectionnant parmi les m\u00e9thodes de paiement s\u00e9curis\u00e9es propos\u00e9es. Le jeu, et le amusement, peuvent alors d\u00e9buter sans tarder.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":" Dans l’environnement dynamique des casinos en ligne fran\u00e7ais, TurboWinz Casino se distingue par son approche incontestablement moderne et son engagement envers une immersion de jeu optimale et divertissante. Ce site, con\u00e7u pour les joueurs fran\u00e7ais en qu\u00eate de sensations fortes et de distraction de qualit\u00e9, propose une interface intuitive et\u2026<\/p>\nLa s\u00fbret\u00e9 et la conformit\u00e9 : des fondations essentielles<\/h2>\n
Une exp\u00e9rience mobile optimis\u00e9e pour les sessions nomades<\/h2>\n
Rejoindre TurboWinz Casino : d\u00e9marrage en un rien de temps<\/h2>\n