/* 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":140209,"date":"2026-06-10T17:32:46","date_gmt":"2026-06-10T17:32:46","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=140209"},"modified":"2026-06-10T17:32:46","modified_gmt":"2026-06-10T17:32:46","slug":"mafia-casino","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/mafia-casino\/","title":{"rendered":"Mafia Casino : Le Flux de l’Animation Appr\u00e9ci\u00e9e par un Perfectionniste Suisse"},"content":{"rendered":"
Sur le march\u00e9 suisse des casinos en ligne, la confiance et le confort de jeu sont des conditions non n\u00e9gociables. La performance technique n’est pas un d\u00e9tail. C’est un socle essentiel. L’utilisateur helv\u00e9tique poss\u00e8de souvent du mat\u00e9riel performant et a l’\u0153il pour une ex\u00e9cution irr\u00e9prochable. Une simple saccade s’av\u00e8re \u00e0 briser le charme et \u00e0 alt\u00e9rer la concentration. Nous avons soumis Mafia Casino au regard critique d’un perfectionniste helv\u00e9tique. Son \u00e9valuation rigoureuse se focalise sur la rapidit\u00e9 de l’interface, le rendu graphique des jeux, la stabilit\u00e9 des logiciels et la constance de la plateforme. Ces crit\u00e8res sont essentiels pour une immersion totale et une exp\u00e9rience conforme aux standards suisses de qualit\u00e9.<\/p>\n
Le Live Casino est le domaine le plus exigeant. Une faible latence ou un flux hach\u00e9 peut g\u00e2cher l’exp\u00e9rience du jeu en temps r\u00e9el. Nos tests sur les tables de blackjack, roulette et autres jeux d’\u00e9mission chez Mafia Casino \u2013 fournis par des leaders comme Evolution ou Pragmatic Play Live \u2013 montrent une grande stabilit\u00e9. La qualit\u00e9 vid\u00e9o s’ajuste vite et intelligemment selon la bande passante, en privil\u00e9giant toujours la fluidit\u00e9. Les interactions avec le croupier, les mises plac\u00e9es et les r\u00e9sultats s’affichent avec un d\u00e9lai minime, imperceptible pour le joueur. Cette optimisation pouss\u00e9e est essentielle pour recr\u00e9er l’ambiance authentique et dynamique d’une table physique. Le public suisse, habitu\u00e9 \u00e0 la qualit\u00e9, est intransigeant sur ce point.<\/p>\n
C’est sur le terrain de jeu que la technique subit l’\u00e9preuve du feu. Les machines \u00e0 sous, avec leurs graphismes denses et leurs animations bonus nombreuses, constituent un test parfait. Sur une grande s\u00e9lection analys\u00e9e, des jeux traditionnels aux machines \u00e0 sous contemporaines, les qualit\u00e9s restent remarquables. Les rouleaux d\u00e9filent sans \u00e0-coup, les figures s’animent en parfaite synchronisation, et les tours gratuits ou de prime se lancent et se poursuivent avec une fluidit\u00e9 parfaite. Pour les jeux de table comme le jeu de 21 ou la roulette classique, la physicalit\u00e9 des cartes servies ou de la bille qui d\u00e9c\u00e9l\u00e8re sur la roue est reproduite de mani\u00e8re cr\u00e9dible et fluide. Cette constance permet une immersion compl\u00e8te. Le joueur n’est jamais sorti hors de l’session par un bug ou un lag.<\/p>\n
Outre l’aspect technique, cette fluidit\u00e9 omnipr\u00e9sente a un impact profond sur l’exp\u00e9rience d’ensemble. Elle r\u00e9duit la charge mentale. Elle offre au joueur de se concentrer sur sa tactique et le d\u00e9roulement du jeu, sans interf\u00e9rence parasite. Elle accro\u00eet le sentiment de contr\u00f4le et de fair play, car chaque mouvement trouve un \u00e9cho imm\u00e9diat \u00e0 l’moniteur. Dans les jeux vifs comme les slots ou le lightning roulette, cette r\u00e9activit\u00e9 devient m\u00eame une partie du plaisir du jeu. L’investissement technique de Mafia Casino dans l’optimisation des animations se traduit donc par un confort d’usage accru, une immersion accrue et une sensation de professionnalisme. Cela r\u00e9pond parfaitement \u00e0 la recherche d’excellence du joueur suisse.<\/p>\n
L’analyse approfondie des performances d’animation de Mafia Casino, r\u00e9alis\u00e9 avec l’exigence du march\u00e9 suisse, aboutit \u00e0 un constat positif. La plateforme montre une ma\u00eetrise technique robuste et coh\u00e9rente \u00e0 tous les niveaux, du lobby g\u00e9n\u00e9ral aux jeux les plus gourmands en ressources. La fluidit\u00e9 y est un standard, pas une option. Elle procure une exp\u00e9rience sans friction qui tient compte du temps et de l’attention du joueur. Sur desktop ou mobile, en jeu virtuel ou en live, la constance des performances est notable. Pour le perfectionniste suisse, dont la patience face aux d\u00e9fauts techniques est limit\u00e9e, Mafia Casino procure un environnement de jeu fiable, r\u00e9actif et parfaitement huil\u00e9. Il m\u00e9rite sa place parmi les op\u00e9rateurs de r\u00e9f\u00e9rence pour ceux qui privil\u00e9gient une ex\u00e9cution impeccable autant que le divertissement propos\u00e9.<\/p>\n
L’exp\u00e9rience mobile repr\u00e9sente une portion grandissante de l’activit\u00e9, et sa performance est donc d\u00e9terminante. La version mobile de Mafia Casino, de m\u00eame que la version navigateur mobile, affiche une optimisation solide. Les animations sont adapt\u00e9es aux \u00e9crans tactiles, avec des gestuelles fluides pour naviguer. Les jeux conservent leur aspect visuel et leur r\u00e9gularit\u00e9, m\u00eame sur des smartphones dat\u00e9s. La transition entre le Wi-Fi et les donn\u00e9es mobiles (4G\/5G) se fait g\u00e9n\u00e9ralement sans coupure brutale de la partie en cours. Cette capacit\u00e9 \u00e0 offrir une exp\u00e9rience aussi lisse, ind\u00e9pendamment de l’appareil, est un avantage consid\u00e9rable pour conqu\u00e9rir le joueur suisse moderne, souvent nomade et qui demande la m\u00eame qualit\u00e9 d’exp\u00e9rience en tout lieu et \u00e0 tout instant.<\/p>\n
Notre examen s’appuie sur une s\u00e9rie de tests r\u00e9els et r\u00e9p\u00e9tables. L’\u00e9tude a \u00e9t\u00e9 effectu\u00e9e sur divers appareils : un ordinateur r\u00e9cent, un appareil interm\u00e9diaire et un mobile haut de gamme. Nous avons aussi examin\u00e9 diverses connexions, fibre et r\u00e9seau cellulaire 4G\/5G. Les crit\u00e8res examin\u00e9s sont le temps de chargement de le site et des jeux, la fr\u00e9quence d’images par seconde pendant les parties, et l’absence de latence ou de saccades lors des animations de mise en jeu, de tirage des cartes ou de tour des rouleaux. La r\u00e9gularit\u00e9 du flux vid\u00e9o en live casino, particuli\u00e8rement fragile, a \u00e9t\u00e9 surveill\u00e9e avec attention. Enfin, nous avons v\u00e9rifi\u00e9 la persistance de cette fluidit\u00e9 \u00e0 travers l’ensemble du site, du lobby aux jeux en passant par les menus du compte.<\/p>\n
Le joueur suisse poss\u00e8de des attentes pr\u00e9cises. Impr\u00e9gn\u00e9 d’une culture o\u00f9 la pr\u00e9cision horlog\u00e8re et l’excellence technique sont essentielles, il r\u00e9clame la m\u00eame perfection pour ses divertissements en ligne. Une animation fluide transcende le simple aspect esth\u00e9tique. Elle t\u00e9moigne du professionnalisme et du s\u00e9rieux de l’op\u00e9rateur. Elle influence directement le confort visuel, la rapidit\u00e9 des d\u00e9cisions \u2013 un point crucial au blackjack ou \u00e0 la roulette en direct \u2013 et m\u00eame la perception de l’\u00e9quit\u00e9 du jeu. Un logiciel qui rame ou une interface lente engendre de l’irritation, et peut \u00e9veiller une m\u00e9fiance envers le syst\u00e8me. Pour Mafia Casino, contr\u00f4ler cette fluidit\u00e9 est un enjeu fondamental. C’est la cl\u00e9 pour gagner la confiance d’un march\u00e9 s\u00e9lectif et fournir une exp\u00e9rience qui se distingue par sa fiabilit\u00e9 et son fini technique.<\/p>\n