/* 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":140469,"date":"2026-06-10T21:07:53","date_gmt":"2026-06-10T21:07:53","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=140469"},"modified":"2026-06-10T21:07:53","modified_gmt":"2026-06-10T21:07:53","slug":"casino-spingranny","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/casino-spingranny\/","title":{"rendered":"Game Right Stay Happy Win Honestly with Spingranny Casino across Australia"},"content":{"rendered":"
\n\"Casino<\/p>\n

Welcome to spingranny live chat<\/a> Casino. View us as your main hub for online gaming in Australia, a place that’s lively, fair, and built around you. My job is to guide you through a platform that follows one strong commitment: to help you Play Well, Feel Good, and Win Fair. Aussie players aren’t satisfied with hitting a button. They want a place they can depend on, where the thrill of the game comes with top-notch service, strong rewards, and true security. Arrive at our site and you’ll feel it straight away\u2014the energy of top pokies, live dealer tables, and classic games, all chosen with your pleasure as the focus. Let me reveal to you how Spingranny does things differently, by making your time and confidence the primary focus.<\/p>\n

Our Approach: Enjoy Gaming, Feel Good, Win Fair<\/h2>\n

Spingranny Casino is built on a clear, three-part philosophy that shapes everything we do. “Play Well” means we give you a outstanding collection of games from the planet’s top developers. You enjoy fluid gameplay, crisp graphics, and clever features that perform on any device you’re using. “Stay Positive” is focused on more than the gaming experience. It’s the setting we build: helpful, responsible, and optimistic. We provide real tools for safe play, maintain our terms transparent, and provide customer support that solves problems. We desire your time here to be truly good. Then there’s “Win Fair.” This is our rock-solid commitment to fairness. We hold a official licence, utilize certified Random Number Generators for every single outcome, and process your withdrawals without needless delays. You should be able to trust every win. This three-part concept isn’t mere promotion. It’s the true plan we follow to guarantee you’re happy.<\/p>\n

A Premier Gaming Library for Australian Players<\/h2>\n

Step into our gaming library. You can explore a world of choice and quality waiting. After spending time with our collection, I can assure you it’s packed with hundreds of the pokies Aussies love. You can enjoy classic fruit machines right next to video slots packed with features, immersive themes, and progressive jackpots that are truly life-changing. And that’s just the beginning. Head to our Live Casino for the thrill of real-time play. Professional dealers host blackjack, roulette, and baccarat, broadcast in sharp HD from professional studios. If you prefer strategy, our digital table games section offers plenty with plenty of poker, craps, and other variants. We pick every title for its fun factor, its fairness, and how well it works on mobile. Your go-to game is always within reach, whether you’re at home or traveling.<\/p>\n

Special Bonuses & Promotions at Spingranny<\/h2>\n

Your play receives a serious boost from the start. Our welcome package is made just for new Australian members. I enjoy seeing players get extra value, and our intro offers are a perfect launch into the action. They often include matched deposits and free spins on popular pokies. The good stuff doesn’t end after your first deposit, either. Stick with Spingranny and you’ll see a rotating calendar of promotions. Look out for weekly reload bonuses, cashback offers to offset a slow streak, exciting tournaments with leaderboard prizes, and the occasional surprise drop of free spins. We reward loyalty properly, so our promotions come with wagering requirements that are clear and achievable. It’s our means of saying thanks, and it adds a pleasant bit of extra anticipation to your gaming.<\/p>\n

Spingranny’s Welcome Offer<\/h3>\n

Starting your Spingranny adventure is exciting, and our welcome offer is a big reason why. The specific numbers can change, but I can tell you how we set up it. We design our welcome package to give you a strong, extended boost over your first few deposits. Picture getting a healthy percentage matched on your first deposit, usually paired with a bundle of free spins on a chosen hit slot. This setup means more funds to explore our library and more opportunities to hit winning combos. Just make sure you visit the promotions page to see the exact current offer. Don’t forget to enter any required bonus codes when you deposit. It’s the ideal, boosted start to see why so many savvy Australian players are discussing Spingranny.<\/p>\n

Protected, Secure & Mindful Gaming<\/h2>\n

\"SpinGranny<\/p>\n

Your wellbeing and health are the bedrock of our “Feel Good” promise. You need to know that when you game with us, you’re in a safe space. We use modern SSL encryption to shield your personal details and financial transactions, maintaining them completely private. Independent auditors test our games for fairness. This guarantees that every spin, every card dealt, and every dice roll is random and unbiased. Most importantly, we are dedicated supporters of responsible gaming. Our platform offers you practical tools to control your play. You can set deposit limits, use session reminders, opt for self-exclusion, and find direct links to professional support groups like Gambling Help Online. Playing well means playing safely. We are your ally in keeping the experience positive and balanced.<\/p>\n

Transactions Made Easy for Australians<\/h3>\n

Easy, reliable banking is a must for any good casino experience. At Spingranny Casino, we’ve designed our https:\/\/www.forbes.com\/councils\/forbestechcouncil\/2021\/02\/25\/not-just-a-game-online-sports-betting-and-the-rise-of-corrosive-technology\/<\/a> payment methods for the Australian market. You can load your account without hassle using trusted options like Visa and Mastercard, popular e-wallets, and direct bank transfers. Cashing out your winnings is just as simple. We process withdrawal requests swiftly, because you merit to enjoy your success without a long wait. All our transactions are in Australian Dollars (AUD), so you won’t run into annoying currency conversion fees. The whole system is built for transparency. We always list the minimums, maximums, and processing times plainly. You have full control of your money at every stage.<\/p>\n

How Spingranny Stands Out in Australia<\/h2>\n

The online casino market is packed, but Spingranny shines for Australian players by sticking to our core philosophy. It’s the blend that works: a thrilling, diverse game selection from top-tier providers, paired with a real devotion to fair play and customer care. https:\/\/tracxn.com\/d\/companies\/oranje-casino\/__eVoWNrd7skQfHJbBqg8UNZVev9L_6-j4T2aFcqbEe_s<\/a> Our platform is designed for the modern Aussie player. It’s fully adapted for mobile, so you get a smooth session on your smartphone or tablet. Then include our tailored promotions, a dedicated local support team, and our constant focus on responsible gaming. It forms a complete package that’s tough to match. We’re not just another casino. We’re a community-focused spot where your enjoyment and your security are what we strive for.<\/p>\n

Spingranny Casino gives Australian players a full-throttle online gaming experience based on three pillars: Playing Well, Feeling Good, and Winning Fair. You get an extensive library of top games and generous bonuses. You also get strong security and support that grasps the local scene. Every part is designed with your enjoyment front of mind. Come and join a community where excitement meets integrity. Every spin here brings the promise of fun and fair play. See what makes Spingranny different. Your Australian casino adventure is waiting when you are.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Welcome to spingranny live chat Casino. View us as your main hub for online gaming in Australia, a place that’s lively, fair, and built around you. My job is to guide you through a platform that follows one strong commitment: to help you Play Well, Feel Good, and Win Fair.\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-140469","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140469","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=140469"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140469\/revisions"}],"predecessor-version":[{"id":140470,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140469\/revisions\/140470"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=140469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=140469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=140469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}