/* 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":140311,"date":"2026-06-10T19:38:53","date_gmt":"2026-06-10T19:38:53","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=140311"},"modified":"2026-06-10T19:38:53","modified_gmt":"2026-06-10T19:38:53","slug":"obtenir-lappli-mafia-casino-pour-android-et-ios-au-canada","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/obtenir-lappli-mafia-casino-pour-android-et-ios-au-canada\/","title":{"rendered":"Obtenir l’Appli Mafia Casino pour Android et iOS au Canada"},"content":{"rendered":"
\n\"online<\/p>\n

Les joueurs canadiens qui d\u00e9sirent un casino dans leur poche peuvent se diriger vers l’application Mafia Casino. Cr\u00e9\u00e9e pour Android et iOS, cette appli vous offre un acc\u00e8s direct \u00e0 des dizaines de jeux, \u00e0 des bonus et \u00e0 une interface pens\u00e9e pour les \u00e9crans tactiles. Son installation est simple et adapt\u00e9e au Canada. Vous pariez o\u00f9 vous voulez, sans compromettre en qualit\u00e9 ou en s\u00e9curit\u00e9.<\/p>\n

Pour quelle raison T\u00e9l\u00e9charger l’Application Mafia Casino ?<\/h2>\n

L’application native de Mafia Casino est bien plus qu’afficher le site web sur un petit \u00e9cran. Elle est construite sp\u00e9cifiquement pour les mobiles. R\u00e9sultat ? Les jeux s’affichent plus vite, les menus ob\u00e9issent du doigt et vous recevez des alertes pour les nouvelles promotions. L’appli est aussi plus fiable, ce qui limite les risques de coupure en plein milieu d’une partie. Pour un joueur au Canada, c’est l’outil le plus adapt\u00e9 pour un divertissement fluide.<\/p>\n

Configuration sur iPhone et iPad<\/h2>\n

Lorsque vous jouez depuis un appareil Apple mobile, le chemin est plus rapide. Trouvez simplement “Mafia Casino” dans l’App Store original d’Apple. R\u00e9cup\u00e9rez l’application v\u00e9rifi\u00e9e et ouvrez-la. Cette m\u00e9thode, supervis\u00e9e par Apple, procure une installation s\u00e9curis\u00e9e et des mises \u00e0 jour programm\u00e9es. L’appli est calibr\u00e9e pour les derni\u00e8res versions d’iOS, ce qui garantit un fonctionnement fluide sur tous les mod\u00e8les r\u00e9cents.<\/p>\n

S\u00e9curit\u00e9 et Autorisation sur l’Plateforme mobile<\/h2>\n

Mafia Casino consid\u00e8re la s\u00e9curit\u00e9 avec le maximum de s\u00e9rieux, y compris sur mobile. L’application utilise un chiffrement SSL de qualit\u00e9 bancaire, \u00e9quivalent \u00e0 celui de la version PC. Tes donn\u00e9es et vos transactions demeurent prot\u00e9g\u00e9es. L’op\u00e9rateur a une licence de jeu accr\u00e9dit\u00e9e, qui impose un cadre r\u00e9gul\u00e9 et des jeux justes. En tant que joueur canadien, vous pouvez vous amuser en toute confiance, sur une plateforme autoris\u00e9e et s\u00e9curis\u00e9e.<\/p>\n

Acquisition pour Appareils Android au Canada<\/h2>\n

Au Canada, les possesseurs d’un t\u00e9l\u00e9phone ou d’une tablette Android sont invit\u00e9s \u00e0 passer par le site web de Mafia Casino. Dirigez-vous sur la plateforme avec votre navigateur, trouvez la section de t\u00e9l\u00e9chargement et r\u00e9cup\u00e9rez le fichier APK. Avant de l’installer, vous aurez besoin de autoriser les “sources inconnues” dans les param\u00e8tres de s\u00e9curit\u00e9 de votre appareil. C’est une \u00e9tape habituelle pour toute application qui n’est pas sur le Google Play Store. Une fois install\u00e9e, un raccourci appara\u00eet sur votre \u00e9cran d’accueil pour un lancement imm\u00e9diat.<\/p>\n

Caract\u00e9ristiques Essentielles de l’Appli Mobile<\/h2>\n

Dans l’application, vous trouvez tout l’essentiel de Mafia Casino. La s\u00e9lection de jeux est compl\u00e8te : bandits manchots, jeux de table, casino live. Vous pouvez effectuer des d\u00e9p\u00f4ts et retraits de l’argent simplement, avec les options populaires au Canada comme Interac ou iDebit. G\u00e9rer son compte, contacter le service client ou voir les promotions en cours se fait en un instant. Le design est r\u00e9alis\u00e9 pour le tactile, avec des boutons et des menus qui rendent la navigation plaisante.<\/p>\n

Offres Sp\u00e9ciales via l’Application Mobile<\/h2>\n

Il est fr\u00e9quent que Mafia Casino accorde des offres sp\u00e9ciales \u00e0 ses utilisateurs mobiles. Un bonus de bienvenue plus important pour un premier d\u00e9p\u00f4t sur l’appli, des tours gratuits exclusifs… Les promotions habituelles, comme le cashback ou les tournois, y sont aussi disponibles. Un conseil : donnez r\u00e9guli\u00e8rement un \u0153il \u00e0 l’onglet “Promotions” dans l’application. Vous pourrez y d\u00e9couvrir une offre attrayante, r\u00e9serv\u00e9e rien que pour la communaut\u00e9 mobile canadienne.<\/p>\n

D\u00e9p\u00f4ts et retraits sur Mobile au Canada<\/h2>\n

G\u00e9rer son argent depuis l’application est facile et efficace https:\/\/mmafiacasino.com\/fr-ca\/<\/a>. Les solutions de paiement pr\u00e9f\u00e9r\u00e9s des Canadiens y sont tous disponibles : Interac, Visa, Mastercard, et plusieurs portefeuilles num\u00e9riques. Les d\u00e9p\u00f4ts sont ajout\u00e9s en quelques secondes, pour jouer sans attendre. Pour retirer vos gains, soumettez votre demande directement dans l’appli. Les temps de traitement respectent les standards du secteur. Tout se remporte au m\u00eame endroit, de mani\u00e8re regroup\u00e9e et fiable.<\/p>\n

R\u00e9solution des Difficult\u00e9s Courants de T\u00e9l\u00e9chargement<\/h2>\n

Une difficult\u00e9 lors de l’installation ? Apprenez comment le corriger. Sur Android, confirmez que l’option “Sources inconnues” est permise et que votre t\u00e9l\u00e9phone a suffisamment espace libre. Sur iOS, contr\u00f4lez que votre version du syst\u00e8me est \u00e0 jour. Parfois, r\u00e9initialiser son appareil ou se brancher \u00e0 un r\u00e9seau Wi-Fi plus fiable fait dispara\u00eetre le probl\u00e8me. Si la g\u00eane continue, le service client de Mafia Casino peut vous soutenir. Ils conseillent les joueurs canadiens \u00e0 travers chaque \u00e9tape.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Les joueurs canadiens qui d\u00e9sirent un casino dans leur poche peuvent se diriger vers l’application Mafia Casino. Cr\u00e9\u00e9e pour Android et iOS, cette appli vous offre un acc\u00e8s direct \u00e0 des dizaines de jeux, \u00e0 des bonus et \u00e0 une interface pens\u00e9e pour les \u00e9crans tactiles. Son installation est simple\u2026<\/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":[1],"tags":[],"class_list":["post-140311","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=140311"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140311\/revisions"}],"predecessor-version":[{"id":140312,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140311\/revisions\/140312"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=140311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=140311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=140311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}