/* 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":35858,"date":"2026-05-18T18:09:11","date_gmt":"2026-05-18T18:09:11","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=35858"},"modified":"2026-05-18T18:09:13","modified_gmt":"2026-05-18T18:09:13","slug":"providing-stretched-options-to-own-wins-since-the-wilds-stay-on-the-brand-new-reels-getting-multiple-revolves","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/providing-stretched-options-to-own-wins-since-the-wilds-stay-on-the-brand-new-reels-getting-multiple-revolves\/","title":{"rendered":"Providing stretched options to own wins since the wilds stay on the brand new reels getting multiple revolves"},"content":{"rendered":"

During the Why don’t we Enjoy Harbors, you can search forward to no-deposit position game, and thus each of our harbors is going to be preferred in the 100 % free play means, very you don’t need to remember spending your wages. This really is needless to say very so many and you can annoying, specially when their mailbox becomes spammed that have unimportant advertising and marketing advertisements and you can meaningless desired offers. Most of the best application developers, such as NetEnt, Yggdrasil, and you may Microgaming have begun developing its slot online game owing to HTML5 technology. And work out one thing because convenient as you are able to, you can easily notice that the free slot video game you will find towards our very own website will be utilized regarding any sort of web browser you can contemplate.<\/p>\n

Pragmatic Gamble harbors is actually well-known having fulfilling highest criterion, giving a diverse and you may entertaining range loved by bettors global. To play free harbors on the internet now offers the ability to find the game’s novel procedures and you may great features without any economic risk. Very actually, you would still be depositing and you can withdrawing actual monetary value, but not, the fresh gameplay makes use of the newest digital gold coins as an alternative. You will still not be to try out privately with your own deposited money, instead might get digital gold coins and make use of such instead. You might enjoy next to other professionals, however, you may be playing and you will effective an online money, rather than real cash.<\/p>\n

Almost everything began which have “Larger Trout Bonanza”, where participants sign-up a pleasing fisherman into the a pursuit in order to reel for the big victories. Improving the opportunity of bigger wins by allowing more icon matches compared to amount of reels. Keeping game play unpredictable and you can engaging, which have unexpected bonuses which can rather raise wins.<\/p>\n

The lower the latest volatility, the more sometimes it pays while the lessen the wins<\/h2>\n

You’ll have full the means to access the entire library of 100 % free harbors demo on the one another ios and Android devices, which means that your favorite titles will always be within reach. The platform was created with mobile profiles in your mind, so you’re able to enjoy seamless gameplay whether you’re playing with a mobile otherwise a pill. You will also gain access to exclusive incentives, commitment rewards, and you may tournaments one to obtainable in totally free gamble means. Real-currency play mode genuine wins-whether it’s a modest payout otherwise a lives-changing jackpot. Fast-paced playing having immediate dumps and quickest withdrawal minutes within the the industry.<\/p>\n

“An evocative and you can Spinanga<\/a> entirely lovely conjuring of ingesting character out of more youthful like…” An early on woman enjoys an opportunity to conserve the latest passion for their own existence when she finds out that the blend-recording it generated to each other is also transport their particular back in time. An early on lady has a way to cut the new passion for their particular lifestyle when she finds out that the combine-tape they… The latest different are modern jackpot bonus rounds, which you may not be able to bring about. With the added bonus also offers, there is a financial connection even though there isn\ufffdt an enthusiastic upfront pricing. Around 3 hundred revolves more than 12 big date months regarding earliest put & invest regarding ?ten.<\/p>\n

With preferred modern jackpot game, build a cash deposit to face to help you victory the new jackpot awards! Use gambling enterprise bonus currency to tackle no-deposit slots free of charge yet victory real money. Decide to try the characteristics instead of risking your dollars – play a maximum of prominent totally free slot machines. ?? Silver & environmentally friendly colour plans ?? Horseshoes, pots off gold, & happy clover symbols App organization continue launching video game according to this type of themes having enhanced features and you may graphics.<\/p>\n

Whammy Bucks exhibits borrowing from the bank signs regarding the legs games when you’re Whammy Wilds possess people chasing after as much as 4X multipliers. Each other templates ability a cutting-edge keep-and-respin incentive and you will a chance to open additional whammy honors because of the filling up the whole monitor. Go after all of us to your social network \ufffd Every day postings, no deposit bonuses, the fresh new ports, and a lot more Share your own gains to your Pragmatic Play ports, get an alternative chance of successful that have Gambling establishment Master! Casino.guru is actually an independent way to obtain information about web based casinos and online casino games, not subject to one betting agent.<\/p>\n

Make the most of this type of gambling enterprise bonus offers playing online to give the game play and you can boost your probability of effective versus expenses extra. Never spend more than just you can afford to lose, also at best ?one put casinos online. For every icon rotates another type of matter incase you press the chance off to the right that, this may extremely pay back.<\/p>\n

Five Press Your own Chance symbols pays the actual second higher earnings, 12,five hundred coinsbined on the incentive possess, this is an excellent online game just in case you like the fresh new adventure of getting the ability to bet all of it for the a fortunate twist of one’s reels. You’ll experience the fresh new excitement of striking they huge during the slots when you find yourself avoiding landing for the a great Whammy and you can losing your winnings. The newest Why don’t we Enjoy Ports Weblog brings the current releases in order to ensure you might be constantly up to speed having fascinating the new releases otherwise the fresh winning move.<\/p>\n

Before gaming with real money, enjoy totally free slots so you can familiarise oneself having the game works<\/h2>\n

This will are very different sometime according to slot, however it is not absolutely all that challenging. Before you push the new spin switch on the a slot machine, you have got to put the level of your choice. When you’re the slots can also be trigger one another big and small gains, volatility is often a much better indication of the slot have a tendency to become than just RTP.<\/p>\n

People who get to the top twenty-three urban centers victory 100 % free coins, and you can metropolitan areas 1 to 20 qualify for the newest Contest away from Winners, and that honors a whole lot larger honours! Arrived at a critical milestone and become qualified to receive free coins, bingo balls, Honey Dollars, and a lot more pleasing unexpected situations! Profit a great deal more free coins, private ports, team awards, expensive diamonds and a whole lot. SciPlay’s mobile gambling tech helps make which gambling enterprise sense simple and extra fun. Never be satisfied with below an educated 100 % free gambling enterprise ports. Jackpot People try laden up with bonuses, totally free revolves, free gold coins, and several snacks.<\/p>\n

An excellent slot’s repay price, otherwise come back to pro (RTP), is how far a person should expect to save of their bankroll based on the mediocre websites gains. A couple, you may need to play maximum choice in order to qualify for certain honours, including the modern jackpot. You ought to simply play with yet not much you’ll be able to eliminate. In some cases, it’s simply at random approved at the end of a go, and you will must \ufffdWager Max\ufffd to meet the requirements. A slot’s biggest feature together with the jackpot, being among the many best position online game on the large RTP and you can overall motif, will be incentive enjoys. And if you’re to experience a position having twenty-five paylines and your total wager is actually $5.00, per payline would have a value of $0.20.<\/p>\n","protected":false},"excerpt":{"rendered":"

During the Why don’t we Enjoy Harbors, you can search forward to no-deposit position game, and thus each of our harbors is going to be preferred in the 100 % free play means, very you don’t need to remember spending your wages. This really is needless to say very so\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-35858","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35858","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=35858"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35858\/revisions"}],"predecessor-version":[{"id":35859,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35858\/revisions\/35859"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=35858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=35858"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=35858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}