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

You don’t have to appreciate angling to enjoy to relax and play Big Bass Bonanza<\/h2>\n

NetEnt has long been a number one identity in the slot gambling industry, recognized for delivering top-quality ports that have breathtaking image, creative themes, and interesting game play. The is sold with multiple renowned builders whose slots stick out for their quality, advancement, and you will entertainment worthy of. Be it the latest wacky technicians off Coba or even the nostalgic team be of the Rave, there is always new stuff to explore.<\/p>\n

Free online harbors want a web connection to help you load online game assets, as well as run-in a web browser<\/h2>\n

Also, it’s not necessary to sign in or deposit to tackle the brand new games, what you here is totally free! The list are filterable, letting you portion the fresh online game because of app supplier otherwise by term to stick with a developer you like. This game provider’s selling point is the book image and you will voice consequences you cannot discover at any game seller. A different legendary Netent Slot is Gonzo’s Trip and you may Starburst, you often find at the best gambling enterprise bonuses totally free twist-allowed games. He could be well-known for the wonderful theme construction and sound recording, particularly when your is actually a number of their best slots on the web particularly since the Narcos, designed for totally free play on all of our<\/p>\n

Mining-themed harbors have a tendency to function volatile bonuses and you may active game play. Halloween-styled slots are ideal for adventure-candidates trying to find a great hauntingly good time. Gem-themed ports was visually fantastic and frequently ability easy yet interesting gameplay. Fish-themed ports are usually white-hearted and have colourful marine life.<\/p>\n

An element of the suggestion is the fact it is possible to enjoy online harbors using Gold coins enjoyment, and you will a reward money (including Sweeps Gold coins) having prize-eligible enjoy shortly after appointment the rules. McLuck will bring one,000+ game away from 30+ providers (along with Playtech, Novomatic, Playson, Relax, and M2Play) and slot high quality seems continuously strong. With regards to the complete harbors sense, LoneStar does good job and make an enormous reception become playable with quite a few categories and you may strain, so it is an easy task to diving right to a layout you adore (including, utilizing the eating plan to get upwards Hold & Profit jackpot slots). Societal casinos manage entertainment playing with digital gold coins (Gold coins), when you find yourself sweepstakes casinos incorporate the second money that can be used getting honor-eligible play (Sweeps Coins).<\/p>\n

Speak about a mystical forest that have Red Elephants Trinity in which Thunderkick’s signature psychedelic style match an excellent tribal, nature-infused means. Test it out for first in all of our totally free slots library observe when it is best for you. Having a maximum win off 150,000x, high volatility and you can pleasing bonus cycles, this has everything you big spenders might possibly be seeking. A chocolates-inspired slot that have tumbling icons and you can multipliers up to 100x, Nice Bonanza was cherished for the brilliant illustrations or photos and you can fulfilling extra series.<\/p>\n

Which have enhanced touch control, on-the-wade usage of, and you can consistent high quality, cellular harbors allow you to hold the latest excitement from spinning the brand new reels in your pocket. To experience slot demos is over just a means to violation the amount of time-it\ufffds an important step in studying why are a slot games tick, from its illustrations or photos and game play has to the bonuses Tenex<\/a> and you can victory possible. This type of demonstrations provide you with a-flat balance – usually doing 5,000 gold coins or more – to talk about the game with no monetary chance. The brand new game’s retro-style graphics and you will atmospheric soundtrack carry out a temperamental but really charming gaming sense, and work out Split Town a must-play for individuals who like a-twist for the vintage cat-and-mouse competition.<\/p>\n

Both alternative will allow you to play 100 % free ports to your go, in order to take advantage of the adventure of online slots games no matter where your are generally. Because you are not risking anything, it is really not a form of betting – it’s purely activities. We don’t speed harbors up to we have spent times exploring every aspect of each games. Below, we’ve rounded right up a few of the most preferred templates you will find towards 100 % free slot games on the internet, plus a few of the most popular records for every single genre.<\/p>\n

On your personal computer or portable, from the gambling enterprise-hotel room otherwise household, it is your decision to choose the unit! With CasinosAvenue, you can now play totally free slots inside the an easy and quick method. Performing large-top quality online harbors and no download called for concerns a collaborative effort out of skilled teams of designers, musicians, along with mathematicians.<\/p>\n

Of many slots participants choose another type of game while they such as the appearance of it at first. You’ll either place the fresh money value, payline well worth, otherwise overall wager. This may will vary sometime with respect to the position, but it is not totally all one difficult.<\/p>\n

Always check the newest slot’s “i” loss to find higher RTPs, extra legislation, and you will payment dining tables. Very, you might gamble 100 % free ports to the pills, se the place you don’t have to waste your own time starting the fresh new browser. After you’ve claimed a progressive jackpot dont wager with it. Of course, make sure regarding the its top quality and you will interface. They are simple to use and possess readable setup.<\/p>\n

Meaning you will need to choice $350 just before cashing out your profits. This means you’ll need to wager your own winnings a certain number of that time period one which just withdraw all of them. Same graphics, exact same game play, exact same unbelievable added bonus features \ufffd merely no exposure. Once you fundamentally use up all your credit, do not panic.<\/p>\n

The reason is that slots are common enjoyment. You need to explore far more game from this software seller. Although not, every one has its own motif and you may design one to sets it in addition to the anybody else. Like, you can observe the brand new paytable observe simply how much the fresh slot pays aside when you find yourself very fortunate. Because of the going for free harbors on the web, in addition allow yourself the opportunity to in fact check out the new high sort of harbors that are available. With your harbors, you don’t need to put hardly any money prior to you’re able to start to play.<\/p>\n

Any kind of alternative you select, you’ll have accessibility an educated 100 % free ports to play to possess fun on the web. Everyday players as well as love the latest amusement value-just spin demo slots enjoyment and enjoy the adventure regarding the game without worrying regarding the dumps or loss. It stability high-stop build top quality with fun auto mechanics and you can a decent earn prospective. But do not feel fooled from the earliest appearance of this video game \ufffd the fresh profit potentials are particularly genuine, with multipliers up to 500x in just the beds base video game!<\/p>\n

A keen RTP away from % and you can large volatility renders that it captivating slot that have Ancient Egypt setting the ideal option for each other the brand new and you can knowledgeable members. This video game is a good matches if you are searching getting a premier volatility games that have features and bright picture. Because betting markets keeps growing, video game designers always put together the latest activities and you will great features, therefore participants features an impressive selection to pick from.<\/p>\n","protected":false},"excerpt":{"rendered":"

You don’t have to appreciate angling to enjoy to relax and play Big Bass Bonanza NetEnt has long been a number one identity in the slot gambling industry, recognized for delivering top-quality ports that have breathtaking image, creative themes, and interesting game play. The is sold with multiple renowned builders\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-119004","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/119004","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=119004"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/119004\/revisions"}],"predecessor-version":[{"id":119007,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/119004\/revisions\/119007"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=119004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=119004"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=119004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}