/* 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":69508,"date":"2026-05-22T18:46:49","date_gmt":"2026-05-22T18:46:49","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=69508"},"modified":"2026-05-22T18:46:50","modified_gmt":"2026-05-22T18:46:50","slug":"enjoy-100-percent-free-1700-slots-online-zero-down-load-no-membership-only-enjoyable","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/enjoy-100-percent-free-1700-slots-online-zero-down-load-no-membership-only-enjoyable\/","title":{"rendered":"Enjoy 100 percent free 1700+ Slots Online Zero Down load, No Membership, Only Enjoyable"},"content":{"rendered":"

From the Slotsspot, i simply function free online gambling enterprises games that want no install out of official designers, making certain all of our members stay safe, long lasting. Inside the a normal position, you stimulate the bonus bullet by chance \u2014 by the hitting the right symbol or just to relax and play long enough. Megaways harbors have half a dozen reels, and also as it spin, what amount of it is possible to paylines change.<\/p>\n

It’s got a 5-reel, 3-line build which have ten paylines while offering typical so you can highest volatility. The game keeps a good 6×5 grid and you https:\/\/wolfgoldslot-bd.com\/<\/a> can spends a \u201cPay Anyplace\u201d system, very symbols don\u2019t have to land towards the specific paylines to help you winnings. Doorways regarding Olympus is considered the most Practical Gamble\u2019s most well known position game. Struck genuine fire, hitting the regal jackpot worthy of ten,100 gold coins. Historically, particular online slots are very real lover favorites.<\/p>\n

Slotomania features many over 170 100 percent free slot video game, and you may brand-the releases some other week! Rest assured that i\u2019re invested in making our very own position game FUNtastic! Slotomania keeps an enormous types of totally free position video game for you to help you twist and enjoy! If you like the Slotomania group favorite games Arctic Tiger, you\u2019ll love which attractive follow up! This might be the best video game ,really fun, usually including some new & fun something.<\/p>\n

All you have to manage is actually get a hold of and this title you prefer and watch, next play it right from this new page. If or not you\u2019re also on the antique 3-reel headings, spectacular megaways ports, or one thing around, you\u2019ll view it here. Right here your\u2019ll find one of your own prominent stuff out-of slots on the internet, that have video game about most significant designers internationally. Position developers are constantly updating their games; this type of status are priced between short alter to help you massive overhauls. RTP and you can volatility are foundational to to help you simply how much you\u2019ll appreciate a certain position, you may well not see in advance you\u2019ll like.<\/p>\n

Speed up Extra is virtually a plus Get committee, and you can find it around the some of the Onlyplay 100 percent free trial ports in the SlotCatalog. Regardless, it will always be recommended that you may have a chance to hit good jackpot! The fresh accumulative jackpots might be about unique casinos on the internet merely. Coin Flynn now offers effortless game play with 5 paylines towards an effective 3×3 matrix. Still, it will be best if you check the coefficient of games you\u2019re about to wager real cash. It comes which have a beneficial 5×3 board and you may ten paylines and offers a different Respin ability.<\/p>\n

The one that supplies the most significant earnings, jackpots and you can incentives plus exciting slot themes and you may good pro experience. To be sure reasonable enjoy, simply choose slots of accepted casinos on the internet. In the event the a-game are complex and you will fun, software designers enjoys invested more time and money to construct it.<\/p>\n

You can enjoy all the features, technicians, and you will extra rounds one to actual-currency harbors render without expenses a cent. Playing totally free ports offers a danger-totally free, amusing means to fix speak about the industry of online slots. Because of the capability of modern technology, you can enjoy totally free slots at any place. Likewise, you can examine the latest RTP of any game to see which of those offer the most useful enough time-name productivity.<\/p>\n

Take a moment to explore the overall game program and find out how to adjust your bets, stimulate bells and whistles, and you can supply the brand new paytable. Of numerous networks also provide guidance centered on your requirements. With some free slot game for fun available, it can be tough to decide which that enjoy. Just unlock the browser, visit a trustworthy internet casino providing position video game enjoyment, and you also\u2019lso are ready to go to begin with spinning new reels. You simply need a professional internet browser one supporting modern online technology. Listed below are the brand new steps to enjoy such enjoyable video game rather than purchasing a dime.<\/p>\n

Waiting for 2025, the fresh position betting land is determined in order to become way more fun which have envisioned releases out-of ideal organization. When you look at the 2024, we experienced some pioneering slot launches one to redefined on line gambling, releasing enormous maximum gains and you can imaginative provides eg no time before. The highest volatility and you will engaging has actually managed to get a bump among participants trying to intense game play. Your dog Family collection are dear because of its humorous image, enjoyable has, while the happiness they brings so you’re able to puppy people and you will position enthusiasts similar. For those who choose a light, much more playful motif, “The dog House” collection offers an excellent gaming sense.<\/p>\n

Discuss Better one hundred Ideal Harbors rating to learn about most readily useful user choices. And additionally, there\u2019s always a choose amount of attacks you to decades incredibly better and you can still notice crowds from punters age immediately following their discharge. Every year companies establish the fresh new pleasing ports that need no obtain. Drench yourself for the exciting world of totally free slots with your detailed and versatile catalog. All of our entire distinct totally free position games is completely optimized getting cellular use one another ios and android devices.<\/p>\n

Sign-up A-Gamble On the web today and determine a perfect in the digital gambling establishment enjoyment! Biggest CHOICEA-Play On the internet is sold with over 100 iconic slot game featuring a mixture out of themes, gamble styles, and you will jackpot ventures. Play your favorite free online ports anytime, at any place. That it assurances a safe, fair, and you may public playing ecosystem you to complies with enjoyment-merely requirements. Most of the winnings was virtual and created entirely getting enjoyment aim. Totally free ports was on the web slot game you could potentially gamble as opposed to expenses a real income.<\/p>\n

\u201dAn extraordinary fifteen years immediately following getting their first choice, the latest great Mega Moolah slot remains extremely popular and you will shell out substantial gains.\u201d The online game is easy and easy to understand, nevertheless the earnings will likely be lifestyle-modifying. The fresh new mechanics and you can game play with this slot claimed\u2019t fundamentally wow you \u2014 it\u2019s a little old because of the progressive conditions. Strike four or maybe more scatters, and you\u2019ll result in the benefit bullet, in which you rating ten 100 percent free revolves and you will a good multiplier that can reach 100x.<\/p>\n

To relax and play free ports in the Slotspod even offers an unequaled sense that combines activity, degree, and you can adventure\u2014the without the monetary partnership. They simulate an entire functionality away from actual-currency slots, allowing you to gain benefit from the adventure off rotating the latest reels and you can causing extra features risk free toward purse. Totally free harbors try demonstration products of slot games as possible enjoy versus wagering real money. With ease browse our very own slot online game list playing with filter systems for video game types of, motif, and vendor, or use the browse bar to dive right to the favourites.<\/p>\n","protected":false},"excerpt":{"rendered":"

From the Slotsspot, i simply function free online gambling enterprises games that want no install out of official designers, making certain all of our members stay safe, long lasting. Inside the a normal position, you stimulate the bonus bullet by chance \u2014 by the hitting the right symbol or just\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-69508","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69508","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=69508"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69508\/revisions"}],"predecessor-version":[{"id":69510,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69508\/revisions\/69510"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=69508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=69508"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=69508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}