/* 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":139907,"date":"2026-06-10T16:07:35","date_gmt":"2026-06-10T16:07:35","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=139907"},"modified":"2026-06-10T16:07:35","modified_gmt":"2026-06-10T16:07:35","slug":"blaze-spins-casino-where-fun-meets-fair-play-in-canada","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/blaze-spins-casino-where-fun-meets-fair-play-in-canada\/","title":{"rendered":"Blaze Spins Casino \u2013 Where Fun Meets Fair Play in Canada"},"content":{"rendered":"
\n\"First<\/p>\n

Step into Blaze Spins Casino, a leading destination for online gaming in Canada https:\/\/blazesspinscasino.com\/en-ca\/<\/a>. We created a place where the excitement of the spin is as important as our rock-solid promise of fair play. Register and you’ll find a vibrant selection of great games, player-friendly bonuses, and a community made for Canadians. Genuine adrenaline starts when you know you’re playing on a site you can trust. That’s the experience we aim for. We concentrate on the details, from the simplicity of navigation to that satisfying moment a game round plays out just right.<\/p>\n

Getting Started at Blaze Spins<\/h2>\n

Getting going with us is easy. Navigate to our registration page and submit the short sign-up form with your basic details. It requires about two minutes. Once your account is established and verified, go to the cashier to make your first deposit. Pick from our list of trusted Canadian payment options. Your welcome bonus will be added right away, set for you to explore our games. Maybe begin with a few of our featured slots or try a live dealer blackjack table to grasp the energy. A quick tip: verify your email and account details early. It makes claiming your first big win much simpler.<\/p>\n

We’re delighted to have you. We believe Blaze Spins will become your favorite online casino. Our team is always endeavoring to improve, adding new games every week and refining our offers based on what players tell us. We want your experience to stay fresh. From everyone at Blaze Spins, thank you for choosing a platform that mixes excitement with safety and fairness. Good luck. We trust you enjoy every spin, win, and game right here with us in Canada. Your adventure at a leading Canadian online casino commences today. We anticipate seeing you at the tables.<\/p>\n

The Blaze Spins Network and Help<\/h2>\n

When you become part of Blaze Spins, you’re becoming part of a community of Canadian players. We create this through social features, tournaments where you can move up the leaderboards, and by listening to your feedback. Our customer support team is the core of your experience. Contact them 24\/7 through live chat or email. These helpful, professional people handle everything from technical glitches to bonus questions. We want you to be supported. Your satisfaction is how we gauge our success, so we train our team to handle every inquiry with care and knowledge.<\/p>\n

Quick and Secure Banking for Canadians<\/h3>\n

We designed our money handling rapid and secure. Deposits are instant, so you can commence playing almost immediately. Most Canadian methods let you add funds as little as $10. When you win and want to take out, we process withdrawals quickly. Our finance team reviews requests fast, often within a day, so your money returns to your preferred Canadian method without a long wait. We’re clear about the whole process. There are no hidden fees, and we show the processing times for each payment option. E-wallet cashouts are usually the speediest, often completed within the same business day.<\/p>\n

Why Canadian Players Choose Us<\/h3>\n

The online casino market is crowded. Blaze Spins claims its spot by perfecting the details Canadians care about. We combine a huge selection of quality games from top studios with a platform designed for CAD and strong security. Our bonuses offer real value with fair rules. The mobile experience works without a hitch, and our customer care actually responds. More than the features, our core belief in fair play and responsible gaming sets us apart. We’re a trusted destination where fun and integrity coexist. The best feedback we get is about how flawless and reliable our service is. That’s what we’re most proud of.<\/p>\n

Sign-Up Offers and Continuous Deals<\/h2>\n

We start you off with a generous welcome and continue the incentives. Your journey begins with a welcome package that enhances your first play. It often blends a match bonus on your initial deposit with a selection of free spins on popular slots. Our generosity continues after that. We provide a regular lineup of promotions for our players: free spins offers, reload bonuses, cashback deals, and tournaments with substantial prize pools. We ensure our promo rules clear and fair, so you can concentrate on having fun. Get into the routine of visiting our Promotions page to see what’s new. Our most loyal players obtain extra perks through a organized VIP program, which features personal rewards, higher cashout limits, and a dedicated account manager.<\/p>\n

Casino on Mobile: Enjoy Everywhere, Whenever<\/h3>\n

Your casino should travel with you. That’s why Blaze Spins operates smoothly on mobile. Just access your smartphone or tablet browser\u2014no app download needed, so you save space. The interface is polished and quick, giving you the full experience with crisp graphics and smooth gameplay on both iOS and Android. On a commute, relaxing at home, or taking a break? A full casino is directly in your palm. Managing your money on mobile is likewise straightforward, with a protected cashier for transactions anywhere. Every promotion we provide is completely accessible on your mobile device.<\/p>\n

Our Dedication to Responsible Gambling<\/h3>\n

We take our duty to provide a safe environment seriously. Gaming should be fun and remain within your limits. To help, we give you practical tools to regulate your play. You can set deposit limits, loss limits, and session reminders. You can also opt to take a break or self-exclude if you feel the need. We work with responsible gaming groups like GamCare and Gamblers Anonymous to offer support resources. Playing responsibly ensures your time at Blaze Spins rewarding and sustainable for the long run. You’ll find all these tools and support links within your account dashboard, placing you in charge.<\/p>\n

Our Canada-Centric Gaming Experience<\/h2>\n

Blaze Spins Casino is designed for Canada. We get what local players prefer. That’s why all transactions utilize Canadian Dollars (CAD). No more puzzling exchange rates or extra fees. Our payment options suit Canada perfectly, with preferred like Interac, Instadebit, and iDebit for fast, secure deposits and cashouts. Our support team knows the Canadian scene inside out. They’re here to help with a friendly attitude, ensuring your time with us smooth. We even align our promotions and feature games around Canadian holidays and big sports events, so the fun always feels close to home.<\/p>\n

Game Choice That Sparks Joy<\/h3>\n

Enter our game lobby and you’ll find thousands of titles. We partner with the best software studios\u2014think NetEnt, Microgaming, Pragmatic Play, and Evolution\u2014to maintain our library fresh and growing. Are you after life-changing progressive jackpots? Do you appreciate the stories in video slots? Maybe you prefer to test your skill at blackjack or roulette. We have the games to suit. Our live casino section delivers the real casino floor to you, with professional dealers streaming in real time. It\u2019s an authentic atmosphere, right from your couch. We pick our games carefully, guaranteeing to include plenty of high-RTP (Return to Player) slots and table games with a low house edge for players who focus on strategy.<\/p>\n

Commitment to Fair Play and Security<\/h3>\n

Your safety is our primary concern. We possess a strict license from a respected gaming authority. This implies we uphold high standards of integrity and submit to regular outside checks. Every game runs on certified Random Number Generators (RNGs). This guarantees that each card dealt, every dice roll, and all reel spins are 100% random. We implement strong 256-bit SSL encryption, the same technology banks rely on, to shield your personal and financial information. For us, fair play is more than a slogan. It’s the audited, transparent core of our operation. You can view the payout percentages for our games anytime. We stand for being open.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Step into Blaze Spins Casino, a leading destination for online gaming in Canada https:\/\/blazesspinscasino.com\/en-ca\/. We created a place where the excitement of the spin is as important as our rock-solid promise of fair play. Register and you’ll find a vibrant selection of great games, player-friendly bonuses, and a community made\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-139907","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/139907","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=139907"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/139907\/revisions"}],"predecessor-version":[{"id":139908,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/139907\/revisions\/139908"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=139907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=139907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=139907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}