/* 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":127179,"date":"2026-05-25T13:28:56","date_gmt":"2026-05-25T13:28:56","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=127179"},"modified":"2026-05-25T13:28:57","modified_gmt":"2026-05-25T13:28:57","slug":"princess-themed-ports-are-unique-and-frequently-incorporate-passionate-bonuses","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/princess-themed-ports-are-unique-and-frequently-incorporate-passionate-bonuses\/","title":{"rendered":"Princess-themed ports are unique and frequently incorporate passionate bonuses"},"content":{"rendered":"

It’s not necessary to enjoy fishing to love to play Huge Trout Bonanza<\/h2>\n

NetEnt is certainly the leading name on the slot gaming industry, recognized for delivering top-top quality harbors having beautiful image, imaginative layouts, and entertaining game play. The industry is sold with numerous renowned developers whose slots be noticed to possess the top quality, creativity, and you will activities value. Should it be the new weird aspects away from Coba or even the sentimental group getting of the Rave, almost always there is something new to understand more about.<\/p>\n

Free online slots require a connection to the internet so you can stream game assets, plus run-in an internet browser<\/h2>\n

In addition, you don’t need to register or put to experience the fresh new video game, what you let me reveal free! The list is filterable, allowing you to portion the brand new games as a consequence of app merchant or from the label to be able to follow a developer you like. The game provider’s selling point is the novel graphics and you can voice outcomes you can not see any kind of time online game merchant. Another type of legendary Netent Position is Gonzo’s Quest and you can Starburst, you often find at best gambling enterprise bonuses totally free twist-acceptance online game. He’s famous for their great motif build and soundtrack, particularly when your try a few of the greatest ports on the internet such as because the Narcos, readily available for 100 % free use our very own<\/p>\n

Mining-styled slots have a tendency to element explosive bonuses and vibrant game play. Halloween-inspired harbors are ideal for excitement-seekers looking for a great hauntingly good-time. Gem-styled harbors is actually aesthetically astonishing and often ability simple yet , interesting gameplay. Fish-inspired ports are often white-hearted and have colorful aquatic lives.<\/p>\n

Part of the idea would be the fact you’ll be able to play online ports having fun with Coins for fun, and a reward money (particularly Sweeps Gold coins) getting award-qualified enjoy immediately after meeting the principles. McLuck will bring 1,000+ game off thirty+ team winlandia-se.com<\/a> (in addition to Playtech, Novomatic, Playson, Calm down, and you can M2Play) and also the slot quality feels constantly strong. In terms of the total slots feel, LoneStar does a good work and work out a big lobby feel playable with quite a few classes and you will filters, therefore it is simple to jump right to a composition you love (for example, by using the menu to pull right up Hold & Victory jackpot slots). Societal casinos run enjoyment using digital gold coins (Gold coins), when you are sweepstakes gambling enterprises incorporate the second money used to possess honor-qualified enjoy (Sweeps Coins).<\/p>\n

Explore a strange forest which have Green Elephants Trinity where Thunderkick’s trademark psychedelic style matches an excellent tribal, nature-infused form. Give it a try first in our very own free harbors library to see if it’s most effective for you. With an optimum win away from 150,000x, highest volatility and you will exciting extra rounds, it has what you big spenders could be in search of. A chocolate-inspired position that have tumbling signs and you can multipliers as much as 100x, Nice Bonanza are loved because of its vibrant artwork and you may fulfilling added bonus cycles.<\/p>\n

With enhanced touching control, on-the-wade entry to, and you may uniform high quality, mobile harbors will let you hold the new thrill out of rotating the fresh new reels in your own wallet. To try out slot demos is over only a way to pass the time-it\ufffds an invaluable step up learning what makes a position game tick, from the visuals and gameplay has in order to its bonuses and you will earn potential. This type of demos offer an appartment harmony – constantly as much as 5,000 gold coins or more – to talk about the overall game with no economic chance. The brand new game’s vintage-build picture and you can atmospheric sound recording create a temperamental yet charming betting feel, to make Tear City a must-wager people that like a twist into the vintage cat-and-mouse rivalry.<\/p>\n

Sometimes choice will enable you playing 100 % free slots for the go, to help you enjoy the excitement of online slots games no matter where your already are. As you are not risking anything, it’s not a kind of betting – it’s strictly recreation. We don’t rates slots up to we’ve got invested times investigating all aspects of any online game. Lower than, there is circular up several of the most popular layouts there are to your totally free position video game on the web, and several of the most well-known records for each genre.<\/p>\n

On your pc otherwise mobile, out of your gambling enterprise-hotel room otherwise household, it\ufffds your responsibility to determine the equipment! Which have CasinosAvenue, anybody can play totally free harbors within the a simple and fast means. Creating highest-high quality free online slots no download needed relates to a collaborative effort out of skilled teams of designers, designers, along with mathematicians.<\/p>\n

Many harbors players favor an alternative video game as they for instance the look of it at first glance. You are able to possibly set the fresh new money well worth, payline value, otherwise overall bet. This can are very different a bit according to position, but it is never assume all one tricky.<\/p>\n

Check always the fresh slot’s “i” case to find highest RTPs, incentive legislation, and you will payout tables. Therefore, you can play totally free harbors to the tablets, se the place you don’t need to waste some time opening the fresh new internet browser. Once you have obtained a progressive jackpot usually do not bet on it. Obviously, remember from the its quality and you will user interface. He’s user friendly and also have readable options.<\/p>\n

That means you will have to choice $350 in advance of cashing your winnings. It indicates you’ll want to bet your own winnings a certain matter of that time before you could withdraw them. Exact same image, same game play, same unbelievable extra have \ufffd just no risk. When you sooner lack loans, do not panic.<\/p>\n

The reason is that ports are prominent enjoyment. You need to discuss even more online game through this app supplier. Although not, every one features its own motif and you will framework that establishes it in addition to the anybody else. Like, you can observe the fresh new paytable observe how much cash the brand new slot can pay out when you are most lucky. Of the choosing free slots on the internet, in addition, you give yourself the opportunity to indeed try the latest highest kind of harbors that are available. With your slots, you don’t have to put any money prior to you’ll be able to start playing.<\/p>\n

Almost any solution you select, you’ll have use of the best 100 % free slots to try out to possess fun on line. Casual users as well as like the latest entertainment worthy of-just spin demo ports for fun and enjoy the excitement off the overall game without worrying regarding dumps otherwise losses. They balance highest-end design top quality which have enjoyable technicians and you will a great victory potential. But don’t getting fooled by the first look of this video game \ufffd the newest victory potentials have become actual, which have multipliers as much as 500x in only the beds base game!<\/p>\n

A keen RTP off % and you can highest volatility produces so it pleasant slot that have Ancient Egypt function the right option for both the fresh and you will experienced players. This game is a good matches if you are looking to own a top volatility game having features and you will bright image. While the gambling field is growing, game designers constantly build the fresh activities and you may great features, so users enjoys an impressive selection to choose from.<\/p>\n","protected":false},"excerpt":{"rendered":"

It’s not necessary to enjoy fishing to love to play Huge Trout Bonanza NetEnt is certainly the leading name on the slot gaming industry, recognized for delivering top-top quality harbors having beautiful image, imaginative layouts, and entertaining game play. The industry is sold with numerous renowned developers whose slots be\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-127179","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127179","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=127179"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127179\/revisions"}],"predecessor-version":[{"id":127181,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127179\/revisions\/127181"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=127179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=127179"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=127179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}