/* 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":133447,"date":"2026-05-25T20:37:05","date_gmt":"2026-05-25T20:37:05","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=133447"},"modified":"2026-05-25T20:37:06","modified_gmt":"2026-05-25T20:37:06","slug":"best-online-slots-uk","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/best-online-slots-uk\/","title":{"rendered":"Best Online slots Uk"},"content":{"rendered":"

Deposit X3000<\/a> (specific models excluded) and you can Bet \u00a310+ to the Slot game to find one hundred Free Spins (picked game, worth \u00a30.ten for each, forty eight hours to accept, valid to have one week). Time to deposit\/bet one week. Max winnings \u00a3100\/date as the bonus finance that have 10x wagering requirements to be done in this one week.<\/p>\n

First of all, the site servers popular headings such as Grand Buffalo Keep & Win and you can Dragon Balls, as well as a deep catalog out of feature-heavy ports you to keep gameplay impression fresh all the lesson. Gather generous casino bonuses and try your hand at the to play the new popular buffalo ports machineThe very a great vintage virtual-mobile casino slot machines are only a faucet away. Following the a trip to Vegas, you to interest evolved so you can embrace online casinos, playing with his journalism history to explore and read gambling and you can gambling in the interesting breadth.\u201d You\u2019ll as well as find vintage table game such as roulette, blackjack, and you can baccarat, giving various sorts of play for when you want a break out of spinning the new reels. In the first place created by Big time Gambling, giving players 117,649 a way to win around the paylines in the ports game. There\u2019s much more so you can online slots than just spinning reels such weeks.<\/p>\n

The help is first-category, and the payments chip they use (Paysafecard) makes transactions easy and easy. Your choice of game is excellent, and the total be of your casino is charming and you can member-amicable. I enjoy the new hard work that the site puts to the its bonuses and you can promotions. The new winnings is constantly high, too, making it easy to tray up certain a lot of money perks. The new welcome bonus out of $three hundred is undoubtedly a powerful bonus for new players to come in the and try its luck. I view the promotions and you can bonuses at the site as the a good great way to interest the new players and maintain him or her around for extended.<\/p>\n

For each mobile virtual slot machine comes with a plus Game Feature \u2013 such as Super virtual gold coins, Free Spins, Keep and you can Spin and you can moreDaily TournamentsAt Jackpot Magic Ports, we\u2019re also All about social play! For each virtual slot machine comes with a plus Game Feature \u2013 such as Super gold coins, Free Spins, Keep and you can Spin and more- I add the new slot-design game twice 30 days- Wade VIP! The lower volatility game follows the new magic tell you out of a keen illusionist to the a good 5\u00d7step 3 game grid that have 30 paylines and you can exciting bonus has, as well as free spins and you can spread symbols. For each category is detailed, giving knowledge to the gambling realms, as well as 777, fruit, movie, creature, and you can far eastern ports. If you love magic-themed online slots, there are plenty of options to choose from. Discover the treasures out of popular headings such as Mighty Arthur, talk about the new gothic legends out of Mighty Black Knight, or delve into the new mysterious Book out of Merlin.<\/p>\n

I apply strict security features to protect up against any possible threats or cyber-episodes, bringing our players that have peace of mind as they enjoy its favourite slot game. Jackpot City Online casino has high-quality online slots out of Game Worldwide. The unique Unbelievable Connect™ feature also offers respins, when you are bonus symbols is also activate the new Free Spins feature. The new 9 Masks out of Fire online slot game also offers 5×3 Spinning Reels and you can 20 Repaired Paylines which is compatible with each other Desktop and you can mobile phones.<\/p>\n

Jackpot City is a trusted online slots attraction as it also offers a wide variety of game, an easy\u2011to\u2011play with structure, safe play, and you can normal the new launches. It\u2019s right for each other Desktop and you can mobile phones, which is well-suitable for each other beginners and you can experienced players. It\u2019s right for each other the new and you can knowledgeable players and will be liked to the each other Desktop and you can mobile phones. Stack ‘Em Up™ is an online slot that have 5 reels and you can 20 paylines, giving a casual gambling experience in thrilling has. It has a range of coin models and easy-to-play mechanics, and each date the new symbol can be seen, your wilds would be multiplied by the 5.<\/p>\n

I make sure the quality and you can amount of its ports, assess commission protection, look for checked out and you can fair RTPs, and you can assess the true value of its bonuses and you can promotions. Still hugely attractive to ports admirers, it stays one of my favourites thanks to the be-a good vibes, over ten years after its brand new release. I love how all the spin feels like uncovering an invisible relic out of luck, rendering it a classic favourite to have adventurous players. I released Rainbow Wealth Casino in the 2019, enabling admirers of your iconic series to play its favourite game under one roof. Although some promotions are on-going, anyone else is added to have specific incidents such as Halloween night, Mother\u2019s Date, Bank Vacations or Christmas.<\/p>\n

As well as the unbelievable jackpot awards, such exciting slot game are usually loaded with special bonus has, templates and you can soundtracks. An informed jackpot ports don\u2019t just give you to greatest award pot that all players need to hit, however they give plenty of bonus has. A good jackpot slot is an online slot machine that not only provides the normal bonus has and you can icon winnings and also a keen more high jackpot award, certain even give multiple jackpots. Our last jackpot slot to make it on to our list is a different combination out of Microgaming of your hugely popular slot game Immortal Romance and the progressive jackpot Mega Moolah. Bonus has are high-spending scatters\/wilds, free spins that have 2x multipliers, jumbo prevents (3×4 stacked symbols) and you can a good at random caused jackpot wheel. Sitting at the #5 to the our top 10 jackpot ports graph is Mega Luck, put out by the NetEnt in 2009 and still proving to be a good corporation favourite that have jackpot slot couples.<\/p>\n

And even if your magic-design online slots do not provide the pixie dirt, he is easy to play and will bring you pretty good wins. The good things about the new casino are its member-amicable interface, wide variety of game, and large type of bonuses and you can promotions. Jackpot Magic Ports is an excellent option for mobile bettors who need to enjoy best-quality slots in the a handy and you can member-amicable ecosystem. As well as, define one novel has that the site may offer over most other online casinos.<\/p>\n

The new volatility is average that have a good 95.5% RTP that’s an honest rate to have progressive jackpot ports and that is also lose as low as 87%. They provide multiple bonus has, wide gambling ranges, weird and you can whacky templates, multiple jackpots, high RTPs, varying volatility prices and you can varying purse models. In this section, you could talk about option profiles in other languages or for other address nations.<\/p>\n

High image And additional adventures! Play free ports that have bonus has , as well as popular headings such as Huff N’ Much more Puff and you can Invaders out of the world Moolah, everywhere you go. It is known for its wide variety of game, bonuses, and you can promotions. As the game can be a little confusing at first, it\u2019s fast and easy to know how it works.<\/p>\n","protected":false},"excerpt":{"rendered":"

Deposit X3000 (specific models excluded) and you can Bet \u00a310+ to the Slot game to find one hundred Free Spins (picked game, worth \u00a30.ten for each, forty eight hours to accept, valid to have one week). Time to deposit\/bet one week. Max winnings \u00a3100\/date as the bonus finance that have\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-133447","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/133447","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=133447"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/133447\/revisions"}],"predecessor-version":[{"id":133448,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/133447\/revisions\/133448"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=133447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=133447"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=133447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}