/* 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":90696,"date":"2026-05-23T19:33:10","date_gmt":"2026-05-23T19:33:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=90696"},"modified":"2026-05-23T19:33:11","modified_gmt":"2026-05-23T19:33:11","slug":"rainbow-wide-range-is-an-additional-having-three-some-other-video-game-giving-a-max-multiplier-off-500x","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/rainbow-wide-range-is-an-additional-having-three-some-other-video-game-giving-a-max-multiplier-off-500x\/","title":{"rendered":"Rainbow Wide range is an additional, having three some other video game giving a max multiplier off 500x"},"content":{"rendered":"

Bloodstream Suckers is a superb analogy, where you choose from three coffins to help you discover various other advantages<\/h2>\n

The most important thing understand is the cards thinking by themselves plus the others, reported by users, is as simple as pie. On the internet Black-jack try an all time vintage, as well as Metaspins you can enjoy to experience towards a variety of crypto blackjack tables using all supported currencies. After you have made that possibilities, you pay to suit your choice and when you correctly picked the fresh closest, you profit. If you have never played before it is as simple as choosing if or not or not we wish to bet.<\/p>\n

During the You<\/h2>\n

Megaways was an alternative user favorite, providing different numbers of symbols on each reel for each and every twist, carrying out to thousands of a means to earn.<\/p>\n

Users searching for refined graphics and you can imaginative possess is also mention specific of the best NetEnt slots from the controlled web based casinos. The best online casinos will work which have between 20 to fifty slot studios. Play’n Wade is actually a Swedish slot developer that renders a number of an educated real money ports at the web based casinos. S. web based casinos, Aristocrat stands out to have delivering unpredictable game play and you can recognizable local casino-flooring experiences, and work out their titles some of the most familiar to Western professionals. But it’s really worth knowing which these slot-manufacturers was and you can hence of the game is top.<\/p>\n

Hence, there must be an equilibrium on the gambler’s account and that was used to bet on the brand new video game which can be not as much as which knowledge. The fresh new terms and conditions of this promote range from time and energy to date. The brand new gates of olympus super spread ability contributes more adventure. It fascinating six-wheel identity spends the new spend-anywhere program.<\/p>\n

Carrying out Summer fourth, players can contend to possess a portion away from \ufffd2,000,000 and revel in an exciting the new solution to earn that have Controls Falls! Each day enjoys a reward pool out of \ufffd40,000 for the tournaments and \ufffd30,000 to the prize falls, in addition to bucks advantages, profitable bet multipliers, free spins, and quick incentive prizes. Throughout the so it thirteen-day feel, participants can take part in day-after-day tournaments and you may prize drops, having ten,000 each day prizes readily available. The fresh new upcoming Drops & Gains venture of Pragmatic Play needs place out of , providing an impressive full prize pond of \ufffdsix,370,000. These enjoyable harbors and you will a host of even more harbors make Drops & Victories an exciting chance for users.<\/p>\n

Merely come across Pragmatic Play slots are part of the newest Falls & Victories strategy, it is therefore crucial that you follow the qualifying game listing considering. Certain ports can get lower min bets, however you will need to put that much within the or maybe more to own the twist so you can matter. You will need so you can decide-inside, which will make sure you’ve offered to the new strategy terms and you may criteria. Regardless if you are a seasoned player or not used to the realm of on the web slot game, the newest gambling establishment promotion is designed to promote fun and advantages during the a simple, exciting structure.<\/p>\n

All of our social slot tournaments is the easiest way so you’re able https:\/\/papaya-wins-casino.co.uk\/en-gb\/<\/a> to victory real cash honors. As a consequence of a simple combination, Practical Play’s bingo empowers web based casinos with all the devices they need to transmit a-game genuine to their brand name, offering players another, fresh bingo expertise in a common environment. Super Roulette 3000 is an exciting twist towards vintage casino online game, adding super multipliers, super bets, while the possible opportunity to land particular super victories around 3,000x Only deposit $20 or more via some of the recognized percentage tips. Dependent on your region, you will have to upload your documents sometimes during Betway subscription otherwise just before basic detachment.<\/p>\n

Online slots is online game out of opportunity, thus there is absolutely no wonders solution to help you earn much more. In the online casinos within the Canada, discover multiple type of slot machines readily available. You will see those sites featured to your the leading online casinos in the Canada list, and that means you know they’ve been totally secure. When you are the fresh launches you are going to function each week, it will require a gift to change the top selections, which means this number does not change as much since you you’ll expect. Enjoy Le Digger or any other extremely-ranked titles during the position internet sites below. Members can not only have the possibility to win at random granted Each day Award Falls, nonetheless can also be capable contend to own prize-using leaderboard positions in the Day-after-day and you will A week Competitions.<\/p>\n

If you are joining thanks to a mobile gambling enterprise software unlike within the internet browser, you’ll be able to instantly remain logged in the after. Particular internet can get request you to be certain that your term prior to redirecting you to definitely your brand new internet casino pro membership. Some athlete critiques is actually important out of advertising and marketing worthy of and you can game incentive volume, but full NetBet represents a strong and you can credible option for Uk participants. Particular user reviews report issues with withdrawals and you will support service, very skills can differ.<\/p>\n

You will have to financing your bank account if you would like play online casino games for real currency from the the newest online casino websites in britain. Respect issues make sense over time, and you will steady play often leads to raised perks instead a lot more chance. This type of incentives, when you are commonly reduced in worth, are in a wider assortment, in order to select the of them that actually work along with your gaming concept. For those who advertised this offer and you can financed your account that have ?five hundred, the fresh gambling establishment will give your an additional ?one,000 within the to relax and play loans. Quite often, you might merely discover these types of rewards when creating your first put towards casino. Those web sites explore magnificent invited proposes to attract the brand new players and you will exciting constant proposes to have them returning.<\/p>\n

Multi-accounting is precisely prohibited and you can implemented thanks to advanced verification process. Betpanda prides by itself to your that have no deposit costs to have crypto and you will ensuring that withdrawal moments continue to be not as much as 2 hours usually. Transactions is processed almost instantaneously through supported cryptocurrencies in addition to Bitcoin, Ethereum, Tether, while others. The fresh platform’s loyalty program advantages effective profiles having cashback, reloads, and you can VIP advantages. During the Bitcoin, our during the-breadth critiques leave you an obvious picture of the leading Bitcoin friendly gambling enterprise internet sites, working out for you build the best choice and see a knowledgeable cities to play during the 2026. We’ve cautiously browsed and examined the big 5 Bitcoin gambling enterprises, investigating their bonuses, online game options, fee options, and support service.<\/p>\n

While you are there are several debateable providers, you will find of a lot legit crypto casinos hold certificates. You can come across anybody, signup, deposit, look at the \ufffdPromotions\ufffd page and you will signup. Most of our very own necessary crypto casinos work on individuals slot tournaments one you could take part in. Have you any idea you could potentially take part in slot competitions and you may victory elements of incredible honor pools?<\/p>\n","protected":false},"excerpt":{"rendered":"

Bloodstream Suckers is a superb analogy, where you choose from three coffins to help you discover various other advantages The most important thing understand is the cards thinking by themselves plus the others, reported by users, is as simple as pie. On the internet Black-jack try an all time vintage,\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-90696","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/90696","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=90696"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/90696\/revisions"}],"predecessor-version":[{"id":90697,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/90696\/revisions\/90697"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=90696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=90696"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=90696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}