/* 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":24837,"date":"2026-05-15T01:39:52","date_gmt":"2026-05-15T01:39:52","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=24837"},"modified":"2026-05-15T01:39:54","modified_gmt":"2026-05-15T01:39:54","slug":"indias-1-online-slots-app-50-totally-free-incentive-apk-install-2026","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/indias-1-online-slots-app-50-totally-free-incentive-apk-install-2026\/","title":{"rendered":"India’s #1 Online slots App 50 Totally free Incentive, APK Install 2026"},"content":{"rendered":"

We noticed this game move from 6 easy slots with only rotating & even then it\u2019s image and you can everything was a lot better compared to the race ❤⭐⭐⭐⭐⭐❤ Egyptian-themed harbors are among the preferred, giving steeped image and you can strange atmospheres. Information exactly why are a position game be noticed can help you prefer titles that fit your preferences and you may optimize your betting feel. If you like a reliable gaming webpages that a collection out-of certified trial ports for fun, there\u2019s absolutely nothing to hesitate out of.<\/p>\n

100 percent free slot machines should be starred by the anybody who wants her or him no matter their age otherwise location. If you like to play for money prizes, don\u2019t forget there are and additionally free online harbors designed for quick excitement! Williams Interactive has been around since the newest dawn off homes-oriented casino gaming in fact it is paid into development out-of multiple-line and you may multi-coin slot gameplay.<\/p>\n

Jackpots, advances maps, sticky wilds, and you will multipliers are merely a number of the mindblowing bonuses you\u2019ll see in our very own innovative position video game. Experience the adventure of modern free harbors having many different engaging bonuses you to take your reels to life with every spin. It\u2019s a great possibility to mention our very own collection of +150 position game and acquire your own personal preferences. For each and every online game also provides charming picture and you may engaging layouts, delivering a thrilling experience with all twist. Appreciate a softer mix-system playing experience, strengthening one get in on the step whenever, anywhere.<\/p>\n

You might play game on the most popular online game providers, for example NetEnt, Playtech, Microgaming, Big style Gambling, Novomatic, and so on, and headings off less-known regional providers such as for instance Kajot, EGT, or Amatic. All of the online game is actually slots, which makes sense, while the online slots games try the most well-known form of gambling games. Once you see a game you want to risk real money inside, up coming check out the casinos below the game windows. 100 percent free gambling games are an effective way to relax and play the newest online game and possess just a bit of enjoyable without the tension from spending cash.<\/p>\n

I attained the absolute most pleasing card games and work out the days Snabbare-appen<\/a> laden with excitement and you may huge victories! A lot of people on world keeps previously starred cards. But if you try an amateur in the playing industry, our company is happy to share with you a lot more about different types of dining table video game.<\/p>\n

A position\u2019s greatest selling point aside from the jackpot, getting one of the better position games to the high RTP and you will overall motif, will be the extra features. This means the more paylines you gamble, the greater your odds of rating a payment. That is genuine whether or not it\u2019s a about three-reel or an excellent five-reel slot. While every identity can seem to be wildly different, they all operate in essentially the same way (although some brag potential which make her or him an informed commission harbors). I like how it combines one 8-part charm having progressive position mechanics eg wild-capturing cannons and free revolves associated with UFO appearance.<\/p>\n

Above all else, free online harbors enable folks to enjoy the experience having zero stress on the financial harmony. Regarding bombastic themes so you can submit-thinking online game mechanics and you can expansive bonus has actually, app builders possess perfected the ability of the brand new digital slot machine game, and we also\u2019lso are the reaping advantages. A portion of the reasoning online slots games have been very effective over the years ‘s the over the top assortment at the our very own hands. 18+ Delight Gamble Responsibly \u2013 Gambling on line regulations differ by nation \u2013 always be sure you\u2019lso are after the local statutes and are generally regarding judge betting ages.<\/p>\n

If you are planning to experience harbors for fun, you can consider as much titles to at the same go out. Its high brands imply exactly how many individuals are playing and you will shedding in advance of a lucky winner will get a billionaire. I actually do keeps cutting-border sounds and you may picture, which have a common motif. I use fresh fruit and other signs instance regal fortunate sevens, bells and you can Club.<\/p>\n

For individuals who don\u2019t envision yourself to getting a professional regarding online slots, do not have fear, just like the to experience 100 percent free slots for the our very own webpages gives you the benefit to earliest know about the incredible added bonus has infused to your for each slot. Needless to say, this is simply not a massive thing to possess experienced and you will seasoned slot fans, however, we feel it\u2019s slightly very important to newbies who are a new comer to the country out of online slots. And, you are going to select a huge suite from most slot servers and other casino games at that casino and my almost every other seemed web sites that is certainly starred at no cost as well as zero charges anyway, thus feel free to look at people most other video game out also. Casino games vary in style, payouts, method, and much more. Brand new picture is actually unique and i also like the newest Roman matches Las vegas spirits that makes myself feel just like I\u2019yards gaming into the remove. Like the fresh every single day incentives, additionally the side online game ensure that it it is enjoyable and are usually just the thing for gathering more gold coins.<\/p>\n

At the same time, sweepstakes gambling enterprises enables participants to experience that have virtual currencies often even in All of us claims in which real money betting is not available yet ,. You can enjoy close to almost every other people, however you\u2019re also betting and you will winning an online currency, unlike real cash. At this point, i’ve detailed almost 150 software company to the all of our webpages, plus the harbors they provide. Brand new slots we find one surpass the remainder are those you\u2019ll find in our Excellent Slots checklist. With the intention that we merely last the best online slots, i have checked out and you may analyzed a large number of slots.<\/p>\n

More casinos assemble different titles and will adjust the profits within the brand new selections given because of the its certificates. We also consider fast winnings, generous put bonuses, and you can a smooth, user-friendly feel that makes to tackle slots quite simple. We come across casinos that offer an educated online slots games, pleasing extra has, and lots of 100 percent free spins added bonus opportunities to remain things interesting. Whenever to experience free slots on the web, grab the opportunity to test additional playing approaches, can control your money, and mention individuals incentive has actually. The fresh picture are great, additionally the profits can be higher for people who continue re also-leading to the latest 100 percent free revolves and you may house a good amount of successful combinations presenting beneficial symbols. Brand new style is a lot like Cleopatra and you can Wolf Focus on, since large payouts appear during the feet game, and there is an exciting extra bullet, which can provide doing 240 free spins.<\/p>\n

Possibly the best-purchasing online slots games normally blow their bankroll prompt for those who don\u2019t have a solid method. Here are certain confirmed methods for one another the newest and you can experienced players seeking the greatest online slots. From choosing highest-RTP video game so you can controlling your money, a number of models renders a positive change in the way long your lessons last and exactly how a beneficial they feel. Games including Reels away from Money features multiple-superimposed incentive enjoys, and a huge Superstar Jackpot Walk that makes anticipation with every twist.<\/p>\n

Check the new game’s info committee to verify this new RTP ahead of to try out. All the will likely be played within the demonstration means at no cost. Always decide to try several game and check RTPs if you intend so you’re able to changeover out-of totally free harbors so you’re able to a real income gamble.<\/p>\n","protected":false},"excerpt":{"rendered":"

We noticed this game move from 6 easy slots with only rotating & even then it\u2019s image and you can everything was a lot better compared to the race ❤⭐⭐⭐⭐⭐❤ Egyptian-themed harbors are among the preferred, giving steeped image and you can strange atmospheres. Information exactly why are a position\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-24837","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/24837","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=24837"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/24837\/revisions"}],"predecessor-version":[{"id":24838,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/24837\/revisions\/24838"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=24837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=24837"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=24837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}