/* 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":72130,"date":"2026-05-22T22:02:00","date_gmt":"2026-05-22T22:02:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=72130"},"modified":"2026-05-22T22:02:01","modified_gmt":"2026-05-22T22:02:01","slug":"play-free-1700-slots-online-no-download-no-subscription-just-fun-3","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/play-free-1700-slots-online-no-download-no-subscription-just-fun-3\/","title":{"rendered":"Play Free 1700+ Slots Online No Download, No Subscription, Just Fun"},"content":{"rendered":"

The Sugar Rush 1000 \u0985\u09a8\u09b2\u09be\u0987\u09a8<\/a> base game is a familiar 5-reel settings, that it feels like a classic slot machine in the structure even though the theme is cinematic. Book out of Dead is built up to a keen Egyptian tomb mining theme, that have a central explorer reputation and you can symbols such as artifacts, scarabs, and you can book symbols. Starburst is determined in the a good fluorescent, space-such as gem world where the symbols is bright crystals as opposed to old-fashioned casino symbols. Many choices work on right in your browser, as the free ports have no download criteria, and you can sweepstakes\/social platforms always keep something fresh that have every day gold coins, promos, and you can spinning free casino games sections so you\u2019re also not stuck replaying a similar handful of headings. Part of the tip is that you\u2019ll play free online ports playing with Gold coins for fun, and you can a prize currency (such as Sweeps Gold coins) to have award-eligible play after meeting the guidelines.<\/p>\n

To play free casino games mode you have generous time to lay your slot-to play strategy for the future when you are gambling real money. Also, you could capitalise to the bonus also offers that come with its offerings. I recommend that you try to make your time count and you can talk about a full array of has provided by for each game you find to play. Squeeze has to offer a good tropical island avoid where you can lay the feet to the sand and you can spin the new reels to have a good opportunity to win up to ten,000x your bet. Give our Free Play option as well as a go and try those people game for free to see the new thrill first-hand! Here, i protection the new bells and whistles given and the feet game settings.<\/p>\n

No, free ports is to have entertainment and practice intentions just and you can do not give real money winnings. If the not knowing, read the RTP advice given and you can make sure it that have official supply. In this section, we will talk about the new steps in place to protect players and how you could make sure the new integrity of your ports you play. Waiting for 2025, the new slot gambling landscape is determined to become much more exciting that have expected launches out of best company.<\/p>\n

That\u2019s a mere fraction of your rules and regulations surrounding the new ports you play at the gambling sites online – and we\u2019d be here all day had been i to pay for every one of him or her. For each online gambling regulator (and that i\u2019ll protection lower than) sets out their criteria to have ports you to app company you want to follow. Soar thanks to room, talk about worlds and you can meet alien life in the away-of-this-world ports such as Room Invaders and you can Celebrities Waking. This is good news for us Free Ports players at the Ports Forehead \u2013 high quality Vegas-design entertainment available for free in our property! When you want to play free ports and no deposit online, there will be game that offer up plenty of other bonus has.<\/p>\n

Chilli Temperature is the most its most popular ports, and you can as well as here are some High Rhino. He has put out over 130 videos ports, and it\u2019s of course a vendor to store track of. Lower than, we\u2019ll introduce you to an informed game company, and you can here are some all their game by following the new links. This makes it easy for you to check out the very popular game developers, as well as all the free demo ports no download it have to offer. Katmandu Gold comes with cuatro,096 default paylines, but the expanding grid system is also send up to 531,441 paylines. 9 Containers out of Gold is a game that have 20 paylines, but you can as well as win instant awards by the landing enough times out of a different spread icon anywhere to the grid.<\/p>\n

A slot machine, but not, is something you to doesn\u2019t need that it amount of communication with people. That it cookie is determined if the GA.js javascript library is stacked and there is no existing __utmb cookie. The new cookie is determined if the GA.js javascript is stacked and you can updated when information is sent to the new Google Anaytics server Includes personalized advice lay by the internet developer via the _setCustomVar approach in the Google Analytics. Google reCAPTCHA sets a necessary cookie (_GRECAPTCHA) when conducted for the purpose of bringing its risk research.<\/p>\n

For those who\u2019ve never played at the sweepstakes casinos prior to, the process is easy. In terms of the total ports feel, LoneStar does a good employment and make a huge lobby be playable with many categories and you can filters, that it\u2019s easy to dive right to a theme you love (such as, using the menu to pull up Keep & Win jackpot ports). Lower than we will protection an informed free ports online, where to play them with no download or buy required, and how to potentially win real money awards. Depending on the type of player you\u2019re, you could but not buy the server that suits you. As opposed to free models out of slots, try to do an account to play that have real currency.<\/p>\n

To play free videos ports lets bettors talk about headings rather than financial risk. Quitting when you are to come saves winnings, and you can chasing losses leads to next setbacks. Gambling to the all the active paylines increases the likelihood of hitting a good successful consolidation.<\/p>\n

Find the best ocean-, mythology-, or fishing-themed ports, or a good step 3-, 4-, and up so you can ten-reel game. Lay date restrictions, take holidays on a regular basis, and remember you to free game is meant for entertainment and will\u2019t anticipate the results out of real money game. Even if demo ports come with no financial risk, it\u2019s still important to play responsibly. To play free ports is simple and needs no subscription, download, or deposit. If you are looking to have something specific, choose one of your ‘Game Theme’ options.<\/p>\n

There\u2019s no one solution to win at any slot game; other steps has other consequences, and there\u2019s no best time to try him or her away than just after you\u2019re also to play ports online for free. RTP and you can volatility are key so you can how much you\u2019ll enjoy a certain slot, but you might not know in advance that you\u2019ll prefer. Ignition Casino has a weekly reload bonus fifty% up to $step 1,one hundred thousand you to players is also redeem; it\u2019s a deposit fits you to\u2019s based on play frequency.<\/p>\n

Its game tend to come with high volatility and you can high win potential, attractive to players chasing big perks. Force Gambling combines aesthetically hitting image that have inventive gameplay mechanics. Nolimit City’s novel approach sets him or her apart in the industry, and make its ports a must-go for adventurous players.<\/p>\n

Based 20 years ago, the new developer\u2019s creative mobile-first approach is pioneering to the date, mode the quality to other studios. Its ports is renowned because of their entertaining has and you can best-notch image. The new developer as well as created the first group pays slot.<\/p>\n

For even much more free gold coins, bonuses, and the latest marketing status, be sure to pursue our Facebook page. Real money casinos as well as provide the opportunity to play for actual cash, but it\u2019s important to find just registered and you can reliable sites to have a good safe gambling feel. To the certain platforms, you can also redeem your winnings for real world awards thanks to sweepstakes or special occasions, adding more thrill to the gameplay. As well as, of many free ports give in the game gold coins and you can humorous micro game where you can win bonus gold coins\u2014all the rather than spending one real money. Find slot game official by the independent analysis companies\u2014such seals out of acceptance mean the new game are regularly looked to have fairness.<\/p>\n

On the bright world of online gambling, free ports are seen as the a famous selection of entertainment to have each other beginners and you can experienced players. Much more game is added on a daily basis, depending on some app company giving their new launches. Spend your time to explore our comprehensive collection and try away our free slot demo game and see your own favorites. His works helps players select reliable casinos offering the best bonus bundles, as well as no-deposit spins, welcome also offers, and you can private promotions.<\/p>\n","protected":false},"excerpt":{"rendered":"

The Sugar Rush 1000 \u0985\u09a8\u09b2\u09be\u0987\u09a8 base game is a familiar 5-reel settings, that it feels like a classic slot machine in the structure even though the theme is cinematic. Book out of Dead is built up to a keen Egyptian tomb mining theme, that have a central explorer reputation and\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-72130","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72130","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=72130"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72130\/revisions"}],"predecessor-version":[{"id":72132,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72130\/revisions\/72132"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=72130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=72130"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=72130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}