/* 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":104453,"date":"2026-05-25T11:41:33","date_gmt":"2026-05-25T11:41:33","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=104453"},"modified":"2026-05-25T11:41:34","modified_gmt":"2026-05-25T11:41:34","slug":"princess-themed-slots-was-whimsical-and-sometimes-have-romantic-bonuses","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/princess-themed-slots-was-whimsical-and-sometimes-have-romantic-bonuses\/","title":{"rendered":"Princess-themed slots was whimsical and sometimes have romantic bonuses"},"content":{"rendered":"

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

NetEnt is certainly the leading name regarding slot gaming world, known for bringing ideal-top quality ports which have beautiful picture, innovative templates, and you can entertaining game play. A has several notable developers whose ports be noticed for their high quality, invention, and you can recreation really worth. Be it the fresh quirky mechanics off Coba or perhaps the emotional class become of your own Rave, there’s always something new to explore.<\/p>\n

Free online slots need a web connection in order to weight games property, plus run-in a web browser<\/h2>\n

Furthermore, you don’t have to check in otherwise put to play the newest game, everything you the following is completely free! The list is filterable, enabling you to portion the fresh online game as a consequence of app provider otherwise by name to stay glued to a creator you prefer. This video game provider’s selling point ‘s the novel picture and you can sound effects you simply can’t come across at any games seller. Another iconic Netent Slot was Gonzo’s Trip and you can Starburst, that you usually see at best casino bonuses totally free twist-allowed online game. They are fabled for its wonderful theme construction and you may sound recording, particularly when you try several of their greatest harbors online particularly since Narcos, designed for totally free use all of our<\/p>\n

Mining-themed harbors commonly function explosive bonuses and you will active gameplay. Halloween-inspired ports are perfect for excitement-candidates looking an excellent hauntingly fun time. Gem-themed slots is actually visually fantastic and regularly ability effortless yet interesting game play. Fish-styled harbors usually are white-hearted and show colorful aquatic existence.<\/p>\n

The main tip is the fact you are able to gamble online harbors using Coins for fun, and a prize money (including Sweeps Gold coins) having honor-eligible enjoy shortly after fulfilling the principles. McLuck brings one,000+ game away from 30+ team (together with Playtech, Novomatic, Playson, Calm down, and you will M2Play) and also the position high quality feels continuously solid. In terms of the complete harbors experience, LoneStar does an effective job and then make a large reception be playable with many different categories and you can strain, therefore it is very easy to jump straight to a layout you like (such as, using the selection to pull up Hold & Profit jackpot slots). Social casinos focus on activities using digital gold coins (Gold coins), if you are sweepstakes gambling enterprises add a second currency which can be used to possess award-eligible enjoy (Sweeps Coins).<\/p>\n

Talk about a strange jungle having Green Elephants Trinity in which Thunderkick’s trademark psychedelic flair meets an effective tribal, nature-infused mode. Give it a shot first in all of our free ports collection observe in case it is good for you. With an optimum victory of 150,000x, highest volatility and you can enjoyable incentive cycles, it offers everything high rollers might possibly be seeking. A candy-inspired slot which have tumbling icons and multipliers up to 100x, Sweet Bonanza are adored for its vibrant graphics and you may rewarding extra rounds.<\/p>\n

Which have optimized touching regulation, on-the-wade use of, and you will consistent high quality, cellular ports will let you hold the new adventure of spinning the latest reels right in their pocket. To play position demos is more than just a method to citation the time-it\ufffds an important part of understanding what makes a slot games tick, from its images and you may game play enjoys to help you the bonuses and victory potential. Such demos offer you a-flat equilibrium – constantly doing 5,000 coins or even more – to talk about the game without having any financial exposure. The fresh new game’s vintage-build graphics and you may atmospheric sound recording manage a moody yet pleasant gaming experience, making Rip City vital-play for people that like a twist for the antique cat-and-mouse rivalry.<\/p>\n

Both choice will allow you to experience 100 % free harbors for the go, to help you gain benefit from the adventure away from online slots games no matter where your are actually. As you aren’t risking hardly any money, it is not a type of gaming – it’s strictly amusement. Do Bet 24 app<\/a> not speed slots up until we have invested circumstances investigating every aspect of each and every game. Below, we’ve got round right up probably the most prominent templates you will find into the totally free slot game online, along with probably the most prominent entries for each genre.<\/p>\n

On your pc otherwise cellphone, from your own casino-college accommodation otherwise home, it\ufffds your responsibility to decide your device! Having CasinosAvenue, anyone can enjoy free ports during the a quick and easy means. Performing higher-quality online slots without down load called for concerns a collective work from skilled teams of developers, painters, along with mathematicians.<\/p>\n

Of numerous harbors participants like an alternative games because they like the appearance of it initially. You’ll be able to possibly set the fresh coin well worth, payline worthy of, or full wager. This may are different a little while according to position, however it is not totally all you to challenging.<\/p>\n

Check always the brand new slot’s “i” tab to obtain highest RTPs, extra laws, and payment dining tables. Very, you could enjoy 100 % free harbors for the tablets, se the place you won’t need to spend time opening the latest browser. After you’ve obtained a modern jackpot do not wager with it. Definitely, take care from the its quality and you will user interface. He or she is user friendly and possess readable configurations.<\/p>\n

Meaning you will have to choice $350 before cashing your profits. It indicates you will have to wager your winnings a certain amount of that time before you withdraw them. Exact same image, same game play, same impressive added bonus enjoys \ufffd only zero chance. When you eventually use up all your loans, do not stress.<\/p>\n

The reason is that harbors are popular activities. You need to speak about far more game by this software supplier. But not, each one features its own theme and you can build that establishes it as well as the someone else. Such as, you can observe the newest paytable observe how much cash the newest position pays away when you find yourself extremely happy. By the going for 100 % free ports on line, in addition, you allow yourself a chance to indeed try the new large form of harbors that are offered. With these harbors, you don’t need to put anything in advance of you’ll be able to initiate to relax and play.<\/p>\n

Any option you select, you should have usage of an informed totally free harbors playing for enjoyable online. Everyday users as well as like the fresh recreation well worth-merely spin trial slots for fun and relish the adventure from the overall game without worrying in the dumps otherwise loss. They balances large-stop build top quality which have fun technicians and a decent victory possible. But don’t feel fooled by the earliest appearance of this video game \ufffd the latest profit potentials have become genuine, which have multipliers doing 500x in only the beds base game!<\/p>\n

An enthusiastic RTP away from % and you will highest volatility can make so it charming slot which have Old Egypt mode an appropriate option for both the fresh new and you will experienced participants. This game is a great suits if you are looking to possess a top volatility game having bells and whistles and you can vibrant graphics. Since gambling field is growing, games designers constantly build the brand new activities and you may features, very users possess all kinds to pick from.<\/p>\n","protected":false},"excerpt":{"rendered":"

You don’t need to appreciate fishing to enjoy to relax and play Big Bass Bonanza NetEnt is certainly the leading name regarding slot gaming world, known for bringing ideal-top quality ports which have beautiful picture, innovative templates, and you can entertaining game play. A has several notable developers whose ports\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-104453","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/104453","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=104453"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/104453\/revisions"}],"predecessor-version":[{"id":104456,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/104453\/revisions\/104456"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=104453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=104453"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=104453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}