/* 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":35764,"date":"2026-05-18T17:46:27","date_gmt":"2026-05-18T17:46:27","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=35764"},"modified":"2026-05-18T17:46:28","modified_gmt":"2026-05-18T17:46:28","slug":"plus-the-great-even-offers-and-you-may-campaigns-do-not-stop-there-often","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/plus-the-great-even-offers-and-you-may-campaigns-do-not-stop-there-often\/","title":{"rendered":"Plus the great even offers and you may campaigns do not stop there often"},"content":{"rendered":"

If so, discover lots of authentic slots to enjoy, determined because of the flooring of numerous famous belongings-established venues. Very, no matter where and you can however play slots, you will find exactly what you are interested in after you carry out a keen membership within Slotomania! It’s not ever been simpler for you to earn honours, treats plus huge jackpots with your mobile slots! Large volatility will bring the potential for far more larger wins, but it also setting such gains tend to be rarer, plus don’t come-along normally.<\/p>\n

While you are shortly after a great showstopper, need Immortal Romance to have a chance<\/h2>\n

Betfair are among the greatest betting brands in britain so that as you would expect, they manage a slippery process which have timely loading moments, short money and you will an excellent selection of high quality games. It would be sweet to see more even offers extra for the offers webpage on the Pinball Honor servers the actual only real choice for people trying unlock specific 100 % free revolves. Betfair don’t have a big collection from position online game compared to specific position internet sites, but it’s easy to find the actual RTP each and every online game on their platform, permitting punters generate an even more informed decision.<\/p>\n

Through to joining Gambino Slots, you are welcomed with a fantastic signal-upwards provide loaded with Free Coins & 100 % free Revolves. You might rapidly install the fresh Gambino Slots cellular app thru Yahoo Enjoy or perhaps the Apple Shop, and you’ll be prepared to spin in minutes. Our very own 100 % free gambling enterprise application is perfect for both Ios & android pages, so it is extra easy to profit big on every equipment.<\/p>\n

Meanwhile, it 3 range game is really pleasing nevertheless whether or Sportsbet.io<\/a> not the first couple of reels have been in to produce nothing. The fresh new Controls off Chance position is not just a hit in the real cash ports gambling enterprises along side U . s ., it is extremely very prominent for the Canada plus the remainder of the country, for instance the United kingdom. To say the least, the fresh new Controls away from Chance games comes with a good amount of antique popular features of the fresh new strike Television program. We number the modern ones on every gambling establishment remark.<\/p>\n

On line slot game come in all kinds of groups and layouts \ufffd of Ancient Egypt to amber-environmentally friendly Irish favourites \ufffd and that is 50 % of the fun. Twist the brand new reels and see certain authentically-Virgin twists, with lots of slots has so you can result in and you will opportunities to win slots shared. That’s why our slot online game cover anything from larger-label exclusives to help you progressive jackpots, styled favourites plus. The victories pay within the cashNo hats towards winningsNo charge for the withdrawals Insofar because the Ip shall be related to your own country, we’re unfortunately obliged to help you prohibit you against playing with all of our line-up out of games.<\/p>\n

This type of ranks are up-to-date continuously, very consider returning to discover which online slots games are the newest best. When you find yourself bettors cannot constantly stick to the audience, here are the most popular position online game in the uk best now. That have slot internet sites holding tens of thousands of online game, it can be difficult to workout and therefore online slots games are worth your time and cash.<\/p>\n

There are more local casino bonuses offered at PricedUp, such as Golden Processor chip and money giveaways, meaning there are lots of things about punters to save coming straight back. I was such happy by amount of totally free spin now offers on PricedUp, starting with the newest welcome bonus away from ninety free spins whenever wagering ?thirty or maybe more for the any Practical Enjoy ports. PricedUp only revealed within the 2024 and while because the an online casino it have a number of harsh edges, obtained really florished because a slot web site, steadily growing its collection and you may range of offers. LottoGo deal online game regarding almost all huge-title designers, as well as Practical Enjoy and you will NetEnt, whenever i receive the range of jackpot ports open to feel thorough. To greatly help gamblers make that choice, The fresh new Independent provides developed helpful information comparing the best on the internet slot internet sites getting gamblers seeking actual-currency harbors during the 2026. This relates to standard ft games wins, otherwise of combinations achieved inside the extra enjoys for example Free Revolves, Re-spins, otherwise Cascading Reels.<\/p>\n

The brand new Independent’s for the-household playing professionals and i think anything from wagering criteria, date limits and you may qualified deposit tips. These also provides boast of being well worth hundreds of weight, however, up on after that research, they aren’t since the profitable while they first arrive. As a result of my personal research and testing, In my opinion I have collected an impartial, comprehensive, and you will better-counted number to greatly help online people choose the best web site to have all of them, depending on their individuals individual criteria.<\/p>\n

The best gambling establishment websites real cash Us are in reality depending cellular-very first<\/h2>\n

In my own recommendations, I thought perhaps the web site now offers antique twenty three-reel harbors, labeled headings, jackpot ports, popular Megaways video game, and you will the newest launches out of finest developers particularly NetEnt, Big style Gaming, and you may Play’n Wade. In order to make an entire-circular opinion, We invested sufficient time on each of harbors internet, as well as training on the internet recommendations from other consumers. Bettors will get over twenty three,000 of the best online slots games housed to the Ladbrokes app and my search unearthed that other bettors were large fans of their directory of every day totally free-to-enjoy game and you will typical slot also provides. For those bettors whom enjoy delivering a little extra off their position websites, Paddy Strength is a superb choices. There’s continue to work getting done in advance of LottoGo normally issue some of your own competent names, without people constant has the benefit of to have present users and an enthusiastic underwhelming software ideal away from my personal wishlist getting change. Away from 100 % free Spins proposes to special games?focused bonuses, there’s always new stuff to understand more about.<\/p>\n

The slots have fun with an arbitrary matter creator (RNG), and these algorithms be certain that overall equity on every twist. Virgin Bet has absolve to enjoy online game in which bettors is also victory 100 % free spins or other gambling enterprise bonuses, when you’re William Hill Vegas hand out totally free revolves for the a specified slot every week. Here are some the list of an informed PayPal gambling establishment sites in order to pick which providers we might strongly recommend. PayPal is the most better-understood age-purse globally that have 434 million effective accounts and a whole lot regarding position websites accept it as true because the a payment strategy. It can be worthy of seeking to one or two operators from our listing to determine what you to definitely caters to your thing out of play.<\/p>\n

Set facing a backdrop off Old Egyptian temples and you may secrets, it is a-game laden up with enjoyable signs, totally free revolves potential and you may a distinguished sound recording. Trigger the brand new Chamber off Spins and you you certainly will see quite a lot away from enjoyable. Easy to choose, impossible to forget about, Starburst is actually a timeless favorite.<\/p>\n","protected":false},"excerpt":{"rendered":"

If so, discover lots of authentic slots to enjoy, determined because of the flooring of numerous famous belongings-established venues. Very, no matter where and you can however play slots, you will find exactly what you are interested in after you carry out a keen membership within Slotomania! It’s not ever\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-35764","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35764","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=35764"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35764\/revisions"}],"predecessor-version":[{"id":35765,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/35764\/revisions\/35765"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=35764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=35764"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=35764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}