/* 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":55470,"date":"2026-05-20T12:43:59","date_gmt":"2026-05-20T12:43:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=55470"},"modified":"2026-05-20T12:43:59","modified_gmt":"2026-05-20T12:43:59","slug":"if-you-need-assistance-contact-gamcare-use-gamstop-or-supply-the-new-national-gaming-helpline","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/if-you-need-assistance-contact-gamcare-use-gamstop-or-supply-the-new-national-gaming-helpline\/","title":{"rendered":"If you need assistance, contact GamCare, use GAMSTOP, or supply the new National Gaming Helpline"},"content":{"rendered":"

We are able to go on, however the point try there is a lot to know!<\/h2>\n

Alternatively, i establish just how some other game functions, evaluate technicians and RTP selections, and lead users so you’re able to authorized United kingdom casinos where legal 100 % free-enjoy access could be available. The critiques work on visibility, equity, features, and you may in charge enjoy. These advice reveal additional reel setups, element structures, volatility styles, and you may app company. Unionslots does not servers free slots privately, but all of our reviews assist members choose hence online slot game is actually really worth exploring then during the signed up United kingdom casinos.<\/p>\n

This type of ports grab the newest essence of your own reveals, plus templates, settings, or even the first shed sounds. Immerse your self goldman casino app<\/a> within the movie activities that have slots based on smash hit video. Seat right up for activities on the rugged Insane Western, filled up with cowboys, outlaws, and you will duels at the higher noon. Princess-inspired ports try whimsical and often include romantic incentives. Mining-themed slots have a tendency to element explosive incentives and you can vibrant game play. Halloween-themed harbors are great for thrill-seekers trying to find a good hauntingly fun time.<\/p>\n

These online slots games generally spend some 1-4% of every bet in order to modern award pools, although some slot internet sites need maximum bets to help you qualify for greatest-level jackpots. Progressive jackpot slots portray the pinnacle regarding large-limits online slots gambling, towards finest slot internet giving jackpots that will come to millions off weight. Video clips harbors are very the fresh new principal offering at several of slot internet and make in the most position games accessible to gamble.<\/p>\n

When you find yourself most of the slots can be lead to one another large and small wins, volatility can be a better sign of the way the position will feel than RTP. One or two, you might have to enjoy max wager to be eligible for specific honors, like the progressive jackpot. Ports which have progressive jackpots element a grand award you to grows since the the choice that’s place causes the fresh powering total. An excellent slot’s biggest feature together with the jackpot, becoming among the many ideal position game into the highest RTP and you may total theme, would be the extra possess. Playing most of the paylines on the highest possible value, you could see \ufffdMaximum Bet.\ufffd So if you’re to relax and play a position that have twenty-five paylines plus complete wager was $5.00, each payline could have a worth of $0.20.<\/p>\n

To understand more about your options yourself, check out in the event your driver is actually genuine and you will reliable. Our casino rating and evaluations bring advice needed to get a hold of a good web site. Of the somewhat reducing what amount of signs inside the Versatility Bell, Charles Fey was able to consist of automatic earnings. In those days the very thought of automated winnings is out of the question, and you will sites create by hand honor honours. This has three reels, per having a set of symbols, and another payline. Studios large and small try to continuously force for lots more imaginative alternatives and better freedom to remain associated and visible.<\/p>\n

Instead, for many who purchase it for the Harbors, you get an effective ?20 Harbors bonus together with fifty free revolves. For those who invest your own deposit into the Bingo, you’ll receive good ?40 Bingo added bonus. And we’ve got an abundance of Mecca of these when planning on taking your discover regarding right here from the Mecca Bingo.<\/p>\n

100 % free ports are typically identical to their actual-currency alternatives regarding game play, possess, paylines, and you may bonus rounds. One of many best techniques to gamble sensibly will be to look at which have oneself every short while and have, \ufffdWas I having fun? I encourage form strict limits and you may sticking with all of them, plus with the units one to Usa online casinos render to keep your enjoy within this those individuals restrictions. The online game has 5th-reel multipliers, totally free spins that have enhanced victory possible, and you can an easy build making it accessible when you are nevertheless giving strong upside. It will be the business behind the latest those J Mania slots and you may Giga Fits ports, all of and that prioritize bright video image, non-antique paylines, and you may flowing reels.<\/p>\n

After you register for a free account and commence to try out, very online casinos give you special bonus also provides by email address. Particular online casinos let you try the games before signing upwards to have a free account, while some wanted a merchant account in advance. When you play for real cash we constantly recommend gambling the fresh limit quantity of gold coins each line and triggering all of the spend traces. Specific casinos on the internet query when you need to play for free or real cash although some have a totally free area. When you setup your account, go the menu of slot machines to your gambling enterprise website and you will choose the games we wish to play.<\/p>\n

Firstly, a casino offering free position games is actually working out for you away. This may along with make it easier to filter because of casinos and that is capable of giving you use of certain video game that you want to relax and play. You need to find your limits, you might car-spin, you ought to get a hold of the new payouts. Element cycles are just what make a position fun, and if they don’t have a good one, it is barely value time!<\/p>\n

Since no deposit or wagering required, they’ve been obtainable, low-pressure, and best for newbies and you can experienced users exactly the same. For all of us users specifically, totally free slots is a great way to relax and play online casino games just before parece we identify all come from best slot team, possess some other layouts – Vampires of the underworld, Action and all things in between – and play most of the thirty two,178+ for free, here. Contemplate, totally free harbors should not want any packages, and you should have the ability to enjoy all of them in direct their internet browser having internet access.<\/p>\n

You don’t need to choice a real income, nevertheless still have a chance to learn more about they. Imagine browsing each one, setting a wager, and spinning the fresh new reels repeatedly. While many ones companies still build position cabinets, there can be a huge manage starting an informed online slots games you to users can take advantage of.<\/p>\n

Unionslots brings on their own composed analysis away from 100 % free slots United kingdom and online position online game for British members<\/h2>\n

By concentrating on adventure and you may range, we offer the greatest line of free ports offered \ufffd every and no down load or signal-right up requisite. Get the finest-ranked web sites at no cost ports play in the united kingdom, rated of the game diversity, user experience, and real money supply. ?? Gold & environmentally friendly colour schemes ?? Horseshoes, pots off silver, & fortunate clover icons ? Viking lore, raids, & activities ? Odin, Thor & Freya will searched A knowledgeable the brand new slots have plenty of bonus cycles and you will free revolves having an advisable feel.<\/p>\n

Out of an easy way to win so you’re able to winnings in order to games image. You’re prepared to get the fresh ratings, professional advice, and you may personal also offers right to your email. Really the only improvement is you explore virtual loans as an alternative off real cash, thus there’s no economic chance, with no actual winnings both.<\/p>\n","protected":false},"excerpt":{"rendered":"

We are able to go on, however the point try there is a lot to know! Alternatively, i establish just how some other game functions, evaluate technicians and RTP selections, and lead users so you’re able to authorized United kingdom casinos where legal 100 % free-enjoy access could be available.\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-55470","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/55470","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=55470"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/55470\/revisions"}],"predecessor-version":[{"id":55472,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/55470\/revisions\/55472"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=55470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=55470"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=55470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}