/* 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":5397,"date":"2026-04-24T12:31:05","date_gmt":"2026-04-24T12:31:05","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=5397"},"modified":"2026-04-24T12:31:06","modified_gmt":"2026-04-24T12:31:06","slug":"rollino-casino","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/rollino-casino\/","title":{"rendered":"rollino Casino"},"content":{"rendered":"

The Eye of Horus \u0e0a\u0e19\u0e30\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14<\/a> site takes player protection definitely and has a range of in control gambling devices, as well as deposit, bet, losses and you can lesson restrictions, time-outs or enforced mind-exception. There\u2019s a handy FAQ section for these minor things, and you can reaction moments via email address is within 24 hours. Get into \u2018scratch\u2019 to the search bar to find the line of scratchcards, as well as Frogs Scratch, Piggy bank Scratch, Bucks Scratch, and even more. Table game will be the bread and butter of all casinos; the site could have been based up to him or her. Sexy picks are Lucky Leprechaun, Dragon Tiger, Max Megaways, Bonanza, and you can 9 Glaring Cashpots Megaways.<\/p>\n

After successful subscription, a verification email address would be sent. Players looking for a thorough online casino experience in an attention to the diversity and you can bonuses can find Rollino Casino tempting. With over 8,one hundred thousand game, as well as popular ports and you can table game, the site caters a wide listeners. When you are there are instances of unsolved things, the presence of fixed complaints and you can lead answers so you can consumer questions means an amount of activeness. There were instances of unexpected membership closures and you can disputed number, leading to anger one of certain profiles. That it complete approach helps potential profiles create told decisions.<\/p>\n

The new \u20actwenty five free chip will give you much more independence than the free spins also offers, however, all the about three no-deposit bonuses are worth saying. To have Australian players, I\u2019d highly recommend starting with the new no-deposit bonuses to check the new casino prior to committing your finance. I love which they pass on 325 free spins around the popular Pragmatic Play game, though the 40x wagering to the those people spins is on the new high front. Yes, Rollino\u2019s bonuses give pretty good worth with some standout has. As the players get better from the tiers, they can enjoy expanding cashback percentages, high withdrawal number, and you can shorter bonus wagering criteria.<\/p>\n

The new casino seem to status its bonus list to add competitive options. That it casino will bring a thorough suite out of has you to cater to each other the new and you can knowledgeable players. To do the new Rollino Casino log on, visit the official site, click the “Login” button, and you can get into your entered email address and you can password.<\/p>\n

This feature caters to players who prefer the privacy, protection, and you can capability of playing with digital currencies such as Bitcoin because of their gambling transactions. Rollino casino welcomes the future of payments by offering cryptocurrency options. We will look at everything that makes Rollino casino special, so you know what to look out for. You should safely assess an online casino beforehand to play and you can spending your bank account.<\/p>\n

The maximum cashout welcome out of this campaign is $20 after you finish the rollover criteria out of 50x winnings. Get to know short & easy the advantage codes, get the best give to you, and start successful! I prize loyalty and maintain something exciting for our normal players that have a packed agenda out of tournaments and you can recurring promotions.<\/p>\n

The advantage on your first deposit generally comes with a good one hundred% fits, which gives you double the gambling energy around the ports or the sportsbook. This makes it incredibly easy to create accumulators, specifically to the busy Saturdays when there are 40+ fittings around the multiple leagues. Out of a user feel angle, the new design of your sportsbook is clean and easy to navigate. Such speeds up are regularly updated and easy to access on the homepage or promotions tab, and make Rollino be much more such as a modern-day bookmaker than just a good static casino site. Rollino as well as runs enhanced chance promotions to have high-reputation matches, giving punters the opportunity to squeeze extra value out of best choices. The new sportsbook area of the Rollino online casino is actually tailored that have sports punters in mind.<\/p>\n

So all the real money players is also join in the new tables and start out of to the wagering now. It attains the features as the a quest box which is used to find the game you really want to play rather than wasting date. To give its players a superb gambling feel, a great choice out of table game are provided at the Rollino you to comes with blackjack, roulette, poker etc. This one is made for the new players who want to talk about the new game prior to playing with real money. Rollino Casino is consumer focused and has all the features you to are completely safe & court.<\/p>\n

So you can crown it all, Rollino.io constantly raises the stakes in terms of bonus codes and no deposit bonuses. Although they is also\u2019t be taken any more, investigating this page you’ll encourage nostalgia or make it easier to welcome upcoming exciting also offers out of this spectacular online casino. Don\u2019t skip a good opportunity to beat your rivals and you can win more money. Play more money game, specifically ports that have progressive jackpots, gather tournament things, and you can follow the leaderboard. Just find the you to you want to sign up and enjoy.<\/p>\n

Yes, the new Uk players registering at the Rollino are eligible to receive a good bonus out of 20 Free Spins up on subscription (Certain restrictions apply). Rollino effectively combines the size out of a huge worldwide casino that have the security, trust, and features you to players request. A one-date protection look at (KYC) required by worldwide laws. Play with one connect in this post so you can visit the new subscription page and choose “Sign up”. A week Cashback 5-25% Cashback to the a week play for people, however, specifically loyal players.<\/p>\n

The new casino talks about the most security features, although there are some parts they might reinforce. Speaking of principles to have making sure players be safe and you can secure when you are watching its favourite game. To have pokie couples, the option is massive\u2014everything from easy about three-reelers so you can advanced Megaways headings that have thousands of a way to win.<\/p>\n

The player reported that he had sent all the card details to have verification, but they had disappeared, leading to problems with completing the new withdrawal. The security Index ‘s the chief metric i use to define the new honesty, fairness, and you can quality of all the online casinos in our database. To be told you have to enter the crypto world so you can found winnings after you\u2019ve used real money so you can deposit is disgraceful and you can unfair Bonuses for new and you can existing players is a means to have online casinos so you can encourage the people to register and try its give out of game. We find customer service very important, as the its mission would be to make it easier to take care of one things you you’ll feel, such as subscription at the Rollino Casino, membership administration, withdrawal process, etc.<\/p>\n

Yes, the new Canadian players registering at the Rollino are eligible to receive a good bonus out of 20 Free Spins up on subscription (Certain restrictions apply). The new players are eligible to receive a plus out of 20 Free Spins up on subscription (No deposit required) and you can a keen unbeatable bonus out of two hundred% up to C$cuatro,five hundred + one hundred Free Spins on their first deposit. But do not invest it all under one roof\u2014as the you will be spinning those people reels 40 moments over prior to you to bonus bucks magically turns to the ‘real money’. The advantage count, and that swings wildly out of fifty so you can a whopping two hundred%, ‘s the more money it pile on best of your deposit on your player membership. However, wait, there is a catch\u2014your beloved casino morphs to the a detective, scrutinizing your information. After you prove you’re not a bot, behold the new free spin bonus extravaganza\u2014applicable to the a grand total of all the related game.<\/p>\n

Careful now, geniuses\u2014enter in your information like your online jackpot relies on it, as it does. Your browser falls out its digital baggage and you can gets willing to count your glossy the new gold coins. Keep your eyes peeled for it golden opportunity, as the Rollino Casino’s no deposit bonus is poised to set the new bar full of the new Australian online casino industry! Yes, the new Latvian players registering at the Rollino are eligible to receive a good bonus out of 20 Free Spins up on subscription (Certain restrictions apply).<\/p>\n","protected":false},"excerpt":{"rendered":"

The Eye of Horus \u0e0a\u0e19\u0e30\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 site takes player protection definitely and has a range of in control gambling devices, as well as deposit, bet, losses and you can lesson restrictions, time-outs or enforced mind-exception. There\u2019s a handy FAQ section for these minor things, and you can reaction moments via email\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-5397","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/5397","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=5397"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/5397\/revisions"}],"predecessor-version":[{"id":5398,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/5397\/revisions\/5398"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=5397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=5397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=5397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}