/* 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":121247,"date":"2026-05-25T13:15:20","date_gmt":"2026-05-25T13:15:20","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=121247"},"modified":"2026-05-25T13:15:21","modified_gmt":"2026-05-25T13:15:21","slug":"princess-inspired-slots-was-whimsical-and-sometimes-include-enchanting-incentives","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/princess-inspired-slots-was-whimsical-and-sometimes-include-enchanting-incentives\/","title":{"rendered":"Princess-inspired slots was whimsical and sometimes include enchanting incentives"},"content":{"rendered":"

It’s not necessary to see fishing to love playing Large Trout Bonanza<\/h2>\n

NetEnt is certainly the leading identity on position betting community, known for bringing better-top quality slots which have beautiful graphics, creative layouts, and you can entertaining gameplay. A boasts numerous distinguished designers whoever ports stand out to possess the quality, invention, and entertainment really worth. Whether it’s the brand new weird technicians out of Coba or even the sentimental people feel of the Rave, often there is new things to understand more about.<\/p>\n

Online slots require an internet connection to help you load online game possessions, plus run-in a web browser<\/h2>\n

Also, it’s not necessary to check in otherwise deposit to play the fresh games, that which you we have found totally free! Record was filterable, enabling you to segment the fresh new video game because of software merchant otherwise because of the term to be able to stay glued to a developer you prefer. This video game provider’s feature is the unique image and you will voice consequences you can not get a hold of any kind of time online game supplier. A different sort of renowned Netent Position is Gonzo’s Quest and you may Starburst, you often find at the best gambling establishment incentives free spin-invited games. They are famous for the great motif construction and soundtrack, particularly when your are a few of their finest slots on line particularly because the Narcos, available for totally free use the<\/p>\n

Mining-themed harbors often element volatile bonuses and you can vibrant game play. Halloween-themed ports are ideal for thrill-hunters looking for a hauntingly blast Viggoslots<\/a> . Gem-styled harbors are aesthetically astonishing and frequently feature effortless yet , entertaining game play. Fish-inspired ports usually are light-hearted and show colourful aquatic lifetime.<\/p>\n

An element of the tip is that you can easily enjoy online ports having fun with Gold coins for fun, and you will a reward money (for example Sweeps Coins) having honor-eligible play after appointment the guidelines. McLuck provides one,000+ game of 30+ organization (and Playtech, Novomatic, Playson, Relax, and you may M2Play) plus the position top quality seems constantly strong. In terms of the complete slots sense, LoneStar really does good occupations to make a huge reception become playable with lots of categories and you can filter systems, making it very easy to plunge to a design you adore (like, by using the diet plan to get up Hold & Winnings jackpot harbors). Social casinos focus on activities using digital gold coins (Gold coins), when you are sweepstakes gambling enterprises create the next currency which can be used having honor-eligible play (Sweeps Gold coins).<\/p>\n

Mention a strange forest that have Pink Elephants Trinity where Thunderkick’s signature psychedelic flair suits a good tribal, nature-infused mode. Try it out first-in the 100 % free harbors collection observe when it is good for you. Which have a max victory off 150,000x, large volatility and you will fascinating incentive rounds, this has everything high rollers could be trying to find. A candy-inspired slot having tumbling symbols and you can multipliers to 100x, Sweet Bonanza was enjoyed for the brilliant artwork and you may rewarding bonus rounds.<\/p>\n

Having enhanced reach control, on-the-wade the means to access, and you can consistent top quality, cellular harbors enables you to bring the brand new adventure of spinning the fresh reels inside the wallet. To tackle slot demonstrations is over simply an easy way to violation the time-it\ufffds a valuable help training what makes a slot video game tick, from its images and you will gameplay has to their bonuses and win potential. Such demos present a-flat balance – constantly around 5,000 coins or more – to help you talk about the game without the monetary chance. The newest game’s classic-layout image and you may atmospheric sound recording perform a temperamental yet pleasant gambling sense, to make Split Town recommended-wager people that like a-twist to your vintage cat-and-mouse rivalry.<\/p>\n

Often option will allow you to relax and play free ports for the go, so you can take advantage of the adventure off online slots games irrespective of where you happen to be. Since you are not risking anything, it is far from a variety of betting – it\ufffds strictly activities. Do not rate slots until we have invested times examining all aspects of each and every online game. Below, we now have round up a few of the most popular layouts you’ll find into the totally free position online game on the web, and several of the most well-known records for every style.<\/p>\n

On your pc or cellular phone, from your gambling establishment-hotel room otherwise domestic, it\ufffds for you to decide to choose your unit! Which have CasinosAvenue, you can now gamble 100 % free ports in the an easy and quick ways. Starting higher-high quality free online harbors no download called for involves a collaborative work from competent teams of designers, artists, plus mathematicians.<\/p>\n

Of a lot ports players prefer another type of games as they like the look of it at first sight. You’ll either place the fresh money worthy of, payline value, otherwise overall bet. This may will vary a bit with respect to the position, but it’s never assume all that challenging.<\/p>\n

Always check the fresh slot’s “i” loss to obtain higher RTPs, extra laws and regulations, and you will payout tables. Therefore, you might enjoy totally free slots to the tablets, se the place you won’t need to waste time starting the fresh internet browser. After you’ve acquired a progressive jackpot usually do not choice in it. Naturally, remember regarding the its top quality and user interface. He’s simple to use and get understandable configurations.<\/p>\n

That means you will need to choice $350 before cashing your earnings. It means you’ll need to wager their earnings a particular count of times before you can withdraw all of them. Exact same image, exact same game play, same epic bonus enjoys \ufffd just no exposure. Once you sooner lack credit, do not worry.<\/p>\n

The reason is that harbors are preferred activity. You will want to discuss more games from this app vendor. But not, each one features its own motif and you may framework you to set they in addition to the anyone else. Such as, you can observe the new paytable to see how much cash the brand new slot will pay out while you are most happy. By choosing 100 % free ports on the internet, you additionally allow yourself a way to actually check out the fresh high kind of slots available. With our slots, it’s not necessary to deposit any cash before you’re able to initiate to try out.<\/p>\n

Any type of option you select, you will have usage of an informed 100 % free slots to experience for enjoyable online. Relaxed professionals in addition to love the newest enjoyment really worth-just twist trial ports for fun and enjoy the excitement out of the online game without worrying on places or loss. It balances higher-prevent framework quality which have enjoyable mechanics and a decent earn prospective. But do not end up being fooled by very first appearance of this game \ufffd the latest earn potentials have become real, that have multipliers to 500x within just the base games!<\/p>\n

A keen RTP from % and you may large volatility tends to make it captivating slot with Old Egypt mode a suitable option for both the latest and you can experienced members. This game is an excellent fits if you’re looking to possess a leading volatility games having great features and you will bright graphics. Because gaming business is growing, games designers usually make the brand new activities and great features, so participants have a wide variety to pick from.<\/p>\n","protected":false},"excerpt":{"rendered":"

It’s not necessary to see fishing to love playing Large Trout Bonanza NetEnt is certainly the leading identity on position betting community, known for bringing better-top quality slots which have beautiful graphics, creative layouts, and you can entertaining gameplay. A boasts numerous distinguished designers whoever ports stand out to possess\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-121247","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/121247","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=121247"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/121247\/revisions"}],"predecessor-version":[{"id":121250,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/121247\/revisions\/121250"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=121247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=121247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=121247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}