/* 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":142645,"date":"2026-06-12T10:10:14","date_gmt":"2026-06-12T10:10:14","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=142645"},"modified":"2026-06-12T10:10:14","modified_gmt":"2026-06-12T10:10:14","slug":"sign-up-and-bet-live-at-casino-infinity-begin-the-action-instantly-in-canada","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/sign-up-and-bet-live-at-casino-infinity-begin-the-action-instantly-in-canada\/","title":{"rendered":"Sign up and Bet Live at Casino Infinity Begin the Action Instantly in Canada"},"content":{"rendered":"
\n\"Casino<\/p>\n

Canadian players seeking a live casino won’t have to wait https:\/\/infinitycasinoo.ca\/<\/a>. Casino Infinity gets you into the game fast. You can register and find yourself at a real table with a live dealer in only a short time. The emphasis is on quick access, with a solid range of classic live games you can experience from your living room or on your phone. With a simple sign-up and steady streams, Casino Infinity delivers the authentic feel of a casino floor straight to you, no matter where you are in the country.<\/p>\n

What Makes Casino Infinity’s Live Casino Stand Out?<\/h2>\n

Casino Infinity’s live dealer section pulls ahead by concentrating on three things: reliable tech, professional dealers, and a strong game mix. The platform collaborates with top live game studios to provide clear, high-definition streams with very little delay. That’s essential when you’re betting in real time. The dealers know their games inside out, and they offer a friendly, professional presence to the table. This provides the social piece that’s usually absent from digital play. For Canadians, it means a dependable and engaging alternative to the casinos in Toronto or Montreal, with no travel required.<\/p>\n

Captivating Gameplay and Interface<\/h3>\n

The live casino interface is simple to use. Making bets, reviewing your history, and communicating with the dealer takes place on a clean layout. Some game shows include extra features like statistics or betting trends, and multiple camera angles make things interesting. This design enables beginners and experts alike zero in on the game, not on figuring out controls. A stable connection is a priority, which maintains games like live blackjack or roulette flowing smoothly and fairly.<\/p>\n

Dedicated Canadian-Friendly Features<\/h3>\n

Casino Infinity knows its audience. The platform adapts its service for Canadian players in a few smart ways. You’ll encounter some dealers who use both English and French. All money transactions use Canadian dollars, so you skip exchange fees. Customer support operates with local preferences and time zones in mind. This attention to detail, from the game selection to the banking, creates a comfortable and familiar experience whether you’re logging on from Calgary or St. John’s.<\/p>\n

Trusted Transactions for Canadian Users<\/h2>\n

Casino Infinity provides a variety of secure payment methods that function effectively in Canada. You can deposit using Interac e-Transfer, which is widely used and instant across the country. Credit cards like Visa and Mastercard are supported, along with several e-wallets. The site uses SSL encryption to protect every transaction. Deposits go through immediately, so you can start playing right away. Withdrawal times vary by your chosen method, but they’re typically prompt, with Interac often being the fastest. Everything is done in Canadian dollars, so you get the exact amounts without surprise conversion fees.<\/p>\n

The Effortless Registration Process at Casino Infinity<\/h2>\n

Beginning at Casino Infinity is quick and protected. From the homepage, just click the prominent “Sign Up” or “Join Now” button. The form requires basic details: your name, date of birth, email, and phone number. This content is safeguarded with strong encryption. You can finish this first step in under two minutes. An account verification link will arrive in your email. Click it, and you’re all set to make a deposit and head into the live casino lobby. For most people, the whole journey from clicking sign-up to making your first live bet takes less than ten minutes.<\/p>\n

A Walk Through the Live Dealer Game Lobby<\/h2>\n

When you enter Casino Infinity’s live casino, you’ll find a bustling lobby filled with tables. The staples are all there: Live Blackjack, Live Roulette (including European and American styles), and Live Baccarat. Each features different betting limits to accommodate casual players and serious ones. But the lobby also shines with its live game shows. Titles like Dream Catcher, Monopoly Live, and Deal or No Deal mix gambling with entertaining hosts and big bonus wheels. The lobby clearly shows each table’s limits, how many players are there, and the stream quality, so you can pick your spot before you enter.<\/p>\n

Exclusive and High-Limit Tables<\/h3>\n

If you are looking for something more private or you’re playing for higher stakes, Casino Infinity often has private and high-limit tables. These rooms typically have much larger betting limits, fewer players, and sometimes special rule variations or side bets. Offering these tables shows the platform’s effort to serve different types of players. Someone seeking a premium, high-stakes session can locate it right alongside the standard tables.<\/p>\n

Maximizing Your Launch: Sign-up Bonuses for Live Play<\/h2>\n

Recent Canadian members at Casino Infinity usually obtain a welcome bonus. Frequently, you can utilize this on live dealer games, but you must read the terms. Verify the wagering requirements, how much each game contributes to those requirements, and the time limits. Employing a bonus on live play can provide you more time at the tables to try different strategies. Remember, live games often contribute less to wagering requirements than slot games do. Strategize your play with this in mind if you wish to convert bonus funds into cash you can withdraw.<\/p>\n

Mobile Live Gaming: Entertainment Anywhere<\/h2>\n

You won’t need a computer to play live at Casino Infinity. The whole experience functions flawlessly on phones and tablets. Whether you utilize your mobile browser or a dedicated app, all the features are there. The interface optimizes the live stream and betting controls for a compact display, allowing you to place chips with a tap. This means you can take part of live blackjack or try a live roulette wheel from your commute, a coffee shop, or your couch. As long as your internet connection is stable, the casino goes with you.<\/p>\n

Common Questions<\/h2>\n

What is the registration process at Casino Infinity from Canada?<\/h3>\n

It’s a simple process. Go to the Casino Infinity website and select the join button. Fill in the form with your personal details like your name, email, and birth date. Then, activate your account using the link provided in your email. The entire process is optimized for quickness, so you can deposit and join a live table very quickly.<\/p>\n

Are there options to play live dealer games for free at Casino Infinity?<\/h3>\n

No. Live dealer games require real money bets. They use real croupiers and real-time play, which is what gives the authentic casino feel. While many casinos provide free demo versions of slot games, the live tables require a funded account.<\/p>\n

What’s the minimum age to gamble at Casino Infinity in Canada?<\/h3>\n

The legal gambling age in Canada is 18 or 19, based on your province. Casino Infinity requires all players to be of legal age where they live. You will verify this during registration, and you may need to provide ID to verify your age later.<\/p>\n

Are the real-time casino games at Casino Infinity fair?<\/h3>\n

Yes. Casino Infinity acquires its games from well-known software providers with live studios are licensed and regulated. The results come from physical actions you can see, like a dealer spinning a real roulette wheel or dealing real cards. These providers undergo regular audits for fairness, guaranteeing the games are transparent.<\/p>\n

What should I do if my live game stream is buffering?<\/h3>\n

Start by checking your own internet connection. Attempt to close other apps or tabs that might be using bandwidth. If things are still choppy, look for an option to lower the stream quality inside the game window. You can also get in touch with Casino Infinity’s customer support. They might have specific advice or have information on any issues on their end.<\/p>\n

What is the process for a deposit using Interac?<\/h3>\n

Head to the cashier or banking page. Select Interac as your deposit method and enter the amount. The site will then guide you to log into your online banking to complete the transfer. Interac e-Transfer deposits are generally instant and secure, and because they’re in Canadian dollars, they’re a top choice for many players here.<\/p>\n

Can I interact with the live dealer at Casino Infinity?<\/h3>\n

Yes, you can. A major component of the live experience is the capability to chat with the dealer and sometimes other players using a text function. Dealers will greet you, answer comments, and respond to questions about the game. This engagement is what makes the live casino feel authentic and immersive.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Canadian players seeking a live casino won’t have to wait https:\/\/infinitycasinoo.ca\/. Casino Infinity gets you into the game fast. You can register and find yourself at a real table with a live dealer in only a short time. The emphasis is on quick access, with a solid range of classic\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-142645","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142645","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=142645"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142645\/revisions"}],"predecessor-version":[{"id":142646,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/142645\/revisions\/142646"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=142645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=142645"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=142645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}