/* 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":95692,"date":"2026-05-24T01:54:47","date_gmt":"2026-05-24T01:54:47","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=95692"},"modified":"2026-05-24T01:54:49","modified_gmt":"2026-05-24T01:54:49","slug":"free-online-harbors-united-kingdom-enjoy-totally-free-enjoy-demonstrations-zero-obtain","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/free-online-harbors-united-kingdom-enjoy-totally-free-enjoy-demonstrations-zero-obtain\/","title":{"rendered":"Free online Harbors United kingdom Enjoy Totally free Enjoy Demonstrations Zero Obtain"},"content":{"rendered":"

Off one websites-browser you can buy accessibility record with on the internet gambling slots to the the online-webpages. Regarding other side, slot games with modern jackpots commonly offered to getting starred for only fun. Slotsoasis.com provides the higher possibility to speak about on the internet this new market away from Free Harbors! Multiple gambling enterprise harbors are offered by for every online casino, although not of many provide the players for the possibility to enjoy that have free (fake) currency. After that look for Withdraw and pick otherwise enter the amount you would like so you can cash-out.<\/p>\n

Local casino.master is a different source of information about casinos on the internet and you will casino games, perhaps not subject to one playing driver. A step we circulated into objective to make a worldwide self-difference program, that can ensure it is insecure players in order to stop the usage of the online gambling options. Essentially, when the video game away from a particular online game provider are played for totally free, we likely have them inside our database.<\/p>\n

Once the app team you will need to make book and you will remain\u2014away games, it’s inquire there are different types of bonus series. Definitely, along with increasing the thrill, they also bring alot more chances to victory. With the aid of added bonus cycles, you have made some slack out-of normal gameplay.<\/p>\n

Promote our Free Play solution including a go and try those individuals video game 100percent free observe the excitement very first-hands! Here, i safeguards this new special features given and the feet video game options. Is actually this new Impress online slots free-of-charge inside trial form today – it\u2019s 100 percent free! You can expect an enormous selection of gambling games, together with hundreds of 100 percent free position titles. An educated on the internet slot in order to win currency have to have a leading rtp, bonus features, interesting templates, and you will a good reputation.<\/p>\n

If you\u2019re browsing choice with a real income down the road, it\u2019s best to ready yourself meticulously. Normal WMS slot machines is also feature higher-quality image, of Pinata Casino<\/a> a lot extra possess, and the visibility of modern jackpots. A distinctive ability regarding Konami harbors are top quality image, easy-to-know configurations, and a fixed amount of lines. This site for which you will play 100 percent free slots will likely be able to give you an educated, latest and most popular video game off most useful-tier developers from the iGaming industry. If your\u2019re in the home or on the go, Local casino Pearls makes it simple to access totally free no-deposit harbors and revel in a seamless playing feel out of people unit. It\u2019s just the right room to check different styles, discuss incentive rounds, and you may twist just for the enjoyment from it.<\/p>\n

You will find a huge listing of layouts, game play styles, and you may extra cycles readily available around the more slots and you will local casino internet sites. The entire, related digital slots, dining table video game, and casino poker, out of cash the previous checklist away from about $148m place in March 2023. The key reason users head to your slots area is that this new game are very funny to relax and play, so we try and pick fascinating ports also. It means you will only get access to the very best of a knowledgeable. OnlineCasinos.com only people with reliable web based casinos and you may slot application providers in the business.<\/p>\n

You will find how many times a position will pay aside and its own bonus rounds bring about, preview what to anticipate whenever unique signs land, and look in the event the total theme, graphics and you can game play suit your design. You might speak about numerous totally free slots video game playing on the internet, that offer exciting added bonus series to enhance your gaming experience rather than any cost. This is one of the first titles so you can show superior high-definition three dimensional picture, therefore\u2019s along with an excellent poster kid for easy slot auto mechanics complete really well. Practical Enjoy is known for promoting high-top quality harbors having fascinating features and graphics. Preferred titles eg Cost Container Empire, Gonzo\u2019s Trip Megaways and you may Temple Tumble Megaways offer up so you’re able to multiple of several thousand paylines.<\/p>\n

Whether or not electronic poker isn’t as well-known in the casinos on the internet since video blackjack otherwise roulette, you can find some great choice on all of our necessary websites. Electronic poker is much like typical poker; simply it\u2019s played from the computers in lieu of almost every other real time users otherwise an alive agent. Web based poker would be a leading-risk, high-prize games, so it\u2019s not advised getting amateur bettors. He could be entirely possibility-situated video game, making them universally accessible and you can tons of fun. For many who\u2019re looking for the finest free online casino games, you\u2019ve come to the right place.<\/p>\n

Gonzo\u2019s Trip employs a keen explorer motif invest jungle ruins, having brick prevents and you will benefits symbols substitution classic slot illustrations or photos. That may become information on the application designer, reel structure, level of paylines, the newest theme and you will storyline, as well as the bonus keeps. For individuals who\u2019re also after the greatest jackpots, the quintessential engaging extra rounds, or simply need to like to play your chosen ports, i assist you in finding a knowledgeable web based casinos for your gaming requires. Check out our demanded most readily useful online casinos towards biggest harbors experience\u2014laden up with incentive enjoys, 100 percent free spins, and all the newest excitement of classic online casino games and you can progressive slot hosts. Select casinos on the internet offering a multitude of position games, and totally free spins added bonus series, a real income gambling selection, and plenty of local casino ports with original themes. An educated online casinos give hundreds of slot machines, away from classic harbors for the most recent on line slot video game full of bonus series and you can fun enjoys.<\/p>\n

That means for folks who initiate to tackle her or him the real deal money, you\u2019re also capable benefit from the best possible slots experience. Totally free harbors bring a simple and chance-100 percent free approach to test a casino game when you’re preserving much of the brand new adventure and enjoyable that comes off hitting the reels. They doesn\u2019t number if you\u2019ve never ever played online slots games just before or you exercise regularly, since the totally free ports are going to be useful in any event. All of our greatest-ranked 100 percent free ports gambling enterprises all the offer brilliant mobile options, which you yourself can accessibility toward iphone otherwise Android os through the gambling enterprise\u2019s cellular webpages or devoted application.<\/p>\n

Gamble this type of ports enjoyment and select one you like best. Nevertheless, extra enjoys mean the opportunity to earn large. This is very important, so if you’re to tackle for real currency, you really need to only favor registered gambling establishment internet sites.<\/p>\n

So, you might enjoy totally free harbors toward pills, smart phones, etc. He is simple to use and have now clear options. After you\u2019ve starred these harbors, after that you can choose which of them you\u2019d like to play having a real income.<\/p>\n

More over, some local casino workers promote a real income 100 percent free revolves to have analysis showcased titles. In addition to the demo ports to tackle enjoyment into the our very own platform, discover numerous roulettes, card and you will dice game, scrape notes, and many others. Once you end up being willing to grab the step two, see specific appealing bonuses across the greatest casinos on the internet! Training during the trial function is an excellent treatment for get count on and you will to improve your own means before you change to a real income. Volatility suggestions in the how often earnings are produced, and size of you are able to earnings.<\/p>\n

Let\u2019s say you\u2019re also selecting 100 percent free Buffalo slots no down load getting Android os. You really need to pick your limits, you could car-spin, you need to look for this new payouts. Online slots aren\u2019t only an incident from pressing twist, while\u2019lso are over.<\/p>\n","protected":false},"excerpt":{"rendered":"

Off one websites-browser you can buy accessibility record with on the internet gambling slots to the the online-webpages. Regarding other side, slot games with modern jackpots commonly offered to getting starred for only fun. Slotsoasis.com provides the higher possibility to speak about on the internet this new market away from\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-95692","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95692","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=95692"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95692\/revisions"}],"predecessor-version":[{"id":95693,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95692\/revisions\/95693"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=95692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=95692"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=95692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}